From cb8c83978177a8d3de769fca12d2aa3642eb0275 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 16 十一月 2021 12:42:32 +0800
Subject: [PATCH] 2021-11-16

---
 src/components/normalform/modalform/index.scss                                      |    7 
 src/templates/zshare/modalform/index.jsx                                            |   16 
 src/templates/formtabconfig/groupform/index.scss                                    |   13 
 src/menu/components/timeline/normal-timeline/index.jsx                              |  201 +++
 src/menu/components/chart/antv-bar/chartcompile/index.scss                          |    8 
 src/tabviews/zshare/mutilform/index.scss                                            |    7 
 src/mob/mobshell/index.jsx                                                          |    1 
 src/menu/components/chart/antv-scatter/chartcompile/index.jsx                       |   15 
 src/templates/zshare/verifycard/customscript/index.jsx                              |    7 
 src/views/menudesign/printmenuform/index.jsx                                        |    9 
 src/menu/components/chart/antv-scatter/index.jsx                                    |    5 
 src/menu/components/table/edit-table/columns/editColumn/index.scss                  |   10 
 src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.jsx   |    5 
 src/menu/components/table/edit-table/columns/editColumn/index.jsx                   |   11 
 src/tabviews/zshare/actionList/changeuserbutton/index.jsx                           |    2 
 src/menu/components/table/edit-table/columns/tableIn/index.scss                     |    3 
 src/assets/css/main.scss                                                            |   25 
 src/views/menudesign/menuform/index.scss                                            |    8 
 src/templates/formtabconfig/settingform/index.jsx                                   |    8 
 src/tabviews/tabmanage/mutilform/index.scss                                         |    3 
 src/menu/components/form/tab-form/index.jsx                                         |    2 
 src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx      |   49 
 src/pc/menushell/card.jsx                                                           |    3 
 src/templates/zshare/unattended/settingform/index.jsx                               |   11 
 src/menu/components/share/usercomponent/settingform/index.scss                      |    8 
 src/mob/searchconfig/searchdragelement/card.jsx                                     |   42 
 src/templates/modalconfig/dragelement/index.scss                                    |    6 
 src/menu/components/chart/antv-pie/index.jsx                                        |    5 
 src/menu/components/tabs/paste/index.scss                                           |    4 
 src/menu/components/card/prop-card/index.jsx                                        |    2 
 src/menu/components/tabs/tabcomponents/card.jsx                                     |    3 
 src/menu/components/tabs/paste/index.jsx                                            |    4 
 src/mob/searchconfig/groupform/index.scss                                           |    8 
 src/menu/components/card/cardsimplecomponent/node-wrap/index.jsx                    |   67 +
 src/assets/css/viewstyle.scss                                                       |   36 
 src/views/pcdesign/menuform/index.scss                                              |    8 
 src/menu/datasource/verifycard/index.scss                                           |    7 
 src/templates/comtableconfig/index.jsx                                              |    9 
 src/menu/components/chart/chart-custom/index.jsx                                    |    5 
 src/mob/searchconfig/pastecomponent/index.jsx                                       |    2 
 src/components/mutilform/index.scss                                                 |    3 
 src/tabviews/custom/components/table/edit-table/index.jsx                           |    1 
 src/mob/components/tabs/tabcomponents/index.jsx                                     |    1 
 src/menu/components/chart/antv-pie/chartcompile/index.scss                          |    8 
 src/views/mobdesign/menuform/index.scss                                             |    8 
 src/menu/components/card/cardsimplecomponent/node-wrap/menus/index.scss             |    0 
 src/templates/sharecomponent/actioncomponent/index.scss                             |    7 
 src/menu/components/chart/antv-dashboard/index.scss                                 |    2 
 src/templates/treepageconfig/index.scss                                             |    6 
 src/menu/components/chart/antv-dashboard/chartcompile/index.scss                    |    8 
 src/mob/mobshell/card.jsx                                                           |    3 
 src/templates/formtabconfig/index.scss                                              |   25 
 src/menu/components/card/cardcellcomponent/dragaction/mkProgress/index.jsx          |   36 
 src/views/appmanage/mutilform/index.jsx                                             |    4 
 src/templates/calendarconfig/calcomponent/calendarform/index.jsx                    |    9 
 src/pc/transfer/settingform/index.jsx                                               |    2 
 src/menu/components/share/searchcomponent/index.scss                                |    3 
 src/menu/sysinterface/settingform/baseform/index.jsx                                |    9 
 src/menu/urlfieldcomponent/index.scss                                               |    4 
 src/views/appmanage/mutilform/index.scss                                            |    4 
 src/views/pcdesign/index.jsx                                                        |    2 
 src/menu/datasource/verifycard/settingform/index.jsx                                |   23 
 src/templates/sharecomponent/tabscomponent/tabform/index.jsx                        |   17 
 src/mob/components/tabs/tabcomponents/card.jsx                                      |    3 
 src/templates/sharecomponent/searchcomponent/dragsearch/index.jsx                   |    1 
 src/menu/components/card/cardsimplecomponent/index.jsx                              |   28 
 src/templates/sharecomponent/chartcomponent/chartcompile/index.scss                 |    8 
 src/mob/searchconfig/source.jsx                                                     |   12 
 src/views/appmanage/transform/index.jsx                                             |    4 
 src/templates/sharecomponent/treesettingcomponent/settingform/index.scss            |    4 
 src/pc/createview/settingform/index.jsx                                             |    5 
 src/pc/modulesource/option.jsx                                                      |    2 
 src/templates/zshare/editTable/index.jsx                                            |    4 
 src/menu/components/group/paste/index.jsx                                           |    4 
 src/tabviews/zshare/normalTable/index.jsx                                           |   16 
 src/menu/components/form/formaction/actionform/index.scss                           |    8 
 src/templates/sharecomponent/actioncomponent/actionform/index.scss                  |    8 
 src/views/menudesign/homeform/index.jsx                                             |    9 
 src/templates/treepageconfig/index.jsx                                              |   21 
 src/views/menudesign/menuform/index.jsx                                             |    7 
 src/menu/datasource/index.jsx                                                       |    2 
 src/templates/sharecomponent/columncomponent/gridbtnform/index.scss                 |    8 
 src/menu/components/chart/antv-bar/index.scss                                       |    2 
 src/menu/popview/menuform/index.jsx                                                 |    9 
 src/menu/components/group/paste/index.scss                                          |    4 
 src/templates/formtabconfig/groupform/index.jsx                                     |    4 
 src/tabviews/subtabtable/index.jsx                                                  |    1 
 src/templates/sharecomponent/cardcomponent/carddetailform/index.jsx                 |   13 
 src/templates/formtabconfig/settingform/index.scss                                  |    7 
 src/templates/sharecomponent/chartgroupcomponent/chartform/index.scss               |   10 
 src/tabviews/zshare/actionList/normalbutton/index.jsx                               |   17 
 src/views/menudesign/index.jsx                                                      |    2 
 src/menu/modulesource/option.jsx                                                    |    2 
 src/tabviews/formtab/formgroup/index.scss                                           |    3 
 src/menu/replaceField/settingform/index.jsx                                         |    5 
 src/templates/calendarconfig/index.scss                                             |    4 
 src/menu/components/share/normalform/index.scss                                     |   11 
 src/views/appmanage/index.scss                                                      |    4 
 src/views/appmanage/transform/index.scss                                            |    4 
 src/templates/sharecomponent/columncomponent/markcolumn/markform/index.jsx          |   19 
 src/templates/sharecomponent/actioncomponent/actionform/index.jsx                   |   13 
 src/templates/sharecomponent/settingcalcomponent/verifycard/index.scss              |    7 
 src/templates/zshare/pasteform/index.jsx                                            |   10 
 src/pc/components/navbar/normal-navbar/linksetting/linkform/index.jsx               |    5 
 src/assets/mobimg/timeline.png                                                      |    0 
 src/menu/pastecontroller/index.jsx                                                  |   10 
 src/menu/components/card/data-card/index.jsx                                        |    3 
 src/mob/searchconfig/settingform/index.jsx                                          |    5 
 src/menu/components/chart/antv-dashboard/index.jsx                                  |    4 
 src/menu/components/share/clockcomponent/settingform/index.jsx                      |    7 
 src/views/appmanage/index.jsx                                                       |    5 
 src/templates/sharecomponent/treesettingcomponent/index.scss                        |    3 
 src/menu/components/card/cardcellcomponent/elementform/index.scss                   |    9 
 src/tabviews/home/defaulthome/index.jsx                                             |   13 
 src/templates/sharecomponent/actioncomponent/verifyexcelout/index.scss              |    3 
 src/templates/sharecomponent/searchcomponent/index.scss                             |    6 
 src/menu/datasource/verifycard/settingform/index.scss                               |    7 
 src/templates/sharecomponent/settingcomponent/index.jsx                             |    2 
 src/templates/sharecomponent/tabscomponent/index.scss                               |    6 
 src/templates/subtableconfig/source.jsx                                             |    3 
 src/components/header/index.jsx                                                     |    3 
 src/views/pcdesign/menuform/index.jsx                                               |    9 
 src/templates/formtabconfig/index.jsx                                               |   34 
 src/templates/zshare/verifycard/callbackcustomscript/index.jsx                      |    5 
 src/templates/sharecomponent/chartcomponent/chartcompile/index.jsx                  |   17 
 src/views/appmanage/scriptform/index.jsx                                            |    5 
 src/templates/sharecomponent/fieldscomponent/index.jsx                              |    1 
 src/templates/calendarconfig/tabcomponent/tabform/index.jsx                         |   62 
 src/mob/modalconfig/pastecomponent/index.jsx                                        |    2 
 src/menu/components/share/markcomponent/index.scss                                  |   10 
 src/templates/sharecomponent/settingcomponent/settingform/datasource/index.scss     |    7 
 src/menu/components/card/balcony/index.jsx                                          |    2 
 src/tabviews/zshare/actionList/tabbutton/index.jsx                                  |    2 
 src/views/menudesign/printmenuform/index.scss                                       |   10 
 src/components/normalform/modalform/index.jsx                                       |    5 
 src/menu/components/card/cardsimplecomponent/node-wrap/index.scss                   |   21 
 src/menu/components/chart/antv-pie/chartcompile/index.jsx                           |   15 
 src/templates/zshare/verifycard/index.jsx                                           |   63 
 src/templates/formtabconfig/actionform/index.jsx                                    |   30 
 src/tabviews/zshare/actionList/printbutton/index.jsx                                |    2 
 src/tabviews/custom/components/table/edit-table/normalTable/index.scss              |    1 
 src/menu/components/card/cardcellcomponent/formconfig.jsx                           |   67 +
 src/templates/comtableconfig/index.scss                                             |    4 
 src/templates/sharecomponent/actioncomponent/index.jsx                              |    5 
 src/menu/components/editor/braft-editor/index.jsx                                   |    2 
 src/menu/components/share/markcomponent/markform/index.jsx                          |    5 
 src/menu/components/card/cardsimplecomponent/node-wrap/menus/index.jsx              |   86 +
 src/menu/components/chart/antv-bar/chartcompile/index.jsx                           |   15 
 src/templates/sharecomponent/columncomponent/columnform/index.scss                  |   11 
 src/components/mkProgress/index.jsx                                                 |   37 
 src/menu/components/card/cardcellcomponent/index.scss                               |   19 
 src/menu/sysinterface/settingform/index.scss                                        |    4 
 src/templates/calendarconfig/calcomponent/calendarform/index.scss                   |    7 
 src/menu/components/card/cardcellcomponent/dragaction/mkProgress/index.scss         |    0 
 src/menu/components/card/cardcellcomponent/elementform/index.jsx                    |   50 
 src/menu/pastecontroller/index.scss                                                 |    4 
 src/menu/stylecontroller/index.scss                                                 |    3 
 src/templates/modalconfig/index.jsx                                                 |    2 
 src/templates/sharecomponent/searchcomponent/searchform/index.scss                  |    8 
 src/templates/sharecomponent/tablecomponent/index.jsx                               |    7 
 src/mob/modalconfig/index.jsx                                                       |    8 
 src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.scss |    5 
 src/mob/modalconfig/index.scss                                                      |   30 
 src/tabviews/commontable/index.jsx                                                  |    1 
 src/templates/calendarconfig/tabcomponent/tabform/index.scss                        |   16 
 src/templates/sharecomponent/settingcalcomponent/verifycard/settingform/index.jsx   |   11 
 src/menu/components/chart/chart-custom/index.scss                                   |    2 
 src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx                |    3 
 src/menu/components/share/usercomponent/settingform/index.jsx                       |   59 
 src/menu/components/share/normalheader/index.scss                                   |    1 
 src/tabviews/custom/components/card/cardcellList/index.jsx                          |   18 
 src/tabviews/custom/components/card/prop-card/index.jsx                             |   19 
 src/menu/components/carousel/data-card/options.jsx                                  |    2 
 src/tabviews/custom/components/table/normal-table/index.jsx                         |    1 
 src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.jsx  |   17 
 src/menu/components/chart/antv-pie/index.scss                                       |    2 
 src/menu/sysinterface/settingform/baseform/index.scss                               |    5 
 src/tabviews/custom/components/timeline/normal-timeline/index.jsx                   |  329 +++++
 src/tabviews/home/defaulthome/index.scss                                            |   37 
 src/templates/subtableconfig/index.jsx                                              |    7 
 src/components/mkIcon/index.jsx                                                     |    2 
 src/tabviews/custom/components/table/edit-table/normalTable/index.jsx               |   17 
 src/menu/components/group/groupcomponents/card.jsx                                  |    3 
 src/tabviews/zshare/mutilform/index.jsx                                             |    5 
 src/templates/zshare/modalform/index.scss                                           |    7 
 src/menu/components/share/actioncomponent/actionform/index.jsx                      |   13 
 src/tabviews/custom/index.jsx                                                       |   21 
 src/templates/formtabconfig/actionform/index.scss                                   |    8 
 src/menu/components/table/normal-table/columns/index.jsx                            |    8 
 src/views/appmanage/submutilform/index.jsx                                          |   17 
 src/menu/components/timeline/normal-timeline/options.jsx                            |  118 +
 src/templates/sharecomponent/columncomponent/colspanform/index.scss                 |   13 
 src/menu/components/chart/antv-dashboard/chartcompile/index.jsx                     |   15 
 src/menu/components/group/groupcomponents/index.jsx                                 |    1 
 src/mob/components/navbar/normal-navbar/menusetting/menuform/index.jsx              |    9 
 src/tabviews/zshare/actionList/normalbutton/index.scss                              |    3 
 src/menu/components/form/formaction/actionform/index.jsx                            |   13 
 src/menu/components/form/normal-form/index.jsx                                      |    2 
 src/pc/menushell/index.jsx                                                          |    1 
 src/templates/zshare/verifycard/billcodeform/index.jsx                              |    8 
 src/tabviews/zshare/actionList/exceloutbutton/index.jsx                             |    2 
 src/menu/components/card/cardcellcomponent/dragaction/card.jsx                      |   16 
 src/templates/menuconfig/menuform/index.scss                                        |    3 
 src/menu/components/chart/antv-bar/index.jsx                                        |    5 
 src/tabviews/subtable/index.jsx                                                     |    1 
 src/views/appmanage/submutilform/index.scss                                         |    7 
 src/menu/components/table/normal-table/columns/editColumn/index.scss                |   10 
 src/views/menudesign/homeform/index.scss                                            |   10 
 src/menu/components/table/edit-table/index.jsx                                      |    8 
 src/templates/sharecomponent/tabscomponent/index.jsx                                |   13 
 src/templates/zshare/verifycard/index.scss                                          |    7 
 src/components/simpleform/index.scss                                                |    3 
 src/menu/components/share/actioncomponent/index.scss                                |    7 
 src/menu/components/chart/antv-scatter/index.scss                                   |    2 
 src/menu/components/share/normalheader/index.jsx                                    |    9 
 src/templates/modalconfig/settingform/index.jsx                                     |   16 
 src/templates/comtableconfig/source.jsx                                             |    3 
 src/pc/components/navbar/normal-navbar/menusetting/menuform/index.jsx               |    7 
 src/menu/urlfieldcomponent/index.jsx                                                |    9 
 src/tabviews/zshare/cardcomponent/index.scss                                        |    8 
 src/templates/subtableconfig/index.scss                                             |   10 
 src/menu/components/table/edit-table/columns/tableIn/customscript/index.jsx         |    5 
 src/templates/menuconfig/editfirstmenu/menuform/index.scss                          |    3 
 src/templates/zshare/createinterface/mutilform/index.jsx                            |   12 
 src/templates/zshare/createinterface/mutilform/index.scss                           |    6 
 src/menu/components/card/cardsimplecomponent/node-wrap/menus/columnform/index.jsx   |   94 +
 src/menu/components/card/table-card/index.jsx                                       |    3 
 src/templates/modalconfig/settingform/index.scss                                    |   18 
 src/templates/sharecomponent/cardcomponent/carddetailform/index.scss                |   16 
 src/utils/utils-custom.js                                                           |    6 
 src/mob/modulesource/option.jsx                                                     |    2 
 src/views/appcheck/index.scss                                                       |    4 
 src/tabviews/zshare/actionList/excelInbutton/index.jsx                              |    2 
 src/views/printTemplate/mutilform/index.scss                                        |    7 
 src/menu/components/share/searchcomponent/dragsearch/card.jsx                       |    6 
 src/menu/components/tabs/tabcomponents/index.jsx                                    |    1 
 src/menu/components/table/normal-table/columns/editColumn/index.jsx                 |   11 
 src/menu/menushell/card.jsx                                                         |   13 
 src/mob/searchconfig/settingform/index.scss                                         |    8 
 src/templates/sharecomponent/tabscomponent/tabform/index.scss                       |   16 
 src/menu/components/share/markcomponent/markform/index.scss                         |    5 
 src/templates/calendarconfig/source.jsx                                             |    3 
 src/menu/components/chart/antv-scatter/chartcompile/index.scss                      |    8 
 src/templates/modalconfig/dragelement/card.jsx                                      |   13 
 src/views/mobdesign/index.jsx                                                       |    2 
 src/templates/sharecomponent/actioncomponent/verifyexcelin/index.scss               |    3 
 src/views/printTemplate/mutilform/index.jsx                                         |    9 
 src/menu/components/share/actioncomponent/actionform/index.scss                     |    8 
 src/menu/components/share/actioncomponent/formconfig.jsx                            |    2 
 src/templates/sharecomponent/columncomponent/index.scss                             |    6 
 README.md                                                                           |    4 
 src/menu/versions/index.jsx                                                         |    5 
 src/templates/sharecomponent/tablecomponent/index.scss                              |    4 
 src/tabviews/custom/components/carousel/prop-card/index.jsx                         |   19 
 src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx                  |    4 
 src/templates/calendarconfig/tabcomponent/index.jsx                                 |   11 
 src/menu/components/table/normal-table/index.jsx                                    |   28 
 src/templates/sharecomponent/searchcomponent/searchform/index.jsx                   |    8 
 src/menu/components/card/cardsimplecomponent/node-wrap/menus/columnform/index.scss  |    0 
 src/menu/components/timeline/normal-timeline/index.scss                             |   80 +
 src/views/appcheck/index.jsx                                                        |    5 
 src/views/mobdesign/menuform/index.jsx                                              |   13 
 src/menu/stylecombcontroller/index.scss                                             |    3 
 src/pc/transfer/settingform/index.scss                                              |   11 
 src/mob/searchconfig/index.scss                                                     |    1 
 src/templates/calendarconfig/tabcomponent/index.scss                                |    2 
 src/templates/sharecomponent/searchcomponent/index.jsx                              |    5 
 src/templates/formtabconfig/dragelement/index.jsx                                   |    1 
 src/templates/sharecomponent/columncomponent/index.jsx                              |    7 
 src/templates/sharecomponent/columncomponent/colspanform/index.jsx                  |   10 
 src/tabviews/custom/components/share/normalTable/index.jsx                          |   17 
 src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx                |   13 
 src/utils/utils.js                                                                  |    6 
 src/menu/popview/menuform/index.scss                                                |   10 
 src/index.js                                                                        |    3 
 src/tabviews/custom/components/timeline/normal-timeline/index.scss                  |  103 +
 src/templates/zshare/createfunc/index.jsx                                           |    2 
 src/components/mkProgress/index.scss                                                |    0 
 src/templates/zshare/formconfig.jsx                                                 |   54 
 src/mob/components/formdragelement/card.jsx                                         |    5 
 src/templates/sharecomponent/settingcomponent/settingform/index.scss                |    4 
 src/menu/modalconfig/index.scss                                                     |    1 
 src/menu/modalconfig/index.jsx                                                      |    2 
 src/tabviews/custom/components/card/balcony/index.jsx                               |   19 
 src/tabviews/custom/components/card/cardcellList/index.scss                         |    3 
 src/menu/components/share/normalform/index.jsx                                      |   17 
 src/menu/menushell/index.jsx                                                        |    1 
 src/templates/sharecomponent/columncomponent/markcolumn/index.scss                  |    8 
 src/utils/option.js                                                                 |    1 
 src/templates/sharecomponent/settingcalcomponent/verifycard/settingform/index.scss  |    4 
 src/templates/sharecomponent/columncomponent/columnform/index.jsx                   |   11 
 291 files changed, 2,228 insertions(+), 1,450 deletions(-)

diff --git a/README.md b/README.md
index 9d9614c..68eb8cd 100644
--- a/README.md
+++ b/README.md
@@ -66,3 +66,7 @@
 ### `npm run build` fails to minify
 
 This section has moved here: https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify
+
+### rewrite
+
+antd: Progress(lib & es)
diff --git a/src/assets/css/main.scss b/src/assets/css/main.scss
index 68f19ed..668699c 100644
--- a/src/assets/css/main.scss
+++ b/src/assets/css/main.scss
@@ -349,7 +349,7 @@
     }
     .mk-popover-control {
       white-space: nowrap;
-      i {
+      i, span.anticon {
         padding: 5px 8px;
         cursor: pointer;
         font-size: 16px;
@@ -412,6 +412,29 @@
   transition: margin-left 0s cubic-bezier(0.645, 0.045, 0.355, 1)!important;
 }
 
+.ant-progress-status-success .ant-progress-text {
+  color: rgba(0, 0, 0, 0.45)!important;
+}
+.ant-progress-circle.ant-progress-status-success .ant-progress-text {
+  color: rgba(0, 0, 0, 0.65)!important;
+}
+.ant-progress-line.square {
+  .ant-progress-inner {
+    border-radius: 0;
+    .ant-progress-bg {
+      border-radius: 0;
+    }
+  }
+}
+
+.mk-form-tip {
+  color: #c49f47;
+  margin-right: 3px;
+}
+
+div.ant-input-number {
+  width: 100%;
+}
 // .ant-table.ant-table-mini .ant-table-thead > tr > th {
 //   padding: 8px 4px;
 // }
diff --git a/src/assets/css/viewstyle.scss b/src/assets/css/viewstyle.scss
index f196f14..1ea51fd 100644
--- a/src/assets/css/viewstyle.scss
+++ b/src/assets/css/viewstyle.scss
@@ -353,6 +353,42 @@
   // .ant-calendar-picker:hover .ant-calendar-picker-input:not(.ant-input-disabled) {
   //   border-color: $color5;
   // }
+  // 鍒嗛〉
+  // .ant-pagination {
+  //   .ant-pagination-item-active {
+  //     border-color: $color6;
+  //     a {
+  //       color: $color6;
+  //     }
+  //   }
+  //   .ant-pagination-item:hover a {
+  //     color: $color6;
+  //   }
+  //   .ant-pagination-prev:hover .ant-pagination-item-link {
+  //     color: $color6;
+  //   }
+  //   .ant-pagination-next:hover .ant-pagination-item-link {
+  //     color: $color6;
+  //   }
+  // }
+  // // 琛ㄦ牸鎺掑簭鍥炬爣
+  // .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-up.on, .ant-table-thead > tr > th .ant-table-column-sorter .ant-table-column-sorter-inner .ant-table-column-sorter-down.on {
+  //   color: $color6;
+  // }
+  // .mk-water-mark {
+  //   color: $color4;
+  // }
+  // .mk-form-split-line {
+  //   color: $color6;
+  // }
+  .system-color {
+    color: $color6;
+  }
+  .ant-timeline.system {
+    .ant-timeline-item-tail {
+      border-color: $color2;;
+    }
+  }
 }
 
 body.hidden-split-line #root { // 鍘婚櫎鐧诲綍椤靛垎鍓茬嚎
diff --git a/src/assets/mobimg/timeline.png b/src/assets/mobimg/timeline.png
new file mode 100644
index 0000000..12e2aa4
--- /dev/null
+++ b/src/assets/mobimg/timeline.png
Binary files differ
diff --git a/src/components/header/index.jsx b/src/components/header/index.jsx
index 281b65e..7ab5709 100644
--- a/src/components/header/index.jsx
+++ b/src/components/header/index.jsx
@@ -864,8 +864,7 @@
 const mapStateToProps = (state) => {
   return {
     collapse: state.collapse,
-    mainMenu: state.mainMenu,
-    permAction: state.permAction,
+    mainMenu: state.mainMenu
   }
 }
 
diff --git a/src/components/mkIcon/index.jsx b/src/components/mkIcon/index.jsx
index 583e170..5a3627c 100644
--- a/src/components/mkIcon/index.jsx
+++ b/src/components/mkIcon/index.jsx
@@ -43,7 +43,7 @@
       <div className="mk-icon-box">
         {selectIcon ? <Icon type={selectIcon}/> : <Icon style={{opacity: 0}} type="plus"/>}
         <Icon className="trigger" onClick={() => this.setState({visible: true})} type="swap"/>
-        {allowClear ? <Icon className="close" onClick={() => this.checkIcon('')} type="close"/> : null}
+        {allowClear && selectIcon ? <Icon className="close" onClick={() => this.checkIcon('')} type="close"/> : null}
         <Modal
           wrapClassName="popview-modal mk-icon-wrap"
           title={'鍥炬爣閫夋嫨'}
diff --git a/src/components/mkProgress/index.jsx b/src/components/mkProgress/index.jsx
new file mode 100644
index 0000000..6c68405
--- /dev/null
+++ b/src/components/mkProgress/index.jsx
@@ -0,0 +1,37 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { Progress } from 'antd'
+
+// import './index.scss'
+
+class MkProgress extends Component {
+  static propTpyes = {
+    config: PropTypes.object,
+    color: PropTypes.any,
+    value: PropTypes.any,
+  }
+
+  render() {
+    const { value, config, color } = this.props
+
+    let type = config.showType || 'line'
+
+    if (type === 'line') {
+      return <Progress percent={value} type="line" className={config.strokeLinecap || ''} strokeWidth={config.strokeWidth || 8} strokeColor={color} showInfo={config.showInfo === 'true'}/>
+    }
+
+    let width = config.outlineWidth || 0
+
+    if (this.progress && (!width || width > this.progress.clientWidth)) {
+      width = this.progress.clientWidth
+    }
+
+    return (
+      <div ref={(ref) => this.progress = ref } style={{textAlign: config.textAlign || 'left'}}>
+        <Progress percent={value} width={width} strokeLinecap={config.strokeLinecap || 'round'} type={type} strokeWidth={config.strokeWidth || 8} strokeColor={color} showInfo={config.showInfo === 'true'}/>
+      </div>
+    )
+  }
+}
+
+export default MkProgress
\ No newline at end of file
diff --git a/src/components/mkProgress/index.scss b/src/components/mkProgress/index.scss
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/components/mkProgress/index.scss
diff --git a/src/components/mutilform/index.scss b/src/components/mutilform/index.scss
index 838b936..9914d8e 100644
--- a/src/components/mutilform/index.scss
+++ b/src/components/mutilform/index.scss
@@ -15,6 +15,3 @@
 .ant-advanced-search-form {
   position: relative;
 }
-.ant-advanced-search-form .ant-input-number {
-  width: 100%;
-}
\ No newline at end of file
diff --git a/src/components/normalform/modalform/index.jsx b/src/components/normalform/modalform/index.jsx
index b8d4c89..ebf07cb 100644
--- a/src/components/normalform/modalform/index.jsx
+++ b/src/components/normalform/modalform/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
-import { Form, Row, Col, Tooltip, Icon, Cascader, Input } from 'antd'
+import { Form, Row, Col, Tooltip, Cascader, Input } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import asyncComponent from '@/utils/asyncComponent'
 import MKEInput from './mkInput'
@@ -215,7 +216,7 @@
       if (item.hidden || item.forbid) return
 
       let content = null
-      let label = item.tooltip ? <Tooltip placement="topLeft" title={item.tooltip}><Icon type="question-circle" />{item.label}</Tooltip> : item.label
+      let label = item.tooltip ? <Tooltip placement="topLeft" title={item.tooltip}><QuestionCircleOutlined className="mk-form-tip" />{item.label}</Tooltip> : item.label
     
       if (item.type === 'text') {
         content = (<MKEInput config={item} onChange={(val, defer) => !defer && this.recordChange({[item.field]: val})} onSubmit={this.props.inputSubmit} />)
diff --git a/src/components/normalform/modalform/index.scss b/src/components/normalform/modalform/index.scss
index 594563d..2d38c93 100644
--- a/src/components/normalform/modalform/index.scss
+++ b/src/components/normalform/modalform/index.scss
@@ -8,10 +8,6 @@
     padding-left: 1.2%!important;
     padding-right: 1.2%!important;
   }
-  .ant-form-item-label .anticon-question-circle {
-    color: #c49f47;
-    margin-right: 3px;
-  }
   .ant-checkbox-group {
     line-height: unset;
     .ant-checkbox-wrapper {
@@ -36,9 +32,6 @@
     width: 33.3%;
   }
 
-  .ant-input-number {
-    width: 100%;
-  }
   .ant-form-explain {
     overflow:hidden;
     text-overflow:ellipsis;
diff --git a/src/components/simpleform/index.scss b/src/components/simpleform/index.scss
index 838b936..9914d8e 100644
--- a/src/components/simpleform/index.scss
+++ b/src/components/simpleform/index.scss
@@ -15,6 +15,3 @@
 .ant-advanced-search-form {
   position: relative;
 }
-.ant-advanced-search-form .ant-input-number {
-  width: 100%;
-}
\ No newline at end of file
diff --git a/src/index.js b/src/index.js
index ea50c5d..b75a85e 100644
--- a/src/index.js
+++ b/src/index.js
@@ -100,6 +100,9 @@
       if (config.probation && /^20\d{2}-\d{2}-\d{2}$/.test(config.probation) && new Date(config.probation).getTime() > new Date().getTime()) {
         GLOB.probation = true
       }
+    } else if (options.sysType === 'local') {
+      GLOB.probation = true
+      GLOB.systemType = ''
     } else {
       GLOB.systemType = ''
     }
diff --git a/src/menu/components/card/balcony/index.jsx b/src/menu/components/card/balcony/index.jsx
index fc5ae1b..bd38d08 100644
--- a/src/menu/components/card/balcony/index.jsx
+++ b/src/menu/components/card/balcony/index.jsx
@@ -212,7 +212,7 @@
           <div className="mk-popover-control">
             <Icon className="plus" title="娣诲姞鍏冪礌" onClick={this.addElement} type="plus" />
             <Icon className="plus" title="娣诲姞鎸夐挳" onClick={this.addButton} type="plus-square" />
-            <NormalForm title="鍗$墖璁剧疆" width={800} update={this.updateWrap} getForms={this.getWrapForms}>
+            <NormalForm title="娴姩鍗¤缃�" width={800} update={this.updateWrap} getForms={this.getWrapForms}>
               <Icon type="edit" style={{color: '#1890ff'}} title="缂栬緫"/>
             </NormalForm>
             <CopyComponent type="balcony" card={card}/>
diff --git a/src/menu/components/card/cardcellcomponent/dragaction/card.jsx b/src/menu/components/card/cardcellcomponent/dragaction/card.jsx
index ce5e4d4..a4147f1 100644
--- a/src/menu/components/card/cardcellcomponent/dragaction/card.jsx
+++ b/src/menu/components/card/cardcellcomponent/dragaction/card.jsx
@@ -15,6 +15,7 @@
 import './index.scss'
 
 const BarCode = asyncComponent(() => import('@/components/barcode'))
+const MkProgress = asyncComponent(() => import('./mkProgress'))
 const QrCode = asyncComponent(() => import('@/components/qrcode'))
 const Video = asyncComponent(() => import('@/components/video'))
 const MarkColumn = asyncIconComponent(() => import('@/menu/components/share/markcomponent'))
@@ -77,13 +78,14 @@
       return (<Icon type={card.icon}/>)
     } else if (card.eleType === 'slider') {
       let val = card.value ? (card.value / card.maxValue) * 100 : 30
-      return (
-        <div className="ant-mk-slider">
-          <div className="ant-mk-slider-rail"></div>
-          <div className="ant-mk-slider-track" style={{width: `${val}%`, backgroundColor: card.color}}></div>
-          <div className="ant-mk-slider-handle" style={{left: `${val}%`, borderColor: card.color}}></div>
-        </div>
-      )
+      return <MkProgress value={val} config={card}/>
+      // return (
+      //   <div className="ant-mk-slider">
+      //     <div className="ant-mk-slider-rail"></div>
+      //     <div className="ant-mk-slider-track" style={{width: `${val}%`, backgroundColor: card.color}}></div>
+      //     <div className="ant-mk-slider-handle" style={{left: `${val}%`, borderColor: card.color}}></div>
+      //   </div>
+      // )
     } else if (card.eleType === 'picture') {
       let _imagestyle = {}
 
diff --git a/src/menu/components/card/cardcellcomponent/dragaction/mkProgress/index.jsx b/src/menu/components/card/cardcellcomponent/dragaction/mkProgress/index.jsx
new file mode 100644
index 0000000..bfb3d89
--- /dev/null
+++ b/src/menu/components/card/cardcellcomponent/dragaction/mkProgress/index.jsx
@@ -0,0 +1,36 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { Progress } from 'antd'
+
+// import './index.scss'
+
+class MkProgress extends Component {
+  static propTpyes = {
+    config: PropTypes.object,
+    value: PropTypes.any
+  }
+
+  render() {
+    const { value, config } = this.props
+
+    let type = config.showType || 'line'
+
+    if (type === 'line') {
+      return <Progress percent={value} type="line" className={config.strokeLinecap || ''} strokeWidth={config.strokeWidth || 8} strokeColor={config.color} showInfo={config.showInfo === 'true'}/>
+    }
+
+    let width = config.outlineWidth || 0
+
+    if (this.progress && (!width || width > this.progress.clientWidth)) {
+      width = this.progress.clientWidth
+    }
+
+    return (
+      <div ref={(ref) => this.progress = ref } style={{textAlign: config.textAlign || 'left'}}>
+        <Progress percent={value} width={width} type={type} strokeLinecap={config.strokeLinecap || 'round'} strokeWidth={config.strokeWidth || 8} strokeColor={config.color} showInfo={config.showInfo === 'true'}/>
+      </div>
+    )
+  }
+}
+
+export default MkProgress
\ No newline at end of file
diff --git a/src/menu/components/card/cardcellcomponent/dragaction/mkProgress/index.scss b/src/menu/components/card/cardcellcomponent/dragaction/mkProgress/index.scss
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/menu/components/card/cardcellcomponent/dragaction/mkProgress/index.scss
diff --git a/src/menu/components/card/cardcellcomponent/elementform/index.jsx b/src/menu/components/card/cardcellcomponent/elementform/index.jsx
index 368a115..e44398f 100644
--- a/src/menu/components/card/cardcellcomponent/elementform/index.jsx
+++ b/src/menu/components/card/cardcellcomponent/elementform/index.jsx
@@ -2,6 +2,7 @@
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
 import { Form, Row, Col, Input, Select, Icon, Radio, Tooltip, InputNumber } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import { formRule } from '@/utils/option.js'
 import asyncComponent from '@/utils/asyncComponent'
@@ -19,7 +20,7 @@
   picture: ['eleType', 'datatype', 'width', 'lenWidRadio', 'maxWidth', 'link', 'noValue'],
   video: ['eleType', 'datatype', 'width', 'aspectRatio', 'autoPlay', 'loop', 'noValue'],
   icon: ['eleType', 'icon', 'datatype', 'width'],
-  slider: ['eleType', 'datatype', 'width', 'color', 'maxValue'],
+  slider: ['eleType', 'datatype', 'width', 'color', 'maxValue', 'showInfo', 'showType', 'strokeWidth', 'strokeLinecap'],
   splitline: ['eleType', 'color', 'width', 'borderWidth'],
   barcode: ['eleType', 'datatype', 'width', 'barHeight', 'displayValue', 'interval', 'noValue'],
   qrcode: ['eleType', 'datatype', 'width', 'qrWidth', 'color', 'url', 'noValue'],
@@ -40,17 +41,19 @@
     formlist: null,  // 琛ㄥ崟淇℃伅
     eleType: '',
     datatype: '',
+    showType: '',
     link: ''
   }
 
   UNSAFE_componentWillMount () {
     const { card, config } = this.props
-    let _options = this.getOptions(card.eleType, card.datatype, card.link)
+    let _options = this.getOptions(card.eleType, card.datatype, card.link, (card.showType || 'line'))
     
     this.setState({
       link: card.link,
       eleType: card.eleType,
       datatype: card.datatype,
+      showType: card.showType || 'line',
       formlist: this.props.formlist.map(item => {
         item.hidden = !_options.includes(item.key)
 
@@ -90,7 +93,7 @@
     })
   }
 
-  getOptions = (eleType, datatype, link) => {
+  getOptions = (eleType, datatype, link, showType) => {
     let _options = fromJS(cardTypeOptions[eleType]).toJS() // 閫夐」鍒楄〃
     
     if (['text', 'number', 'picture', 'link', 'slider', 'barcode', 'qrcode', 'video'].includes(eleType)) {
@@ -112,6 +115,8 @@
         }
       } else if (eleType === 'picture' && !link) {
         _options.push('scale')
+      } else if (eleType === 'slider' && showType !== 'line') {
+        _options.push('outlineWidth', 'textAlign')
       }
     } else if (eleType === 'icon') {
       if (datatype === 'dynamic') {
@@ -131,11 +136,11 @@
    * 3銆佸垏鎹㈡爣绛剧被鍨嬶紝閲嶇疆鍙�夋爣绛�
    */
   selectChange = (key, value, option) => {
-    const { config } = this.props
-    const { datatype, eleType } = this.state
+    const { card, config } = this.props
+    const { datatype, eleType, showType } = this.state
 
     if (key === 'eleType') {
-      let _options = this.getOptions(value, datatype, '')
+      let _options = this.getOptions(value, datatype, '', showType)
       
       let _formlist = this.state.formlist.map(item => {
         item.hidden = !_options.includes(item.key)
@@ -179,6 +184,7 @@
       this.setState({
         link: '',
         eleType: value,
+        showType: card.showType || 'line',
         formlist: _formlist
       }, () => {
         if (value === 'slider') {
@@ -197,7 +203,7 @@
         this.props.form.setFieldsValue({value: option.props.title})
       }
     } else if (key === 'link') {
-      let _options = this.getOptions(eleType, this.state.datatype, value)
+      let _options = this.getOptions(eleType, this.state.datatype, value, showType)
       this.setState({
         link: value,
         formlist: this.state.formlist.map(item => {
@@ -212,11 +218,11 @@
   }
 
   onChange = (e, key) => {
-    const { eleType } = this.state
+    const { eleType, datatype, link, showType } = this.state
     let value = e.target.value
 
     if (key === 'datatype') {
-      let _options = this.getOptions(eleType, value, this.state.link)
+      let _options = this.getOptions(eleType, value, link, showType)
 
       this.setState({
         datatype: value,
@@ -227,7 +233,7 @@
         })
       })
     } else if (key === 'link') {
-      let _options = this.getOptions(eleType, this.state.datatype, value)
+      let _options = this.getOptions(eleType, datatype, value, showType)
       this.setState({
         link: value,
         formlist: this.state.formlist.map(item => {
@@ -236,6 +242,18 @@
             item.type = value === 'dynamic' ? 'select' : 'textarea'
           }
           return item
+        })
+      })
+    } else if (key === 'showType') {
+      this.setState({
+        showType: value
+      }, () => {
+        let _options = this.getOptions(eleType, datatype, link, value)
+        this.setState({
+          formlist: this.state.formlist.map(item => {
+            item.hidden = !_options.includes(item.key)
+            return item
+          })
         })
       })
     }
@@ -261,7 +279,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -286,7 +304,7 @@
           <Col span={24} className="textarea" key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -311,7 +329,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -330,7 +348,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -362,7 +380,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -383,7 +401,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
diff --git a/src/menu/components/card/cardcellcomponent/elementform/index.scss b/src/menu/components/card/cardcellcomponent/elementform/index.scss
index f969efa..2fc1e1b 100644
--- a/src/menu/components/card/cardcellcomponent/elementform/index.scss
+++ b/src/menu/components/card/cardcellcomponent/elementform/index.scss
@@ -1,15 +1,6 @@
 .menu-card-detail-form {
   min-height: 190px;
 
-  .ant-input-number {
-    width: 100%;
-  }
-  .ant-form-item-label {
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 5px;
-    }
-  }
   >.ant-row {
     >.ant-col {
       height: 65px;
diff --git a/src/menu/components/card/cardcellcomponent/formconfig.jsx b/src/menu/components/card/cardcellcomponent/formconfig.jsx
index 4c48124..4d4da5e 100644
--- a/src/menu/components/card/cardcellcomponent/formconfig.jsx
+++ b/src/menu/components/card/cardcellcomponent/formconfig.jsx
@@ -183,6 +183,73 @@
       required: true
     },
     {
+      type: 'radio',
+      key: 'showInfo',
+      label: '杩涘害鍊�',
+      initVal: card.showInfo || 'false',
+      required: false,
+      options: [
+        { value: 'true', text: '鏄剧ず' },
+        { value: 'false', text: '闅愯棌' }
+      ]
+    },
+    {
+      type: 'radio',
+      key: 'showType',
+      label: '灞曠幇褰㈠紡',
+      initVal: card.showType || 'line',
+      required: false,
+      options: [
+        { value: 'line', text: '杩涘害鏉�' },
+        { value: 'circle', text: '杩涘害鍦�' },
+        { value: 'dashboard', text: '浠〃鐩�' },
+      ]
+    },
+    {
+      type: 'radio',
+      key: 'strokeLinecap',
+      label: '绾垮瀷',
+      initVal: card.strokeLinecap || 'round',
+      required: false,
+      options: [
+        { value: 'round', text: '鍦嗚' },
+        { value: 'square', text: '鐩磋' },
+      ]
+    },
+    {
+      type: 'radio',
+      key: 'textAlign',
+      label: '瀵归綈鏂瑰紡',
+      initVal: card.textAlign || 'left',
+      required: false,
+      options: [
+        { value: 'left', text: '宸�' },
+        { value: 'center', text: '涓�' },
+        { value: 'right', text: '鍙�' },
+      ]
+    },
+    {
+      type: 'number',
+      key: 'strokeWidth',
+      min: 1,
+      max: 200,
+      precision: 0,
+      label: '绾挎潯瀹藉害',
+      initVal: card.strokeWidth || 8,
+      required: true,
+    },
+    {
+      type: 'number',
+      key: 'outlineWidth',
+      min: 10,
+      max: 2000,
+      precision: 0,
+      label: '澶栧舰瀹藉害',
+      initVal: card.outlineWidth || '',
+      tooltip: '澶栧舰瀹藉害涓虹┖鏃讹紝瀹藉害涓哄厓绱犵殑瀹藉害銆傛敞锛氳秴鍑烘椂鎸夊厓绱犲搴﹁绠椼��',
+      required: false
+    },
+    {
       type: 'number',
       key: 'maxValue',
       min: 1,
diff --git a/src/menu/components/card/cardcellcomponent/index.scss b/src/menu/components/card/cardcellcomponent/index.scss
index 3b870c3..855eaae 100644
--- a/src/menu/components/card/cardcellcomponent/index.scss
+++ b/src/menu/components/card/cardcellcomponent/index.scss
@@ -1,21 +1,5 @@
 .model-menu-card-cell-list {
   position: relative;
-  .ant-form-item-label {
-    .anticon-question-circle {
-      color: #c49f47;
-      position: absolute;
-      left: 5px;
-      top: 5px;
-    }
-  }
-
-  .card-detail-row > .anticon-plus {
-    color: #26C281;
-    font-size: 16px;
-    padding: 5px;
-    cursor: pointer;
-  }
-
   .ant-btn {
     padding: 0;
   }
@@ -39,8 +23,5 @@
   }
   .card-cell:hover, .card-button-cell:hover {
     box-shadow: 0px 0px 1px #1890ff;
-  }
-  .ant-slider {
-    margin: 0px;
   }
 }
diff --git a/src/menu/components/card/cardsimplecomponent/index.jsx b/src/menu/components/card/cardsimplecomponent/index.jsx
index 06ae80b..f77a254 100644
--- a/src/menu/components/card/cardsimplecomponent/index.jsx
+++ b/src/menu/components/card/cardsimplecomponent/index.jsx
@@ -9,9 +9,10 @@
 import { getTableSetting, getCarouselSetting } from './options'
 import Utils from '@/utils/utils.js'
 import MKEmitter from '@/utils/events.js'
-import './index.scss'
+// import './index.scss'
 
 const NormalForm = asyncIconComponent(() => import('@/components/normalform'))
+const NodesWrap = asyncComponent(() => import('./node-wrap'))
 const CardCellComponent = asyncComponent(() => import('../cardcellcomponent'))
 const CopyComponent = asyncIconComponent(() => import('@/menu/components/share/copycomponent'))
 
@@ -155,6 +156,16 @@
     }
   }
 
+  updateNodes = (res) => {
+    const { card } = this.state
+
+    this.setState({
+      card: {...card, nodes: res}
+    })
+
+    this.props.updateElement({...card, nodes: res})
+  }
+
   updateSetting = (res) => {
     const { card, appType } = this.state
 
@@ -193,6 +204,11 @@
     if (cards.type === 'carousel') {
       _style.height = cards.style.height
     }
+
+    let control = true
+    if (cards.subtype === 'datacard' || cards.type === 'timeline') {
+      control = false
+    }
     
     _style = resetStyle(_style)
 
@@ -205,12 +221,12 @@
               <div className="mk-popover-control">
                 <Icon className="plus" title="娣诲姞鍏冪礌" onClick={this.addElement} type="plus" />
                 <Icon className="plus" title="娣诲姞鎸夐挳" onClick={this.addButton} type="plus-square" />
-                <NormalForm title="鍗$墖璁剧疆" width={800} update={this.updateSetting} getForms={this.getSettingForms}>
+                {cards.type !== 'timeline' ? <NormalForm title="鍗$墖璁剧疆" width={800} update={this.updateSetting} getForms={this.getSettingForms}>
                   <Icon type="edit" style={{color: '#1890ff'}} title="缂栬緫"/>
-                </NormalForm>
-                <CopyComponent type="cardcell" card={card}/>
+                </NormalForm> : <NodesWrap card={card} updateMenus={this.updateNodes}/>}
+                {cards.type !== 'timeline' ? <CopyComponent type="cardcell" card={card}/> : null}
                 <Icon className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} type="font-colors" />
-                {cards.subtype !== 'datacard' ? <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
+                {control ? <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
                   <div className="mk-popover-control">
                     <Icon className="plus" title="鍓嶇Щ" type="arrow-left" onClick={() => this.props.move(card, 'left')} />
                     <Icon className="close" title="鍚庣Щ" type="arrow-right" onClick={() => this.props.move(card, 'right')} />
@@ -218,7 +234,7 @@
                 } trigger="hover" getPopupContainer={() => document.getElementById(card.uuid + 'swap')}>
                   <Icon type="swap" id={card.uuid + 'swap'}/>
                 </Popover> : null}
-                {cards.subtype !== 'datacard' ? <Icon className="close" title="鍒犻櫎鍗$墖" type="delete" onClick={() => this.props.deleteElement(card)} /> : null}
+                {control ? <Icon className="close" title="鍒犻櫎鍗$墖" type="delete" onClick={() => this.props.deleteElement(card)} /> : null}
               </div>
             } trigger="hover">
               <Icon type="tool" />
diff --git a/src/menu/components/card/cardsimplecomponent/node-wrap/index.jsx b/src/menu/components/card/cardsimplecomponent/node-wrap/index.jsx
new file mode 100644
index 0000000..3c11bc4
--- /dev/null
+++ b/src/menu/components/card/cardsimplecomponent/node-wrap/index.jsx
@@ -0,0 +1,67 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { is, fromJS } from 'immutable'
+import { Modal, Icon } from 'antd'
+
+import MenusForm from './menus'
+import './index.scss'
+
+class NodesWrap extends Component {
+  static propTpyes = {
+    card: PropTypes.object,
+    updateMenus: PropTypes.func
+  }
+
+  state = {
+    visible: false,
+    nodes: [],
+  }
+
+  shouldComponentUpdate (nextProps, nextState) {
+    return !is(fromJS(this.state), fromJS(nextState))
+  }
+
+  trigger = () => {
+    const { card } = this.props
+
+    this.setState({
+      visible: true,
+      nodes: card.nodes || []
+    })
+  }
+
+  submit = () => {
+    this.setState({
+      visible: false
+    })
+    this.props.updateMenus(this.state.nodes)
+  }
+
+  update = (nodes) => {
+    this.setState({nodes})
+  }
+
+  render() {
+    const { visible, nodes, appType } = this.state
+
+    return (
+      <>
+        <Icon type="more" style={{color: '#1890ff'}} title="鑺傜偣缁�" onClick={this.trigger}/>
+        <Modal
+          title="鑺傜偣缁�"
+          wrapClassName="nodes-field-modal"
+          visible={visible}
+          width={900}
+          maskClosable={false}
+          onOk={this.submit}
+          onCancel={() => { this.setState({ visible: false })}}
+          destroyOnClose
+        >
+          <MenusForm menus={nodes} appType={appType} update={this.update}/>
+        </Modal>
+      </>
+    )
+  }
+}
+
+export default NodesWrap
\ No newline at end of file
diff --git a/src/menu/components/card/cardsimplecomponent/node-wrap/index.scss b/src/menu/components/card/cardsimplecomponent/node-wrap/index.scss
new file mode 100644
index 0000000..d00251c
--- /dev/null
+++ b/src/menu/components/card/cardsimplecomponent/node-wrap/index.scss
@@ -0,0 +1,21 @@
+.nodes-field-modal {
+  .ant-modal {
+    top: 70px;
+  }
+  .ant-modal-body {
+    min-height: 150px;
+    padding-top: 40px;
+
+    .node-form {
+      .color-sketch-block {
+        margin-top: 6px;
+        .color-sketch-block-box {
+          width: calc(100% - 140px);
+        }
+        .color-sketch-value {
+          width: 140px;
+        }
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/menu/components/card/cardsimplecomponent/node-wrap/menus/columnform/index.jsx b/src/menu/components/card/cardsimplecomponent/node-wrap/menus/columnform/index.jsx
new file mode 100644
index 0000000..5ddc9fe
--- /dev/null
+++ b/src/menu/components/card/cardsimplecomponent/node-wrap/menus/columnform/index.jsx
@@ -0,0 +1,94 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { Form, Row, Col, Button, Input, notification } from 'antd'
+// import './index.scss'
+import asyncComponent from '@/utils/asyncComponent'
+
+const ColorSketch = asyncComponent(() => import('@/mob/colorsketch'))
+const MkIcon = asyncComponent(() => import('@/components/mkIcon'))
+
+class MenusColumn extends Component {
+  static propTpyes = {
+    menus: PropTypes.array,
+    columnChange: PropTypes.func
+  }
+
+  handleConfirm = () => {
+    const { menus } = this.props
+    // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
+    this.props.form.validateFieldsAndScroll((err, values) => {
+      if (!err) {
+        if (menus.filter(item => item.sign === values.sign).length > 0) {
+          notification.warning({
+            top: 92,
+            message: '鏍囪瘑宸插瓨鍦紒',
+            duration: 2
+          })
+          return
+        }
+
+        this.props.columnChange(values)
+        this.props.form.setFieldsValue({
+          sign: ''
+        })
+      }
+    })
+  }
+
+  render() {
+    const { getFieldDecorator } = this.props.form
+    const formItemLayout = {
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 8 }
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 16 }
+      }
+    }
+
+    return (
+      <Form {...formItemLayout} className="node-form">
+        <Row gutter={24}>
+          <Col span={6}>
+            <Form.Item label="鏍囪瘑">
+              {getFieldDecorator('sign', {
+                initialValue: ''
+              })(<Input placeholder="" autoComplete="off" />)}
+            </Form.Item>
+          </Col>
+          <Col span={8}>
+            <Form.Item label="棰滆壊">
+              {getFieldDecorator('color', {
+                initialValue: '',
+                rules: [
+                  {
+                    required: true,
+                    message: '璇烽�夋嫨棰滆壊!'
+                  }
+                ]
+              })(<ColorSketch />)}
+            </Form.Item>
+          </Col>
+          <Col span={7}>
+            <Form.Item label="鍥炬爣">
+              {getFieldDecorator('icon', {
+                initialValue: ''
+              })(
+                <MkIcon allowClear/>
+              )}
+            </Form.Item>
+          </Col>
+          <Col span={3} className="add">
+            <Button onClick={this.handleConfirm} type="primary" className="mk-green">
+              娣诲姞
+            </Button>
+          </Col>
+        </Row>
+      </Form>
+    )
+  }
+}
+
+export default Form.create()(MenusColumn)
\ No newline at end of file
diff --git a/src/menu/components/card/cardsimplecomponent/node-wrap/menus/columnform/index.scss b/src/menu/components/card/cardsimplecomponent/node-wrap/menus/columnform/index.scss
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/menu/components/card/cardsimplecomponent/node-wrap/menus/columnform/index.scss
diff --git a/src/menu/components/card/cardsimplecomponent/node-wrap/menus/index.jsx b/src/menu/components/card/cardsimplecomponent/node-wrap/menus/index.jsx
new file mode 100644
index 0000000..13259aa
--- /dev/null
+++ b/src/menu/components/card/cardsimplecomponent/node-wrap/menus/index.jsx
@@ -0,0 +1,86 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { fromJS } from 'immutable'
+import { Icon } from 'antd'
+
+import Utils from '@/utils/utils.js'
+import ColumnForm from './columnform'
+import asyncComponent from '@/utils/asyncComponent'
+// import './index.scss'
+
+const EditTable = asyncComponent(() => import('@/templates/zshare/editTable'))
+
+class CardMenus extends Component {
+  static propTpyes = {
+    appType: PropTypes.string,
+    menulist: PropTypes.array,
+    menus: PropTypes.array,
+    update: PropTypes.func
+  }
+
+  state = {
+    columns: [
+      {
+        title: '鏍囪瘑',
+        dataIndex: 'sign',
+        inputType: 'input',
+        editable: true,
+        unique: true,
+        required: false,
+        width: '35%'
+      },
+      {
+        title: '棰滆壊',
+        dataIndex: 'color',
+        inputType: 'color',
+        editable: true,
+        required: true,
+        width: '35%'
+      },
+      {
+        title: '鍥炬爣',
+        dataIndex: 'icon',
+        inputType: 'icon',
+        editable: true,
+        required: false,
+        width: '35%',
+        render: (text, record) => record.icon ? <Icon type={record.icon}/> : ''
+      }
+    ]
+  }
+
+  UNSAFE_componentWillMount() {
+    const { menus } = this.props
+
+    this.setState({
+      menus: fromJS(menus).toJS()
+    })
+  }
+
+  columnChange = (values) => {
+    const { menus } = this.state
+    values.uuid = Utils.getuuid()
+    let _menus = [...menus, values]
+
+    this.setState({menus: _menus})
+    this.props.update(_menus)
+  }
+
+  changeColumns = (columns) => {
+    this.setState({menus: columns})
+    this.props.update(columns)
+  }
+
+  render() {
+    const { menus, columns } = this.state
+
+    return (
+      <div style={{minHeight: '250px'}}>
+        <ColumnForm menus={menus} columnChange={this.columnChange}/>
+        <EditTable actions={['edit', 'move', 'copy', 'del']} type={'timenodes'} data={menus} columns={columns} onChange={this.changeColumns}/>
+      </div>
+    )
+  }
+}
+
+export default CardMenus
\ No newline at end of file
diff --git a/src/menu/components/card/cardsimplecomponent/node-wrap/menus/index.scss b/src/menu/components/card/cardsimplecomponent/node-wrap/menus/index.scss
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/menu/components/card/cardsimplecomponent/node-wrap/menus/index.scss
diff --git a/src/menu/components/card/data-card/index.jsx b/src/menu/components/card/data-card/index.jsx
index 021b6da..236ce8a 100644
--- a/src/menu/components/card/data-card/index.jsx
+++ b/src/menu/components/card/data-card/index.jsx
@@ -277,7 +277,6 @@
       newcard.options = []
       newcard.setAll = 'false'
       newcard.orderType = 'asc'
-      newcard.display = 'dropdown'
       newcard.match = '='
     }
 
@@ -621,7 +620,7 @@
 
     return (
       <div className={'menu-data-card-edit-box ' + appType} style={_style} onClick={this.clickComponent} id={card.uuid}>
-        <NormalHeader defaultshow="hidden" config={card} updateComponent={this.updateComponent}/>
+        <NormalHeader config={card} updateComponent={this.updateComponent}/>
         <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
           <div className="mk-popover-control">
             <Icon className="plus" title="娣诲姞鍗$墖" onClick={() => this.addCard()} type="plus" />
diff --git a/src/menu/components/card/prop-card/index.jsx b/src/menu/components/card/prop-card/index.jsx
index 40cbe8a..9ece805 100644
--- a/src/menu/components/card/prop-card/index.jsx
+++ b/src/menu/components/card/prop-card/index.jsx
@@ -478,7 +478,7 @@
 
     return (
       <div className="menu-prop-card-edit-box" style={_style} onClick={this.clickComponent} id={card.uuid}>
-        <NormalHeader defaultshow="hidden" config={card} updateComponent={this.updateComponent}/>
+        <NormalHeader config={card} updateComponent={this.updateComponent}/>
         <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
           <div className="mk-popover-control">
             <Icon className="plus" title="娣诲姞鍗$墖" onClick={() => this.addCard()} type="plus" />
diff --git a/src/menu/components/card/table-card/index.jsx b/src/menu/components/card/table-card/index.jsx
index 4c49738..aa04e92 100644
--- a/src/menu/components/card/table-card/index.jsx
+++ b/src/menu/components/card/table-card/index.jsx
@@ -291,7 +291,6 @@
       newcard.options = []
       newcard.setAll = 'false'
       newcard.orderType = 'asc'
-      newcard.display = 'dropdown'
       newcard.match = '='
     }
 
@@ -520,7 +519,7 @@
 
     return (
       <div className="menu-table-card-edit-box" style={_style} onClick={this.clickComponent} id={card.uuid}>
-        <NormalHeader defaultshow="hidden" config={card} updateComponent={this.updateComponent}/>
+        <NormalHeader config={card} updateComponent={this.updateComponent}/>
         <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
           <div className="mk-popover-control">
             <Icon className="plus" title="娣诲姞鍗$墖" onClick={() => this.addCard()} type="plus" />
diff --git a/src/menu/components/carousel/data-card/options.jsx b/src/menu/components/carousel/data-card/options.jsx
index ce39a9a..6aa1852 100644
--- a/src/menu/components/carousel/data-card/options.jsx
+++ b/src/menu/components/carousel/data-card/options.jsx
@@ -91,7 +91,7 @@
         {value: 'true', label: '鏄�'},
         {value: 'false', label: '鍚�'},
       ],
-      forbid: true // v5 涓嶆敮鎸佸瀭鐩存樉绀�
+      forbid: appType !== 'mob'
     },
     {
       type: 'radio',
diff --git a/src/menu/components/chart/antv-bar/chartcompile/index.jsx b/src/menu/components/chart/antv-bar/chartcompile/index.jsx
index 3f31823..ee2421e 100644
--- a/src/menu/components/chart/antv-bar/chartcompile/index.jsx
+++ b/src/menu/components/chart/antv-bar/chartcompile/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Modal, Form, Row, Col, Select, Icon, Radio, Tooltip, Input, InputNumber, Tabs, Button } from 'antd'
+import { Modal, Form, Row, Col, Select, Radio, Tooltip, Input, InputNumber, Tabs, Button } from 'antd'
+import { QuestionCircleOutlined, EditOutlined } from '@ant-design/icons'
 
 import Utils from '@/utils/utils.js'
 import { chartColors } from '@/utils/option.js'
@@ -297,7 +298,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -318,7 +319,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -339,7 +340,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -368,7 +369,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -397,7 +398,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -614,7 +615,7 @@
 
     return (
       <div className="line-chart-drawer-form">
-        <Icon type="edit" title="缂栬緫" onClick={this.showDrawer} />
+        <EditOutlined title="缂栬緫" onClick={this.showDrawer}/>
         <Modal
           wrapClassName="popview-modal menu-chart-edit-modal"
           title="鍥捐〃缂栬緫"
diff --git a/src/menu/components/chart/antv-bar/chartcompile/index.scss b/src/menu/components/chart/antv-bar/chartcompile/index.scss
index 244c6aa..2c9ad88 100644
--- a/src/menu/components/chart/antv-bar/chartcompile/index.scss
+++ b/src/menu/components/chart/antv-bar/chartcompile/index.scss
@@ -12,14 +12,6 @@
       min-height: 50vh;
       padding-top: 10px;
       .menu-chart-edit-box {
-        .anticon-question-circle {
-          color: #c49f47;
-          position: relative;
-          left: -3px;
-        }
-        .ant-input-number {
-          width: 100%;
-        }
         .ant-radio-wrapper {
           margin-right: 5px;
         }
diff --git a/src/menu/components/chart/antv-bar/index.jsx b/src/menu/components/chart/antv-bar/index.jsx
index ef00994..f06a656 100644
--- a/src/menu/components/chart/antv-bar/index.jsx
+++ b/src/menu/components/chart/antv-bar/index.jsx
@@ -1208,7 +1208,7 @@
 
   updateComponent = (component) => {
     const card = fromJS(this.state.card).toJS()
-    if (!is(fromJS(component.plot), fromJS(card.plot)) || !is(fromJS(component.style), fromJS(card.style))) {
+    if (!is(fromJS(component.plot), fromJS(card.plot)) || !is(fromJS(component.style), fromJS(card.style)) || !is(fromJS(component.search), fromJS(card.search))) {
       let _element = document.getElementById(card.uuid + 'canvas')
       if (_element) {
         _element.innerHTML = ''
@@ -1242,7 +1242,6 @@
     newcard.options = []
     newcard.setAll = 'false'
     newcard.orderType = 'asc'
-    newcard.display = 'dropdown'
     newcard.match = '='
 
     // 娉ㄥ唽浜嬩欢-娣诲姞鎼滅储
@@ -1349,7 +1348,7 @@
         } trigger="hover">
           <Icon type="tool" />
         </Popover>
-        {card.plot.title || card.search.length > 0 ? <NormalHeader config={card} updateComponent={this.updateComponent}/> : null}
+        <NormalHeader config={card} updateComponent={this.updateComponent}/>
         <div className="canvas" id={card.uuid + 'canvas'} ref={ref => this.wrap = ref}></div>
         {appType !== 'mob' ? <ActionComponent
           type="chart"
diff --git a/src/menu/components/chart/antv-bar/index.scss b/src/menu/components/chart/antv-bar/index.scss
index 19c0e63..cc5f914 100644
--- a/src/menu/components/chart/antv-bar/index.scss
+++ b/src/menu/components/chart/antv-bar/index.scss
@@ -38,7 +38,7 @@
     position: absolute;
     right: 1px;
     top: 1px;
-    z-index: 2;
+    z-index: 3;
     font-size: 16px;
     padding: 5px;
     cursor: pointer;
diff --git a/src/menu/components/chart/antv-dashboard/chartcompile/index.jsx b/src/menu/components/chart/antv-dashboard/chartcompile/index.jsx
index 76effa8..3e526c1 100644
--- a/src/menu/components/chart/antv-dashboard/chartcompile/index.jsx
+++ b/src/menu/components/chart/antv-dashboard/chartcompile/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
-import { Modal, Form, Row, Col, Select, Icon, Radio, Tooltip, Input, InputNumber, Tabs, Button } from 'antd'
+import { Modal, Form, Row, Col, Select, Radio, Tooltip, Input, InputNumber, Tabs, Button } from 'antd'
+import { QuestionCircleOutlined, EditOutlined } from '@ant-design/icons'
 
 import Utils from '@/utils/utils.js'
 import { getBaseForm, getOptionForm, getRadioOptionForm } from './formconfig'
@@ -78,7 +79,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -99,7 +100,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -120,7 +121,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -149,7 +150,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -178,7 +179,7 @@
           <Col span={12} key={index} className="color-col">
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -296,7 +297,7 @@
 
     return (
       <div className="line-chart-drawer-form">
-        <Icon type="edit" title="缂栬緫" onClick={this.showDrawer} />
+        <EditOutlined title="缂栬緫" onClick={this.showDrawer} />
         <Modal
           wrapClassName="popview-modal menu-chart-edit-modal"
           title="鍥捐〃缂栬緫"
diff --git a/src/menu/components/chart/antv-dashboard/chartcompile/index.scss b/src/menu/components/chart/antv-dashboard/chartcompile/index.scss
index 607a36d..8764153 100644
--- a/src/menu/components/chart/antv-dashboard/chartcompile/index.scss
+++ b/src/menu/components/chart/antv-dashboard/chartcompile/index.scss
@@ -11,14 +11,6 @@
       min-height: 50vh;
       max-height: calc(100vh - 190px);
       padding-top: 10px;
-      .anticon-question-circle {
-        color: #c49f47;
-        position: relative;
-        left: -3px;
-      }
-      .ant-input-number {
-        width: 100%;
-      }
       .ant-tabs-nav-wrap {
         text-align: center;
       }
diff --git a/src/menu/components/chart/antv-dashboard/index.jsx b/src/menu/components/chart/antv-dashboard/index.jsx
index a6c9c1e..58f608b 100644
--- a/src/menu/components/chart/antv-dashboard/index.jsx
+++ b/src/menu/components/chart/antv-dashboard/index.jsx
@@ -466,7 +466,7 @@
   updateComponent = (component) => {
     const card = fromJS(this.state.card).toJS()
 
-    if (!is(fromJS(component.plot), fromJS(card.plot)) || !is(fromJS(component.style), fromJS(card.style))) {
+    if (!is(fromJS(component.plot), fromJS(card.plot)) || !is(fromJS(component.style), fromJS(card.style)) || !is(fromJS(component.search), fromJS(card.search))) {
       let _element = document.getElementById(card.uuid + 'dashboard')
       if (_element) {
         _element.innerHTML = ''
@@ -528,7 +528,7 @@
         } trigger="hover">
           <Icon type="tool" />
         </Popover>
-        {card.plot.title ? <NormalHeader config={card} updateComponent={this.updateComponent}/> : null}
+        <NormalHeader hideSearch="true" config={card} updateComponent={this.updateComponent}/>
         <div className="canvas" id={card.uuid + 'dashboard'} ref={ref => this.wrap = ref}></div>
       </div>
     )
diff --git a/src/menu/components/chart/antv-dashboard/index.scss b/src/menu/components/chart/antv-dashboard/index.scss
index 7ea886d..b017bc1 100644
--- a/src/menu/components/chart/antv-dashboard/index.scss
+++ b/src/menu/components/chart/antv-dashboard/index.scss
@@ -19,7 +19,7 @@
     position: absolute;
     right: 1px;
     top: 1px;
-    z-index: 2;
+    z-index: 3;
     font-size: 16px;
     padding: 5px;
     cursor: pointer;
diff --git a/src/menu/components/chart/antv-pie/chartcompile/index.jsx b/src/menu/components/chart/antv-pie/chartcompile/index.jsx
index 4f2638b..e9ec92e 100644
--- a/src/menu/components/chart/antv-pie/chartcompile/index.jsx
+++ b/src/menu/components/chart/antv-pie/chartcompile/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
-import { Modal, Form, Row, Col, Select, Icon, Radio, Tooltip, Input, InputNumber, Tabs, Button } from 'antd'
+import { Modal, Form, Row, Col, Select, Radio, Tooltip, Input, InputNumber, Tabs, Button } from 'antd'
+import { QuestionCircleOutlined, EditOutlined } from '@ant-design/icons'
 
 import Utils from '@/utils/utils.js'
 import { getBaseForm, getOptionForm } from './formconfig'
@@ -104,7 +105,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -125,7 +126,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -146,7 +147,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -175,7 +176,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -204,7 +205,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -322,7 +323,7 @@
 
     return (
       <div className="line-chart-drawer-form">
-        <Icon type="edit" title="缂栬緫" onClick={this.showDrawer} />
+        <EditOutlined title="缂栬緫" onClick={this.showDrawer} />
         <Modal
           wrapClassName="popview-modal menu-chart-edit-modal"
           title="鍥捐〃缂栬緫"
diff --git a/src/menu/components/chart/antv-pie/chartcompile/index.scss b/src/menu/components/chart/antv-pie/chartcompile/index.scss
index 25a7c53..dd1f229 100644
--- a/src/menu/components/chart/antv-pie/chartcompile/index.scss
+++ b/src/menu/components/chart/antv-pie/chartcompile/index.scss
@@ -11,14 +11,6 @@
       min-height: 50vh;
       max-height: calc(100vh - 190px);
       padding-top: 10px;
-      .anticon-question-circle {
-        color: #c49f47;
-        position: relative;
-        left: -3px;
-      }
-      .ant-input-number {
-        width: 100%;
-      }
       .ant-tabs-nav-wrap {
         text-align: center;
       }
diff --git a/src/menu/components/chart/antv-pie/index.jsx b/src/menu/components/chart/antv-pie/index.jsx
index 3356b8a..836e1b8 100644
--- a/src/menu/components/chart/antv-pie/index.jsx
+++ b/src/menu/components/chart/antv-pie/index.jsx
@@ -598,7 +598,7 @@
   updateComponent = (component) => {
     const card = fromJS(this.state.card).toJS()
 
-    if (!is(fromJS(component.plot), fromJS(card.plot)) || !is(fromJS(component.style), fromJS(card.style))) {
+    if (!is(fromJS(component.plot), fromJS(card.plot)) || !is(fromJS(component.style), fromJS(card.style)) || !is(fromJS(component.search), fromJS(card.search))) {
       let _element = document.getElementById(card.uuid + 'canvas')
       if (_element) {
         _element.innerHTML = ''
@@ -632,7 +632,6 @@
     newcard.options = []
     newcard.setAll = 'false'
     newcard.orderType = 'asc'
-    newcard.display = 'dropdown'
     newcard.match = '='
 
     // 娉ㄥ唽浜嬩欢-娣诲姞鎼滅储
@@ -682,7 +681,7 @@
         } trigger="hover">
           <Icon type="tool" />
         </Popover>
-        {card.plot.title || card.search.length > 0 ? <NormalHeader config={card} updateComponent={this.updateComponent}/> : null}
+        <NormalHeader config={card} updateComponent={this.updateComponent}/>
         <div className="canvas" id={card.uuid + 'canvas'} ref={ref => this.wrap = ref}></div>
       </div>
     )
diff --git a/src/menu/components/chart/antv-pie/index.scss b/src/menu/components/chart/antv-pie/index.scss
index 987cccc..13d75d2 100644
--- a/src/menu/components/chart/antv-pie/index.scss
+++ b/src/menu/components/chart/antv-pie/index.scss
@@ -19,7 +19,7 @@
     position: absolute;
     right: 1px;
     top: 1px;
-    z-index: 2;
+    z-index: 3;
     font-size: 16px;
     padding: 5px;
     cursor: pointer;
diff --git a/src/menu/components/chart/antv-scatter/chartcompile/index.jsx b/src/menu/components/chart/antv-scatter/chartcompile/index.jsx
index 0982251..9658562 100644
--- a/src/menu/components/chart/antv-scatter/chartcompile/index.jsx
+++ b/src/menu/components/chart/antv-scatter/chartcompile/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
-import { Modal, Form, Row, Col, Select, Icon, Radio, Tooltip, Input, InputNumber, Tabs } from 'antd'
+import { Modal, Form, Row, Col, Select, Radio, Tooltip, Input, InputNumber, Tabs } from 'antd'
+import { QuestionCircleOutlined, EditOutlined } from '@ant-design/icons'
 
 import { getBaseForm, getOptionForm } from './formconfig'
 import asyncComponent from '@/utils/asyncComponent'
@@ -56,7 +57,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -77,7 +78,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -98,7 +99,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -127,7 +128,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -156,7 +157,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -241,7 +242,7 @@
 
     return (
       <div className="line-chart-drawer-form">
-        <Icon type="edit" title="缂栬緫" onClick={this.showDrawer} />
+        <EditOutlined title="缂栬緫" onClick={this.showDrawer} />
         <Modal
           wrapClassName="popview-modal menu-chart-edit-modal"
           title="鍥捐〃缂栬緫"
diff --git a/src/menu/components/chart/antv-scatter/chartcompile/index.scss b/src/menu/components/chart/antv-scatter/chartcompile/index.scss
index 5928db8..5b873a2 100644
--- a/src/menu/components/chart/antv-scatter/chartcompile/index.scss
+++ b/src/menu/components/chart/antv-scatter/chartcompile/index.scss
@@ -12,14 +12,6 @@
       min-height: 50vh;
       padding-top: 10px;
       .menu-chart-edit-box {
-        .anticon-question-circle {
-          color: #c49f47;
-          position: relative;
-          left: -3px;
-        }
-        .ant-input-number {
-          width: 100%;
-        }
         .ant-tabs-nav-wrap {
           text-align: center;
         }
diff --git a/src/menu/components/chart/antv-scatter/index.jsx b/src/menu/components/chart/antv-scatter/index.jsx
index eacdf5c..30b127c 100644
--- a/src/menu/components/chart/antv-scatter/index.jsx
+++ b/src/menu/components/chart/antv-scatter/index.jsx
@@ -246,7 +246,7 @@
   updateComponent = (component) => {
     const card = fromJS(this.state.card).toJS()
 
-    if (!is(fromJS(component.plot), fromJS(card.plot)) || !is(fromJS(component.style), fromJS(card.style))) {
+    if (!is(fromJS(component.plot), fromJS(card.plot)) || !is(fromJS(component.style), fromJS(card.style)) || !is(fromJS(component.search), fromJS(card.search))) {
       let _element = document.getElementById(card.uuid + 'canvas')
       if (_element) {
         _element.innerHTML = ''
@@ -280,7 +280,6 @@
     newcard.options = []
     newcard.setAll = 'false'
     newcard.orderType = 'asc'
-    newcard.display = 'dropdown'
     newcard.match = '='
 
     // 娉ㄥ唽浜嬩欢-娣诲姞鎼滅储
@@ -387,7 +386,7 @@
         } trigger="hover">
           <Icon type="tool" />
         </Popover>
-        {card.plot.title || card.search.length > 0 ? <NormalHeader config={card} updateComponent={this.updateComponent}/> : null}
+        <NormalHeader config={card} updateComponent={this.updateComponent}/>
         <div className="canvas" id={card.uuid + 'canvas'} ref={ref => this.wrap = ref}></div>
         {appType !== 'mob' ? <ActionComponent type="chart" config={card} updateaction={this.updateComponent}/> : null}
       </div>
diff --git a/src/menu/components/chart/antv-scatter/index.scss b/src/menu/components/chart/antv-scatter/index.scss
index cc4cd88..4c27973 100644
--- a/src/menu/components/chart/antv-scatter/index.scss
+++ b/src/menu/components/chart/antv-scatter/index.scss
@@ -38,7 +38,7 @@
     position: absolute;
     right: 1px;
     top: 1px;
-    z-index: 2;
+    z-index: 3;
     font-size: 16px;
     padding: 5px;
     cursor: pointer;
diff --git a/src/menu/components/chart/chart-custom/index.jsx b/src/menu/components/chart/chart-custom/index.jsx
index 386c7fc..39dd831 100644
--- a/src/menu/components/chart/chart-custom/index.jsx
+++ b/src/menu/components/chart/chart-custom/index.jsx
@@ -174,7 +174,7 @@
 
   updateComponent = (component) => {
     const card = fromJS(this.state.card).toJS()
-    if (!is(fromJS(component.plot), fromJS(card.plot)) || !is(fromJS(component.style), fromJS(card.style))) {
+    if (!is(fromJS(component.plot), fromJS(card.plot)) || !is(fromJS(component.style), fromJS(card.style)) || !is(fromJS(component.search), fromJS(card.search))) {
       let _element = document.getElementById(card.uuid + 'canvas')
       if (_element) {
         _element.innerHTML = ''
@@ -210,7 +210,6 @@
     newcard.options = []
     newcard.setAll = 'false'
     newcard.orderType = 'asc'
-    newcard.display = 'dropdown'
     newcard.match = '='
 
     // 娉ㄥ唽浜嬩欢-娣诲姞鎼滅储
@@ -259,7 +258,7 @@
         } trigger="hover">
           <Icon type="tool" />
         </Popover>
-        {card.plot.title || card.search.length > 0 ? <NormalHeader config={card} updateComponent={this.updateComponent}/> : null}
+        <NormalHeader config={card} updateComponent={this.updateComponent}/>
         <div className="canvas" id={card.uuid + 'canvas'} ref={ref => this.wrap = ref}></div>
       </div>
     )
diff --git a/src/menu/components/chart/chart-custom/index.scss b/src/menu/components/chart/chart-custom/index.scss
index cbfba49..8bd0443 100644
--- a/src/menu/components/chart/chart-custom/index.scss
+++ b/src/menu/components/chart/chart-custom/index.scss
@@ -38,7 +38,7 @@
     position: absolute;
     right: 1px;
     top: 1px;
-    z-index: 2;
+    z-index: 3;
     font-size: 16px;
     padding: 5px;
     cursor: pointer;
diff --git a/src/menu/components/editor/braft-editor/index.jsx b/src/menu/components/editor/braft-editor/index.jsx
index 63b9cb3..85c223b 100644
--- a/src/menu/components/editor/braft-editor/index.jsx
+++ b/src/menu/components/editor/braft-editor/index.jsx
@@ -164,7 +164,7 @@
 
     return (
       <div className="menu-normal-editor-box" style={style} onClick={this.clickComponent} id={card.uuid}>
-        <NormalHeader defaultshow="hidden" hideSearch="true" config={card} updateComponent={this.updateComponent}/>
+        <NormalHeader hideSearch="true" config={card} updateComponent={this.updateComponent}/>
         <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
           <div className="mk-popover-control">
             <NormalForm title="瀵屾枃鏈缃�" width={700} update={this.updateWrap} getForms={this.getWrapForms}>
diff --git a/src/menu/components/form/formaction/actionform/index.jsx b/src/menu/components/form/formaction/actionform/index.jsx
index bdf1bf0..f36d0b1 100644
--- a/src/menu/components/form/formaction/actionform/index.jsx
+++ b/src/menu/components/form/formaction/actionform/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 // import { fromJS } from 'immutable'
-import { Form, Row, Col, Input, Select, Icon, Radio, Tooltip, InputNumber, Cascader } from 'antd'
+import { Form, Row, Col, Input, Select, Radio, Tooltip, InputNumber, Cascader } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import { formRule } from '@/utils/option.js'
 
 import './index.scss'
@@ -178,7 +179,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -208,7 +209,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -229,7 +230,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -264,7 +265,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -311,7 +312,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
diff --git a/src/menu/components/form/formaction/actionform/index.scss b/src/menu/components/form/formaction/actionform/index.scss
index 535dd29..2573ed4 100644
--- a/src/menu/components/form/formaction/actionform/index.scss
+++ b/src/menu/components/form/formaction/actionform/index.scss
@@ -18,14 +18,6 @@
       margin-right: 4px;
     }
   }
-  .ant-input-number {
-    width: 100%;
-  }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
   .with-button {
     .ant-form-item-control-wrapper {
       padding-right: 63px;
diff --git a/src/menu/components/form/normal-form/index.jsx b/src/menu/components/form/normal-form/index.jsx
index 9d35b9e..16de6bf 100644
--- a/src/menu/components/form/normal-form/index.jsx
+++ b/src/menu/components/form/normal-form/index.jsx
@@ -524,7 +524,7 @@
       standardform,
       visible: true,
       editform: _form,
-      formlist: getModalForm(_form, _inputfields, _tabfields, _linkableFields, _linksupFields, false)
+      formlist: getModalForm(_form, _inputfields, _tabfields, _linkableFields, _linksupFields)
     })
   }
 
diff --git a/src/menu/components/form/tab-form/index.jsx b/src/menu/components/form/tab-form/index.jsx
index 5acecf2..016a12c 100644
--- a/src/menu/components/form/tab-form/index.jsx
+++ b/src/menu/components/form/tab-form/index.jsx
@@ -517,7 +517,7 @@
       standardform,
       visible: true,
       editform: _form,
-      formlist: getModalForm(_form, _inputfields, _tabfields, _linkableFields, _linksupFields, false)
+      formlist: getModalForm(_form, _inputfields, _tabfields, _linkableFields, _linksupFields)
     })
   }
 
diff --git a/src/menu/components/group/groupcomponents/card.jsx b/src/menu/components/group/groupcomponents/card.jsx
index 9d4c223..bc2c4c4 100644
--- a/src/menu/components/group/groupcomponents/card.jsx
+++ b/src/menu/components/group/groupcomponents/card.jsx
@@ -22,6 +22,7 @@
 const Balcony = asyncComponent(() => import('@/menu/components/card/balcony'))
 const CodeSandbox = asyncComponent(() => import('@/menu/components/code/sandbox'))
 const CustomChart = asyncComponent(() => import('@/menu/components/chart/chart-custom'))
+const Timeline = asyncComponent(() => import('@/menu/components/timeline/normal-timeline'))
 
 const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
   const originalIndex = findCard(id).index
@@ -91,6 +92,8 @@
       return (<CodeSandbox card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'balcony') {
       return (<Balcony card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
+    } else if (card.type === 'timeline') {
+      return (<Timeline card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'chart') {
       return (<CustomChart card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     }
diff --git a/src/menu/components/group/groupcomponents/index.jsx b/src/menu/components/group/groupcomponents/index.jsx
index c5bed5f..abf16c9 100644
--- a/src/menu/components/group/groupcomponents/index.jsx
+++ b/src/menu/components/group/groupcomponents/index.jsx
@@ -83,6 +83,7 @@
         scatter: '鏁g偣鍥�',
         tree: '鏍戝舰鍒楄〃',
         balcony: '娴姩鍗�',
+        timeline: '鏃堕棿杞�',
         card: '鍗$墖'
       }
       let i = 1
diff --git a/src/menu/components/group/paste/index.jsx b/src/menu/components/group/paste/index.jsx
index 4bc2a2d..7c5e52a 100644
--- a/src/menu/components/group/paste/index.jsx
+++ b/src/menu/components/group/paste/index.jsx
@@ -5,7 +5,7 @@
 import MenuUtils from '@/utils/utils-custom.js'
 import MKEmitter from '@/utils/events.js'
 import asyncComponent from '@/utils/asyncComponent'
-import './index.scss'
+// import './index.scss'
 
 const PasteForm = asyncComponent(() => import('@/templates/zshare/pasteform'))
 
@@ -23,7 +23,7 @@
   }
 
   pasteSubmit = () => {
-    let options = ['datacard', 'propcard', 'balcony', 'stepform', 'tabform', 'normaltable', 'tablecard', 'line', 'bar', 'pie', 'dashboard', 'scatter', 'chart']
+    let options = ['datacard', 'propcard', 'balcony', 'timeline', 'stepform', 'tabform', 'normaltable', 'tablecard', 'line', 'bar', 'pie', 'dashboard', 'scatter', 'chart']
     let types = {
       login: '鐧诲綍',
       navbar: '瀵艰埅鏍�',
diff --git a/src/menu/components/group/paste/index.scss b/src/menu/components/group/paste/index.scss
index 384a820..e69de29 100644
--- a/src/menu/components/group/paste/index.scss
+++ b/src/menu/components/group/paste/index.scss
@@ -1,4 +0,0 @@
-.menu-config-paste {
-  border-color: #40a9ff;
-  color: #40a9ff;
-}
\ No newline at end of file
diff --git a/src/menu/components/share/actioncomponent/actionform/index.jsx b/src/menu/components/share/actioncomponent/actionform/index.jsx
index a6b6235..3636575 100644
--- a/src/menu/components/share/actioncomponent/actionform/index.jsx
+++ b/src/menu/components/share/actioncomponent/actionform/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
-import { Form, Row, Col, Input, Select, Icon, Radio, notification, Tooltip, InputNumber, Cascader } from 'antd'
+import { Form, Row, Col, Input, Select, Radio, notification, Tooltip, InputNumber, Cascader } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import { btnCustomClasses, formRule } from '@/utils/option.js'
 
 import asyncComponent from '@/utils/asyncComponent'
@@ -532,7 +533,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -562,7 +563,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -583,7 +584,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -618,7 +619,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -665,7 +666,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
diff --git a/src/menu/components/share/actioncomponent/actionform/index.scss b/src/menu/components/share/actioncomponent/actionform/index.scss
index 535dd29..2573ed4 100644
--- a/src/menu/components/share/actioncomponent/actionform/index.scss
+++ b/src/menu/components/share/actioncomponent/actionform/index.scss
@@ -18,14 +18,6 @@
       margin-right: 4px;
     }
   }
-  .ant-input-number {
-    width: 100%;
-  }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
   .with-button {
     .ant-form-item-control-wrapper {
       padding-right: 63px;
diff --git a/src/menu/components/share/actioncomponent/formconfig.jsx b/src/menu/components/share/actioncomponent/formconfig.jsx
index 2a8d54c..42d604e 100644
--- a/src/menu/components/share/actioncomponent/formconfig.jsx
+++ b/src/menu/components/share/actioncomponent/formconfig.jsx
@@ -578,7 +578,7 @@
       key: 'refreshTab',
       label: '鍒锋柊鑿滃崟',
       initVal: card.refreshTab || [],
-      tooltip: '鎵ц鎴愬姛鍚庢垨鏍囩鍏抽棴鏃讹紝闇�瑕佸悓姝ュ埛鏂扮殑鑿滃崟',
+      tooltip: '鎵ц鎴愬姛鍚庯紙鎴栧姛鑳芥寜閽腑鏍囩鍏抽棴绫诲瀷锛夛紝闇�瑕佸悓姝ュ埛鏂扮殑鑿滃崟',
       required: false,
       forbid: isApp || viewType === 'popview',
       options: menulist
diff --git a/src/menu/components/share/actioncomponent/index.scss b/src/menu/components/share/actioncomponent/index.scss
index 48de527..6141b32 100644
--- a/src/menu/components/share/actioncomponent/index.scss
+++ b/src/menu/components/share/actioncomponent/index.scss
@@ -1,11 +1,4 @@
 .model-menu-action-list {
-  .anticon-question-circle {
-    color: #c49f47;
-    position: absolute;
-    left: 5px;
-    top: 5px;
-  }
-
   .ant-row > .anticon-plus {
     color: #26C281;
     padding: 5px;
diff --git a/src/menu/components/share/clockcomponent/settingform/index.jsx b/src/menu/components/share/clockcomponent/settingform/index.jsx
index 22604e5..099f414 100644
--- a/src/menu/components/share/clockcomponent/settingform/index.jsx
+++ b/src/menu/components/share/clockcomponent/settingform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Select, Tooltip, Icon, Input } from 'antd'
+import { Form, Row, Col, Select, Tooltip, Input } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import './index.scss'
 
@@ -71,7 +72,7 @@
             {(config.subtype === 'balcony' || config.subtype === 'propcard') && timer ? <Col span={22}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title="鍙互鎸囧畾瀛楁鐢ㄤ簬鎺у埗瀹氭椂鍣ㄧ殑鍏抽棴銆�">
-                  <Icon type="question-circle" style={{marginRight: '3px', color: '#c49f47'}} />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鍏抽棴瀹氭椂
                 </Tooltip>
               }>
@@ -87,7 +88,7 @@
             {(config.subtype === 'balcony' || config.subtype === 'propcard') && clearField && timer ? <Col span={22}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title="褰撳瓧娈靛�间笌鍏抽棴鍊肩浉绛夋椂锛屽叧闂畾鏃跺櫒锛屽涓�煎彲鐢ㄩ�楀彿鍒嗛殧銆�">
-                  <Icon type="question-circle" style={{marginRight: '3px', color: '#c49f47'}} />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鍏抽棴鍊�
                 </Tooltip>
               }>
diff --git a/src/menu/components/share/markcomponent/index.scss b/src/menu/components/share/markcomponent/index.scss
index 3502583..9689a82 100644
--- a/src/menu/components/share/markcomponent/index.scss
+++ b/src/menu/components/share/markcomponent/index.scss
@@ -1,17 +1,9 @@
 #mark-column-box-modal {
-  .ant-form-item-label .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
   table tr td {
     word-wrap: break-word;
     word-break: break-word;
   }
-  .ant-input-number {
-    width: 100%;
-  }
-  
+
   .mingke-table .ant-empty {
     margin: 20px 8px!important;
   }
diff --git a/src/menu/components/share/markcomponent/markform/index.jsx b/src/menu/components/share/markcomponent/markform/index.jsx
index c027d4b..5c437a6 100644
--- a/src/menu/components/share/markcomponent/markform/index.jsx
+++ b/src/menu/components/share/markcomponent/markform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Select, Button, Input, Icon, Cascader, Tooltip } from 'antd'
+import { Form, Row, Col, Select, Button, Input, Cascader, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import ColorSketch from '@/mob/colorsketch'
 import './index.scss'
@@ -77,7 +78,7 @@
           </Col>
           <Col span={6}>
             <Form.Item label={<Tooltip placement="topLeft" title="瀵规瘮闈欐�佸�兼椂锛岄渶瑕佸~鍐欏姣斿�硷紝榛樿涓虹┖銆�">
-                <Icon type="question-circle" />
+              <QuestionCircleOutlined className="mk-form-tip" />
                 {'瀵规瘮鍊�'}
               </Tooltip>
             }>
diff --git a/src/menu/components/share/markcomponent/markform/index.scss b/src/menu/components/share/markcomponent/markform/index.scss
index 3c119b3..8fd198c 100644
--- a/src/menu/components/share/markcomponent/markform/index.scss
+++ b/src/menu/components/share/markcomponent/markform/index.scss
@@ -1,9 +1,4 @@
 .normal-table-mark-form {
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
   .color-sketch-block {
     position: relative;
     top: 5px;
diff --git a/src/menu/components/share/normalform/index.jsx b/src/menu/components/share/normalform/index.jsx
index 8bacb22..8fee07c 100644
--- a/src/menu/components/share/normalform/index.jsx
+++ b/src/menu/components/share/normalform/index.jsx
@@ -1,8 +1,9 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Tooltip, Icon, InputNumber, Select, Radio, Cascader } from 'antd'
+import { Form, Row, Col, Input, Tooltip, InputNumber, Select, Radio, Cascader } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
-import './index.scss'
+// import './index.scss'
 
 class SettingForm extends Component {
   static propTpyes = {
@@ -47,7 +48,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -68,7 +69,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -89,7 +90,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -118,7 +119,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -147,7 +148,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -183,7 +184,7 @@
     }
 
     return (
-      <div className="model-menu-normal-form">
+      <div>
         <Form {...formItemLayout}><Row gutter={16}>{this.getFields()}</Row></Form>
       </div>
     )
diff --git a/src/menu/components/share/normalform/index.scss b/src/menu/components/share/normalform/index.scss
index 5b30221..e69de29 100644
--- a/src/menu/components/share/normalform/index.scss
+++ b/src/menu/components/share/normalform/index.scss
@@ -1,11 +0,0 @@
-.model-menu-normal-form {
-  position: relative;
-
-  .anticon-question-circle {
-    color: #c49f47;
-    margin-right: 3px;
-  }
-  .ant-input-number {
-    width: 100%;
-  }
-}
\ No newline at end of file
diff --git a/src/menu/components/share/normalheader/index.jsx b/src/menu/components/share/normalheader/index.jsx
index 2440a63..818b05b 100644
--- a/src/menu/components/share/normalheader/index.jsx
+++ b/src/menu/components/share/normalheader/index.jsx
@@ -12,7 +12,6 @@
 
 class NormalHeader extends Component {
   static propTpyes = {
-    defaultshow: PropTypes.any,      // 鏍囬涓庢悳绱㈡潯浠朵笉瀛樺湪鏃堕殣钘�
     hideSearch: PropTypes.any,       // 闅愯棌鎼滅储鏉′欢
     config: PropTypes.object,        // 閰嶇疆淇℃伅
     updateComponent: PropTypes.func  // 閰嶇疆鏇存柊
@@ -62,7 +61,7 @@
   }
 
   render() {
-    const { config, defaultshow, hideSearch } = this.props
+    const { config, hideSearch } = this.props
     const { appType } = this.state
 
     let title = config.plot ? config.plot.title : config.wrap.title
@@ -72,10 +71,8 @@
       title = ' '
     }
 
-    if (defaultshow === 'hidden') {
-      if (!title && (!config.search || config.search.length === 0)) {
-        show = false
-      }
+    if (!title && (!config.search || config.search.length === 0)) {
+      show = false
     }
     let _style = resetStyle(config.headerStyle)
 
diff --git a/src/menu/components/share/normalheader/index.scss b/src/menu/components/share/normalheader/index.scss
index b20bf0a..2bd66c6 100644
--- a/src/menu/components/share/normalheader/index.scss
+++ b/src/menu/components/share/normalheader/index.scss
@@ -19,6 +19,7 @@
   }
   .model-custom-header-search-list {
     flex: 1;
+    padding-top: 5px;
   }
   .ant-input-search.ant-input-affix-wrapper {
     width: 50%;
diff --git a/src/menu/components/share/searchcomponent/dragsearch/card.jsx b/src/menu/components/share/searchcomponent/dragsearch/card.jsx
index 85b3b7b..7ba8496 100644
--- a/src/menu/components/share/searchcomponent/dragsearch/card.jsx
+++ b/src/menu/components/share/searchcomponent/dragsearch/card.jsx
@@ -7,6 +7,7 @@
 import './index.scss'
 
 const { MonthPicker, WeekPicker, RangePicker } = DatePicker
+const { Search } = Input
 
 const Card = ({ id, card, moveCard, findCard, copyCard, editCard, delCard }) => {
   const originalIndex = findCard(id).index
@@ -76,9 +77,12 @@
             label={card.labelShow !== 'false' ? card.label : ''}
             required={card.required === 'true'}
           >
-            {card.type === 'text' ?
+            {card.type === 'text' && card.inputType !== 'search' ?
               <Input placeholder={card.label} value={card.initval} /> : null
             }
+            {card.type === 'text' && card.inputType === 'search' ?
+              <Search placeholder={card.label} value={card.initval} enterButton/> : null
+            }
             {(card.type === 'multiselect' || card.type === 'select' || card.type === 'link') ?
               <Select placeholder={card.label} value={_defaultValue}></Select> : null
             }
diff --git a/src/menu/components/share/searchcomponent/index.scss b/src/menu/components/share/searchcomponent/index.scss
index 770b589..8effaa7 100644
--- a/src/menu/components/share/searchcomponent/index.scss
+++ b/src/menu/components/share/searchcomponent/index.scss
@@ -25,6 +25,9 @@
       .ant-input {
         height: 28px;
       }
+      .ant-btn {
+        height: 28px;
+      }
       .data-range .ant-calendar-picker-input {
         padding: 4px 20px 4px 5px;
         font-size: 13px;
diff --git a/src/menu/components/share/usercomponent/settingform/index.jsx b/src/menu/components/share/usercomponent/settingform/index.jsx
index 46f1ff3..d918739 100644
--- a/src/menu/components/share/usercomponent/settingform/index.jsx
+++ b/src/menu/components/share/usercomponent/settingform/index.jsx
@@ -1,8 +1,9 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Tooltip, Icon } from 'antd'
+import { Form, Row, Col, Input, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
-import './index.scss'
+// import './index.scss'
 
 class SettingForm extends Component {
   static propTpyes = {
@@ -53,34 +54,32 @@
     }
 
     return (
-      <div className="model-menu-setting-form">
-        <Form {...formItemLayout}>
-          <Row gutter={24}>
-            <Col span={22}>
-              <Form.Item label={
-                <Tooltip placement="topLeft" title="鐢ㄤ簬缁勪欢闂寸殑鍖哄垎銆�">
-                  <Icon type="question-circle" />
-                  缁勪欢鍚嶇О
-                </Tooltip>
-              }>
-                {getFieldDecorator('name', {
-                  initialValue: this.props.name || '',
-                  rules: [
-                    {
-                      required: true,
-                      message: this.props.dict['form.required.input'] + '缁勪欢鍚嶇О!'
-                    },
-                    {
-                      max: 15,
-                      message: '缁勪欢鍚嶇О鏈�澶�15涓瓧绗�!'
-                    }
-                  ]
-                })(<Input placeholder={''} autoComplete="off" onPressEnter={this.handleSubmit}/>)}
-              </Form.Item>
-            </Col>
-          </Row>
-        </Form>
-      </div>
+      <Form {...formItemLayout}>
+        <Row gutter={24}>
+          <Col span={22}>
+            <Form.Item label={
+              <Tooltip placement="topLeft" title="鐢ㄤ簬缁勪欢闂寸殑鍖哄垎銆�">
+                <QuestionCircleOutlined className="mk-form-tip" />
+                缁勪欢鍚嶇О
+              </Tooltip>
+            }>
+              {getFieldDecorator('name', {
+                initialValue: this.props.name || '',
+                rules: [
+                  {
+                    required: true,
+                    message: this.props.dict['form.required.input'] + '缁勪欢鍚嶇О!'
+                  },
+                  {
+                    max: 15,
+                    message: '缁勪欢鍚嶇О鏈�澶�15涓瓧绗�!'
+                  }
+                ]
+              })(<Input placeholder={''} autoComplete="off" onPressEnter={this.handleSubmit}/>)}
+            </Form.Item>
+          </Col>
+        </Row>
+      </Form>
     )
   }
 }
diff --git a/src/menu/components/share/usercomponent/settingform/index.scss b/src/menu/components/share/usercomponent/settingform/index.scss
index c53f945..e69de29 100644
--- a/src/menu/components/share/usercomponent/settingform/index.scss
+++ b/src/menu/components/share/usercomponent/settingform/index.scss
@@ -1,8 +0,0 @@
-.model-menu-setting-form {
-  position: relative;
-
-  .anticon-question-circle {
-    color: #c49f47;
-    margin-right: 3px;
-  }
-}
\ No newline at end of file
diff --git a/src/menu/components/table/edit-table/columns/editColumn/index.jsx b/src/menu/components/table/edit-table/columns/editColumn/index.jsx
index 18f871c..b8e9de9 100644
--- a/src/menu/components/table/edit-table/columns/editColumn/index.jsx
+++ b/src/menu/components/table/edit-table/columns/editColumn/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Form, Row, Col, Input, Select, InputNumber, Radio, Tooltip, Icon, Modal, notification } from 'antd'
+import { Form, Row, Col, Input, Select, InputNumber, Radio, Tooltip, Modal, notification } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import { getColumnForm } from './formconfig'
 import { formRule } from '@/utils/option.js'
@@ -187,7 +188,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -209,7 +210,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -260,7 +261,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -311,7 +312,7 @@
           <Col span={24} key={index} className="textarea">
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
diff --git a/src/menu/components/table/edit-table/columns/editColumn/index.scss b/src/menu/components/table/edit-table/columns/editColumn/index.scss
index e450762..9885df8 100644
--- a/src/menu/components/table/edit-table/columns/editColumn/index.scss
+++ b/src/menu/components/table/edit-table/columns/editColumn/index.scss
@@ -1,15 +1,5 @@
 .commontable-column-form {
   min-height: 190px;
-  .ant-form-item {
-    .ant-input-number {
-      width: 100%;
-    }
-  }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
   .ant-cascader-menus {
     padding: 5px 0px;
     .ant-cascader-menu:last-child {
diff --git a/src/menu/components/table/edit-table/columns/tableIn/customscript/index.jsx b/src/menu/components/table/edit-table/columns/tableIn/customscript/index.jsx
index 4ab2a62..d0b5dd8 100644
--- a/src/menu/components/table/edit-table/columns/tableIn/customscript/index.jsx
+++ b/src/menu/components/table/edit-table/columns/tableIn/customscript/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Button, notification, Modal, Icon, Tooltip, Radio, Select } from 'antd'
+import { Form, Row, Col, Button, notification, Modal, Tooltip, Radio, Select } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Utils from '@/utils/utils.js'
@@ -279,7 +280,7 @@
           <Col span={8} style={{whiteSpace: 'nowrap'}}>
             <Form.Item style={{marginBottom: 0}} label={
               <Tooltip placement="bottomLeft" title={'鑷畾涔夎剼鏈笌榛樿sql浣嶇疆鍏崇郴銆�'}>
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '5px'}} />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鎵ц浣嶇疆
               </Tooltip>
             }>
diff --git a/src/menu/components/table/edit-table/columns/tableIn/index.scss b/src/menu/components/table/edit-table/columns/tableIn/index.scss
index 6394765..0b2c26b 100644
--- a/src/menu/components/table/edit-table/columns/tableIn/index.scss
+++ b/src/menu/components/table/edit-table/columns/tableIn/index.scss
@@ -9,9 +9,6 @@
     word-wrap: break-word;
     word-break: break-word;
   }
-  .ant-input-number {
-    width: 100%;
-  }
   .count-tip {
     position: absolute;
     top: 0px;
diff --git a/src/menu/components/table/edit-table/index.jsx b/src/menu/components/table/edit-table/index.jsx
index 09982b8..92b66e2 100644
--- a/src/menu/components/table/edit-table/index.jsx
+++ b/src/menu/components/table/edit-table/index.jsx
@@ -201,11 +201,9 @@
   }
 
   addSearch = () => {
-    let card = fromJS(this.state.card).toJS()
+    const { card } = this.state
 
-    card.search.push({uuid: Utils.getuuid(), focus: true, label: 'label', type: 'text', match: '='})
-
-    this.setState({card})
+    MKEmitter.emit('plusSearch', card.uuid, {uuid: Utils.getuuid(), focus: true, label: 'label', type: 'text', match: '='}, 'simple')
   }
 
   addButton = () => {
@@ -309,7 +307,7 @@
 
     return (
       <div className="menu-normal-table-edit-box" style={_style} onClick={this.clickComponent} id={card.uuid}>
-        <NormalHeader defaultshow="hidden" hideSearch="true" config={card} updateComponent={this.updateComponent}/>
+        <NormalHeader hideSearch="true" config={card} updateComponent={this.updateComponent}/>
         <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
           <div className="mk-popover-control">
             <Icon className="plus" title="娣诲姞鍒�" onClick={this.addColumns} type="plus" />
diff --git a/src/menu/components/table/normal-table/columns/editColumn/index.jsx b/src/menu/components/table/normal-table/columns/editColumn/index.jsx
index 921f31e..b360aaa 100644
--- a/src/menu/components/table/normal-table/columns/editColumn/index.jsx
+++ b/src/menu/components/table/normal-table/columns/editColumn/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Form, Row, Col, Input, Select, InputNumber, Radio, Tooltip, Icon, Cascader, Modal } from 'antd'
+import { Form, Row, Col, Input, Select, InputNumber, Radio, Tooltip, Cascader, Modal } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import { getColumnForm } from './formconfig'
 import { formRule } from '@/utils/option.js'
@@ -170,7 +171,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -192,7 +193,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -243,7 +244,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -316,7 +317,7 @@
           <Col span={24} key={index} className="textarea">
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
diff --git a/src/menu/components/table/normal-table/columns/editColumn/index.scss b/src/menu/components/table/normal-table/columns/editColumn/index.scss
index e450762..9885df8 100644
--- a/src/menu/components/table/normal-table/columns/editColumn/index.scss
+++ b/src/menu/components/table/normal-table/columns/editColumn/index.scss
@@ -1,15 +1,5 @@
 .commontable-column-form {
   min-height: 190px;
-  .ant-form-item {
-    .ant-input-number {
-      width: 100%;
-    }
-  }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
   .ant-cascader-menus {
     padding: 5px 0px;
     .ant-cascader-menu:last-child {
diff --git a/src/menu/components/table/normal-table/columns/index.jsx b/src/menu/components/table/normal-table/columns/index.jsx
index 9c87844..7356abf 100644
--- a/src/menu/components/table/normal-table/columns/index.jsx
+++ b/src/menu/components/table/normal-table/columns/index.jsx
@@ -16,6 +16,7 @@
 const EditColumn = asyncIconComponent(() => import('./editColumn'))
 const MarkColumn = asyncIconComponent(() => import('@/menu/components/share/markcomponent'))
 const CardCellComponent = asyncComponent(() => import('@/menu/components/card/cardcellcomponent'))
+const MobPagination = asyncIconComponent(() => import('@/menu/components/share/mobPagination'))
 
 class HeaderCol extends Component {
   deleteCol = () => {
@@ -553,7 +554,7 @@
 
   render() {
     const { config } = this.props
-    const { fields, card, lineMarks, dict, tableId } = this.state
+    const { fields, card, lineMarks, dict, tableId, appType } = this.state
     const components = {
       header: {
         cell: DragableHeaderCol
@@ -592,15 +593,16 @@
             dataSource={this.state.data}
             rowSelection={config.wrap.tableType ? { type: 'radio' } : null}
             columns={columns}
-            pagination={{
+            pagination={appType !== 'mob' ? {
               current: 1,
               pageSize: 10,
               pageSizeOptions: ['10', '25', '50', '100', '500', '1000'],
               showSizeChanger: true,
               total: 58,
               showTotal: (total, range) => `${range[0]}-${range[1]} 鍏� ${total} 鏉
-            }}
+            } : false}
           />
+          {appType === 'mob' && config.setting.laypage !== 'fasle' ? <MobPagination /> : null}
         </DndProvider>
         <EditColumn column={card} dict={dict} fields={fields} submitCol={this.submitCol} cancelCol={this.cancelCol}/>
       </div>
diff --git a/src/menu/components/table/normal-table/index.jsx b/src/menu/components/table/normal-table/index.jsx
index fe363e0..2aaef69 100644
--- a/src/menu/components/table/normal-table/index.jsx
+++ b/src/menu/components/table/normal-table/index.jsx
@@ -41,6 +41,7 @@
 
   UNSAFE_componentWillMount () {
     const { card } = this.props
+    const { appType } = this.state
 
     if (card.isNew) {
       let _card = {
@@ -121,6 +122,11 @@
           _card.wrap.doubleClick = oriUids[_card.wrap.doubleClick] || ''
         }
       }
+
+      if (appType === 'mob') {
+        _card.search = []
+        _card.action = _card.action.filter(a => !a.origin)
+      }
       
       this.setState({
         card: _card
@@ -128,8 +134,13 @@
 
       this.filterOrigin(_card)
     } else {
+      let _card = fromJS(card).toJS()
+      if (appType === 'mob') {
+        _card.search = []
+      }
+
       this.setState({
-        card: fromJS(card).toJS()
+        card: _card
       })
     }
   }
@@ -250,11 +261,9 @@
   }
 
   addSearch = () => {
-    let card = fromJS(this.state.card).toJS()
+    const { card } = this.state
 
-    card.search.push({uuid: Utils.getuuid(), focus: true, label: 'label', type: 'text', match: '='})
-
-    this.setState({card})
+    MKEmitter.emit('plusSearch', card.uuid, {uuid: Utils.getuuid(), focus: true, label: 'label', type: 'text', match: '='}, 'simple')
   }
 
   addButton = () => {
@@ -394,11 +403,16 @@
 
   render() {
     const { card, appType } = this.state
+    let options = ['action', 'search', 'form', 'cols']
     let _style = resetStyle(card.style)
+    
+    if (appType === 'mob') {
+      options = ['action', 'cols']
+    }
 
     return (
       <div className="menu-normal-table-edit-box" style={_style} onClick={this.clickComponent} id={card.uuid}>
-        <NormalHeader defaultshow="hidden" hideSearch="true" config={card} updateComponent={this.updateComponent}/>
+        <NormalHeader hideSearch="true" config={card} updateComponent={this.updateComponent}/>
         <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
           <div className="mk-popover-control">
             <Icon className="plus" title="娣诲姞鍒�" onClick={this.addColumns} type="plus" />
@@ -408,7 +422,7 @@
               <Icon type="edit" style={{color: '#1890ff'}} title="缂栬緫"/>
             </NormalForm>
             <CopyComponent type="normaltable" card={card}/>
-            <PasteComponent config={card} options={['action', 'search', 'form', 'cols']} updateConfig={this.updateComponent} />
+            <PasteComponent config={card} options={options} updateConfig={this.updateComponent} />
             <Icon className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} type="font-colors" />
             <LogComponent btnlog={card.btnlog || []} handlelog={this.handleLog} />
             <UserComponent config={card}/>
diff --git a/src/menu/components/tabs/paste/index.jsx b/src/menu/components/tabs/paste/index.jsx
index 4c5dde6..a18fd27 100644
--- a/src/menu/components/tabs/paste/index.jsx
+++ b/src/menu/components/tabs/paste/index.jsx
@@ -5,7 +5,7 @@
 import MenuUtils from '@/utils/utils-custom.js'
 import MKEmitter from '@/utils/events.js'
 import asyncComponent from '@/utils/asyncComponent'
-import './index.scss'
+// import './index.scss'
 
 const PasteForm = asyncComponent(() => import('@/templates/zshare/pasteform'))
 
@@ -72,7 +72,7 @@
 
   pasteSubmit = () => {
     const { Tab } = this.props
-    let options = ['tabs', 'group', 'datacard', 'propcard', 'balcony', 'normaltable', 'mainsearch', 'stepform', 'tabform', 'tablecard', 'line', 'bar', 'pie', 'dashboard', 'scatter', 'chart']
+    let options = ['tabs', 'group', 'datacard', 'propcard', 'timeline', 'balcony', 'normaltable', 'mainsearch', 'stepform', 'tabform', 'tablecard', 'line', 'bar', 'pie', 'dashboard', 'scatter', 'chart']
     let types = {
       login: '鐧诲綍',
       navbar: '瀵艰埅鏍�',
diff --git a/src/menu/components/tabs/paste/index.scss b/src/menu/components/tabs/paste/index.scss
index 384a820..e69de29 100644
--- a/src/menu/components/tabs/paste/index.scss
+++ b/src/menu/components/tabs/paste/index.scss
@@ -1,4 +0,0 @@
-.menu-config-paste {
-  border-color: #40a9ff;
-  color: #40a9ff;
-}
\ No newline at end of file
diff --git a/src/menu/components/tabs/tabcomponents/card.jsx b/src/menu/components/tabs/tabcomponents/card.jsx
index f33f2cf..27d0a0b 100644
--- a/src/menu/components/tabs/tabcomponents/card.jsx
+++ b/src/menu/components/tabs/tabcomponents/card.jsx
@@ -25,6 +25,7 @@
 const BraftEditor = asyncComponent(() => import('@/menu/components/editor/braft-editor'))
 const CodeSandbox = asyncComponent(() => import('@/menu/components/code/sandbox'))
 const CustomChart = asyncComponent(() => import('@/menu/components/chart/chart-custom'))
+const Timeline = asyncComponent(() => import('@/menu/components/timeline/normal-timeline'))
 
 const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
   const originalIndex = findCard(id).index
@@ -100,6 +101,8 @@
       return (<CodeSandbox card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'balcony') {
       return (<Balcony card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
+    } else if (card.type === 'timeline') {
+      return (<Timeline card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'chart') {
       return (<CustomChart card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     }
diff --git a/src/menu/components/tabs/tabcomponents/index.jsx b/src/menu/components/tabs/tabcomponents/index.jsx
index 5b5538d..bc80a38 100644
--- a/src/menu/components/tabs/tabcomponents/index.jsx
+++ b/src/menu/components/tabs/tabcomponents/index.jsx
@@ -111,6 +111,7 @@
         scatter: '鏁g偣鍥�',
         tree: '鏍戝舰鍒楄〃',
         balcony: '娴姩鍗�',
+        timeline: '鏃堕棿杞�',
         card: '鍗$墖'
       }
       let i = 1
diff --git a/src/menu/components/timeline/normal-timeline/index.jsx b/src/menu/components/timeline/normal-timeline/index.jsx
new file mode 100644
index 0000000..441a556
--- /dev/null
+++ b/src/menu/components/timeline/normal-timeline/index.jsx
@@ -0,0 +1,201 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { is, fromJS } from 'immutable'
+import { Icon, Popover } from 'antd'
+
+import asyncComponent from '@/utils/asyncComponent'
+import asyncIconComponent from '@/utils/asyncIconComponent'
+import { resetStyle } from '@/utils/utils-custom.js'
+import MKEmitter from '@/utils/events.js'
+import Utils from '@/utils/utils.js'
+import getWrapForm from './options'
+import zhCN from '@/locales/zh-CN/model.js'
+import enUS from '@/locales/en-US/model.js'
+import './index.scss'
+
+const SettingComponent = asyncIconComponent(() => import('@/menu/datasource'))
+const NormalForm = asyncIconComponent(() => import('@/components/normalform'))
+const CardSimpleComponent = asyncComponent(() => import('@/menu/components/card/cardsimplecomponent'))
+const CopyComponent = asyncIconComponent(() => import('@/menu/components/share/copycomponent'))
+const UserComponent = asyncIconComponent(() => import('@/menu/components/share/usercomponent'))
+const NormalHeader = asyncComponent(() => import('@/menu/components/share/normalheader'))
+
+class NormalTimelineComponent extends Component {
+  static propTpyes = {
+    card: PropTypes.object,
+    deletecomponent: PropTypes.func,
+    updateConfig: PropTypes.func,
+  }
+
+  state = {
+    dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
+    card: null,
+    back: false
+  }
+
+  UNSAFE_componentWillMount () {
+    const { card } = this.props
+
+    if (card.isNew) {
+      let _card = {
+        uuid: card.uuid,
+        type: card.type,
+        floor: card.floor,
+        tabId: card.tabId || '',
+        parentId: card.parentId || '',
+        format: 'array',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
+        pageable: false,    // 缁勪欢灞炴�� - 鏄惁鍙垎椤�
+        switchable: false,  // 缁勪欢灞炴�� - 鏁版嵁鏄惁鍙垏鎹�
+        dataName: card.dataName || '',
+        width: card.width || 24,
+        name: card.name,
+        subtype: card.subtype,
+        setting: { interType: 'system' },
+        wrap: { title: '', name: card.name, width: card.width || 24, color: '#1890ff', mode: 'left' },
+        style: { marginLeft: '0px', marginRight: '0px', marginTop: '0px', marginBottom: '0px' },
+        subcards: [{
+          uuid: Utils.getuuid(),
+          setting: { width: 24, type: 'simple'},
+          style: {
+            paddingTop: '5px', paddingBottom: '5px', paddingLeft: '15px', paddingRight: '15px',
+          },
+          elements: []
+        }],
+        columns: [],
+        scripts: [],
+      }
+
+      if (card.config) {
+        let config = fromJS(card.config).toJS()
+
+        _card.wrap = config.wrap
+        _card.wrap.name = card.name
+        _card.style = config.style
+
+        _card.subcards = config.subcards.map(scard => {
+          scard.uuid = Utils.getuuid()
+          scard.elements = scard.elements.map(elem => {
+            elem.uuid = Utils.getuuid()
+            return elem
+          })
+          return scard
+        })
+      }
+      this.setState({
+        card: _card
+      })
+      this.props.updateConfig(_card)
+    } else {
+      this.setState({
+        card: fromJS(card).toJS()
+      })
+    }
+  }
+
+  componentDidMount () {
+    MKEmitter.addListener('submitStyle', this.getStyle)
+  }
+
+  shouldComponentUpdate (nextProps, nextState) {
+    return !is(fromJS(this.state), fromJS(nextState))
+  }
+
+  /**
+   * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊锛屾竻闄ゅ揩鎹烽敭璁剧疆
+   */
+  componentWillUnmount () {
+    this.setState = () => {
+      return
+    }
+    MKEmitter.removeListener('submitStyle', this.getStyle)
+  }
+
+  /**
+   * @description 鍗$墖琛屽灞備俊鎭洿鏂帮紙鏁版嵁婧愶紝鏍峰紡绛夛級
+   */
+  updateComponent = (component) => {
+    this.setState({
+      card: component
+    })
+
+    component.width = component.wrap.width
+    component.name = component.wrap.name
+
+    this.props.updateConfig(component)
+  }
+
+  updateCard = (cell) => {
+    let card = fromJS(this.state.card).toJS()
+
+    card.subcards = card.subcards.map(item => {
+      if (item.uuid === cell.uuid) return cell
+      return item
+    })
+
+    this.setState({card})
+
+    this.props.updateConfig(card)
+  }
+
+  changeStyle = () => {
+    const { card } = this.state
+
+    MKEmitter.emit('changeStyle', [card.uuid], ['height', 'background', 'border', 'padding', 'margin', 'shadow'], card.style)
+  }
+
+  getStyle = (comIds, style) => {
+    const { card } = this.state
+
+    if (comIds.length !== 1 || comIds[0] !== card.uuid) return
+
+    let _card = {...card, style}
+
+    this.setState({
+      card: _card
+    })
+    
+    this.props.updateConfig(_card)
+  }
+
+  getWrapForms = () => {
+    const { card } = this.state
+
+    return getWrapForm(card.wrap, card.columns)
+  }
+
+  updateWrap = (res) => {
+    delete res.quick
+    this.updateComponent({...this.state.card, wrap: res})
+  }
+
+  render() {
+    const { card } = this.state
+
+    let _style = resetStyle(card.style)
+
+    return (
+      <div className="menu-timeline-edit-box" style={_style} id={card.uuid}>
+        <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
+          <div className="mk-popover-control">
+            {/* <Icon className="plus" title="娣诲姞鍏冪礌" onClick={this.addElement} type="plus" /> */}
+            {/* <Icon className="plus" title="娣诲姞鎸夐挳" onClick={this.addButton} type="plus-square" /> */}
+            <NormalForm title="鏃堕棿杞磋缃�" width={800} update={this.updateWrap} getForms={this.getWrapForms}>
+              <Icon type="edit" style={{color: '#1890ff'}} title="缂栬緫"/>
+            </NormalForm>
+            <CopyComponent type="timeline" card={card}/>
+            <Icon className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} type="font-colors" />
+            <UserComponent config={card}/>
+            <Icon className="close" title="鍒犻櫎缁勪欢" type="delete" onClick={() => this.props.deletecomponent(card.uuid)} />
+            <SettingComponent config={card} updateConfig={this.updateComponent} />
+          </div>
+        } trigger="hover">
+          <Icon type="tool" />
+        </Popover>
+        <NormalHeader hideSearch="true" config={card} updateComponent={this.updateComponent}/>
+        {card.subcards.map(subcard => (<CardSimpleComponent key={subcard.uuid} cards={card} card={subcard} updateElement={this.updateCard}/>))}
+      </div>
+    )
+  }
+}
+
+export default NormalTimelineComponent
\ No newline at end of file
diff --git a/src/menu/components/timeline/normal-timeline/index.scss b/src/menu/components/timeline/normal-timeline/index.scss
new file mode 100644
index 0000000..3e27678
--- /dev/null
+++ b/src/menu/components/timeline/normal-timeline/index.scss
@@ -0,0 +1,80 @@
+.menu-timeline-edit-box {
+  position: relative;
+  box-sizing: border-box;
+  background: #ffffff;
+  background-position: center center;
+  background-repeat: no-repeat;
+  background-size: cover;
+  min-height: 50px;
+
+  .model-menu-card-cell-list {
+    flex: 1;
+  }
+  .card-control {
+    position: absolute;
+    top: 0px;
+    left: 0px;
+    .anticon-tool {
+      right: auto;
+      left: 1px;
+      padding: 1px;
+    }
+  }
+  .anticon-tool {
+    position: absolute;
+    z-index: 2;
+    font-size: 16px;
+    right: 1px;
+    top: 1px;
+    cursor: pointer;
+    padding: 5px;
+    background: rgba(255, 255, 255, 0.55);
+  }
+
+  .card-item {
+    overflow: hidden;
+    position: relative;
+    background-color: #ffffff;
+    background-position: center center;
+    background-repeat: no-repeat;
+    background-size: cover;
+    min-height: 20px;
+  }
+  
+  .card-item:hover {
+    box-shadow: 0px 0px 2px #1890ff;
+  }
+
+  .model-menu-card-cell-list .card-detail-row > .anticon-plus {
+    position: absolute;
+    right: -30px;
+    font-size: 16px;
+  }
+  .model-menu-action-list {
+    line-height: 40px;
+    .ant-row > .anticon-plus {
+      position: absolute;
+      right: -30px;
+      font-size: 16px;
+    }
+  }
+  .card-add-button {
+    text-align: right;
+    clear: left;
+    .anticon-plus {
+      font-size: 20px;
+      color: #26C281;
+      padding: 5px;
+      margin-right: 10px;
+    }
+  }
+}
+.menu-timeline-edit-box::after {
+  display: block;
+  content: ' ';
+  clear: both;
+}
+.menu-timeline-edit-box:hover {
+  z-index: 1;
+  box-shadow: 0px 0px 4px #1890ff;
+}
diff --git a/src/menu/components/timeline/normal-timeline/options.jsx b/src/menu/components/timeline/normal-timeline/options.jsx
new file mode 100644
index 0000000..b1f0327
--- /dev/null
+++ b/src/menu/components/timeline/normal-timeline/options.jsx
@@ -0,0 +1,118 @@
+/**
+ * @description Wrap琛ㄥ崟閰嶇疆淇℃伅
+ */
+export default function (wrap, columns) {
+  let roleList = sessionStorage.getItem('sysRoles')
+  let appType = sessionStorage.getItem('appType')
+
+  if (roleList) {
+    try {
+      roleList = JSON.parse(roleList)
+    } catch (e) {
+      roleList = []
+    }
+  } else {
+    roleList = []
+  }
+
+  const balconyWrapForm = [
+    {
+      type: 'text',
+      field: 'title',
+      label: '鏍囬',
+      initval: wrap.title || '',
+      required: false
+    },
+    {
+      type: 'text',
+      field: 'name',
+      label: '缁勪欢鍚嶇О',
+      initval: wrap.name || '',
+      tooltip: '鐢ㄤ簬缁勪欢闂寸殑鍖哄垎銆�',
+      required: true
+    },
+    {
+      type: 'number',
+      field: 'width',
+      label: '瀹藉害',
+      initval: wrap.width || 24,
+      tooltip: '鏍呮牸甯冨眬锛屾瘡琛岀瓑鍒嗕负24鍒椼��',
+      min: 1,
+      max: 24,
+      precision: 0,
+      required: true
+    },
+    {
+      type: 'radio',
+      field: 'mode',
+      label: '杞寸嚎浣嶇疆',
+      initval: wrap.mode || 'left',
+      required: false,
+      options: [
+        {value: 'left', label: '宸︿晶'},
+        {value: 'alternate', label: '涓棿'},
+        {value: 'right', label: '鍙充晶'},
+      ]
+    },
+    {
+      type: 'radio',
+      field: 'reverse',
+      label: '鎺掑簭',
+      initval: wrap.reverse || 'false',
+      required: false,
+      options: [
+        {value: 'false', label: '姝e簭'},
+        {value: 'true', label: '鍊掑簭'},
+      ]
+    },
+    {
+      type: 'color',
+      field: 'color',
+      label: '鑺傜偣棰滆壊',
+      initval: wrap.color || '#1890ff',
+      tooltip: '鑺傜偣榛樿棰滆壊銆�',
+      required: false
+    },
+    {
+      type: 'radio',
+      field: 'line',
+      label: '杩炵嚎棰滆壊',
+      initval: wrap.line || '',
+      required: false,
+      options: [
+        {value: '', label: '榛樿'},
+        {value: 'system', label: '绯荤粺鑹�'},
+      ]
+    },
+    {
+      type: 'select',
+      field: 'label',
+      label: '鏍囩',
+      initval: wrap.label || '',
+      tooltip: '鍦ㄥ唴瀹瑰闈㈠崟鐙睍绀恒��',
+      required: false,
+      options: columns,
+      forbid: !appType
+    },
+    {
+      type: 'select',
+      field: 'node',
+      label: '鑺傜偣鎺у埗',
+      initval: wrap.node || '',
+      tooltip: '閫夋嫨鑷畾涔夎妭鐐圭殑鎺у埗瀛楁鍚庯紝鍦ㄨ妭鐐圭粍涓坊鍔犺妭鐐规牱寮忋��',
+      required: false,
+      options: columns
+    },
+    {
+      type: 'multiselect',
+      field: 'blacklist',
+      label: '榛戝悕鍗�',
+      initval: wrap.blacklist || [],
+      required: false,
+      options: roleList,
+      forbid: !!appType
+    },
+  ]
+
+  return balconyWrapForm
+} 
\ No newline at end of file
diff --git a/src/menu/datasource/index.jsx b/src/menu/datasource/index.jsx
index 96d7a6a..42e66df 100644
--- a/src/menu/datasource/index.jsx
+++ b/src/menu/datasource/index.jsx
@@ -203,7 +203,7 @@
             if (item.status === 'false') return
 
             if (/exec\s/ig.test(item.sql)) {
-              maxScript = 100
+              maxScript = 1000
             } else if (item.sql.length > maxScript) {
               maxScript = item.sql.length
             }
diff --git a/src/menu/datasource/verifycard/index.scss b/src/menu/datasource/verifycard/index.scss
index 68433a2..bef6747 100644
--- a/src/menu/datasource/verifycard/index.scss
+++ b/src/menu/datasource/verifycard/index.scss
@@ -33,9 +33,6 @@
       z-index: 2;
     }
     .verify-form {
-      .ant-input-number {
-        width: 100%;
-      }
       .sql {
         .ant-col-sm-8 {
           width: 10.5%;
@@ -67,10 +64,6 @@
       }
       .add {
         padding-top: 4px;
-      }
-      .anticon-question-circle {
-        color: #c49f47;
-        margin-right: 3px;
       }
     }
     .custom-table .ant-empty {
diff --git a/src/menu/datasource/verifycard/settingform/index.jsx b/src/menu/datasource/verifycard/settingform/index.jsx
index e61ed99..4d61040 100644
--- a/src/menu/datasource/verifycard/settingform/index.jsx
+++ b/src/menu/datasource/verifycard/settingform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, Tooltip, Icon, notification, Select, InputNumber, Cascader } from 'antd'
+import { Form, Row, Col, Input, Radio, Tooltip, notification, Select, InputNumber, Cascader } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import { formRule } from '@/utils/option.js'
 import Utils from '@/utils/utils.js'
@@ -230,7 +231,7 @@
             {interType === 'system' ? <Col span={8}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'鑷畾涔夎剼鏈腑鐨勫彉閲忥紙闄ゆ姤閿欏強鍙敤瀛楁澶栵級锛岄渶浠ユ鏍囪瘑寮�澶淬��'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鍙橀噺鏍囪瘑
                 </Tooltip>
               }>
@@ -252,7 +253,7 @@
             {interType === 'inner' ? <Col span={8}>
               <Form.Item label={tooltip ?
                 <Tooltip placement="topLeft" title={tooltip}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鍐呴儴鍑芥暟
                 </Tooltip> : '鍐呴儴鍑芥暟'
               }>
@@ -283,7 +284,7 @@
             </Col> : null}
             {interType === 'outer' ? <Col className="outer-interface" span={24}>
               <Form.Item label={<Tooltip placement="topLeft" title="姝e紡绯荤粺鎺ュ彛鍦板潃锛屼负绌烘椂浣跨敤鎺ュ彛鍦板潃">
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   姝e紡鍦板潃
                 </Tooltip>
               }>
@@ -305,7 +306,7 @@
             {interType === 'system' ? <Col span={24} className="data-source" style={{paddingLeft: '7px'}}>
               <Form.Item labelCol={{xs: { span: 24 }, sm: { span: 2 }}} wrapperCol={ {xs: { span: 24 }, sm: { span: 22 }} } label={
                 <Tooltip placement="topLeft" title={`浣跨敤绯荤粺鍑芥暟鏃讹紝闇�濉啓鏁版嵁婧愩�傛敞锛氭暟鎹潈闄愭浛鎹㈢ $@ -> /* 鎴� ''銆� @$ -> */ 鎴� ''锛涙煡璇㈡浛鎹㈢ $select@ -> /* 鎴� ''銆� @select$ -> */ 鎴� ''锛涚粺璁℃浛鎹㈢ $sum@ -> /* 鎴� ''銆� @sum$ -> */ 鎴� ''銆俙}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鏁版嵁婧�
                 </Tooltip>
               }>
@@ -317,7 +318,7 @@
             {interType === 'system' ? <Col span={8}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'鏌ヨ鏃讹紝鎼滅储鏉′欢浠here鏉′欢鎷兼帴杩涘叆sql锛岀粺璁℃椂锛屽皢鏁版嵁婧愪腑浠モ�淍+鎼滅储瀛楁+@鈥濈殑鍐呭锛屼互鎼滅储鏉′欢涓殑鍊艰繘琛屾浛鎹㈠悗锛屾彁浜ゆ煡璇紝娉細鏌ヨ绫诲瀷浠呭湪浣跨敤绯荤粺鍑芥暟鏃舵湁鏁堛��'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鏌ヨ绫诲瀷
                 </Tooltip>
               }>
@@ -373,7 +374,7 @@
             {!['navbar', 'balcony', 'menubar'].includes(config.type) ? <Col span={8}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'璇ョ粍浠跺鏋滃彈鍏朵粬缁勪欢鎺у埗锛岃閫夐」鐩稿簲鐨勭粍浠讹紝娌℃湁鏃堕�夆�滄棤鈥濄��'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   涓婄骇缁勪欢
                 </Tooltip>
               }>
@@ -405,7 +406,7 @@
             {config.pageable && laypage !== 'false' ? <Col span={8}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title="閫夋嫨鍒嗛〉鏃舵湁鏁堛��">
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   姣忛〉鏁伴噺
                 </Tooltip>
               }>
@@ -424,7 +425,7 @@
             {!['navbar', 'menubar'].includes(config.type) && (!config.pageable || (config.pageable && laypage === 'false')) && (!supModule || supModule.length === 0 || supModule[0] === 'empty') ? <Col span={8}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'鍒濆鍖栧姞杞芥椂锛屾槸鍚︿笌鍏朵粬缁勪欢涓�鍚屽姞杞芥暟鎹紝娉細浠呭湪浣跨敤绯荤粺鍑芥暟锛屼笖鍒濆鍖栧姞杞芥暟鎹椂鏈夋晥锛屽垎椤佃姹傛椂鏃犳晥銆�'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鍚屾鏌ヨ
                 </Tooltip>
               }>
@@ -441,7 +442,7 @@
             {!['navbar', 'balcony', 'menubar'].includes(config.type) ? <Col span={8}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'浼樺厛浣跨敤鍚岀骇鐨勬悳绱㈡潯浠剁粍浠讹紝鍚岀骇鎼滅储涓嶅瓨鍦ㄦ椂锛屼緷娆″悜涓婇�夊彇锛屼笌褰撳墠缁勪欢鐨勬悳绱㈡潯浠朵竴鍚岀敤浣滄暟鎹繃婊わ紙褰撳墠缁勪欢鐨勬悳绱㈡潯浠朵紭鍏堬級銆�'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   澶栭儴鎼滅储
                 </Tooltip>
               }>
@@ -458,7 +459,7 @@
             {!['navbar', 'balcony', 'menubar'].includes(config.type) && useMSearch === 'true' ? <Col span={8}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'澶栧眰鎼滅储鏉′欢鏀瑰彉鏃讹紝鏄惁鍒锋柊褰撳墠缁勪欢鏁版嵁銆�'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鍚屾鍒锋柊
                 </Tooltip>
               }>
diff --git a/src/menu/datasource/verifycard/settingform/index.scss b/src/menu/datasource/verifycard/settingform/index.scss
index d0943f6..fbc8fed 100644
--- a/src/menu/datasource/verifycard/settingform/index.scss
+++ b/src/menu/datasource/verifycard/settingform/index.scss
@@ -13,13 +13,6 @@
         height: 150px;
       }
     }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
-  }
-  .ant-input-number {
-    width: 100%;
   }
   .ant-radio-group {
     white-space: nowrap;
diff --git a/src/menu/menushell/card.jsx b/src/menu/menushell/card.jsx
index 6f30721..83cfc00 100644
--- a/src/menu/menushell/card.jsx
+++ b/src/menu/menushell/card.jsx
@@ -25,6 +25,7 @@
 const BraftEditor = asyncComponent(() => import('@/menu/components/editor/braft-editor'))
 const CodeSandbox = asyncComponent(() => import('@/menu/components/code/sandbox'))
 const CustomChart = asyncComponent(() => import('@/menu/components/chart/chart-custom'))
+const Timeline = asyncComponent(() => import('@/menu/components/timeline/normal-timeline'))
 
 const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
   const originalIndex = findCard(id).index
@@ -60,7 +61,11 @@
   }
 
   const getCardComponent = () => {
-    if (card.type === 'bar' || card.type === 'line') {
+    if (card.type === 'card' && card.subtype === 'datacard') {
+      return (<DataCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
+    } else if (card.type === 'card' && card.subtype === 'propcard') {
+      return (<PropCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
+    } else if (card.type === 'bar' || card.type === 'line') {
       return (<AntvBar card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'search') {
       return (<MainSearch card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
@@ -78,10 +83,6 @@
       return (<TabForm card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'tabs') {
       return (<AntvTabs tabs={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
-    } else if (card.type === 'card' && card.subtype === 'datacard') {
-      return (<DataCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
-    } else if (card.type === 'card' && card.subtype === 'propcard') {
-      return (<PropCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'carousel' && card.subtype === 'datacard') {
       return (<CarouselDataCard card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'carousel' && card.subtype === 'propcard') {
@@ -100,6 +101,8 @@
       return (<CodeSandbox card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'balcony') {
       return (<Balcony card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
+    } else if (card.type === 'timeline') {
+      return (<Timeline card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'chart') {
       return (<CustomChart card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     }
diff --git a/src/menu/menushell/index.jsx b/src/menu/menushell/index.jsx
index 8c1e917..26e58b6 100644
--- a/src/menu/menushell/index.jsx
+++ b/src/menu/menushell/index.jsx
@@ -105,6 +105,7 @@
         scatter: '鏁g偣鍥�',
         tree: '鏍戝舰鍒楄〃',
         balcony: '娴姩鍗�',
+        timeline: '鏃堕棿杞�',
         card: '鍗$墖'
       }
       let i = 1
diff --git a/src/menu/modalconfig/index.jsx b/src/menu/modalconfig/index.jsx
index 4a8f734..c58d00f 100644
--- a/src/menu/modalconfig/index.jsx
+++ b/src/menu/modalconfig/index.jsx
@@ -197,7 +197,7 @@
       standardform,
       visible: true,
       card: card,
-      formlist: getModalForm(card, _inputfields, _tabfields, _linkableFields, _linksupFields, !!this.props.editTab)
+      formlist: getModalForm(card, _inputfields, _tabfields, _linkableFields, _linksupFields)
     })
   }
 
diff --git a/src/menu/modalconfig/index.scss b/src/menu/modalconfig/index.scss
index 19fe376..556a72a 100644
--- a/src/menu/modalconfig/index.scss
+++ b/src/menu/modalconfig/index.scss
@@ -241,7 +241,6 @@
                 margin-top: 4px;
               }
               .ant-input-number {
-                width: 100%;
                 margin-top: 4px;
               }
               .normal-braft-editor {
diff --git a/src/menu/modulesource/option.jsx b/src/menu/modulesource/option.jsx
index 3aa6952..4425e8f 100644
--- a/src/menu/modulesource/option.jsx
+++ b/src/menu/modulesource/option.jsx
@@ -24,6 +24,7 @@
 import scatter from '@/assets/mobimg/scatter.png'
 import chart from '@/assets/mobimg/chart.png'
 import tree from '@/assets/mobimg/tree.png'
+import timeline from '@/assets/mobimg/timeline.png'
 
 // 缁勪欢閰嶇疆淇℃伅
 export const menuOptions = [
@@ -39,6 +40,7 @@
   { type: 'menu', url: NormalTable, component: 'table', subtype: 'normaltable', title: '甯哥敤琛�', width: 24 },
   { type: 'menu', url: NormalTable, component: 'table', subtype: 'editable', title: '琛ㄦ牸锛堝彲缂栬緫锛�', width: 24 },
   { type: 'menu', url: TableCard, component: 'table', subtype: 'tablecard', title: '琛ㄦ牸锛堝崱鐗囷級', width: 12 },
+  { type: 'menu', url: timeline, component: 'timeline', subtype: 'timeline', title: '鏃堕棿杞�', width: 12 },
   { type: 'menu', url: tree, component: 'tree', subtype: 'normaltree', title: '鏍戝舰鍒楄〃', width: 12 },
   { type: 'menu', url: line, component: 'line', subtype: 'line', title: '鎶樼嚎鍥�', width: 24 },
   { type: 'menu', url: line1, component: 'line', subtype: 'line1', title: '闃舵鎶樼嚎鍥�', width: 24 },
diff --git a/src/menu/pastecontroller/index.jsx b/src/menu/pastecontroller/index.jsx
index 1356945..eb105f6 100644
--- a/src/menu/pastecontroller/index.jsx
+++ b/src/menu/pastecontroller/index.jsx
@@ -5,7 +5,7 @@
 import MenuUtils from '@/utils/utils-custom.js'
 import MKEmitter from '@/utils/events.js'
 import asyncComponent from '@/utils/asyncComponent'
-import './index.scss'
+// import './index.scss'
 
 const PasteForm = asyncComponent(() => import('@/templates/zshare/pasteform'))
 
@@ -16,10 +16,6 @@
 
   state = {
     visible: false
-  }
-
-  handleMenuClick = () => {
-    this.setState({visible: true})
   }
 
   resetconfig = (item, copyBtns, uuids = {}) => {
@@ -71,7 +67,7 @@
   }
 
   pasteSubmit = () => {
-    let options = ['tabs', 'menubar', 'topbar', 'datacard', 'propcard', 'mainsearch', 'stepform', 'tabform', 'balcony', 'group', 'normaltable', 'tablecard', 'line', 'bar', 'pie', 'dashboard', 'scatter']
+    let options = ['tabs', 'menubar', 'topbar', 'timeline', 'datacard', 'propcard', 'mainsearch', 'stepform', 'tabform', 'balcony', 'group', 'normaltable', 'tablecard', 'line', 'bar', 'pie', 'dashboard', 'scatter']
 
     this.pasteFormRef.handleConfirm().then(res => {
       if ((res.copyType === 'menubar' || res.copyType === 'topbar') && sessionStorage.getItem('appType') !== 'mob') {
@@ -113,7 +109,7 @@
 
     return (
       <div style={{display: 'inline-block'}}>
-        <Button className="menu-config-paste" icon="snippets" onClick={() => {this.setState({visible: true})}}>绮樿创</Button>
+        <Button style={{borderColor: '#40a9ff', color: '#40a9ff'}} icon="snippets" onClick={() => {this.setState({visible: true})}}>绮樿创</Button>
         <Modal
           title="绮樿创"
           visible={visible}
diff --git a/src/menu/pastecontroller/index.scss b/src/menu/pastecontroller/index.scss
index 384a820..e69de29 100644
--- a/src/menu/pastecontroller/index.scss
+++ b/src/menu/pastecontroller/index.scss
@@ -1,4 +0,0 @@
-.menu-config-paste {
-  border-color: #40a9ff;
-  color: #40a9ff;
-}
\ No newline at end of file
diff --git a/src/menu/popview/menuform/index.jsx b/src/menu/popview/menuform/index.jsx
index e25ccd0..4de1e6f 100644
--- a/src/menu/popview/menuform/index.jsx
+++ b/src/menu/popview/menuform/index.jsx
@@ -1,8 +1,9 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Radio, Icon, Input, Tooltip, InputNumber } from 'antd'
+import { Form, Row, Col, Radio, Input, Tooltip, InputNumber } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
-import './index.scss'
+// import './index.scss'
 
 class CustomMenuForm extends Component {
   static propTpyes = {
@@ -54,7 +55,7 @@
     }
 
     return (
-      <Form {...formItemLayout} className="custom-menu-form">
+      <Form {...formItemLayout}>
         <Row>
         <Col span={24}>
             <Form.Item label={dict['mob.menu'] + dict['mob.name']}>
@@ -85,7 +86,7 @@
           <Col span={24}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="瀵逛簬涓嶇粡甯告�у彉鍔ㄧ殑淇℃伅锛岀紦瀛樻暟鎹湁鍔╀簬鎻愰珮鏌ヨ鏁堢巼銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 缂撳瓨鏁版嵁
               </Tooltip>
             }>
diff --git a/src/menu/popview/menuform/index.scss b/src/menu/popview/menuform/index.scss
index 71a1a33..e69de29 100644
--- a/src/menu/popview/menuform/index.scss
+++ b/src/menu/popview/menuform/index.scss
@@ -1,10 +0,0 @@
-.custom-menu-form {
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
-  .ant-input-number {
-    width: 100%;
-  }
-}
\ No newline at end of file
diff --git a/src/menu/replaceField/settingform/index.jsx b/src/menu/replaceField/settingform/index.jsx
index a5b82e6..ed8d59a 100644
--- a/src/menu/replaceField/settingform/index.jsx
+++ b/src/menu/replaceField/settingform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Tooltip, Icon, Select } from 'antd'
+import { Form, Row, Col, Tooltip, Select } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 // import './index.scss'
 
@@ -45,7 +46,7 @@
           <Col span={20}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鐢ㄤ簬瀛楁鏇挎崲鐨勮〃鍚嶃��">
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '3px'}} />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 琛ㄥ悕
               </Tooltip>
             }>
diff --git a/src/menu/stylecombcontroller/index.scss b/src/menu/stylecombcontroller/index.scss
index c05ed9e..1350691 100644
--- a/src/menu/stylecombcontroller/index.scss
+++ b/src/menu/stylecombcontroller/index.scss
@@ -25,9 +25,6 @@
           display: block;
           clear: both;
         }
-        .ant-input-number {
-          width: 100%;
-        }
         .ant-form-item {
           margin-bottom: 2px;
 
diff --git a/src/menu/stylecontroller/index.scss b/src/menu/stylecontroller/index.scss
index 082735e..43a8e7c 100644
--- a/src/menu/stylecontroller/index.scss
+++ b/src/menu/stylecontroller/index.scss
@@ -25,9 +25,6 @@
           display: block;
           clear: both;
         }
-        .ant-input-number {
-          width: 100%;
-        }
         .mk-source-wrap {
           height: 32px;
           .anticon-paper-clip {
diff --git a/src/menu/sysinterface/settingform/baseform/index.jsx b/src/menu/sysinterface/settingform/baseform/index.jsx
index 8364ae0..ea3b695 100644
--- a/src/menu/sysinterface/settingform/baseform/index.jsx
+++ b/src/menu/sysinterface/settingform/baseform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, Tooltip, Icon } from 'antd'
+import { Form, Row, Col, Input, Radio, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import { formRule } from '@/utils/option.js'
 import './index.scss'
@@ -143,7 +144,7 @@
             {procMode === 'inner' ? <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={funcTooltip}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鍓嶇疆鍑芥暟
                 </Tooltip>
               }>
@@ -179,7 +180,7 @@
             <Col className="data-source" span={24}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title="姝e紡绯荤粺鎵�浣跨敤鐨勭殑鎺ュ彛鍦板潃銆�">
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   姝e紡鍦板潃
                 </Tooltip>
               }>
@@ -208,7 +209,7 @@
             <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'濡傛灉鑷畾涔夋帴鍙d笉鏀寔璺ㄥ煙璇锋眰锛屼細閫氳繃褰撳墠绯荤粺杞彂銆�'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   璺ㄥ煙璇锋眰
                 </Tooltip>
               }>
diff --git a/src/menu/sysinterface/settingform/baseform/index.scss b/src/menu/sysinterface/settingform/baseform/index.scss
index a6d2df7..aeabe5f 100644
--- a/src/menu/sysinterface/settingform/baseform/index.scss
+++ b/src/menu/sysinterface/settingform/baseform/index.scss
@@ -13,10 +13,5 @@
         height: 150px;
       }
     }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
   }
-
 }
\ No newline at end of file
diff --git a/src/menu/sysinterface/settingform/index.scss b/src/menu/sysinterface/settingform/index.scss
index d4d8d9d..4d9d692 100644
--- a/src/menu/sysinterface/settingform/index.scss
+++ b/src/menu/sysinterface/settingform/index.scss
@@ -21,10 +21,6 @@
         width: 83.33333333%;
       }
     }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
     .text-area {
       .CodeMirror {
         height: 150px;
diff --git a/src/menu/urlfieldcomponent/index.jsx b/src/menu/urlfieldcomponent/index.jsx
index ac0aecc..69625a0 100644
--- a/src/menu/urlfieldcomponent/index.jsx
+++ b/src/menu/urlfieldcomponent/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Icon, Modal, Tooltip, notification } from 'antd'
+import { Modal, Tooltip, notification } from 'antd'
+import { QuestionCircleOutlined, PlusOutlined, CloseOutlined } from '@ant-design/icons'
 
 import SettingForm from './settingform'
 import './index.scss'
@@ -98,16 +99,16 @@
       <div className="url-field-component">
         <div className="field-plus">
           <Tooltip placement="topLeft" title="椤甸潰鍙帴鏀剁殑鍙傛暟瀛楁锛屽湪鏌ヨ鏁版嵁婧愭垨鑷畾涔夎剼鏈腑浣跨敤 @瀛楁@ 鎺ユ敹銆�">
-            <Icon type="question-circle" />
+            <QuestionCircleOutlined className="mk-form-tip" />
             url鍙橀噺
           </Tooltip>
-          <Icon type="plus" title="娣诲姞" onClick={() => this.editDataSource()} />
+          <PlusOutlined title="娣诲姞" onClick={() => this.editDataSource()} />
         </div>
         <div>
           {urlFields.map((field, index) => {
             return (
               <div className="field-item" key={index}>
-                <Icon type="close" title="鍒犻櫎" onClick={() => this.deleteField(field)} />
+                <CloseOutlined title="鍒犻櫎" onClick={() => this.deleteField(field)} />
                 {field}
               </div>
             )
diff --git a/src/menu/urlfieldcomponent/index.scss b/src/menu/urlfieldcomponent/index.scss
index 467a30c..0a3a73a 100644
--- a/src/menu/urlfieldcomponent/index.scss
+++ b/src/menu/urlfieldcomponent/index.scss
@@ -7,10 +7,6 @@
       padding: 2px 5px;
       margin-left: 5px;
     }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
   }
   .field-item {
     position: relative;
diff --git a/src/menu/versions/index.jsx b/src/menu/versions/index.jsx
index ab7ae02..da697a0 100644
--- a/src/menu/versions/index.jsx
+++ b/src/menu/versions/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Modal, Button, Icon, notification } from 'antd'
+import { Modal, Button, notification } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -140,7 +141,7 @@
           footer={[]}
           destroyOnClose
         >
-          <div className="header"><Icon type="question-circle"/>鐗堟湰鍒囨崲</div>
+          <div className="header"><QuestionCircleOutlined/>鐗堟湰鍒囨崲</div>
           <div className="detail">璇烽�夋嫨闇�瑕佸垏鎹㈢殑鐗堟湰锛屾垨鐐瑰嚮鍙栨秷鍏抽棴寮圭獥銆�</div>
           <div className="footer">
             <Button key="pre" type="primary" loading={preconfirming} onClick={this.preVersion}>涓婁竴鐗堟湰</Button>
diff --git a/src/mob/components/formdragelement/card.jsx b/src/mob/components/formdragelement/card.jsx
index e7b3a6c..3682448 100644
--- a/src/mob/components/formdragelement/card.jsx
+++ b/src/mob/components/formdragelement/card.jsx
@@ -90,8 +90,9 @@
         <div className="am-list-line">
           <div className="am-input-label">{card.label}</div>
           <div className="am-input-control" style={{textAlign: 'left'}}>
-            {card.fileType !== 'picture-card' ? <Icon type="upload" style={{position: 'absolute', right: '10px', top: '10px'}} /> : null}
-            {card.fileType === 'picture-card' ? <Button style={{width: '100px', marginBottom: '10px', height: '100px', fontSize: '50px', color: '#d9d9d9'}}><Icon type="plus" /></Button> : null}
+            {/* {card.fileType !== 'picture-card' ? <Icon type="upload" style={{position: 'absolute', right: '10px', top: '10px'}} /> : null} */}
+            {/* {card.fileType === 'picture-card' ? <Button style={{width: '100px', marginBottom: '10px', height: '100px', fontSize: '50px', color: '#d9d9d9'}}><Icon type="plus" /></Button> : null} */}
+            <Button style={{width: '100px', marginBottom: '10px', height: '100px', fontSize: '50px', color: '#d9d9d9'}}><Icon type="plus" /></Button>
           </div>
         </div>
       </div>
diff --git a/src/mob/components/navbar/normal-navbar/menusetting/menuform/index.jsx b/src/mob/components/navbar/normal-navbar/menusetting/menuform/index.jsx
index ebc060f..fd4048a 100644
--- a/src/mob/components/navbar/normal-navbar/menusetting/menuform/index.jsx
+++ b/src/mob/components/navbar/normal-navbar/menusetting/menuform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, Tooltip, Icon, Select } from 'antd'
+import { Form, Row, Col, Input, Radio, Tooltip, Select } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import asyncComponent from '@/utils/asyncComponent'
 import './index.scss'
@@ -128,7 +129,7 @@
           <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="缁戝畾鎻愮ず瀛楁鍚庯紝浼氬湪鑿滃崟鍙充笂瑙掓樉绀烘彁绀轰俊鎭�傛敞锛氬湪娣诲姞鍥炬爣鏃舵湁鏁堛��">
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '3px'}}/>
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鎻愮ず
               </Tooltip>
             }>
@@ -196,7 +197,7 @@
           {property === 'linkmenu' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鍏宠仈褰撳墠app涓凡鏈夌殑鑿滃崟銆�">
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '3px'}}/>
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鍏宠仈鑿滃崟
               </Tooltip>
             }>
@@ -216,7 +217,7 @@
           {property === 'menu' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="澶嶅埗鑿滃崟浠呭湪褰撳墠鑿滃崟涓嶅瓨鍦ㄦ椂鏈夋晥銆�">
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '3px'}}/>
+                <QuestionCircleOutlined className="mk-form-tip" />
                 澶嶅埗鑿滃崟
               </Tooltip>
             }>
diff --git a/src/mob/components/tabs/tabcomponents/card.jsx b/src/mob/components/tabs/tabcomponents/card.jsx
index 96b9d8d..2d1ace5 100644
--- a/src/mob/components/tabs/tabcomponents/card.jsx
+++ b/src/mob/components/tabs/tabcomponents/card.jsx
@@ -24,6 +24,7 @@
 const NormalMenuBar = asyncComponent(() => import('@/mob/components/menubar/normal-menubar'))
 const Balcony = asyncComponent(() => import('@/menu/components/card/balcony'))
 const CodeSandbox = asyncComponent(() => import('@/menu/components/code/sandbox'))
+const Timeline = asyncComponent(() => import('@/menu/components/timeline/normal-timeline'))
 
 const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
   const originalIndex = findCard(id).index
@@ -99,6 +100,8 @@
       return (<CodeSandbox card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'balcony') {
       return (<Balcony card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
+    } else if (card.type === 'timeline') {
+      return (<Timeline card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     }
   }
 
diff --git a/src/mob/components/tabs/tabcomponents/index.jsx b/src/mob/components/tabs/tabcomponents/index.jsx
index 986fa11..3ed31ed 100644
--- a/src/mob/components/tabs/tabcomponents/index.jsx
+++ b/src/mob/components/tabs/tabcomponents/index.jsx
@@ -111,6 +111,7 @@
         navbar: '瀵艰埅鏍�',
         menubar: '鑿滃崟鏍�',
         balcony: '娴姩鍗�',
+        timeline: '鏃堕棿杞�',
         login: '鐧诲綍'
       }
       let i = 1
diff --git a/src/mob/mobshell/card.jsx b/src/mob/mobshell/card.jsx
index 4e8c4e1..b9bb62b 100644
--- a/src/mob/mobshell/card.jsx
+++ b/src/mob/mobshell/card.jsx
@@ -26,6 +26,7 @@
 const NormalTopbar = asyncComponent(() => import('@/mob/components/topbar/normal-navbar'))
 const NormalMenuBar = asyncComponent(() => import('@/mob/components/menubar/normal-menubar'))
 const Balcony = asyncComponent(() => import('@/menu/components/card/balcony'))
+const Timeline = asyncComponent(() => import('@/menu/components/timeline/normal-timeline'))
 
 const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
   const originalIndex = findCard(id).index
@@ -122,6 +123,8 @@
       return (<NormalMenuBar card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'balcony') {
       return (<Balcony card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
+    } else if (card.type === 'timeline') {
+      return (<Timeline card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     }
   }
 
diff --git a/src/mob/mobshell/index.jsx b/src/mob/mobshell/index.jsx
index a69679c..f4e149b 100644
--- a/src/mob/mobshell/index.jsx
+++ b/src/mob/mobshell/index.jsx
@@ -131,6 +131,7 @@
         navbar: '瀵艰埅鏍�',
         menubar: '鑿滃崟鏍�',
         balcony: '娴姩鍗�',
+        timeline: '鏃堕棿杞�',
         login: '鐧诲綍'
       }
       let i = 1
diff --git a/src/mob/modalconfig/index.jsx b/src/mob/modalconfig/index.jsx
index 8c0c7ae..8f2b651 100644
--- a/src/mob/modalconfig/index.jsx
+++ b/src/mob/modalconfig/index.jsx
@@ -201,7 +201,7 @@
       standardform,
       visible: true,
       card: card,
-      formlist: getModalForm(card, _inputfields, _tabfields, _linkableFields, _linksupFields, !!this.props.editTab)
+      formlist: getModalForm(card, _inputfields, _tabfields, _linkableFields, _linksupFields)
     })
   }
 
@@ -441,10 +441,8 @@
                   handleForm={this.handleForm}
                   closeForm={this.closeForm}
                 />
-                {config.setting.btnPosition !== 'top' ? <div className="modal-btns">
-                  <Button className="modal-reset" type="default">閲嶇疆</Button>
-                  <Button className="modal-submit" type="primary">{config.setting.btnName || '纭畾'}</Button>
-                </div> : null}
+                {config.setting.btnPosition !== 'top' ? 
+                  <Button className="modal-submit" type="primary">{config.setting.btnName || '纭畾'}</Button> : null}
               </div>
             </div>
           </div>
diff --git a/src/mob/modalconfig/index.scss b/src/mob/modalconfig/index.scss
index 322cbe8..d9c2725 100644
--- a/src/mob/modalconfig/index.scss
+++ b/src/mob/modalconfig/index.scss
@@ -176,26 +176,15 @@
           font-size: 16px;
         }
       }
-      .modal-btns {
-        display: flex;
-        .modal-reset {
-          display: inline-block;
-          height: 50px;
-          width: 30%;
-          font-size: 20px;
-          border-radius: 0;
-          opacity: 0.5;
-          cursor: default;
-        }
-        .modal-submit {
-          display: inline-block;
-          width: 70%;
-          border-radius: 0;
-          opacity: 0.5;
-          cursor: default;
-          font-size: 20px;
-          height: 50px;
-        }
+      .modal-submit {
+        display: block;
+        width: calc(100% - 30px);
+        opacity: 0.5;
+        cursor: default;
+        font-size: 20px;
+        height: 50px;
+        margin: 15px 15px;
+        border-radius: 25px;
       }
 
       .modal-fields-row {
@@ -262,7 +251,6 @@
                 margin-top: 4px;
               }
               .ant-input-number {
-                width: 100%;
                 margin-top: 4px;
               }
               .normal-braft-editor {
diff --git a/src/mob/modalconfig/pastecomponent/index.jsx b/src/mob/modalconfig/pastecomponent/index.jsx
index 03b2200..fea6610 100644
--- a/src/mob/modalconfig/pastecomponent/index.jsx
+++ b/src/mob/modalconfig/pastecomponent/index.jsx
@@ -3,7 +3,7 @@
 import { Button, Modal, notification } from 'antd'
 
 import asyncComponent from '@/utils/asyncComponent'
-import './index.scss'
+// import './index.scss'
 
 const PasteForm = asyncComponent(() => import('@/templates/zshare/pasteform'))
 
diff --git a/src/mob/modulesource/option.jsx b/src/mob/modulesource/option.jsx
index 8788863..9b9efc5 100644
--- a/src/mob/modulesource/option.jsx
+++ b/src/mob/modulesource/option.jsx
@@ -24,6 +24,7 @@
 import NavTop from '@/assets/mobimg/navtop-mob.png'
 import scatter from '@/assets/mobimg/scatter.png'
 import MenuBar from '@/assets/mobimg/menubar.png'
+import timeline from '@/assets/mobimg/timeline.png'
 
 // 缁勪欢閰嶇疆淇℃伅
 export const menuOptions = [
@@ -41,6 +42,7 @@
   { type: 'menu', url: Carousel1, component: 'carousel', subtype: 'propcard', title: '杞挱-闈欐�佹暟鎹�', width: 24 },
   { type: 'menu', url: NormalTable, component: 'table', subtype: 'normaltable', title: '甯哥敤琛�', width: 24 },
   { type: 'menu', url: TableCard, component: 'table', subtype: 'tablecard', title: '琛ㄦ牸锛堝崱鐗囷級', width: 24 },
+  { type: 'menu', url: timeline, component: 'timeline', subtype: 'timeline', title: '鏃堕棿杞�', width: 24 },
   { type: 'menu', url: line, component: 'line', subtype: 'line', title: '鎶樼嚎鍥�', width: 24 },
   { type: 'menu', url: line1, component: 'line', subtype: 'line1', title: '闃舵鎶樼嚎鍥�', width: 24 },
   { type: 'menu', url: bar, component: 'bar', subtype: 'bar', title: '鏌辩姸鍥�', width: 24 },
diff --git a/src/mob/searchconfig/groupform/index.scss b/src/mob/searchconfig/groupform/index.scss
index 9a74987..2b4f0de 100644
--- a/src/mob/searchconfig/groupform/index.scss
+++ b/src/mob/searchconfig/groupform/index.scss
@@ -7,12 +7,4 @@
       width: 83.33333333%;
     }
   }
-  .ant-input-number {
-    width: 100%;
-  }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
 }
\ No newline at end of file
diff --git a/src/mob/searchconfig/index.scss b/src/mob/searchconfig/index.scss
index fac4043..934712f 100644
--- a/src/mob/searchconfig/index.scss
+++ b/src/mob/searchconfig/index.scss
@@ -284,7 +284,6 @@
                 margin-top: 4px;
               }
               .ant-input-number {
-                width: 100%;
                 margin-top: 4px;
               }
               .normal-braft-editor {
diff --git a/src/mob/searchconfig/pastecomponent/index.jsx b/src/mob/searchconfig/pastecomponent/index.jsx
index ed81117..875ecee 100644
--- a/src/mob/searchconfig/pastecomponent/index.jsx
+++ b/src/mob/searchconfig/pastecomponent/index.jsx
@@ -3,7 +3,7 @@
 import { Button, Modal, notification } from 'antd'
 
 import asyncComponent from '@/utils/asyncComponent'
-import './index.scss'
+// import './index.scss'
 
 const PasteForm = asyncComponent(() => import('@/templates/zshare/pasteform'))
 
diff --git a/src/mob/searchconfig/searchdragelement/card.jsx b/src/mob/searchconfig/searchdragelement/card.jsx
index 228865a..388db7c 100644
--- a/src/mob/searchconfig/searchdragelement/card.jsx
+++ b/src/mob/searchconfig/searchdragelement/card.jsx
@@ -80,27 +80,27 @@
         </div>
       </div>
     </div>)
-  } else if (card.type === 'daterange') {
-    let value = '璇烽�夋嫨'
-    if (card.initval === 'week') {
-      value = [moment().startOf('week').format('YYYY-MM-DD'), moment().endOf('week').format('YYYY-MM-DD')].join(' ~ ')
-    } else if (card.initval === 'month') {
-      value = [moment().startOf('month').format('YYYY-MM-DD'), moment().endOf('month').format('YYYY-MM-DD')].join(' ~ ')
-    } else if (card.initval) {
-      try {
-        let _initval = JSON.parse(card.initval)
-        value = [moment().subtract(_initval[0], 'days').format('YYYY-MM-DD'), moment().subtract(_initval[1], 'days').format('YYYY-MM-DD')].join(' ~ ')
-      } catch (e) {
-        value = '璇烽�夋嫨'
-      }
-    }
-    formItem = (<div className="am-list-item">
-      <div className="am-list-line">
-        {card.labelShow !== 'false' ? <div className="am-input-label">{card.label}</div> : null}
-        <div className="am-input-control">{value}</div>
-        <div className="am-list-extra"><Icon type="right" /></div>
-      </div>
-    </div>)
+  // } else if (card.type === 'daterange') {
+  //   let value = '璇烽�夋嫨'
+  //   if (card.initval === 'week') {
+  //     value = [moment().startOf('week').format('YYYY-MM-DD'), moment().endOf('week').format('YYYY-MM-DD')].join(' ~ ')
+  //   } else if (card.initval === 'month') {
+  //     value = [moment().startOf('month').format('YYYY-MM-DD'), moment().endOf('month').format('YYYY-MM-DD')].join(' ~ ')
+  //   } else if (card.initval) {
+  //     try {
+  //       let _initval = JSON.parse(card.initval)
+  //       value = [moment().subtract(_initval[0], 'days').format('YYYY-MM-DD'), moment().subtract(_initval[1], 'days').format('YYYY-MM-DD')].join(' ~ ')
+  //     } catch (e) {
+  //       value = '璇烽�夋嫨'
+  //     }
+  //   }
+  //   formItem = (<div className="am-list-item">
+  //     <div className="am-list-line">
+  //       {card.labelShow !== 'false' ? <div className="am-input-label">{card.label}</div> : null}
+  //       <div className="am-input-control">{value}</div>
+  //       <div className="am-list-extra"><Icon type="right" /></div>
+  //     </div>
+  //   </div>)
   } else if (card.type === 'checkcard') {
     formItem = (<div className="am-list-item check-card">
       <div className="am-list-line">
diff --git a/src/mob/searchconfig/settingform/index.jsx b/src/mob/searchconfig/settingform/index.jsx
index 619d7b3..7f27665 100644
--- a/src/mob/searchconfig/settingform/index.jsx
+++ b/src/mob/searchconfig/settingform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, Select, Tooltip, Icon } from 'antd'
+import { Form, Row, Col, Input, Radio, Select, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import { formRule } from '@/utils/option.js'
 import './index.scss'
 
@@ -86,7 +87,7 @@
           <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="浣跨敤鎼滅储鏍忔椂锛屾爣棰樼敤浜庢悳绱㈡潯浠堕殣钘忔椂鏄剧ず銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鏍囬
               </Tooltip>
             }>
diff --git a/src/mob/searchconfig/settingform/index.scss b/src/mob/searchconfig/settingform/index.scss
index f0d30ef..0bfd8f4 100644
--- a/src/mob/searchconfig/settingform/index.scss
+++ b/src/mob/searchconfig/settingform/index.scss
@@ -7,14 +7,6 @@
       width: 83.33333333%;
     }
   }
-  .ant-input-number {
-    width: 100%;
-  }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
   .ant-col.ant-col-12 {
     display: inline-block;
     float: none;
diff --git a/src/mob/searchconfig/source.jsx b/src/mob/searchconfig/source.jsx
index 9d4684f..449b76f 100644
--- a/src/mob/searchconfig/source.jsx
+++ b/src/mob/searchconfig/source.jsx
@@ -23,11 +23,11 @@
     subType: 'datemonth',
     url: ''
   },
-  {
-    type: 'search',
-    label: '鏃ユ湡锛堝尯闂达級',
-    subType: 'daterange',
-    url: ''
-  },
+  // {
+  //   type: 'search',
+  //   label: '鏃ユ湡锛堝尯闂达級',
+  //   subType: 'daterange',
+  //   url: ''
+  // },
 ]
 
diff --git a/src/pc/components/navbar/normal-navbar/linksetting/linkform/index.jsx b/src/pc/components/navbar/normal-navbar/linksetting/linkform/index.jsx
index 77f1387..41ab933 100644
--- a/src/pc/components/navbar/normal-navbar/linksetting/linkform/index.jsx
+++ b/src/pc/components/navbar/normal-navbar/linksetting/linkform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, Tooltip, Icon, Select } from 'antd'
+import { Form, Row, Col, Input, Radio, Tooltip, Select } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import './index.scss'
 
@@ -138,7 +139,7 @@
           {property === 'linkmenu' ? <Col span={22}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鍏宠仈褰撳墠app涓凡鏈夌殑鑿滃崟銆�">
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '3px'}}/>
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鍏宠仈鑿滃崟
               </Tooltip>
             }>
diff --git a/src/pc/components/navbar/normal-navbar/menusetting/menuform/index.jsx b/src/pc/components/navbar/normal-navbar/menusetting/menuform/index.jsx
index 9e71f6e..39da53f 100644
--- a/src/pc/components/navbar/normal-navbar/menusetting/menuform/index.jsx
+++ b/src/pc/components/navbar/normal-navbar/menusetting/menuform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, Tooltip, Icon, Select } from 'antd'
+import { Form, Row, Col, Input, Radio, Tooltip, Select } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import './index.scss'
 
@@ -165,7 +166,7 @@
           {property === 'linkmenu' ? <Col span={22}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鍏宠仈褰撳墠app涓凡鏈夌殑鑿滃崟銆�">
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '3px'}}/>
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鍏宠仈鑿滃崟
               </Tooltip>
             }>
@@ -185,7 +186,7 @@
           {property === 'menu' ? <Col span={22}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="澶嶅埗鑿滃崟浠呭湪褰撳墠鑿滃崟涓嶅瓨鍦ㄦ椂鏈夋晥銆�">
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '3px'}}/>
+                <QuestionCircleOutlined className="mk-form-tip" />
                 澶嶅埗鑿滃崟
               </Tooltip>
             }>
diff --git a/src/pc/createview/settingform/index.jsx b/src/pc/createview/settingform/index.jsx
index 3598b9e..a8e54c8 100644
--- a/src/pc/createview/settingform/index.jsx
+++ b/src/pc/createview/settingform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Select, Input, Tooltip, Icon } from 'antd'
+import { Form, Row, Col, Select, Input, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import './index.scss'
 
@@ -88,7 +89,7 @@
           <Col span={20}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鑷畾涔夎彍鍗旾D鍊笺��">
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '3px'}}/>
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鑿滃崟ID
               </Tooltip>
             }>
diff --git a/src/pc/menushell/card.jsx b/src/pc/menushell/card.jsx
index 5078340..f30bf5e 100644
--- a/src/pc/menushell/card.jsx
+++ b/src/pc/menushell/card.jsx
@@ -27,6 +27,7 @@
 const CarouselPropCard = asyncComponent(() => import('@/menu/components/carousel/prop-card'))
 const Balcony = asyncComponent(() => import('@/menu/components/card/balcony'))
 const CustomChart = asyncComponent(() => import('@/menu/components/chart/chart-custom'))
+const Timeline = asyncComponent(() => import('@/menu/components/timeline/normal-timeline'))
 
 const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
   const originalIndex = findCard(id).index
@@ -122,6 +123,8 @@
       return (<NormalLogin card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'balcony') {
       return (<Balcony card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
+    } else if (card.type === 'timeline') {
+      return (<Timeline card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'chart') {
       return (<CustomChart card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     }
diff --git a/src/pc/menushell/index.jsx b/src/pc/menushell/index.jsx
index f0b6c0c..33df2ba 100644
--- a/src/pc/menushell/index.jsx
+++ b/src/pc/menushell/index.jsx
@@ -120,6 +120,7 @@
         tree: '鏍戝舰鍒楄〃',
         card: '鍗$墖',
         balcony: '娴姩鍗�',
+        timeline: '鏃堕棿杞�',
         login: '鐧诲綍'
       }
       let i = 1
diff --git a/src/pc/modulesource/option.jsx b/src/pc/modulesource/option.jsx
index a81e981..9214203 100644
--- a/src/pc/modulesource/option.jsx
+++ b/src/pc/modulesource/option.jsx
@@ -26,6 +26,7 @@
 import scatter from '@/assets/mobimg/scatter.png'
 import chart from '@/assets/mobimg/chart.png'
 import tree from '@/assets/mobimg/tree.png'
+import timeline from '@/assets/mobimg/timeline.png'
 
 // 缁勪欢閰嶇疆淇℃伅
 export const menuOptions = [
@@ -42,6 +43,7 @@
   { type: 'menu', url: NormalTable, component: 'table', subtype: 'normaltable', title: '甯哥敤琛�', width: 24 },
   { type: 'menu', url: NormalTable, component: 'table', subtype: 'editable', title: '琛ㄦ牸锛堝彲缂栬緫锛�', width: 24 },
   { type: 'menu', url: TableCard, component: 'table', subtype: 'tablecard', title: '琛ㄦ牸锛堝崱鐗囷級', width: 12 },
+  { type: 'menu', url: timeline, component: 'timeline', subtype: 'timeline', title: '鏃堕棿杞�', width: 12 },
   { type: 'menu', url: tree, component: 'tree', subtype: 'normaltree', title: '鏍戝舰鍒楄〃', width: 12 },
   { type: 'menu', url: line, component: 'line', subtype: 'line', title: '鎶樼嚎鍥�', width: 24 },
   { type: 'menu', url: line1, component: 'line', subtype: 'line1', title: '闃舵鎶樼嚎鍥�', width: 24 },
diff --git a/src/pc/transfer/settingform/index.jsx b/src/pc/transfer/settingform/index.jsx
index 40d2fb0..614887c 100644
--- a/src/pc/transfer/settingform/index.jsx
+++ b/src/pc/transfer/settingform/index.jsx
@@ -2,7 +2,7 @@
 import PropTypes from 'prop-types'
 import { Form, Row, Col, Select } from 'antd'
 
-import './index.scss'
+// import './index.scss'
 
 class SettingForm extends Component {
   static propTpyes = {
diff --git a/src/pc/transfer/settingform/index.scss b/src/pc/transfer/settingform/index.scss
index 159130b..e69de29 100644
--- a/src/pc/transfer/settingform/index.scss
+++ b/src/pc/transfer/settingform/index.scss
@@ -1,11 +0,0 @@
-.model-menu-setting-form {
-  position: relative;
-
-  .anticon-question-circle {
-    color: #c49f47;
-    margin-right: 3px;
-  }
-  .ant-input-number {
-    width: 100%;
-  }
-}
\ No newline at end of file
diff --git a/src/tabviews/commontable/index.jsx b/src/tabviews/commontable/index.jsx
index 070e950..8860f88 100644
--- a/src/tabviews/commontable/index.jsx
+++ b/src/tabviews/commontable/index.jsx
@@ -400,6 +400,7 @@
       }
 
       this.setState({
+        pageSize: config.setting.pageSize || 10,
         loadingview: false,
         absFields,
         autoMatic,
diff --git a/src/tabviews/custom/components/card/balcony/index.jsx b/src/tabviews/custom/components/card/balcony/index.jsx
index d29d901..8f0c7e6 100644
--- a/src/tabviews/custom/components/card/balcony/index.jsx
+++ b/src/tabviews/custom/components/card/balcony/index.jsx
@@ -39,7 +39,7 @@
     let _config = fromJS(this.props.config).toJS()
     let _cols = new Map()
 
-    let _data = {}
+    let _data = { $$empty: true }
     let _sync = false
     
     if (_config.setting && _config.wrap.datatype !== 'static') {
@@ -52,8 +52,6 @@
         }
         _sync = false
       }
-    } else {
-      _data = {}
     }
 
     if (_data) {
@@ -138,7 +136,7 @@
     const { sync, config, BID } = this.state
 
     if (sync && !is(fromJS(this.props.data), fromJS(nextProps.data))) {
-      let _data = {}
+      let _data = {$$empty: true}
       if (nextProps.data && nextProps.data[config.dataName]) {
         _data = nextProps.data[config.dataName]
         if (_data && Array.isArray(_data)) {
@@ -285,12 +283,12 @@
 
     if (config.wrap.datatype === 'static') {
       this.setState({
-        data: {$$BID: BID || '', $$BData: BData},
+        data: {$$BID: BID || '', $$BData: BData, $$empty: true},
       })
       return
     } else if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
       this.setState({
-        data: {$$BID: BID || '', $$BData: BData},
+        data: {$$BID: BID || '', $$BData: BData, $$empty: true},
       })
       return
     }
@@ -308,7 +306,14 @@
 
     let result = await Api.genericInterface(param)
     if (result.status) {
-      let _data = result.data && result.data[0] ? result.data[0] : {}
+      let _data = {}
+
+      if (!result.data || !result.data[0]) {
+        _data.$$empty = true
+      } else {
+        _data = result.data[0]
+      }
+
       _data.$$BID = BID || ''
       _data.$$BData = BData
 
diff --git a/src/tabviews/custom/components/card/cardcellList/index.jsx b/src/tabviews/custom/components/card/cardcellList/index.jsx
index 3c47e00..cfd30dd 100644
--- a/src/tabviews/custom/components/card/cardcellList/index.jsx
+++ b/src/tabviews/custom/components/card/cardcellList/index.jsx
@@ -21,6 +21,7 @@
 const PrintButton = asyncComponent(() => import('@/tabviews/zshare/actionList/printbutton'))
 const BarCode = asyncElementComponent(() => import('@/components/barcode'))
 const QrCode = asyncElementComponent(() => import('@/components/qrcode'))
+const MkProgress = asyncElementComponent(() => import('@/components/mkProgress'))
 const Video = asyncComponent(() => import('@/components/video'))
 const PicRadio = {
   '4:3': '75%', '3:2': '66.67%', '16:9': '56.25%', '2:1': '50%', '3:1': '33.33%', '4:1': '25%',
@@ -414,13 +415,6 @@
       val = val / card.maxValue * 100
       val = parseInt(val * 100) / 100
 
-      let _val = val
-      if (val > 100) {
-        _val = '100%'
-      } else {
-        _val = `${val}%`
-      }
-
       if (card.marks) {
         let _color = this.getColor(card.marks)
         color = _color ? _color : color
@@ -429,13 +423,7 @@
       return (
         <Col key={card.uuid} span={card.width}>
           <div style={card.style}>
-            <div className="ant-mk-slider">
-              <div className="ant-mk-slider-rail"></div>
-              <div className="ant-mk-slider-track" style={{width: _val, backgroundColor: color}}></div>
-              <Tooltip title={`${val}%`}>
-                <div className="ant-mk-slider-handle" style={{left: _val, borderColor: color}}></div>
-              </Tooltip>
-            </div>
+            <MkProgress value={val} config={card} color={color}/>
           </div>
         </Col>
       )
@@ -653,7 +641,7 @@
     } else if (card.eleType === 'button') {
       let _data = [data]
 
-      if (data.$$type === 'extendCard') {
+      if (data.$$type === 'extendCard' || data.$$empty) {
         _data = []
       } else if (card.$sync) {
         _data = this.props.syncData
diff --git a/src/tabviews/custom/components/card/cardcellList/index.scss b/src/tabviews/custom/components/card/cardcellList/index.scss
index a890f89..0a10c7a 100644
--- a/src/tabviews/custom/components/card/cardcellList/index.scss
+++ b/src/tabviews/custom/components/card/cardcellList/index.scss
@@ -135,9 +135,6 @@
       }
     }
   }
-  .ant-slider {
-    margin: 0px;
-  }
   .ant-mk-picture {
     background-size: cover;
     background-position: center center;
diff --git a/src/tabviews/custom/components/card/prop-card/index.jsx b/src/tabviews/custom/components/card/prop-card/index.jsx
index 92d32a2..2e00b88 100644
--- a/src/tabviews/custom/components/card/prop-card/index.jsx
+++ b/src/tabviews/custom/components/card/prop-card/index.jsx
@@ -39,7 +39,7 @@
     let _config = fromJS(this.props.config).toJS()
     let _cols = new Map()
 
-    let _data = {}
+    let _data = { $$empty: true }
     let _sync = false
     
     if (_config.setting && _config.wrap.datatype !== 'static') {
@@ -58,8 +58,6 @@
         }
         _sync = false
       }
-    } else {
-      _data = {}
     }
 
     if (_data) {
@@ -155,7 +153,7 @@
     const { sync, config, BID, BData } = this.state
 
     if (sync && !is(fromJS(this.props.data), fromJS(nextProps.data))) {
-      let _data = {}
+      let _data = { $$empty: true }
       if (nextProps.data && nextProps.data[config.dataName]) {
         _data = nextProps.data[config.dataName]
         if (_data && Array.isArray(_data)) {
@@ -286,12 +284,12 @@
 
     if (config.wrap.datatype === 'static') {
       this.setState({
-        data: {$$BID: BID || '', $$BData: BData},
+        data: {$$BID: BID || '', $$BData: BData, $$empty: true},
       })
       return
     } else if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
       this.setState({
-        data: {$$BID: BID || '', $$BData: BData},
+        data: {$$BID: BID || '', $$BData: BData, $$empty: true},
       })
       return
     }
@@ -314,7 +312,14 @@
 
     let result = await Api.genericInterface(param)
     if (result.status) {
-      let _data = result.data && result.data[0] ? result.data[0] : {}
+      let _data = {}
+
+      if (!result.data || !result.data[0]) {
+        _data.$$empty = true
+      } else {
+        _data = result.data[0]
+      }
+
       _data.$$BID = BID || ''
       _data.$$BData = BData
 
diff --git a/src/tabviews/custom/components/carousel/prop-card/index.jsx b/src/tabviews/custom/components/carousel/prop-card/index.jsx
index a9622b8..4004576 100644
--- a/src/tabviews/custom/components/carousel/prop-card/index.jsx
+++ b/src/tabviews/custom/components/carousel/prop-card/index.jsx
@@ -34,7 +34,7 @@
     let _config = fromJS(this.props.config).toJS()
     let _cols = new Map()
 
-    let _data = {}
+    let _data = {$$empty: true}
     let _sync = false
     
     if (_config.setting && _config.wrap.datatype !== 'static') {
@@ -53,8 +53,6 @@
         }
         _sync = false
       }
-    } else {
-      _data = {}
     }
 
     if (_data) {
@@ -121,7 +119,7 @@
     const { sync, config, BID, BData } = this.state
 
     if (sync && !is(fromJS(this.props.data), fromJS(nextProps.data))) {
-      let _data = {}
+      let _data = {$$empty: true}
       if (nextProps.data && nextProps.data[config.dataName]) {
         _data = nextProps.data[config.dataName]
         if (_data && Array.isArray(_data)) {
@@ -192,12 +190,12 @@
 
     if (config.wrap.datatype === 'static') {
       this.setState({
-        data: {$$BID: BID || '', $$BData: BData}
+        data: {$$BID: BID || '', $$BData: BData, $$empty: true}
       })
       return
     } else if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
       this.setState({
-        data: {$$BID: BID || '', $$BData: BData}
+        data: {$$BID: BID || '', $$BData: BData, $$empty: true}
       })
       return
     }
@@ -218,7 +216,14 @@
 
     let result = await Api.genericInterface(param)
     if (result.status) {
-      let _data = result.data && result.data[0] ? result.data[0] : {}
+      let _data = {}
+
+      if (!result.data || !result.data[0]) {
+        _data.$$empty = true
+      } else {
+        _data = result.data[0]
+      }
+
       _data.$$BID = BID || ''
       _data.$$BData = BData || ''
 
diff --git a/src/tabviews/custom/components/share/normalTable/index.jsx b/src/tabviews/custom/components/share/normalTable/index.jsx
index c80e3d2..cadff9e 100644
--- a/src/tabviews/custom/components/share/normalTable/index.jsx
+++ b/src/tabviews/custom/components/share/normalTable/index.jsx
@@ -432,7 +432,8 @@
     activeIndex: null,    // 鏍囪褰撳墠閫変腑琛�
     rowspans: null,       // 琛屽悎骞跺瓧娈典俊鎭�
     pickup: false,        // 鏀惰捣鏈�夋嫨椤�
-    orderfields: {}       // 鎺掑簭id涓巉ield杞崲
+    orderfields: {},      // 鎺掑簭id涓巉ield杞崲
+    pageOptions: []
   }
 
   UNSAFE_componentWillMount () {
@@ -519,7 +520,17 @@
       document.getElementsByTagName('head')[0].appendChild(ele)
     }
 
+    let size = (setting.pageSize || 10) + ''
+    let pageOptions = ['10', '25', '50', '100', '500', '1000']
+
+    if (!pageOptions.includes(size)) {
+      pageOptions.push(size)
+      pageOptions = pageOptions.sort((a, b) => a - b)
+    }
+
     this.setState({
+      pageSize: setting.pageSize || 10,
+      pageOptions,
       columns: _columns,
       rowspans,
       tableId,
@@ -845,7 +856,7 @@
 
   render() {
     const { setting, statFValue, lineMarks, data } = this.props
-    const { selectedRowKeys, activeIndex, pickup, tableId } = this.state
+    const { selectedRowKeys, activeIndex, pickup, tableId, pageOptions } = this.state
 
     // 璁剧疆琛ㄦ牸閫夋嫨灞炴�э細鍗曢�夈�佸閫夈�佷笉鍙��
     let rowSelection = null
@@ -878,7 +889,7 @@
       _pagination = {
         current: this.state.pageIndex,
         pageSize: this.state.pageSize,
-        pageSizeOptions: ['10', '25', '50', '100', '500', '1000'],
+        pageSizeOptions: pageOptions,
         showSizeChanger: true,
         total: this.props.total || 0,
         showTotal: (total, range) => `${range[0]}-${range[1]} ${this.state.dict['main.pagination.of']} ${total} ${this.state.dict['main.pagination.items']}`
diff --git a/src/tabviews/custom/components/table/edit-table/index.jsx b/src/tabviews/custom/components/table/edit-table/index.jsx
index 0402567..f21e91a 100644
--- a/src/tabviews/custom/components/table/edit-table/index.jsx
+++ b/src/tabviews/custom/components/table/edit-table/index.jsx
@@ -108,6 +108,7 @@
     }
 
     this.setState({
+      pageSize: setting.pageSize || 10,
       BID: BID || '',
       BData: BData || '',
       title: _config.wrap.title,
diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
index a391160..19a7ed6 100644
--- a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
+++ b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
@@ -456,7 +456,8 @@
     pickup: false,        // 鏀惰捣鏈�夋嫨椤�
     orderfields: {},      // 鎺掑簭id涓巉ield杞崲
     loading: false,
-    editable: 'false'
+    editable: 'false',
+    pageOptions: []
   }
 
   UNSAFE_componentWillMount () {
@@ -541,7 +542,17 @@
       document.getElementsByTagName('head')[0].appendChild(ele)
     }
 
+    let size = (setting.pageSize || 10) + ''
+    let pageOptions = ['10', '25', '50', '100', '500', '1000']
+
+    if (!pageOptions.includes(size)) {
+      pageOptions.push(size)
+      pageOptions = pageOptions.sort((a, b) => a - b)
+    }
+
     this.setState({
+      pageSize: setting.pageSize || 10,
+      pageOptions,
       data,
       columns: _columns,
       edColumns,
@@ -1033,7 +1044,7 @@
 
   render() {
     const { setting, statFValue, lineMarks, submit } = this.props
-    const { pickup, tableId, data, edData, columns, edColumns, loading } = this.state
+    const { pickup, tableId, data, edData, columns, edColumns, loading, pageOptions } = this.state
 
     const components = {
       body: {
@@ -1057,7 +1068,7 @@
       _pagination = {
         current: this.state.pageIndex,
         pageSize: this.state.pageSize,
-        pageSizeOptions: ['10', '25', '50', '100', '500', '1000'],
+        pageSizeOptions: pageOptions,
         showSizeChanger: true,
         total: this.props.total || 0,
         showTotal: (total, range) => `${range[0]}-${range[1]} ${this.state.dict['main.pagination.of']} ${total} ${this.state.dict['main.pagination.items']}`
diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/index.scss b/src/tabviews/custom/components/table/edit-table/normalTable/index.scss
index b31fa58..ee3ebc1 100644
--- a/src/tabviews/custom/components/table/edit-table/normalTable/index.scss
+++ b/src/tabviews/custom/components/table/edit-table/normalTable/index.scss
@@ -157,7 +157,6 @@
   }
   .ant-input-number {
     border: none;
-    width: 100%;
     box-shadow: none!important;
     height: auto;
     .ant-input-number-handler-wrap {
diff --git a/src/tabviews/custom/components/table/normal-table/index.jsx b/src/tabviews/custom/components/table/normal-table/index.jsx
index 3426437..dd7f4d0 100644
--- a/src/tabviews/custom/components/table/normal-table/index.jsx
+++ b/src/tabviews/custom/components/table/normal-table/index.jsx
@@ -124,6 +124,7 @@
     }
 
     this.setState({
+      pageSize: setting.pageSize || 10,
       BID: BID || '',
       BData: BData || '',
       title: _config.wrap.title,
diff --git a/src/tabviews/custom/components/timeline/normal-timeline/index.jsx b/src/tabviews/custom/components/timeline/normal-timeline/index.jsx
new file mode 100644
index 0000000..750a4a9
--- /dev/null
+++ b/src/tabviews/custom/components/timeline/normal-timeline/index.jsx
@@ -0,0 +1,329 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { is, fromJS } from 'immutable'
+import { Spin, notification, Timeline, Empty, Icon } from 'antd'
+
+import Api from '@/api'
+// import Utils from '@/utils/utils.js'
+import asyncComponent from '@/utils/asyncComponent'
+import UtilsDM from '@/utils/utils-datamanage.js'
+import MKEmitter from '@/utils/events.js'
+import './index.scss'
+
+const CardCellComponent = asyncComponent(() => import('@/tabviews/custom/components/card/cardcellList'))
+const NormalHeader = asyncComponent(() => import('@/tabviews/custom/components/share/normalheader'))
+
+class NormalTimeline extends Component {
+  static propTpyes = {
+    BID: PropTypes.any,              // 鐖剁骇Id
+    data: PropTypes.array,           // 缁熶竴鏌ヨ鏁版嵁
+    config: PropTypes.object,        // 缁勪欢閰嶇疆淇℃伅
+    mainSearch: PropTypes.any,       // 澶栧眰鎼滅储鏉′欢
+    menuType: PropTypes.any,         // 鑿滃崟绫诲瀷
+  }
+
+  state = {
+    BID: '',                   // 涓婄骇ID
+    config: null,              // 鍥捐〃閰嶇疆淇℃伅
+    loading: false,            // 鏁版嵁鍔犺浇鐘舵��
+    sync: false,               // 鏄惁缁熶竴璇锋眰鏁版嵁
+    data: null,                // 鏁版嵁
+    BData: '',
+    card: null
+  }
+
+  /**
+   * @description 鍒濆鍖栧鐞�
+   * 1銆� initdata 涓烘墦鍗版椂浣跨敤鐨勬暟鎹泦
+   */
+  UNSAFE_componentWillMount () {
+    const { data, initdata, BID, BData } = this.props
+    let _config = fromJS(this.props.config).toJS()
+    let _cols = new Map()
+
+    let _data = null
+    let card = null
+    let _sync = _config.setting.sync === 'true'
+
+    if (_config.setting.sync === 'true' && data) {
+      _data = data[_config.dataName] || []
+      _sync = false
+    } else if (_config.setting.sync === 'true' && initdata) {
+      _data = initdata || []
+      _sync = false
+    }
+
+    if (_data) {
+      _data = _data.map((item, index) => {
+        item.key = index
+        item.$$uuid = item[_config.setting.primaryKey] || ''
+        item.$$BID = BID || ''
+        item.$Index = index + 1 + ''
+        return item
+      })
+    }
+
+    _config.search = []
+    _config.wrap.contentHeight = _config.wrap.title ? 'calc(100% - 45px)' : '100%'
+
+    _config.columns.forEach(item => {
+      _cols.set(item.field, item)
+    })
+
+    card = _config.subcards[0]
+    card.elements = card.elements.map(item => {
+      if (item.field && _cols.has(item.field)) {
+        item.col = _cols.get(item.field)
+      }
+      return item
+    })
+
+    this.setState({
+      card,
+      sync: _sync,
+      BID: BID || '',
+      BData: BData || '',
+      data: _data,
+      config: _config,
+      arr_field: _config.columns.map(col => col.field).join(','),
+    }, () => {
+      if (_config.setting.sync !== 'true' && _config.setting.onload === 'true') {
+        this.loadData()
+      }
+    })
+  }
+
+  componentDidMount () {
+    MKEmitter.addListener('reloadData', this.reloadData)
+    MKEmitter.addListener('resetSelectLine', this.resetParentParam)
+    MKEmitter.addListener('queryModuleParam', this.queryModuleParam)
+    MKEmitter.addListener('refreshByButtonResult', this.refreshByButtonResult)
+  }
+
+  shouldComponentUpdate (nextProps, nextState) {
+    return !is(fromJS(this.state), fromJS(nextState))
+  }
+
+  componentWillUnmount () {
+    this.setState = () => {
+      return
+    }
+    MKEmitter.removeListener('reloadData', this.reloadData)
+    MKEmitter.removeListener('resetSelectLine', this.resetParentParam)
+    MKEmitter.removeListener('queryModuleParam', this.queryModuleParam)
+    MKEmitter.removeListener('refreshByButtonResult', this.refreshByButtonResult)
+  }
+
+  /**
+   * @description 鍥捐〃鏁版嵁鏇存柊锛屽埛鏂板唴瀹�
+   */
+  UNSAFE_componentWillReceiveProps (nextProps) {
+    const { sync, config, BID, BData } = this.state
+
+    if (sync && !is(fromJS(this.props.data), fromJS(nextProps.data))) {
+      let _data = []
+      if (nextProps.data && nextProps.data[config.dataName]) {
+        _data = nextProps.data[config.dataName] || []
+      }
+
+      _data = _data.map((item, index) => {
+        item.key = index
+        item.$$uuid = item[config.setting.primaryKey] || ''
+        item.$$BID = BID || ''
+        item.$$BData = BData || ''
+        item.$Index = index + 1 + ''
+        return item
+      })
+
+      this.setState({sync: false, data: _data})
+    } else if (config.setting.syncRefresh && nextProps.mainSearch && !is(fromJS(this.props.mainSearch), fromJS(nextProps.mainSearch))) {
+      this.setState({}, () => {
+        this.loadData()
+      })
+    }
+  }
+
+  /**
+   * @description 鎸夐挳鎵ц瀹屾垚鍚庨〉闈㈠埛鏂�
+   * @param {*} menuId     // 鑿滃崟Id
+   * @param {*} position   // 鍒锋柊浣嶇疆
+   * @param {*} btn        // 鎵ц鐨勬寜閽�
+   */
+  refreshByButtonResult = (menuId, position, btn) => {
+    const { config, BID } = this.state
+
+    if (config.uuid !== menuId) return
+
+    this.loadData(btn)                                                         // 鏁版嵁鍒锋柊
+
+    if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) {
+      MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
+    }
+
+    if (position === 'mainline' && config.setting.supModule) {                 // 涓昏〃琛屽埛鏂�
+      MKEmitter.emit('reloadData', config.setting.supModule, (BID || 'empty'))
+    } else if (position === 'popclose') {                                      // 鏍囩鍏抽棴鍒锋柊
+      config.setting.supModule && MKEmitter.emit('reloadData', config.setting.supModule, (BID || 'empty'))
+      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
+    }
+  }
+
+  resetParentParam = (MenuID, id, data) => {
+    const { config } = this.state
+
+    if (!config.setting.supModule || config.setting.supModule !== MenuID) return
+    if (id !== this.state.BID || id !== '') {
+      this.setState({ BID: id, BData: data }, () => {
+        this.loadData()
+      })
+    }
+  }
+
+  reloadData = (menuId) => {
+    const { config } = this.state
+
+    if (config.uuid !== menuId) return
+
+    this.loadData()
+  }
+
+   /**
+   * @description 瀵煎嚭Excel鏃讹紝鑾峰彇椤甸潰鎼滅储鎺掑簭绛夊弬鏁�
+   */
+  queryModuleParam = (menuId, btnId) => {
+    const { mainSearch } = this.props
+    const { arr_field, config } = this.state
+
+    if (config.uuid !== menuId) return
+
+    let searches = []
+    if (config.setting.useMSearch && mainSearch && mainSearch.length > 0) { // 涓昏〃鎼滅储鏉′欢
+      let keys = searches.map(item => item.key.toLowerCase())
+      mainSearch.forEach(item => {
+        if (!keys.includes(item.key.toLowerCase())) {
+          searches.push(item)
+        }
+      })
+    }
+
+    MKEmitter.emit('returnModuleParam', config.uuid, btnId, {
+      arr_field: arr_field,
+      orderBy: config.setting.order || '',
+      search: searches,
+      menuName: config.name
+    })
+  }
+
+  async loadData () {
+    const { mainSearch, menuType } = this.props
+    const { config, arr_field, BID, BData } = this.state
+
+    if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
+      this.setState({
+        data: [],
+      })
+      return
+    }
+
+    let searches = []
+    if (config.setting.useMSearch && mainSearch && mainSearch.length > 0) { // 涓昏〃鎼滅储鏉′欢
+      let keys = searches.map(item => item.key)
+      mainSearch.forEach(item => {
+        if (!keys.includes(item.key)) {
+          searches.push(item)
+        }
+      })
+    }
+
+    let requireFields = searches.filter(item => item.required && item.value === '')
+    if (requireFields.length > 0) {
+      return
+    }
+
+    this.setState({
+      loading: true
+    })
+
+    let _orderBy = config.setting.order || ''
+    let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, 1, config.setting.pageSize, BID, menuType)
+
+    let result = await Api.genericInterface(param)
+    if (result.status) {
+      this.setState({
+        data: result.data.map((item, index) => {
+          item.key = index
+          item.$$uuid = item[config.setting.primaryKey] || ''
+          item.$$BID = BID || ''
+          item.$$BData = BData || ''
+          item.$Index = index + 1 + ''
+          return item
+        }),
+        loading: false
+      })
+    } else {
+      this.setState({
+        loading: false
+      })
+      notification.error({
+        top: 92,
+        message: result.message,
+        duration: 10
+      })
+    }
+  }
+
+  getnodes = (data) => {
+    const { config, card } = this.state
+
+    // let label = '' // antd3.0 涓嶆敮鎸�
+    // if (config.wrap.label) {
+    //   label = data[config.wrap.label] || ''
+    // }
+    let color = config.wrap.color
+    let dot = ''
+    if (config.wrap.node && card.nodes && card.nodes.length > 0) {
+      let sign = data[config.wrap.node]
+      card.nodes.some(item => {
+        if (sign === item.sign) {
+          color = item.color
+
+          if (item.icon) {
+            dot = <Icon type={item.icon} style={{color}}/>
+          }
+          return true
+        }
+        return false
+      })
+    }
+
+    return (<Timeline.Item key={data.$Index} color={color} dot={dot}>
+      <div className="card-item-box" style={card.style}>
+        <CardCellComponent data={data} cards={config} cardCell={card} elements={card.elements}/>
+      </div>
+    </Timeline.Item>)
+  }
+
+  render() {
+    const { config, loading, data } = this.state
+
+    return (
+      <div className="normal-timeline-box" style={{...config.style}}>
+        {loading ?
+          <div className="loading-mask">
+            {data ? <div className="ant-spin-blur"></div> : null}
+            <Spin />
+          </div> : null
+        }
+        <NormalHeader config={config} />
+        {data && data.length > 0 ? <Timeline mode={config.wrap.mode} reverse={config.wrap.reverse === 'true'} className={'card-row-list ' + (config.wrap.line || '')} style={{height: config.wrap.contentHeight}}>
+          {data.map(item => this.getnodes(item))}
+        </Timeline> : null}
+        {data && data.length === 0 ? <div className="card-row-list" style={{height: config.wrap.contentHeight}}>
+          <Empty description={false}/>
+        </div> : null}
+      </div>
+    )
+  }
+}
+
+export default NormalTimeline
\ No newline at end of file
diff --git a/src/tabviews/custom/components/timeline/normal-timeline/index.scss b/src/tabviews/custom/components/timeline/normal-timeline/index.scss
new file mode 100644
index 0000000..13333b6
--- /dev/null
+++ b/src/tabviews/custom/components/timeline/normal-timeline/index.scss
@@ -0,0 +1,103 @@
+.normal-timeline-box {
+  background: #ffffff;
+  background-position: center center;
+  background-repeat: no-repeat;
+  background-size: cover;
+  min-height: 100px;
+  position: relative;
+  overflow-y: hidden;
+
+  > .table-header {
+    height: 45px;
+    // border-bottom: 1px solid #e8e8e8;
+    overflow: hidden;
+
+    .table-title {
+      // font-size: 16px;
+      float: left;
+      line-height: 45px;
+      margin-left: 10px;
+      text-decoration: inherit;
+      font-weight: inherit;
+      font-style: inherit;
+    }
+  }
+  >.ant-pagination {
+    margin-top: 10px;
+    float: right;
+  }
+
+  .card-row-list::after {
+    content: ' ';
+    display: block;
+    clear: both;
+  }
+
+  .ant-timeline-item-head-custom {
+    .anticon {
+      font-size: 16px;
+    }
+  }
+
+  .card-row-list {
+    overflow-y: auto;
+    padding: 20px;
+    .card-item-box {
+      text-align: left;
+      overflow: hidden;
+      background-color: #ffffff;
+      transition: all 0.3s;
+    }
+    >.active >.card-item-box {
+      border-color: #1890ff!important;
+      box-shadow: 0 0 3px #1890ff;
+    }
+  }
+  .card-row-list::-webkit-scrollbar {
+    width: 7px;
+  }
+  .card-row-list::-webkit-scrollbar-thumb {
+    border-radius: 5px;
+    box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.13);
+    background: rgba(0, 0, 0, 0.13);
+  }
+  .card-row-list::-webkit-scrollbar-track {
+    box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05);
+    border-radius: 3px;
+    border: 1px solid rgba(0, 0, 0, 0.07);
+    background: rgba(0, 0, 0, 0);
+  }
+
+  .card-item-box {
+    background-position: center center;
+    background-repeat: no-repeat;
+    background-size: cover;
+  }
+
+  .loading-mask {
+    position: absolute;
+    left: 40px;
+    top: 0;
+    right: 40px;
+    bottom: 0px;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    text-align: justify;
+    z-index: 1;
+
+    .ant-spin-blur {
+      position: absolute;
+      width: 100%;
+      height: 100%;
+      opacity: 0.5;
+      background: #ffffff;
+    }
+  }
+}
+
+.normal-timeline-box::after {
+  content: ' ';
+  display: block;
+  clear: both;
+}
diff --git a/src/tabviews/custom/index.jsx b/src/tabviews/custom/index.jsx
index 420caa2..d4bc44a 100644
--- a/src/tabviews/custom/index.jsx
+++ b/src/tabviews/custom/index.jsx
@@ -39,6 +39,7 @@
 const SettingComponent = asyncComponent(() => import('@/tabviews/zshare/settingcomponent'))
 const PagemsgComponent = asyncComponent(() => import('@/tabviews/zshare/pageMessage'))
 const CustomChart = asyncComponent(() => import('./components/chart/custom-chart'))
+const TimeLine = asyncComponent(() => import('./components/timeline/normal-timeline'))
 
 class CustomPage extends Component {
   static propTpyes = {
@@ -70,7 +71,7 @@
    * @description 鑾峰彇椤甸潰閰嶇疆淇℃伅
    */
   async loadconfig () {
-    const { permAction, permMenus, param } = this.props
+    const { permAction, param } = this.props
 
     let _param = {
       func: 'sPC_Get_LongParam',
@@ -135,7 +136,7 @@
       let roleId = sessionStorage.getItem('role_id') || '' // 瑙掕壊ID
       let balMap = new Map()
       let skip = config.permission === 'false' || this.props.menuType === 'HS'
-      config.components = this.filterComponent(config.components, roleId, permAction, permMenus, balMap, skip)
+      config.components = this.filterComponent(config.components, roleId, permAction, balMap, skip)
       
       // 鑾峰彇涓绘悳绱㈡潯浠�
       let mainSearch = []
@@ -448,7 +449,7 @@
     })
   }
 
-  filterComponent = (components, roleId, permAction, permMenus, balMap, skip) => {
+  filterComponent = (components, roleId, permAction, balMap, skip) => {
     return components.filter(item => {
       
       if (item.style && item.style.boxShadow) {
@@ -479,7 +480,7 @@
         })
 
         item.subtabs = item.subtabs.map(tab => {
-          tab.components = this.filterComponent(tab.components, roleId, permAction, permMenus, balMap, skip)
+          tab.components = this.filterComponent(tab.components, roleId, permAction, balMap, skip)
           return tab
         })
 
@@ -502,7 +503,7 @@
           return false
         }
 
-        item.components = this.filterComponent(item.components, roleId, permAction, permMenus, balMap, skip)
+        item.components = this.filterComponent(item.components, roleId, permAction, balMap, skip)
       } else if (['pie', 'bar', 'line', 'dashboard', 'scatter', 'chart'].includes(item.type)) {
         if (
           item.plot.blacklist && item.plot.blacklist.length > 0 &&
@@ -555,7 +556,7 @@
       
             if (col.linkmenu && col.linkmenu.length > 0) {
               let menu_id = col.linkmenu.pop()
-              col.linkThdMenu = permMenus.filter(m => m.MenuID === menu_id)[0] || ''
+              col.linkThdMenu = this.props.permMenus.filter(m => m.MenuID === menu_id)[0] || ''
             } else {
               col.linkThdMenu = ''
             }
@@ -676,7 +677,7 @@
 
           return cell.eleType !== 'button' || skip || permAction[cell.uuid]
         })
-      } else if ((item.type === 'table' && item.subtype === 'tablecard') || item.type === 'carousel') {
+      } else if ((item.type === 'table' && item.subtype === 'tablecard') || item.type === 'carousel' || item.type === 'timeline') {
         item.subcards && item.subcards.forEach(card => {
           let _hasheight = card.style.height && card.style.height !== 'auto'
           card.elements = card.elements.filter(cell => {
@@ -1091,6 +1092,12 @@
             <Balcony config={item} data={data} BID={_bid} menuType={menuType} />
           </Col>
         )
+      } else if (item.type === 'timeline') {
+        return (
+          <Col span={item.width} key={item.uuid}>
+            <TimeLine config={item} data={data} BID={_bid} menuType={menuType} />
+          </Col>
+        )
       } else if (item.type === 'carousel' && item.subtype === 'datacard') {
         return (
           <Col span={item.width} key={item.uuid}>
diff --git a/src/tabviews/formtab/formgroup/index.scss b/src/tabviews/formtab/formgroup/index.scss
index bb8c383..1d63657 100644
--- a/src/tabviews/formtab/formgroup/index.scss
+++ b/src/tabviews/formtab/formgroup/index.scss
@@ -21,9 +21,6 @@
       width: 89.5%;
     }
   }
-  .ant-input-number {
-    width: 100%;
-  }
   .ant-form-explain {
     overflow:hidden;
     text-overflow:ellipsis;
diff --git a/src/tabviews/home/defaulthome/index.jsx b/src/tabviews/home/defaulthome/index.jsx
index fc95665..77f61be 100644
--- a/src/tabviews/home/defaulthome/index.jsx
+++ b/src/tabviews/home/defaulthome/index.jsx
@@ -1,6 +1,6 @@
 import React, {Component} from 'react'
 import { Chart } from '@antv/g2'
-import { Icon, Tabs, Slider } from 'antd'
+import { Icon, Tabs, Progress } from 'antd'
 import './index.scss'
 
 const { TabPane } = Tabs
@@ -120,9 +120,8 @@
                     </div>
                   </div>
                   <div className="antd-chart-content">
-                    <div className="antd-content-fixed orange">
-                      <Slider defaultValue={67} tipFormatter={null} />
-                      <div className="mask"></div>
+                    <div className="antd-content-fixed">
+                      <Progress percent={67} showInfo={false} strokeColor="orange"/>
                     </div>
                   </div>
                   <div className="antd-chart-footer">
@@ -158,8 +157,7 @@
                   </div>
                   <div className="antd-chart-content">
                     <div className="antd-content-fixed primary">
-                      <Slider defaultValue={77} tipFormatter={null} />
-                      <div className="mask"></div>
+                      <Progress percent={77} showInfo={false} strokeColor="#1890ff"/>
                     </div>
                   </div>
                   <div className="antd-chart-footer">
@@ -195,8 +193,7 @@
                   </div>
                   <div className="antd-chart-content">
                     <div className="antd-content-fixed">
-                      <Slider defaultValue={87} tipFormatter={null} />
-                      <div className="mask"></div>
+                      <Progress percent={87} showInfo={false} strokeColor="#13C2C2"/>
                     </div>
                   </div>
                   <div className="antd-chart-footer">
diff --git a/src/tabviews/home/defaulthome/index.scss b/src/tabviews/home/defaulthome/index.scss
index db64534..794aadc 100644
--- a/src/tabviews/home/defaulthome/index.scss
+++ b/src/tabviews/home/defaulthome/index.scss
@@ -91,43 +91,6 @@
                     color: #52c41a;
                   }
                 }
-                .mask {
-                  position: absolute;
-                  top: 0px;
-                  left: 0px;
-                  right: 0px;
-                  bottom: 0px;
-                  z-index: 1;
-                }
-              }
-              .ant-slider {
-                margin: 14px 0px 10px;
-              }
-              .ant-slider-track {
-                height: 7px;
-                background-color: #13C2C2;
-              }
-              .ant-slider-handle {
-                border-color: #13C2C2;
-              }
-              .orange {
-                .ant-slider-track {
-                  background-color: orange;
-                }
-                .ant-slider-handle {
-                  border-color: lightsalmon;
-                }
-              }
-              .primary {
-                .ant-slider-track {
-                  background-color: #1890ff;
-                }
-                .ant-slider-handle {
-                  border-color: #91d5ff;
-                }
-              }
-              .ant-slider-rail {
-                height: 7px;
               }
             }
             .antd-chart-footer {
diff --git a/src/tabviews/subtable/index.jsx b/src/tabviews/subtable/index.jsx
index 3a843c5..d14a6c6 100644
--- a/src/tabviews/subtable/index.jsx
+++ b/src/tabviews/subtable/index.jsx
@@ -321,6 +321,7 @@
       }
 
       this.setState({
+        pageSize: config.setting.pageSize || 10,
         BID: BID || '',
         BData: BData || '',
         loadingview: false,
diff --git a/src/tabviews/subtabtable/index.jsx b/src/tabviews/subtabtable/index.jsx
index 42a3497..68ab680 100644
--- a/src/tabviews/subtabtable/index.jsx
+++ b/src/tabviews/subtabtable/index.jsx
@@ -284,6 +284,7 @@
       }
 
       this.setState({
+        pageSize: config.setting.pageSize || 10,
         loadingview: false,
         config,
         absFields,
diff --git a/src/tabviews/tabmanage/mutilform/index.scss b/src/tabviews/tabmanage/mutilform/index.scss
index 59c912c..f0d1e6e 100644
--- a/src/tabviews/tabmanage/mutilform/index.scss
+++ b/src/tabviews/tabmanage/mutilform/index.scss
@@ -21,9 +21,6 @@
       width: 89.5%;
     }
   }
-  .ant-input-number {
-    width: 100%;
-  }
   .ant-form-explain {
     overflow:hidden;
     text-overflow:ellipsis;
diff --git a/src/tabviews/zshare/actionList/changeuserbutton/index.jsx b/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
index c418c51..7c67f00 100644
--- a/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
@@ -7,7 +7,7 @@
 import zhCN from '@/locales/zh-CN/main.js'
 import enUS from '@/locales/en-US/main.js'
 import MKEmitter from '@/utils/events.js'
-import './index.scss'
+// import './index.scss'
 
 const { confirm } = Modal
 
diff --git a/src/tabviews/zshare/actionList/excelInbutton/index.jsx b/src/tabviews/zshare/actionList/excelInbutton/index.jsx
index 3d91349..5d69148 100644
--- a/src/tabviews/zshare/actionList/excelInbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/excelInbutton/index.jsx
@@ -12,7 +12,7 @@
 import zhCN from '@/locales/zh-CN/main.js'
 import enUS from '@/locales/en-US/main.js'
 import MKEmitter from '@/utils/events.js'
-import './index.scss'
+// import './index.scss'
 
 class ExcelInButton extends Component {
   static propTpyes = {
diff --git a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
index c60f0a0..f97310b 100644
--- a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
@@ -12,7 +12,7 @@
 import zhCN from '@/locales/zh-CN/main.js'
 import enUS from '@/locales/en-US/main.js'
 import MKEmitter from '@/utils/events.js'
-import './index.scss'
+// import './index.scss'
 
 class ExcelOutButton extends Component {
   static propTpyes = {
diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx
index 5a6deb4..b811fe8 100644
--- a/src/tabviews/zshare/actionList/normalbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -13,7 +13,7 @@
 import asyncSpinComponent from '@/utils/asyncSpinComponent'
 import { updateForm } from '@/utils/utils-update.js'
 import MKEmitter from '@/utils/events.js'
-import './index.scss'
+// import './index.scss'
 
 const MutilForm = asyncSpinComponent(() => import('@/tabviews/zshare/mutilform'))
 const { confirm } = Modal
@@ -680,7 +680,18 @@
   }
 
   execRealSubmit = (data, _resolve, formdata) => {
-    const { setting, btn } = this.props
+    const { setting, btn, Tab, BID } = this.props
+
+    if (((Tab && Tab.supMenu) || setting.supModule) && !BID) {
+      notification.warning({
+        top: 92,
+        message: '闇�瑕佷笂绾т富閿�硷紒',
+        duration: 5
+      })
+      _resolve()
+      return
+    }
+
     if (btn.intertype === 'system' || btn.intertype === 'inner') { // 绯荤粺鎺ュ彛
       let params = []
 
@@ -1934,7 +1945,7 @@
         {this.getModels()}
       </div>
     } else if (show && show.indexOf('plus') > -1) {
-      return <div className="mk-btn-wrap">
+      return <div style={{display: 'inline-block'}}>
         <Button
           type="link"
           loading={loading}
diff --git a/src/tabviews/zshare/actionList/normalbutton/index.scss b/src/tabviews/zshare/actionList/normalbutton/index.scss
index c96ba33..e69de29 100644
--- a/src/tabviews/zshare/actionList/normalbutton/index.scss
+++ b/src/tabviews/zshare/actionList/normalbutton/index.scss
@@ -1,3 +0,0 @@
-.mk-btn-wrap {
-  display: inline-block;
-}
\ No newline at end of file
diff --git a/src/tabviews/zshare/actionList/printbutton/index.jsx b/src/tabviews/zshare/actionList/printbutton/index.jsx
index 2c0f0f3..1c76c94 100644
--- a/src/tabviews/zshare/actionList/printbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/printbutton/index.jsx
@@ -13,7 +13,7 @@
 import asyncSpinComponent from '@/utils/asyncSpinComponent'
 import { updateForm } from '@/utils/utils-update.js'
 import MKEmitter from '@/utils/events.js'
-import './index.scss'
+// import './index.scss'
 
 const MutilForm = asyncSpinComponent(() => import('@/tabviews/zshare/mutilform'))
 const { confirm } = Modal
diff --git a/src/tabviews/zshare/actionList/tabbutton/index.jsx b/src/tabviews/zshare/actionList/tabbutton/index.jsx
index 1c02362..18ecef1 100644
--- a/src/tabviews/zshare/actionList/tabbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/tabbutton/index.jsx
@@ -7,7 +7,7 @@
 import zhCN from '@/locales/zh-CN/main.js'
 import enUS from '@/locales/en-US/main.js'
 import MKEmitter from '@/utils/events.js'
-import './index.scss'
+// import './index.scss'
 
 class TabButton extends Component {
   static propTpyes = {
diff --git a/src/tabviews/zshare/cardcomponent/index.scss b/src/tabviews/zshare/cardcomponent/index.scss
index 05af64d..6d5b2b8 100644
--- a/src/tabviews/zshare/cardcomponent/index.scss
+++ b/src/tabviews/zshare/cardcomponent/index.scss
@@ -88,7 +88,7 @@
       right: 0;
       bottom: 0;
 
-      .mk-btn-wrap {
+      div {
         width: 100%;
         height: 100%;
         .ant-btn {
@@ -101,10 +101,8 @@
       }
     }
     .mk-card-insert:hover {
-      .mk-btn-wrap {
-        .ant-btn {
-          color: #1890ff;
-        }
+      .ant-btn {
+        color: #1890ff;
       }
     }
   }
diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx
index 373b36e..73a64e4 100644
--- a/src/tabviews/zshare/mutilform/index.jsx
+++ b/src/tabviews/zshare/mutilform/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
-import { Form, Row, Col, notification, Tooltip, Icon } from 'antd'
+import { Form, Row, Col, notification, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -674,7 +675,7 @@
       } else {
         let content = null
         let className = ''
-        let label = item.tooltip ? <Tooltip placement="topLeft" title={item.tooltip}><Icon type="question-circle" />{item.label}</Tooltip> : item.label
+        let label = item.tooltip ? <Tooltip placement="topLeft" title={item.tooltip}><QuestionCircleOutlined style={{color: '#c49f47', marginRight: '3px'}}/>{item.label}</Tooltip> : item.label
       
         if (item.type === 'text' || item.type === 'linkMain') {
           content = (<MKInput config={item} onChange={(val, defer) => !defer && this.recordChange({[item.field]: val})} onSubmit={this.props.inputSubmit} />)
diff --git a/src/tabviews/zshare/mutilform/index.scss b/src/tabviews/zshare/mutilform/index.scss
index d492dbb..537c050 100644
--- a/src/tabviews/zshare/mutilform/index.scss
+++ b/src/tabviews/zshare/mutilform/index.scss
@@ -8,10 +8,6 @@
     padding-left: 1.2%!important;
     padding-right: 1.2%!important;
   }
-  .ant-form-item-label .anticon-question-circle {
-    color: #c49f47;
-    margin-right: 3px;
-  }
   .ant-checkbox-group {
     line-height: unset;
     .ant-checkbox-wrapper {
@@ -80,9 +76,6 @@
         width: 7.5%;
       }
     }
-  }
-  .ant-input-number {
-    width: 100%;
   }
   .ant-form-explain {
     overflow:hidden;
diff --git a/src/tabviews/zshare/normalTable/index.jsx b/src/tabviews/zshare/normalTable/index.jsx
index 2db7a13..339d1f3 100644
--- a/src/tabviews/zshare/normalTable/index.jsx
+++ b/src/tabviews/zshare/normalTable/index.jsx
@@ -55,7 +55,8 @@
     columns: null,        // 鏄剧ず鍒�
     lineMarks: null,      // 琛屾爣璁�
     activeIndex: null,    // 鏍囪褰撳墠閫変腑琛�
-    rowspans: null        // 琛屽悎骞跺瓧娈典俊鎭�
+    rowspans: null,       // 琛屽悎骞跺瓧娈典俊鎭�
+    pageOptions: []
   }
 
   UNSAFE_componentWillMount () {
@@ -221,8 +222,17 @@
         rowspans = null
       }
     }
+
+    let size = (setting.pageSize || 10) + ''
+    let pageOptions = ['10', '25', '50', '100', '500', '1000']
+
+    if (!pageOptions.includes(size)) {
+      pageOptions.push(size)
+      pageOptions = pageOptions.sort((a, b) => a - b)
+    }
     
     this.setState({
+      pageOptions,
       columns: _columns,
       pageSize: pageSize ? pageSize : 10,
       lineMarks,
@@ -1156,7 +1166,7 @@
 
   render() {
     const { setting, pickup, statFValue } = this.props
-    const { selectedRowKeys, lineMarks, activeIndex } = this.state
+    const { selectedRowKeys, lineMarks, activeIndex, pageOptions } = this.state
 
     let components = {
       body: {}
@@ -1205,7 +1215,7 @@
       _pagination = {
         current: this.state.pageIndex,
         pageSize: this.state.pageSize,
-        pageSizeOptions: ['10', '25', '50', '100', '500', '1000'],
+        pageSizeOptions: pageOptions,
         showSizeChanger: true,
         total: this.props.total || 0,
         showTotal: (total, range) => `${range[0]}-${range[1]} ${this.props.dict['main.pagination.of']} ${total} ${this.props.dict['main.pagination.items']}`
diff --git a/src/templates/calendarconfig/calcomponent/calendarform/index.jsx b/src/templates/calendarconfig/calcomponent/calendarform/index.jsx
index 5a25c6a..6ee2fa0 100644
--- a/src/templates/calendarconfig/calcomponent/calendarform/index.jsx
+++ b/src/templates/calendarconfig/calcomponent/calendarform/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Select, Checkbox, Tooltip, Icon, Radio } from 'antd'
-import './index.scss'
+import { Form, Row, Col, Select, Checkbox, Tooltip, Radio } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
+// import './index.scss'
 
 class MainTab extends Component {
   static propTpyes = {
@@ -37,7 +38,7 @@
       }
     }
     return (
-      <Form {...formItemLayout} className="model-calendar-form">
+      <Form {...formItemLayout}>
         <Row gutter={24}>
           <Col span={24}>
             <Form.Item label={'寮�濮嬫椂闂�'}>
@@ -133,7 +134,7 @@
           <Col span={24}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="寮�鍚悗锛屼娇鐢ㄧ郴缁熷嚱鏁版椂浼氳嚜鍔ㄦ浛鎹㈡暟鎹簮鍙婅嚜瀹氫箟鑴氭湰涓殑calendarDate涓巆alendarDate1锛屽叾鍊煎垎鍒负閫夋嫨骞翠唤鐨勫紑濮嬪拰缁撴潫鏃堕棿锛屼娇鐢ㄨ嚜瀹氫箟鍑芥暟鏃讹紝浼氬鍔燾alendarDate浼犲弬锛屽叾鍊间负閫夋嫨骞翠唤銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鏁版嵁鍒锋柊
               </Tooltip>
             }>
diff --git a/src/templates/calendarconfig/calcomponent/calendarform/index.scss b/src/templates/calendarconfig/calcomponent/calendarform/index.scss
index 1d2e501..e69de29 100644
--- a/src/templates/calendarconfig/calcomponent/calendarform/index.scss
+++ b/src/templates/calendarconfig/calcomponent/calendarform/index.scss
@@ -1,7 +0,0 @@
-.model-calendar-form {
-  min-height: 180px;
-  .anticon-question-circle {
-    color: #c49f47;
-    margin-right: 3px;
-  }
-}
\ No newline at end of file
diff --git a/src/templates/calendarconfig/index.scss b/src/templates/calendarconfig/index.scss
index cdffc0f..dcfe8d0 100644
--- a/src/templates/calendarconfig/index.scss
+++ b/src/templates/calendarconfig/index.scss
@@ -85,10 +85,6 @@
         }
       }
     }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
     .config-button {
       min-width: 65px;
     }
diff --git a/src/templates/calendarconfig/source.jsx b/src/templates/calendarconfig/source.jsx
index 9ed369e..1fdbb8e 100644
--- a/src/templates/calendarconfig/source.jsx
+++ b/src/templates/calendarconfig/source.jsx
@@ -48,7 +48,6 @@
         options: [],
         orderType: 'asc',
         match: 'like',
-        display: 'dropdown'
       }, {
         origin: true,
         uuid: Utils.getuuid(),
@@ -61,7 +60,6 @@
         options: [],
         orderType: 'asc',
         match: 'equal',
-        display: 'dropdown'
       }, {
         origin: true,
         uuid: Utils.getuuid(),
@@ -74,7 +72,6 @@
         options: [],
         orderType: 'asc',
         match: 'greater',
-        display: 'dropdown'
       }
     ]
   }
diff --git a/src/templates/calendarconfig/tabcomponent/index.jsx b/src/templates/calendarconfig/tabcomponent/index.jsx
index 68ee2df..42ad0cf 100644
--- a/src/templates/calendarconfig/tabcomponent/index.jsx
+++ b/src/templates/calendarconfig/tabcomponent/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Icon, Modal } from 'antd'
+import { Modal } from 'antd'
+import { EditOutlined, CloseOutlined, PlusOutlined } from '@ant-design/icons'
 
 import zhCN from '@/locales/zh-CN/model.js'
 import enUS from '@/locales/en-US/model.js'
@@ -88,15 +89,15 @@
       <div className="model-calendar-tab">
         {config.tab ? <div className="tab-control">
           <span onDoubleClick={this.props.setSubConfig}>{config.tab.label}</span>
-          <Icon type="edit" onClick={this.handleTab} />
-          <Icon type="close" onClick={this.closeTab} />
-        </div> : <Icon title="娣诲姞鏍囩" type="plus" onClick={this.handleTab} />}
+          <EditOutlined onClick={this.handleTab} />
+          <CloseOutlined onClick={this.closeTab} />
+        </div> : <PlusOutlined title="娣诲姞鏍囩" onClick={this.handleTab} />}
         {/* 璁剧疆鍏ㄥ眬閰嶇疆鍙婂垪琛ㄦ暟鎹簮 */}
         <Modal
           wrapClassName="model-calendar-tab-modal"
           title={dict['model.edit']}
           visible={visible}
-          width={900}
+          width={700}
           maskClosable={false}
           onCancel={() => { this.setState({ visible: false })}}
           onOk={this.tabSave}
diff --git a/src/templates/calendarconfig/tabcomponent/index.scss b/src/templates/calendarconfig/tabcomponent/index.scss
index 7658ec6..9bb7caf 100644
--- a/src/templates/calendarconfig/tabcomponent/index.scss
+++ b/src/templates/calendarconfig/tabcomponent/index.scss
@@ -16,7 +16,7 @@
     left: 0px;
     top: 0px;
 
-    span {
+    span:not(.anticon) {
       display: inline-block;
       white-space: nowrap;
       font-size: 16px;
diff --git a/src/templates/calendarconfig/tabcomponent/tabform/index.jsx b/src/templates/calendarconfig/tabcomponent/tabform/index.jsx
index a02f6a5..b91c74c 100644
--- a/src/templates/calendarconfig/tabcomponent/tabform/index.jsx
+++ b/src/templates/calendarconfig/tabcomponent/tabform/index.jsx
@@ -1,6 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Select, Icon, Tooltip, Radio, InputNumber } from 'antd'
+import { Form, Row, Col, Input, Select, Tooltip, Radio } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
+
 import { formRule } from '@/utils/option.js'
 import Utils from '@/utils/utils.js'
 import './index.scss'
@@ -22,8 +24,6 @@
    */
   UNSAFE_componentWillMount () {
     const { formlist } = this.props
-
-    // let type = formlist.filter(cell => cell.key === 'type')[0].initVal
 
     let _tabs = this.props.tabs.filter(tab => tab.type === 'SubTable')
 
@@ -104,7 +104,7 @@
             <Form.Item label={
               item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -122,28 +122,6 @@
                   ...rules
                 ]
               })(<Input placeholder="" autoComplete="off" disabled={item.readonly} onPressEnter={this.handleSubmit} />)}
-            </Form.Item>
-          </Col>
-        )
-      } else if (item.type === 'number') {
-        fields.push(
-          <Col span={24} key={index}>
-            <Form.Item label={
-              item.tooltip ?
-              <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
-                {item.label}
-              </Tooltip> : item.label
-            }>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal,
-                rules: [
-                  {
-                    required: !!item.required,
-                    message: this.props.dict['form.required.input'] + item.label + '!'
-                  }
-                ]
-              })(<InputNumber disabled={item.readonly} min={item.min} max={item.max} precision={0} />)}
             </Form.Item>
           </Col>
         )
@@ -167,34 +145,8 @@
                 >
                   {item.options.map((option, i) =>
                     <Select.Option id={'mk' + i} title={option.text} key={'mk' + i} value={option.value}>
-                      {item.key === 'icon' && i !== 0 ? <Icon type={option.text} /> : option.text}
+                      {option.text}
                     </Select.Option>
-                  )}
-                </Select>
-              )}
-            </Form.Item>
-          </Col>
-        )
-      } else if (item.type === 'mutilselect') {
-        fields.push(
-          <Col span={24} key={index}>
-            <Form.Item label={
-              item.tooltip ?
-              <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
-                {item.label}
-              </Tooltip> : item.label
-            }>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal
-              })(
-                <Select
-                  mode="multiple"
-                  style={{ width: '100%' }}
-                  placeholder=""
-                >
-                  {item.options.map((option, index) =>
-                    <Select.Option id={option.uuid} title={option.label} key={index} value={option.uuid}>{option.label}</Select.Option>
                   )}
                 </Select>
               )}
@@ -206,7 +158,7 @@
           <Col span={24} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -269,7 +221,7 @@
       }
     }
     return (
-      <Form {...formItemLayout} className="model-tab-form">
+      <Form {...formItemLayout} style={{minHeight: '180px'}}>
         <Row gutter={24}>{this.getFields()}</Row>
       </Form>
     )
diff --git a/src/templates/calendarconfig/tabcomponent/tabform/index.scss b/src/templates/calendarconfig/tabcomponent/tabform/index.scss
index d9327f1..e69de29 100644
--- a/src/templates/calendarconfig/tabcomponent/tabform/index.scss
+++ b/src/templates/calendarconfig/tabcomponent/tabform/index.scss
@@ -1,16 +0,0 @@
-.model-tab-form {
-  min-height: 180px;
-  .anticon-question-circle {
-    color: #c49f47;
-    margin-right: 3px;
-  }
-  .ant-input-number {
-    width: 100%;
-    .ant-input-number-input:read-only {
-      color: red;
-      :hover {
-        border-color: #d9d9d9;
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/src/templates/comtableconfig/index.jsx b/src/templates/comtableconfig/index.jsx
index 037c3d6..7ae69ce 100644
--- a/src/templates/comtableconfig/index.jsx
+++ b/src/templates/comtableconfig/index.jsx
@@ -4,7 +4,8 @@
 import { is, fromJS } from 'immutable'
 import { DndProvider } from 'react-dnd'
 import HTML5Backend from 'react-dnd-html5-backend'
-import { Button, Card, Modal, Collapse, notification, Spin, Icon, Switch, Tooltip, Col } from 'antd'
+import { Button, Card, Modal, Collapse, notification, Spin, Switch, Tooltip, Col } from 'antd'
+import { QuestionCircleOutlined, RedoOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -1199,7 +1200,7 @@
                   {confActions.length > 0 ?
                     <p className="config-btn-title">
                       <Tooltip placement="topLeft" title="鐐瑰嚮鎸夐挳锛屽彲瀹屾垚鎴栨煡鐪嬫寜閽厤缃俊鎭��">
-                        <Icon type="question-circle" />
+                        <QuestionCircleOutlined className="mk-form-tip"/>
                       </Tooltip>
                       {this.state.dict['header.menu.action.configurable']}
                     </p> : null
@@ -1233,7 +1234,7 @@
                 {configTabs.length > 0 ?
                   <p className="config-btn-title">
                     <Tooltip placement="topLeft" title="鐐瑰嚮鎸夐挳锛屽彲瀹屾垚鎴栨煡鐪嬫爣绛鹃厤缃俊鎭��">
-                      <Icon type="question-circle" />
+                      <QuestionCircleOutlined className="mk-form-tip"/>
                     </Tooltip>
                     {this.state.dict['header.menu.tab.configurable']}
                   </p> : null
@@ -1257,7 +1258,7 @@
             <Card title={
               <div>
                 {this.state.dict['header.menu.page.configurable']} 
-                <Icon type="redo" style={{marginLeft: '10px'}} title="鍒锋柊鏍囩鍒楄〃" onClick={() => this.reloadTab(true)} />
+                <RedoOutlined style={{marginLeft: '10px'}} title="鍒锋柊鏍囩鍒楄〃" onClick={() => this.reloadTab(true)} />
               </div>
             } bordered={false} extra={
               <div>
diff --git a/src/templates/comtableconfig/index.scss b/src/templates/comtableconfig/index.scss
index a3e3eba..70828ad 100644
--- a/src/templates/comtableconfig/index.scss
+++ b/src/templates/comtableconfig/index.scss
@@ -105,10 +105,6 @@
         }
       }
     }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
     .config-button {
       min-width: 65px;
     }
diff --git a/src/templates/comtableconfig/source.jsx b/src/templates/comtableconfig/source.jsx
index 6743863..07b053a 100644
--- a/src/templates/comtableconfig/source.jsx
+++ b/src/templates/comtableconfig/source.jsx
@@ -40,7 +40,6 @@
         options: [],
         orderType: 'asc',
         match: 'like',
-        display: 'dropdown'
       }, {
         origin: true,
         uuid: Utils.getuuid(),
@@ -53,7 +52,6 @@
         options: [],
         orderType: 'asc',
         match: 'equal',
-        display: 'dropdown'
       }, {
         origin: true,
         uuid: Utils.getuuid(),
@@ -66,7 +64,6 @@
         options: [],
         orderType: 'asc',
         match: 'greater',
-        display: 'dropdown'
       }
     ],
     action: [
diff --git a/src/templates/formtabconfig/actionform/index.jsx b/src/templates/formtabconfig/actionform/index.jsx
index 6fd1b18..11f8243 100644
--- a/src/templates/formtabconfig/actionform/index.jsx
+++ b/src/templates/formtabconfig/actionform/index.jsx
@@ -1,6 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { Form, Row, Col, Input, Select, Icon, Radio, notification, Tooltip, InputNumber } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
+
 import { btnIcons, btnClasses, formRule } from '@/utils/option.js'
 // import Utils from '@/utils/utils.js'
 import './index.scss'
@@ -21,9 +23,6 @@
     openType: null,  // 鎵撳紑鏂瑰紡
     interType: null, // 鎺ュ彛绫诲瀷锛氬唴閮ㄣ�佸閮�
     insertUpdateOptions: [{
-      value: '',
-      text: this.props.dict['model.empty']
-    }, {
       value: 'insert',
       text: this.props.dict['header.form.action.insert']
     }, {
@@ -46,6 +45,19 @@
     }, {
       value: 'refresh',
       text: this.props.dict['header.form.refresh']
+    }],
+    interTypeOptions: [{
+      value: 'system',
+      text: this.props.dict['model.interface.system']
+    }, {
+      value: 'inner',
+      text: this.props.dict['model.interface.inner']
+    }, {
+      value: 'outer',
+      text: this.props.dict['model.interface.outer']
+    }, {
+      value: 'custom',
+      text: '鑷畾涔�'
     }]
   }
 
@@ -58,7 +70,9 @@
       if (form.key === 'intertype') {
         _intertype = form.initVal
         if (card.btnType !== 'confirm') {
-          form.options = form.options.filter(op => op.value !== 'system')
+          form.options = this.state.interTypeOptions.filter(op => op.value !== 'system')
+        } else {
+          form.options = this.state.interTypeOptions
         }
       }
     })
@@ -231,7 +245,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -253,7 +267,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -268,7 +282,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -302,7 +316,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
diff --git a/src/templates/formtabconfig/actionform/index.scss b/src/templates/formtabconfig/actionform/index.scss
index 2e104bd..969304f 100644
--- a/src/templates/formtabconfig/actionform/index.scss
+++ b/src/templates/formtabconfig/actionform/index.scss
@@ -12,14 +12,6 @@
       width: 86%;
     }
   }
-  .ant-input-number {
-    width: 100%;
-  }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
   .with-button {
     .ant-form-item-control-wrapper {
       padding-right: 63px;
diff --git a/src/templates/formtabconfig/dragelement/index.jsx b/src/templates/formtabconfig/dragelement/index.jsx
index c75052f..827f7d0 100644
--- a/src/templates/formtabconfig/dragelement/index.jsx
+++ b/src/templates/formtabconfig/dragelement/index.jsx
@@ -118,7 +118,6 @@
         newcard.setAll = 'false'
         newcard.orderType = 'asc'
         newcard.match = _match
-        newcard.display = 'dropdown'
       } else if (item.type === 'action') {
         newcard.label = 'button'
         newcard.Ot = 'requiredSgl'
diff --git a/src/templates/formtabconfig/groupform/index.jsx b/src/templates/formtabconfig/groupform/index.jsx
index 821b0cc..8668b3a 100644
--- a/src/templates/formtabconfig/groupform/index.jsx
+++ b/src/templates/formtabconfig/groupform/index.jsx
@@ -4,7 +4,7 @@
 import { formRule } from '@/utils/option.js'
 import TransferForm from '../transferform'
 // import Utils from '@/utils/utils.js'
-import './index.scss'
+// import './index.scss'
 
 class GroupForm extends Component {
   static propTpyes = {
@@ -92,7 +92,7 @@
       }
     }
     return (
-      <Form {...formItemLayout} className="ant-advanced-search-form modal-setting-form">
+      <Form {...formItemLayout}>
         <Row gutter={24}>
           <Col span={12}>
             <Form.Item label="鍒嗙粍鍚嶇О">
diff --git a/src/templates/formtabconfig/groupform/index.scss b/src/templates/formtabconfig/groupform/index.scss
index 091801f..e69de29 100644
--- a/src/templates/formtabconfig/groupform/index.scss
+++ b/src/templates/formtabconfig/groupform/index.scss
@@ -1,13 +0,0 @@
-.ant-advanced-search-form.modal-setting-form {
-  .textarea {
-    .ant-form-item-label {
-      width: 16.3%;
-    }
-    .ant-form-item-control-wrapper {
-      width: 83.33333333%;
-    }
-  }
-  .ant-input-number {
-    width: 100%;
-  }
-}
\ No newline at end of file
diff --git a/src/templates/formtabconfig/index.jsx b/src/templates/formtabconfig/index.jsx
index ae594a5..fbe82e8 100644
--- a/src/templates/formtabconfig/index.jsx
+++ b/src/templates/formtabconfig/index.jsx
@@ -5,7 +5,8 @@
 import { DndProvider } from 'react-dnd'
 import HTML5Backend from 'react-dnd-html5-backend'
 import moment from 'moment'
-import { Button, Card, Modal, Collapse, notification, Spin, Select, List, Icon, Empty, Switch, Tooltip } from 'antd'
+import { Button, Card, Modal, Collapse, notification, Spin, Select, List, Empty, Switch, Tooltip } from 'antd'
+import { QuestionCircleOutlined, CloseOutlined, RedoOutlined, SettingOutlined, PlusOutlined, DeleteOutlined, EditOutlined, SnippetsOutlined } from '@ant-design/icons'
 
 import Api from '@/api'
 import zhCN from '@/locales/zh-CN/model.js'
@@ -484,7 +485,7 @@
     this.setState({
       modaltype: 'search',
       card: card,
-      formlist: getModalForm(card, _inputfields, _tabfields, _linkableFields, _linksupFields, false).map(item => {
+      formlist: getModalForm(card, _inputfields, _tabfields, _linkableFields, _linksupFields).map(item => {
         if (item.key === 'type') {
           item.options = item.options.filter(option => !['switch', 'checkbox', 'radio', 'checkcard', 'hint'].includes(option.value))
         }
@@ -1791,7 +1792,7 @@
                 <div className="ant-col ant-form-item-label">
                   <label>
                     <Tooltip placement="topLeft" title="姝ゅ鍙互娣诲姞閰嶇疆鐩稿叧鐨勫父鐢ㄨ〃锛屽湪娣诲姞鎼滅储鏉′欢鍜屾樉绀哄垪鏃讹紝鍙�氳繃宸ュ叿鏍忎腑鐨勬坊鍔犳寜閽紝鎵归噺娣诲姞琛ㄦ牸鐩稿叧瀛楁銆�">
-                      <Icon type="question-circle" />
+                      <QuestionCircleOutlined className="mk-form-tip" />
                       {this.state.dict['header.menu.table.add']}
                     </Tooltip>
                   </label>
@@ -1820,7 +1821,7 @@
                   dataSource={this.state.selectedTables}
                   renderItem={(item, index) => <List.Item key={index} title={item.Remark + ' (' + item.TbName + ')'}>
                     {item.Remark + ' (' + item.TbName + ')'}
-                    <Icon type="close" onClick={() => this.deleteTable(item)}/>
+                    <CloseOutlined onClick={() => this.deleteTable(item)}/>
                     <div className="bottom-mask"></div>
                   </List.Item>}
                 />}
@@ -1852,7 +1853,7 @@
                 {configTabs.length > 0 ?
                   <p className="config-btn-title">
                     <Tooltip placement="topLeft" title="鐐瑰嚮鎸夐挳锛屽彲瀹屾垚鎴栨煡鐪嬫爣绛鹃厤缃俊鎭��">
-                      <Icon type="question-circle" />
+                      <QuestionCircleOutlined className="mk-form-tip" />
                     </Tooltip>
                     {this.state.dict['header.menu.tab.configurable']}
                   </p> : null
@@ -1876,7 +1877,7 @@
             <Card title={
               <div>
                 {this.state.dict['header.menu.page.configurable']} 
-                <Icon type="redo" style={{marginLeft: '10px'}} title="鍒锋柊鏍囩鍒楄〃" onClick={this.reloadTab} />
+                <RedoOutlined style={{marginLeft: '10px'}} title="鍒锋柊鏍囩鍒楄〃" onClick={this.reloadTab} />
               </div>
             } bordered={false} extra={
               <div>
@@ -1885,9 +1886,9 @@
                 <Button onClick={this.cancelConfig}>{this.state.dict['model.back']}</Button>
               </div>
             } style={{ width: '100%' }}>
-              <Icon type="setting" onClick={this.changeSetting} />
+              <SettingOutlined onClick={this.changeSetting} />
               <Tooltip placement="bottomLeft" overlayClassName="middle" title="鍦ㄥ乏渚у伐鍏锋爮銆婃悳绱€�嬩腑锛岄�夋嫨瀵瑰簲鎼滅储妗嗘嫋鑷虫澶勬坊鍔狅紱鎴栫偣鍑绘寜閽�婃坊鍔犳悳绱㈡潯浠躲�嬫壒閲忔坊鍔狅紝閫夋嫨鎵归噺娣诲姞鏃讹紝闇�鎻愬墠閫夋嫨浣跨敤琛ㄣ��">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined style={{position: 'relative', color: '#c49f47', left: '5px', top: '20px'}} />
               </Tooltip>
               <Collapse
                 activeKey={config.groups.map(group => group.uuid)}
@@ -1896,21 +1897,16 @@
                 {config.groups.map((group, index) => (
                   <Panel showArrow={false} header={group.label} key={group.uuid} extra={(
                     <span>
-                      {index === _length - 1 ? <Icon
-                        type="plus"
+                      {index === _length - 1 ? <PlusOutlined
                         onClick={() => { this.handleGroup()}}
                       /> : null}
-                      {_length > 1 && index !== _length - 1 ? <Icon
-                        type="delete"
+                      {_length > 1 && index !== _length - 1 ? <DeleteOutlined
                         onClick={() => { this.closeGroup(group) }}
                       /> : null}
-                      <Icon
-                        type="edit"
-                        onClick={() => { this.handleGroup(group) }}
-                      />
+                      <EditOutlined onClick={() => { this.handleGroup(group) }}/>
                     </span>
                   )}>
-                    {group.isDefault ? <Icon type="snippets" title={this.state.dict['header.form.paste']} onClick={() => {this.setState({pasteVisible: true})}} /> : null}
+                    {group.isDefault ? <SnippetsOutlined title={this.state.dict['header.form.paste']} onClick={() => {this.setState({pasteVisible: true})}} /> : null}
                     <DragElement
                       type="search"
                       groupId={group.uuid}
@@ -1926,7 +1922,7 @@
               </Collapse>
               <div className="action-list">
                 <Tooltip placement="bottomLeft" overlayClassName="middle" title="鍦ㄥ乏渚у伐鍏锋爮銆婃寜閽�嬩腑锛岄�夋嫨瀵瑰簲绫诲瀷鐨勬寜閽嫋鑷虫澶勬坊鍔狅紝濡傞�夋嫨鎸夐挳绫诲瀷涓鸿〃鍗曘�佹柊鏍囩椤电瓑鍚湁閰嶇疆椤甸潰鐨勬寜閽紝鍙湪宸︿晶宸ュ叿鏍�-鎸夐挳-鍙厤缃寜閽锛岀偣鍑绘寜閽畬鎴愮浉鍏抽厤缃�傛敞锛氬綋璁剧疆鎸夐挳鏄剧ず浣嶇疆涓鸿〃鏍兼椂锛屾樉绀哄垪浼氬鍔犳搷浣滃垪銆�">
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined style={{position: 'absolute', color: '#c49f47', left: '5px', top: '5px'}} />
                 </Tooltip>
                 <DragElement
                   type="action"
@@ -1971,7 +1967,7 @@
         <Modal
           title={this.state.dict['model.action'] + '-' + this.state.dict['model.edit']}
           visible={modaltype === 'actionEdit'}
-          width={700}
+          width={900}
           maskClosable={false}
           onCancel={this.editModalCancel}
           footer={[
diff --git a/src/templates/formtabconfig/index.scss b/src/templates/formtabconfig/index.scss
index a05ad70..88fd0ed 100644
--- a/src/templates/formtabconfig/index.scss
+++ b/src/templates/formtabconfig/index.scss
@@ -95,10 +95,6 @@
         }
       }
     }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
     .config-button {
       min-width: 65px;
     }
@@ -151,11 +147,6 @@
     .ant-card-body {
       position: relative;
       padding: 0 0 40px;
-      >.anticon-question-circle {
-        position: relative;
-        left: 5px;
-        top: 20px;
-      }
 
       > .anticon-setting {
         position: absolute;
@@ -229,7 +220,6 @@
                 .ant-form-item-control-wrapper {
                   position: relative;
                   .ant-input-number {
-                    width: 100%;
                     margin-top: 4px;
                   }
                   .ant-select {
@@ -307,10 +297,6 @@
             }
           }
         }
-        .anticon-question-circle {
-          position: absolute;
-          left: 5px;
-        }
       }
       .tab-list {
         position: relative;
@@ -341,11 +327,6 @@
               width: 100%;
             }
           }
-        }
-        > .anticon-question-circle {
-          position: absolute;
-          left: 5px;
-          top: 20px;
         }
         > .anticon-plus {
           position: absolute;
@@ -390,12 +371,6 @@
           margin-right: 50px;
         }
       }
-    }
-    .anticon-question-circle {
-      color: #c49f47;
-      position: relative;
-      left: -15px;
-      top: 5px;
     }
   }
   .setting {
diff --git a/src/templates/formtabconfig/settingform/index.jsx b/src/templates/formtabconfig/settingform/index.jsx
index 1c1cdfe..3d916d5 100644
--- a/src/templates/formtabconfig/settingform/index.jsx
+++ b/src/templates/formtabconfig/settingform/index.jsx
@@ -1,6 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, Select, Tooltip, Icon, notification, InputNumber } from 'antd'
+import { Form, Row, Col, Input, Radio, Select, Tooltip, notification, InputNumber } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
+
 import { formRule } from '@/utils/option.js'
 import Utils from '@/utils/utils.js'
 import './index.scss'
@@ -281,7 +283,7 @@
           {datatype === 'query' && interType !== 'outer' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" overlayClassName="middle" title={`鍙嚜瀹氫箟鏁版嵁澶勭悊鍑芥暟锛屽嚱鏁板悕绉伴渶浠�${usefulFields.join(', ')}绛夊瓧绗﹀紑濮嬶紱鏈缃椂浼氳皟鐢ㄧ郴缁熷嚱鏁帮紝浣跨敤绯荤粺鍑芥暟闇�瀹屽杽鏁版嵁婧愩�俙}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {dict['header.form.innerFunc']}
               </Tooltip>
             }>
@@ -302,7 +304,7 @@
           {datatype === 'query' && interType !== 'outer' ? <Col span={24}>
             <Form.Item help={'鏁版嵁ID锛�' + menu.MenuID} label={
               <Tooltip placement="topLeft" title="浣跨敤绯荤粺鍑芥暟鏃讹紝闇�濉啓鏁版嵁婧愶紝鑷畾涔夊嚱鏁版椂锛屽彲蹇界暐銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {'鏁版嵁婧�'}
               </Tooltip>
             } className="textarea">
diff --git a/src/templates/formtabconfig/settingform/index.scss b/src/templates/formtabconfig/settingform/index.scss
index 82ff4b9..bf9fa12 100644
--- a/src/templates/formtabconfig/settingform/index.scss
+++ b/src/templates/formtabconfig/settingform/index.scss
@@ -7,11 +7,4 @@
       width: 83.33333333%;
     }
   }
-  .anticon-question-circle {
-    color: #c49f47;
-    margin-right: 3px;
-  }
-  .ant-input-number {
-    width: 100%;
-  }
 }
\ No newline at end of file
diff --git a/src/templates/menuconfig/editfirstmenu/menuform/index.scss b/src/templates/menuconfig/editfirstmenu/menuform/index.scss
index 838b936..9914d8e 100644
--- a/src/templates/menuconfig/editfirstmenu/menuform/index.scss
+++ b/src/templates/menuconfig/editfirstmenu/menuform/index.scss
@@ -15,6 +15,3 @@
 .ant-advanced-search-form {
   position: relative;
 }
-.ant-advanced-search-form .ant-input-number {
-  width: 100%;
-}
\ No newline at end of file
diff --git a/src/templates/menuconfig/menuform/index.scss b/src/templates/menuconfig/menuform/index.scss
index 838b936..9914d8e 100644
--- a/src/templates/menuconfig/menuform/index.scss
+++ b/src/templates/menuconfig/menuform/index.scss
@@ -15,6 +15,3 @@
 .ant-advanced-search-form {
   position: relative;
 }
-.ant-advanced-search-form .ant-input-number {
-  width: 100%;
-}
\ No newline at end of file
diff --git a/src/templates/modalconfig/dragelement/card.jsx b/src/templates/modalconfig/dragelement/card.jsx
index f2dfa6a..0b25add 100644
--- a/src/templates/modalconfig/dragelement/card.jsx
+++ b/src/templates/modalconfig/dragelement/card.jsx
@@ -1,6 +1,7 @@
 import React from 'react'
 import { useDrag, useDrop } from 'react-dnd'
-import { Icon, Select, DatePicker, Input, InputNumber, Button, Popover, Switch, Radio, Checkbox, Form } from 'antd'
+import { Select, DatePicker, Input, InputNumber, Button, Popover, Switch, Radio, Checkbox, Form } from 'antd'
+import { QuestionCircleOutlined, UploadOutlined, EditOutlined, CopyOutlined, CloseOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import asyncComponent from '@/utils/asyncComponent'
@@ -84,7 +85,7 @@
   } else if (card.type === 'brafteditor') {
     formItem = (<Editor />)
   } else if (card.type === 'fileupload') {
-    formItem = (<Button style={{marginTop: '3px'}}><Icon type="upload" /> 鐐瑰嚮涓婁紶 </Button>)
+    formItem = (<Button style={{marginTop: '3px'}}><UploadOutlined /> 鐐瑰嚮涓婁紶 </Button>)
   } else if (card.type === 'funcvar') {
     formItem = (<Input style={{marginTop: '4px'}} value={card.linkfield} />)
   } else if (card.type === 'linkMain') {
@@ -121,7 +122,7 @@
 
   let _label = card.label
   if (card.tooltip) {
-    _label = <span><Icon type="question-circle" />{card.label}</span>
+    _label = <span><QuestionCircleOutlined className="mk-form-tip" />{card.label}</span>
   }
   if (card.type === 'brafteditor' && card.hidelabel === 'true') {
     _label = null
@@ -130,9 +131,9 @@
   return (
     <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
       <div className="mk-popover-control">
-        <Icon className="edit" type="edit" onClick={edit} />
-        <Icon className="copy" type="copy" onClick={copy} />
-        <Icon className="close" type="close" onClick={close} />
+        <EditOutlined className="edit" onClick={edit} />
+        <CopyOutlined className="copy" onClick={copy} />
+        <CloseOutlined className="close" onClick={close} />
       </div>
     } trigger="hover">
       <div className="page-card" style={{ opacity: opacity}}>
diff --git a/src/templates/modalconfig/dragelement/index.scss b/src/templates/modalconfig/dragelement/index.scss
index e810030..82c2213 100644
--- a/src/templates/modalconfig/dragelement/index.scss
+++ b/src/templates/modalconfig/dragelement/index.scss
@@ -51,11 +51,6 @@
         text-overflow: ellipsis;
         white-space: nowrap;
       }
-      .anticon-question-circle {
-        color: #c49f47;
-        margin-right: 3px;
-        line-height: 40px;
-      }
     }
     .ant-form-item-control-wrapper {
       position: relative;
@@ -88,7 +83,6 @@
         margin-top: 4px;
       }
       .ant-input-number {
-        width: 100%;
         margin-top: 4px;
       }
       .color-sketch-block {
diff --git a/src/templates/modalconfig/index.jsx b/src/templates/modalconfig/index.jsx
index d62c139..8c690fb 100644
--- a/src/templates/modalconfig/index.jsx
+++ b/src/templates/modalconfig/index.jsx
@@ -305,7 +305,7 @@
       standardform,
       visible: true,
       card: card,
-      formlist: getModalForm(card, _inputfields, _tabfields, _linkableFields, _linksupFields, !!this.props.editTab)
+      formlist: getModalForm(card, _inputfields, _tabfields, _linkableFields, _linksupFields)
     })
   }
 
diff --git a/src/templates/modalconfig/settingform/index.jsx b/src/templates/modalconfig/settingform/index.jsx
index 9eea507..d2eea85 100644
--- a/src/templates/modalconfig/settingform/index.jsx
+++ b/src/templates/modalconfig/settingform/index.jsx
@@ -1,9 +1,11 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, InputNumber, Select, Tooltip, Icon } from 'antd'
+import { Form, Row, Col, Input, Radio, InputNumber, Select, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
+
 import { formRule } from '@/utils/option.js'
 import StyleInput from '@/menu/stylecontroller/styleInput'
-import './index.scss'
+// import './index.scss'
 
 class SettingForm extends Component {
   static propTpyes = {
@@ -79,7 +81,7 @@
     }
 
     return (
-      <Form {...formItemLayout} className="ant-advanced-search-form modal-setting-form">
+      <Form {...formItemLayout}>
         <Row gutter={24}>
           <Col span={12}>
             <Form.Item label="鏍囬">
@@ -104,7 +106,7 @@
           {appType === 'mob' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="瀹藉害灏忎簬100鏃朵负鐧惧垎鐜囷紝澶т簬100鏃朵负缁濆鍊笺��">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 瀹藉害
               </Tooltip>
             }>
@@ -135,7 +137,7 @@
           <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鎵ц澶辫触鏃堕渶瑕佽仛鐒︾殑琛ㄥ崟銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 澶辫触鐒︾偣
               </Tooltip>
             }>
@@ -195,7 +197,7 @@
           <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="闇�瑕侀�氳繃鏁版嵁婧愭煡璇㈢殑閫夐」锛屾槸鍚︿娇鐢ㄧ紦瀛樸��">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 閫夐」鏌ヨ
               </Tooltip>
             }>
@@ -212,7 +214,7 @@
           <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鎵撳嵃鎸夐挳涓棤鏁堛��">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鏄剧ず鏂瑰紡
               </Tooltip>
             }>
diff --git a/src/templates/modalconfig/settingform/index.scss b/src/templates/modalconfig/settingform/index.scss
index 9a74987..e69de29 100644
--- a/src/templates/modalconfig/settingform/index.scss
+++ b/src/templates/modalconfig/settingform/index.scss
@@ -1,18 +0,0 @@
-.ant-advanced-search-form.modal-setting-form {
-  .textarea {
-    .ant-form-item-label {
-      width: 16.3%;
-    }
-    .ant-form-item-control-wrapper {
-      width: 83.33333333%;
-    }
-  }
-  .ant-input-number {
-    width: 100%;
-  }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
-}
\ No newline at end of file
diff --git a/src/templates/sharecomponent/actioncomponent/actionform/index.jsx b/src/templates/sharecomponent/actioncomponent/actionform/index.jsx
index 460a648..8f1d740 100644
--- a/src/templates/sharecomponent/actioncomponent/actionform/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/actionform/index.jsx
@@ -2,8 +2,9 @@
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
 import { Form, Row, Col, Input, Select, Icon, Radio, notification, Tooltip, InputNumber, Cascader } from 'antd'
-import { btnIcons, btnClasses, formRule } from '@/utils/option.js'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
+import { btnIcons, btnClasses, formRule } from '@/utils/option.js'
 import Utils from '@/utils/utils.js'
 import './index.scss'
 
@@ -541,7 +542,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -563,7 +564,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -584,7 +585,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -619,7 +620,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -666,7 +667,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
diff --git a/src/templates/sharecomponent/actioncomponent/actionform/index.scss b/src/templates/sharecomponent/actioncomponent/actionform/index.scss
index 653ac93..fab019a 100644
--- a/src/templates/sharecomponent/actioncomponent/actionform/index.scss
+++ b/src/templates/sharecomponent/actioncomponent/actionform/index.scss
@@ -18,14 +18,6 @@
       margin-right: 4px;
     }
   }
-  .ant-input-number {
-    width: 100%;
-  }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
   .with-button {
     .ant-form-item-control-wrapper {
       padding-right: 63px;
diff --git a/src/templates/sharecomponent/actioncomponent/index.jsx b/src/templates/sharecomponent/actioncomponent/index.jsx
index e3edc42..abfa8a0 100644
--- a/src/templates/sharecomponent/actioncomponent/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Icon, Tooltip, Modal, notification, Button } from 'antd'
+import { Tooltip, Modal, notification, Button } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -856,7 +857,7 @@
     return (
       <div className="model-table-action-list" style={config.charts.length > 1 ? {paddingTop: 25} : null}>
         <Tooltip placement="bottomLeft" overlayClassName="middle" title={dict['model.tooltip.action.guide']}>
-          <Icon type="question-circle" />
+          <QuestionCircleOutlined style={{color: '#c49f47', position: 'absolute', left: '5px', top: '5px'}} />
         </Tooltip>
         <DragElement
           list={actionlist}
diff --git a/src/templates/sharecomponent/actioncomponent/index.scss b/src/templates/sharecomponent/actioncomponent/index.scss
index 93cc1b7..6a0e1f5 100644
--- a/src/templates/sharecomponent/actioncomponent/index.scss
+++ b/src/templates/sharecomponent/actioncomponent/index.scss
@@ -2,13 +2,6 @@
   position: relative;
   padding: 15px 25px 15px;
   min-height: 65px;
-  
-  .anticon-question-circle {
-    color: #c49f47;
-    position: absolute;
-    left: 5px;
-    top: 5px;
-  }
 
   > .ant-row {
     min-height: 65px;
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.jsx
index ef53c38..1389b88 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Form, Row, Col, Button, notification, Modal, Icon, Tooltip, Radio, Select } from 'antd'
+import { Form, Row, Col, Button, notification, Modal, Tooltip, Radio, Select } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Utils from '@/utils/utils.js'
@@ -288,7 +289,7 @@
           <Col span={8} style={{whiteSpace: 'nowrap'}}>
             <Form.Item style={{marginBottom: 0}} label={
               <Tooltip placement="bottomLeft" title={'鑷畾涔夎剼鏈笌榛樿sql浣嶇疆鍏崇郴銆�'}>
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '5px'}} />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鎵ц浣嶇疆
               </Tooltip>
             }>
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx
index 3701e1d..1fef86d 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx
@@ -2,6 +2,7 @@
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
 import { Form, Tabs, Row, Col, Input, Button, Table, Popconfirm, Icon, Tooltip, notification, Modal, message, InputNumber, Radio, Typography } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -817,7 +818,7 @@
                 <Col span={8}>
                   <Form.Item label={
                     <Tooltip placement="bottomLeft" title="蹇界暐棣栬鏃讹紝浼氭牎楠宔xcel涓〃澶村悕绉颁笌excel鍒楄缃槸鍚︿竴鑷淬��">
-                      <Icon type="question-circle" style={{color: '#c49f47', marginRight: '5px'}}/>
+                      <QuestionCircleOutlined className="mk-form-tip" />
                       蹇界暐琛�
                     </Tooltip>
                   }>
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.scss b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.scss
index 6394765..0b2c26b 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.scss
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.scss
@@ -9,9 +9,6 @@
     word-wrap: break-word;
     word-break: break-word;
   }
-  .ant-input-number {
-    width: 100%;
-  }
   .count-tip {
     position: absolute;
     top: 0px;
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.scss b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.scss
index 94b67c9..d44185c 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.scss
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.scss
@@ -9,9 +9,6 @@
     word-wrap: break-word;
     word-break: break-word;
   }
-  .ant-input-number {
-    width: 100%;
-  }
   .count-tip {
     position: absolute;
     top: 0px;
diff --git a/src/templates/sharecomponent/cardcomponent/carddetailform/index.jsx b/src/templates/sharecomponent/cardcomponent/carddetailform/index.jsx
index 2601a4b..0a141c1 100644
--- a/src/templates/sharecomponent/cardcomponent/carddetailform/index.jsx
+++ b/src/templates/sharecomponent/cardcomponent/carddetailform/index.jsx
@@ -1,9 +1,10 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Select, InputNumber, Radio, Tooltip, Icon } from 'antd'
+import { Form, Row, Col, Input, Select, InputNumber, Radio, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import { formRule } from '@/utils/option.js'
-import './index.scss'
+// import './index.scss'
 
 class MainSearch extends Component {
   static propTpyes = {
@@ -116,7 +117,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -141,7 +142,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -199,7 +200,7 @@
                   }
                 ]
               })(
-                <Radio.Group disabled={item.readonly} onChange={(e) => {this.typeChange(item.key, e.target.value)}}>
+                <Radio.Group style={{whiteSpace: 'nowrap'}} disabled={item.readonly} onChange={(e) => {this.typeChange(item.key, e.target.value)}}>
                   {
                     item.options.map(option => {
                       return (
@@ -291,7 +292,7 @@
       }
     }
     return (
-      <Form {...formItemLayout} className="card-detail-edit-form" id="card-detail-edit-form">
+      <Form {...formItemLayout} style={{minHeight: '190px'}} id="card-detail-edit-form">
         <Row gutter={24}>{this.getFields()}</Row>
       </Form>
     )
diff --git a/src/templates/sharecomponent/cardcomponent/carddetailform/index.scss b/src/templates/sharecomponent/cardcomponent/carddetailform/index.scss
index 24d7c01..e69de29 100644
--- a/src/templates/sharecomponent/cardcomponent/carddetailform/index.scss
+++ b/src/templates/sharecomponent/cardcomponent/carddetailform/index.scss
@@ -1,16 +0,0 @@
-.card-detail-edit-form {
-  min-height: 190px;
-  .ant-form-item {
-    .ant-input-number {
-      width: 100%;
-    }
-  }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
-  .ant-radio-group {
-    white-space: nowrap;
-  }
-}
diff --git a/src/templates/sharecomponent/chartcomponent/chartcompile/index.jsx b/src/templates/sharecomponent/chartcomponent/chartcompile/index.jsx
index 234bc0c..92dcaab 100644
--- a/src/templates/sharecomponent/chartcomponent/chartcompile/index.jsx
+++ b/src/templates/sharecomponent/chartcomponent/chartcompile/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
-import { Drawer, Form, Button, Col, Row, Select, Icon, Radio, Tooltip, Input, InputNumber, Cascader } from 'antd'
+import { Drawer, Form, Button, Col, Row, Select, Radio, Tooltip, Input, InputNumber, Cascader } from 'antd'
+import { QuestionCircleOutlined, RightOutlined, EditOutlined, LeftOutlined } from '@ant-design/icons'
 
 import { getChartOptionForm } from '@/templates/zshare/formconfig'
 import { minkeColorSystem, colorTransform } from '@/utils/option.js'
@@ -129,7 +130,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -150,7 +151,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -171,7 +172,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -200,7 +201,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -494,7 +495,7 @@
 
     return (
       <div className="line-chart-drawer-form">
-        <Icon type="edit" onClick={this.showDrawer} />
+        <EditOutlined onClick={this.showDrawer} />
         <Drawer
           title="鍥捐〃缂栬緫"
           className="chart-drawer-form"
@@ -506,13 +507,13 @@
           {view !== 'custom' ? <Form {...formItemLayout} className="base-setting">
             <Row gutter={16}>{this.getFields()}</Row>
             {datatype === 'query' ? <Row gutter={16}>
-              <Button onClick={this.changeView} style={{border: 0, boxShadow: 'unset',float: 'right', color: '#1890ff', marginRight: 12, cursor: 'pointer'}}>鑷畾涔夎缃�<Icon style={{marginLeft: 5}} type="right" /></Button>
+              <Button onClick={this.changeView} style={{border: 0, boxShadow: 'unset',float: 'right', color: '#1890ff', marginRight: 12, cursor: 'pointer'}}>鑷畾涔夎缃�<RightOutlined style={{marginLeft: 5}} /></Button>
             </Row> : null}
           </Form> : null}
           {view === 'custom' ? <Form {...formItemLayout} id="chart-custom-drawer-form" className="mingke-table">
             <Row gutter={16} style={{minHeight: 'calc(100vh - 180px)'}}>{this.getCustomFields()}</Row>
             <Row gutter={16}>
-              <Button onClick={this.changeView} style={{border: 0, boxShadow: 'unset', color: '#1890ff', marginRight: 12, cursor: 'pointer'}}><Icon style={{marginRight: 5}} type="left" />鍩烘湰璁剧疆</Button>
+              <Button onClick={this.changeView} style={{border: 0, boxShadow: 'unset', color: '#1890ff', marginRight: 12, cursor: 'pointer'}}><LeftOutlined style={{marginRight: 5}} />鍩烘湰璁剧疆</Button>
             </Row>
           </Form> : null}
           <div
diff --git a/src/templates/sharecomponent/chartcomponent/chartcompile/index.scss b/src/templates/sharecomponent/chartcomponent/chartcompile/index.scss
index 77a5f4e..bf74e45 100644
--- a/src/templates/sharecomponent/chartcomponent/chartcompile/index.scss
+++ b/src/templates/sharecomponent/chartcomponent/chartcompile/index.scss
@@ -14,14 +14,6 @@
   .ant-drawer-body {
     max-height: calc(100vh - 60px);
     overflow-y: auto;
-
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
-    .ant-input-number {
-      width: 100%;
-    }
   }
   .ant-drawer-body::-webkit-scrollbar {
     width: 7px;
diff --git a/src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx b/src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx
index 86b99e9..eb1f155 100644
--- a/src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx
+++ b/src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Select, InputNumber, Radio, Tooltip, Icon } from 'antd'
+import { Form, Row, Col, Input, Select, InputNumber, Radio, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import { formRule } from '@/utils/option.js'
 import line1 from '@/assets/img/line1.png'
@@ -298,7 +299,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -323,7 +324,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -344,7 +345,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -379,7 +380,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -410,7 +411,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
diff --git a/src/templates/sharecomponent/chartgroupcomponent/chartform/index.scss b/src/templates/sharecomponent/chartgroupcomponent/chartform/index.scss
index 0f531dd..823824f 100644
--- a/src/templates/sharecomponent/chartgroupcomponent/chartform/index.scss
+++ b/src/templates/sharecomponent/chartgroupcomponent/chartform/index.scss
@@ -1,15 +1,5 @@
 .chart-edit-form {
   min-height: 190px;
-  .ant-form-item {
-    .ant-input-number {
-      width: 100%;
-    }
-  }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
   .chart-model-image {
     .ant-col-6 {
       min-height: 110px;
diff --git a/src/templates/sharecomponent/columncomponent/colspanform/index.jsx b/src/templates/sharecomponent/columncomponent/colspanform/index.jsx
index 2729c01..5a7f9b8 100644
--- a/src/templates/sharecomponent/columncomponent/colspanform/index.jsx
+++ b/src/templates/sharecomponent/columncomponent/colspanform/index.jsx
@@ -1,9 +1,11 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, InputNumber, Select, Radio, Tooltip, Icon } from 'antd'
+import { Form, Row, Col, Input, InputNumber, Select, Radio, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
+
 import { formRule } from '@/utils/option.js'
 import TransferForm from '@/templates/zshare/transferform'
-import './index.scss'
+// import './index.scss'
 
 class MainSearch extends Component {
   static propTpyes = {
@@ -75,7 +77,7 @@
       }
     }
     return (
-      <Form {...formItemLayout} className="commontable-cospan-column-form" id="columncolspan">
+      <Form {...formItemLayout} style={{minHeight: '190px'}} id="columncolspan">
         <Row gutter={24}>
           <Col span={12}>
             <Form.Item label={this.props.dict['model.name']}>
@@ -144,7 +146,7 @@
           <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="閫夋嫨鏄剧ず鍒嗙粍锛岃〃鏍间細灞曞紑娣诲姞鍒嗙粍鐨勫瓙鍒楋紝姝ゆ椂鎺掑垪鏂瑰紡浼氬け鏁堛��">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鏄剧ず鍒嗙粍
               </Tooltip>
             }>
diff --git a/src/templates/sharecomponent/columncomponent/colspanform/index.scss b/src/templates/sharecomponent/columncomponent/colspanform/index.scss
index d39b484..e69de29 100644
--- a/src/templates/sharecomponent/columncomponent/colspanform/index.scss
+++ b/src/templates/sharecomponent/columncomponent/colspanform/index.scss
@@ -1,13 +0,0 @@
-.commontable-cospan-column-form {
-  min-height: 190px;
-  .ant-form-item {
-    .ant-input-number {
-      width: 100%;
-    }
-  }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
-}
\ No newline at end of file
diff --git a/src/templates/sharecomponent/columncomponent/columnform/index.jsx b/src/templates/sharecomponent/columncomponent/columnform/index.jsx
index 5efbdd6..2991a73 100644
--- a/src/templates/sharecomponent/columncomponent/columnform/index.jsx
+++ b/src/templates/sharecomponent/columncomponent/columnform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Select, InputNumber, Radio, Tooltip, Icon, Cascader } from 'antd'
+import { Form, Row, Col, Input, Select, InputNumber, Radio, Tooltip, Cascader } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import { formRule } from '@/utils/option.js'
 import './index.scss'
@@ -160,7 +161,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -182,7 +183,7 @@
           <Col span={24} key={index} className="textarea">
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -203,7 +204,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -254,7 +255,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
diff --git a/src/templates/sharecomponent/columncomponent/columnform/index.scss b/src/templates/sharecomponent/columncomponent/columnform/index.scss
index e450762..0b02ab2 100644
--- a/src/templates/sharecomponent/columncomponent/columnform/index.scss
+++ b/src/templates/sharecomponent/columncomponent/columnform/index.scss
@@ -1,15 +1,6 @@
 .commontable-column-form {
   min-height: 190px;
-  .ant-form-item {
-    .ant-input-number {
-      width: 100%;
-    }
-  }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
+
   .ant-cascader-menus {
     padding: 5px 0px;
     .ant-cascader-menu:last-child {
diff --git a/src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx b/src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx
index ccbb363..17b5968 100644
--- a/src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx
+++ b/src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx
@@ -2,7 +2,7 @@
 import PropTypes from 'prop-types'
 import { Form, Row, Col, Input, Select, InputNumber, Radio } from 'antd'
 import { formRule } from '@/utils/option.js'
-import './index.scss'
+// import './index.scss'
 
 class MainSearch extends Component {
   static propTpyes = {
@@ -208,7 +208,7 @@
       }
     }
     return (
-      <Form {...formItemLayout} className="commontable-gridbtn-column-form" id="gridbtncolumnwinter">
+      <Form {...formItemLayout} style={{minHeight: '190px'}} id="gridbtncolumnwinter">
         <Row gutter={24}>{this.getFields()}</Row>
       </Form>
     )
diff --git a/src/templates/sharecomponent/columncomponent/gridbtnform/index.scss b/src/templates/sharecomponent/columncomponent/gridbtnform/index.scss
index abb563c..e69de29 100644
--- a/src/templates/sharecomponent/columncomponent/gridbtnform/index.scss
+++ b/src/templates/sharecomponent/columncomponent/gridbtnform/index.scss
@@ -1,8 +0,0 @@
-.commontable-gridbtn-column-form {
-  min-height: 190px;
-  .ant-form-item {
-    .ant-input-number {
-      width: 100%;
-    }
-  }
-}
\ No newline at end of file
diff --git a/src/templates/sharecomponent/columncomponent/index.jsx b/src/templates/sharecomponent/columncomponent/index.jsx
index 63a0a8d..357dfd8 100644
--- a/src/templates/sharecomponent/columncomponent/index.jsx
+++ b/src/templates/sharecomponent/columncomponent/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Icon, Tooltip, Modal, notification, Switch, message } from 'antd'
+import { Tooltip, Modal, notification, Switch, message } from 'antd'
+import { QuestionCircleOutlined, CopyOutlined } from '@ant-design/icons'
 
 import zhCN from '@/locales/zh-CN/model.js'
 import enUS from '@/locales/en-US/model.js'
@@ -493,10 +494,10 @@
     return (
       <div className="model-table-column-list">
         <Tooltip placement="bottomLeft" overlayClassName="middle" title={dict['model.tooltip.column.guide']}>
-          <Icon type="question-circle" />
+          <QuestionCircleOutlined style={{color: '#c49f47', position: 'relative', left: '-15px', top: '5px'}} />
         </Tooltip>
         {columnlist && columnlist.length > 0 ?
-          <Icon className="column-copy" title="copy" type="copy" onClick={this.copycolumn} /> : null
+          <CopyOutlined className="column-copy" title="copy" onClick={this.copycolumn} /> : null
         }
         <Switch checkedChildren={dict['model.switch.open']} unCheckedChildren={dict['model.switch.close']} defaultChecked={this.state.showField} onChange={this.onFieldChange} />
         <DragElement
diff --git a/src/templates/sharecomponent/columncomponent/index.scss b/src/templates/sharecomponent/columncomponent/index.scss
index 73abbcf..d2ea50c 100644
--- a/src/templates/sharecomponent/columncomponent/index.scss
+++ b/src/templates/sharecomponent/columncomponent/index.scss
@@ -2,12 +2,6 @@
   position: relative;
   padding: 0px 20px 100px;
 
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -15px;
-    top: 5px;
-  }
   .ant-switch {
     position: absolute;
     right: 20px;
diff --git a/src/templates/sharecomponent/columncomponent/markcolumn/index.scss b/src/templates/sharecomponent/columncomponent/markcolumn/index.scss
index 3502583..3d35325 100644
--- a/src/templates/sharecomponent/columncomponent/markcolumn/index.scss
+++ b/src/templates/sharecomponent/columncomponent/markcolumn/index.scss
@@ -1,15 +1,7 @@
 #mark-column-box-modal {
-  .ant-form-item-label .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
   table tr td {
     word-wrap: break-word;
     word-break: break-word;
-  }
-  .ant-input-number {
-    width: 100%;
   }
   
   .mingke-table .ant-empty {
diff --git a/src/templates/sharecomponent/columncomponent/markcolumn/markform/index.jsx b/src/templates/sharecomponent/columncomponent/markcolumn/markform/index.jsx
index 4fbbbac..5785dd4 100644
--- a/src/templates/sharecomponent/columncomponent/markcolumn/markform/index.jsx
+++ b/src/templates/sharecomponent/columncomponent/markcolumn/markform/index.jsx
@@ -1,6 +1,6 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Select, Button, Input, Radio, Icon, Cascader, Tooltip } from 'antd'
+import { Form, Row, Col, Select, Button, Input, Radio, Icon, Cascader } from 'antd'
 
 import { minkeColorSystem, minkeIconSystem } from '@/utils/option.js'
 import './index.scss'
@@ -187,7 +187,7 @@
       <Form {...formItemLayout} id="model-mark-form-box" className="mingke-table">
         <Row gutter={24}>
           <Col span={6}>
-            <Form.Item label={'瀛楁'}>
+            <Form.Item label="瀛楁">
               {getFieldDecorator('field', {
                 initialValue: originField.field,
                 rules: [
@@ -210,7 +210,7 @@
             </Form.Item>
           </Col>
           <Col span={6}>
-            <Form.Item label={'瀵规瘮绫诲瀷'}>
+            <Form.Item label="瀵规瘮绫诲瀷">
               {getFieldDecorator('contrastType', {
                 initialValue: 'static'
               })(
@@ -222,7 +222,7 @@
             </Form.Item>
           </Col>
           <Col span={6}>
-            <Form.Item label={'瀵规瘮鏂瑰紡'}>
+            <Form.Item label="瀵规瘮鏂瑰紡">
               {getFieldDecorator('match', {
                 initialValue: '=',
                 rules: [
@@ -243,14 +243,14 @@
             </Form.Item>
           </Col>
           {contrastType === 'static' ? <Col span={6}>
-            <Form.Item label={'瀵规瘮鍊�'}>
+            <Form.Item label="瀵规瘮鍊�">
               {getFieldDecorator('contrastValue', {
                 initialValue: ''
               })(<Input placeholder="" autoComplete="off" />)}
             </Form.Item>
           </Col> : null}
           {contrastType === 'dynamic' ? <Col span={6}>
-            <Form.Item label={'瀵规瘮瀛楁'}>
+            <Form.Item label="瀵规瘮瀛楁">
               {getFieldDecorator('contrastField', {
                 initialValue: '',
                 rules: [
@@ -272,12 +272,7 @@
             </Form.Item>
           </Col> : null}
           <Col span={6}>
-            <Form.Item label={
-              <Tooltip placement="topLeft" title="鍗$墖绫诲瀷锛屽湪鍗$墖鍥捐〃涓捣鏁�">
-                <Icon type="question-circle" />
-                {'鏍囪'}
-              </Tooltip>
-            }>
+            <Form.Item label="鏍囪鏂瑰紡">
               {getFieldDecorator('signType', {
                 initialValue: 'background',
                 rules: [
diff --git a/src/templates/sharecomponent/fieldscomponent/index.jsx b/src/templates/sharecomponent/fieldscomponent/index.jsx
index 74c72a4..e0c0088 100644
--- a/src/templates/sharecomponent/fieldscomponent/index.jsx
+++ b/src/templates/sharecomponent/fieldscomponent/index.jsx
@@ -130,7 +130,6 @@
           options: [],
           orderType: 'asc',
           match: _match,
-          display: 'dropdown'
         }
 
         items.push(newcard)
diff --git a/src/templates/sharecomponent/searchcomponent/dragsearch/index.jsx b/src/templates/sharecomponent/searchcomponent/dragsearch/index.jsx
index 06a1df7..4a4910c 100644
--- a/src/templates/sharecomponent/searchcomponent/dragsearch/index.jsx
+++ b/src/templates/sharecomponent/searchcomponent/dragsearch/index.jsx
@@ -91,7 +91,6 @@
       newcard.options = []
       newcard.setAll = 'false'
       newcard.orderType = 'asc'
-      newcard.display = 'dropdown'
       
       let _match = 'like'
       if (item.subType === 'select' || item.subType === 'link' || item.subType === 'checkcard') {
diff --git a/src/templates/sharecomponent/searchcomponent/index.jsx b/src/templates/sharecomponent/searchcomponent/index.jsx
index 73cae07..5179021 100644
--- a/src/templates/sharecomponent/searchcomponent/index.jsx
+++ b/src/templates/sharecomponent/searchcomponent/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Icon, Tooltip, Modal, notification, Switch } from 'antd'
+import { Tooltip, Modal, notification, Switch } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -336,7 +337,7 @@
     return (
       <div className={'model-table-search-list length' + searchlist.length}>
         <Tooltip placement="bottomLeft" overlayClassName="middle" title={dict['model.tooltip.search.guide']}>
-          <Icon type="question-circle" />
+          <QuestionCircleOutlined style={{color: '#c49f47', position: 'relative', left: '-15px', top: '5px'}} />
         </Tooltip>
         <FieldsComponent config={{uuid: config.uuid, search: searchlist}} type="search" />
         <Switch checkedChildren={dict['model.switch.open']} unCheckedChildren={dict['model.switch.close']} defaultChecked={showField} onChange={this.onFieldChange} />
diff --git a/src/templates/sharecomponent/searchcomponent/index.scss b/src/templates/sharecomponent/searchcomponent/index.scss
index 9ab67a9..e8da957 100644
--- a/src/templates/sharecomponent/searchcomponent/index.scss
+++ b/src/templates/sharecomponent/searchcomponent/index.scss
@@ -7,12 +7,6 @@
   .quickly-add {
     display: none;
   }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -15px;
-    top: 5px;
-  }
   >.ant-switch {
     position: absolute;
     z-index: 1;
diff --git a/src/templates/sharecomponent/searchcomponent/searchform/index.jsx b/src/templates/sharecomponent/searchcomponent/searchform/index.jsx
index 88f8bfc..db164c5 100644
--- a/src/templates/sharecomponent/searchcomponent/searchform/index.jsx
+++ b/src/templates/sharecomponent/searchcomponent/searchform/index.jsx
@@ -2,6 +2,8 @@
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
 import { Form, Row, Col, Input, Select, Icon, Radio, notification, Tooltip, InputNumber, Checkbox, Cascader } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
+
 import { dateOptions, matchReg, formRule } from '@/utils/option.js'
 import EditTable from '../searcheditable'
 import Utils from '@/utils/utils.js'
@@ -417,7 +419,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -439,7 +441,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -492,7 +494,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
diff --git a/src/templates/sharecomponent/searchcomponent/searchform/index.scss b/src/templates/sharecomponent/searchcomponent/searchform/index.scss
index 56d3f89..4624854 100644
--- a/src/templates/sharecomponent/searchcomponent/searchform/index.scss
+++ b/src/templates/sharecomponent/searchcomponent/searchform/index.scss
@@ -16,14 +16,6 @@
       height: 150px;
     }
   }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
-  .ant-input-number {
-    width: 100%;
-  }
   .ant-checkbox-group {
     .ant-checkbox-group-item {
       .ant-checkbox + span {
diff --git a/src/templates/sharecomponent/settingcalcomponent/verifycard/index.scss b/src/templates/sharecomponent/settingcalcomponent/verifycard/index.scss
index 1722c65..420b3ef 100644
--- a/src/templates/sharecomponent/settingcalcomponent/verifycard/index.scss
+++ b/src/templates/sharecomponent/settingcalcomponent/verifycard/index.scss
@@ -30,9 +30,6 @@
       z-index: 2;
     }
     .verify-form {
-      .ant-input-number {
-        width: 100%;
-      }
       .sql {
         .ant-col-sm-8 {
           width: 10.5%;
@@ -64,10 +61,6 @@
       }
       .add {
         padding-top: 4px;
-      }
-      .anticon-question-circle {
-        color: #c49f47;
-        margin-right: 3px;
       }
     }
     .custom-table .ant-empty {
diff --git a/src/templates/sharecomponent/settingcalcomponent/verifycard/settingform/index.jsx b/src/templates/sharecomponent/settingcalcomponent/verifycard/settingform/index.jsx
index 0c63b49..36a31c8 100644
--- a/src/templates/sharecomponent/settingcalcomponent/verifycard/settingform/index.jsx
+++ b/src/templates/sharecomponent/settingcalcomponent/verifycard/settingform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, Tooltip, Icon, notification, InputNumber } from 'antd'
+import { Form, Row, Col, Input, Radio, Tooltip, notification, InputNumber } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -214,7 +215,7 @@
             {interType === 'inner' ? <Col span={8}>
               <Form.Item label={tooltip ?
                 <Tooltip placement="topLeft" title={tooltip}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鍐呴儴鍑芥暟
                 </Tooltip> : '鍐呴儴鍑芥暟'
               }>
@@ -250,7 +251,7 @@
             {interType === 'system' ? <Col span={24} className="data-source" style={{paddingLeft: '7px'}}>
               <Form.Item labelCol={{xs: { span: 24 }, sm: { span: 2 }}} wrapperCol={ {xs: { span: 24 }, sm: { span: 22 }} } label={
                 <Tooltip placement="topLeft" title={'浣跨敤绯荤粺鍑芥暟鏃讹紝闇�濉啓鏁版嵁婧愩�傛敞锛氭暟鎹潈闄愭浛鎹㈢ $@ -> /* 鎴� \'\'銆� @$ -> */ 鎴� \'\''}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鏁版嵁婧�
                 </Tooltip>
               }>
@@ -262,7 +263,7 @@
             {interType === 'system' ? <Col span={8}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'鏌ヨ鏃讹紝鎼滅储鏉′欢浠here鏉′欢鎷兼帴杩涘叆sql锛岀粺璁℃椂锛屽皢鏁版嵁婧愪腑浠モ�淍+鎼滅储瀛楁+@鈥濈殑鍐呭锛屼互鎼滅储鏉′欢涓殑鍊艰繘琛屾浛鎹㈠悗锛屾彁浜ゆ煡璇紝娉細鏌ヨ绫诲瀷浠呭湪浣跨敤绯荤粺鍑芥暟鏃舵湁鏁堛��'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鏌ヨ绫诲瀷
                 </Tooltip>
               }>
@@ -315,7 +316,7 @@
             <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title="楂樼骇鎼滅储寮圭獥鐨勫搴︼紝娉細褰撳搴﹀�煎皬浜�100鏃惰〃绀哄崰绐楀彛鐨勭櫨鍒嗘瘮锛屽ぇ浜�100鏃惰〃绀哄搴︾殑缁濆鍊笺��">
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   楂樼骇鎼滅储
                 </Tooltip>
               }>
diff --git a/src/templates/sharecomponent/settingcalcomponent/verifycard/settingform/index.scss b/src/templates/sharecomponent/settingcalcomponent/verifycard/settingform/index.scss
index 68adfba..c7c4f3f 100644
--- a/src/templates/sharecomponent/settingcalcomponent/verifycard/settingform/index.scss
+++ b/src/templates/sharecomponent/settingcalcomponent/verifycard/settingform/index.scss
@@ -13,10 +13,6 @@
         height: 150px;
       }
     }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
   }
   .ant-radio-group {
     white-space: nowrap;
diff --git a/src/templates/sharecomponent/settingcomponent/index.jsx b/src/templates/sharecomponent/settingcomponent/index.jsx
index 5bb9c2a..340c36e 100644
--- a/src/templates/sharecomponent/settingcomponent/index.jsx
+++ b/src/templates/sharecomponent/settingcomponent/index.jsx
@@ -131,7 +131,7 @@
           if (item.status === 'false') return
 
           if (/exec\s/ig.test(item.sql)) {
-            maxScript = 100
+            maxScript = 1000
           } else if (item.sql.length > maxScript) {
             maxScript = item.sql.length
           }
diff --git a/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx b/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx
index 67b0e77..1ad7820 100644
--- a/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx
+++ b/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, Tooltip, Icon, notification, Select, InputNumber } from 'antd'
+import { Form, Row, Col, Input, Radio, Tooltip, notification, Select, InputNumber } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -297,7 +298,7 @@
             {interType === 'custom' && procMode === 'inner' ? <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={funcTooltip}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鍓嶇疆鍑芥暟
                 </Tooltip>
               }>
@@ -333,7 +334,7 @@
             {interType === 'outer' || interType === 'custom' ? <Col className="data-source" span={24}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title="姝e紡绯荤粺鎵�浣跨敤鐨勭殑鎺ュ彛鍦板潃銆�">
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   姝e紡鍦板潃
                 </Tooltip>
               }>
@@ -379,7 +380,7 @@
             {interType === 'inner' || (interType === 'custom' && requestMode === 'inner') ? <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={funcTooltip}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鍐呴儴鍑芥暟
                 </Tooltip>
               }>
@@ -418,7 +419,7 @@
             {interType === 'system' || (interType === 'custom' && requestMode === 'system') ? <Col span={24} className="data-source" style={{paddingLeft: '7px'}}>
               <Form.Item help={'鏁版嵁ID锛�' + menu.MenuID} labelCol={{xs: { span: 24 }, sm: { span: 4 }}} wrapperCol={ {xs: { span: 24 }, sm: { span: 20 }} } label={
                 <Tooltip placement="topLeft" title={`浣跨敤绯荤粺鍑芥暟鏃讹紝闇�濉啓鏁版嵁婧愩�傛敞锛氭暟鎹潈闄愭浛鎹㈢ $@ -> /* 鎴� ''銆� @$ -> */ 鎴� ''锛涙煡璇㈡浛鎹㈢ $select@ -> /* 鎴� ''銆� @select$ -> */ 鎴� ''锛涚粺璁℃浛鎹㈢ $sum@ -> /* 鎴� ''銆� @sum$ -> */ 鎴� ''銆俙}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鏁版嵁婧�
                 </Tooltip>
               }>
@@ -430,7 +431,7 @@
             {interType === 'system' || (interType === 'custom' && requestMode === 'system') ? <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'鏌ヨ鏃讹紝鎼滅储鏉′欢浠here鏉′欢鎷兼帴杩涘叆sql锛岀粺璁℃椂锛屽皢鏁版嵁婧愪腑浠モ�淍+鎼滅储瀛楁+@鈥濈殑鍐呭锛屼互鎼滅储鏉′欢涓殑鍊艰繘琛屾浛鎹㈠悗锛屾彁浜ゆ煡璇紝娉細鏌ヨ绫诲瀷浠呭湪浣跨敤绯荤粺鍑芥暟鏃舵湁鏁堛��'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鏌ヨ绫诲瀷
                 </Tooltip>
               }>
@@ -518,7 +519,7 @@
             {interType === 'custom' ? <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'鍚屾鎵ц锛氬閮ㄦ帴鍙h皟鐢ㄦ垚鍔熷悗鍐嶈姹傛暟鎹紱寮傛鎵ц锛氬閮ㄦ帴鍙h皟鐢ㄤ笌璇锋眰鏁版嵁鍚屾椂杩涜銆�'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鎵ц鏂瑰紡
                 </Tooltip>
               }>
@@ -534,7 +535,7 @@
             {interType === 'custom' ? <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'濡傛灉鑷畾涔夋帴鍙d笉鏀寔璺ㄥ煙璇锋眰锛屼細閫氳繃褰撳墠绯荤粺杞彂銆�'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   璺ㄥ煙璇锋眰
                 </Tooltip>
               }>
@@ -594,7 +595,7 @@
             {config.Template === 'CommonTable' ? <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'鍚湁鍚堝苟鍒楁垨琛ㄦ牸鍑虹幇妯悜婊氬姩鏃朵細鏄剧ず寮傚父锛岃鎱庣敤锛�'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   琛ㄥご鍥哄畾
                 </Tooltip>
               }>
@@ -621,7 +622,7 @@
             <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'琛ㄦ牸鐨勫唴杈硅窛锛屼粠澶у埌灏忎緷娆¢�掑噺銆�'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   琛ㄦ牸澶у皬
                 </Tooltip>
               }>
@@ -650,7 +651,7 @@
             <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title="浣跨敤鎬ラ�熸ā寮忔椂锛岃〃鏍间腑鐨勬爣璁般�佸弻鍑讳簨浠躲�佹牸寮忓寲銆佽鍚堝苟銆佸墠缂�銆佸悗缂�銆佸瓧娈甸�忚绛夋晥鏋滃皢鏃犳晥锛屼笖鏁版嵁閮戒細浠ユ枃鏈牸寮忔樉绀恒��">
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   妯″紡
                 </Tooltip>
               }>
@@ -666,7 +667,7 @@
             <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title="鏁版嵁鍔犺浇鏃讹紝鏄惁鏄剧ず鍔犺浇涓殑閬僵銆�">
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   閬僵
                 </Tooltip>
               }>
@@ -682,7 +683,7 @@
             <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title="鍦ㄦ悳绱㈡潯浠跺瓨鍦ㄦ椂锛屾槸鍚︽樉绀烘悳绱㈠拰閲嶇疆鎸夐挳銆�">
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鎼滅储鎸夐挳
                 </Tooltip>
               }>
@@ -698,7 +699,7 @@
             {tableType !== '' ? <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title="鍦ㄥ惎鐢ㄦ棤浜哄�煎畧鍔熻兘鏃舵棤鏁堛��">
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   棣栬閫変腑
                 </Tooltip>
               }>
@@ -714,8 +715,20 @@
             </Col> : null}
             <Col span={12}>
               <Form.Item label={
+                <Tooltip placement="topLeft" title="閫夋嫨鍒嗛〉鏃舵湁鏁堬紝榛樿涓�10鏉°��">
+                  <QuestionCircleOutlined className="mk-form-tip" />
+                  姣忛〉鏁伴噺
+                </Tooltip>
+              }>
+                {getFieldDecorator('pageSize', {
+                  initialValue: setting.pageSize || '',
+                })(<InputNumber min={1} max={500} precision={0} />)}
+              </Form.Item>
+            </Col>
+            <Col span={12}>
+              <Form.Item label={
                 <Tooltip placement="topLeft" title="楂樼骇鎼滅储寮圭獥鐨勫搴︼紝娉細褰撳搴﹀�煎皬浜�100鏃惰〃绀哄崰绐楀彛鐨勭櫨鍒嗘瘮锛屽ぇ浜�100鏃惰〃绀哄搴︾殑缁濆鍊笺��">
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   楂樼骇鎼滅储
                 </Tooltip>
               }>
@@ -727,7 +740,7 @@
             <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title="鍙屽嚮琛ㄦ牸涓锛岃Е鍙戠殑鎸夐挳銆�">
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鍙屽嚮浜嬩欢
                 </Tooltip>
               }>
@@ -745,7 +758,7 @@
             <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title="绌哄�兼椂楂樺害鑷�傚簲銆�">
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   table楂樺害
                 </Tooltip>
               }>
@@ -757,7 +770,7 @@
             <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title="榛樿鍊紃gba(0, 0, 0, 0.65)">
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   瀛椾綋棰滆壊
                 </Tooltip>
               }>
diff --git a/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.scss b/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.scss
index 969eb89..c432f3e 100644
--- a/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.scss
+++ b/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.scss
@@ -13,13 +13,6 @@
         height: 150px;
       }
     }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
-    .ant-input-number {
-      width: 100%;
-    }
   }
 
   .color-sketch-block {
diff --git a/src/templates/sharecomponent/settingcomponent/settingform/index.scss b/src/templates/sharecomponent/settingcomponent/settingform/index.scss
index 765f750..2166d9b 100644
--- a/src/templates/sharecomponent/settingcomponent/settingform/index.scss
+++ b/src/templates/sharecomponent/settingcomponent/settingform/index.scss
@@ -21,10 +21,6 @@
         width: 83.33333333%;
       }
     }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
     .text-area {
       .CodeMirror {
         height: 150px;
diff --git a/src/templates/sharecomponent/tablecomponent/index.jsx b/src/templates/sharecomponent/tablecomponent/index.jsx
index d6aca93..abb58fe 100644
--- a/src/templates/sharecomponent/tablecomponent/index.jsx
+++ b/src/templates/sharecomponent/tablecomponent/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
-import { Icon, Tooltip, Select, List, notification } from 'antd'
+import { Tooltip, Select, List, notification } from 'antd'
+import { QuestionCircleOutlined, CloseOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -275,7 +276,7 @@
         <div className="ant-col ant-form-item-label">
           <label>
             <Tooltip placement="topLeft" title={dict['model.tooltip.table.guide']}>
-              <Icon type="question-circle" />
+              <QuestionCircleOutlined className="mk-form-tip" />
               {dict['header.menu.table.add']}
             </Tooltip>
           </label>
@@ -304,7 +305,7 @@
           dataSource={selectedTables}
           renderItem={(item, index) => <List.Item key={index} title={item.Remark + ' (' + item.TbName + ')'}>
             {item.Remark + ' (' + item.TbName + ')'}
-            <Icon type="close" onClick={() => this.deleteTable(item)}/>
+            <CloseOutlined onClick={() => this.deleteTable(item)}/>
             <div className="bottom-mask"></div>
           </List.Item>}
         />}
diff --git a/src/templates/sharecomponent/tablecomponent/index.scss b/src/templates/sharecomponent/tablecomponent/index.scss
index fa82d90..aa254b7 100644
--- a/src/templates/sharecomponent/tablecomponent/index.scss
+++ b/src/templates/sharecomponent/tablecomponent/index.scss
@@ -4,8 +4,4 @@
       opacity: 0.4!important;
     }
   }
-  .anticon-question-circle {
-    color: #c49f47;
-    margin-right: 3px;
-  }
 }
\ No newline at end of file
diff --git a/src/templates/sharecomponent/tabscomponent/index.jsx b/src/templates/sharecomponent/tabscomponent/index.jsx
index b3dff40..3db153a 100644
--- a/src/templates/sharecomponent/tabscomponent/index.jsx
+++ b/src/templates/sharecomponent/tabscomponent/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Icon, Tooltip, Modal, notification } from 'antd'
+import { Tooltip, Modal, notification } from 'antd'
+import { QuestionCircleOutlined, ArrowDownOutlined, ArrowUpOutlined, PlusOutlined, DeleteOutlined } from '@ant-design/icons'
 
 import Utils from '@/utils/utils.js'
 import zhCN from '@/locales/zh-CN/model.js'
@@ -392,14 +393,14 @@
           return (
             <div key={index} className="tab-line-list">
               {index === 0 ? <Tooltip placement="bottomLeft" overlayClassName="middle" title={dict['model.tooltip.tabs.guide']}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined style={{color: '#c49f47', position: 'absolute', left: '5px', top: '20px'}} />
               </Tooltip> : null}
               {index !== (tabgroups.length - 1) ?
-                <Icon type="arrow-down" onClick={() => {this.handleGroup(index, 'down')}} /> : null
+                <ArrowDownOutlined onClick={() => {this.handleGroup(index, 'down')}} /> : null
               }
-              {index !== 0 ? <Icon type="arrow-up" onClick={() => {this.handleGroup(index, 'up')}} /> : null}
-              {index === 0 ? <Icon type="plus" onClick={this.addTabGroup} /> : null}
-              {index !== 0 ? <Icon type="delete" onClick={() => {this.delTabGroup(group)}} /> : null}
+              {index !== 0 ? <ArrowUpOutlined onClick={() => {this.handleGroup(index, 'up')}} /> : null}
+              {index === 0 ? <PlusOutlined onClick={this.addTabGroup} /> : null}
+              {index !== 0 ? <DeleteOutlined onClick={() => {this.delTabGroup(group)}} /> : null}
               <TabDragElement
                 list={group.sublist}
                 handleList={(list, newcard) => this.handleList(list, newcard, group.uuid)}
diff --git a/src/templates/sharecomponent/tabscomponent/index.scss b/src/templates/sharecomponent/tabscomponent/index.scss
index 05e02d0..0356feb 100644
--- a/src/templates/sharecomponent/tabscomponent/index.scss
+++ b/src/templates/sharecomponent/tabscomponent/index.scss
@@ -30,12 +30,6 @@
         }
       }
     }
-    > .anticon-question-circle {
-      color: #c49f47;
-      position: absolute;
-      left: 5px;
-      top: 20px;
-    }
     > .anticon-plus {
       position: absolute;
       font-size: 18px;
diff --git a/src/templates/sharecomponent/tabscomponent/tabform/index.jsx b/src/templates/sharecomponent/tabscomponent/tabform/index.jsx
index ba87b46..267c67c 100644
--- a/src/templates/sharecomponent/tabscomponent/tabform/index.jsx
+++ b/src/templates/sharecomponent/tabscomponent/tabform/index.jsx
@@ -1,10 +1,11 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { Form, Row, Col, Input, Select, Icon, Tooltip, Radio, InputNumber, notification } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
+
 import { formRule } from '@/utils/option.js'
 import Utils from '@/utils/utils.js'
-import './index.scss'
-
+// import './index.scss'
 
 class MainTab extends Component {
   static propTpyes = {
@@ -125,7 +126,7 @@
             <Form.Item label={
               item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -152,7 +153,7 @@
             <Form.Item label={
               item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -164,7 +165,7 @@
                     message: this.props.dict['form.required.input'] + item.label + '!'
                   }
                 ]
-              })(<InputNumber disabled={item.readonly} min={item.min} max={item.max} precision={0} />)}
+              })(<InputNumber min={item.min} max={item.max} precision={0} />)}
             </Form.Item>
           </Col>
         )
@@ -202,7 +203,7 @@
             <Form.Item label={
               item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -227,7 +228,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -303,7 +304,7 @@
       }
     }
     return (
-      <Form {...formItemLayout} className="model-tab-form">
+      <Form {...formItemLayout} style={{minHeight: '180px'}}>
         <Row gutter={24}>{this.getFields()}</Row>
       </Form>
     )
diff --git a/src/templates/sharecomponent/tabscomponent/tabform/index.scss b/src/templates/sharecomponent/tabscomponent/tabform/index.scss
index d9327f1..e69de29 100644
--- a/src/templates/sharecomponent/tabscomponent/tabform/index.scss
+++ b/src/templates/sharecomponent/tabscomponent/tabform/index.scss
@@ -1,16 +0,0 @@
-.model-tab-form {
-  min-height: 180px;
-  .anticon-question-circle {
-    color: #c49f47;
-    margin-right: 3px;
-  }
-  .ant-input-number {
-    width: 100%;
-    .ant-input-number-input:read-only {
-      color: red;
-      :hover {
-        border-color: #d9d9d9;
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/src/templates/sharecomponent/treesettingcomponent/index.scss b/src/templates/sharecomponent/treesettingcomponent/index.scss
index 2875bc1..1a2db19 100644
--- a/src/templates/sharecomponent/treesettingcomponent/index.scss
+++ b/src/templates/sharecomponent/treesettingcomponent/index.scss
@@ -36,8 +36,5 @@
     .ant-empty-normal {
       margin: 5px 0px;
     }
-    .ant-input-number {
-      width: 100%;
-    }
   }
 }
\ No newline at end of file
diff --git a/src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.jsx b/src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.jsx
index 208815c..0bf23eb 100644
--- a/src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.jsx
+++ b/src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, Tooltip, Icon, notification, InputNumber } from 'antd'
+import { Form, Row, Col, Input, Radio, Tooltip, notification, InputNumber } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -263,7 +264,7 @@
             {interType === 'inner' ? <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={funcTooltip}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鍐呴儴鍑芥暟
                 </Tooltip>
               }>
@@ -315,7 +316,7 @@
             {interType === 'system' ? <Col span={24} className="data-source" style={{paddingLeft: '7px'}}>
               <Form.Item help={'鏁版嵁ID锛�' + menu.MenuID} labelCol={{xs: { span: 24 }, sm: { span: 4 }}} wrapperCol={ {xs: { span: 24 }, sm: { span: 20 }} } label={
                 <Tooltip placement="topLeft" title={'浣跨敤绯荤粺鍑芥暟鏃讹紝闇�濉啓鏁版嵁婧愩�傛敞锛氭暟鎹潈闄愭浛鎹㈢ $@ -> /* 鎴� \'\'銆� @$ -> */ 鎴� \'\''}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   鏁版嵁婧�
                 </Tooltip>
               }>
@@ -327,7 +328,7 @@
             <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'鏁版嵁鍊煎瓧娈点��'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   Value
                 </Tooltip>
               }>
@@ -352,7 +353,7 @@
             <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'鏄剧ず鏂囧瓧瀛楁銆�'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   Label
                 </Tooltip>
               }>
@@ -377,7 +378,7 @@
             <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'鐖剁骇瀛楁銆�'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   Parent
                 </Tooltip>
               }>
@@ -419,7 +420,7 @@
             <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'鐖剁骇瀛楁鍊间笌椤剁骇鏍囪瘑鐩稿悓鏃讹紝瑙嗕负椤剁骇鑺傜偣銆�'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   椤剁骇鏍囪瘑
                 </Tooltip>
               }>
@@ -437,7 +438,7 @@
             <Col span={12}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'鏍呮牸甯冨眬锛屾瘡琛岀瓑鍒嗕负24鍒楋紝鏍戝舰姣斾緥鍙缃负2-12锛堟渶澶�50%锛�'}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   瀹藉害
                 </Tooltip>
               }>
diff --git a/src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.scss b/src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.scss
index a6d2df7..aeabe5f 100644
--- a/src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.scss
+++ b/src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.scss
@@ -13,10 +13,5 @@
         height: 150px;
       }
     }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
   }
-
 }
\ No newline at end of file
diff --git a/src/templates/sharecomponent/treesettingcomponent/settingform/index.scss b/src/templates/sharecomponent/treesettingcomponent/settingform/index.scss
index e8742ec..f2570ad 100644
--- a/src/templates/sharecomponent/treesettingcomponent/settingform/index.scss
+++ b/src/templates/sharecomponent/treesettingcomponent/settingform/index.scss
@@ -11,10 +11,6 @@
         height: 150px;
       }
     }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
   }
   .count-tip {
     position: absolute;
diff --git a/src/templates/subtableconfig/index.jsx b/src/templates/subtableconfig/index.jsx
index c561696..beed453 100644
--- a/src/templates/subtableconfig/index.jsx
+++ b/src/templates/subtableconfig/index.jsx
@@ -4,7 +4,8 @@
 import { is, fromJS } from 'immutable'
 import { DndProvider } from 'react-dnd'
 import HTML5Backend from 'react-dnd-html5-backend'
-import { Button, Card, Modal, Collapse, notification, Spin, Icon, Switch, Tooltip, Col } from 'antd'
+import { Button, Card, Modal, Collapse, notification, Spin, Switch, Tooltip, Col } from 'antd'
+import { QuestionCircleOutlined, RedoOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -1017,7 +1018,7 @@
                   {confActions.length > 0 ?
                     <p className="config-btn-title">
                       <Tooltip placement="topLeft" title="鐐瑰嚮鎸夐挳锛屽彲瀹屾垚鎴栨煡鐪嬫寜閽厤缃俊鎭��">
-                        <Icon type="question-circle" />
+                        <QuestionCircleOutlined className="mk-form-tip" />
                       </Tooltip>
                       {this.state.dict['header.menu.action.configurable']}
                     </p> : null
@@ -1051,7 +1052,7 @@
             <Card title={
               <div>
                 鏍囩锛堝瓙琛級椤甸潰閰嶇疆 
-                <Icon type="redo" style={{marginLeft: '10px'}} title="鍒锋柊鏍囩鍒楄〃" onClick={() => this.reloadTab(true)} />
+                <RedoOutlined style={{marginLeft: '10px'}} title="鍒锋柊鏍囩鍒楄〃" onClick={() => this.reloadTab(true)} />
               </div>
             } bordered={false} extra={
               <div>
diff --git a/src/templates/subtableconfig/index.scss b/src/templates/subtableconfig/index.scss
index 2012d7c..f17d953 100644
--- a/src/templates/subtableconfig/index.scss
+++ b/src/templates/subtableconfig/index.scss
@@ -94,10 +94,6 @@
         }
       }
     }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
     .config-button {
       min-width: 65px;
     }
@@ -177,12 +173,6 @@
         top: 10px;
       }
     }
-    // .anticon-question-circle {
-    //   color: #c49f47;
-    //   position: relative;
-    //   left: -15px;
-    //   top: 5px;
-    // }
   }
   .setting {
     overflow-y: scroll;
diff --git a/src/templates/subtableconfig/source.jsx b/src/templates/subtableconfig/source.jsx
index d8c8aa3..e29bb3f 100644
--- a/src/templates/subtableconfig/source.jsx
+++ b/src/templates/subtableconfig/source.jsx
@@ -39,7 +39,6 @@
         options: [],
         orderType: 'asc',
         match: 'like',
-        display: 'dropdown'
       }, {
         origin: true,
         uuid: Utils.getuuid(),
@@ -52,7 +51,6 @@
         options: [],
         orderType: 'asc',
         match: 'equal',
-        display: 'dropdown'
       }, {
         origin: true,
         uuid: Utils.getuuid(),
@@ -65,7 +63,6 @@
         options: [],
         orderType: 'asc',
         match: 'greater',
-        display: 'dropdown'
       }
     ],
     action: [
diff --git a/src/templates/treepageconfig/index.jsx b/src/templates/treepageconfig/index.jsx
index d1aa9bd..814810f 100644
--- a/src/templates/treepageconfig/index.jsx
+++ b/src/templates/treepageconfig/index.jsx
@@ -4,7 +4,8 @@
 import { is, fromJS } from 'immutable'
 import { DndProvider } from 'react-dnd'
 import HTML5Backend from 'react-dnd-html5-backend'
-import { Button, Card, Modal, Collapse, notification, Spin, Icon, Switch, Tooltip, Row, Col, Tree } from 'antd'
+import { Button, Card, Modal, Collapse, notification, Spin, Switch, Tooltip, Row, Col, Tree } from 'antd'
+import { QuestionCircleOutlined, RedoOutlined, SearchOutlined, FileOutlined, FolderOpenOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -681,7 +682,7 @@
                 {configTabs.length > 0 ?
                   <p className="config-btn-title">
                     <Tooltip placement="topLeft" title="鐐瑰嚮鎸夐挳锛屽彲瀹屾垚鎴栨煡鐪嬫爣绛鹃厤缃俊鎭��">
-                      <Icon type="question-circle" />
+                      <QuestionCircleOutlined className="mk-form-tip" />
                     </Tooltip>
                     {this.state.dict['header.menu.tab.configurable']}
                   </p> : null
@@ -705,7 +706,7 @@
             <Card title={
               <div>
                 {this.state.dict['header.menu.page.configurable']} 
-                <Icon type="redo" style={{marginLeft: '10px'}} title="鍒锋柊鏍囩鍒楄〃" onClick={() => this.reloadTab(true)} />
+                <RedoOutlined style={{marginLeft: '10px'}} title="鍒锋柊鏍囩鍒楄〃" onClick={() => this.reloadTab(true)} />
               </div>
             } bordered={false} extra={
               <div>
@@ -726,7 +727,7 @@
                     title={
                       <span className="tree-title">
                         <span className="title">{config.setting.title}</span>
-                        {config.setting.searchable !== 'false' ? <span className="ant-input-search ant-input-affix-wrapper"><span className="ant-input-suffix"><Icon type="search" /></span></span> : null}
+                        {config.setting.searchable !== 'false' ? <span className="ant-input-search ant-input-affix-wrapper"><span className="ant-input-suffix"><SearchOutlined /></span></span> : null}
                       </span>
                     }
                     bordered={false}
@@ -738,13 +739,13 @@
                         showIcon={config.setting.showIcon === 'true'}
                         showLine={config.setting.showLine === 'true'}
                       >
-                        <TreeNode icon={<Icon type="folder-open" />} title="parent 0" key="0-0">
-                          <TreeNode icon={<Icon type="file" />} title="leaf 0-0" key="0-0-0" isLeaf />
-                          <TreeNode icon={<Icon type="file" />} title="leaf 0-1" key="0-0-1" isLeaf />
+                        <TreeNode icon={<FolderOpenOutlined />} title="parent 0" key="0-0">
+                          <TreeNode icon={<FileOutlined />} title="leaf 0-0" key="0-0-0" isLeaf />
+                          <TreeNode icon={<FileOutlined />} title="leaf 0-1" key="0-0-1" isLeaf />
                         </TreeNode>
-                        <TreeNode icon={<Icon type="folder-open" />} title="parent 1" key="0-1">
-                          <TreeNode icon={<Icon type="file" />} title="leaf 1-0" key="0-1-0" isLeaf />
-                          <TreeNode icon={<Icon type="file" />} title="leaf 1-1" key="0-1-1" isLeaf />
+                        <TreeNode icon={<FolderOpenOutlined />} title="parent 1" key="0-1">
+                          <TreeNode icon={<FileOutlined />} title="leaf 1-0" key="0-1-0" isLeaf />
+                          <TreeNode icon={<FileOutlined />} title="leaf 1-1" key="0-1-1" isLeaf />
                         </TreeNode>
                       </Tree>
                     </div>
diff --git a/src/templates/treepageconfig/index.scss b/src/templates/treepageconfig/index.scss
index bf89c4a..7f5f634 100644
--- a/src/templates/treepageconfig/index.scss
+++ b/src/templates/treepageconfig/index.scss
@@ -85,10 +85,6 @@
         }
       }
     }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
-    }
     .config-button {
       min-width: 65px;
     }
@@ -212,7 +208,7 @@
       .model-table-tab-list .tab-line-list {
         padding-top: 0px;
         > .anticon-question-circle {
-          top: 10px;
+          top: 10px!important;
         }
         > .anticon-plus {
           top: 15px;
diff --git a/src/templates/zshare/createfunc/index.jsx b/src/templates/zshare/createfunc/index.jsx
index 0b19e93..f114886 100644
--- a/src/templates/zshare/createfunc/index.jsx
+++ b/src/templates/zshare/createfunc/index.jsx
@@ -5,7 +5,7 @@
 
 import Utils from '@/utils/utils.js'
 import Api from '@/api'
-import './index.scss'
+// import './index.scss'
 
 class CreateFunc extends Component {
   static propTypes = {
diff --git a/src/templates/zshare/createinterface/mutilform/index.jsx b/src/templates/zshare/createinterface/mutilform/index.jsx
index 9d53447..918e31e 100644
--- a/src/templates/zshare/createinterface/mutilform/index.jsx
+++ b/src/templates/zshare/createinterface/mutilform/index.jsx
@@ -1,7 +1,9 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, Select, Tooltip, Icon } from 'antd'
-import './index.scss'
+import { Form, Row, Col, Input, Radio, Select, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
+
+// import './index.scss'
 
 class MainSearch extends Component {
   static propTpyes = {
@@ -34,7 +36,7 @@
           <Col span={24} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -80,7 +82,7 @@
           <Col span={24} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -133,7 +135,7 @@
       }
     }
     return (
-      <Form {...formItemLayout} className="create-Interface-setting-form">
+      <Form {...formItemLayout}>
         <Row gutter={24}>{this.getFields()}</Row>
       </Form>
     )
diff --git a/src/templates/zshare/createinterface/mutilform/index.scss b/src/templates/zshare/createinterface/mutilform/index.scss
index f809f4d..e69de29 100644
--- a/src/templates/zshare/createinterface/mutilform/index.scss
+++ b/src/templates/zshare/createinterface/mutilform/index.scss
@@ -1,6 +0,0 @@
-.create-Interface-setting-form {
-  .anticon-question-circle {
-    color: #c49f47;
-    margin-right: 3px;
-  }
-}
\ No newline at end of file
diff --git a/src/templates/zshare/editTable/index.jsx b/src/templates/zshare/editTable/index.jsx
index 2d487c4..14c3554 100644
--- a/src/templates/zshare/editTable/index.jsx
+++ b/src/templates/zshare/editTable/index.jsx
@@ -7,11 +7,13 @@
 import Utils from '@/utils/utils.js'
 import ColorSketch from '@/mob/colorsketch'
 import PasteForm from '@/templates/zshare/pasteform'
+import asyncComponent from '@/utils/asyncComponent'
 import CusSwitch from './cusSwitch'
 import zhCN from '@/locales/zh-CN/model.js'
 import enUS from '@/locales/en-US/model.js'
 import './index.scss'
 
+const MkIcon = asyncComponent(() => import('@/components/mkIcon'))
 let eTDict = sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS
 const EditableContext = React.createContext()
 const { confirm } = Modal
@@ -85,6 +87,8 @@
       return <InputNumber min={min} max={max} precision={0} onPressEnter={() => this.getValue(form)} />
     } else if (inputType === 'color') {
       return <ColorSketch />
+    } else if (inputType === 'icon') {
+      return <MkIcon allowClear/>
     } else if (inputType === 'switch') {
       return <CusSwitch />
     } else if (inputType === 'select') {
diff --git a/src/templates/zshare/formconfig.jsx b/src/templates/zshare/formconfig.jsx
index b2ece7d..a1c6394 100644
--- a/src/templates/zshare/formconfig.jsx
+++ b/src/templates/zshare/formconfig.jsx
@@ -314,9 +314,9 @@
     }, {
       value: 'datemonth',
       text: Formdict['model.form.datemonth']
-    }, {
-      value: 'daterange',
-      text: Formdict['model.form.daterange']
+    // }, {
+    //   value: 'daterange',
+    //   text: Formdict['model.form.daterange']
     }]
   } else {
     typeOptions = [{
@@ -734,14 +734,14 @@
     {
       type: 'radio',
       key: 'labelShow',
-      label: '鏄剧ず鍚嶇О',
+      label: '鍚嶇О',
       initVal: card.labelShow || 'true',
       options: [{
         value: 'true',
-        text: Formdict['model.true']
+        text: '鏄剧ず'
       }, {
         value: 'false',
-        text: Formdict['model.false']
+        text: '闅愯棌'
       }]
     },
     {
@@ -2208,9 +2208,8 @@
  * @param {*} tabfields       // 鍙垏鎹㈣〃鍗�
  * @param {*} linkableFields  // 鍙叧鑱旇〃鍗�
  * @param {*} linksupFields   // 涓婄骇琛ㄥ崟
- * @param {*} subtable        // 鏄惁涓哄瓙琛ㄨ〃鍗�
  */
-export function getModalForm (card, inputfields = [], tabfields = [], linkableFields, linksupFields, subtable = false) {
+export function getModalForm (card, inputfields = [], tabfields = [], linkableFields, linksupFields) {
   let appType = sessionStorage.getItem('appType')
   let roleList = sessionStorage.getItem('sysRoles')
   if (roleList) {
@@ -2740,17 +2739,20 @@
       type: 'select',
       key: 'fileType',
       label: '鏄剧ず鏂瑰紡',
-      initVal: card.fileType || (appType === 'mob' ? 'picture-card' : 'text'),
+      initVal: card.fileType || 'text',
       options: [{
         value: 'text',
         text: '鏂囦欢'
-      }, {
+      },
+      {
         value: 'picture',
         text: '鍥炬枃淇℃伅'
-      }, {
+      },
+      {
         value: 'picture-card',
         text: '鍥剧墖鍗�'
-      }]
+      }],
+      forbid: appType === 'mob'
     },
     {
       type: 'number',
@@ -2947,20 +2949,20 @@
         text: 'nvarchar(50)'
       }]
     },
-    {
-      type: 'radio',
-      key: 'mode',
-      label: '妯″紡',
-      initVal: card.mode || 'picker',
-      options: [{
-        value: 'picker',
-        text: '閫夋嫨鍣�'
-      }, {
-        value: 'calendar',
-        text: '鏃ュ巻'
-      }],
-      forbid: appType !== 'mob'
-    },
+    // {
+    //   type: 'radio',
+    //   key: 'mode',
+    //   label: '妯″紡',
+    //   initVal: card.mode || 'picker',
+    //   options: [{
+    //     value: 'picker',
+    //     text: '閫夋嫨鍣�'
+    //   }, {
+    //     value: 'calendar',
+    //     text: '鏃ュ巻'
+    //   }],
+    //   forbid: appType !== 'mob'
+    // },
     {
       type: 'number',
       key: 'span',
diff --git a/src/templates/zshare/modalform/index.jsx b/src/templates/zshare/modalform/index.jsx
index ab6eb9b..a210a4b 100644
--- a/src/templates/zshare/modalform/index.jsx
+++ b/src/templates/zshare/modalform/index.jsx
@@ -2,6 +2,8 @@
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
 import { Form, Row, Col, Input, Select, Icon, Radio, notification, InputNumber, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
+
 import { formRule } from '@/utils/option.js'
 import { dateOptions } from '@/utils/option.js'
 import Utils from '@/utils/utils.js'
@@ -476,7 +478,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -499,7 +501,7 @@
             <Col span={12} key={index}>
               <Form.Item label={item.tooltip ?
                 <Tooltip placement="topLeft" title={item.tooltip}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   {item.label}
                 </Tooltip> : item.label
               }>
@@ -520,7 +522,7 @@
             <Col span={12} key={index}>
               <Form.Item label={item.tooltip ?
                 <Tooltip placement="topLeft" title={item.tooltip}>
-                  <Icon type="question-circle" />
+                  <QuestionCircleOutlined className="mk-form-tip" />
                   {item.label}
                 </Tooltip> : item.label
               }>
@@ -542,7 +544,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -576,7 +578,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -602,7 +604,7 @@
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -647,7 +649,7 @@
           <Col span={24} key={index}>
             <Form.Item className="text-msg" label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
diff --git a/src/templates/zshare/modalform/index.scss b/src/templates/zshare/modalform/index.scss
index 672e7e4..7e46fda 100644
--- a/src/templates/zshare/modalform/index.scss
+++ b/src/templates/zshare/modalform/index.scss
@@ -23,15 +23,8 @@
       width: 84%;
     }
   }
-  .ant-form-item-label .anticon-question-circle {
-    color: #c49f47;
-    margin-right: 3px;
-  }
   .ant-radio-group {
     white-space: nowrap;
-  }
-  .ant-input-number {
-    width: 100%;
   }
   .color-form-item {
     .ant-form-item-control {
diff --git a/src/templates/zshare/pasteform/index.jsx b/src/templates/zshare/pasteform/index.jsx
index b6c1af9..08ed804 100644
--- a/src/templates/zshare/pasteform/index.jsx
+++ b/src/templates/zshare/pasteform/index.jsx
@@ -49,6 +49,14 @@
     })
   }
 
+  submit = () => {
+    if (this.props.inputSubmit) {
+      setTimeout(() => {
+        this.props.inputSubmit()
+      }, 10)
+    }
+  }
+
   render() {
     const { getFieldDecorator } = this.props.form
     const formItemLayout = {
@@ -74,7 +82,7 @@
                     message: '璇疯緭鍏ラ厤缃俊鎭�!'
                   }
                 ]
-              })(<TextArea autoSize={{ minRows: 6, maxRows: 6 }} onPressEnter={() => this.props.inputSubmit && this.props.inputSubmit()}/>)}
+              })(<TextArea autoSize={{ minRows: 6, maxRows: 6 }} onPressEnter={this.submit}/>)}
             </Form.Item>
           </Col>
         </Row>
diff --git a/src/templates/zshare/unattended/settingform/index.jsx b/src/templates/zshare/unattended/settingform/index.jsx
index 2d44742..b8b2e47 100644
--- a/src/templates/zshare/unattended/settingform/index.jsx
+++ b/src/templates/zshare/unattended/settingform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Tooltip, Icon, Select, Radio, InputNumber } from 'antd'
+import { Form, Row, Col, Tooltip, Select, Radio, InputNumber } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 // import './index.scss'
 
@@ -62,7 +63,7 @@
           {enable === 'true' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鐢ㄤ簬鑷姩鎵ц鐨勬寜閽��">
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '3px'}} />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鎸夐挳
               </Tooltip>
             }>
@@ -84,7 +85,7 @@
           {enable === 'true' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鎸夐挳鎵ц鎴愬姛锛屽悗缁殑澶勭悊鏂瑰紡銆�">
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '3px'}} />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鎴愬姛鍚�
               </Tooltip>
             }>
@@ -101,7 +102,7 @@
           {enable === 'true' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鎸夐挳鎵ц澶辫触鏃讹紝鍚庣画鐨勫鐞嗘柟寮忋��">
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '3px'}} />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 澶辫触鍚�
               </Tooltip>
             }>
@@ -119,7 +120,7 @@
           {enable === 'true' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鐩搁偦涓ゆ潯鏁版嵁锛屾墽琛屾椂鐨勯棿闅旀椂闂达紝鏈�灏忎负1s銆�">
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '3px'}} />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鏁版嵁闂撮殧(s)
               </Tooltip>
             }>
diff --git a/src/templates/zshare/verifycard/billcodeform/index.jsx b/src/templates/zshare/verifycard/billcodeform/index.jsx
index a885185..8b6a946 100644
--- a/src/templates/zshare/verifycard/billcodeform/index.jsx
+++ b/src/templates/zshare/verifycard/billcodeform/index.jsx
@@ -1,7 +1,9 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Form, Row, Col, Select, Button, InputNumber, Input, Tooltip, Icon } from 'antd'
+import { Form, Row, Col, Select, Button, InputNumber, Input, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
+
 import { formRule } from '@/utils/option.js'
 import './index.scss'
 
@@ -351,8 +353,8 @@
           {TypeCharOne === 'Lp' ? <Col span={7}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="璇ユ爣璇嗙敤浜庣敓鎴愯鍙疯鍒�">
-                <Icon type="question-circle" />
-                {'鏍囪瘑'}
+                <QuestionCircleOutlined className="mk-form-tip" />
+                鏍囪瘑
               </Tooltip>
             }>
               {getFieldDecorator('mark', {
diff --git a/src/templates/zshare/verifycard/callbackcustomscript/index.jsx b/src/templates/zshare/verifycard/callbackcustomscript/index.jsx
index bed203c..0b5316b 100644
--- a/src/templates/zshare/verifycard/callbackcustomscript/index.jsx
+++ b/src/templates/zshare/verifycard/callbackcustomscript/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Button, notification, Modal, Tooltip, Icon, Radio, Select } from 'antd'
+import { Form, Row, Col, Button, notification, Modal, Tooltip, Radio, Select } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Utils from '@/utils/utils.js'
@@ -240,7 +241,7 @@
           <Col span={8} style={{whiteSpace: 'nowrap'}}>
             <Form.Item style={{marginBottom: 0}} label={
               <Tooltip placement="bottomLeft" title={'鑷畾涔夎剼鏈笌榛樿sql浣嶇疆鍏崇郴銆�'}>
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '5px'}} />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鎵ц浣嶇疆
               </Tooltip>
             }>
diff --git a/src/templates/zshare/verifycard/customscript/index.jsx b/src/templates/zshare/verifycard/customscript/index.jsx
index 1b758d4..2bf77c8 100644
--- a/src/templates/zshare/verifycard/customscript/index.jsx
+++ b/src/templates/zshare/verifycard/customscript/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Button, notification, Modal, Tooltip, Icon, Radio, Select } from 'antd'
+import { Form, Row, Col, Button, notification, Modal, Tooltip, Radio, Select } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Utils from '@/utils/utils.js'
@@ -252,7 +253,7 @@
           <Col span={8} style={{whiteSpace: 'nowrap'}}>
             <Form.Item style={{marginBottom: 0}} label={
               <Tooltip placement="bottomLeft" title={'鑷畾涔夎剼鏈笌榛樿sql浣嶇疆鍏崇郴銆�'}>
-                <Icon type="question-circle" style={{color: '#c49f47', marginRight: '5px'}} />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鎵ц浣嶇疆
               </Tooltip>
             }>
@@ -293,7 +294,7 @@
           <Col span={24} className="sql">
             <Form.Item label={
               <Tooltip placement="topLeft" title={'鏁版嵁妫�鏌ユ浛鎹㈢ $check@ -> \'\'銆� @check$ -> \'\'锛孍rrorCode绛変簬C鏃� $check@ -> /*銆� @check$ -> */'}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 sql
               </Tooltip>
             }>
diff --git a/src/templates/zshare/verifycard/index.jsx b/src/templates/zshare/verifycard/index.jsx
index 2db3ea3..5bc26a1 100644
--- a/src/templates/zshare/verifycard/index.jsx
+++ b/src/templates/zshare/verifycard/index.jsx
@@ -1,7 +1,8 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
-import { Form, Tabs, Row, Col, Radio, Button, Select, Popconfirm, Icon, notification, Modal, message, InputNumber, Tooltip, Typography } from 'antd'
+import { Form, Tabs, Row, Col, Radio, Button, Select, Popconfirm, notification, Modal, message, InputNumber, Tooltip, Typography } from 'antd'
+import { QuestionCircleOutlined, CheckCircleOutlined, StopOutlined, EditOutlined, SwapOutlined, DeleteOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -98,13 +99,13 @@
           (
             <div>
               {this.props.dict['model.status.forbidden']}
-              <Icon style={{marginLeft: '5px'}} type="stop" theme="twoTone" twoToneColor="#ff4d4f" />
+              <StopOutlined style={{marginLeft: '5px', color: '#ff4d4f'}} />
             </div>
           ) :
           (
             <div>
               {this.props.dict['model.status.open']}
-              <Icon style={{marginLeft: '5px'}} type="check-circle" theme="twoTone" twoToneColor="#52c41a" />
+              <CheckCircleOutlined style={{marginLeft: '5px', color: '#52c41a'}}/>
             </div>
           )
       }
@@ -134,13 +135,13 @@
           (
             <div>
               {this.props.dict['model.status.forbidden']}
-              <Icon style={{marginLeft: '5px'}} type="stop" theme="twoTone" twoToneColor="#ff4d4f" />
+              <StopOutlined style={{marginLeft: '5px', color: '#ff4d4f'}} />
             </div>
           ) :
           (
             <div>
               {this.props.dict['model.status.open']}
-              <Icon style={{marginLeft: '5px'}} type="check-circle" theme="twoTone" twoToneColor="#52c41a" />
+              <CheckCircleOutlined style={{marginLeft: '5px', color: '#52c41a'}}/>
             </div>
           )
       },
@@ -208,13 +209,13 @@
           (
             <div>
               {this.props.dict['model.status.forbidden']}
-              <Icon style={{marginLeft: '5px'}} type="stop" theme="twoTone" twoToneColor="#ff4d4f" />
+              <StopOutlined style={{marginLeft: '5px', color: '#ff4d4f'}} />
             </div>
           ) :
           (
             <div>
               {this.props.dict['model.status.open']}
-              <Icon style={{marginLeft: '5px'}} type="check-circle" theme="twoTone" twoToneColor="#52c41a" />
+              <CheckCircleOutlined style={{marginLeft: '5px', color: '#52c41a'}}/>
             </div>
           )
       }
@@ -260,13 +261,13 @@
           (
             <div>
               {this.props.dict['model.status.forbidden']}
-              <Icon style={{marginLeft: '5px'}} type="stop" theme="twoTone" twoToneColor="#ff4d4f" />
+              <StopOutlined style={{marginLeft: '5px', color: '#ff4d4f'}} />
             </div>
           ) :
           (
             <div>
               {this.props.dict['model.status.open']}
-              <Icon style={{marginLeft: '5px'}} type="check-circle" theme="twoTone" twoToneColor="#52c41a" />
+              <CheckCircleOutlined style={{marginLeft: '5px', color: '#52c41a'}}/>
             </div>
           )
       },
@@ -277,14 +278,14 @@
         dataIndex: 'operation',
         render: (text, record) =>
           (<div style={{textAlign: 'center'}}>
-            <span className="operation-btn" title={this.props.dict['model.edit']} onClick={() => this.handleEdit(record, 'customverify')} style={{color: '#1890ff'}}><Icon type="edit" /></span>
-            <span className="operation-btn" title={this.props.dict['header.form.status.change']} onClick={() => this.handleStatus(record, 'customverify')} style={{color: '#8E44AD'}}><Icon type="swap" /></span>
+            <span className="operation-btn" title={this.props.dict['model.edit']} onClick={() => this.handleEdit(record, 'customverify')} style={{color: '#1890ff'}}><EditOutlined /></span>
+            <span className="operation-btn" title={this.props.dict['header.form.status.change']} onClick={() => this.handleStatus(record, 'customverify')} style={{color: '#8E44AD'}}><SwapOutlined /></span>
             <Popconfirm
               overlayClassName="popover-confirm"
               title={this.props.dict['model.query.delete']}
               onConfirm={() => this.handleDelete(record, 'customverify')
             }>
-              <span className="operation-btn" style={{color: '#ff4d4f'}}><Icon type="delete" /></span>
+              <span className="operation-btn" style={{color: '#ff4d4f'}}><DeleteOutlined /></span>
             </Popconfirm>
           </div>)
       }
@@ -329,13 +330,13 @@
           (
             <div>
               {this.props.dict['model.status.forbidden']}
-              <Icon style={{marginLeft: '5px'}} type="stop" theme="twoTone" twoToneColor="#ff4d4f" />
+              <StopOutlined style={{marginLeft: '5px', color: '#ff4d4f'}} />
             </div>
           ) :
           (
             <div>
               {this.props.dict['model.status.open']}
-              <Icon style={{marginLeft: '5px'}} type="check-circle" theme="twoTone" twoToneColor="#52c41a" />
+              <CheckCircleOutlined style={{marginLeft: '5px', color: '#52c41a'}}/>
             </div>
           )
       },
@@ -346,14 +347,14 @@
         dataIndex: 'operation',
         render: (text, record) =>
           (<div style={{textAlign: 'center'}}>
-            <span className="operation-btn" title={this.props.dict['model.edit']} onClick={() => this.handleEdit(record, 'scripts')} style={{color: '#1890ff'}}><Icon type="edit" /></span>
-            <span className="operation-btn" title={this.props.dict['header.form.status.change']} onClick={() => this.handleStatus(record, 'scripts')} style={{color: '#8E44AD'}}><Icon type="swap" /></span>
+            <span className="operation-btn" title={this.props.dict['model.edit']} onClick={() => this.handleEdit(record, 'scripts')} style={{color: '#1890ff'}}><EditOutlined /></span>
+            <span className="operation-btn" title={this.props.dict['header.form.status.change']} onClick={() => this.handleStatus(record, 'scripts')} style={{color: '#8E44AD'}}><SwapOutlined /></span>
             <Popconfirm
               overlayClassName="popover-confirm"
               title={this.props.dict['model.query.delete']}
               onConfirm={() => this.handleDelete(record, 'scripts')
             }>
-              <span className="operation-btn" style={{color: '#ff4d4f'}}><Icon type="delete" /></span>
+              <span className="operation-btn" style={{color: '#ff4d4f'}}><DeleteOutlined /></span>
             </Popconfirm>
           </div>)
       }
@@ -396,13 +397,13 @@
           (
             <div>
               {this.props.dict['model.status.forbidden']}
-              <Icon style={{marginLeft: '5px'}} type="stop" theme="twoTone" twoToneColor="#ff4d4f" />
+              <StopOutlined style={{marginLeft: '5px', color: '#ff4d4f'}} />
             </div>
           ) :
           (
             <div>
               {this.props.dict['model.status.open']}
-              <Icon style={{marginLeft: '5px'}} type="check-circle" theme="twoTone" twoToneColor="#52c41a" />
+              <CheckCircleOutlined style={{marginLeft: '5px', color: '#52c41a'}}/>
             </div>
           )
       },
@@ -413,14 +414,14 @@
         dataIndex: 'operation',
         render: (text, record) =>
           (<div style={{textAlign: 'center'}}>
-            <span className="operation-btn" title={this.props.dict['model.edit']} onClick={() => this.handleEdit(record, 'cbscripts')} style={{color: '#1890ff'}}><Icon type="edit" /></span>
-            <span className="operation-btn" title={this.props.dict['header.form.status.change']} onClick={() => this.handleStatus(record, 'cbscripts')} style={{color: '#8E44AD'}}><Icon type="swap" /></span>
+            <span className="operation-btn" title={this.props.dict['model.edit']} onClick={() => this.handleEdit(record, 'cbscripts')} style={{color: '#1890ff'}}><EditOutlined /></span>
+            <span className="operation-btn" title={this.props.dict['header.form.status.change']} onClick={() => this.handleStatus(record, 'cbscripts')} style={{color: '#8E44AD'}}><SwapOutlined /></span>
             <Popconfirm
               overlayClassName="popover-confirm"
               title={this.props.dict['model.query.delete']}
               onConfirm={() => this.handleDelete(record, 'cbscripts')
             }>
-              <span className="operation-btn" style={{color: '#ff4d4f'}}><Icon type="delete" /></span>
+              <span className="operation-btn" style={{color: '#ff4d4f'}}><DeleteOutlined /></span>
             </Popconfirm>
           </div>)
       }
@@ -497,13 +498,13 @@
           (
             <div>
               {this.props.dict['model.status.forbidden']}
-              <Icon style={{marginLeft: '5px'}} type="stop" theme="twoTone" twoToneColor="#ff4d4f" />
+              <StopOutlined style={{marginLeft: '5px', color: '#ff4d4f'}} />
             </div>
           ) :
           (
             <div>
               {this.props.dict['model.status.open']}
-              <Icon style={{marginLeft: '5px'}} type="check-circle" theme="twoTone" twoToneColor="#52c41a" />
+              <CheckCircleOutlined style={{marginLeft: '5px', color: '#52c41a'}}/>
             </div>
           )
       },
@@ -514,14 +515,14 @@
         dataIndex: 'operation',
         render: (text, record) =>
           (<div style={{textAlign: 'center'}}>
-            <span className="operation-btn" title={this.props.dict['model.edit']} onClick={() => this.handleEdit(record, 'ordercode')} style={{color: '#1890ff'}}><Icon type="edit" /></span>
-            <span className="operation-btn" title={this.props.dict['header.form.status.change']} onClick={() => this.handleStatus(record, 'ordercode')} style={{color: '#8E44AD'}}><Icon type="swap" /></span>
+            <span className="operation-btn" title={this.props.dict['model.edit']} onClick={() => this.handleEdit(record, 'ordercode')} style={{color: '#1890ff'}}><EditOutlined /></span>
+            <span className="operation-btn" title={this.props.dict['header.form.status.change']} onClick={() => this.handleStatus(record, 'ordercode')} style={{color: '#8E44AD'}}><SwapOutlined /></span>
             <Popconfirm
               overlayClassName="popover-confirm"
               title={this.props.dict['model.query.delete']}
               onConfirm={() => this.handleDelete(record, 'ordercode')
             }>
-              <span className="operation-btn" style={{color: '#ff4d4f'}}><Icon type="delete" /></span>
+              <span className="operation-btn" style={{color: '#ff4d4f'}}><DeleteOutlined /></span>
             </Popconfirm>
           </div>)
       }
@@ -1426,7 +1427,7 @@
                 {this.props.card.sqlType !== 'custom' ? <Col span={8}>
                   <Form.Item label={
                     <Tooltip placement="bottomLeft" title={'榛樿sql鎵ц椤哄簭涓鸿嚜瀹氫箟鑴氭湰涔嬪墠'}>
-                      <Icon type="question-circle" style={{color: '#c49f47', marginRight: '5px'}} />
+                      <QuestionCircleOutlined className="mk-form-tip" />
                       榛樿sql
                     </Tooltip>
                   }>
@@ -1458,7 +1459,7 @@
                 {verify.accountdate === 'true' ? <Col span={8}>
                   <Form.Item label={
                     <Tooltip placement="bottomLeft" title={'楠岃瘉鏃ユ湡涓虹┖鏃讹紝榛樿涓哄綋澶┿��'}>
-                      <Icon type="question-circle" style={{color: '#c49f47', marginRight: '5px'}} />
+                      <QuestionCircleOutlined className="mk-form-tip" />
                       楠岃瘉鏃ユ湡
                     </Tooltip>
                   }>
@@ -1482,7 +1483,7 @@
                 <Col span={8}>
                   <Form.Item label={
                     <Tooltip placement="bottomLeft" title={'閫夋嫨鍙戦�佺煭淇℃椂锛岄渶瀹屽杽鐭俊璁剧疆銆�'}>
-                      <Icon type="question-circle" style={{color: '#c49f47', marginRight: '5px'}} />
+                      <QuestionCircleOutlined className="mk-form-tip" />
                       鍙戦�佺煭淇�
                     </Tooltip>
                   }>
@@ -1506,7 +1507,7 @@
                 {verify.noteEnable === 'true' ? <Col span={8}>
                   <Form.Item label={
                     <Tooltip placement="bottomLeft" title={'瀹炴椂鍙戦�佹渶澶氬悓鏃跺彂閫�5涓敤鎴凤紝瀹氭椂鍙戦�佹渶澶氬悓鏃跺彂閫�100涓敤鎴枫��'}>
-                      <Icon type="question-circle" style={{color: '#c49f47', marginRight: '5px'}} />
+                      <QuestionCircleOutlined className="mk-form-tip" />
                       鍙戦�佹柟寮�
                     </Tooltip>
                   }>
diff --git a/src/templates/zshare/verifycard/index.scss b/src/templates/zshare/verifycard/index.scss
index a5f843a..9fc9d9e 100644
--- a/src/templates/zshare/verifycard/index.scss
+++ b/src/templates/zshare/verifycard/index.scss
@@ -16,9 +16,6 @@
     font-size: 12px;
   }
   .verify-form {
-    .ant-input-number {
-      width: 100%;
-    }
     .sql {
       .ant-col-sm-8 {
         width: 10.5%;
@@ -57,10 +54,6 @@
       .mk-green {
         margin-bottom: 15px;
       }
-    }
-    .anticon-question-circle {
-      color: #c49f47;
-      margin-right: 3px;
     }
   }
   .custom-table .ant-empty {
diff --git a/src/utils/option.js b/src/utils/option.js
index 1111af7..ed22d33 100644
--- a/src/utils/option.js
+++ b/src/utils/option.js
@@ -716,7 +716,6 @@
     'close-circle',
     'check',
     'check-circle',
-    'check-square',
     'clock-circle',
     'warning',
     'stop'
diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js
index a29a1a9..928c462 100644
--- a/src/utils/utils-custom.js
+++ b/src/utils/utils-custom.js
@@ -274,7 +274,7 @@
           uuids.push(act.uuid)
         })
 
-        if (item.type === 'card' || item.type === 'carousel' || (item.type === 'table' && item.subtype === 'tablecard')) {
+        if (['card', 'carousel', 'timeline'].includes(item.type) || (item.type === 'table' && item.subtype === 'tablecard')) {
           item.subcards.forEach(_card => {
             _card.elements && _card.elements.forEach(cell => {
               if (cell.eleType !== 'button') return
@@ -365,7 +365,7 @@
           cell.uuid = this.getuuid()
           return cell
         })
-      } else if (item.type === 'card' || item.type === 'carousel' || (item.type === 'table' && item.subtype === 'tablecard')) {
+      } else if (['card', 'carousel', 'timeline'].includes(item.type) || (item.type === 'table' && item.subtype === 'tablecard')) {
         item.subcards.forEach(card => {
           card.uuid = this.getuuid()
           if (card.elements) {
@@ -561,7 +561,7 @@
         cell.uuid = this.getuuid()
         return cell
       })
-    } else if (item.type === 'card' || item.type === 'carousel' || (item.type === 'table' && item.subtype === 'tablecard')) {
+    } else if (['card', 'carousel', 'timeline'].includes(item.type) || (item.type === 'table' && item.subtype === 'tablecard')) {
       item.subcards.forEach(card => {
         card.uuid = this.getuuid()
         if (card.elements) {
diff --git a/src/utils/utils.js b/src/utils/utils.js
index 109ea9e..80283fb 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -735,9 +735,11 @@
     arrfield = arrfield.join(',')
 
     if (item.orderBy) {
-      sql = `select ${item.type === 'checkcard' ? 'top 20' : ''} ${arrfield} from (select distinct ${arrfield},${item.orderBy} as orderfield from ${_datasource} ) a order by orderfield ${item.orderType}`
+      // sql = `select ${item.type === 'checkcard' ? 'top 20' : ''} ${arrfield} from (select distinct ${arrfield},${item.orderBy} as orderfield from ${_datasource} ) a order by orderfield ${item.orderType}`
+      sql = `select distinct ${arrfield},${item.orderBy} as orderfield from ${_datasource} order by orderfield ${item.orderType}`
     } else {
-      sql = `select ${item.type === 'checkcard' ? 'top 20' : ''} ${arrfield} from (select distinct ${arrfield} from ${_datasource}) a`
+      // sql = `select ${item.type === 'checkcard' ? 'top 20' : ''} ${arrfield} from (select distinct ${arrfield} from ${_datasource}) a`
+      sql = `select distinct ${arrfield} from ${_datasource}`
     }
 
     if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺
diff --git a/src/views/appcheck/index.jsx b/src/views/appcheck/index.jsx
index 4343b23..7317ebb 100644
--- a/src/views/appcheck/index.jsx
+++ b/src/views/appcheck/index.jsx
@@ -1,5 +1,6 @@
 import React, {Component} from 'react'
-import { Spin, notification, Table, ConfigProvider, Typography, Row, Col, Tooltip, Icon } from 'antd'
+import { Spin, notification, Table, ConfigProvider, Typography, Row, Col, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import enUS from 'antd/es/locale/en_US'
 import zhCN from 'antd/es/locale/zh_CN'
 
@@ -211,7 +212,7 @@
                         <div className="app-item">
                           {binding ? <div className="label">
                             <Tooltip placement="topLeft" title="寰俊鍏紬鍙风櫥褰曟椂锛岀郴缁熺敤鎴蜂笌寰俊鐢ㄦ埛鐨勭粦瀹氭柟寮忋��">
-                              <Icon type="question-circle" />
+                              <QuestionCircleOutlined className="mk-form-tip" />
                               鐢ㄦ埛缁戝畾:
                             </Tooltip>
                           </div> : null}
diff --git a/src/views/appcheck/index.scss b/src/views/appcheck/index.scss
index d6372c4..0b78ef2 100644
--- a/src/views/appcheck/index.scss
+++ b/src/views/appcheck/index.scss
@@ -65,10 +65,6 @@
             width: 40%;
             text-align: right;
             color: rgba(0, 0, 0, 0.65);
-            .anticon-question-circle {
-              color: #c49f47;
-              margin-right: 3px;
-            }
           }
           .content {
             width: 60%;
diff --git a/src/views/appmanage/index.jsx b/src/views/appmanage/index.jsx
index acb086b..3f34590 100644
--- a/src/views/appmanage/index.jsx
+++ b/src/views/appmanage/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import { fromJS } from 'immutable'
-import { Spin, notification, Input, Button, Table, Modal, ConfigProvider, Typography, Row, Col, Tooltip, Icon } from 'antd'
+import { Spin, notification, Input, Button, Table, Modal, ConfigProvider, Typography, Row, Col, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 import md5 from 'md5'
 import enUS from 'antd/es/locale/en_US'
@@ -1076,7 +1077,7 @@
                         <div className="app-item">
                           {binding ? <div className="label">
                             <Tooltip placement="topLeft" title="寰俊鍏紬鍙风櫥褰曟椂锛岀郴缁熺敤鎴蜂笌寰俊鐢ㄦ埛鐨勭粦瀹氭柟寮忋��">
-                              <Icon type="question-circle" />
+                              <QuestionCircleOutlined className="mk-form-tip" />
                               鐢ㄦ埛缁戝畾:
                             </Tooltip>
                           </div> : null}
diff --git a/src/views/appmanage/index.scss b/src/views/appmanage/index.scss
index ca21047..2594659 100644
--- a/src/views/appmanage/index.scss
+++ b/src/views/appmanage/index.scss
@@ -85,10 +85,6 @@
             width: 40%;
             text-align: right;
             color: rgba(0, 0, 0, 0.65);
-            .anticon-question-circle {
-              color: #c49f47;
-              margin-right: 3px;
-            }
           }
           .content {
             width: 60%;
diff --git a/src/views/appmanage/mutilform/index.jsx b/src/views/appmanage/mutilform/index.jsx
index f27151f..b7f2a1c 100644
--- a/src/views/appmanage/mutilform/index.jsx
+++ b/src/views/appmanage/mutilform/index.jsx
@@ -1,7 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { Form, Row, Col, Input } from 'antd'
-import './index.scss'
+// import './index.scss'
 
 class MainSearch extends Component {
   static propTpyes = {
@@ -47,7 +47,7 @@
       }
     }
     return (
-      <Form {...formItemLayout} className="mob-card-edit-form">
+      <Form {...formItemLayout} style={{padding: '0px 24px 20px'}}>
         <Row gutter={24}>
           <Col span={24}>
             <Form.Item label="搴旂敤鍚�">
diff --git a/src/views/appmanage/mutilform/index.scss b/src/views/appmanage/mutilform/index.scss
index 28344fe..e69de29 100644
--- a/src/views/appmanage/mutilform/index.scss
+++ b/src/views/appmanage/mutilform/index.scss
@@ -1,4 +0,0 @@
-.mob-card-edit-form {
-  padding: 0px 24px 20px;
-
-}
\ No newline at end of file
diff --git a/src/views/appmanage/scriptform/index.jsx b/src/views/appmanage/scriptform/index.jsx
index 5ed14e9..39bd2ee 100644
--- a/src/views/appmanage/scriptform/index.jsx
+++ b/src/views/appmanage/scriptform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Select, notification, Tooltip, Icon } from 'antd'
+import { Form, Row, Col, Input, Select, notification, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -161,7 +162,7 @@
           <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="1銆佸垵娆″崌绾ф垨搴旂敤鍩烘湰淇℃伅淇敼鏃讹紝璇烽鍏堟坊鍔犲簲鐢紙鍩烘湰淇℃伅锛夛紱2銆佸瓙搴旂敤鏁翠綋鍗囩骇鏃讹紝璇锋坊鍔犲瓙搴旂敤锛堝崌绾у唴瀹瑰寘鎷〉闈㈠強鏉冮檺鏍戯級锛�3銆佸崟涓〉闈㈠崌绾ф椂锛岃娣诲姞椤甸潰锛�4銆佹秹鍙婃潈闄愭洿鏂版椂锛岃娣诲姞鏉冮檺鏍�">
-                <Icon style={{color: '#c49f47', marginRight: '5px'}} type="question-circle" />绫诲瀷
+                <QuestionCircleOutlined className="mk-form-tip" />绫诲瀷
               </Tooltip>
             }>
               {getFieldDecorator('VType', {
diff --git a/src/views/appmanage/submutilform/index.jsx b/src/views/appmanage/submutilform/index.jsx
index 00ddbb5..a25aa9e 100644
--- a/src/views/appmanage/submutilform/index.jsx
+++ b/src/views/appmanage/submutilform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Select, Radio, Input, Tooltip, Icon, notification, InputNumber, Checkbox } from 'antd'
+import { Form, Row, Col, Select, Radio, Input, Tooltip, notification, InputNumber, Checkbox } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import asyncComponent from '@/utils/asyncComponent'
 import './index.scss'
@@ -158,7 +159,7 @@
           {typename !== 'pc' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="浣跨敤鍏紬鍙锋巿鏉冪櫥褰曟椂锛屾槸鍚﹂渶瑕佺粦瀹氱敤鎴枫��">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鐢ㄦ埛缁戝畾
               </Tooltip>
             }>
@@ -175,7 +176,7 @@
           {typename !== 'pc' && user_binding.includes('sms_vcode') ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鐭俊妯℃澘鍙湪绠$悊绯荤粺 HS-濂囦簯鐭俊妯℃澘 澶勬坊鍔犮��">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鐭俊妯℃澘
               </Tooltip>
             }>
@@ -213,7 +214,7 @@
           {typename !== 'pc' && user_binding.length > 0 ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="浣跨敤寰俊鎺堟潈鐧诲綍鏃讹紝缁戝畾鐢ㄦ埛椤甸潰鐨勭増鏉冨0鏄庯紝娉細鍙坊鍔爃tml鏍囩銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鐗堟潈
               </Tooltip>
             }>
@@ -225,7 +226,7 @@
           {typename !== 'pc' && user_binding.length > 0 ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="浣跨敤寰俊鎺堟潈鐧诲綍鏃讹紝缁戝畾鐢ㄦ埛椤甸潰鐨凩OGO銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 LOGO
               </Tooltip>
             }>
@@ -239,7 +240,7 @@
           {typename !== 'pc' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鍦ㄤ娇鐢ㄦ槑绉戜簯APP鏃讹紝椤甸潰鐨勫垏鎹㈡ā寮�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 搴旂敤妯″紡
               </Tooltip>
             }>
@@ -256,7 +257,7 @@
           {typename !== 'pc' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鍦ㄤ娇鐢ㄦ槑绉戜簯APP鏃讹紝涓斿湪app妯″紡涓棤鏁�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 寤惰繜鍔犺浇(ms)
               </Tooltip>
             }>
@@ -268,7 +269,7 @@
           {typename !== 'pc' ? <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鍦ㄤ娇鐢ㄦ槑绉戜簯APP鏃讹紝鐘舵�佹爮鐨勫瓧浣撻鑹层��">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鐘舵�佹爮
               </Tooltip>
             }>
diff --git a/src/views/appmanage/submutilform/index.scss b/src/views/appmanage/submutilform/index.scss
index 92b60f8..4adee58 100644
--- a/src/views/appmanage/submutilform/index.scss
+++ b/src/views/appmanage/submutilform/index.scss
@@ -1,10 +1,6 @@
 .sub-app-edit-form {
   padding: 0px 24px 20px;
 
-  .anticon-question-circle {
-    color: #c49f47;
-    margin-right: 3px;
-  }
   .mk-source-wrap {
     .ant-radio-button-wrapper:last-child {
       display: none;
@@ -12,9 +8,6 @@
     .ant-radio-button-wrapper:not(:first-child) {
       border-radius: 0 4px 4px 0;
     }
-  }
-  .ant-input-number {
-    width: 100%;
   }
   .ant-form-item-control {
     height: 40px;
diff --git a/src/views/appmanage/transform/index.jsx b/src/views/appmanage/transform/index.jsx
index c68aaf9..c6abb35 100644
--- a/src/views/appmanage/transform/index.jsx
+++ b/src/views/appmanage/transform/index.jsx
@@ -1,7 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { Form, Row, Col, Input } from 'antd'
-import './index.scss'
+// import './index.scss'
 
 class MainSearch extends Component {
   static propTpyes = {
@@ -47,7 +47,7 @@
       }
     }
     return (
-      <Form {...formItemLayout} className="mob-card-edit-form">
+      <Form {...formItemLayout} style={{padding: '0px 24px 20px'}}>
         <Row gutter={24}>
           {type !== 'edit' ? <Col span={24}>
             <Form.Item label="浼犺緭鍙�">
diff --git a/src/views/appmanage/transform/index.scss b/src/views/appmanage/transform/index.scss
index 28344fe..e69de29 100644
--- a/src/views/appmanage/transform/index.scss
+++ b/src/views/appmanage/transform/index.scss
@@ -1,4 +0,0 @@
-.mob-card-edit-form {
-  padding: 0px 24px 20px;
-
-}
\ No newline at end of file
diff --git a/src/views/menudesign/homeform/index.jsx b/src/views/menudesign/homeform/index.jsx
index 121644e..db119a5 100644
--- a/src/views/menudesign/homeform/index.jsx
+++ b/src/views/menudesign/homeform/index.jsx
@@ -1,10 +1,11 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Radio, Icon, Tooltip, InputNumber, notification } from 'antd'
+import { Form, Row, Col, Radio, Tooltip, InputNumber, notification } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import Api from '@/api'
 import options from '@/store/options.js'
-import './index.scss'
+// import './index.scss'
 
 class CustomMenuForm extends Component {
   static propTpyes = {
@@ -125,12 +126,12 @@
     }
 
     return (
-      <Form {...formItemLayout} className="custom-menu-form">
+      <Form {...formItemLayout}>
         <Row>
           <Col span={24}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="瀵逛簬涓嶇粡甯告�у彉鍔ㄧ殑淇℃伅锛岀紦瀛樻暟鎹湁鍔╀簬鎻愰珮鏌ヨ鏁堢巼銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 缂撳瓨鏁版嵁
               </Tooltip>
             }>
diff --git a/src/views/menudesign/homeform/index.scss b/src/views/menudesign/homeform/index.scss
index 71a1a33..e69de29 100644
--- a/src/views/menudesign/homeform/index.scss
+++ b/src/views/menudesign/homeform/index.scss
@@ -1,10 +0,0 @@
-.custom-menu-form {
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
-  .ant-input-number {
-    width: 100%;
-  }
-}
\ No newline at end of file
diff --git a/src/views/menudesign/index.jsx b/src/views/menudesign/index.jsx
index 5e8086f..66ce2e4 100644
--- a/src/views/menudesign/index.jsx
+++ b/src/views/menudesign/index.jsx
@@ -411,7 +411,7 @@
               _sort++
             })
           })
-        } else if (item.type === 'carousel') {
+        } else if (item.type === 'carousel' || item.type === 'timeline') {
           item.subcards.forEach(card => {
             card.elements && card.elements.forEach(cell => {
               if (cell.eleType !== 'button') return
diff --git a/src/views/menudesign/menuform/index.jsx b/src/views/menudesign/menuform/index.jsx
index 2e62681..0b3fbbd 100644
--- a/src/views/menudesign/menuform/index.jsx
+++ b/src/views/menudesign/menuform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Select, notification, Radio, Icon, Tooltip, InputNumber, Switch } from 'antd'
+import { Form, Row, Col, Input, Select, notification, Radio, Tooltip, InputNumber, Switch } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import Api from '@/api'
 import options from '@/store/options.js'
@@ -291,7 +292,7 @@
           <Col span={24}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="瀵逛簬涓嶇粡甯告�у彉鍔ㄧ殑淇℃伅锛岀紦瀛樻暟鎹湁鍔╀簬鎻愰珮鏌ヨ鏁堢巼銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 缂撳瓨鏁版嵁
               </Tooltip>
             }>
@@ -308,7 +309,7 @@
           <Col span={24}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="璺宠繃鏉冮檺楠岃瘉鏃讹紝椤甸潰涓粍浠跺強鎸夐挳涓嶅湪杩涜鏉冮檺鎺у埗銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鏉冮檺楠岃瘉
               </Tooltip>
             }>
diff --git a/src/views/menudesign/menuform/index.scss b/src/views/menudesign/menuform/index.scss
index fb20291..fa61282 100644
--- a/src/views/menudesign/menuform/index.scss
+++ b/src/views/menudesign/menuform/index.scss
@@ -1,12 +1,4 @@
 .custom-menu-form {
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
-  .ant-input-number {
-    width: 100%;
-  }
   .ant-form-item {
     height: 50px;
     .ant-form-explain {
diff --git a/src/views/menudesign/printmenuform/index.jsx b/src/views/menudesign/printmenuform/index.jsx
index b9204e6..12514d8 100644
--- a/src/views/menudesign/printmenuform/index.jsx
+++ b/src/views/menudesign/printmenuform/index.jsx
@@ -1,8 +1,9 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, InputNumber, Select, Radio, Tooltip, Icon } from 'antd'
+import { Form, Row, Col, InputNumber, Select, Radio, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
-import './index.scss'
+// import './index.scss'
 
 class MainSearch extends Component {
   static propTpyes = {
@@ -126,7 +127,7 @@
     }
 
     return (
-      <Form {...formItemLayout} className="print-menu-form">
+      <Form {...formItemLayout}>
         <Row>
           <Col span={24}>
             <Form.Item label="鎵撳嵃灏哄">
@@ -219,7 +220,7 @@
           <Col span={24}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="閽堝涓嶈鍒欑焊寮狅紝鍙嚜瀹氫箟璁剧疆鎵撳嵃楂樺害鍜屽搴︼紝娉細鍚屾椂璁剧疆鎵撳嵃瀹藉害鍜岄珮搴﹀悗鏂瑰彲鐢熸晥銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鑷畾涔�
               </Tooltip>
             }>
diff --git a/src/views/menudesign/printmenuform/index.scss b/src/views/menudesign/printmenuform/index.scss
index 0295f37..e69de29 100644
--- a/src/views/menudesign/printmenuform/index.scss
+++ b/src/views/menudesign/printmenuform/index.scss
@@ -1,10 +0,0 @@
-.print-menu-form {
-  .ant-input-number {
-    width: 100%;
-  }
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
-}
\ No newline at end of file
diff --git a/src/views/mobdesign/index.jsx b/src/views/mobdesign/index.jsx
index f2cef5a..ff03285 100644
--- a/src/views/mobdesign/index.jsx
+++ b/src/views/mobdesign/index.jsx
@@ -742,7 +742,7 @@
               })
             })
           })
-        } else if (item.type === 'carousel') {
+        } else if (item.type === 'carousel' || item.type === 'timeline') {
           item.subcards.forEach(card => {
             card.elements && card.elements.forEach(cell => {
               if (cell.eleType !== 'button') return
diff --git a/src/views/mobdesign/menuform/index.jsx b/src/views/mobdesign/menuform/index.jsx
index fbd2a07..97f4805 100644
--- a/src/views/mobdesign/menuform/index.jsx
+++ b/src/views/mobdesign/menuform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, Icon, Tooltip, InputNumber } from 'antd'
+import { Form, Row, Col, Input, Radio, Tooltip, InputNumber } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import asyncComponent from '@/utils/asyncComponent'
 import './index.scss'
@@ -105,7 +106,7 @@
           <Col span={24}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="瀵逛簬涓嶇粡甯告�у彉鍔ㄧ殑淇℃伅锛岀紦瀛樻暟鎹湁鍔╀簬鎻愰珮鏌ヨ鏁堢巼銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 缂撳瓨鏁版嵁
               </Tooltip>
             }>
@@ -122,7 +123,7 @@
           <Col span={24}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="璺宠繃鏉冮檺楠岃瘉鏃讹紝椤甸潰涓粍浠跺強鎸夐挳涓嶅湪杩涜鏉冮檺鎺у埗銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鏉冮檺楠岃瘉
               </Tooltip>
             }>
@@ -139,7 +140,7 @@
           <Col span={24}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="浣跨敤鐧诲綍楠岃瘉鍚庯紝鐢ㄦ埛蹇呴』鐧诲綍绯荤粺鍚庢墠鍙互璁块棶锛屾敞锛氬惈鏈夌櫥褰曠粍浠剁殑椤甸潰涓棤鏁堛��">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鐧诲綍楠岃瘉
               </Tooltip>
             }>
@@ -183,7 +184,7 @@
           <Col span={24}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鍦ㄦ槑绉戜簯APP涓湁鏁堛��">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 骞垮憡椤�
               </Tooltip>
             }>
@@ -209,7 +210,7 @@
           <Col span={24}>
             <Form.Item className="status-bar" label={
               <Tooltip placement="topLeft" title="鍦ㄦ槑绉戜簯APP涓紝鐘舵�佹爮鐨勮儗鏅壊銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鐘舵�佹爮
               </Tooltip>
             }>
diff --git a/src/views/mobdesign/menuform/index.scss b/src/views/mobdesign/menuform/index.scss
index 8556632..6bfb57a 100644
--- a/src/views/mobdesign/menuform/index.scss
+++ b/src/views/mobdesign/menuform/index.scss
@@ -1,12 +1,4 @@
 .custom-menu-form {
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
-  .ant-input-number {
-    width: 100%;
-  }
   .ant-form-item {
     height: 50px;
     .ant-form-explain {
diff --git a/src/views/pcdesign/index.jsx b/src/views/pcdesign/index.jsx
index 7d2fd86..4c94c51 100644
--- a/src/views/pcdesign/index.jsx
+++ b/src/views/pcdesign/index.jsx
@@ -823,7 +823,7 @@
               }
             })
           })
-        } else if (item.type === 'carousel') {
+        } else if (item.type === 'carousel' || item.type === 'timeline') {
           item.subcards.forEach(card => {
             card.elements && card.elements.forEach(cell => {
               if (cell.eleType !== 'button') return
diff --git a/src/views/pcdesign/menuform/index.jsx b/src/views/pcdesign/menuform/index.jsx
index 7a4c855..4c05fd5 100644
--- a/src/views/pcdesign/menuform/index.jsx
+++ b/src/views/pcdesign/menuform/index.jsx
@@ -1,6 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Radio, Icon, Tooltip, InputNumber } from 'antd'
+import { Form, Row, Col, Input, Radio, Tooltip, InputNumber } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import './index.scss'
 
@@ -94,7 +95,7 @@
           <Col span={24}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="瀵逛簬涓嶇粡甯告�у彉鍔ㄧ殑淇℃伅锛岀紦瀛樻暟鎹湁鍔╀簬鎻愰珮鏌ヨ鏁堢巼銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 缂撳瓨鏁版嵁
               </Tooltip>
             }>
@@ -111,7 +112,7 @@
           <Col span={24}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="璺宠繃鏉冮檺楠岃瘉鏃讹紝椤甸潰涓粍浠跺強鎸夐挳涓嶅湪杩涜鏉冮檺鎺у埗銆�">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鏉冮檺楠岃瘉
               </Tooltip>
             }>
@@ -128,7 +129,7 @@
           <Col span={24}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="浣跨敤鐧诲綍楠岃瘉鍚庯紝鐢ㄦ埛蹇呴』鐧诲綍绯荤粺鍚庢墠鍙互璁块棶锛屾敞锛氬惈鏈夌櫥褰曠粍浠剁殑椤甸潰涓棤鏁堛��">
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 鐧诲綍楠岃瘉
               </Tooltip>
             }>
diff --git a/src/views/pcdesign/menuform/index.scss b/src/views/pcdesign/menuform/index.scss
index fb20291..fa61282 100644
--- a/src/views/pcdesign/menuform/index.scss
+++ b/src/views/pcdesign/menuform/index.scss
@@ -1,12 +1,4 @@
 .custom-menu-form {
-  .anticon-question-circle {
-    color: #c49f47;
-    position: relative;
-    left: -3px;
-  }
-  .ant-input-number {
-    width: 100%;
-  }
   .ant-form-item {
     height: 50px;
     .ant-form-explain {
diff --git a/src/views/printTemplate/mutilform/index.jsx b/src/views/printTemplate/mutilform/index.jsx
index 120c3fd..4824e2b 100644
--- a/src/views/printTemplate/mutilform/index.jsx
+++ b/src/views/printTemplate/mutilform/index.jsx
@@ -1,9 +1,10 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Form, Row, Col, Input, InputNumber, Select, Tooltip, Icon } from 'antd'
+import { Form, Row, Col, Input, InputNumber, Select, Tooltip } from 'antd'
+import { QuestionCircleOutlined } from '@ant-design/icons'
+
 import { formRule } from '@/utils/option.js'
-// import FileUpload from '@/tabviews/zshare/fileupload'
 import asyncComponent from '@/utils/asyncComponent'
 import './index.scss'
 
@@ -230,7 +231,7 @@
           <Col span={24} key={index}>
             <Form.Item label={
               item.tooltip ? <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
@@ -253,7 +254,7 @@
           <Col span={24} key={index}>
             <Form.Item label={
               item.tooltip ? <Tooltip placement="topLeft" title={item.tooltip}>
-                <Icon type="question-circle" />
+                <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
               </Tooltip> : item.label
             }>
diff --git a/src/views/printTemplate/mutilform/index.scss b/src/views/printTemplate/mutilform/index.scss
index 006a247..5a3036a 100644
--- a/src/views/printTemplate/mutilform/index.scss
+++ b/src/views/printTemplate/mutilform/index.scss
@@ -31,13 +31,6 @@
       }
     }
   }
-  .anticon-question-circle {
-    color: #c49f47;
-    margin-right: 3px;
-  }
-  .ant-input-number {
-    width: 100%;
-  }
   .ant-form-explain {
     overflow:hidden;
     text-overflow:ellipsis;

--
Gitblit v1.8.0