From 5046d0d13dc6a8563b8e54e31913bc44cfa1072f Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 26 四月 2022 19:23:18 +0800
Subject: [PATCH] 2022-04-26

---
 src/components/normalform/modalform/index.scss                                    |    5 
 src/templates/zshare/modalform/index.jsx                                          |   68 
 src/mob/components/topbar/normal-navbar/index.scss                                |    9 
 src/menu/components/chart/antv-pie/chartcompile/formconfig.jsx                    |   23 
 src/tabviews/formtab/index.jsx                                                    |   27 
 src/menu/components/timeline/normal-timeline/index.jsx                            |    1 
 src/tabviews/custom/components/editor/braft-editor/index.jsx                      |    4 
 src/tabviews/zshare/mutilform/index.scss                                          |   10 
 src/menu/components/form/dragtitle/options.jsx                                    |    2 
 src/mob/mobshell/index.jsx                                                        |    8 
 src/menu/components/card/balcony/options.jsx                                      |   31 
 src/templates/zshare/verifycard/customscript/index.jsx                            |   57 
 src/views/menudesign/printmenuform/index.jsx                                      |    6 
 src/locales/zh-CN/model.js                                                        |    1 
 src/menu/components/chart/antv-scatter/index.jsx                                  |    1 
 src/menu/components/table/edit-table/columns/editColumn/index.scss                |   25 
 src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.jsx |   11 
 src/menu/components/chart/antv-dashboard/chartcompile/formconfig.jsx              |   24 
 public/README.txt                                                                 |    5 
 src/menu/components/table/edit-table/columns/editColumn/index.jsx                 |  405 
 src/templates/zshare/editTable/index.scss                                         |   16 
 src/tabviews/zshare/actionList/changeuserbutton/index.jsx                         |    7 
 src/menu/components/form/normal-form/index.scss                                   |    6 
 src/menu/components/table/edit-table/columns/tableIn/index.scss                   |    2 
 src/menu/datasource/verifycard/index.jsx                                          |   33 
 src/assets/css/main.scss                                                          |   41 
 src/mob/components/navbar/normal-navbar/menus/menuform/index.jsx                  |   40 
 src/components/header/index.scss                                                  |   19 
 src/menu/components/card/cardcellcomponent/index.jsx                              |   42 
 src/mob/components/navbar/normal-navbar/menus/drags/card.jsx                      |    1 
 src/menu/components/form/tab-form/index.jsx                                       |   39 
 src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx    |    2 
 src/pc/menushell/card.jsx                                                         |    7 
 src/menu/components/carousel/prop-card/index.jsx                                  |    1 
 src/mob/searchconfig/searchdragelement/card.jsx                                   |   11 
 src/menu/components/search/main-search/dragsearch/card.jsx                        |   20 
 src/menu/components/card/cardcomponent/index.jsx                                  |    5 
 src/templates/modalconfig/dragelement/index.scss                                  |   10 
 src/menu/components/chart/antv-pie/index.jsx                                      |    1 
 src/menu/components/table/edit-table/columns/index.scss                           |    8 
 src/menu/components/card/prop-card/index.jsx                                      |   23 
 src/templates/zshare/customscript/index.jsx                                       |   12 
 src/menu/components/tabs/tabcomponents/card.jsx                                   |    6 
 src/templates/zshare/modalform/modaleditable/index.jsx                            |   51 
 src/menu/components/tabs/paste/index.jsx                                          |   11 
 src/menu/components/table/edit-table/columns/index.jsx                            |   31 
 src/tabviews/custom/components/chart/antv-bar-line/index.jsx                      |   35 
 package-lock.json                                                                 |   27 
 src/assets/css/viewstyle.scss                                                     |    7 
 src/tabviews/custom/components/chart/antv-dashboard/index.jsx                     |    4 
 src/views/login/loginform.jsx                                                     |    3 
 src/menu/components/share/actioncomponent/dragaction/card.jsx                     |   12 
 src/tabviews/verupmanage/subtabtable/index.jsx                                    |   38 
 src/tabviews/zshare/topSearch/index.jsx                                           |   42 
 src/menu/components/form/tab-form/index.scss                                      |    6 
 .VSCodeCounter/2022-03-01_15-52-00/details.md                                     | 1007 +++
 src/menu/components/card/prop-card/index.scss                                     |   26 
 src/templates/sharecomponent/searchcomponent/dragsearch/card.jsx                  |   31 
 src/menu/components/chart/chart-custom/index.jsx                                  |    1 
 src/menu/components/card/cardsimplecomponent/options.jsx                          |    2 
 src/tabviews/custom/components/table/edit-table/index.jsx                         |  298 
 src/templates/sharecomponent/columncomponent/dragcolumn/index.jsx                 |   19 
 src/mob/components/tabs/tabcomponents/index.jsx                                   |   26 
 src/api/index.js                                                                  |   25 
 src/mob/components/formdragelement/index.scss                                     |   28 
 src/mob/mobshell/card.jsx                                                         |   12 
 src/menu/sysinterface/index.jsx                                                   |    5 
 src/mob/components/search/single-search/index.jsx                                 |    1 
 src/tabviews/custom/components/card/prop-card/index.scss                          |   26 
 src/menu/components/share/searchcomponent/index.scss                              |    8 
 src/pc/bgcontroller/index.jsx                                                     |    2 
 src/views/pcdesign/index.jsx                                                      |  103 
 src/menu/datasource/verifycard/settingform/index.jsx                              |   15 
 src/mob/components/formdragelement/index.jsx                                      |   36 
 src/mob/components/tabs/tabcomponents/card.jsx                                    |    6 
 src/templates/sharecomponent/searchcomponent/dragsearch/index.jsx                 |    7 
 src/menu/components/share/actioncomponent/index.jsx                               |    7 
 src/templates/modalconfig/menuform/index.jsx                                      |    2 
 src/templates/modalconfig/source.jsx                                              |   10 
 src/menu/components/share/copycomponent/index.jsx                                 |   15 
 src/templates/sharecomponent/treesettingcomponent/settingform/index.scss          |    2 
 src/pc/createview/settingform/index.jsx                                           |   41 
 src/templates/zshare/editTable/index.jsx                                          |   54 
 src/menu/components/editor/braft-editor/options.jsx                               |   12 
 src/mob/components/tabs/antv-tabs/index.jsx                                       |   36 
 src/tabviews/custom/components/tree/antd-tree/index.jsx                           |    4 
 src/tabviews/zshare/actionList/popupbutton/index.jsx                              |    9 
 src/tabviews/custom/components/tabs/antv-tabs/index.jsx                           |   20 
 src/tabviews/zshare/normalTable/index.jsx                                         |   37 
 src/menu/components/form/formaction/actionform/index.scss                         |    5 
 src/tabviews/custom/components/group/normal-group/index.scss                      |   11 
 src/views/menudesign/menuform/index.jsx                                           |    2 
 src/menu/datasource/index.jsx                                                     |   96 
 src/menu/components/module/voucher/index.jsx                                      |  164 
 src/templates/zshare/menuform/index.jsx                                           |    2 
 src/menu/components/form/formaction/index.jsx                                     |    2 
 src/menu/components/tree/antd-tree/index.jsx                                      |    1 
 src/tabviews/custom/index.scss                                                    |    3 
 src/views/billprint/index.jsx                                                     |  250 
 src/tabviews/subtabtable/index.jsx                                                |   26 
 src/tabviews/zshare/actionList/normalbutton/index.jsx                             |   85 
 src/tabviews/custom/components/table/normal-table/index.scss                      |    9 
 src/views/menudesign/index.jsx                                                    |   36 
 src/menu/modulesource/option.jsx                                                  |    4 
 src/tabviews/custom/components/card/data-card/index.jsx                           |  170 
 src/menu/replaceField/settingform/index.jsx                                       |  160 
 src/tabviews/custom/components/module/voucher/index.jsx                           |  130 
 src/templates/sharecomponent/actioncomponent/actionform/index.jsx                 |    9 
 src/templates/zshare/pasteform/index.jsx                                          |   26 
 src/tabviews/verupmanage/config.jsx                                               |   12 
 src/router/index.js                                                               |    2 
 src/menu/pastecontroller/index.jsx                                                |    2 
 src/menu/components/card/data-card/index.jsx                                      |   24 
 src/mob/components/menubar/normal-menubar/options.jsx                             |   37 
 src/mob/searchconfig/settingform/index.jsx                                        |   15 
 src/menu/components/chart/antv-dashboard/index.jsx                                |    1 
 src/menu/components/form/normal-form/options.jsx                                  |   12 
 src/mob/components/menubar/common-menubar/index.jsx                               |  190 
 src/views/appmanage/index.jsx                                                     |   61 
 .VSCodeCounter/2022-03-01_15-52-00/results.txt                                    | 1506 +++++
 src/menu/components/carousel/data-card/index.scss                                 |    4 
 src/tabviews/verupmanage/index.jsx                                                |    3 
 src/menu/components/search/main-search/options.jsx                                |   12 
 src/menu/components/tabs/antv-tabs/index.jsx                                      |   24 
 src/tabviews/custom/components/table/edit-table/normalTable/cusSwitch/index.jsx   |   49 
 src/templates/sharecomponent/actioncomponent/verifyexcelout/index.scss            |    7 
 src/templates/sharecomponent/searchcomponent/index.scss                           |   11 
 src/mob/searchconfig/searchdragelement/index.jsx                                  |    7 
 src/menu/components/table/normal-table/options.jsx                                |   15 
 src/menu/components/tree/antd-tree/index.scss                                     |    2 
 src/components/header/index.jsx                                                   |   76 
 src/views/pcdesign/menuform/index.jsx                                             |    4 
 src/templates/formtabconfig/index.jsx                                             |    4 
 src/templates/zshare/verifycard/callbackcustomscript/index.jsx                    |    2 
 src/tabviews/custom/components/card/cardItem/index.jsx                            |   22 
 src/mob/modalconfig/source.jsx                                                    |   17 
 src/tabviews/calendar/index.jsx                                                   |    2 
 src/views/appmanage/scriptform/index.jsx                                          |    5 
 src/mob/components/topbar/normal-navbar/options.jsx                               |  213 
 src/views/rolemanage/index.jsx                                                    |   49 
 src/tabviews/custom/components/carousel/data-card/index.jsx                       |   33 
 src/menu/components/code/sandbox/index.jsx                                        |    1 
 src/views/billprint/index.scss                                                    |    8 
 src/templates/zshare/verifycard/customform/index.jsx                              |    1 
 .VSCodeCounter/2022-03-01_15-52-00/results.md                                     |  511 +
 src/components/normalform/modalform/mkTable/index.jsx                             |   27 
 src/tabviews/custom/components/tree/antd-tree/index.scss                          |    3 
 src/menu/bgcontroller/index.jsx                                                   |    2 
 src/tabviews/custom/components/share/normalheader/index.jsx                       |    2 
 src/tabviews/custom/components/chart/custom-chart/index.jsx                       |   25 
 src/menu/components/card/balcony/index.jsx                                        |    3 
 src/tabviews/zshare/actionList/tabbutton/index.jsx                                |    7 
 src/mob/components/search/single-search/options.jsx                               |   25 
 src/components/normalform/modalform/index.jsx                                     |    6 
 src/tabviews/custom/components/module/voucher/voucherTable/index.scss             |  259 
 src/templates/zshare/verifycard/index.jsx                                         |  141 
 src/templates/formtabconfig/actionform/index.jsx                                  |    6 
 src/tabviews/zshare/actionList/printbutton/index.jsx                              |    9 
 src/tabviews/custom/components/table/edit-table/normalTable/index.scss            |  219 
 src/menu/components/card/cardcellcomponent/formconfig.jsx                         |   92 
 src/templates/sharecomponent/actioncomponent/index.jsx                            |    2 
 src/pc/components/navbar/normal-navbar/options.jsx                                |   13 
 src/tabviews/custom/components/module/voucher/index.scss                          |   56 
 src/menu/components/editor/braft-editor/index.jsx                                 |    1 
 src/menu/components/module/voucher/index.scss                                     |   41 
 package.json                                                                      |    1 
 src/tabviews/zshare/topSearch/advanceform/index.jsx                               |    6 
 src/mob/searchconfig/index.jsx                                                    |    3 
 src/menu/components/tree/antd-tree/options.jsx                                    |   12 
 src/mob/components/tabs/antv-tabs/options.jsx                                     |   92 
 src/tabviews/custom/components/table/edit-table/normalTable/cusSwitch/index.scss  |   40 
 src/menu/components/card/cardcellcomponent/dragaction/action.jsx                  |   13 
 src/menu/components/card/cardcellcomponent/elementform/index.jsx                  |   76 
 src/menu/components/tabs/antv-tabs/index.scss                                     |   18 
 src/menu/components/share/actioncomponent/dragaction/index.jsx                    |    7 
 src/menu/components/table/edit-table/options.jsx                                  |  150 
 src/templates/modalconfig/index.jsx                                               |   28 
 src/templates/sharecomponent/searchcomponent/searchform/index.scss                |   12 
 src/templates/sharecomponent/tablecomponent/index.jsx                             |    9 
 src/tabviews/zshare/actionList/newpagebutton/index.jsx                            |    7 
 src/mob/modalconfig/index.jsx                                                     |   31 
 src/tabviews/commontable/index.jsx                                                |   25 
 src/components/header/loginform.jsx                                               |    4 
 src/components/mk-icon/index.jsx                                                  |    4 
 src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx              |   13 
 src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx            |  224 
 src/tabviews/custom/components/table/edit-table/index.scss                        |   59 
 src/menu/components/form/formaction/formconfig.jsx                                |   24 
 src/tabviews/custom/components/card/cardcellList/index.jsx                        |   83 
 src/tabviews/custom/components/card/prop-card/index.jsx                           |   76 
 src/menu/components/share/searchcomponent/dragsearch/index.jsx                    |    7 
 src/menu/components/carousel/data-card/options.jsx                                |   28 
 src/menu/components/card/data-card/options.jsx                                    |  130 
 src/templates/zshare/verifycard/callbackcustomscript/index.scss                   |    2 
 src/mob/components/menubar/normal-menubar/index.jsx                               |   66 
 src/tabviews/custom/components/table/normal-table/index.jsx                       |   62 
 src/menu/components/tabs/antv-tabs/options.jsx                                    |   47 
 src/mob/components/menubar/normal-menubar/menucomponent/options.jsx               |   19 
 src/tabviews/custom/components/chart/antv-pie/index.jsx                           |   14 
 src/tabviews/custom/components/timeline/normal-timeline/index.jsx                 |   31 
 .VSCodeCounter/2022-03-01_15-52-00/results.csv                                    |  994 +++
 src/tabviews/custom/components/table/edit-table/normalTable/index.jsx             | 1273 +++
 src/menu/components/group/groupcomponents/card.jsx                                |    6 
 src/templates/sharecomponent/treesettingcomponent/settingform/index.jsx           |    2 
 src/assets/mobimg/voucher.jpg                                                     |    0 
 src/tabviews/zshare/mutilform/index.jsx                                           |  271 
 src/templates/zshare/modalform/index.scss                                         |   12 
 src/menu/components/share/actioncomponent/actionform/index.jsx                    |   67 
 src/mob/components/menubar/normal-menubar/index.scss                              |   32 
 src/tabviews/custom/index.jsx                                                     |   78 
 src/mob/components/menubar/common-menubar/index.scss                              |  105 
 src/menu/components/table/normal-table/columns/index.jsx                          |    8 
 src/views/appmanage/submutilform/index.jsx                                        |  160 
 src/menu/popview/index.jsx                                                        |   17 
 src/tabviews/zshare/mutilform/mkDatePicker/index.jsx                              |   32 
 src/menu/components/timeline/normal-timeline/options.jsx                          |   12 
 src/pc/components/navbar/normal-navbar/index.jsx                                  |    2 
 src/tabviews/custom/components/chart/antv-scatter/index.jsx                       |   34 
 src/menu/components/card/cardcellcomponent/dragaction/index.scss                  |   21 
 src/menu/components/group/groupcomponents/index.jsx                               |    1 
 src/menu/components/form/formaction/actionform/index.jsx                          |   12 
 src/menu/components/card/cardcellcomponent/dragaction/index.jsx                   |    7 
 src/menu/components/form/normal-form/index.jsx                                    |   23 
 src/templates/zshare/verifycard/billcodeform/index.jsx                            |    2 
 src/tabviews/zshare/actionList/exceloutbutton/index.jsx                           |   17 
 src/menu/components/card/cardcellcomponent/dragaction/card.jsx                    |   27 
 src/menu/components/chart/antv-scatter/chartcompile/formconfig.jsx                |   24 
 src/menu/components/card/balcony/index.scss                                       |    7 
 src/menu/components/chart/antv-bar/index.jsx                                      |    1 
 src/mob/components/menubar/common-menubar/options.jsx                             |   84 
 src/assets/img/minview.png                                                        |    0 
 src/tabviews/zshare/actionList/index.jsx                                          |   11 
 src/tabviews/subtable/index.jsx                                                   |   45 
 src/menu/components/table/edit-table/index.jsx                                    |    9 
 src/menu/components/carousel/data-card/index.jsx                                  |    1 
 src/menu/components/group/normal-group/index.scss                                 |    9 
 src/templates/zshare/verifycard/index.scss                                        |  137 
 src/tabviews/custom/components/card/table-card/index.jsx                          |   33 
 src/menu/components/module/voucher/options.jsx                                    |   83 
 src/menu/components/chart/antv-bar/chartcompile/formconfig.jsx                    |   23 
 src/mob/components/menubar/normal-menubar/menucomponent/index.jsx                 |   20 
 src/tabviews/zshare/mutilform/mkCheckCard/index.jsx                               |   13 
 src/menu/components/share/normalheader/index.jsx                                  |    2 
 src/templates/modalconfig/settingform/index.jsx                                   |    4 
 src/pc/quotecomponent/settingform/index.jsx                                       |    2 
 src/templates/sharecomponent/columncomponent/dragcolumn/card.jsx                  |    1 
 src/pc/components/navbar/normal-navbar/menusetting/menuform/index.jsx             |   22 
 src/menu/components/search/main-search/index.jsx                                  |    1 
 src/tabviews/custom/components/module/voucher/voucherTable/index.jsx              |  738 ++
 src/mob/components/topbar/normal-navbar/index.jsx                                 |   55 
 src/templates/sharecomponent/actioncomponent/dragaction/index.jsx                 |    7 
 src/menu/components/table/edit-table/columns/tableIn/customscript/index.jsx       |    3 
 src/tabviews/zshare/topSearch/mkDatePicker/index.jsx                              |   23 
 src/templates/zshare/modalform/modaleditable/index.scss                           |   21 
 src/views/login/index.jsx                                                         |   79 
 src/mob/components/navbar/normal-navbar/index.jsx                                 |    1 
 src/utils/utils-datamanage.js                                                     |   10 
 src/menu/sysinterface/settingform/simplescript/index.jsx                          |    6 
 src/tabviews/custom/components/code/sand-box/index.jsx                            |    4 
 src/menu/components/table/edit-table/columns/tableIn/index.jsx                    |    8 
 src/templates/sharecomponent/settingcomponent/settingform/simplescript/index.jsx  |    6 
 src/menu/components/card/table-card/index.jsx                                     |    1 
 src/utils/utils-custom.js                                                         |   93 
 src/mob/modulesource/option.jsx                                                   |    2 
 src/templates/modalconfig/checkCard/index.scss                                    |    3 
 src/tabviews/zshare/actionList/excelInbutton/index.jsx                            |    9 
 public/options.json                                                               |    2 
 src/menu/components/share/searchcomponent/dragsearch/card.jsx                     |   84 
 src/menu/components/tabs/tabcomponents/index.jsx                                  |   18 
 src/menu/components/table/normal-table/columns/editColumn/index.jsx               |    4 
 src/menu/components/card/data-card/index.scss                                     |   18 
 src/views/pcdesign/index.scss                                                     |    7 
 src/menu/menushell/card.jsx                                                       |    9 
 src/templates/sharecomponent/settingcomponent/settingform/index.jsx               |    2 
 src/menu/components/code/sandbox/options.jsx                                      |   12 
 src/templates/modalconfig/dragelement/card.jsx                                    |   42 
 src/views/mobdesign/index.jsx                                                     |  108 
 src/menu/datasource/verifycard/columnform/index.jsx                               |    4 
 src/templates/sharecomponent/actioncomponent/verifyexcelin/index.scss             |    2 
 src/components/normalform/modalform/mkSelect/index.jsx                            |   46 
 src/assets/mobimg/commonbar.png                                                   |    0 
 src/menu/sysinterface/settingform/index.jsx                                       |    2 
 src/templates/zshare/modalform/datatable/index.jsx                                |   60 
 src/menu/components/share/actioncomponent/formconfig.jsx                          |   99 
 src/tabviews/custom/components/group/normal-group/index.jsx                       |    7 
 src/tabviews/custom/components/tabs/antv-tabs/index.scss                          |   18 
 src/views/design/sidemenu/config.jsx                                              |    1 
 src/menu/components/group/normal-group/options.jsx                                |   38 
 src/templates/zshare/verifycard/customscript/index.scss                           |    2 
 src/tabviews/custom/components/carousel/prop-card/index.jsx                       |   60 
 src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx                |   20 
 src/templates/zshare/modalform/datatable/index.scss                               |   16 
 src/menu/components/table/normal-table/index.jsx                                  |    1 
 src/menu/components/card/cardcomponent/options.jsx                                |   15 
 src/menu/components/group/normal-group/index.jsx                                  |    4 
 src/templates/sharecomponent/searchcomponent/searchform/index.jsx                 |   77 
 src/menu/components/table/normal-table/columns/editColumn/formconfig.jsx          |    6 
 src/menu/components/carousel/prop-card/index.scss                                 |    4 
 src/views/mobdesign/menuform/index.jsx                                            |   81 
 src/menu/datasource/verifycard/customscript/index.jsx                             |    7 
 src/templates/formtabconfig/dragelement/index.jsx                                 |    7 
 src/templates/sharecomponent/columncomponent/index.jsx                            |    5 
 src/locales/en-US/model.js                                                        |    1 
 src/views/mobdesign/index.scss                                                    |    7 
 src/tabviews/custom/components/share/normalTable/index.jsx                        |   26 
 src/templates/modalconfig/dragelement/index.jsx                                   |    7 
 src/tabviews/custom/components/card/data-card/index.scss                          |   29 
 src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx              |    2 
 src/utils/utils.js                                                                |  200 
 src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx             |   37 
 src/index.js                                                                      |   78 
 src/tabviews/custom/components/form/tab-form/index.jsx                            |   40 
 src/views/sso/index.jsx                                                           |  118 
 src/menu/components/search/main-search/dragsearch/index.jsx                       |    7 
 src/tabviews/custom/components/share/tabtransfer/index.jsx                        |    7 
 src/templates/zshare/formconfig.jsx                                               |  180 
 src/templates/menuconfig/menuform/index.jsx                                       |    2 
 src/menu/replaceField/index.jsx                                                   |  718 +
 src/menu/components/chart/chart-custom/chartcompile/formconfig.jsx                |   12 
 src/pc/createview/index.jsx                                                       |    6 
 src/tabviews/custom/components/form/normal-form/index.jsx                         |   40 
 src/mob/components/formdragelement/card.jsx                                       |   65 
 src/pc/components/login/normal-login/index.jsx                                    |    1 
 /dev/null                                                                         |   17 
 src/mob/components/navbar/normal-navbar/options.jsx                               |   13 
 src/menu/modalconfig/index.jsx                                                    |   26 
 src/tabviews/custom/components/card/balcony/index.jsx                             |   65 
 src/tabviews/custom/components/card/cardcellList/index.scss                       |   21 
 src/utils/option.js                                                               |   34 
 src/templates/sharecomponent/columncomponent/columnform/index.jsx                 |    4 
 330 files changed, 14,409 insertions(+), 2,830 deletions(-)

diff --git a/.VSCodeCounter/2022-03-01_15-52-00/details.md b/.VSCodeCounter/2022-03-01_15-52-00/details.md
new file mode 100644
index 0000000..081c54d
--- /dev/null
+++ b/.VSCodeCounter/2022-03-01_15-52-00/details.md
@@ -0,0 +1,1007 @@
+# Details
+
+Date : 2022-03-01 15:52:00
+
+Directory e:\project\pc-plat
+
+Total : 992 files,  195487 codes, 5743 comments, 20061 blanks, all 221291 lines
+
+[summary](results.md)
+
+## Files
+| filename | language | code | comment | blank | total |
+| :--- | :--- | ---: | ---: | ---: | ---: |
+| [README.md](/README.md) | Markdown | 39 | 0 | 34 | 73 |
+| [config/env.js](/config/env.js) | JavaScript | 54 | 29 | 11 | 94 |
+| [config/jest/cssTransform.js](/config/jest/cssTransform.js) | JavaScript | 9 | 3 | 3 | 15 |
+| [config/jest/fileTransform.js](/config/jest/fileTransform.js) | JavaScript | 31 | 4 | 6 | 41 |
+| [config/modules.js](/config/modules.js) | JavaScript | 51 | 21 | 17 | 89 |
+| [config/paths.js](/config/paths.js) | JavaScript | 65 | 11 | 15 | 91 |
+| [config/pnpTs.js](/config/pnpTs.js) | JavaScript | 31 | 1 | 4 | 36 |
+| [config/webpack.config.js](/config/webpack.config.js) | JavaScript | 430 | 213 | 18 | 661 |
+| [config/webpackDevServer.config.js](/config/webpackDevServer.config.js) | JavaScript | 40 | 59 | 6 | 105 |
+| [package-lock.json](/package-lock.json) | JSON | 21,413 | 0 | 1 | 21,414 |
+| [package.json](/package.json) | JSON | 201 | 0 | 1 | 202 |
+| [public/admin.html](/public/admin.html) | HTML | 38 | 0 | 1 | 39 |
+| [public/index.html](/public/index.html) | HTML | 23 | 1 | 1 | 25 |
+| [public/manifest.json](/public/manifest.json) | JSON | 9 | 0 | 1 | 10 |
+| [public/options.json](/public/options.json) | JSON | 17 | 0 | 0 | 17 |
+| [scripts/build.js](/scripts/build.js) | JavaScript | 152 | 24 | 19 | 195 |
+| [scripts/start.js](/scripts/start.js) | JavaScript | 112 | 20 | 14 | 146 |
+| [scripts/test.js](/scripts/test.js) | JavaScript | 36 | 7 | 11 | 54 |
+| [src/api/cacheutils.js](/src/api/cacheutils.js) | JavaScript | 288 | 67 | 45 | 400 |
+| [src/api/index.js](/src/api/index.js) | JavaScript | 671 | 105 | 104 | 880 |
+| [src/assets/css/action.scss](/src/assets/css/action.scss) | SCSS | 181 | 13 | 22 | 216 |
+| [src/assets/css/iconfont.css](/src/assets/css/iconfont.css) | CSS | 33 | 0 | 23 | 56 |
+| [src/assets/css/main.scss](/src/assets/css/main.scss) | SCSS | 394 | 23 | 29 | 446 |
+| [src/assets/css/minkeicon.css](/src/assets/css/minkeicon.css) | CSS | 43 | 5 | 4 | 52 |
+| [src/assets/css/table.scss](/src/assets/css/table.scss) | SCSS | 814 | 30 | 28 | 872 |
+| [src/assets/css/viewstyle.scss](/src/assets/css/viewstyle.scss) | SCSS | 586 | 27 | 10 | 623 |
+| [src/assets/font/iconfont.js](/src/assets/font/iconfont.js) | JavaScript | 1 | 0 | 0 | 1 |
+| [src/assets/font/iconfont.svg](/src/assets/font/iconfont.svg) | XML | 38 | 3 | 43 | 84 |
+| [src/assets/font/minkeicon.svg](/src/assets/font/minkeicon.svg) | XML | 18 | 0 | 0 | 18 |
+| [src/assets/mobimg/slider-thumb.svg](/src/assets/mobimg/slider-thumb.svg) | XML | 14 | 0 | 1 | 15 |
+| [src/components/404/index.jsx](/src/components/404/index.jsx) | JavaScript React | 19 | 0 | 2 | 21 |
+| [src/components/404/index.scss](/src/components/404/index.scss) | SCSS | 13 | 0 | 1 | 14 |
+| [src/components/Image/index.jsx](/src/components/Image/index.jsx) | JavaScript React | 46 | 0 | 10 | 56 |
+| [src/components/Image/index.scss](/src/components/Image/index.scss) | SCSS | 12 | 0 | 2 | 14 |
+| [src/components/barcode/index.jsx](/src/components/barcode/index.jsx) | JavaScript React | 53 | 0 | 12 | 65 |
+| [src/components/barcode/index.scss](/src/components/barcode/index.scss) | SCSS | 15 | 0 | 1 | 16 |
+| [src/components/breadview/index.jsx](/src/components/breadview/index.jsx) | JavaScript React | 176 | 5 | 26 | 207 |
+| [src/components/breadview/index.scss](/src/components/breadview/index.scss) | SCSS | 46 | 0 | 1 | 47 |
+| [src/components/editor/index.jsx](/src/components/editor/index.jsx) | JavaScript React | 213 | 1 | 34 | 248 |
+| [src/components/editor/index.scss](/src/components/editor/index.scss) | SCSS | 29 | 0 | 1 | 30 |
+| [src/components/header/index.jsx](/src/components/header/index.jsx) | JavaScript React | 788 | 15 | 87 | 890 |
+| [src/components/header/index.scss](/src/components/header/index.scss) | SCSS | 216 | 0 | 6 | 222 |
+| [src/components/header/loginform.jsx](/src/components/header/loginform.jsx) | JavaScript React | 114 | 1 | 15 | 130 |
+| [src/components/header/resetpwd/index.jsx](/src/components/header/resetpwd/index.jsx) | JavaScript React | 140 | 2 | 16 | 158 |
+| [src/components/imgScale/index.jsx](/src/components/imgScale/index.jsx) | JavaScript React | 217 | 0 | 54 | 271 |
+| [src/components/imgScale/index.scss](/src/components/imgScale/index.scss) | SCSS | 233 | 0 | 6 | 239 |
+| [src/components/loading/index.jsx](/src/components/loading/index.jsx) | JavaScript React | 10 | 0 | 2 | 12 |
+| [src/components/lostsvg/index.jsx](/src/components/lostsvg/index.jsx) | JavaScript React | 72 | 0 | 2 | 74 |
+| [src/components/mk-icon/index.jsx](/src/components/mk-icon/index.jsx) | JavaScript React | 465 | 0 | 9 | 474 |
+| [src/components/mk-icon/index.scss](/src/components/mk-icon/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/components/mkIcon/index.jsx](/src/components/mkIcon/index.jsx) | JavaScript React | 71 | 1 | 13 | 85 |
+| [src/components/mkIcon/index.scss](/src/components/mkIcon/index.scss) | SCSS | 67 | 0 | 2 | 69 |
+| [src/components/mkProgress/index.jsx](/src/components/mkProgress/index.jsx) | JavaScript React | 32 | 1 | 10 | 43 |
+| [src/components/mkProgress/index.scss](/src/components/mkProgress/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/components/mutilform/index.jsx](/src/components/mutilform/index.jsx) | JavaScript React | 196 | 2 | 13 | 211 |
+| [src/components/mutilform/index.scss](/src/components/mutilform/index.scss) | SCSS | 17 | 0 | 1 | 18 |
+| [src/components/normalform/index.jsx](/src/components/normalform/index.jsx) | JavaScript React | 80 | 0 | 12 | 92 |
+| [src/components/normalform/index.scss](/src/components/normalform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/components/normalform/modalform/index.jsx](/src/components/normalform/modalform/index.jsx) | JavaScript React | 258 | 1 | 59 | 318 |
+| [src/components/normalform/modalform/index.scss](/src/components/normalform/modalform/index.scss) | SCSS | 57 | 0 | 3 | 60 |
+| [src/components/normalform/modalform/mkCheckbox/index.jsx](/src/components/normalform/modalform/mkCheckbox/index.jsx) | JavaScript React | 36 | 0 | 8 | 44 |
+| [src/components/normalform/modalform/mkCheckbox/index.scss](/src/components/normalform/modalform/mkCheckbox/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/components/normalform/modalform/mkInput/index.jsx](/src/components/normalform/modalform/mkInput/index.jsx) | JavaScript React | 50 | 4 | 17 | 71 |
+| [src/components/normalform/modalform/mkInput/index.scss](/src/components/normalform/modalform/mkInput/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/components/normalform/modalform/mkNumberInput/index.jsx](/src/components/normalform/modalform/mkNumberInput/index.jsx) | JavaScript React | 46 | 1 | 15 | 62 |
+| [src/components/normalform/modalform/mkNumberInput/index.scss](/src/components/normalform/modalform/mkNumberInput/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/components/normalform/modalform/mkRadio/index.jsx](/src/components/normalform/modalform/mkRadio/index.jsx) | JavaScript React | 74 | 0 | 19 | 93 |
+| [src/components/normalform/modalform/mkRadio/index.scss](/src/components/normalform/modalform/mkRadio/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/components/normalform/modalform/mkSelect/index.jsx](/src/components/normalform/modalform/mkSelect/index.jsx) | JavaScript React | 114 | 0 | 25 | 139 |
+| [src/components/normalform/modalform/mkSelect/index.scss](/src/components/normalform/modalform/mkSelect/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/components/normalform/modalform/mkTable/index.jsx](/src/components/normalform/modalform/mkTable/index.jsx) | JavaScript React | 374 | 3 | 63 | 440 |
+| [src/components/normalform/modalform/mkTable/index.scss](/src/components/normalform/modalform/mkTable/index.scss) | SCSS | 104 | 0 | 5 | 109 |
+| [src/components/normalform/modalform/styleInput/index.jsx](/src/components/normalform/modalform/styleInput/index.jsx) | JavaScript React | 114 | 0 | 30 | 144 |
+| [src/components/normalform/modalform/styleInput/index.scss](/src/components/normalform/modalform/styleInput/index.scss) | SCSS | 11 | 0 | 1 | 12 |
+| [src/components/paste/index.jsx](/src/components/paste/index.jsx) | JavaScript React | 63 | 0 | 9 | 72 |
+| [src/components/paste/index.scss](/src/components/paste/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/components/qrcode/index.jsx](/src/components/qrcode/index.jsx) | JavaScript React | 49 | 0 | 9 | 58 |
+| [src/components/qrcode/index.scss](/src/components/qrcode/index.scss) | SCSS | 8 | 0 | 0 | 8 |
+| [src/components/querylog/index.jsx](/src/components/querylog/index.jsx) | JavaScript React | 62 | 6 | 15 | 83 |
+| [src/components/sidemenu/index.jsx](/src/components/sidemenu/index.jsx) | JavaScript React | 116 | 2 | 20 | 138 |
+| [src/components/sidemenu/index.scss](/src/components/sidemenu/index.scss) | SCSS | 112 | 8 | 3 | 123 |
+| [src/components/simpleform/index.jsx](/src/components/simpleform/index.jsx) | JavaScript React | 185 | 2 | 11 | 198 |
+| [src/components/simpleform/index.scss](/src/components/simpleform/index.scss) | SCSS | 17 | 0 | 1 | 18 |
+| [src/components/tabview/index.jsx](/src/components/tabview/index.jsx) | JavaScript React | 284 | 7 | 34 | 325 |
+| [src/components/tabview/index.scss](/src/components/tabview/index.scss) | SCSS | 104 | 0 | 0 | 104 |
+| [src/components/video/index.jsx](/src/components/video/index.jsx) | JavaScript React | 40 | 0 | 6 | 46 |
+| [src/components/video/index.scss](/src/components/video/index.scss) | SCSS | 956 | 5 | 88 | 1,049 |
+| [src/index.js](/src/index.js) | JavaScript | 216 | 3 | 31 | 250 |
+| [src/locales/en-US/login.js](/src/locales/en-US/login.js) | JavaScript | 19 | 0 | 0 | 19 |
+| [src/locales/en-US/main.js](/src/locales/en-US/main.js) | JavaScript | 49 | 0 | 0 | 49 |
+| [src/locales/en-US/mob.js](/src/locales/en-US/mob.js) | JavaScript | 29 | 0 | 0 | 29 |
+| [src/locales/en-US/model.js](/src/locales/en-US/model.js) | JavaScript | 171 | 0 | 0 | 171 |
+| [src/locales/zh-CN/login.js](/src/locales/zh-CN/login.js) | JavaScript | 19 | 0 | 0 | 19 |
+| [src/locales/zh-CN/main.js](/src/locales/zh-CN/main.js) | JavaScript | 49 | 0 | 0 | 49 |
+| [src/locales/zh-CN/mob.js](/src/locales/zh-CN/mob.js) | JavaScript | 29 | 0 | 0 | 29 |
+| [src/locales/zh-CN/model.js](/src/locales/zh-CN/model.js) | JavaScript | 171 | 0 | 0 | 171 |
+| [src/menu/bgcontroller/index.jsx](/src/menu/bgcontroller/index.jsx) | JavaScript React | 119 | 3 | 24 | 146 |
+| [src/menu/bgcontroller/index.scss](/src/menu/bgcontroller/index.scss) | SCSS | 42 | 0 | 1 | 43 |
+| [src/menu/components/card/balcony/index.jsx](/src/menu/components/card/balcony/index.jsx) | JavaScript React | 185 | 8 | 45 | 238 |
+| [src/menu/components/card/balcony/index.scss](/src/menu/components/card/balcony/index.scss) | SCSS | 83 | 0 | 5 | 88 |
+| [src/menu/components/card/balcony/options.jsx](/src/menu/components/card/balcony/options.jsx) | JavaScript React | 212 | 4 | 4 | 220 |
+| [src/menu/components/card/cardcellcomponent/dragaction/action.jsx](/src/menu/components/card/cardcellcomponent/dragaction/action.jsx) | JavaScript React | 68 | 0 | 9 | 77 |
+| [src/menu/components/card/cardcellcomponent/dragaction/card.jsx](/src/menu/components/card/cardcellcomponent/dragaction/card.jsx) | JavaScript React | 165 | 7 | 18 | 190 |
+| [src/menu/components/card/cardcellcomponent/dragaction/index.jsx](/src/menu/components/card/cardcellcomponent/dragaction/index.jsx) | JavaScript React | 135 | 0 | 24 | 159 |
+| [src/menu/components/card/cardcellcomponent/dragaction/index.scss](/src/menu/components/card/cardcellcomponent/dragaction/index.scss) | SCSS | 124 | 0 | 1 | 125 |
+| [src/menu/components/card/cardcellcomponent/dragaction/mkProgress/index.jsx](/src/menu/components/card/cardcellcomponent/dragaction/mkProgress/index.jsx) | JavaScript React | 31 | 1 | 11 | 43 |
+| [src/menu/components/card/cardcellcomponent/dragaction/mkProgress/index.scss](/src/menu/components/card/cardcellcomponent/dragaction/mkProgress/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/card/cardcellcomponent/elementform/index.jsx](/src/menu/components/card/cardcellcomponent/elementform/index.jsx) | JavaScript React | 488 | 9 | 33 | 530 |
+| [src/menu/components/card/cardcellcomponent/elementform/index.scss](/src/menu/components/card/cardcellcomponent/elementform/index.scss) | SCSS | 28 | 0 | 1 | 29 |
+| [src/menu/components/card/cardcellcomponent/formconfig.jsx](/src/menu/components/card/cardcellcomponent/formconfig.jsx) | JavaScript React | 502 | 28 | 9 | 539 |
+| [src/menu/components/card/cardcellcomponent/index.jsx](/src/menu/components/card/cardcellcomponent/index.jsx) | JavaScript React | 608 | 38 | 114 | 760 |
+| [src/menu/components/card/cardcellcomponent/index.scss](/src/menu/components/card/cardcellcomponent/index.scss) | SCSS | 31 | 0 | 2 | 33 |
+| [src/menu/components/card/cardcomponent/index.jsx](/src/menu/components/card/cardcomponent/index.jsx) | JavaScript React | 325 | 9 | 67 | 401 |
+| [src/menu/components/card/cardcomponent/index.scss](/src/menu/components/card/cardcomponent/index.scss) | SCSS | 48 | 0 | 0 | 48 |
+| [src/menu/components/card/cardcomponent/options.jsx](/src/menu/components/card/cardcomponent/options.jsx) | JavaScript React | 230 | 3 | 5 | 238 |
+| [src/menu/components/card/cardsimplecomponent/index.jsx](/src/menu/components/card/cardsimplecomponent/index.jsx) | JavaScript React | 192 | 9 | 49 | 250 |
+| [src/menu/components/card/cardsimplecomponent/index.scss](/src/menu/components/card/cardsimplecomponent/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/card/cardsimplecomponent/node-wrap/index.jsx](/src/menu/components/card/cardsimplecomponent/node-wrap/index.jsx) | JavaScript React | 57 | 0 | 12 | 69 |
+| [src/menu/components/card/cardsimplecomponent/node-wrap/index.scss](/src/menu/components/card/cardsimplecomponent/node-wrap/index.scss) | SCSS | 20 | 0 | 1 | 21 |
+| [src/menu/components/card/cardsimplecomponent/node-wrap/menus/columnform/index.jsx](/src/menu/components/card/cardsimplecomponent/node-wrap/menus/columnform/index.jsx) | JavaScript React | 85 | 2 | 7 | 94 |
+| [src/menu/components/card/cardsimplecomponent/node-wrap/menus/columnform/index.scss](/src/menu/components/card/cardsimplecomponent/node-wrap/menus/columnform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/card/cardsimplecomponent/node-wrap/menus/index.jsx](/src/menu/components/card/cardsimplecomponent/node-wrap/menus/index.jsx) | JavaScript React | 73 | 1 | 12 | 86 |
+| [src/menu/components/card/cardsimplecomponent/node-wrap/menus/index.scss](/src/menu/components/card/cardsimplecomponent/node-wrap/menus/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/card/cardsimplecomponent/options.jsx](/src/menu/components/card/cardsimplecomponent/options.jsx) | JavaScript React | 245 | 6 | 8 | 259 |
+| [src/menu/components/card/data-card/index.jsx](/src/menu/components/card/data-card/index.jsx) | JavaScript React | 554 | 14 | 119 | 687 |
+| [src/menu/components/card/data-card/index.scss](/src/menu/components/card/data-card/index.scss) | SCSS | 123 | 0 | 7 | 130 |
+| [src/menu/components/card/data-card/options.jsx](/src/menu/components/card/data-card/options.jsx) | JavaScript React | 327 | 17 | 7 | 351 |
+| [src/menu/components/card/prop-card/index.jsx](/src/menu/components/card/prop-card/index.jsx) | JavaScript React | 409 | 12 | 87 | 508 |
+| [src/menu/components/card/prop-card/index.scss](/src/menu/components/card/prop-card/index.scss) | SCSS | 79 | 0 | 5 | 84 |
+| [src/menu/components/card/table-card/index.jsx](/src/menu/components/card/table-card/index.jsx) | JavaScript React | 465 | 14 | 93 | 572 |
+| [src/menu/components/card/table-card/index.scss](/src/menu/components/card/table-card/index.scss) | SCSS | 91 | 0 | 6 | 97 |
+| [src/menu/components/carousel/data-card/index.jsx](/src/menu/components/carousel/data-card/index.jsx) | JavaScript React | 233 | 12 | 54 | 299 |
+| [src/menu/components/carousel/data-card/index.scss](/src/menu/components/carousel/data-card/index.scss) | SCSS | 82 | 0 | 6 | 88 |
+| [src/menu/components/carousel/data-card/options.jsx](/src/menu/components/carousel/data-card/options.jsx) | JavaScript React | 128 | 3 | 3 | 134 |
+| [src/menu/components/carousel/prop-card/index.jsx](/src/menu/components/carousel/prop-card/index.jsx) | JavaScript React | 301 | 12 | 68 | 381 |
+| [src/menu/components/carousel/prop-card/index.scss](/src/menu/components/carousel/prop-card/index.scss) | SCSS | 88 | 0 | 5 | 93 |
+| [src/menu/components/chart/antv-bar/chartcompile/formconfig.jsx](/src/menu/components/chart/antv-bar/chartcompile/formconfig.jsx) | JavaScript React | 451 | 56 | 10 | 517 |
+| [src/menu/components/chart/antv-bar/chartcompile/index.jsx](/src/menu/components/chart/antv-bar/chartcompile/index.jsx) | JavaScript React | 667 | 0 | 48 | 715 |
+| [src/menu/components/chart/antv-bar/chartcompile/index.scss](/src/menu/components/chart/antv-bar/chartcompile/index.scss) | SCSS | 35 | 0 | 2 | 37 |
+| [src/menu/components/chart/antv-bar/index.jsx](/src/menu/components/chart/antv-bar/index.jsx) | JavaScript React | 1,196 | 20 | 150 | 1,366 |
+| [src/menu/components/chart/antv-bar/index.scss](/src/menu/components/chart/antv-bar/index.scss) | SCSS | 64 | 0 | 8 | 72 |
+| [src/menu/components/chart/antv-dashboard/chartcompile/formconfig.jsx](/src/menu/components/chart/antv-dashboard/chartcompile/formconfig.jsx) | JavaScript React | 242 | 17 | 7 | 266 |
+| [src/menu/components/chart/antv-dashboard/chartcompile/index.jsx](/src/menu/components/chart/antv-dashboard/chartcompile/index.jsx) | JavaScript React | 304 | 0 | 31 | 335 |
+| [src/menu/components/chart/antv-dashboard/chartcompile/index.scss](/src/menu/components/chart/antv-dashboard/chartcompile/index.scss) | SCSS | 35 | 0 | 2 | 37 |
+| [src/menu/components/chart/antv-dashboard/index.jsx](/src/menu/components/chart/antv-dashboard/index.jsx) | JavaScript React | 476 | 7 | 59 | 542 |
+| [src/menu/components/chart/antv-dashboard/index.scss](/src/menu/components/chart/antv-dashboard/index.scss) | SCSS | 44 | 0 | 6 | 50 |
+| [src/menu/components/chart/antv-pie/chartcompile/formconfig.jsx](/src/menu/components/chart/antv-pie/chartcompile/formconfig.jsx) | JavaScript React | 327 | 14 | 6 | 347 |
+| [src/menu/components/chart/antv-pie/chartcompile/index.jsx](/src/menu/components/chart/antv-pie/chartcompile/index.jsx) | JavaScript React | 327 | 0 | 33 | 360 |
+| [src/menu/components/chart/antv-pie/chartcompile/index.scss](/src/menu/components/chart/antv-pie/chartcompile/index.scss) | SCSS | 30 | 0 | 2 | 32 |
+| [src/menu/components/chart/antv-pie/index.jsx](/src/menu/components/chart/antv-pie/index.jsx) | JavaScript React | 599 | 6 | 89 | 694 |
+| [src/menu/components/chart/antv-pie/index.scss](/src/menu/components/chart/antv-pie/index.scss) | SCSS | 44 | 0 | 6 | 50 |
+| [src/menu/components/chart/antv-scatter/chartcompile/formconfig.jsx](/src/menu/components/chart/antv-scatter/chartcompile/formconfig.jsx) | JavaScript React | 177 | 10 | 4 | 191 |
+| [src/menu/components/chart/antv-scatter/chartcompile/index.jsx](/src/menu/components/chart/antv-scatter/chartcompile/index.jsx) | JavaScript React | 251 | 0 | 21 | 272 |
+| [src/menu/components/chart/antv-scatter/chartcompile/index.scss](/src/menu/components/chart/antv-scatter/chartcompile/index.scss) | SCSS | 32 | 0 | 2 | 34 |
+| [src/menu/components/chart/antv-scatter/index.jsx](/src/menu/components/chart/antv-scatter/index.jsx) | JavaScript React | 337 | 10 | 53 | 400 |
+| [src/menu/components/chart/antv-scatter/index.scss](/src/menu/components/chart/antv-scatter/index.scss) | SCSS | 64 | 0 | 8 | 72 |
+| [src/menu/components/chart/chart-custom/chartcompile/formconfig.jsx](/src/menu/components/chart/chart-custom/chartcompile/formconfig.jsx) | JavaScript React | 72 | 24 | 2 | 98 |
+| [src/menu/components/chart/chart-custom/chartcompile/index.jsx](/src/menu/components/chart/chart-custom/chartcompile/index.jsx) | JavaScript React | 103 | 0 | 17 | 120 |
+| [src/menu/components/chart/chart-custom/chartcompile/index.scss](/src/menu/components/chart/chart-custom/chartcompile/index.scss) | SCSS | 10 | 0 | 2 | 12 |
+| [src/menu/components/chart/chart-custom/index.jsx](/src/menu/components/chart/chart-custom/index.jsx) | JavaScript React | 226 | 6 | 39 | 271 |
+| [src/menu/components/chart/chart-custom/index.scss](/src/menu/components/chart/chart-custom/index.scss) | SCSS | 64 | 0 | 8 | 72 |
+| [src/menu/components/code/sandbox/codecontent/index.jsx](/src/menu/components/code/sandbox/codecontent/index.jsx) | JavaScript React | 65 | 7 | 16 | 88 |
+| [src/menu/components/code/sandbox/codecontent/index.scss](/src/menu/components/code/sandbox/codecontent/index.scss) | SCSS | 26 | 0 | 0 | 26 |
+| [src/menu/components/code/sandbox/editorcode/index.jsx](/src/menu/components/code/sandbox/editorcode/index.jsx) | JavaScript React | 95 | 0 | 16 | 111 |
+| [src/menu/components/code/sandbox/editorcode/index.scss](/src/menu/components/code/sandbox/editorcode/index.scss) | SCSS | 18 | 0 | 2 | 20 |
+| [src/menu/components/code/sandbox/index.jsx](/src/menu/components/code/sandbox/index.jsx) | JavaScript React | 155 | 9 | 32 | 196 |
+| [src/menu/components/code/sandbox/index.scss](/src/menu/components/code/sandbox/index.scss) | SCSS | 35 | 0 | 2 | 37 |
+| [src/menu/components/code/sandbox/options.jsx](/src/menu/components/code/sandbox/options.jsx) | JavaScript React | 56 | 3 | 3 | 62 |
+| [src/menu/components/editor/braft-editor/editorcontent/index.jsx](/src/menu/components/editor/braft-editor/editorcontent/index.jsx) | JavaScript React | 69 | 0 | 14 | 83 |
+| [src/menu/components/editor/braft-editor/editorcontent/index.scss](/src/menu/components/editor/braft-editor/editorcontent/index.scss) | SCSS | 16 | 0 | 1 | 17 |
+| [src/menu/components/editor/braft-editor/index.jsx](/src/menu/components/editor/braft-editor/index.jsx) | JavaScript React | 156 | 6 | 32 | 194 |
+| [src/menu/components/editor/braft-editor/index.scss](/src/menu/components/editor/braft-editor/index.scss) | SCSS | 35 | 0 | 2 | 37 |
+| [src/menu/components/editor/braft-editor/options.jsx](/src/menu/components/editor/braft-editor/options.jsx) | JavaScript React | 98 | 3 | 3 | 104 |
+| [src/menu/components/form/dragtitle/card.jsx](/src/menu/components/form/dragtitle/card.jsx) | JavaScript React | 76 | 0 | 13 | 89 |
+| [src/menu/components/form/dragtitle/index.jsx](/src/menu/components/form/dragtitle/index.jsx) | JavaScript React | 50 | 0 | 10 | 60 |
+| [src/menu/components/form/dragtitle/index.scss](/src/menu/components/form/dragtitle/index.scss) | SCSS | 88 | 0 | 1 | 89 |
+| [src/menu/components/form/dragtitle/options.jsx](/src/menu/components/form/dragtitle/options.jsx) | JavaScript React | 93 | 3 | 3 | 99 |
+| [src/menu/components/form/formaction/actionform/index.jsx](/src/menu/components/form/formaction/actionform/index.jsx) | JavaScript React | 333 | 8 | 29 | 370 |
+| [src/menu/components/form/formaction/actionform/index.scss](/src/menu/components/form/formaction/actionform/index.scss) | SCSS | 39 | 0 | 0 | 39 |
+| [src/menu/components/form/formaction/formconfig.jsx](/src/menu/components/form/formaction/formconfig.jsx) | JavaScript React | 294 | 5 | 6 | 305 |
+| [src/menu/components/form/formaction/index.jsx](/src/menu/components/form/formaction/index.jsx) | JavaScript React | 224 | 18 | 37 | 279 |
+| [src/menu/components/form/formaction/index.scss](/src/menu/components/form/formaction/index.scss) | SCSS | 16 | 0 | 2 | 18 |
+| [src/menu/components/form/normal-form/index.jsx](/src/menu/components/form/normal-form/index.jsx) | JavaScript React | 622 | 18 | 104 | 744 |
+| [src/menu/components/form/normal-form/index.scss](/src/menu/components/form/normal-form/index.scss) | SCSS | 82 | 0 | 3 | 85 |
+| [src/menu/components/form/normal-form/options.jsx](/src/menu/components/form/normal-form/options.jsx) | JavaScript React | 100 | 3 | 3 | 106 |
+| [src/menu/components/form/tab-form/index.jsx](/src/menu/components/form/tab-form/index.jsx) | JavaScript React | 630 | 18 | 104 | 752 |
+| [src/menu/components/form/tab-form/index.scss](/src/menu/components/form/tab-form/index.scss) | SCSS | 82 | 0 | 3 | 85 |
+| [src/menu/components/group/groupcomponents/card.jsx](/src/menu/components/group/groupcomponents/card.jsx) | JavaScript React | 99 | 0 | 10 | 109 |
+| [src/menu/components/group/groupcomponents/index.jsx](/src/menu/components/group/groupcomponents/index.jsx) | JavaScript React | 132 | 0 | 22 | 154 |
+| [src/menu/components/group/groupcomponents/index.scss](/src/menu/components/group/groupcomponents/index.scss) | SCSS | 12 | 0 | 2 | 14 |
+| [src/menu/components/group/normal-group/index.jsx](/src/menu/components/group/normal-group/index.jsx) | JavaScript React | 161 | 4 | 38 | 203 |
+| [src/menu/components/group/normal-group/index.scss](/src/menu/components/group/normal-group/index.scss) | SCSS | 39 | 0 | 2 | 41 |
+| [src/menu/components/group/normal-group/options.jsx](/src/menu/components/group/normal-group/options.jsx) | JavaScript React | 87 | 3 | 3 | 93 |
+| [src/menu/components/group/paste/index.jsx](/src/menu/components/group/paste/index.jsx) | JavaScript React | 83 | 1 | 18 | 102 |
+| [src/menu/components/group/paste/index.scss](/src/menu/components/group/paste/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/module/voucher/index.jsx](/src/menu/components/module/voucher/index.jsx) | JavaScript React | 123 | 12 | 29 | 164 |
+| [src/menu/components/module/voucher/index.scss](/src/menu/components/module/voucher/index.scss) | SCSS | 39 | 0 | 3 | 42 |
+| [src/menu/components/module/voucher/options.jsx](/src/menu/components/module/voucher/options.jsx) | JavaScript React | 68 | 10 | 5 | 83 |
+| [src/menu/components/search/main-search/dategroup/index.jsx](/src/menu/components/search/main-search/dategroup/index.jsx) | JavaScript React | 27 | 0 | 5 | 32 |
+| [src/menu/components/search/main-search/dategroup/index.scss](/src/menu/components/search/main-search/dategroup/index.scss) | SCSS | 36 | 0 | 2 | 38 |
+| [src/menu/components/search/main-search/dragsearch/card.jsx](/src/menu/components/search/main-search/dragsearch/card.jsx) | JavaScript React | 106 | 0 | 9 | 115 |
+| [src/menu/components/search/main-search/dragsearch/index.jsx](/src/menu/components/search/main-search/dragsearch/index.jsx) | JavaScript React | 112 | 0 | 17 | 129 |
+| [src/menu/components/search/main-search/dragsearch/index.scss](/src/menu/components/search/main-search/dragsearch/index.scss) | SCSS | 6 | 0 | 1 | 7 |
+| [src/menu/components/search/main-search/index.jsx](/src/menu/components/search/main-search/index.jsx) | JavaScript React | 377 | 26 | 64 | 467 |
+| [src/menu/components/search/main-search/index.scss](/src/menu/components/search/main-search/index.scss) | SCSS | 140 | 0 | 1 | 141 |
+| [src/menu/components/search/main-search/options.jsx](/src/menu/components/search/main-search/options.jsx) | JavaScript React | 78 | 3 | 3 | 84 |
+| [src/menu/components/share/actioncomponent/actionform/index.jsx](/src/menu/components/share/actioncomponent/actionform/index.jsx) | JavaScript React | 714 | 10 | 93 | 817 |
+| [src/menu/components/share/actioncomponent/actionform/index.scss](/src/menu/components/share/actioncomponent/actionform/index.scss) | SCSS | 39 | 0 | 0 | 39 |
+| [src/menu/components/share/actioncomponent/dragaction/card.jsx](/src/menu/components/share/actioncomponent/dragaction/card.jsx) | JavaScript React | 92 | 0 | 9 | 101 |
+| [src/menu/components/share/actioncomponent/dragaction/index.jsx](/src/menu/components/share/actioncomponent/dragaction/index.jsx) | JavaScript React | 106 | 0 | 24 | 130 |
+| [src/menu/components/share/actioncomponent/dragaction/index.scss](/src/menu/components/share/actioncomponent/dragaction/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/share/actioncomponent/formconfig.jsx](/src/menu/components/share/actioncomponent/formconfig.jsx) | JavaScript React | 849 | 11 | 16 | 876 |
+| [src/menu/components/share/actioncomponent/index.jsx](/src/menu/components/share/actioncomponent/index.jsx) | JavaScript React | 439 | 38 | 74 | 551 |
+| [src/menu/components/share/actioncomponent/index.scss](/src/menu/components/share/actioncomponent/index.scss) | SCSS | 79 | 0 | 3 | 82 |
+| [src/menu/components/share/clockcomponent/index.jsx](/src/menu/components/share/clockcomponent/index.jsx) | JavaScript React | 54 | 0 | 10 | 64 |
+| [src/menu/components/share/clockcomponent/index.scss](/src/menu/components/share/clockcomponent/index.scss) | SCSS | 6 | 0 | 1 | 7 |
+| [src/menu/components/share/clockcomponent/settingform/index.jsx](/src/menu/components/share/clockcomponent/settingform/index.jsx) | JavaScript React | 98 | 1 | 8 | 107 |
+| [src/menu/components/share/clockcomponent/settingform/index.scss](/src/menu/components/share/clockcomponent/settingform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/share/copycomponent/index.jsx](/src/menu/components/share/copycomponent/index.jsx) | JavaScript React | 39 | 0 | 8 | 47 |
+| [src/menu/components/share/copycomponent/index.scss](/src/menu/components/share/copycomponent/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/share/logcomponent/index.jsx](/src/menu/components/share/logcomponent/index.jsx) | JavaScript React | 115 | 0 | 16 | 131 |
+| [src/menu/components/share/logcomponent/index.scss](/src/menu/components/share/logcomponent/index.scss) | SCSS | 20 | 0 | 1 | 21 |
+| [src/menu/components/share/markcomponent/index.jsx](/src/menu/components/share/markcomponent/index.jsx) | JavaScript React | 327 | 0 | 26 | 353 |
+| [src/menu/components/share/markcomponent/index.scss](/src/menu/components/share/markcomponent/index.scss) | SCSS | 55 | 0 | 4 | 59 |
+| [src/menu/components/share/markcomponent/markform/index.jsx](/src/menu/components/share/markcomponent/markform/index.jsx) | JavaScript React | 124 | 1 | 6 | 131 |
+| [src/menu/components/share/markcomponent/markform/index.scss](/src/menu/components/share/markcomponent/markform/index.scss) | SCSS | 17 | 0 | 0 | 17 |
+| [src/menu/components/share/mobPagination/index.jsx](/src/menu/components/share/mobPagination/index.jsx) | JavaScript React | 24 | 0 | 3 | 27 |
+| [src/menu/components/share/mobPagination/index.scss](/src/menu/components/share/mobPagination/index.scss) | SCSS | 31 | 0 | 0 | 31 |
+| [src/menu/components/share/normalform/index.jsx](/src/menu/components/share/normalform/index.jsx) | JavaScript React | 180 | 2 | 12 | 194 |
+| [src/menu/components/share/normalform/index.scss](/src/menu/components/share/normalform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/share/normalheader/index.jsx](/src/menu/components/share/normalheader/index.jsx) | JavaScript React | 73 | 3 | 20 | 96 |
+| [src/menu/components/share/normalheader/index.scss](/src/menu/components/share/normalheader/index.scss) | SCSS | 40 | 0 | 1 | 41 |
+| [src/menu/components/share/pastecomponent/index.jsx](/src/menu/components/share/pastecomponent/index.jsx) | JavaScript React | 208 | 0 | 33 | 241 |
+| [src/menu/components/share/pastecomponent/index.scss](/src/menu/components/share/pastecomponent/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/share/searchcomponent/dragsearch/card.jsx](/src/menu/components/share/searchcomponent/dragsearch/card.jsx) | JavaScript React | 102 | 0 | 9 | 111 |
+| [src/menu/components/share/searchcomponent/dragsearch/index.jsx](/src/menu/components/share/searchcomponent/dragsearch/index.jsx) | JavaScript React | 83 | 0 | 16 | 99 |
+| [src/menu/components/share/searchcomponent/dragsearch/index.scss](/src/menu/components/share/searchcomponent/dragsearch/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/share/searchcomponent/index.jsx](/src/menu/components/share/searchcomponent/index.jsx) | JavaScript React | 248 | 28 | 47 | 323 |
+| [src/menu/components/share/searchcomponent/index.scss](/src/menu/components/share/searchcomponent/index.scss) | SCSS | 62 | 0 | 3 | 65 |
+| [src/menu/components/share/sourcecomponent/index.jsx](/src/menu/components/share/sourcecomponent/index.jsx) | JavaScript React | 81 | 0 | 14 | 95 |
+| [src/menu/components/share/sourcecomponent/index.scss](/src/menu/components/share/sourcecomponent/index.scss) | SCSS | 55 | 0 | 2 | 57 |
+| [src/menu/components/share/sourcecomponent/inputform/index.jsx](/src/menu/components/share/sourcecomponent/inputform/index.jsx) | JavaScript React | 188 | 0 | 25 | 213 |
+| [src/menu/components/share/sourcecomponent/inputform/index.scss](/src/menu/components/share/sourcecomponent/inputform/index.scss) | SCSS | 59 | 0 | 1 | 60 |
+| [src/menu/components/share/styleInput/index.jsx](/src/menu/components/share/styleInput/index.jsx) | JavaScript React | 112 | 3 | 25 | 140 |
+| [src/menu/components/share/styleInput/index.scss](/src/menu/components/share/styleInput/index.scss) | SCSS | 11 | 0 | 1 | 12 |
+| [src/menu/components/share/usercomponent/index.jsx](/src/menu/components/share/usercomponent/index.jsx) | JavaScript React | 207 | 1 | 25 | 233 |
+| [src/menu/components/share/usercomponent/index.scss](/src/menu/components/share/usercomponent/index.scss) | SCSS | 6 | 0 | 1 | 7 |
+| [src/menu/components/share/usercomponent/settingform/index.jsx](/src/menu/components/share/usercomponent/settingform/index.jsx) | JavaScript React | 73 | 2 | 12 | 87 |
+| [src/menu/components/share/usercomponent/settingform/index.scss](/src/menu/components/share/usercomponent/settingform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx](/src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx) | JavaScript React | 318 | 4 | 7 | 329 |
+| [src/menu/components/table/edit-table/columns/editColumn/index.jsx](/src/menu/components/table/edit-table/columns/editColumn/index.jsx) | JavaScript React | 366 | 1 | 31 | 398 |
+| [src/menu/components/table/edit-table/columns/editColumn/index.scss](/src/menu/components/table/edit-table/columns/editColumn/index.scss) | SCSS | 17 | 0 | 1 | 18 |
+| [src/menu/components/table/edit-table/columns/index.jsx](/src/menu/components/table/edit-table/columns/index.jsx) | JavaScript React | 514 | 8 | 92 | 614 |
+| [src/menu/components/table/edit-table/columns/index.scss](/src/menu/components/table/edit-table/columns/index.scss) | SCSS | 120 | 0 | 3 | 123 |
+| [src/menu/components/table/edit-table/columns/tableIn/customscript/index.jsx](/src/menu/components/table/edit-table/columns/tableIn/customscript/index.jsx) | JavaScript React | 297 | 8 | 42 | 347 |
+| [src/menu/components/table/edit-table/columns/tableIn/customscript/index.scss](/src/menu/components/table/edit-table/columns/tableIn/customscript/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/table/edit-table/columns/tableIn/index.jsx](/src/menu/components/table/edit-table/columns/tableIn/index.jsx) | JavaScript React | 643 | 8 | 64 | 715 |
+| [src/menu/components/table/edit-table/columns/tableIn/index.scss](/src/menu/components/table/edit-table/columns/tableIn/index.scss) | SCSS | 80 | 0 | 0 | 80 |
+| [src/menu/components/table/edit-table/columns/tableIn/uniqueform/index.jsx](/src/menu/components/table/edit-table/columns/tableIn/uniqueform/index.jsx) | JavaScript React | 117 | 1 | 11 | 129 |
+| [src/menu/components/table/edit-table/columns/tableIn/uniqueform/index.scss](/src/menu/components/table/edit-table/columns/tableIn/uniqueform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/table/edit-table/index.jsx](/src/menu/components/table/edit-table/index.jsx) | JavaScript React | 286 | 10 | 60 | 356 |
+| [src/menu/components/table/edit-table/index.scss](/src/menu/components/table/edit-table/index.scss) | SCSS | 78 | 0 | 3 | 81 |
+| [src/menu/components/table/edit-table/options.jsx](/src/menu/components/table/edit-table/options.jsx) | JavaScript React | 190 | 4 | 3 | 197 |
+| [src/menu/components/table/normal-table/columns/editColumn/formconfig.jsx](/src/menu/components/table/normal-table/columns/editColumn/formconfig.jsx) | JavaScript React | 408 | 4 | 10 | 422 |
+| [src/menu/components/table/normal-table/columns/editColumn/index.jsx](/src/menu/components/table/normal-table/columns/editColumn/index.jsx) | JavaScript React | 362 | 1 | 28 | 391 |
+| [src/menu/components/table/normal-table/columns/editColumn/index.scss](/src/menu/components/table/normal-table/columns/editColumn/index.scss) | SCSS | 17 | 0 | 1 | 18 |
+| [src/menu/components/table/normal-table/columns/index.jsx](/src/menu/components/table/normal-table/columns/index.jsx) | JavaScript React | 515 | 8 | 91 | 614 |
+| [src/menu/components/table/normal-table/columns/index.scss](/src/menu/components/table/normal-table/columns/index.scss) | SCSS | 122 | 0 | 3 | 125 |
+| [src/menu/components/table/normal-table/index.jsx](/src/menu/components/table/normal-table/index.jsx) | JavaScript React | 382 | 10 | 76 | 468 |
+| [src/menu/components/table/normal-table/index.scss](/src/menu/components/table/normal-table/index.scss) | SCSS | 78 | 0 | 3 | 81 |
+| [src/menu/components/table/normal-table/options.jsx](/src/menu/components/table/normal-table/options.jsx) | JavaScript React | 254 | 4 | 3 | 261 |
+| [src/menu/components/tabs/antv-tabs/dragabletabs.jsx](/src/menu/components/tabs/antv-tabs/dragabletabs.jsx) | JavaScript React | 106 | 1 | 22 | 129 |
+| [src/menu/components/tabs/antv-tabs/index.jsx](/src/menu/components/tabs/antv-tabs/index.jsx) | JavaScript React | 332 | 5 | 69 | 406 |
+| [src/menu/components/tabs/antv-tabs/index.scss](/src/menu/components/tabs/antv-tabs/index.scss) | SCSS | 132 | 0 | 9 | 141 |
+| [src/menu/components/tabs/antv-tabs/options.jsx](/src/menu/components/tabs/antv-tabs/options.jsx) | JavaScript React | 206 | 22 | 9 | 237 |
+| [src/menu/components/tabs/paste/index.jsx](/src/menu/components/tabs/paste/index.jsx) | JavaScript React | 120 | 1 | 28 | 149 |
+| [src/menu/components/tabs/paste/index.scss](/src/menu/components/tabs/paste/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/components/tabs/tabcomponents/card.jsx](/src/menu/components/tabs/tabcomponents/card.jsx) | JavaScript React | 108 | 0 | 10 | 118 |
+| [src/menu/components/tabs/tabcomponents/index.jsx](/src/menu/components/tabs/tabcomponents/index.jsx) | JavaScript React | 156 | 0 | 24 | 180 |
+| [src/menu/components/tabs/tabcomponents/index.scss](/src/menu/components/tabs/tabcomponents/index.scss) | SCSS | 12 | 0 | 2 | 14 |
+| [src/menu/components/timeline/normal-timeline/index.jsx](/src/menu/components/timeline/normal-timeline/index.jsx) | JavaScript React | 160 | 6 | 34 | 200 |
+| [src/menu/components/timeline/normal-timeline/index.scss](/src/menu/components/timeline/normal-timeline/index.scss) | SCSS | 76 | 0 | 5 | 81 |
+| [src/menu/components/timeline/normal-timeline/options.jsx](/src/menu/components/timeline/normal-timeline/options.jsx) | JavaScript React | 112 | 3 | 3 | 118 |
+| [src/menu/components/tree/antd-tree/index.jsx](/src/menu/components/tree/antd-tree/index.jsx) | JavaScript React | 160 | 9 | 33 | 202 |
+| [src/menu/components/tree/antd-tree/index.scss](/src/menu/components/tree/antd-tree/index.scss) | SCSS | 39 | 0 | 3 | 42 |
+| [src/menu/components/tree/antd-tree/options.jsx](/src/menu/components/tree/antd-tree/options.jsx) | JavaScript React | 130 | 3 | 3 | 136 |
+| [src/menu/datasource/index.jsx](/src/menu/datasource/index.jsx) | JavaScript React | 199 | 0 | 28 | 227 |
+| [src/menu/datasource/index.scss](/src/menu/datasource/index.scss) | SCSS | 79 | 0 | 8 | 87 |
+| [src/menu/datasource/verifycard/columnform/index.jsx](/src/menu/datasource/verifycard/columnform/index.jsx) | JavaScript React | 120 | 1 | 7 | 128 |
+| [src/menu/datasource/verifycard/columnform/index.scss](/src/menu/datasource/verifycard/columnform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/datasource/verifycard/customscript/index.jsx](/src/menu/datasource/verifycard/customscript/index.jsx) | JavaScript React | 238 | 1 | 31 | 270 |
+| [src/menu/datasource/verifycard/customscript/index.scss](/src/menu/datasource/verifycard/customscript/index.scss) | SCSS | 34 | 0 | 0 | 34 |
+| [src/menu/datasource/verifycard/index.jsx](/src/menu/datasource/verifycard/index.jsx) | JavaScript React | 606 | 7 | 88 | 701 |
+| [src/menu/datasource/verifycard/index.scss](/src/menu/datasource/verifycard/index.scss) | SCSS | 84 | 0 | 0 | 84 |
+| [src/menu/datasource/verifycard/settingform/index.jsx](/src/menu/datasource/verifycard/settingform/index.jsx) | JavaScript React | 458 | 2 | 30 | 490 |
+| [src/menu/datasource/verifycard/settingform/index.scss](/src/menu/datasource/verifycard/settingform/index.scss) | SCSS | 27 | 0 | 1 | 28 |
+| [src/menu/datasource/verifycard/utils.jsx](/src/menu/datasource/verifycard/utils.jsx) | JavaScript React | 175 | 16 | 26 | 217 |
+| [src/menu/header/index.jsx](/src/menu/header/index.jsx) | JavaScript React | 28 | 0 | 6 | 34 |
+| [src/menu/header/index.scss](/src/menu/header/index.scss) | SCSS | 83 | 0 | 3 | 86 |
+| [src/menu/menushell/card.jsx](/src/menu/menushell/card.jsx) | JavaScript React | 111 | 0 | 9 | 120 |
+| [src/menu/menushell/index.jsx](/src/menu/menushell/index.jsx) | JavaScript React | 149 | 0 | 23 | 172 |
+| [src/menu/menushell/index.scss](/src/menu/menushell/index.scss) | SCSS | 20 | 0 | 3 | 23 |
+| [src/menu/modalconfig/controller.jsx](/src/menu/modalconfig/controller.jsx) | JavaScript React | 49 | 3 | 12 | 64 |
+| [src/menu/modalconfig/index.jsx](/src/menu/modalconfig/index.jsx) | JavaScript React | 459 | 36 | 63 | 558 |
+| [src/menu/modalconfig/index.scss](/src/menu/modalconfig/index.scss) | SCSS | 330 | 0 | 5 | 335 |
+| [src/menu/modulesource/dragsource/index.jsx](/src/menu/modulesource/dragsource/index.jsx) | JavaScript React | 14 | 0 | 1 | 15 |
+| [src/menu/modulesource/dragsource/index.scss](/src/menu/modulesource/dragsource/index.scss) | SCSS | 40 | 0 | 6 | 46 |
+| [src/menu/modulesource/index.jsx](/src/menu/modulesource/index.jsx) | JavaScript React | 82 | 0 | 14 | 96 |
+| [src/menu/modulesource/index.scss](/src/menu/modulesource/index.scss) | SCSS | 8 | 0 | 2 | 10 |
+| [src/menu/modulesource/option.jsx](/src/menu/modulesource/option.jsx) | JavaScript React | 60 | 1 | 2 | 63 |
+| [src/menu/padcontroller/index.jsx](/src/menu/padcontroller/index.jsx) | JavaScript React | 81 | 3 | 11 | 95 |
+| [src/menu/padcontroller/index.scss](/src/menu/padcontroller/index.scss) | SCSS | 9 | 0 | 1 | 10 |
+| [src/menu/pastecontroller/index.jsx](/src/menu/pastecontroller/index.jsx) | JavaScript React | 102 | 1 | 25 | 128 |
+| [src/menu/pastecontroller/index.scss](/src/menu/pastecontroller/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/picturecontroller/editform/index.jsx](/src/menu/picturecontroller/editform/index.jsx) | JavaScript React | 162 | 1 | 10 | 173 |
+| [src/menu/picturecontroller/editform/index.scss](/src/menu/picturecontroller/editform/index.scss) | SCSS | 14 | 0 | 0 | 14 |
+| [src/menu/picturecontroller/index.jsx](/src/menu/picturecontroller/index.jsx) | JavaScript React | 325 | 0 | 37 | 362 |
+| [src/menu/picturecontroller/index.scss](/src/menu/picturecontroller/index.scss) | SCSS | 88 | 0 | 0 | 88 |
+| [src/menu/picturecontroller/video/index.jsx](/src/menu/picturecontroller/video/index.jsx) | JavaScript React | 23 | 0 | 6 | 29 |
+| [src/menu/picturecontroller/video/index.scss](/src/menu/picturecontroller/video/index.scss) | SCSS | 51 | 0 | 2 | 53 |
+| [src/menu/popview/index.jsx](/src/menu/popview/index.jsx) | JavaScript React | 597 | 7 | 79 | 683 |
+| [src/menu/popview/index.scss](/src/menu/popview/index.scss) | SCSS | 157 | 0 | 5 | 162 |
+| [src/menu/popview/menuform/index.jsx](/src/menu/popview/menuform/index.jsx) | JavaScript React | 123 | 3 | 10 | 136 |
+| [src/menu/popview/menuform/index.scss](/src/menu/popview/menuform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/replaceField/index.jsx](/src/menu/replaceField/index.jsx) | JavaScript React | 485 | 4 | 55 | 544 |
+| [src/menu/replaceField/index.scss](/src/menu/replaceField/index.scss) | SCSS | 9 | 0 | 0 | 9 |
+| [src/menu/replaceField/settingform/index.jsx](/src/menu/replaceField/settingform/index.jsx) | JavaScript React | 209 | 2 | 20 | 231 |
+| [src/menu/replaceField/settingform/index.scss](/src/menu/replaceField/settingform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/stylecombcontrolbutton/index.jsx](/src/menu/stylecombcontrolbutton/index.jsx) | JavaScript React | 128 | 3 | 26 | 157 |
+| [src/menu/stylecombcontrolbutton/index.scss](/src/menu/stylecombcontrolbutton/index.scss) | SCSS | 48 | 0 | 2 | 50 |
+| [src/menu/stylecombcontroller/index.jsx](/src/menu/stylecombcontroller/index.jsx) | JavaScript React | 499 | 33 | 42 | 574 |
+| [src/menu/stylecombcontroller/index.scss](/src/menu/stylecombcontroller/index.scss) | SCSS | 184 | 0 | 6 | 190 |
+| [src/menu/stylecombcontroller/styleInput/index.jsx](/src/menu/stylecombcontroller/styleInput/index.jsx) | JavaScript React | 121 | 3 | 29 | 153 |
+| [src/menu/stylecombcontroller/styleInput/index.scss](/src/menu/stylecombcontroller/styleInput/index.scss) | SCSS | 11 | 0 | 1 | 12 |
+| [src/menu/stylecontroller/index.jsx](/src/menu/stylecontroller/index.jsx) | JavaScript React | 704 | 51 | 65 | 820 |
+| [src/menu/stylecontroller/index.scss](/src/menu/stylecontroller/index.scss) | SCSS | 196 | 0 | 6 | 202 |
+| [src/menu/stylecontroller/styleInput/index.jsx](/src/menu/stylecontroller/styleInput/index.jsx) | JavaScript React | 127 | 3 | 30 | 160 |
+| [src/menu/stylecontroller/styleInput/index.scss](/src/menu/stylecontroller/styleInput/index.scss) | SCSS | 11 | 0 | 1 | 12 |
+| [src/menu/sysinterface/index.jsx](/src/menu/sysinterface/index.jsx) | JavaScript React | 189 | 0 | 27 | 216 |
+| [src/menu/sysinterface/index.scss](/src/menu/sysinterface/index.scss) | SCSS | 20 | 0 | 0 | 20 |
+| [src/menu/sysinterface/settingform/baseform/index.jsx](/src/menu/sysinterface/settingform/baseform/index.jsx) | JavaScript React | 242 | 1 | 17 | 260 |
+| [src/menu/sysinterface/settingform/baseform/index.scss](/src/menu/sysinterface/settingform/baseform/index.scss) | SCSS | 16 | 0 | 1 | 17 |
+| [src/menu/sysinterface/settingform/index.jsx](/src/menu/sysinterface/settingform/index.jsx) | JavaScript React | 153 | 4 | 22 | 179 |
+| [src/menu/sysinterface/settingform/index.scss](/src/menu/sysinterface/settingform/index.scss) | SCSS | 60 | 0 | 1 | 61 |
+| [src/menu/sysinterface/settingform/simplescript/index.jsx](/src/menu/sysinterface/settingform/simplescript/index.jsx) | JavaScript React | 401 | 0 | 50 | 451 |
+| [src/menu/sysinterface/settingform/simplescript/index.scss](/src/menu/sysinterface/settingform/simplescript/index.scss) | SCSS | 45 | 0 | 0 | 45 |
+| [src/menu/sysinterface/settingform/utils.jsx](/src/menu/sysinterface/settingform/utils.jsx) | JavaScript React | 33 | 5 | 7 | 45 |
+| [src/menu/urlfieldcomponent/index.jsx](/src/menu/urlfieldcomponent/index.jsx) | JavaScript React | 115 | 0 | 21 | 136 |
+| [src/menu/urlfieldcomponent/index.scss](/src/menu/urlfieldcomponent/index.scss) | SCSS | 23 | 0 | 1 | 24 |
+| [src/menu/urlfieldcomponent/settingform/index.jsx](/src/menu/urlfieldcomponent/settingform/index.jsx) | JavaScript React | 70 | 2 | 10 | 82 |
+| [src/menu/urlfieldcomponent/settingform/index.scss](/src/menu/urlfieldcomponent/settingform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/menu/versions/index.jsx](/src/menu/versions/index.jsx) | JavaScript React | 136 | 1 | 20 | 157 |
+| [src/menu/versions/index.scss](/src/menu/versions/index.scss) | SCSS | 30 | 0 | 0 | 30 |
+| [src/mob/colorsketch/index.jsx](/src/mob/colorsketch/index.jsx) | JavaScript React | 84 | 0 | 15 | 99 |
+| [src/mob/colorsketch/index.scss](/src/mob/colorsketch/index.scss) | SCSS | 60 | 0 | 3 | 63 |
+| [src/mob/components/formdragelement/card.jsx](/src/mob/components/formdragelement/card.jsx) | JavaScript React | 194 | 0 | 14 | 208 |
+| [src/mob/components/formdragelement/index.jsx](/src/mob/components/formdragelement/index.jsx) | JavaScript React | 114 | 1 | 25 | 140 |
+| [src/mob/components/formdragelement/index.scss](/src/mob/components/formdragelement/index.scss) | SCSS | 281 | 1 | 3 | 285 |
+| [src/mob/components/menubar/normal-menubar/index.jsx](/src/mob/components/menubar/normal-menubar/index.jsx) | JavaScript React | 230 | 12 | 52 | 294 |
+| [src/mob/components/menubar/normal-menubar/index.scss](/src/mob/components/menubar/normal-menubar/index.scss) | SCSS | 69 | 0 | 3 | 72 |
+| [src/mob/components/menubar/normal-menubar/menucomponent/index.jsx](/src/mob/components/menubar/normal-menubar/menucomponent/index.jsx) | JavaScript React | 137 | 3 | 29 | 169 |
+| [src/mob/components/menubar/normal-menubar/menucomponent/index.scss](/src/mob/components/menubar/normal-menubar/menucomponent/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/mob/components/menubar/normal-menubar/menucomponent/options.jsx](/src/mob/components/menubar/normal-menubar/menucomponent/options.jsx) | JavaScript React | 180 | 4 | 3 | 187 |
+| [src/mob/components/menubar/normal-menubar/options.jsx](/src/mob/components/menubar/normal-menubar/options.jsx) | JavaScript React | 43 | 3 | 1 | 47 |
+| [src/mob/components/navbar/normal-navbar/index.jsx](/src/mob/components/navbar/normal-navbar/index.jsx) | JavaScript React | 122 | 6 | 29 | 157 |
+| [src/mob/components/navbar/normal-navbar/index.scss](/src/mob/components/navbar/normal-navbar/index.scss) | SCSS | 65 | 0 | 3 | 68 |
+| [src/mob/components/navbar/normal-navbar/menus/drags/card.jsx](/src/mob/components/navbar/normal-navbar/menus/drags/card.jsx) | JavaScript React | 58 | 0 | 7 | 65 |
+| [src/mob/components/navbar/normal-navbar/menus/drags/index.jsx](/src/mob/components/navbar/normal-navbar/menus/drags/index.jsx) | JavaScript React | 48 | 1 | 8 | 57 |
+| [src/mob/components/navbar/normal-navbar/menus/drags/index.scss](/src/mob/components/navbar/normal-navbar/menus/drags/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/mob/components/navbar/normal-navbar/menus/index.jsx](/src/mob/components/navbar/normal-navbar/menus/index.jsx) | JavaScript React | 148 | 22 | 26 | 196 |
+| [src/mob/components/navbar/normal-navbar/menus/index.scss](/src/mob/components/navbar/normal-navbar/menus/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/mob/components/navbar/normal-navbar/menus/menuform/index.jsx](/src/mob/components/navbar/normal-navbar/menus/menuform/index.jsx) | JavaScript React | 207 | 1 | 17 | 225 |
+| [src/mob/components/navbar/normal-navbar/menus/menuform/index.scss](/src/mob/components/navbar/normal-navbar/menus/menuform/index.scss) | SCSS | 16 | 0 | 1 | 17 |
+| [src/mob/components/navbar/normal-navbar/options.jsx](/src/mob/components/navbar/normal-navbar/options.jsx) | JavaScript React | 41 | 3 | 1 | 45 |
+| [src/mob/components/search/single-search/index.jsx](/src/mob/components/search/single-search/index.jsx) | JavaScript React | 125 | 9 | 26 | 160 |
+| [src/mob/components/search/single-search/index.scss](/src/mob/components/search/single-search/index.scss) | SCSS | 51 | 0 | 2 | 53 |
+| [src/mob/components/search/single-search/options.jsx](/src/mob/components/search/single-search/options.jsx) | JavaScript React | 111 | 3 | 1 | 115 |
+| [src/mob/components/tabs/antv-tabs/dragabletabs.jsx](/src/mob/components/tabs/antv-tabs/dragabletabs.jsx) | JavaScript React | 106 | 1 | 22 | 129 |
+| [src/mob/components/tabs/antv-tabs/index.jsx](/src/mob/components/tabs/antv-tabs/index.jsx) | JavaScript React | 356 | 5 | 76 | 437 |
+| [src/mob/components/tabs/antv-tabs/index.scss](/src/mob/components/tabs/antv-tabs/index.scss) | SCSS | 123 | 0 | 8 | 131 |
+| [src/mob/components/tabs/antv-tabs/options.jsx](/src/mob/components/tabs/antv-tabs/options.jsx) | JavaScript React | 91 | 45 | 5 | 141 |
+| [src/mob/components/tabs/tabcomponents/card.jsx](/src/mob/components/tabs/tabcomponents/card.jsx) | JavaScript React | 105 | 0 | 10 | 115 |
+| [src/mob/components/tabs/tabcomponents/index.jsx](/src/mob/components/tabs/tabcomponents/index.jsx) | JavaScript React | 150 | 8 | 24 | 182 |
+| [src/mob/components/tabs/tabcomponents/index.scss](/src/mob/components/tabs/tabcomponents/index.scss) | SCSS | 12 | 0 | 2 | 14 |
+| [src/mob/components/topbar/normal-navbar/index.jsx](/src/mob/components/topbar/normal-navbar/index.jsx) | JavaScript React | 204 | 6 | 42 | 252 |
+| [src/mob/components/topbar/normal-navbar/index.scss](/src/mob/components/topbar/normal-navbar/index.scss) | SCSS | 88 | 0 | 2 | 90 |
+| [src/mob/components/topbar/normal-navbar/options.jsx](/src/mob/components/topbar/normal-navbar/options.jsx) | JavaScript React | 149 | 14 | 4 | 167 |
+| [src/mob/header/index.jsx](/src/mob/header/index.jsx) | JavaScript React | 37 | 0 | 5 | 42 |
+| [src/mob/header/index.scss](/src/mob/header/index.scss) | SCSS | 54 | 0 | 2 | 56 |
+| [src/mob/mobshell/card.jsx](/src/mob/mobshell/card.jsx) | JavaScript React | 127 | 3 | 13 | 143 |
+| [src/mob/mobshell/index.jsx](/src/mob/mobshell/index.jsx) | JavaScript React | 202 | 0 | 27 | 229 |
+| [src/mob/mobshell/index.scss](/src/mob/mobshell/index.scss) | SCSS | 33 | 1 | 0 | 34 |
+| [src/mob/modalconfig/controller.jsx](/src/mob/modalconfig/controller.jsx) | JavaScript React | 49 | 3 | 12 | 64 |
+| [src/mob/modalconfig/index.jsx](/src/mob/modalconfig/index.jsx) | JavaScript React | 410 | 36 | 59 | 505 |
+| [src/mob/modalconfig/index.scss](/src/mob/modalconfig/index.scss) | SCSS | 323 | 0 | 8 | 331 |
+| [src/mob/modalconfig/pastecomponent/index.jsx](/src/mob/modalconfig/pastecomponent/index.jsx) | JavaScript React | 62 | 1 | 13 | 76 |
+| [src/mob/modalconfig/pastecomponent/index.scss](/src/mob/modalconfig/pastecomponent/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/mob/modalconfig/source.jsx](/src/mob/modalconfig/source.jsx) | JavaScript React | 112 | 0 | 4 | 116 |
+| [src/mob/modulesource/dragsource/index.jsx](/src/mob/modulesource/dragsource/index.jsx) | JavaScript React | 14 | 0 | 1 | 15 |
+| [src/mob/modulesource/dragsource/index.scss](/src/mob/modulesource/dragsource/index.scss) | SCSS | 40 | 0 | 6 | 46 |
+| [src/mob/modulesource/index.jsx](/src/mob/modulesource/index.jsx) | JavaScript React | 81 | 0 | 13 | 94 |
+| [src/mob/modulesource/index.scss](/src/mob/modulesource/index.scss) | SCSS | 8 | 0 | 2 | 10 |
+| [src/mob/modulesource/option.jsx](/src/mob/modulesource/option.jsx) | JavaScript React | 55 | 3 | 2 | 60 |
+| [src/mob/searchconfig/controller.jsx](/src/mob/searchconfig/controller.jsx) | JavaScript React | 46 | 3 | 13 | 62 |
+| [src/mob/searchconfig/groupdragelement/card.jsx](/src/mob/searchconfig/groupdragelement/card.jsx) | JavaScript React | 56 | 0 | 8 | 64 |
+| [src/mob/searchconfig/groupdragelement/index.jsx](/src/mob/searchconfig/groupdragelement/index.jsx) | JavaScript React | 53 | 0 | 12 | 65 |
+| [src/mob/searchconfig/groupdragelement/index.scss](/src/mob/searchconfig/groupdragelement/index.scss) | SCSS | 27 | 0 | 1 | 28 |
+| [src/mob/searchconfig/groupform/index.jsx](/src/mob/searchconfig/groupform/index.jsx) | JavaScript React | 78 | 1 | 10 | 89 |
+| [src/mob/searchconfig/groupform/index.scss](/src/mob/searchconfig/groupform/index.scss) | SCSS | 10 | 0 | 0 | 10 |
+| [src/mob/searchconfig/index.jsx](/src/mob/searchconfig/index.jsx) | JavaScript React | 496 | 36 | 67 | 599 |
+| [src/mob/searchconfig/index.scss](/src/mob/searchconfig/index.scss) | SCSS | 365 | 0 | 9 | 374 |
+| [src/mob/searchconfig/pastecomponent/index.jsx](/src/mob/searchconfig/pastecomponent/index.jsx) | JavaScript React | 46 | 1 | 10 | 57 |
+| [src/mob/searchconfig/pastecomponent/index.scss](/src/mob/searchconfig/pastecomponent/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/mob/searchconfig/searchdragelement/card.jsx](/src/mob/searchconfig/searchdragelement/card.jsx) | JavaScript React | 110 | 21 | 10 | 141 |
+| [src/mob/searchconfig/searchdragelement/index.jsx](/src/mob/searchconfig/searchdragelement/index.jsx) | JavaScript React | 99 | 1 | 24 | 124 |
+| [src/mob/searchconfig/searchdragelement/index.scss](/src/mob/searchconfig/searchdragelement/index.scss) | SCSS | 185 | 1 | 3 | 189 |
+| [src/mob/searchconfig/settingform/index.jsx](/src/mob/searchconfig/settingform/index.jsx) | JavaScript React | 233 | 1 | 13 | 247 |
+| [src/mob/searchconfig/settingform/index.scss](/src/mob/searchconfig/settingform/index.scss) | SCSS | 20 | 0 | 0 | 20 |
+| [src/mob/searchconfig/source.jsx](/src/mob/searchconfig/source.jsx) | JavaScript React | 26 | 6 | 2 | 34 |
+| [src/pc/bgcontroller/index.jsx](/src/pc/bgcontroller/index.jsx) | JavaScript React | 210 | 6 | 30 | 246 |
+| [src/pc/bgcontroller/index.scss](/src/pc/bgcontroller/index.scss) | SCSS | 19 | 0 | 1 | 20 |
+| [src/pc/components/login/normal-login/index.jsx](/src/pc/components/login/normal-login/index.jsx) | JavaScript React | 156 | 6 | 34 | 196 |
+| [src/pc/components/login/normal-login/index.scss](/src/pc/components/login/normal-login/index.scss) | SCSS | 182 | 3 | 5 | 190 |
+| [src/pc/components/login/normal-login/loginform.jsx](/src/pc/components/login/normal-login/loginform.jsx) | JavaScript React | 162 | 4 | 18 | 184 |
+| [src/pc/components/login/normal-login/options.jsx](/src/pc/components/login/normal-login/options.jsx) | JavaScript React | 116 | 67 | 4 | 187 |
+| [src/pc/components/navbar/normal-navbar/index.jsx](/src/pc/components/navbar/normal-navbar/index.jsx) | JavaScript React | 206 | 6 | 35 | 247 |
+| [src/pc/components/navbar/normal-navbar/index.scss](/src/pc/components/navbar/normal-navbar/index.scss) | SCSS | 153 | 0 | 6 | 159 |
+| [src/pc/components/navbar/normal-navbar/linksetting/index.jsx](/src/pc/components/navbar/normal-navbar/linksetting/index.jsx) | JavaScript React | 53 | 0 | 9 | 62 |
+| [src/pc/components/navbar/normal-navbar/linksetting/index.scss](/src/pc/components/navbar/normal-navbar/linksetting/index.scss) | SCSS | 9 | 0 | 2 | 11 |
+| [src/pc/components/navbar/normal-navbar/linksetting/linkform/index.jsx](/src/pc/components/navbar/normal-navbar/linksetting/linkform/index.jsx) | JavaScript React | 147 | 1 | 17 | 165 |
+| [src/pc/components/navbar/normal-navbar/linksetting/linkform/index.scss](/src/pc/components/navbar/normal-navbar/linksetting/linkform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/pc/components/navbar/normal-navbar/linksetting/linktable/index.jsx](/src/pc/components/navbar/normal-navbar/linksetting/linktable/index.jsx) | JavaScript React | 134 | 0 | 27 | 161 |
+| [src/pc/components/navbar/normal-navbar/linksetting/linktable/index.scss](/src/pc/components/navbar/normal-navbar/linksetting/linktable/index.scss) | SCSS | 18 | 0 | 2 | 20 |
+| [src/pc/components/navbar/normal-navbar/menusetting/index.jsx](/src/pc/components/navbar/normal-navbar/menusetting/index.jsx) | JavaScript React | 54 | 0 | 9 | 63 |
+| [src/pc/components/navbar/normal-navbar/menusetting/index.scss](/src/pc/components/navbar/normal-navbar/menusetting/index.scss) | SCSS | 9 | 0 | 2 | 11 |
+| [src/pc/components/navbar/normal-navbar/menusetting/menuform/index.jsx](/src/pc/components/navbar/normal-navbar/menusetting/menuform/index.jsx) | JavaScript React | 190 | 1 | 17 | 208 |
+| [src/pc/components/navbar/normal-navbar/menusetting/menuform/index.scss](/src/pc/components/navbar/normal-navbar/menusetting/menuform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/pc/components/navbar/normal-navbar/menusetting/menutable/index.jsx](/src/pc/components/navbar/normal-navbar/menusetting/menutable/index.jsx) | JavaScript React | 501 | 0 | 83 | 584 |
+| [src/pc/components/navbar/normal-navbar/menusetting/menutable/index.scss](/src/pc/components/navbar/normal-navbar/menusetting/menutable/index.scss) | SCSS | 60 | 0 | 4 | 64 |
+| [src/pc/components/navbar/normal-navbar/options.jsx](/src/pc/components/navbar/normal-navbar/options.jsx) | JavaScript React | 113 | 3 | 2 | 118 |
+| [src/pc/createview/index.jsx](/src/pc/createview/index.jsx) | JavaScript React | 204 | 0 | 26 | 230 |
+| [src/pc/createview/index.scss](/src/pc/createview/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/pc/createview/settingform/index.jsx](/src/pc/createview/settingform/index.jsx) | JavaScript React | 119 | 1 | 10 | 130 |
+| [src/pc/createview/settingform/index.scss](/src/pc/createview/settingform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/pc/menushell/card.jsx](/src/pc/menushell/card.jsx) | JavaScript React | 130 | 3 | 12 | 145 |
+| [src/pc/menushell/index.jsx](/src/pc/menushell/index.jsx) | JavaScript React | 166 | 0 | 25 | 191 |
+| [src/pc/menushell/index.scss](/src/pc/menushell/index.scss) | SCSS | 20 | 0 | 3 | 23 |
+| [src/pc/modulesource/dragsource/index.jsx](/src/pc/modulesource/dragsource/index.jsx) | JavaScript React | 14 | 0 | 1 | 15 |
+| [src/pc/modulesource/dragsource/index.scss](/src/pc/modulesource/dragsource/index.scss) | SCSS | 40 | 0 | 6 | 46 |
+| [src/pc/modulesource/index.jsx](/src/pc/modulesource/index.jsx) | JavaScript React | 81 | 0 | 13 | 94 |
+| [src/pc/modulesource/index.scss](/src/pc/modulesource/index.scss) | SCSS | 8 | 0 | 2 | 10 |
+| [src/pc/modulesource/option.jsx](/src/pc/modulesource/option.jsx) | JavaScript React | 62 | 1 | 2 | 65 |
+| [src/pc/quotecomponent/index.jsx](/src/pc/quotecomponent/index.jsx) | JavaScript React | 113 | 0 | 16 | 129 |
+| [src/pc/quotecomponent/index.scss](/src/pc/quotecomponent/index.scss) | SCSS | 6 | 0 | 0 | 6 |
+| [src/pc/quotecomponent/settingform/index.jsx](/src/pc/quotecomponent/settingform/index.jsx) | JavaScript React | 76 | 1 | 9 | 86 |
+| [src/pc/quotecomponent/settingform/index.scss](/src/pc/quotecomponent/settingform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/pc/transfer/index.jsx](/src/pc/transfer/index.jsx) | JavaScript React | 113 | 0 | 14 | 127 |
+| [src/pc/transfer/index.scss](/src/pc/transfer/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/pc/transfer/settingform/index.jsx](/src/pc/transfer/settingform/index.jsx) | JavaScript React | 58 | 2 | 8 | 68 |
+| [src/pc/transfer/settingform/index.scss](/src/pc/transfer/settingform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/router/index.js](/src/router/index.js) | JavaScript | 100 | 1 | 13 | 114 |
+| [src/serviceWorker.js](/src/serviceWorker.js) | JavaScript | 90 | 31 | 13 | 134 |
+| [src/setupProxy.js](/src/setupProxy.js) | JavaScript | 1 | 46 | 5 | 52 |
+| [src/store/action-type.js](/src/store/action-type.js) | JavaScript | 9 | 9 | 8 | 26 |
+| [src/store/action.js](/src/store/action.js) | JavaScript | 48 | 8 | 8 | 64 |
+| [src/store/index.js](/src/store/index.js) | JavaScript | 8 | 0 | 2 | 10 |
+| [src/store/options.js](/src/store/options.js) | JavaScript | 36 | 10 | 1 | 47 |
+| [src/store/reducer.js](/src/store/reducer.js) | JavaScript | 79 | 8 | 5 | 92 |
+| [src/tabviews/calendar/index.jsx](/src/tabviews/calendar/index.jsx) | JavaScript React | 472 | 33 | 82 | 587 |
+| [src/tabviews/calendar/index.scss](/src/tabviews/calendar/index.scss) | SCSS | 40 | 0 | 5 | 45 |
+| [src/tabviews/commontable/index.jsx](/src/tabviews/commontable/index.jsx) | JavaScript React | 1,038 | 60 | 157 | 1,255 |
+| [src/tabviews/commontable/index.scss](/src/tabviews/commontable/index.scss) | SCSS | 140 | 0 | 0 | 140 |
+| [src/tabviews/custom/components/card/balcony/index.jsx](/src/tabviews/custom/components/card/balcony/index.jsx) | JavaScript React | 291 | 9 | 65 | 365 |
+| [src/tabviews/custom/components/card/balcony/index.scss](/src/tabviews/custom/components/card/balcony/index.scss) | SCSS | 69 | 0 | 8 | 77 |
+| [src/tabviews/custom/components/card/cardItem/index.jsx](/src/tabviews/custom/components/card/cardItem/index.jsx) | JavaScript React | 148 | 6 | 33 | 187 |
+| [src/tabviews/custom/components/card/cardItem/index.scss](/src/tabviews/custom/components/card/cardItem/index.scss) | SCSS | 63 | 0 | 2 | 65 |
+| [src/tabviews/custom/components/card/cardcellList/asyncButtonComponent.jsx](/src/tabviews/custom/components/card/cardcellList/asyncButtonComponent.jsx) | JavaScript React | 19 | 5 | 5 | 29 |
+| [src/tabviews/custom/components/card/cardcellList/index.jsx](/src/tabviews/custom/components/card/cardcellList/index.jsx) | JavaScript React | 709 | 11 | 95 | 815 |
+| [src/tabviews/custom/components/card/cardcellList/index.scss](/src/tabviews/custom/components/card/cardcellList/index.scss) | SCSS | 154 | 0 | 2 | 156 |
+| [src/tabviews/custom/components/card/data-card/index.jsx](/src/tabviews/custom/components/card/data-card/index.jsx) | JavaScript React | 678 | 12 | 105 | 795 |
+| [src/tabviews/custom/components/card/data-card/index.scss](/src/tabviews/custom/components/card/data-card/index.scss) | SCSS | 134 | 0 | 6 | 140 |
+| [src/tabviews/custom/components/card/prop-card/index.jsx](/src/tabviews/custom/components/card/prop-card/index.jsx) | JavaScript React | 353 | 9 | 68 | 430 |
+| [src/tabviews/custom/components/card/prop-card/index.scss](/src/tabviews/custom/components/card/prop-card/index.scss) | SCSS | 58 | 0 | 7 | 65 |
+| [src/tabviews/custom/components/card/table-card/index.jsx](/src/tabviews/custom/components/card/table-card/index.jsx) | JavaScript React | 362 | 16 | 68 | 446 |
+| [src/tabviews/custom/components/card/table-card/index.scss](/src/tabviews/custom/components/card/table-card/index.scss) | SCSS | 85 | 2 | 9 | 96 |
+| [src/tabviews/custom/components/carousel/cardItem/index.jsx](/src/tabviews/custom/components/carousel/cardItem/index.jsx) | JavaScript React | 75 | 6 | 21 | 102 |
+| [src/tabviews/custom/components/carousel/cardItem/index.scss](/src/tabviews/custom/components/carousel/cardItem/index.scss) | SCSS | 57 | 0 | 1 | 58 |
+| [src/tabviews/custom/components/carousel/data-card/index.jsx](/src/tabviews/custom/components/carousel/data-card/index.jsx) | JavaScript React | 228 | 9 | 41 | 278 |
+| [src/tabviews/custom/components/carousel/data-card/index.scss](/src/tabviews/custom/components/carousel/data-card/index.scss) | SCSS | 45 | 0 | 6 | 51 |
+| [src/tabviews/custom/components/carousel/prop-card/index.jsx](/src/tabviews/custom/components/carousel/prop-card/index.jsx) | JavaScript React | 222 | 9 | 43 | 274 |
+| [src/tabviews/custom/components/carousel/prop-card/index.scss](/src/tabviews/custom/components/carousel/prop-card/index.scss) | SCSS | 39 | 0 | 5 | 44 |
+| [src/tabviews/custom/components/chart/antv-bar-line/asyncButtonComponent.jsx](/src/tabviews/custom/components/chart/antv-bar-line/asyncButtonComponent.jsx) | JavaScript React | 23 | 5 | 6 | 34 |
+| [src/tabviews/custom/components/chart/antv-bar-line/index.jsx](/src/tabviews/custom/components/chart/antv-bar-line/index.jsx) | JavaScript React | 1,542 | 47 | 223 | 1,812 |
+| [src/tabviews/custom/components/chart/antv-bar-line/index.scss](/src/tabviews/custom/components/chart/antv-bar-line/index.scss) | SCSS | 86 | 0 | 5 | 91 |
+| [src/tabviews/custom/components/chart/antv-dashboard/index.jsx](/src/tabviews/custom/components/chart/antv-dashboard/index.jsx) | JavaScript React | 573 | 13 | 76 | 662 |
+| [src/tabviews/custom/components/chart/antv-dashboard/index.scss](/src/tabviews/custom/components/chart/antv-dashboard/index.scss) | SCSS | 61 | 0 | 6 | 67 |
+| [src/tabviews/custom/components/chart/antv-pie/index.jsx](/src/tabviews/custom/components/chart/antv-pie/index.jsx) | JavaScript React | 925 | 16 | 136 | 1,077 |
+| [src/tabviews/custom/components/chart/antv-pie/index.scss](/src/tabviews/custom/components/chart/antv-pie/index.scss) | SCSS | 74 | 0 | 5 | 79 |
+| [src/tabviews/custom/components/chart/antv-scatter/asyncButtonComponent.jsx](/src/tabviews/custom/components/chart/antv-scatter/asyncButtonComponent.jsx) | JavaScript React | 23 | 5 | 6 | 34 |
+| [src/tabviews/custom/components/chart/antv-scatter/index.jsx](/src/tabviews/custom/components/chart/antv-scatter/index.jsx) | JavaScript React | 389 | 24 | 62 | 475 |
+| [src/tabviews/custom/components/chart/antv-scatter/index.scss](/src/tabviews/custom/components/chart/antv-scatter/index.scss) | SCSS | 86 | 0 | 7 | 93 |
+| [src/tabviews/custom/components/chart/custom-chart/index.jsx](/src/tabviews/custom/components/chart/custom-chart/index.jsx) | JavaScript React | 305 | 26 | 60 | 391 |
+| [src/tabviews/custom/components/chart/custom-chart/index.scss](/src/tabviews/custom/components/chart/custom-chart/index.scss) | SCSS | 54 | 0 | 4 | 58 |
+| [src/tabviews/custom/components/code/sand-box/index.jsx](/src/tabviews/custom/components/code/sand-box/index.jsx) | JavaScript React | 188 | 4 | 32 | 224 |
+| [src/tabviews/custom/components/code/sand-box/index.scss](/src/tabviews/custom/components/code/sand-box/index.scss) | SCSS | 31 | 0 | 4 | 35 |
+| [src/tabviews/custom/components/editor/braft-editor/index.jsx](/src/tabviews/custom/components/editor/braft-editor/index.jsx) | JavaScript React | 164 | 3 | 30 | 197 |
+| [src/tabviews/custom/components/editor/braft-editor/index.scss](/src/tabviews/custom/components/editor/braft-editor/index.scss) | SCSS | 32 | 0 | 4 | 36 |
+| [src/tabviews/custom/components/form/normal-form/index.jsx](/src/tabviews/custom/components/form/normal-form/index.jsx) | JavaScript React | 327 | 11 | 68 | 406 |
+| [src/tabviews/custom/components/form/normal-form/index.scss](/src/tabviews/custom/components/form/normal-form/index.scss) | SCSS | 103 | 0 | 7 | 110 |
+| [src/tabviews/custom/components/form/tab-form/index.jsx](/src/tabviews/custom/components/form/tab-form/index.jsx) | JavaScript React | 284 | 11 | 56 | 351 |
+| [src/tabviews/custom/components/form/tab-form/index.scss](/src/tabviews/custom/components/form/tab-form/index.scss) | SCSS | 92 | 0 | 7 | 99 |
+| [src/tabviews/custom/components/group/normal-group/index.jsx](/src/tabviews/custom/components/group/normal-group/index.jsx) | JavaScript React | 313 | 5 | 36 | 354 |
+| [src/tabviews/custom/components/group/normal-group/index.scss](/src/tabviews/custom/components/group/normal-group/index.scss) | SCSS | 15 | 0 | 2 | 17 |
+| [src/tabviews/custom/components/module/voucher/index.jsx](/src/tabviews/custom/components/module/voucher/index.jsx) | JavaScript React | 104 | 5 | 21 | 130 |
+| [src/tabviews/custom/components/module/voucher/index.scss](/src/tabviews/custom/components/module/voucher/index.scss) | SCSS | 51 | 0 | 6 | 57 |
+| [src/tabviews/custom/components/module/voucher/voucherTable/index.jsx](/src/tabviews/custom/components/module/voucher/voucherTable/index.jsx) | JavaScript React | 574 | 48 | 116 | 738 |
+| [src/tabviews/custom/components/module/voucher/voucherTable/index.scss](/src/tabviews/custom/components/module/voucher/voucherTable/index.scss) | SCSS | 251 | 0 | 8 | 259 |
+| [src/tabviews/custom/components/share/braftContent/index.jsx](/src/tabviews/custom/components/share/braftContent/index.jsx) | JavaScript React | 46 | 0 | 12 | 58 |
+| [src/tabviews/custom/components/share/braftContent/index.scss](/src/tabviews/custom/components/share/braftContent/index.scss) | SCSS | 26 | 0 | 0 | 26 |
+| [src/tabviews/custom/components/share/normalTable/index.jsx](/src/tabviews/custom/components/share/normalTable/index.jsx) | JavaScript React | 760 | 13 | 150 | 923 |
+| [src/tabviews/custom/components/share/normalTable/index.scss](/src/tabviews/custom/components/share/normalTable/index.scss) | SCSS | 248 | 16 | 4 | 268 |
+| [src/tabviews/custom/components/share/normalheader/index.jsx](/src/tabviews/custom/components/share/normalheader/index.jsx) | JavaScript React | 42 | 3 | 12 | 57 |
+| [src/tabviews/custom/components/share/normalheader/index.scss](/src/tabviews/custom/components/share/normalheader/index.scss) | SCSS | 48 | 0 | 1 | 49 |
+| [src/tabviews/custom/components/share/tabtransfer/index.jsx](/src/tabviews/custom/components/share/tabtransfer/index.jsx) | JavaScript React | 288 | 5 | 27 | 320 |
+| [src/tabviews/custom/components/share/tabtransfer/index.scss](/src/tabviews/custom/components/share/tabtransfer/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/tabviews/custom/components/table/edit-table/index.jsx](/src/tabviews/custom/components/table/edit-table/index.jsx) | JavaScript React | 418 | 35 | 58 | 511 |
+| [src/tabviews/custom/components/table/edit-table/index.scss](/src/tabviews/custom/components/table/edit-table/index.scss) | SCSS | 119 | 0 | 1 | 120 |
+| [src/tabviews/custom/components/table/edit-table/normalTable/index.jsx](/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx) | JavaScript React | 901 | 17 | 160 | 1,078 |
+| [src/tabviews/custom/components/table/edit-table/normalTable/index.scss](/src/tabviews/custom/components/table/edit-table/normalTable/index.scss) | SCSS | 290 | 7 | 4 | 301 |
+| [src/tabviews/custom/components/table/normal-table/index.jsx](/src/tabviews/custom/components/table/normal-table/index.jsx) | JavaScript React | 591 | 38 | 80 | 709 |
+| [src/tabviews/custom/components/table/normal-table/index.scss](/src/tabviews/custom/components/table/normal-table/index.scss) | SCSS | 95 | 0 | 1 | 96 |
+| [src/tabviews/custom/components/tabs/antv-tabs/index.jsx](/src/tabviews/custom/components/tabs/antv-tabs/index.jsx) | JavaScript React | 109 | 3 | 24 | 136 |
+| [src/tabviews/custom/components/tabs/antv-tabs/index.scss](/src/tabviews/custom/components/tabs/antv-tabs/index.scss) | SCSS | 28 | 0 | 3 | 31 |
+| [src/tabviews/custom/components/timeline/normal-timeline/index.jsx](/src/tabviews/custom/components/timeline/normal-timeline/index.jsx) | JavaScript React | 266 | 20 | 47 | 333 |
+| [src/tabviews/custom/components/timeline/normal-timeline/index.scss](/src/tabviews/custom/components/timeline/normal-timeline/index.scss) | SCSS | 92 | 2 | 10 | 104 |
+| [src/tabviews/custom/components/tree/antd-tree/index.jsx](/src/tabviews/custom/components/tree/antd-tree/index.jsx) | JavaScript React | 406 | 20 | 70 | 496 |
+| [src/tabviews/custom/components/tree/antd-tree/index.scss](/src/tabviews/custom/components/tree/antd-tree/index.scss) | SCSS | 92 | 0 | 7 | 99 |
+| [src/tabviews/custom/index.jsx](/src/tabviews/custom/index.jsx) | JavaScript React | 1,043 | 29 | 145 | 1,217 |
+| [src/tabviews/custom/index.scss](/src/tabviews/custom/index.scss) | SCSS | 54 | 0 | 4 | 58 |
+| [src/tabviews/formtab/actionList/index.jsx](/src/tabviews/formtab/actionList/index.jsx) | JavaScript React | 289 | 32 | 46 | 367 |
+| [src/tabviews/formtab/actionList/index.scss](/src/tabviews/formtab/actionList/index.scss) | SCSS | 19 | 0 | 1 | 20 |
+| [src/tabviews/formtab/formgroup/index.jsx](/src/tabviews/formtab/formgroup/index.jsx) | JavaScript React | 639 | 4 | 82 | 725 |
+| [src/tabviews/formtab/formgroup/index.scss](/src/tabviews/formtab/formgroup/index.scss) | SCSS | 47 | 0 | 0 | 47 |
+| [src/tabviews/formtab/index.jsx](/src/tabviews/formtab/index.jsx) | JavaScript React | 545 | 33 | 93 | 671 |
+| [src/tabviews/formtab/index.scss](/src/tabviews/formtab/index.scss) | SCSS | 111 | 0 | 2 | 113 |
+| [src/tabviews/home/defaulthome/index.jsx](/src/tabviews/home/defaulthome/index.jsx) | JavaScript React | 276 | 0 | 8 | 284 |
+| [src/tabviews/home/defaulthome/index.scss](/src/tabviews/home/defaulthome/index.scss) | SCSS | 198 | 0 | 0 | 198 |
+| [src/tabviews/home/index.jsx](/src/tabviews/home/index.jsx) | JavaScript React | 87 | 0 | 12 | 99 |
+| [src/tabviews/home/index.scss](/src/tabviews/home/index.scss) | SCSS | 9 | 0 | 0 | 9 |
+| [src/tabviews/iframe/index.jsx](/src/tabviews/iframe/index.jsx) | JavaScript React | 37 | 3 | 10 | 50 |
+| [src/tabviews/rolemanage/index.jsx](/src/tabviews/rolemanage/index.jsx) | JavaScript React | 805 | 60 | 113 | 978 |
+| [src/tabviews/rolemanage/index.scss](/src/tabviews/rolemanage/index.scss) | SCSS | 112 | 1 | 1 | 114 |
+| [src/tabviews/scriptmanage/actionList/index.jsx](/src/tabviews/scriptmanage/actionList/index.jsx) | JavaScript React | 245 | 32 | 35 | 312 |
+| [src/tabviews/scriptmanage/actionList/index.scss](/src/tabviews/scriptmanage/actionList/index.scss) | SCSS | 17 | 0 | 1 | 18 |
+| [src/tabviews/scriptmanage/config.jsx](/src/tabviews/scriptmanage/config.jsx) | JavaScript React | 86 | 1 | 2 | 89 |
+| [src/tabviews/scriptmanage/index.jsx](/src/tabviews/scriptmanage/index.jsx) | JavaScript React | 272 | 34 | 43 | 349 |
+| [src/tabviews/scriptmanage/index.scss](/src/tabviews/scriptmanage/index.scss) | SCSS | 70 | 0 | 3 | 73 |
+| [src/tabviews/subtable/index.jsx](/src/tabviews/subtable/index.jsx) | JavaScript React | 902 | 56 | 139 | 1,097 |
+| [src/tabviews/subtable/index.scss](/src/tabviews/subtable/index.scss) | SCSS | 102 | 0 | 4 | 106 |
+| [src/tabviews/subtabtable/index.jsx](/src/tabviews/subtabtable/index.jsx) | JavaScript React | 734 | 47 | 121 | 902 |
+| [src/tabviews/subtabtable/index.scss](/src/tabviews/subtabtable/index.scss) | SCSS | 82 | 0 | 1 | 83 |
+| [src/tabviews/tabmanage/index.jsx](/src/tabviews/tabmanage/index.jsx) | JavaScript React | 513 | 4 | 60 | 577 |
+| [src/tabviews/tabmanage/index.scss](/src/tabviews/tabmanage/index.scss) | SCSS | 56 | 0 | 3 | 59 |
+| [src/tabviews/tabmanage/mutilform/index.jsx](/src/tabviews/tabmanage/mutilform/index.jsx) | JavaScript React | 90 | 1 | 8 | 99 |
+| [src/tabviews/tabmanage/mutilform/index.scss](/src/tabviews/tabmanage/mutilform/index.scss) | SCSS | 47 | 0 | 0 | 47 |
+| [src/tabviews/tabmanage/transferform/index.jsx](/src/tabviews/tabmanage/transferform/index.jsx) | JavaScript React | 35 | 0 | 9 | 44 |
+| [src/tabviews/tabmanage/transferform/index.scss](/src/tabviews/tabmanage/transferform/index.scss) | SCSS | 6 | 0 | 0 | 6 |
+| [src/tabviews/treepage/index.jsx](/src/tabviews/treepage/index.jsx) | JavaScript React | 540 | 29 | 88 | 657 |
+| [src/tabviews/treepage/index.scss](/src/tabviews/treepage/index.scss) | SCSS | 171 | 0 | 8 | 179 |
+| [src/tabviews/verupmanage/actionList/index.jsx](/src/tabviews/verupmanage/actionList/index.jsx) | JavaScript React | 665 | 51 | 101 | 817 |
+| [src/tabviews/verupmanage/actionList/index.scss](/src/tabviews/verupmanage/actionList/index.scss) | SCSS | 17 | 0 | 1 | 18 |
+| [src/tabviews/verupmanage/config.jsx](/src/tabviews/verupmanage/config.jsx) | JavaScript React | 154 | 3 | 3 | 160 |
+| [src/tabviews/verupmanage/index.jsx](/src/tabviews/verupmanage/index.jsx) | JavaScript React | 413 | 43 | 64 | 520 |
+| [src/tabviews/verupmanage/index.scss](/src/tabviews/verupmanage/index.scss) | SCSS | 77 | 0 | 3 | 80 |
+| [src/tabviews/verupmanage/subtabtable/index.jsx](/src/tabviews/verupmanage/subtabtable/index.jsx) | JavaScript React | 395 | 43 | 62 | 500 |
+| [src/tabviews/verupmanage/subtabtable/index.scss](/src/tabviews/verupmanage/subtabtable/index.scss) | SCSS | 46 | 0 | 2 | 48 |
+| [src/tabviews/zshare/actionList/asyncButtonComponent.jsx](/src/tabviews/zshare/actionList/asyncButtonComponent.jsx) | JavaScript React | 30 | 5 | 7 | 42 |
+| [src/tabviews/zshare/actionList/changeuserbutton/index.jsx](/src/tabviews/zshare/actionList/changeuserbutton/index.jsx) | JavaScript React | 240 | 10 | 35 | 285 |
+| [src/tabviews/zshare/actionList/changeuserbutton/index.scss](/src/tabviews/zshare/actionList/changeuserbutton/index.scss) | SCSS | 0 | 0 | 2 | 2 |
+| [src/tabviews/zshare/actionList/excelInbutton/excelin/index.jsx](/src/tabviews/zshare/actionList/excelInbutton/excelin/index.jsx) | JavaScript React | 97 | 5 | 18 | 120 |
+| [src/tabviews/zshare/actionList/excelInbutton/excelin/index.scss](/src/tabviews/zshare/actionList/excelInbutton/excelin/index.scss) | SCSS | 5 | 0 | 0 | 5 |
+| [src/tabviews/zshare/actionList/excelInbutton/index.jsx](/src/tabviews/zshare/actionList/excelInbutton/index.jsx) | JavaScript React | 454 | 29 | 61 | 544 |
+| [src/tabviews/zshare/actionList/excelInbutton/index.scss](/src/tabviews/zshare/actionList/excelInbutton/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/tabviews/zshare/actionList/exceloutbutton/index.jsx](/src/tabviews/zshare/actionList/exceloutbutton/index.jsx) | JavaScript React | 807 | 47 | 136 | 990 |
+| [src/tabviews/zshare/actionList/exceloutbutton/index.scss](/src/tabviews/zshare/actionList/exceloutbutton/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/tabviews/zshare/actionList/index.jsx](/src/tabviews/zshare/actionList/index.jsx) | JavaScript React | 163 | 0 | 10 | 173 |
+| [src/tabviews/zshare/actionList/index.scss](/src/tabviews/zshare/actionList/index.scss) | SCSS | 26 | 0 | 3 | 29 |
+| [src/tabviews/zshare/actionList/newpagebutton/index.jsx](/src/tabviews/zshare/actionList/newpagebutton/index.jsx) | JavaScript React | 242 | 7 | 32 | 281 |
+| [src/tabviews/zshare/actionList/newpagebutton/index.scss](/src/tabviews/zshare/actionList/newpagebutton/index.scss) | SCSS | 10 | 0 | 2 | 12 |
+| [src/tabviews/zshare/actionList/normalbutton/index.jsx](/src/tabviews/zshare/actionList/normalbutton/index.jsx) | JavaScript React | 1,808 | 85 | 272 | 2,165 |
+| [src/tabviews/zshare/actionList/normalbutton/index.scss](/src/tabviews/zshare/actionList/normalbutton/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/tabviews/zshare/actionList/popupbutton/index.jsx](/src/tabviews/zshare/actionList/popupbutton/index.jsx) | JavaScript React | 315 | 13 | 42 | 370 |
+| [src/tabviews/zshare/actionList/popupbutton/index.scss](/src/tabviews/zshare/actionList/popupbutton/index.scss) | SCSS | 48 | 0 | 1 | 49 |
+| [src/tabviews/zshare/actionList/printbutton/index.jsx](/src/tabviews/zshare/actionList/printbutton/index.jsx) | JavaScript React | 1,184 | 271 | 214 | 1,669 |
+| [src/tabviews/zshare/actionList/printbutton/index.scss](/src/tabviews/zshare/actionList/printbutton/index.scss) | SCSS | 0 | 0 | 2 | 2 |
+| [src/tabviews/zshare/actionList/tabbutton/index.jsx](/src/tabviews/zshare/actionList/tabbutton/index.jsx) | JavaScript React | 225 | 6 | 34 | 265 |
+| [src/tabviews/zshare/actionList/tabbutton/index.scss](/src/tabviews/zshare/actionList/tabbutton/index.scss) | SCSS | 0 | 0 | 2 | 2 |
+| [src/tabviews/zshare/automatic/index.jsx](/src/tabviews/zshare/automatic/index.jsx) | JavaScript React | 172 | 3 | 38 | 213 |
+| [src/tabviews/zshare/automatic/index.scss](/src/tabviews/zshare/automatic/index.scss) | SCSS | 14 | 0 | 1 | 15 |
+| [src/tabviews/zshare/calendar/index.jsx](/src/tabviews/zshare/calendar/index.jsx) | JavaScript React | 350 | 0 | 48 | 398 |
+| [src/tabviews/zshare/calendar/index.scss](/src/tabviews/zshare/calendar/index.scss) | SCSS | 206 | 1 | 2 | 209 |
+| [src/tabviews/zshare/cardcomponent/asyncButtonComponent.jsx](/src/tabviews/zshare/cardcomponent/asyncButtonComponent.jsx) | JavaScript React | 23 | 4 | 6 | 33 |
+| [src/tabviews/zshare/cardcomponent/index.jsx](/src/tabviews/zshare/cardcomponent/index.jsx) | JavaScript React | 698 | 27 | 101 | 826 |
+| [src/tabviews/zshare/cardcomponent/index.scss](/src/tabviews/zshare/cardcomponent/index.scss) | SCSS | 302 | 0 | 23 | 325 |
+| [src/tabviews/zshare/chartcomponent/asyncButtonComponent.jsx](/src/tabviews/zshare/chartcomponent/asyncButtonComponent.jsx) | JavaScript React | 23 | 5 | 6 | 34 |
+| [src/tabviews/zshare/chartcomponent/index.jsx](/src/tabviews/zshare/chartcomponent/index.jsx) | JavaScript React | 933 | 41 | 141 | 1,115 |
+| [src/tabviews/zshare/chartcomponent/index.scss](/src/tabviews/zshare/chartcomponent/index.scss) | SCSS | 108 | 0 | 7 | 115 |
+| [src/tabviews/zshare/fileupload/index.jsx](/src/tabviews/zshare/fileupload/index.jsx) | JavaScript React | 393 | 4 | 72 | 469 |
+| [src/tabviews/zshare/fileupload/index.scss](/src/tabviews/zshare/fileupload/index.scss) | SCSS | 52 | 0 | 1 | 53 |
+| [src/tabviews/zshare/mutilform/index.jsx](/src/tabviews/zshare/mutilform/index.jsx) | JavaScript React | 757 | 22 | 128 | 907 |
+| [src/tabviews/zshare/mutilform/index.scss](/src/tabviews/zshare/mutilform/index.scss) | SCSS | 129 | 0 | 1 | 130 |
+| [src/tabviews/zshare/mutilform/mkCheckCard/index.jsx](/src/tabviews/zshare/mutilform/mkCheckCard/index.jsx) | JavaScript React | 183 | 0 | 35 | 218 |
+| [src/tabviews/zshare/mutilform/mkCheckCard/index.scss](/src/tabviews/zshare/mutilform/mkCheckCard/index.scss) | SCSS | 101 | 1 | 2 | 104 |
+| [src/tabviews/zshare/mutilform/mkCheckbox/index.jsx](/src/tabviews/zshare/mutilform/mkCheckbox/index.jsx) | JavaScript React | 30 | 0 | 7 | 37 |
+| [src/tabviews/zshare/mutilform/mkCheckbox/index.scss](/src/tabviews/zshare/mutilform/mkCheckbox/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/tabviews/zshare/mutilform/mkColor/index.jsx](/src/tabviews/zshare/mutilform/mkColor/index.jsx) | JavaScript React | 50 | 0 | 10 | 60 |
+| [src/tabviews/zshare/mutilform/mkColor/index.scss](/src/tabviews/zshare/mutilform/mkColor/index.scss) | SCSS | 39 | 0 | 2 | 41 |
+| [src/tabviews/zshare/mutilform/mkDatePicker/index.jsx](/src/tabviews/zshare/mutilform/mkDatePicker/index.jsx) | JavaScript React | 68 | 3 | 16 | 87 |
+| [src/tabviews/zshare/mutilform/mkDatePicker/index.scss](/src/tabviews/zshare/mutilform/mkDatePicker/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/tabviews/zshare/mutilform/mkInput/index.jsx](/src/tabviews/zshare/mutilform/mkInput/index.jsx) | JavaScript React | 68 | 3 | 18 | 89 |
+| [src/tabviews/zshare/mutilform/mkInput/index.scss](/src/tabviews/zshare/mutilform/mkInput/index.scss) | SCSS | 11 | 0 | 0 | 11 |
+| [src/tabviews/zshare/mutilform/mkNumberInput/index.jsx](/src/tabviews/zshare/mutilform/mkNumberInput/index.jsx) | JavaScript React | 61 | 1 | 16 | 78 |
+| [src/tabviews/zshare/mutilform/mkNumberInput/index.scss](/src/tabviews/zshare/mutilform/mkNumberInput/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/tabviews/zshare/mutilform/mkRadio/index.jsx](/src/tabviews/zshare/mutilform/mkRadio/index.jsx) | JavaScript React | 120 | 0 | 26 | 146 |
+| [src/tabviews/zshare/mutilform/mkRadio/index.scss](/src/tabviews/zshare/mutilform/mkRadio/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/tabviews/zshare/mutilform/mkSelect/index.jsx](/src/tabviews/zshare/mutilform/mkSelect/index.jsx) | JavaScript React | 182 | 0 | 29 | 211 |
+| [src/tabviews/zshare/mutilform/mkSelect/index.scss](/src/tabviews/zshare/mutilform/mkSelect/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/tabviews/zshare/mutilform/mkSwitch/index.jsx](/src/tabviews/zshare/mutilform/mkSwitch/index.jsx) | JavaScript React | 33 | 0 | 8 | 41 |
+| [src/tabviews/zshare/mutilform/mkSwitch/index.scss](/src/tabviews/zshare/mutilform/mkSwitch/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/tabviews/zshare/mutilform/mkTextArea/index.jsx](/src/tabviews/zshare/mutilform/mkTextArea/index.jsx) | JavaScript React | 75 | 0 | 17 | 92 |
+| [src/tabviews/zshare/mutilform/mkTextArea/index.scss](/src/tabviews/zshare/mutilform/mkTextArea/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/tabviews/zshare/normalTable/index.jsx](/src/tabviews/zshare/normalTable/index.jsx) | JavaScript React | 1,197 | 13 | 177 | 1,387 |
+| [src/tabviews/zshare/normalTable/index.scss](/src/tabviews/zshare/normalTable/index.scss) | SCSS | 264 | 0 | 12 | 276 |
+| [src/tabviews/zshare/pageMessage/index.jsx](/src/tabviews/zshare/pageMessage/index.jsx) | JavaScript React | 301 | 5 | 47 | 353 |
+| [src/tabviews/zshare/pageMessage/index.scss](/src/tabviews/zshare/pageMessage/index.scss) | SCSS | 35 | 0 | 0 | 35 |
+| [src/tabviews/zshare/settingcomponent/editTable/index.jsx](/src/tabviews/zshare/settingcomponent/editTable/index.jsx) | JavaScript React | 293 | 0 | 29 | 322 |
+| [src/tabviews/zshare/settingcomponent/editTable/index.scss](/src/tabviews/zshare/settingcomponent/editTable/index.scss) | SCSS | 64 | 0 | 3 | 67 |
+| [src/tabviews/zshare/settingcomponent/index.jsx](/src/tabviews/zshare/settingcomponent/index.jsx) | JavaScript React | 477 | 2 | 70 | 549 |
+| [src/tabviews/zshare/settingcomponent/index.scss](/src/tabviews/zshare/settingcomponent/index.scss) | SCSS | 62 | 0 | 2 | 64 |
+| [src/tabviews/zshare/topSearch/advanceform/index.jsx](/src/tabviews/zshare/topSearch/advanceform/index.jsx) | JavaScript React | 91 | 1 | 16 | 108 |
+| [src/tabviews/zshare/topSearch/advanceform/index.scss](/src/tabviews/zshare/topSearch/advanceform/index.scss) | SCSS | 49 | 0 | 0 | 49 |
+| [src/tabviews/zshare/topSearch/dategroup/index.jsx](/src/tabviews/zshare/topSearch/dategroup/index.jsx) | JavaScript React | 125 | 0 | 14 | 139 |
+| [src/tabviews/zshare/topSearch/dategroup/index.scss](/src/tabviews/zshare/topSearch/dategroup/index.scss) | SCSS | 95 | 0 | 4 | 99 |
+| [src/tabviews/zshare/topSearch/dategroup/quarterpicker/index.jsx](/src/tabviews/zshare/topSearch/dategroup/quarterpicker/index.jsx) | JavaScript React | 135 | 0 | 16 | 151 |
+| [src/tabviews/zshare/topSearch/dategroup/quarterpicker/index.scss](/src/tabviews/zshare/topSearch/dategroup/quarterpicker/index.scss) | SCSS | 40 | 0 | 3 | 43 |
+| [src/tabviews/zshare/topSearch/dategroup/yearpicker/index.jsx](/src/tabviews/zshare/topSearch/dategroup/yearpicker/index.jsx) | JavaScript React | 105 | 0 | 15 | 120 |
+| [src/tabviews/zshare/topSearch/dategroup/yearpicker/index.scss](/src/tabviews/zshare/topSearch/dategroup/yearpicker/index.scss) | SCSS | 46 | 0 | 4 | 50 |
+| [src/tabviews/zshare/topSearch/index.jsx](/src/tabviews/zshare/topSearch/index.jsx) | JavaScript React | 641 | 11 | 101 | 753 |
+| [src/tabviews/zshare/topSearch/index.scss](/src/tabviews/zshare/topSearch/index.scss) | SCSS | 100 | 0 | 2 | 102 |
+| [src/tabviews/zshare/topSearch/mkDatePicker/index.jsx](/src/tabviews/zshare/topSearch/mkDatePicker/index.jsx) | JavaScript React | 73 | 3 | 15 | 91 |
+| [src/tabviews/zshare/topSearch/mkDatePicker/index.scss](/src/tabviews/zshare/topSearch/mkDatePicker/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/tabviews/zshare/topSearch/mkInput/index.jsx](/src/tabviews/zshare/topSearch/mkInput/index.jsx) | JavaScript React | 14 | 0 | 4 | 18 |
+| [src/tabviews/zshare/topSearch/mkInput/index.scss](/src/tabviews/zshare/topSearch/mkInput/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/tabviews/zshare/topSearch/mkSelect/index.jsx](/src/tabviews/zshare/topSearch/mkSelect/index.jsx) | JavaScript React | 97 | 0 | 24 | 121 |
+| [src/tabviews/zshare/topSearch/mkSelect/index.scss](/src/tabviews/zshare/topSearch/mkSelect/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/calendarconfig/calcomponent/calendarform/index.jsx](/src/templates/calendarconfig/calcomponent/calendarform/index.jsx) | JavaScript React | 151 | 2 | 4 | 157 |
+| [src/templates/calendarconfig/calcomponent/calendarform/index.scss](/src/templates/calendarconfig/calcomponent/calendarform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/calendarconfig/calcomponent/index.jsx](/src/templates/calendarconfig/calcomponent/index.jsx) | JavaScript React | 74 | 9 | 14 | 97 |
+| [src/templates/calendarconfig/calcomponent/index.scss](/src/templates/calendarconfig/calcomponent/index.scss) | SCSS | 40 | 0 | 1 | 41 |
+| [src/templates/calendarconfig/index.jsx](/src/templates/calendarconfig/index.jsx) | JavaScript React | 682 | 78 | 98 | 858 |
+| [src/templates/calendarconfig/index.scss](/src/templates/calendarconfig/index.scss) | SCSS | 188 | 0 | 3 | 191 |
+| [src/templates/calendarconfig/source.jsx](/src/templates/calendarconfig/source.jsx) | JavaScript React | 136 | 0 | 5 | 141 |
+| [src/templates/calendarconfig/tabcomponent/index.jsx](/src/templates/calendarconfig/tabcomponent/index.jsx) | JavaScript React | 95 | 9 | 15 | 119 |
+| [src/templates/calendarconfig/tabcomponent/index.scss](/src/templates/calendarconfig/tabcomponent/index.scss) | SCSS | 80 | 3 | 3 | 86 |
+| [src/templates/calendarconfig/tabcomponent/tabform/index.jsx](/src/templates/calendarconfig/tabcomponent/tabform/index.jsx) | JavaScript React | 202 | 7 | 22 | 231 |
+| [src/templates/calendarconfig/tabcomponent/tabform/index.scss](/src/templates/calendarconfig/tabcomponent/tabform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/comtableconfig/index.jsx](/src/templates/comtableconfig/index.jsx) | JavaScript React | 1,156 | 65 | 140 | 1,361 |
+| [src/templates/comtableconfig/index.scss](/src/templates/comtableconfig/index.scss) | SCSS | 205 | 0 | 5 | 210 |
+| [src/templates/comtableconfig/menuform/index.jsx](/src/templates/comtableconfig/menuform/index.jsx) | JavaScript React | 232 | 0 | 16 | 248 |
+| [src/templates/comtableconfig/menuform/index.scss](/src/templates/comtableconfig/menuform/index.scss) | SCSS | 7 | 0 | 0 | 7 |
+| [src/templates/comtableconfig/source.jsx](/src/templates/comtableconfig/source.jsx) | JavaScript React | 362 | 0 | 8 | 370 |
+| [src/templates/formtabconfig/actionform/index.jsx](/src/templates/formtabconfig/actionform/index.jsx) | JavaScript React | 409 | 1 | 33 | 443 |
+| [src/templates/formtabconfig/actionform/index.scss](/src/templates/formtabconfig/actionform/index.scss) | SCSS | 33 | 0 | 0 | 33 |
+| [src/templates/formtabconfig/dragelement/card.jsx](/src/templates/formtabconfig/dragelement/card.jsx) | JavaScript React | 150 | 0 | 12 | 162 |
+| [src/templates/formtabconfig/dragelement/index.jsx](/src/templates/formtabconfig/dragelement/index.jsx) | JavaScript React | 164 | 1 | 28 | 193 |
+| [src/templates/formtabconfig/dragelement/index.scss](/src/templates/formtabconfig/dragelement/index.scss) | SCSS | 15 | 0 | 0 | 15 |
+| [src/templates/formtabconfig/dragelement/itemtypes.js](/src/templates/formtabconfig/dragelement/itemtypes.js) | JavaScript | 8 | 0 | 1 | 9 |
+| [src/templates/formtabconfig/dragelement/source.jsx](/src/templates/formtabconfig/dragelement/source.jsx) | JavaScript React | 12 | 0 | 1 | 13 |
+| [src/templates/formtabconfig/groupform/index.jsx](/src/templates/formtabconfig/groupform/index.jsx) | JavaScript React | 111 | 3 | 16 | 130 |
+| [src/templates/formtabconfig/groupform/index.scss](/src/templates/formtabconfig/groupform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/formtabconfig/index.jsx](/src/templates/formtabconfig/index.jsx) | JavaScript React | 1,847 | 66 | 211 | 2,124 |
+| [src/templates/formtabconfig/index.scss](/src/templates/formtabconfig/index.scss) | SCSS | 424 | 0 | 6 | 430 |
+| [src/templates/formtabconfig/settingform/index.jsx](/src/templates/formtabconfig/settingform/index.jsx) | JavaScript React | 330 | 1 | 26 | 357 |
+| [src/templates/formtabconfig/settingform/index.scss](/src/templates/formtabconfig/settingform/index.scss) | SCSS | 10 | 0 | 0 | 10 |
+| [src/templates/formtabconfig/source.jsx](/src/templates/formtabconfig/source.jsx) | JavaScript React | 182 | 0 | 7 | 189 |
+| [src/templates/formtabconfig/transferform/index.jsx](/src/templates/formtabconfig/transferform/index.jsx) | JavaScript React | 61 | 0 | 12 | 73 |
+| [src/templates/formtabconfig/transferform/index.scss](/src/templates/formtabconfig/transferform/index.scss) | SCSS | 6 | 0 | 0 | 6 |
+| [src/templates/menuconfig/editfirstmenu/dragelement/card.jsx](/src/templates/menuconfig/editfirstmenu/dragelement/card.jsx) | JavaScript React | 47 | 0 | 5 | 52 |
+| [src/templates/menuconfig/editfirstmenu/dragelement/index.jsx](/src/templates/menuconfig/editfirstmenu/dragelement/index.jsx) | JavaScript React | 75 | 0 | 11 | 86 |
+| [src/templates/menuconfig/editfirstmenu/dragelement/index.scss](/src/templates/menuconfig/editfirstmenu/dragelement/index.scss) | SCSS | 53 | 0 | 2 | 55 |
+| [src/templates/menuconfig/editfirstmenu/dragelement/itemtypes.js](/src/templates/menuconfig/editfirstmenu/dragelement/itemtypes.js) | JavaScript | 3 | 0 | 1 | 4 |
+| [src/templates/menuconfig/editfirstmenu/index.jsx](/src/templates/menuconfig/editfirstmenu/index.jsx) | JavaScript React | 378 | 7 | 26 | 411 |
+| [src/templates/menuconfig/editfirstmenu/index.scss](/src/templates/menuconfig/editfirstmenu/index.scss) | SCSS | 79 | 0 | 0 | 79 |
+| [src/templates/menuconfig/editfirstmenu/menuform/index.jsx](/src/templates/menuconfig/editfirstmenu/menuform/index.jsx) | JavaScript React | 223 | 2 | 14 | 239 |
+| [src/templates/menuconfig/editfirstmenu/menuform/index.scss](/src/templates/menuconfig/editfirstmenu/menuform/index.scss) | SCSS | 17 | 0 | 1 | 18 |
+| [src/templates/menuconfig/editsecmenu/index.jsx](/src/templates/menuconfig/editsecmenu/index.jsx) | JavaScript React | 439 | 2 | 22 | 463 |
+| [src/templates/menuconfig/editsecmenu/index.scss](/src/templates/menuconfig/editsecmenu/index.scss) | SCSS | 81 | 0 | 0 | 81 |
+| [src/templates/menuconfig/editthdmenu/index.jsx](/src/templates/menuconfig/editthdmenu/index.jsx) | JavaScript React | 875 | 29 | 76 | 980 |
+| [src/templates/menuconfig/editthdmenu/index.scss](/src/templates/menuconfig/editthdmenu/index.scss) | SCSS | 183 | 0 | 2 | 185 |
+| [src/templates/menuconfig/editthdmenu/menuform/index.jsx](/src/templates/menuconfig/editthdmenu/menuform/index.jsx) | JavaScript React | 156 | 2 | 13 | 171 |
+| [src/templates/menuconfig/editthdmenu/menuform/index.scss](/src/templates/menuconfig/editthdmenu/menuform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/menuconfig/editthdmenu/preview/index.jsx](/src/templates/menuconfig/editthdmenu/preview/index.jsx) | JavaScript React | 60 | 0 | 7 | 67 |
+| [src/templates/menuconfig/editthdmenu/preview/index.scss](/src/templates/menuconfig/editthdmenu/preview/index.scss) | SCSS | 30 | 0 | 0 | 30 |
+| [src/templates/menuconfig/menuelement/card.jsx](/src/templates/menuconfig/menuelement/card.jsx) | JavaScript React | 56 | 0 | 6 | 62 |
+| [src/templates/menuconfig/menuelement/index.jsx](/src/templates/menuconfig/menuelement/index.jsx) | JavaScript React | 58 | 0 | 7 | 65 |
+| [src/templates/menuconfig/menuelement/index.scss](/src/templates/menuconfig/menuelement/index.scss) | SCSS | 68 | 0 | 1 | 69 |
+| [src/templates/menuconfig/menuelement/itemtypes.js](/src/templates/menuconfig/menuelement/itemtypes.js) | JavaScript | 3 | 0 | 1 | 4 |
+| [src/templates/menuconfig/menuform/index.jsx](/src/templates/menuconfig/menuform/index.jsx) | JavaScript React | 137 | 2 | 10 | 149 |
+| [src/templates/menuconfig/menuform/index.scss](/src/templates/menuconfig/menuform/index.scss) | SCSS | 17 | 0 | 1 | 18 |
+| [src/templates/modalconfig/checkCard/index.jsx](/src/templates/modalconfig/checkCard/index.jsx) | JavaScript React | 72 | 0 | 11 | 83 |
+| [src/templates/modalconfig/checkCard/index.scss](/src/templates/modalconfig/checkCard/index.scss) | SCSS | 35 | 0 | 0 | 35 |
+| [src/templates/modalconfig/dragelement/card.jsx](/src/templates/modalconfig/dragelement/card.jsx) | JavaScript React | 156 | 0 | 13 | 169 |
+| [src/templates/modalconfig/dragelement/index.jsx](/src/templates/modalconfig/dragelement/index.jsx) | JavaScript React | 110 | 1 | 25 | 136 |
+| [src/templates/modalconfig/dragelement/index.scss](/src/templates/modalconfig/dragelement/index.scss) | SCSS | 129 | 0 | 0 | 129 |
+| [src/templates/modalconfig/dragelement/source.jsx](/src/templates/modalconfig/dragelement/source.jsx) | JavaScript React | 12 | 0 | 1 | 13 |
+| [src/templates/modalconfig/editcard/index.jsx](/src/templates/modalconfig/editcard/index.jsx) | JavaScript React | 103 | 0 | 12 | 115 |
+| [src/templates/modalconfig/editcard/index.scss](/src/templates/modalconfig/editcard/index.scss) | SCSS | 49 | 0 | 1 | 50 |
+| [src/templates/modalconfig/index.jsx](/src/templates/modalconfig/index.jsx) | JavaScript React | 728 | 43 | 97 | 868 |
+| [src/templates/modalconfig/index.scss](/src/templates/modalconfig/index.scss) | SCSS | 260 | 0 | 3 | 263 |
+| [src/templates/modalconfig/menuform/index.jsx](/src/templates/modalconfig/menuform/index.jsx) | JavaScript React | 91 | 1 | 5 | 97 |
+| [src/templates/modalconfig/menuform/index.scss](/src/templates/modalconfig/menuform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/modalconfig/settingform/index.jsx](/src/templates/modalconfig/settingform/index.jsx) | JavaScript React | 292 | 7 | 14 | 313 |
+| [src/templates/modalconfig/settingform/index.scss](/src/templates/modalconfig/settingform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/modalconfig/source.jsx](/src/templates/modalconfig/source.jsx) | JavaScript React | 179 | 0 | 5 | 184 |
+| [src/templates/modalconfig/transferform/index.jsx](/src/templates/modalconfig/transferform/index.jsx) | JavaScript React | 61 | 0 | 12 | 73 |
+| [src/templates/modalconfig/transferform/index.scss](/src/templates/modalconfig/transferform/index.scss) | SCSS | 6 | 0 | 0 | 6 |
+| [src/templates/sharecomponent/actioncomponent/actionform/index.jsx](/src/templates/sharecomponent/actioncomponent/actionform/index.jsx) | JavaScript React | 606 | 4 | 81 | 691 |
+| [src/templates/sharecomponent/actioncomponent/actionform/index.scss](/src/templates/sharecomponent/actioncomponent/actionform/index.scss) | SCSS | 39 | 0 | 0 | 39 |
+| [src/templates/sharecomponent/actioncomponent/dragaction/card.jsx](/src/templates/sharecomponent/actioncomponent/dragaction/card.jsx) | JavaScript React | 67 | 0 | 5 | 72 |
+| [src/templates/sharecomponent/actioncomponent/dragaction/index.jsx](/src/templates/sharecomponent/actioncomponent/dragaction/index.jsx) | JavaScript React | 143 | 1 | 28 | 172 |
+| [src/templates/sharecomponent/actioncomponent/dragaction/index.scss](/src/templates/sharecomponent/actioncomponent/dragaction/index.scss) | SCSS | 6 | 0 | 1 | 7 |
+| [src/templates/sharecomponent/actioncomponent/index.jsx](/src/templates/sharecomponent/actioncomponent/index.jsx) | JavaScript React | 792 | 59 | 112 | 963 |
+| [src/templates/sharecomponent/actioncomponent/index.scss](/src/templates/sharecomponent/actioncomponent/index.scss) | SCSS | 67 | 0 | 2 | 69 |
+| [src/templates/sharecomponent/actioncomponent/verifyexcelin/columnform/index.jsx](/src/templates/sharecomponent/actioncomponent/verifyexcelin/columnform/index.jsx) | JavaScript React | 174 | 1 | 9 | 184 |
+| [src/templates/sharecomponent/actioncomponent/verifyexcelin/columnform/index.scss](/src/templates/sharecomponent/actioncomponent/verifyexcelin/columnform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.jsx](/src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.jsx) | JavaScript React | 309 | 8 | 45 | 362 |
+| [src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.scss](/src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx](/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx) | JavaScript React | 836 | 8 | 79 | 923 |
+| [src/templates/sharecomponent/actioncomponent/verifyexcelin/index.scss](/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.scss) | SCSS | 80 | 0 | 0 | 80 |
+| [src/templates/sharecomponent/actioncomponent/verifyexcelin/uniqueform/index.jsx](/src/templates/sharecomponent/actioncomponent/verifyexcelin/uniqueform/index.jsx) | JavaScript React | 117 | 1 | 11 | 129 |
+| [src/templates/sharecomponent/actioncomponent/verifyexcelin/uniqueform/index.scss](/src/templates/sharecomponent/actioncomponent/verifyexcelin/uniqueform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/sharecomponent/actioncomponent/verifyexcelout/columnform/index.jsx](/src/templates/sharecomponent/actioncomponent/verifyexcelout/columnform/index.jsx) | JavaScript React | 99 | 1 | 5 | 105 |
+| [src/templates/sharecomponent/actioncomponent/verifyexcelout/columnform/index.scss](/src/templates/sharecomponent/actioncomponent/verifyexcelout/columnform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx](/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx) | JavaScript React | 566 | 5 | 62 | 633 |
+| [src/templates/sharecomponent/actioncomponent/verifyexcelout/index.scss](/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.scss) | SCSS | 86 | 0 | 0 | 86 |
+| [src/templates/sharecomponent/actioncomponent/verifyprint/editable/index.jsx](/src/templates/sharecomponent/actioncomponent/verifyprint/editable/index.jsx) | JavaScript React | 213 | 0 | 25 | 238 |
+| [src/templates/sharecomponent/actioncomponent/verifyprint/editable/index.scss](/src/templates/sharecomponent/actioncomponent/verifyprint/editable/index.scss) | SCSS | 51 | 0 | 1 | 52 |
+| [src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx](/src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx) | JavaScript React | 416 | 1 | 37 | 454 |
+| [src/templates/sharecomponent/actioncomponent/verifyprint/index.scss](/src/templates/sharecomponent/actioncomponent/verifyprint/index.scss) | SCSS | 68 | 0 | 0 | 68 |
+| [src/templates/sharecomponent/cardcomponent/carddetailform/index.jsx](/src/templates/sharecomponent/cardcomponent/carddetailform/index.jsx) | JavaScript React | 277 | 2 | 23 | 302 |
+| [src/templates/sharecomponent/cardcomponent/carddetailform/index.scss](/src/templates/sharecomponent/cardcomponent/carddetailform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/sharecomponent/cardcomponent/dragdetail/card.jsx](/src/templates/sharecomponent/cardcomponent/dragdetail/card.jsx) | JavaScript React | 39 | 0 | 6 | 45 |
+| [src/templates/sharecomponent/cardcomponent/dragdetail/index.jsx](/src/templates/sharecomponent/cardcomponent/dragdetail/index.jsx) | JavaScript React | 43 | 0 | 7 | 50 |
+| [src/templates/sharecomponent/cardcomponent/dragdetail/index.scss](/src/templates/sharecomponent/cardcomponent/dragdetail/index.scss) | SCSS | 63 | 0 | 3 | 66 |
+| [src/templates/sharecomponent/cardcomponent/index.jsx](/src/templates/sharecomponent/cardcomponent/index.jsx) | JavaScript React | 423 | 1 | 54 | 478 |
+| [src/templates/sharecomponent/cardcomponent/index.scss](/src/templates/sharecomponent/cardcomponent/index.scss) | SCSS | 205 | 0 | 14 | 219 |
+| [src/templates/sharecomponent/chartcomponent/chartcompile/index.jsx](/src/templates/sharecomponent/chartcomponent/chartcompile/index.jsx) | JavaScript React | 490 | 0 | 54 | 544 |
+| [src/templates/sharecomponent/chartcomponent/chartcompile/index.scss](/src/templates/sharecomponent/chartcomponent/chartcompile/index.scss) | SCSS | 40 | 0 | 5 | 45 |
+| [src/templates/sharecomponent/chartcomponent/index.jsx](/src/templates/sharecomponent/chartcomponent/index.jsx) | JavaScript React | 530 | 0 | 99 | 629 |
+| [src/templates/sharecomponent/chartcomponent/index.scss](/src/templates/sharecomponent/chartcomponent/index.scss) | SCSS | 11 | 0 | 3 | 14 |
+| [src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx](/src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx) | JavaScript React | 511 | 2 | 32 | 545 |
+| [src/templates/sharecomponent/chartgroupcomponent/chartform/index.scss](/src/templates/sharecomponent/chartgroupcomponent/chartform/index.scss) | SCSS | 19 | 0 | 1 | 20 |
+| [src/templates/sharecomponent/chartgroupcomponent/dragchartview/card.jsx](/src/templates/sharecomponent/chartgroupcomponent/dragchartview/card.jsx) | JavaScript React | 48 | 0 | 9 | 57 |
+| [src/templates/sharecomponent/chartgroupcomponent/dragchartview/index.jsx](/src/templates/sharecomponent/chartgroupcomponent/dragchartview/index.jsx) | JavaScript React | 63 | 0 | 12 | 75 |
+| [src/templates/sharecomponent/chartgroupcomponent/dragchartview/index.scss](/src/templates/sharecomponent/chartgroupcomponent/dragchartview/index.scss) | SCSS | 29 | 0 | 3 | 32 |
+| [src/templates/sharecomponent/chartgroupcomponent/index.jsx](/src/templates/sharecomponent/chartgroupcomponent/index.jsx) | JavaScript React | 228 | 27 | 42 | 297 |
+| [src/templates/sharecomponent/chartgroupcomponent/index.scss](/src/templates/sharecomponent/chartgroupcomponent/index.scss) | SCSS | 27 | 0 | 0 | 27 |
+| [src/templates/sharecomponent/columncomponent/colspanform/index.jsx](/src/templates/sharecomponent/columncomponent/colspanform/index.jsx) | JavaScript React | 196 | 2 | 13 | 211 |
+| [src/templates/sharecomponent/columncomponent/colspanform/index.scss](/src/templates/sharecomponent/columncomponent/colspanform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/sharecomponent/columncomponent/columnform/index.jsx](/src/templates/sharecomponent/columncomponent/columnform/index.jsx) | JavaScript React | 334 | 4 | 28 | 366 |
+| [src/templates/sharecomponent/columncomponent/columnform/index.scss](/src/templates/sharecomponent/columncomponent/columnform/index.scss) | SCSS | 17 | 0 | 2 | 19 |
+| [src/templates/sharecomponent/columncomponent/dragcolumn/card.jsx](/src/templates/sharecomponent/columncomponent/dragcolumn/card.jsx) | JavaScript React | 60 | 0 | 5 | 65 |
+| [src/templates/sharecomponent/columncomponent/dragcolumn/index.jsx](/src/templates/sharecomponent/columncomponent/dragcolumn/index.jsx) | JavaScript React | 168 | 2 | 23 | 193 |
+| [src/templates/sharecomponent/columncomponent/dragcolumn/index.scss](/src/templates/sharecomponent/columncomponent/dragcolumn/index.scss) | SCSS | 6 | 0 | 1 | 7 |
+| [src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx](/src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx) | JavaScript React | 194 | 2 | 8 | 204 |
+| [src/templates/sharecomponent/columncomponent/gridbtnform/index.scss](/src/templates/sharecomponent/columncomponent/gridbtnform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/sharecomponent/columncomponent/index.jsx](/src/templates/sharecomponent/columncomponent/index.jsx) | JavaScript React | 492 | 37 | 71 | 600 |
+| [src/templates/sharecomponent/columncomponent/index.scss](/src/templates/sharecomponent/columncomponent/index.scss) | SCSS | 95 | 1 | 2 | 98 |
+| [src/templates/sharecomponent/columncomponent/markcolumn/index.jsx](/src/templates/sharecomponent/columncomponent/markcolumn/index.jsx) | JavaScript React | 216 | 0 | 26 | 242 |
+| [src/templates/sharecomponent/columncomponent/markcolumn/index.scss](/src/templates/sharecomponent/columncomponent/markcolumn/index.scss) | SCSS | 55 | 0 | 4 | 59 |
+| [src/templates/sharecomponent/columncomponent/markcolumn/markform/index.jsx](/src/templates/sharecomponent/columncomponent/markcolumn/markform/index.jsx) | JavaScript React | 328 | 16 | 27 | 371 |
+| [src/templates/sharecomponent/columncomponent/markcolumn/markform/index.scss](/src/templates/sharecomponent/columncomponent/markcolumn/markform/index.scss) | SCSS | 7 | 0 | 0 | 7 |
+| [src/templates/sharecomponent/fieldscomponent/editcard/index.jsx](/src/templates/sharecomponent/fieldscomponent/editcard/index.jsx) | JavaScript React | 159 | 0 | 25 | 184 |
+| [src/templates/sharecomponent/fieldscomponent/editcard/index.scss](/src/templates/sharecomponent/fieldscomponent/editcard/index.scss) | SCSS | 55 | 0 | 1 | 56 |
+| [src/templates/sharecomponent/fieldscomponent/index.jsx](/src/templates/sharecomponent/fieldscomponent/index.jsx) | JavaScript React | 250 | 10 | 29 | 289 |
+| [src/templates/sharecomponent/fieldscomponent/index.scss](/src/templates/sharecomponent/fieldscomponent/index.scss) | SCSS | 30 | 0 | 0 | 30 |
+| [src/templates/sharecomponent/searchcomponent/dategroup/index.jsx](/src/templates/sharecomponent/searchcomponent/dategroup/index.jsx) | JavaScript React | 27 | 0 | 5 | 32 |
+| [src/templates/sharecomponent/searchcomponent/dategroup/index.scss](/src/templates/sharecomponent/searchcomponent/dategroup/index.scss) | SCSS | 36 | 0 | 2 | 38 |
+| [src/templates/sharecomponent/searchcomponent/dragsearch/card.jsx](/src/templates/sharecomponent/searchcomponent/dragsearch/card.jsx) | JavaScript React | 114 | 0 | 9 | 123 |
+| [src/templates/sharecomponent/searchcomponent/dragsearch/index.jsx](/src/templates/sharecomponent/searchcomponent/dragsearch/index.jsx) | JavaScript React | 139 | 0 | 26 | 165 |
+| [src/templates/sharecomponent/searchcomponent/dragsearch/index.scss](/src/templates/sharecomponent/searchcomponent/dragsearch/index.scss) | SCSS | 6 | 0 | 1 | 7 |
+| [src/templates/sharecomponent/searchcomponent/index.jsx](/src/templates/sharecomponent/searchcomponent/index.jsx) | JavaScript React | 291 | 39 | 52 | 382 |
+| [src/templates/sharecomponent/searchcomponent/index.scss](/src/templates/sharecomponent/searchcomponent/index.scss) | SCSS | 84 | 0 | 1 | 85 |
+| [src/templates/sharecomponent/searchcomponent/searcheditable/index.jsx](/src/templates/sharecomponent/searchcomponent/searcheditable/index.jsx) | JavaScript React | 283 | 0 | 25 | 308 |
+| [src/templates/sharecomponent/searchcomponent/searcheditable/index.scss](/src/templates/sharecomponent/searchcomponent/searcheditable/index.scss) | SCSS | 43 | 0 | 1 | 44 |
+| [src/templates/sharecomponent/searchcomponent/searchform/index.jsx](/src/templates/sharecomponent/searchcomponent/searchform/index.jsx) | JavaScript React | 650 | 2 | 68 | 720 |
+| [src/templates/sharecomponent/searchcomponent/searchform/index.scss](/src/templates/sharecomponent/searchcomponent/searchform/index.scss) | SCSS | 36 | 1 | 1 | 38 |
+| [src/templates/sharecomponent/settingcalcomponent/index.jsx](/src/templates/sharecomponent/settingcalcomponent/index.jsx) | JavaScript React | 86 | 0 | 13 | 99 |
+| [src/templates/sharecomponent/settingcalcomponent/index.scss](/src/templates/sharecomponent/settingcalcomponent/index.scss) | SCSS | 79 | 0 | 8 | 87 |
+| [src/templates/sharecomponent/settingcalcomponent/verifycard/columnform/index.jsx](/src/templates/sharecomponent/settingcalcomponent/verifycard/columnform/index.jsx) | JavaScript React | 133 | 1 | 11 | 145 |
+| [src/templates/sharecomponent/settingcalcomponent/verifycard/columnform/index.scss](/src/templates/sharecomponent/settingcalcomponent/verifycard/columnform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/sharecomponent/settingcalcomponent/verifycard/index.jsx](/src/templates/sharecomponent/settingcalcomponent/verifycard/index.jsx) | JavaScript React | 358 | 6 | 43 | 407 |
+| [src/templates/sharecomponent/settingcalcomponent/verifycard/index.scss](/src/templates/sharecomponent/settingcalcomponent/verifycard/index.scss) | SCSS | 80 | 0 | 0 | 80 |
+| [src/templates/sharecomponent/settingcalcomponent/verifycard/settingform/index.jsx](/src/templates/sharecomponent/settingcalcomponent/verifycard/settingform/index.jsx) | JavaScript React | 295 | 16 | 24 | 335 |
+| [src/templates/sharecomponent/settingcalcomponent/verifycard/settingform/index.scss](/src/templates/sharecomponent/settingcalcomponent/verifycard/settingform/index.scss) | SCSS | 19 | 0 | 1 | 20 |
+| [src/templates/sharecomponent/settingcalcomponent/verifycard/utils.jsx](/src/templates/sharecomponent/settingcalcomponent/verifycard/utils.jsx) | JavaScript React | 114 | 11 | 19 | 144 |
+| [src/templates/sharecomponent/settingcomponent/index.jsx](/src/templates/sharecomponent/settingcomponent/index.jsx) | JavaScript React | 162 | 15 | 29 | 206 |
+| [src/templates/sharecomponent/settingcomponent/index.scss](/src/templates/sharecomponent/settingcomponent/index.scss) | SCSS | 39 | 0 | 1 | 40 |
+| [src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx](/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx) | JavaScript React | 801 | 3 | 26 | 830 |
+| [src/templates/sharecomponent/settingcomponent/settingform/datasource/index.scss](/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.scss) | SCSS | 20 | 0 | 2 | 22 |
+| [src/templates/sharecomponent/settingcomponent/settingform/index.jsx](/src/templates/sharecomponent/settingcomponent/settingform/index.jsx) | JavaScript React | 486 | 12 | 50 | 548 |
+| [src/templates/sharecomponent/settingcomponent/settingform/index.scss](/src/templates/sharecomponent/settingcomponent/settingform/index.scss) | SCSS | 60 | 0 | 1 | 61 |
+| [src/templates/sharecomponent/settingcomponent/settingform/simplescript/index.jsx](/src/templates/sharecomponent/settingcomponent/settingform/simplescript/index.jsx) | JavaScript React | 440 | 0 | 53 | 493 |
+| [src/templates/sharecomponent/settingcomponent/settingform/simplescript/index.scss](/src/templates/sharecomponent/settingcomponent/settingform/simplescript/index.scss) | SCSS | 45 | 0 | 0 | 45 |
+| [src/templates/sharecomponent/settingcomponent/settingform/utils.jsx](/src/templates/sharecomponent/settingcomponent/settingform/utils.jsx) | JavaScript React | 171 | 18 | 28 | 217 |
+| [src/templates/sharecomponent/tablecomponent/index.jsx](/src/templates/sharecomponent/tablecomponent/index.jsx) | JavaScript React | 268 | 15 | 35 | 318 |
+| [src/templates/sharecomponent/tablecomponent/index.scss](/src/templates/sharecomponent/tablecomponent/index.scss) | SCSS | 7 | 0 | 0 | 7 |
+| [src/templates/sharecomponent/tabscomponent/index.jsx](/src/templates/sharecomponent/tabscomponent/index.jsx) | JavaScript React | 350 | 35 | 54 | 439 |
+| [src/templates/sharecomponent/tabscomponent/index.scss](/src/templates/sharecomponent/tabscomponent/index.scss) | SCSS | 81 | 0 | 0 | 81 |
+| [src/templates/sharecomponent/tabscomponent/tabdragelement/card.jsx](/src/templates/sharecomponent/tabscomponent/tabdragelement/card.jsx) | JavaScript React | 54 | 0 | 9 | 63 |
+| [src/templates/sharecomponent/tabscomponent/tabdragelement/index.jsx](/src/templates/sharecomponent/tabscomponent/tabdragelement/index.jsx) | JavaScript React | 94 | 0 | 18 | 112 |
+| [src/templates/sharecomponent/tabscomponent/tabdragelement/index.scss](/src/templates/sharecomponent/tabscomponent/tabdragelement/index.scss) | SCSS | 12 | 0 | 0 | 12 |
+| [src/templates/sharecomponent/tabscomponent/tabform/index.jsx](/src/templates/sharecomponent/tabscomponent/tabform/index.jsx) | JavaScript React | 302 | 9 | 29 | 340 |
+| [src/templates/sharecomponent/tabscomponent/tabform/index.scss](/src/templates/sharecomponent/tabscomponent/tabform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/sharecomponent/treesettingcomponent/index.jsx](/src/templates/sharecomponent/treesettingcomponent/index.jsx) | JavaScript React | 92 | 9 | 13 | 114 |
+| [src/templates/sharecomponent/treesettingcomponent/index.scss](/src/templates/sharecomponent/treesettingcomponent/index.scss) | SCSS | 39 | 0 | 1 | 40 |
+| [src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.jsx](/src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.jsx) | JavaScript React | 478 | 3 | 26 | 507 |
+| [src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.scss](/src/templates/sharecomponent/treesettingcomponent/settingform/datasource/index.scss) | SCSS | 16 | 0 | 1 | 17 |
+| [src/templates/sharecomponent/treesettingcomponent/settingform/index.jsx](/src/templates/sharecomponent/treesettingcomponent/settingform/index.jsx) | JavaScript React | 254 | 2 | 30 | 286 |
+| [src/templates/sharecomponent/treesettingcomponent/settingform/index.scss](/src/templates/sharecomponent/treesettingcomponent/settingform/index.scss) | SCSS | 52 | 0 | 1 | 53 |
+| [src/templates/sharecomponent/treesettingcomponent/settingform/utils.jsx](/src/templates/sharecomponent/treesettingcomponent/settingform/utils.jsx) | JavaScript React | 64 | 8 | 13 | 85 |
+| [src/templates/subtableconfig/index.jsx](/src/templates/subtableconfig/index.jsx) | JavaScript React | 1,019 | 55 | 123 | 1,197 |
+| [src/templates/subtableconfig/index.scss](/src/templates/subtableconfig/index.scss) | SCSS | 199 | 0 | 5 | 204 |
+| [src/templates/subtableconfig/menuform/index.jsx](/src/templates/subtableconfig/menuform/index.jsx) | JavaScript React | 106 | 0 | 10 | 116 |
+| [src/templates/subtableconfig/menuform/index.scss](/src/templates/subtableconfig/menuform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/subtableconfig/source.jsx](/src/templates/subtableconfig/source.jsx) | JavaScript React | 333 | 0 | 7 | 340 |
+| [src/templates/treepageconfig/index.jsx](/src/templates/treepageconfig/index.jsx) | JavaScript React | 690 | 52 | 85 | 827 |
+| [src/templates/treepageconfig/index.scss](/src/templates/treepageconfig/index.scss) | SCSS | 252 | 0 | 6 | 258 |
+| [src/templates/treepageconfig/source.jsx](/src/templates/treepageconfig/source.jsx) | JavaScript React | 53 | 0 | 5 | 58 |
+| [src/templates/zshare/basetransferform/index.jsx](/src/templates/zshare/basetransferform/index.jsx) | JavaScript React | 37 | 0 | 9 | 46 |
+| [src/templates/zshare/basetransferform/index.scss](/src/templates/zshare/basetransferform/index.scss) | SCSS | 6 | 0 | 0 | 6 |
+| [src/templates/zshare/codemirror/index.jsx](/src/templates/zshare/codemirror/index.jsx) | JavaScript React | 151 | 1 | 19 | 171 |
+| [src/templates/zshare/codemirror/index.scss](/src/templates/zshare/codemirror/index.scss) | SCSS | 77 | 1 | 1 | 79 |
+| [src/templates/zshare/createfunc/index.jsx](/src/templates/zshare/createfunc/index.jsx) | JavaScript React | 179 | 11 | 24 | 214 |
+| [src/templates/zshare/createfunc/index.scss](/src/templates/zshare/createfunc/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/zshare/createinterface/index.jsx](/src/templates/zshare/createinterface/index.jsx) | JavaScript React | 933 | 49 | 157 | 1,139 |
+| [src/templates/zshare/createinterface/index.scss](/src/templates/zshare/createinterface/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/zshare/createinterface/mutilform/index.jsx](/src/templates/zshare/createinterface/mutilform/index.jsx) | JavaScript React | 132 | 2 | 11 | 145 |
+| [src/templates/zshare/createinterface/mutilform/index.scss](/src/templates/zshare/createinterface/mutilform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/zshare/customscript/index.jsx](/src/templates/zshare/customscript/index.jsx) | JavaScript React | 378 | 0 | 50 | 428 |
+| [src/templates/zshare/customscript/index.scss](/src/templates/zshare/customscript/index.scss) | SCSS | 45 | 0 | 0 | 45 |
+| [src/templates/zshare/dragsource/index.jsx](/src/templates/zshare/dragsource/index.jsx) | JavaScript React | 12 | 0 | 1 | 13 |
+| [src/templates/zshare/dragsource/index.scss](/src/templates/zshare/dragsource/index.scss) | SCSS | 9 | 0 | 0 | 9 |
+| [src/templates/zshare/editTable/cusSwitch/index.jsx](/src/templates/zshare/editTable/cusSwitch/index.jsx) | JavaScript React | 44 | 1 | 9 | 54 |
+| [src/templates/zshare/editTable/cusSwitch/index.scss](/src/templates/zshare/editTable/cusSwitch/index.scss) | SCSS | 38 | 0 | 2 | 40 |
+| [src/templates/zshare/editTable/index.jsx](/src/templates/zshare/editTable/index.jsx) | JavaScript React | 551 | 0 | 85 | 636 |
+| [src/templates/zshare/editTable/index.scss](/src/templates/zshare/editTable/index.scss) | SCSS | 107 | 0 | 4 | 111 |
+| [src/templates/zshare/editcard/index.jsx](/src/templates/zshare/editcard/index.jsx) | JavaScript React | 142 | 0 | 17 | 159 |
+| [src/templates/zshare/editcard/index.scss](/src/templates/zshare/editcard/index.scss) | SCSS | 49 | 0 | 1 | 50 |
+| [src/templates/zshare/editcomponent/index.jsx](/src/templates/zshare/editcomponent/index.jsx) | JavaScript React | 206 | 6 | 25 | 237 |
+| [src/templates/zshare/editcomponent/index.scss](/src/templates/zshare/editcomponent/index.scss) | SCSS | 5 | 0 | 0 | 5 |
+| [src/templates/zshare/formconfig.jsx](/src/templates/zshare/formconfig.jsx) | JavaScript React | 3,511 | 132 | 39 | 3,682 |
+| [src/templates/zshare/menuform/index.jsx](/src/templates/zshare/menuform/index.jsx) | JavaScript React | 122 | 1 | 10 | 133 |
+| [src/templates/zshare/menuform/index.scss](/src/templates/zshare/menuform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/zshare/modalform/datatable/index.jsx](/src/templates/zshare/modalform/datatable/index.jsx) | JavaScript React | 395 | 1 | 55 | 451 |
+| [src/templates/zshare/modalform/datatable/index.scss](/src/templates/zshare/modalform/datatable/index.scss) | SCSS | 76 | 0 | 1 | 77 |
+| [src/templates/zshare/modalform/fieldtable/index.jsx](/src/templates/zshare/modalform/fieldtable/index.jsx) | JavaScript React | 115 | 0 | 16 | 131 |
+| [src/templates/zshare/modalform/fieldtable/index.scss](/src/templates/zshare/modalform/fieldtable/index.scss) | SCSS | 14 | 0 | 1 | 15 |
+| [src/templates/zshare/modalform/index.jsx](/src/templates/zshare/modalform/index.jsx) | JavaScript React | 660 | 5 | 83 | 748 |
+| [src/templates/zshare/modalform/index.scss](/src/templates/zshare/modalform/index.scss) | SCSS | 37 | 0 | 0 | 37 |
+| [src/templates/zshare/modalform/modaleditable/index.jsx](/src/templates/zshare/modalform/modaleditable/index.jsx) | JavaScript React | 425 | 0 | 56 | 481 |
+| [src/templates/zshare/modalform/modaleditable/index.scss](/src/templates/zshare/modalform/modaleditable/index.scss) | SCSS | 56 | 0 | 1 | 57 |
+| [src/templates/zshare/pasteform/index.jsx](/src/templates/zshare/pasteform/index.jsx) | JavaScript React | 84 | 1 | 9 | 94 |
+| [src/templates/zshare/pasteform/index.scss](/src/templates/zshare/pasteform/index.scss) | SCSS | 6 | 0 | 1 | 7 |
+| [src/templates/zshare/transferform/index.jsx](/src/templates/zshare/transferform/index.jsx) | JavaScript React | 105 | 0 | 22 | 127 |
+| [src/templates/zshare/transferform/index.scss](/src/templates/zshare/transferform/index.scss) | SCSS | 36 | 0 | 2 | 38 |
+| [src/templates/zshare/unattended/index.jsx](/src/templates/zshare/unattended/index.jsx) | JavaScript React | 66 | 0 | 12 | 78 |
+| [src/templates/zshare/unattended/index.scss](/src/templates/zshare/unattended/index.scss) | SCSS | 8 | 0 | 0 | 8 |
+| [src/templates/zshare/unattended/settingform/index.jsx](/src/templates/zshare/unattended/settingform/index.jsx) | JavaScript React | 163 | 2 | 8 | 173 |
+| [src/templates/zshare/unattended/settingform/index.scss](/src/templates/zshare/unattended/settingform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/zshare/verifycard/billcodeform/index.jsx](/src/templates/zshare/verifycard/billcodeform/index.jsx) | JavaScript React | 347 | 5 | 29 | 381 |
+| [src/templates/zshare/verifycard/billcodeform/index.scss](/src/templates/zshare/verifycard/billcodeform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/zshare/verifycard/callbackcustomscript/index.jsx](/src/templates/zshare/verifycard/callbackcustomscript/index.jsx) | JavaScript React | 259 | 8 | 34 | 301 |
+| [src/templates/zshare/verifycard/callbackcustomscript/index.scss](/src/templates/zshare/verifycard/callbackcustomscript/index.scss) | SCSS | 5 | 0 | 0 | 5 |
+| [src/templates/zshare/verifycard/contrastform/index.jsx](/src/templates/zshare/verifycard/contrastform/index.jsx) | JavaScript React | 134 | 1 | 5 | 140 |
+| [src/templates/zshare/verifycard/contrastform/index.scss](/src/templates/zshare/verifycard/contrastform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/zshare/verifycard/customform/index.jsx](/src/templates/zshare/verifycard/customform/index.jsx) | JavaScript React | 232 | 3 | 23 | 258 |
+| [src/templates/zshare/verifycard/customform/index.scss](/src/templates/zshare/verifycard/customform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/zshare/verifycard/customscript/index.jsx](/src/templates/zshare/verifycard/customscript/index.jsx) | JavaScript React | 287 | 10 | 36 | 333 |
+| [src/templates/zshare/verifycard/customscript/index.scss](/src/templates/zshare/verifycard/customscript/index.scss) | SCSS | 5 | 0 | 0 | 5 |
+| [src/templates/zshare/verifycard/index.jsx](/src/templates/zshare/verifycard/index.jsx) | JavaScript React | 1,730 | 6 | 134 | 1,870 |
+| [src/templates/zshare/verifycard/index.scss](/src/templates/zshare/verifycard/index.scss) | SCSS | 204 | 0 | 8 | 212 |
+| [src/templates/zshare/verifycard/uniqueform/index.jsx](/src/templates/zshare/verifycard/uniqueform/index.jsx) | JavaScript React | 117 | 1 | 9 | 127 |
+| [src/templates/zshare/verifycard/uniqueform/index.scss](/src/templates/zshare/verifycard/uniqueform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/templates/zshare/verifycard/voucherform/index.jsx](/src/templates/zshare/verifycard/voucherform/index.jsx) | JavaScript React | 243 | 1 | 25 | 269 |
+| [src/templates/zshare/verifycard/voucherform/index.scss](/src/templates/zshare/verifycard/voucherform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/utils/asyncComponent.jsx](/src/utils/asyncComponent.jsx) | JavaScript React | 19 | 4 | 6 | 29 |
+| [src/utils/asyncIconComponent.jsx](/src/utils/asyncIconComponent.jsx) | JavaScript React | 20 | 4 | 6 | 30 |
+| [src/utils/asyncLoadComponent.jsx](/src/utils/asyncLoadComponent.jsx) | JavaScript React | 22 | 4 | 6 | 32 |
+| [src/utils/asyncSpinComponent.jsx](/src/utils/asyncSpinComponent.jsx) | JavaScript React | 22 | 4 | 6 | 32 |
+| [src/utils/events.js](/src/utils/events.js) | JavaScript | 4 | 0 | 2 | 6 |
+| [src/utils/option.js](/src/utils/option.js) | JavaScript | 903 | 9 | 15 | 927 |
+| [src/utils/utils-custom.js](/src/utils/utils-custom.js) | JavaScript | 687 | 43 | 89 | 819 |
+| [src/utils/utils-datamanage.js](/src/utils/utils-datamanage.js) | JavaScript | 582 | 76 | 114 | 772 |
+| [src/utils/utils-update.js](/src/utils/utils-update.js) | JavaScript | 205 | 29 | 27 | 261 |
+| [src/utils/utils.js](/src/utils/utils.js) | JavaScript | 1,997 | 252 | 366 | 2,615 |
+| [src/views/404/index.jsx](/src/views/404/index.jsx) | JavaScript React | 27 | 0 | 4 | 31 |
+| [src/views/404/index.scss](/src/views/404/index.scss) | SCSS | 10 | 0 | 0 | 10 |
+| [src/views/appcheck/header/index.jsx](/src/views/appcheck/header/index.jsx) | JavaScript React | 27 | 0 | 4 | 31 |
+| [src/views/appcheck/header/index.scss](/src/views/appcheck/header/index.scss) | SCSS | 55 | 0 | 2 | 57 |
+| [src/views/appcheck/index.jsx](/src/views/appcheck/index.jsx) | JavaScript React | 231 | 6 | 24 | 261 |
+| [src/views/appcheck/index.scss](/src/views/appcheck/index.scss) | SCSS | 94 | 0 | 7 | 101 |
+| [src/views/appmanage/header/index.jsx](/src/views/appmanage/header/index.jsx) | JavaScript React | 27 | 0 | 4 | 31 |
+| [src/views/appmanage/header/index.scss](/src/views/appmanage/header/index.scss) | SCSS | 55 | 0 | 2 | 57 |
+| [src/views/appmanage/index.jsx](/src/views/appmanage/index.jsx) | JavaScript React | 1,089 | 9 | 113 | 1,211 |
+| [src/views/appmanage/index.scss](/src/views/appmanage/index.scss) | SCSS | 119 | 0 | 7 | 126 |
+| [src/views/appmanage/mutilform/index.jsx](/src/views/appmanage/mutilform/index.jsx) | JavaScript React | 76 | 7 | 6 | 89 |
+| [src/views/appmanage/mutilform/index.scss](/src/views/appmanage/mutilform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/views/appmanage/scriptform/index.jsx](/src/views/appmanage/scriptform/index.jsx) | JavaScript React | 216 | 6 | 30 | 252 |
+| [src/views/appmanage/scriptform/index.scss](/src/views/appmanage/scriptform/index.scss) | SCSS | 11 | 0 | 1 | 12 |
+| [src/views/appmanage/submutilform/index.jsx](/src/views/appmanage/submutilform/index.jsx) | JavaScript React | 231 | 69 | 14 | 314 |
+| [src/views/appmanage/submutilform/index.scss](/src/views/appmanage/submutilform/index.scss) | SCSS | 22 | 0 | 1 | 23 |
+| [src/views/appmanage/transform/index.jsx](/src/views/appmanage/transform/index.jsx) | JavaScript React | 76 | 7 | 6 | 89 |
+| [src/views/appmanage/transform/index.scss](/src/views/appmanage/transform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/views/billprint/index.jsx](/src/views/billprint/index.jsx) | JavaScript React | 556 | 16 | 95 | 667 |
+| [src/views/billprint/index.scss](/src/views/billprint/index.scss) | SCSS | 52 | 0 | 4 | 56 |
+| [src/views/design/header/index.jsx](/src/views/design/header/index.jsx) | JavaScript React | 361 | 14 | 49 | 424 |
+| [src/views/design/header/index.scss](/src/views/design/header/index.scss) | SCSS | 205 | 0 | 6 | 211 |
+| [src/views/design/header/versions/index.jsx](/src/views/design/header/versions/index.jsx) | JavaScript React | 389 | 0 | 59 | 448 |
+| [src/views/design/header/versions/index.scss](/src/views/design/header/versions/index.scss) | SCSS | 31 | 0 | 0 | 31 |
+| [src/views/design/index.jsx](/src/views/design/index.jsx) | JavaScript React | 28 | 0 | 6 | 34 |
+| [src/views/design/index.scss](/src/views/design/index.scss) | SCSS | 19 | 0 | 0 | 19 |
+| [src/views/design/sidemenu/config.jsx](/src/views/design/sidemenu/config.jsx) | JavaScript React | 229 | 22 | 1 | 252 |
+| [src/views/design/sidemenu/index.jsx](/src/views/design/sidemenu/index.jsx) | JavaScript React | 268 | 4 | 37 | 309 |
+| [src/views/design/sidemenu/index.scss](/src/views/design/sidemenu/index.scss) | SCSS | 118 | 0 | 1 | 119 |
+| [src/views/imdesign/index.jsx](/src/views/imdesign/index.jsx) | JavaScript React | 496 | 7 | 65 | 568 |
+| [src/views/imdesign/index.scss](/src/views/imdesign/index.scss) | SCSS | 330 | 0 | 21 | 351 |
+| [src/views/imdesign/menuform/index.jsx](/src/views/imdesign/menuform/index.jsx) | JavaScript React | 67 | 2 | 8 | 77 |
+| [src/views/imdesign/menuform/index.scss](/src/views/imdesign/menuform/index.scss) | SCSS | 25 | 0 | 0 | 25 |
+| [src/views/imdesign/options.jsx](/src/views/imdesign/options.jsx) | JavaScript React | 23 | 3 | 3 | 29 |
+| [src/views/interface/api/index.js](/src/views/interface/api/index.js) | JavaScript | 142 | 11 | 22 | 175 |
+| [src/views/interface/header/index.jsx](/src/views/interface/header/index.jsx) | JavaScript React | 38 | 0 | 7 | 45 |
+| [src/views/interface/header/index.scss](/src/views/interface/header/index.scss) | SCSS | 59 | 0 | 5 | 64 |
+| [src/views/interface/history/index.jsx](/src/views/interface/history/index.jsx) | JavaScript React | 251 | 3 | 37 | 291 |
+| [src/views/interface/history/index.scss](/src/views/interface/history/index.scss) | SCSS | 111 | 0 | 2 | 113 |
+| [src/views/interface/index.jsx](/src/views/interface/index.jsx) | JavaScript React | 23 | 0 | 5 | 28 |
+| [src/views/interface/index.scss](/src/views/interface/index.scss) | SCSS | 6 | 0 | 0 | 6 |
+| [src/views/interface/workspace/editTable/index.jsx](/src/views/interface/workspace/editTable/index.jsx) | JavaScript React | 219 | 0 | 31 | 250 |
+| [src/views/interface/workspace/editTable/index.scss](/src/views/interface/workspace/editTable/index.scss) | SCSS | 85 | 0 | 1 | 86 |
+| [src/views/interface/workspace/index.jsx](/src/views/interface/workspace/index.jsx) | JavaScript React | 107 | 3 | 14 | 124 |
+| [src/views/interface/workspace/index.scss](/src/views/interface/workspace/index.scss) | SCSS | 51 | 0 | 1 | 52 |
+| [src/views/interface/workspace/request/index.jsx](/src/views/interface/workspace/request/index.jsx) | JavaScript React | 254 | 3 | 53 | 310 |
+| [src/views/interface/workspace/request/index.scss](/src/views/interface/workspace/request/index.scss) | SCSS | 159 | 0 | 3 | 162 |
+| [src/views/login/index.jsx](/src/views/login/index.jsx) | JavaScript React | 742 | 37 | 109 | 888 |
+| [src/views/login/index.scss](/src/views/login/index.scss) | SCSS | 293 | 1 | 7 | 301 |
+| [src/views/login/logincloudform.jsx](/src/views/login/logincloudform.jsx) | JavaScript React | 79 | 1 | 8 | 88 |
+| [src/views/login/loginform.jsx](/src/views/login/loginform.jsx) | JavaScript React | 455 | 5 | 47 | 507 |
+| [src/views/main/index.jsx](/src/views/main/index.jsx) | JavaScript React | 35 | 0 | 7 | 42 |
+| [src/views/main/index.scss](/src/views/main/index.scss) | SCSS | 5 | 0 | 0 | 5 |
+| [src/views/menudesign/homeform/index.jsx](/src/views/menudesign/homeform/index.jsx) | JavaScript React | 161 | 2 | 18 | 181 |
+| [src/views/menudesign/homeform/index.scss](/src/views/menudesign/homeform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/views/menudesign/index.jsx](/src/views/menudesign/index.jsx) | JavaScript React | 998 | 4 | 110 | 1,112 |
+| [src/views/menudesign/index.scss](/src/views/menudesign/index.scss) | SCSS | 178 | 0 | 5 | 183 |
+| [src/views/menudesign/menuform/index.jsx](/src/views/menudesign/menuform/index.jsx) | JavaScript React | 355 | 5 | 26 | 386 |
+| [src/views/menudesign/menuform/index.scss](/src/views/menudesign/menuform/index.scss) | SCSS | 8 | 0 | 0 | 8 |
+| [src/views/menudesign/printmenuform/index.jsx](/src/views/menudesign/printmenuform/index.jsx) | JavaScript React | 236 | 1 | 20 | 257 |
+| [src/views/menudesign/printmenuform/index.scss](/src/views/menudesign/printmenuform/index.scss) | SCSS | 0 | 0 | 1 | 1 |
+| [src/views/mobdesign/index.jsx](/src/views/mobdesign/index.jsx) | JavaScript React | 1,566 | 4 | 206 | 1,776 |
+| [src/views/mobdesign/index.scss](/src/views/mobdesign/index.scss) | SCSS | 274 | 1 | 16 | 291 |
+| [src/views/mobdesign/menuform/index.jsx](/src/views/mobdesign/menuform/index.jsx) | JavaScript React | 239 | 3 | 13 | 255 |
+| [src/views/mobdesign/menuform/index.scss](/src/views/mobdesign/menuform/index.scss) | SCSS | 25 | 0 | 0 | 25 |
+| [src/views/pay/index.jsx](/src/views/pay/index.jsx) | JavaScript React | 258 | 11 | 30 | 299 |
+| [src/views/pay/index.scss](/src/views/pay/index.scss) | SCSS | 146 | 3 | 8 | 157 |
+| [src/views/pcdesign/index.jsx](/src/views/pcdesign/index.jsx) | JavaScript React | 1,615 | 4 | 202 | 1,821 |
+| [src/views/pcdesign/index.scss](/src/views/pcdesign/index.scss) | SCSS | 227 | 0 | 11 | 238 |
+| [src/views/pcdesign/menuform/index.jsx](/src/views/pcdesign/menuform/index.jsx) | JavaScript React | 176 | 3 | 13 | 192 |
+| [src/views/pcdesign/menuform/index.scss](/src/views/pcdesign/menuform/index.scss) | SCSS | 8 | 0 | 0 | 8 |
+| [src/views/printTemplate/dragelement/index.jsx](/src/views/printTemplate/dragelement/index.jsx) | JavaScript React | 17 | 0 | 4 | 21 |
+| [src/views/printTemplate/dragelement/index.scss](/src/views/printTemplate/dragelement/index.scss) | SCSS | 22 | 0 | 4 | 26 |
+| [src/views/printTemplate/dragelement/source.jsx](/src/views/printTemplate/dragelement/source.jsx) | JavaScript React | 14 | 0 | 2 | 16 |
+| [src/views/printTemplate/index.jsx](/src/views/printTemplate/index.jsx) | JavaScript React | 824 | 9 | 119 | 952 |
+| [src/views/printTemplate/index.scss](/src/views/printTemplate/index.scss) | SCSS | 122 | 0 | 2 | 124 |
+| [src/views/printTemplate/mutilform/index.jsx](/src/views/printTemplate/mutilform/index.jsx) | JavaScript React | 290 | 1 | 32 | 323 |
+| [src/views/printTemplate/mutilform/index.scss](/src/views/printTemplate/mutilform/index.scss) | SCSS | 49 | 8 | 0 | 57 |
+| [src/views/printTemplate/option.js](/src/views/printTemplate/option.js) | JavaScript | 909 | 2 | 11 | 922 |
+| [src/views/printTemplate/print.js](/src/views/printTemplate/print.js) | JavaScript | 394 | 19 | 42 | 455 |
+| [src/views/rolemanage/header/index.jsx](/src/views/rolemanage/header/index.jsx) | JavaScript React | 28 | 0 | 4 | 32 |
+| [src/views/rolemanage/header/index.scss](/src/views/rolemanage/header/index.scss) | SCSS | 56 | 0 | 2 | 58 |
+| [src/views/rolemanage/index.jsx](/src/views/rolemanage/index.jsx) | JavaScript React | 814 | 4 | 109 | 927 |
+| [src/views/rolemanage/index.scss](/src/views/rolemanage/index.scss) | SCSS | 86 | 0 | 5 | 91 |
+| [src/views/sso/index.jsx](/src/views/sso/index.jsx) | JavaScript React | 131 | 2 | 21 | 154 |
+| [src/views/sso/index.scss](/src/views/sso/index.scss) | SCSS | 7 | 0 | 0 | 7 |
+
+[summary](results.md)
\ No newline at end of file
diff --git a/.VSCodeCounter/2022-03-01_15-52-00/results.csv b/.VSCodeCounter/2022-03-01_15-52-00/results.csv
new file mode 100644
index 0000000..d382e7c
--- /dev/null
+++ b/.VSCodeCounter/2022-03-01_15-52-00/results.csv
@@ -0,0 +1,994 @@
+"filename", "language", "Markdown", "HTML", "JavaScript", "JSON", "SCSS", "JavaScript React", "CSS", "XML", "comment", "blank", "total"
+"e:\project\pc-plat\README.md", "Markdown", 39, 0, 0, 0, 0, 0, 0, 0, 0, 34, 73
+"e:\project\pc-plat\config\env.js", "JavaScript", 0, 0, 54, 0, 0, 0, 0, 0, 29, 11, 94
+"e:\project\pc-plat\config\jest\cssTransform.js", "JavaScript", 0, 0, 9, 0, 0, 0, 0, 0, 3, 3, 15
+"e:\project\pc-plat\config\jest\fileTransform.js", "JavaScript", 0, 0, 31, 0, 0, 0, 0, 0, 4, 6, 41
+"e:\project\pc-plat\config\modules.js", "JavaScript", 0, 0, 51, 0, 0, 0, 0, 0, 21, 17, 89
+"e:\project\pc-plat\config\paths.js", "JavaScript", 0, 0, 65, 0, 0, 0, 0, 0, 11, 15, 91
+"e:\project\pc-plat\config\pnpTs.js", "JavaScript", 0, 0, 31, 0, 0, 0, 0, 0, 1, 4, 36
+"e:\project\pc-plat\config\webpack.config.js", "JavaScript", 0, 0, 430, 0, 0, 0, 0, 0, 213, 18, 661
+"e:\project\pc-plat\config\webpackDevServer.config.js", "JavaScript", 0, 0, 40, 0, 0, 0, 0, 0, 59, 6, 105
+"e:\project\pc-plat\package-lock.json", "JSON", 0, 0, 0, 21413, 0, 0, 0, 0, 0, 1, 21414
+"e:\project\pc-plat\package.json", "JSON", 0, 0, 0, 201, 0, 0, 0, 0, 0, 1, 202
+"e:\project\pc-plat\public\admin.html", "HTML", 0, 38, 0, 0, 0, 0, 0, 0, 0, 1, 39
+"e:\project\pc-plat\public\index.html", "HTML", 0, 23, 0, 0, 0, 0, 0, 0, 1, 1, 25
+"e:\project\pc-plat\public\manifest.json", "JSON", 0, 0, 0, 9, 0, 0, 0, 0, 0, 1, 10
+"e:\project\pc-plat\public\options.json", "JSON", 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 17
+"e:\project\pc-plat\scripts\build.js", "JavaScript", 0, 0, 152, 0, 0, 0, 0, 0, 24, 19, 195
+"e:\project\pc-plat\scripts\start.js", "JavaScript", 0, 0, 112, 0, 0, 0, 0, 0, 20, 14, 146
+"e:\project\pc-plat\scripts\test.js", "JavaScript", 0, 0, 36, 0, 0, 0, 0, 0, 7, 11, 54
+"e:\project\pc-plat\src\api\cacheutils.js", "JavaScript", 0, 0, 288, 0, 0, 0, 0, 0, 67, 45, 400
+"e:\project\pc-plat\src\api\index.js", "JavaScript", 0, 0, 671, 0, 0, 0, 0, 0, 105, 104, 880
+"e:\project\pc-plat\src\assets\css\action.scss", "SCSS", 0, 0, 0, 0, 181, 0, 0, 0, 13, 22, 216
+"e:\project\pc-plat\src\assets\css\iconfont.css", "CSS", 0, 0, 0, 0, 0, 0, 33, 0, 0, 23, 56
+"e:\project\pc-plat\src\assets\css\main.scss", "SCSS", 0, 0, 0, 0, 394, 0, 0, 0, 23, 29, 446
+"e:\project\pc-plat\src\assets\css\minkeicon.css", "CSS", 0, 0, 0, 0, 0, 0, 43, 0, 5, 4, 52
+"e:\project\pc-plat\src\assets\css\table.scss", "SCSS", 0, 0, 0, 0, 814, 0, 0, 0, 30, 28, 872
+"e:\project\pc-plat\src\assets\css\viewstyle.scss", "SCSS", 0, 0, 0, 0, 586, 0, 0, 0, 27, 10, 623
+"e:\project\pc-plat\src\assets\font\iconfont.js", "JavaScript", 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1
+"e:\project\pc-plat\src\assets\font\iconfont.svg", "XML", 0, 0, 0, 0, 0, 0, 0, 38, 3, 43, 84
+"e:\project\pc-plat\src\assets\font\minkeicon.svg", "XML", 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 18
+"e:\project\pc-plat\src\assets\mobimg\slider-thumb.svg", "XML", 0, 0, 0, 0, 0, 0, 0, 14, 0, 1, 15
+"e:\project\pc-plat\src\components\404\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 19, 0, 0, 0, 2, 21
+"e:\project\pc-plat\src\components\404\index.scss", "SCSS", 0, 0, 0, 0, 13, 0, 0, 0, 0, 1, 14
+"e:\project\pc-plat\src\components\Image\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 46, 0, 0, 0, 10, 56
+"e:\project\pc-plat\src\components\Image\index.scss", "SCSS", 0, 0, 0, 0, 12, 0, 0, 0, 0, 2, 14
+"e:\project\pc-plat\src\components\barcode\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 53, 0, 0, 0, 12, 65
+"e:\project\pc-plat\src\components\barcode\index.scss", "SCSS", 0, 0, 0, 0, 15, 0, 0, 0, 0, 1, 16
+"e:\project\pc-plat\src\components\breadview\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 176, 0, 0, 5, 26, 207
+"e:\project\pc-plat\src\components\breadview\index.scss", "SCSS", 0, 0, 0, 0, 46, 0, 0, 0, 0, 1, 47
+"e:\project\pc-plat\src\components\editor\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 213, 0, 0, 1, 34, 248
+"e:\project\pc-plat\src\components\editor\index.scss", "SCSS", 0, 0, 0, 0, 29, 0, 0, 0, 0, 1, 30
+"e:\project\pc-plat\src\components\header\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 788, 0, 0, 15, 87, 890
+"e:\project\pc-plat\src\components\header\index.scss", "SCSS", 0, 0, 0, 0, 216, 0, 0, 0, 0, 6, 222
+"e:\project\pc-plat\src\components\header\loginform.jsx", "JavaScript React", 0, 0, 0, 0, 0, 114, 0, 0, 1, 15, 130
+"e:\project\pc-plat\src\components\header\resetpwd\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 140, 0, 0, 2, 16, 158
+"e:\project\pc-plat\src\components\imgScale\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 217, 0, 0, 0, 54, 271
+"e:\project\pc-plat\src\components\imgScale\index.scss", "SCSS", 0, 0, 0, 0, 233, 0, 0, 0, 0, 6, 239
+"e:\project\pc-plat\src\components\loading\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 10, 0, 0, 0, 2, 12
+"e:\project\pc-plat\src\components\lostsvg\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 72, 0, 0, 0, 2, 74
+"e:\project\pc-plat\src\components\mk-icon\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 465, 0, 0, 0, 9, 474
+"e:\project\pc-plat\src\components\mk-icon\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\components\mkIcon\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 71, 0, 0, 1, 13, 85
+"e:\project\pc-plat\src\components\mkIcon\index.scss", "SCSS", 0, 0, 0, 0, 67, 0, 0, 0, 0, 2, 69
+"e:\project\pc-plat\src\components\mkProgress\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 32, 0, 0, 1, 10, 43
+"e:\project\pc-plat\src\components\mkProgress\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\components\mutilform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 196, 0, 0, 2, 13, 211
+"e:\project\pc-plat\src\components\mutilform\index.scss", "SCSS", 0, 0, 0, 0, 17, 0, 0, 0, 0, 1, 18
+"e:\project\pc-plat\src\components\normalform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 80, 0, 0, 0, 12, 92
+"e:\project\pc-plat\src\components\normalform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\components\normalform\modalform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 258, 0, 0, 1, 59, 318
+"e:\project\pc-plat\src\components\normalform\modalform\index.scss", "SCSS", 0, 0, 0, 0, 57, 0, 0, 0, 0, 3, 60
+"e:\project\pc-plat\src\components\normalform\modalform\mkCheckbox\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 36, 0, 0, 0, 8, 44
+"e:\project\pc-plat\src\components\normalform\modalform\mkCheckbox\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\components\normalform\modalform\mkInput\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 50, 0, 0, 4, 17, 71
+"e:\project\pc-plat\src\components\normalform\modalform\mkInput\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\components\normalform\modalform\mkNumberInput\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 46, 0, 0, 1, 15, 62
+"e:\project\pc-plat\src\components\normalform\modalform\mkNumberInput\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\components\normalform\modalform\mkRadio\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 74, 0, 0, 0, 19, 93
+"e:\project\pc-plat\src\components\normalform\modalform\mkRadio\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\components\normalform\modalform\mkSelect\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 114, 0, 0, 0, 25, 139
+"e:\project\pc-plat\src\components\normalform\modalform\mkSelect\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\components\normalform\modalform\mkTable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 374, 0, 0, 3, 63, 440
+"e:\project\pc-plat\src\components\normalform\modalform\mkTable\index.scss", "SCSS", 0, 0, 0, 0, 104, 0, 0, 0, 0, 5, 109
+"e:\project\pc-plat\src\components\normalform\modalform\styleInput\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 114, 0, 0, 0, 30, 144
+"e:\project\pc-plat\src\components\normalform\modalform\styleInput\index.scss", "SCSS", 0, 0, 0, 0, 11, 0, 0, 0, 0, 1, 12
+"e:\project\pc-plat\src\components\paste\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 63, 0, 0, 0, 9, 72
+"e:\project\pc-plat\src\components\paste\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\components\qrcode\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 49, 0, 0, 0, 9, 58
+"e:\project\pc-plat\src\components\qrcode\index.scss", "SCSS", 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8
+"e:\project\pc-plat\src\components\querylog\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 62, 0, 0, 6, 15, 83
+"e:\project\pc-plat\src\components\sidemenu\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 116, 0, 0, 2, 20, 138
+"e:\project\pc-plat\src\components\sidemenu\index.scss", "SCSS", 0, 0, 0, 0, 112, 0, 0, 0, 8, 3, 123
+"e:\project\pc-plat\src\components\simpleform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 185, 0, 0, 2, 11, 198
+"e:\project\pc-plat\src\components\simpleform\index.scss", "SCSS", 0, 0, 0, 0, 17, 0, 0, 0, 0, 1, 18
+"e:\project\pc-plat\src\components\tabview\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 284, 0, 0, 7, 34, 325
+"e:\project\pc-plat\src\components\tabview\index.scss", "SCSS", 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 104
+"e:\project\pc-plat\src\components\video\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 40, 0, 0, 0, 6, 46
+"e:\project\pc-plat\src\components\video\index.scss", "SCSS", 0, 0, 0, 0, 956, 0, 0, 0, 5, 88, 1049
+"e:\project\pc-plat\src\index.js", "JavaScript", 0, 0, 216, 0, 0, 0, 0, 0, 3, 31, 250
+"e:\project\pc-plat\src\locales\en-US\login.js", "JavaScript", 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 19
+"e:\project\pc-plat\src\locales\en-US\main.js", "JavaScript", 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 49
+"e:\project\pc-plat\src\locales\en-US\mob.js", "JavaScript", 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 29
+"e:\project\pc-plat\src\locales\en-US\model.js", "JavaScript", 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 171
+"e:\project\pc-plat\src\locales\zh-CN\login.js", "JavaScript", 0, 0, 19, 0, 0, 0, 0, 0, 0, 0, 19
+"e:\project\pc-plat\src\locales\zh-CN\main.js", "JavaScript", 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 49
+"e:\project\pc-plat\src\locales\zh-CN\mob.js", "JavaScript", 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 29
+"e:\project\pc-plat\src\locales\zh-CN\model.js", "JavaScript", 0, 0, 171, 0, 0, 0, 0, 0, 0, 0, 171
+"e:\project\pc-plat\src\menu\bgcontroller\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 119, 0, 0, 3, 24, 146
+"e:\project\pc-plat\src\menu\bgcontroller\index.scss", "SCSS", 0, 0, 0, 0, 42, 0, 0, 0, 0, 1, 43
+"e:\project\pc-plat\src\menu\components\card\balcony\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 185, 0, 0, 8, 45, 238
+"e:\project\pc-plat\src\menu\components\card\balcony\index.scss", "SCSS", 0, 0, 0, 0, 83, 0, 0, 0, 0, 5, 88
+"e:\project\pc-plat\src\menu\components\card\balcony\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 212, 0, 0, 4, 4, 220
+"e:\project\pc-plat\src\menu\components\card\cardcellcomponent\dragaction\action.jsx", "JavaScript React", 0, 0, 0, 0, 0, 68, 0, 0, 0, 9, 77
+"e:\project\pc-plat\src\menu\components\card\cardcellcomponent\dragaction\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 165, 0, 0, 7, 18, 190
+"e:\project\pc-plat\src\menu\components\card\cardcellcomponent\dragaction\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 135, 0, 0, 0, 24, 159
+"e:\project\pc-plat\src\menu\components\card\cardcellcomponent\dragaction\index.scss", "SCSS", 0, 0, 0, 0, 124, 0, 0, 0, 0, 1, 125
+"e:\project\pc-plat\src\menu\components\card\cardcellcomponent\dragaction\mkProgress\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 31, 0, 0, 1, 11, 43
+"e:\project\pc-plat\src\menu\components\card\cardcellcomponent\dragaction\mkProgress\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\card\cardcellcomponent\elementform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 488, 0, 0, 9, 33, 530
+"e:\project\pc-plat\src\menu\components\card\cardcellcomponent\elementform\index.scss", "SCSS", 0, 0, 0, 0, 28, 0, 0, 0, 0, 1, 29
+"e:\project\pc-plat\src\menu\components\card\cardcellcomponent\formconfig.jsx", "JavaScript React", 0, 0, 0, 0, 0, 502, 0, 0, 28, 9, 539
+"e:\project\pc-plat\src\menu\components\card\cardcellcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 608, 0, 0, 38, 114, 760
+"e:\project\pc-plat\src\menu\components\card\cardcellcomponent\index.scss", "SCSS", 0, 0, 0, 0, 31, 0, 0, 0, 0, 2, 33
+"e:\project\pc-plat\src\menu\components\card\cardcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 325, 0, 0, 9, 67, 401
+"e:\project\pc-plat\src\menu\components\card\cardcomponent\index.scss", "SCSS", 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 48
+"e:\project\pc-plat\src\menu\components\card\cardcomponent\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 230, 0, 0, 3, 5, 238
+"e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 192, 0, 0, 9, 49, 250
+"e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\node-wrap\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 57, 0, 0, 0, 12, 69
+"e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\node-wrap\index.scss", "SCSS", 0, 0, 0, 0, 20, 0, 0, 0, 0, 1, 21
+"e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\node-wrap\menus\columnform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 85, 0, 0, 2, 7, 94
+"e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\node-wrap\menus\columnform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\node-wrap\menus\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 73, 0, 0, 1, 12, 86
+"e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\node-wrap\menus\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 245, 0, 0, 6, 8, 259
+"e:\project\pc-plat\src\menu\components\card\data-card\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 554, 0, 0, 14, 119, 687
+"e:\project\pc-plat\src\menu\components\card\data-card\index.scss", "SCSS", 0, 0, 0, 0, 123, 0, 0, 0, 0, 7, 130
+"e:\project\pc-plat\src\menu\components\card\data-card\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 327, 0, 0, 17, 7, 351
+"e:\project\pc-plat\src\menu\components\card\prop-card\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 409, 0, 0, 12, 87, 508
+"e:\project\pc-plat\src\menu\components\card\prop-card\index.scss", "SCSS", 0, 0, 0, 0, 79, 0, 0, 0, 0, 5, 84
+"e:\project\pc-plat\src\menu\components\card\table-card\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 465, 0, 0, 14, 93, 572
+"e:\project\pc-plat\src\menu\components\card\table-card\index.scss", "SCSS", 0, 0, 0, 0, 91, 0, 0, 0, 0, 6, 97
+"e:\project\pc-plat\src\menu\components\carousel\data-card\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 233, 0, 0, 12, 54, 299
+"e:\project\pc-plat\src\menu\components\carousel\data-card\index.scss", "SCSS", 0, 0, 0, 0, 82, 0, 0, 0, 0, 6, 88
+"e:\project\pc-plat\src\menu\components\carousel\data-card\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 128, 0, 0, 3, 3, 134
+"e:\project\pc-plat\src\menu\components\carousel\prop-card\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 301, 0, 0, 12, 68, 381
+"e:\project\pc-plat\src\menu\components\carousel\prop-card\index.scss", "SCSS", 0, 0, 0, 0, 88, 0, 0, 0, 0, 5, 93
+"e:\project\pc-plat\src\menu\components\chart\antv-bar\chartcompile\formconfig.jsx", "JavaScript React", 0, 0, 0, 0, 0, 451, 0, 0, 56, 10, 517
+"e:\project\pc-plat\src\menu\components\chart\antv-bar\chartcompile\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 667, 0, 0, 0, 48, 715
+"e:\project\pc-plat\src\menu\components\chart\antv-bar\chartcompile\index.scss", "SCSS", 0, 0, 0, 0, 35, 0, 0, 0, 0, 2, 37
+"e:\project\pc-plat\src\menu\components\chart\antv-bar\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 1196, 0, 0, 20, 150, 1366
+"e:\project\pc-plat\src\menu\components\chart\antv-bar\index.scss", "SCSS", 0, 0, 0, 0, 64, 0, 0, 0, 0, 8, 72
+"e:\project\pc-plat\src\menu\components\chart\antv-dashboard\chartcompile\formconfig.jsx", "JavaScript React", 0, 0, 0, 0, 0, 242, 0, 0, 17, 7, 266
+"e:\project\pc-plat\src\menu\components\chart\antv-dashboard\chartcompile\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 304, 0, 0, 0, 31, 335
+"e:\project\pc-plat\src\menu\components\chart\antv-dashboard\chartcompile\index.scss", "SCSS", 0, 0, 0, 0, 35, 0, 0, 0, 0, 2, 37
+"e:\project\pc-plat\src\menu\components\chart\antv-dashboard\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 476, 0, 0, 7, 59, 542
+"e:\project\pc-plat\src\menu\components\chart\antv-dashboard\index.scss", "SCSS", 0, 0, 0, 0, 44, 0, 0, 0, 0, 6, 50
+"e:\project\pc-plat\src\menu\components\chart\antv-pie\chartcompile\formconfig.jsx", "JavaScript React", 0, 0, 0, 0, 0, 327, 0, 0, 14, 6, 347
+"e:\project\pc-plat\src\menu\components\chart\antv-pie\chartcompile\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 327, 0, 0, 0, 33, 360
+"e:\project\pc-plat\src\menu\components\chart\antv-pie\chartcompile\index.scss", "SCSS", 0, 0, 0, 0, 30, 0, 0, 0, 0, 2, 32
+"e:\project\pc-plat\src\menu\components\chart\antv-pie\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 599, 0, 0, 6, 89, 694
+"e:\project\pc-plat\src\menu\components\chart\antv-pie\index.scss", "SCSS", 0, 0, 0, 0, 44, 0, 0, 0, 0, 6, 50
+"e:\project\pc-plat\src\menu\components\chart\antv-scatter\chartcompile\formconfig.jsx", "JavaScript React", 0, 0, 0, 0, 0, 177, 0, 0, 10, 4, 191
+"e:\project\pc-plat\src\menu\components\chart\antv-scatter\chartcompile\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 251, 0, 0, 0, 21, 272
+"e:\project\pc-plat\src\menu\components\chart\antv-scatter\chartcompile\index.scss", "SCSS", 0, 0, 0, 0, 32, 0, 0, 0, 0, 2, 34
+"e:\project\pc-plat\src\menu\components\chart\antv-scatter\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 337, 0, 0, 10, 53, 400
+"e:\project\pc-plat\src\menu\components\chart\antv-scatter\index.scss", "SCSS", 0, 0, 0, 0, 64, 0, 0, 0, 0, 8, 72
+"e:\project\pc-plat\src\menu\components\chart\chart-custom\chartcompile\formconfig.jsx", "JavaScript React", 0, 0, 0, 0, 0, 72, 0, 0, 24, 2, 98
+"e:\project\pc-plat\src\menu\components\chart\chart-custom\chartcompile\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 103, 0, 0, 0, 17, 120
+"e:\project\pc-plat\src\menu\components\chart\chart-custom\chartcompile\index.scss", "SCSS", 0, 0, 0, 0, 10, 0, 0, 0, 0, 2, 12
+"e:\project\pc-plat\src\menu\components\chart\chart-custom\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 226, 0, 0, 6, 39, 271
+"e:\project\pc-plat\src\menu\components\chart\chart-custom\index.scss", "SCSS", 0, 0, 0, 0, 64, 0, 0, 0, 0, 8, 72
+"e:\project\pc-plat\src\menu\components\code\sandbox\codecontent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 65, 0, 0, 7, 16, 88
+"e:\project\pc-plat\src\menu\components\code\sandbox\codecontent\index.scss", "SCSS", 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 26
+"e:\project\pc-plat\src\menu\components\code\sandbox\editorcode\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 95, 0, 0, 0, 16, 111
+"e:\project\pc-plat\src\menu\components\code\sandbox\editorcode\index.scss", "SCSS", 0, 0, 0, 0, 18, 0, 0, 0, 0, 2, 20
+"e:\project\pc-plat\src\menu\components\code\sandbox\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 155, 0, 0, 9, 32, 196
+"e:\project\pc-plat\src\menu\components\code\sandbox\index.scss", "SCSS", 0, 0, 0, 0, 35, 0, 0, 0, 0, 2, 37
+"e:\project\pc-plat\src\menu\components\code\sandbox\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 56, 0, 0, 3, 3, 62
+"e:\project\pc-plat\src\menu\components\editor\braft-editor\editorcontent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 69, 0, 0, 0, 14, 83
+"e:\project\pc-plat\src\menu\components\editor\braft-editor\editorcontent\index.scss", "SCSS", 0, 0, 0, 0, 16, 0, 0, 0, 0, 1, 17
+"e:\project\pc-plat\src\menu\components\editor\braft-editor\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 156, 0, 0, 6, 32, 194
+"e:\project\pc-plat\src\menu\components\editor\braft-editor\index.scss", "SCSS", 0, 0, 0, 0, 35, 0, 0, 0, 0, 2, 37
+"e:\project\pc-plat\src\menu\components\editor\braft-editor\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 98, 0, 0, 3, 3, 104
+"e:\project\pc-plat\src\menu\components\form\dragtitle\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 76, 0, 0, 0, 13, 89
+"e:\project\pc-plat\src\menu\components\form\dragtitle\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 50, 0, 0, 0, 10, 60
+"e:\project\pc-plat\src\menu\components\form\dragtitle\index.scss", "SCSS", 0, 0, 0, 0, 88, 0, 0, 0, 0, 1, 89
+"e:\project\pc-plat\src\menu\components\form\dragtitle\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 93, 0, 0, 3, 3, 99
+"e:\project\pc-plat\src\menu\components\form\formaction\actionform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 333, 0, 0, 8, 29, 370
+"e:\project\pc-plat\src\menu\components\form\formaction\actionform\index.scss", "SCSS", 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 39
+"e:\project\pc-plat\src\menu\components\form\formaction\formconfig.jsx", "JavaScript React", 0, 0, 0, 0, 0, 294, 0, 0, 5, 6, 305
+"e:\project\pc-plat\src\menu\components\form\formaction\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 224, 0, 0, 18, 37, 279
+"e:\project\pc-plat\src\menu\components\form\formaction\index.scss", "SCSS", 0, 0, 0, 0, 16, 0, 0, 0, 0, 2, 18
+"e:\project\pc-plat\src\menu\components\form\normal-form\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 622, 0, 0, 18, 104, 744
+"e:\project\pc-plat\src\menu\components\form\normal-form\index.scss", "SCSS", 0, 0, 0, 0, 82, 0, 0, 0, 0, 3, 85
+"e:\project\pc-plat\src\menu\components\form\normal-form\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 100, 0, 0, 3, 3, 106
+"e:\project\pc-plat\src\menu\components\form\tab-form\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 630, 0, 0, 18, 104, 752
+"e:\project\pc-plat\src\menu\components\form\tab-form\index.scss", "SCSS", 0, 0, 0, 0, 82, 0, 0, 0, 0, 3, 85
+"e:\project\pc-plat\src\menu\components\group\groupcomponents\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 99, 0, 0, 0, 10, 109
+"e:\project\pc-plat\src\menu\components\group\groupcomponents\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 132, 0, 0, 0, 22, 154
+"e:\project\pc-plat\src\menu\components\group\groupcomponents\index.scss", "SCSS", 0, 0, 0, 0, 12, 0, 0, 0, 0, 2, 14
+"e:\project\pc-plat\src\menu\components\group\normal-group\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 161, 0, 0, 4, 38, 203
+"e:\project\pc-plat\src\menu\components\group\normal-group\index.scss", "SCSS", 0, 0, 0, 0, 39, 0, 0, 0, 0, 2, 41
+"e:\project\pc-plat\src\menu\components\group\normal-group\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 87, 0, 0, 3, 3, 93
+"e:\project\pc-plat\src\menu\components\group\paste\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 83, 0, 0, 1, 18, 102
+"e:\project\pc-plat\src\menu\components\group\paste\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\module\voucher\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 123, 0, 0, 12, 29, 164
+"e:\project\pc-plat\src\menu\components\module\voucher\index.scss", "SCSS", 0, 0, 0, 0, 39, 0, 0, 0, 0, 3, 42
+"e:\project\pc-plat\src\menu\components\module\voucher\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 68, 0, 0, 10, 5, 83
+"e:\project\pc-plat\src\menu\components\search\main-search\dategroup\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 27, 0, 0, 0, 5, 32
+"e:\project\pc-plat\src\menu\components\search\main-search\dategroup\index.scss", "SCSS", 0, 0, 0, 0, 36, 0, 0, 0, 0, 2, 38
+"e:\project\pc-plat\src\menu\components\search\main-search\dragsearch\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 106, 0, 0, 0, 9, 115
+"e:\project\pc-plat\src\menu\components\search\main-search\dragsearch\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 112, 0, 0, 0, 17, 129
+"e:\project\pc-plat\src\menu\components\search\main-search\dragsearch\index.scss", "SCSS", 0, 0, 0, 0, 6, 0, 0, 0, 0, 1, 7
+"e:\project\pc-plat\src\menu\components\search\main-search\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 377, 0, 0, 26, 64, 467
+"e:\project\pc-plat\src\menu\components\search\main-search\index.scss", "SCSS", 0, 0, 0, 0, 140, 0, 0, 0, 0, 1, 141
+"e:\project\pc-plat\src\menu\components\search\main-search\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 78, 0, 0, 3, 3, 84
+"e:\project\pc-plat\src\menu\components\share\actioncomponent\actionform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 714, 0, 0, 10, 93, 817
+"e:\project\pc-plat\src\menu\components\share\actioncomponent\actionform\index.scss", "SCSS", 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 39
+"e:\project\pc-plat\src\menu\components\share\actioncomponent\dragaction\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 92, 0, 0, 0, 9, 101
+"e:\project\pc-plat\src\menu\components\share\actioncomponent\dragaction\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 106, 0, 0, 0, 24, 130
+"e:\project\pc-plat\src\menu\components\share\actioncomponent\dragaction\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\share\actioncomponent\formconfig.jsx", "JavaScript React", 0, 0, 0, 0, 0, 849, 0, 0, 11, 16, 876
+"e:\project\pc-plat\src\menu\components\share\actioncomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 439, 0, 0, 38, 74, 551
+"e:\project\pc-plat\src\menu\components\share\actioncomponent\index.scss", "SCSS", 0, 0, 0, 0, 79, 0, 0, 0, 0, 3, 82
+"e:\project\pc-plat\src\menu\components\share\clockcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 54, 0, 0, 0, 10, 64
+"e:\project\pc-plat\src\menu\components\share\clockcomponent\index.scss", "SCSS", 0, 0, 0, 0, 6, 0, 0, 0, 0, 1, 7
+"e:\project\pc-plat\src\menu\components\share\clockcomponent\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 98, 0, 0, 1, 8, 107
+"e:\project\pc-plat\src\menu\components\share\clockcomponent\settingform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\share\copycomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 39, 0, 0, 0, 8, 47
+"e:\project\pc-plat\src\menu\components\share\copycomponent\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\share\logcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 115, 0, 0, 0, 16, 131
+"e:\project\pc-plat\src\menu\components\share\logcomponent\index.scss", "SCSS", 0, 0, 0, 0, 20, 0, 0, 0, 0, 1, 21
+"e:\project\pc-plat\src\menu\components\share\markcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 327, 0, 0, 0, 26, 353
+"e:\project\pc-plat\src\menu\components\share\markcomponent\index.scss", "SCSS", 0, 0, 0, 0, 55, 0, 0, 0, 0, 4, 59
+"e:\project\pc-plat\src\menu\components\share\markcomponent\markform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 124, 0, 0, 1, 6, 131
+"e:\project\pc-plat\src\menu\components\share\markcomponent\markform\index.scss", "SCSS", 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 17
+"e:\project\pc-plat\src\menu\components\share\mobPagination\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 24, 0, 0, 0, 3, 27
+"e:\project\pc-plat\src\menu\components\share\mobPagination\index.scss", "SCSS", 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 31
+"e:\project\pc-plat\src\menu\components\share\normalform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 180, 0, 0, 2, 12, 194
+"e:\project\pc-plat\src\menu\components\share\normalform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\share\normalheader\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 73, 0, 0, 3, 20, 96
+"e:\project\pc-plat\src\menu\components\share\normalheader\index.scss", "SCSS", 0, 0, 0, 0, 40, 0, 0, 0, 0, 1, 41
+"e:\project\pc-plat\src\menu\components\share\pastecomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 208, 0, 0, 0, 33, 241
+"e:\project\pc-plat\src\menu\components\share\pastecomponent\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\share\searchcomponent\dragsearch\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 102, 0, 0, 0, 9, 111
+"e:\project\pc-plat\src\menu\components\share\searchcomponent\dragsearch\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 83, 0, 0, 0, 16, 99
+"e:\project\pc-plat\src\menu\components\share\searchcomponent\dragsearch\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\share\searchcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 248, 0, 0, 28, 47, 323
+"e:\project\pc-plat\src\menu\components\share\searchcomponent\index.scss", "SCSS", 0, 0, 0, 0, 62, 0, 0, 0, 0, 3, 65
+"e:\project\pc-plat\src\menu\components\share\sourcecomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 81, 0, 0, 0, 14, 95
+"e:\project\pc-plat\src\menu\components\share\sourcecomponent\index.scss", "SCSS", 0, 0, 0, 0, 55, 0, 0, 0, 0, 2, 57
+"e:\project\pc-plat\src\menu\components\share\sourcecomponent\inputform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 188, 0, 0, 0, 25, 213
+"e:\project\pc-plat\src\menu\components\share\sourcecomponent\inputform\index.scss", "SCSS", 0, 0, 0, 0, 59, 0, 0, 0, 0, 1, 60
+"e:\project\pc-plat\src\menu\components\share\styleInput\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 112, 0, 0, 3, 25, 140
+"e:\project\pc-plat\src\menu\components\share\styleInput\index.scss", "SCSS", 0, 0, 0, 0, 11, 0, 0, 0, 0, 1, 12
+"e:\project\pc-plat\src\menu\components\share\usercomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 207, 0, 0, 1, 25, 233
+"e:\project\pc-plat\src\menu\components\share\usercomponent\index.scss", "SCSS", 0, 0, 0, 0, 6, 0, 0, 0, 0, 1, 7
+"e:\project\pc-plat\src\menu\components\share\usercomponent\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 73, 0, 0, 2, 12, 87
+"e:\project\pc-plat\src\menu\components\share\usercomponent\settingform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\table\edit-table\columns\editColumn\formconfig.jsx", "JavaScript React", 0, 0, 0, 0, 0, 318, 0, 0, 4, 7, 329
+"e:\project\pc-plat\src\menu\components\table\edit-table\columns\editColumn\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 366, 0, 0, 1, 31, 398
+"e:\project\pc-plat\src\menu\components\table\edit-table\columns\editColumn\index.scss", "SCSS", 0, 0, 0, 0, 17, 0, 0, 0, 0, 1, 18
+"e:\project\pc-plat\src\menu\components\table\edit-table\columns\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 514, 0, 0, 8, 92, 614
+"e:\project\pc-plat\src\menu\components\table\edit-table\columns\index.scss", "SCSS", 0, 0, 0, 0, 120, 0, 0, 0, 0, 3, 123
+"e:\project\pc-plat\src\menu\components\table\edit-table\columns\tableIn\customscript\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 297, 0, 0, 8, 42, 347
+"e:\project\pc-plat\src\menu\components\table\edit-table\columns\tableIn\customscript\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\table\edit-table\columns\tableIn\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 643, 0, 0, 8, 64, 715
+"e:\project\pc-plat\src\menu\components\table\edit-table\columns\tableIn\index.scss", "SCSS", 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 80
+"e:\project\pc-plat\src\menu\components\table\edit-table\columns\tableIn\uniqueform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 117, 0, 0, 1, 11, 129
+"e:\project\pc-plat\src\menu\components\table\edit-table\columns\tableIn\uniqueform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\table\edit-table\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 286, 0, 0, 10, 60, 356
+"e:\project\pc-plat\src\menu\components\table\edit-table\index.scss", "SCSS", 0, 0, 0, 0, 78, 0, 0, 0, 0, 3, 81
+"e:\project\pc-plat\src\menu\components\table\edit-table\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 190, 0, 0, 4, 3, 197
+"e:\project\pc-plat\src\menu\components\table\normal-table\columns\editColumn\formconfig.jsx", "JavaScript React", 0, 0, 0, 0, 0, 408, 0, 0, 4, 10, 422
+"e:\project\pc-plat\src\menu\components\table\normal-table\columns\editColumn\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 362, 0, 0, 1, 28, 391
+"e:\project\pc-plat\src\menu\components\table\normal-table\columns\editColumn\index.scss", "SCSS", 0, 0, 0, 0, 17, 0, 0, 0, 0, 1, 18
+"e:\project\pc-plat\src\menu\components\table\normal-table\columns\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 515, 0, 0, 8, 91, 614
+"e:\project\pc-plat\src\menu\components\table\normal-table\columns\index.scss", "SCSS", 0, 0, 0, 0, 122, 0, 0, 0, 0, 3, 125
+"e:\project\pc-plat\src\menu\components\table\normal-table\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 382, 0, 0, 10, 76, 468
+"e:\project\pc-plat\src\menu\components\table\normal-table\index.scss", "SCSS", 0, 0, 0, 0, 78, 0, 0, 0, 0, 3, 81
+"e:\project\pc-plat\src\menu\components\table\normal-table\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 254, 0, 0, 4, 3, 261
+"e:\project\pc-plat\src\menu\components\tabs\antv-tabs\dragabletabs.jsx", "JavaScript React", 0, 0, 0, 0, 0, 106, 0, 0, 1, 22, 129
+"e:\project\pc-plat\src\menu\components\tabs\antv-tabs\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 332, 0, 0, 5, 69, 406
+"e:\project\pc-plat\src\menu\components\tabs\antv-tabs\index.scss", "SCSS", 0, 0, 0, 0, 132, 0, 0, 0, 0, 9, 141
+"e:\project\pc-plat\src\menu\components\tabs\antv-tabs\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 206, 0, 0, 22, 9, 237
+"e:\project\pc-plat\src\menu\components\tabs\paste\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 120, 0, 0, 1, 28, 149
+"e:\project\pc-plat\src\menu\components\tabs\paste\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\components\tabs\tabcomponents\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 108, 0, 0, 0, 10, 118
+"e:\project\pc-plat\src\menu\components\tabs\tabcomponents\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 156, 0, 0, 0, 24, 180
+"e:\project\pc-plat\src\menu\components\tabs\tabcomponents\index.scss", "SCSS", 0, 0, 0, 0, 12, 0, 0, 0, 0, 2, 14
+"e:\project\pc-plat\src\menu\components\timeline\normal-timeline\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 160, 0, 0, 6, 34, 200
+"e:\project\pc-plat\src\menu\components\timeline\normal-timeline\index.scss", "SCSS", 0, 0, 0, 0, 76, 0, 0, 0, 0, 5, 81
+"e:\project\pc-plat\src\menu\components\timeline\normal-timeline\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 112, 0, 0, 3, 3, 118
+"e:\project\pc-plat\src\menu\components\tree\antd-tree\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 160, 0, 0, 9, 33, 202
+"e:\project\pc-plat\src\menu\components\tree\antd-tree\index.scss", "SCSS", 0, 0, 0, 0, 39, 0, 0, 0, 0, 3, 42
+"e:\project\pc-plat\src\menu\components\tree\antd-tree\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 130, 0, 0, 3, 3, 136
+"e:\project\pc-plat\src\menu\datasource\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 199, 0, 0, 0, 28, 227
+"e:\project\pc-plat\src\menu\datasource\index.scss", "SCSS", 0, 0, 0, 0, 79, 0, 0, 0, 0, 8, 87
+"e:\project\pc-plat\src\menu\datasource\verifycard\columnform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 120, 0, 0, 1, 7, 128
+"e:\project\pc-plat\src\menu\datasource\verifycard\columnform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\datasource\verifycard\customscript\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 238, 0, 0, 1, 31, 270
+"e:\project\pc-plat\src\menu\datasource\verifycard\customscript\index.scss", "SCSS", 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 34
+"e:\project\pc-plat\src\menu\datasource\verifycard\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 606, 0, 0, 7, 88, 701
+"e:\project\pc-plat\src\menu\datasource\verifycard\index.scss", "SCSS", 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 84
+"e:\project\pc-plat\src\menu\datasource\verifycard\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 458, 0, 0, 2, 30, 490
+"e:\project\pc-plat\src\menu\datasource\verifycard\settingform\index.scss", "SCSS", 0, 0, 0, 0, 27, 0, 0, 0, 0, 1, 28
+"e:\project\pc-plat\src\menu\datasource\verifycard\utils.jsx", "JavaScript React", 0, 0, 0, 0, 0, 175, 0, 0, 16, 26, 217
+"e:\project\pc-plat\src\menu\header\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 28, 0, 0, 0, 6, 34
+"e:\project\pc-plat\src\menu\header\index.scss", "SCSS", 0, 0, 0, 0, 83, 0, 0, 0, 0, 3, 86
+"e:\project\pc-plat\src\menu\menushell\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 111, 0, 0, 0, 9, 120
+"e:\project\pc-plat\src\menu\menushell\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 149, 0, 0, 0, 23, 172
+"e:\project\pc-plat\src\menu\menushell\index.scss", "SCSS", 0, 0, 0, 0, 20, 0, 0, 0, 0, 3, 23
+"e:\project\pc-plat\src\menu\modalconfig\controller.jsx", "JavaScript React", 0, 0, 0, 0, 0, 49, 0, 0, 3, 12, 64
+"e:\project\pc-plat\src\menu\modalconfig\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 459, 0, 0, 36, 63, 558
+"e:\project\pc-plat\src\menu\modalconfig\index.scss", "SCSS", 0, 0, 0, 0, 330, 0, 0, 0, 0, 5, 335
+"e:\project\pc-plat\src\menu\modulesource\dragsource\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 14, 0, 0, 0, 1, 15
+"e:\project\pc-plat\src\menu\modulesource\dragsource\index.scss", "SCSS", 0, 0, 0, 0, 40, 0, 0, 0, 0, 6, 46
+"e:\project\pc-plat\src\menu\modulesource\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 82, 0, 0, 0, 14, 96
+"e:\project\pc-plat\src\menu\modulesource\index.scss", "SCSS", 0, 0, 0, 0, 8, 0, 0, 0, 0, 2, 10
+"e:\project\pc-plat\src\menu\modulesource\option.jsx", "JavaScript React", 0, 0, 0, 0, 0, 60, 0, 0, 1, 2, 63
+"e:\project\pc-plat\src\menu\padcontroller\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 81, 0, 0, 3, 11, 95
+"e:\project\pc-plat\src\menu\padcontroller\index.scss", "SCSS", 0, 0, 0, 0, 9, 0, 0, 0, 0, 1, 10
+"e:\project\pc-plat\src\menu\pastecontroller\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 102, 0, 0, 1, 25, 128
+"e:\project\pc-plat\src\menu\pastecontroller\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\picturecontroller\editform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 162, 0, 0, 1, 10, 173
+"e:\project\pc-plat\src\menu\picturecontroller\editform\index.scss", "SCSS", 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 14
+"e:\project\pc-plat\src\menu\picturecontroller\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 325, 0, 0, 0, 37, 362
+"e:\project\pc-plat\src\menu\picturecontroller\index.scss", "SCSS", 0, 0, 0, 0, 88, 0, 0, 0, 0, 0, 88
+"e:\project\pc-plat\src\menu\picturecontroller\video\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 23, 0, 0, 0, 6, 29
+"e:\project\pc-plat\src\menu\picturecontroller\video\index.scss", "SCSS", 0, 0, 0, 0, 51, 0, 0, 0, 0, 2, 53
+"e:\project\pc-plat\src\menu\popview\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 597, 0, 0, 7, 79, 683
+"e:\project\pc-plat\src\menu\popview\index.scss", "SCSS", 0, 0, 0, 0, 157, 0, 0, 0, 0, 5, 162
+"e:\project\pc-plat\src\menu\popview\menuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 123, 0, 0, 3, 10, 136
+"e:\project\pc-plat\src\menu\popview\menuform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\replaceField\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 485, 0, 0, 4, 55, 544
+"e:\project\pc-plat\src\menu\replaceField\index.scss", "SCSS", 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 9
+"e:\project\pc-plat\src\menu\replaceField\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 209, 0, 0, 2, 20, 231
+"e:\project\pc-plat\src\menu\replaceField\settingform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\stylecombcontrolbutton\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 128, 0, 0, 3, 26, 157
+"e:\project\pc-plat\src\menu\stylecombcontrolbutton\index.scss", "SCSS", 0, 0, 0, 0, 48, 0, 0, 0, 0, 2, 50
+"e:\project\pc-plat\src\menu\stylecombcontroller\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 499, 0, 0, 33, 42, 574
+"e:\project\pc-plat\src\menu\stylecombcontroller\index.scss", "SCSS", 0, 0, 0, 0, 184, 0, 0, 0, 0, 6, 190
+"e:\project\pc-plat\src\menu\stylecombcontroller\styleInput\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 121, 0, 0, 3, 29, 153
+"e:\project\pc-plat\src\menu\stylecombcontroller\styleInput\index.scss", "SCSS", 0, 0, 0, 0, 11, 0, 0, 0, 0, 1, 12
+"e:\project\pc-plat\src\menu\stylecontroller\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 704, 0, 0, 51, 65, 820
+"e:\project\pc-plat\src\menu\stylecontroller\index.scss", "SCSS", 0, 0, 0, 0, 196, 0, 0, 0, 0, 6, 202
+"e:\project\pc-plat\src\menu\stylecontroller\styleInput\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 127, 0, 0, 3, 30, 160
+"e:\project\pc-plat\src\menu\stylecontroller\styleInput\index.scss", "SCSS", 0, 0, 0, 0, 11, 0, 0, 0, 0, 1, 12
+"e:\project\pc-plat\src\menu\sysinterface\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 189, 0, 0, 0, 27, 216
+"e:\project\pc-plat\src\menu\sysinterface\index.scss", "SCSS", 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 20
+"e:\project\pc-plat\src\menu\sysinterface\settingform\baseform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 242, 0, 0, 1, 17, 260
+"e:\project\pc-plat\src\menu\sysinterface\settingform\baseform\index.scss", "SCSS", 0, 0, 0, 0, 16, 0, 0, 0, 0, 1, 17
+"e:\project\pc-plat\src\menu\sysinterface\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 153, 0, 0, 4, 22, 179
+"e:\project\pc-plat\src\menu\sysinterface\settingform\index.scss", "SCSS", 0, 0, 0, 0, 60, 0, 0, 0, 0, 1, 61
+"e:\project\pc-plat\src\menu\sysinterface\settingform\simplescript\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 401, 0, 0, 0, 50, 451
+"e:\project\pc-plat\src\menu\sysinterface\settingform\simplescript\index.scss", "SCSS", 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 45
+"e:\project\pc-plat\src\menu\sysinterface\settingform\utils.jsx", "JavaScript React", 0, 0, 0, 0, 0, 33, 0, 0, 5, 7, 45
+"e:\project\pc-plat\src\menu\urlfieldcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 115, 0, 0, 0, 21, 136
+"e:\project\pc-plat\src\menu\urlfieldcomponent\index.scss", "SCSS", 0, 0, 0, 0, 23, 0, 0, 0, 0, 1, 24
+"e:\project\pc-plat\src\menu\urlfieldcomponent\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 70, 0, 0, 2, 10, 82
+"e:\project\pc-plat\src\menu\urlfieldcomponent\settingform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\menu\versions\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 136, 0, 0, 1, 20, 157
+"e:\project\pc-plat\src\menu\versions\index.scss", "SCSS", 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 30
+"e:\project\pc-plat\src\mob\colorsketch\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 84, 0, 0, 0, 15, 99
+"e:\project\pc-plat\src\mob\colorsketch\index.scss", "SCSS", 0, 0, 0, 0, 60, 0, 0, 0, 0, 3, 63
+"e:\project\pc-plat\src\mob\components\formdragelement\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 194, 0, 0, 0, 14, 208
+"e:\project\pc-plat\src\mob\components\formdragelement\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 114, 0, 0, 1, 25, 140
+"e:\project\pc-plat\src\mob\components\formdragelement\index.scss", "SCSS", 0, 0, 0, 0, 281, 0, 0, 0, 1, 3, 285
+"e:\project\pc-plat\src\mob\components\menubar\normal-menubar\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 230, 0, 0, 12, 52, 294
+"e:\project\pc-plat\src\mob\components\menubar\normal-menubar\index.scss", "SCSS", 0, 0, 0, 0, 69, 0, 0, 0, 0, 3, 72
+"e:\project\pc-plat\src\mob\components\menubar\normal-menubar\menucomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 137, 0, 0, 3, 29, 169
+"e:\project\pc-plat\src\mob\components\menubar\normal-menubar\menucomponent\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\mob\components\menubar\normal-menubar\menucomponent\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 180, 0, 0, 4, 3, 187
+"e:\project\pc-plat\src\mob\components\menubar\normal-menubar\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 43, 0, 0, 3, 1, 47
+"e:\project\pc-plat\src\mob\components\navbar\normal-navbar\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 122, 0, 0, 6, 29, 157
+"e:\project\pc-plat\src\mob\components\navbar\normal-navbar\index.scss", "SCSS", 0, 0, 0, 0, 65, 0, 0, 0, 0, 3, 68
+"e:\project\pc-plat\src\mob\components\navbar\normal-navbar\menus\drags\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 58, 0, 0, 0, 7, 65
+"e:\project\pc-plat\src\mob\components\navbar\normal-navbar\menus\drags\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 48, 0, 0, 1, 8, 57
+"e:\project\pc-plat\src\mob\components\navbar\normal-navbar\menus\drags\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\mob\components\navbar\normal-navbar\menus\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 148, 0, 0, 22, 26, 196
+"e:\project\pc-plat\src\mob\components\navbar\normal-navbar\menus\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\mob\components\navbar\normal-navbar\menus\menuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 207, 0, 0, 1, 17, 225
+"e:\project\pc-plat\src\mob\components\navbar\normal-navbar\menus\menuform\index.scss", "SCSS", 0, 0, 0, 0, 16, 0, 0, 0, 0, 1, 17
+"e:\project\pc-plat\src\mob\components\navbar\normal-navbar\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 41, 0, 0, 3, 1, 45
+"e:\project\pc-plat\src\mob\components\search\single-search\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 125, 0, 0, 9, 26, 160
+"e:\project\pc-plat\src\mob\components\search\single-search\index.scss", "SCSS", 0, 0, 0, 0, 51, 0, 0, 0, 0, 2, 53
+"e:\project\pc-plat\src\mob\components\search\single-search\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 111, 0, 0, 3, 1, 115
+"e:\project\pc-plat\src\mob\components\tabs\antv-tabs\dragabletabs.jsx", "JavaScript React", 0, 0, 0, 0, 0, 106, 0, 0, 1, 22, 129
+"e:\project\pc-plat\src\mob\components\tabs\antv-tabs\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 356, 0, 0, 5, 76, 437
+"e:\project\pc-plat\src\mob\components\tabs\antv-tabs\index.scss", "SCSS", 0, 0, 0, 0, 123, 0, 0, 0, 0, 8, 131
+"e:\project\pc-plat\src\mob\components\tabs\antv-tabs\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 91, 0, 0, 45, 5, 141
+"e:\project\pc-plat\src\mob\components\tabs\tabcomponents\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 105, 0, 0, 0, 10, 115
+"e:\project\pc-plat\src\mob\components\tabs\tabcomponents\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 150, 0, 0, 8, 24, 182
+"e:\project\pc-plat\src\mob\components\tabs\tabcomponents\index.scss", "SCSS", 0, 0, 0, 0, 12, 0, 0, 0, 0, 2, 14
+"e:\project\pc-plat\src\mob\components\topbar\normal-navbar\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 204, 0, 0, 6, 42, 252
+"e:\project\pc-plat\src\mob\components\topbar\normal-navbar\index.scss", "SCSS", 0, 0, 0, 0, 88, 0, 0, 0, 0, 2, 90
+"e:\project\pc-plat\src\mob\components\topbar\normal-navbar\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 149, 0, 0, 14, 4, 167
+"e:\project\pc-plat\src\mob\header\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 37, 0, 0, 0, 5, 42
+"e:\project\pc-plat\src\mob\header\index.scss", "SCSS", 0, 0, 0, 0, 54, 0, 0, 0, 0, 2, 56
+"e:\project\pc-plat\src\mob\mobshell\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 127, 0, 0, 3, 13, 143
+"e:\project\pc-plat\src\mob\mobshell\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 202, 0, 0, 0, 27, 229
+"e:\project\pc-plat\src\mob\mobshell\index.scss", "SCSS", 0, 0, 0, 0, 33, 0, 0, 0, 1, 0, 34
+"e:\project\pc-plat\src\mob\modalconfig\controller.jsx", "JavaScript React", 0, 0, 0, 0, 0, 49, 0, 0, 3, 12, 64
+"e:\project\pc-plat\src\mob\modalconfig\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 410, 0, 0, 36, 59, 505
+"e:\project\pc-plat\src\mob\modalconfig\index.scss", "SCSS", 0, 0, 0, 0, 323, 0, 0, 0, 0, 8, 331
+"e:\project\pc-plat\src\mob\modalconfig\pastecomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 62, 0, 0, 1, 13, 76
+"e:\project\pc-plat\src\mob\modalconfig\pastecomponent\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\mob\modalconfig\source.jsx", "JavaScript React", 0, 0, 0, 0, 0, 112, 0, 0, 0, 4, 116
+"e:\project\pc-plat\src\mob\modulesource\dragsource\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 14, 0, 0, 0, 1, 15
+"e:\project\pc-plat\src\mob\modulesource\dragsource\index.scss", "SCSS", 0, 0, 0, 0, 40, 0, 0, 0, 0, 6, 46
+"e:\project\pc-plat\src\mob\modulesource\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 81, 0, 0, 0, 13, 94
+"e:\project\pc-plat\src\mob\modulesource\index.scss", "SCSS", 0, 0, 0, 0, 8, 0, 0, 0, 0, 2, 10
+"e:\project\pc-plat\src\mob\modulesource\option.jsx", "JavaScript React", 0, 0, 0, 0, 0, 55, 0, 0, 3, 2, 60
+"e:\project\pc-plat\src\mob\searchconfig\controller.jsx", "JavaScript React", 0, 0, 0, 0, 0, 46, 0, 0, 3, 13, 62
+"e:\project\pc-plat\src\mob\searchconfig\groupdragelement\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 56, 0, 0, 0, 8, 64
+"e:\project\pc-plat\src\mob\searchconfig\groupdragelement\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 53, 0, 0, 0, 12, 65
+"e:\project\pc-plat\src\mob\searchconfig\groupdragelement\index.scss", "SCSS", 0, 0, 0, 0, 27, 0, 0, 0, 0, 1, 28
+"e:\project\pc-plat\src\mob\searchconfig\groupform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 78, 0, 0, 1, 10, 89
+"e:\project\pc-plat\src\mob\searchconfig\groupform\index.scss", "SCSS", 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 10
+"e:\project\pc-plat\src\mob\searchconfig\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 496, 0, 0, 36, 67, 599
+"e:\project\pc-plat\src\mob\searchconfig\index.scss", "SCSS", 0, 0, 0, 0, 365, 0, 0, 0, 0, 9, 374
+"e:\project\pc-plat\src\mob\searchconfig\pastecomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 46, 0, 0, 1, 10, 57
+"e:\project\pc-plat\src\mob\searchconfig\pastecomponent\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\mob\searchconfig\searchdragelement\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 110, 0, 0, 21, 10, 141
+"e:\project\pc-plat\src\mob\searchconfig\searchdragelement\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 99, 0, 0, 1, 24, 124
+"e:\project\pc-plat\src\mob\searchconfig\searchdragelement\index.scss", "SCSS", 0, 0, 0, 0, 185, 0, 0, 0, 1, 3, 189
+"e:\project\pc-plat\src\mob\searchconfig\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 233, 0, 0, 1, 13, 247
+"e:\project\pc-plat\src\mob\searchconfig\settingform\index.scss", "SCSS", 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 20
+"e:\project\pc-plat\src\mob\searchconfig\source.jsx", "JavaScript React", 0, 0, 0, 0, 0, 26, 0, 0, 6, 2, 34
+"e:\project\pc-plat\src\pc\bgcontroller\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 210, 0, 0, 6, 30, 246
+"e:\project\pc-plat\src\pc\bgcontroller\index.scss", "SCSS", 0, 0, 0, 0, 19, 0, 0, 0, 0, 1, 20
+"e:\project\pc-plat\src\pc\components\login\normal-login\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 156, 0, 0, 6, 34, 196
+"e:\project\pc-plat\src\pc\components\login\normal-login\index.scss", "SCSS", 0, 0, 0, 0, 182, 0, 0, 0, 3, 5, 190
+"e:\project\pc-plat\src\pc\components\login\normal-login\loginform.jsx", "JavaScript React", 0, 0, 0, 0, 0, 162, 0, 0, 4, 18, 184
+"e:\project\pc-plat\src\pc\components\login\normal-login\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 116, 0, 0, 67, 4, 187
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 206, 0, 0, 6, 35, 247
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\index.scss", "SCSS", 0, 0, 0, 0, 153, 0, 0, 0, 0, 6, 159
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\linksetting\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 53, 0, 0, 0, 9, 62
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\linksetting\index.scss", "SCSS", 0, 0, 0, 0, 9, 0, 0, 0, 0, 2, 11
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\linksetting\linkform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 147, 0, 0, 1, 17, 165
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\linksetting\linkform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\linksetting\linktable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 134, 0, 0, 0, 27, 161
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\linksetting\linktable\index.scss", "SCSS", 0, 0, 0, 0, 18, 0, 0, 0, 0, 2, 20
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\menusetting\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 54, 0, 0, 0, 9, 63
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\menusetting\index.scss", "SCSS", 0, 0, 0, 0, 9, 0, 0, 0, 0, 2, 11
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\menusetting\menuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 190, 0, 0, 1, 17, 208
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\menusetting\menuform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\menusetting\menutable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 501, 0, 0, 0, 83, 584
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\menusetting\menutable\index.scss", "SCSS", 0, 0, 0, 0, 60, 0, 0, 0, 0, 4, 64
+"e:\project\pc-plat\src\pc\components\navbar\normal-navbar\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 113, 0, 0, 3, 2, 118
+"e:\project\pc-plat\src\pc\createview\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 204, 0, 0, 0, 26, 230
+"e:\project\pc-plat\src\pc\createview\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\pc\createview\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 119, 0, 0, 1, 10, 130
+"e:\project\pc-plat\src\pc\createview\settingform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\pc\menushell\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 130, 0, 0, 3, 12, 145
+"e:\project\pc-plat\src\pc\menushell\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 166, 0, 0, 0, 25, 191
+"e:\project\pc-plat\src\pc\menushell\index.scss", "SCSS", 0, 0, 0, 0, 20, 0, 0, 0, 0, 3, 23
+"e:\project\pc-plat\src\pc\modulesource\dragsource\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 14, 0, 0, 0, 1, 15
+"e:\project\pc-plat\src\pc\modulesource\dragsource\index.scss", "SCSS", 0, 0, 0, 0, 40, 0, 0, 0, 0, 6, 46
+"e:\project\pc-plat\src\pc\modulesource\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 81, 0, 0, 0, 13, 94
+"e:\project\pc-plat\src\pc\modulesource\index.scss", "SCSS", 0, 0, 0, 0, 8, 0, 0, 0, 0, 2, 10
+"e:\project\pc-plat\src\pc\modulesource\option.jsx", "JavaScript React", 0, 0, 0, 0, 0, 62, 0, 0, 1, 2, 65
+"e:\project\pc-plat\src\pc\quotecomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 113, 0, 0, 0, 16, 129
+"e:\project\pc-plat\src\pc\quotecomponent\index.scss", "SCSS", 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6
+"e:\project\pc-plat\src\pc\quotecomponent\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 76, 0, 0, 1, 9, 86
+"e:\project\pc-plat\src\pc\quotecomponent\settingform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\pc\transfer\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 113, 0, 0, 0, 14, 127
+"e:\project\pc-plat\src\pc\transfer\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\pc\transfer\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 58, 0, 0, 2, 8, 68
+"e:\project\pc-plat\src\pc\transfer\settingform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\router\index.js", "JavaScript", 0, 0, 100, 0, 0, 0, 0, 0, 1, 13, 114
+"e:\project\pc-plat\src\serviceWorker.js", "JavaScript", 0, 0, 90, 0, 0, 0, 0, 0, 31, 13, 134
+"e:\project\pc-plat\src\setupProxy.js", "JavaScript", 0, 0, 1, 0, 0, 0, 0, 0, 46, 5, 52
+"e:\project\pc-plat\src\store\action-type.js", "JavaScript", 0, 0, 9, 0, 0, 0, 0, 0, 9, 8, 26
+"e:\project\pc-plat\src\store\action.js", "JavaScript", 0, 0, 48, 0, 0, 0, 0, 0, 8, 8, 64
+"e:\project\pc-plat\src\store\index.js", "JavaScript", 0, 0, 8, 0, 0, 0, 0, 0, 0, 2, 10
+"e:\project\pc-plat\src\store\options.js", "JavaScript", 0, 0, 36, 0, 0, 0, 0, 0, 10, 1, 47
+"e:\project\pc-plat\src\store\reducer.js", "JavaScript", 0, 0, 79, 0, 0, 0, 0, 0, 8, 5, 92
+"e:\project\pc-plat\src\tabviews\calendar\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 472, 0, 0, 33, 82, 587
+"e:\project\pc-plat\src\tabviews\calendar\index.scss", "SCSS", 0, 0, 0, 0, 40, 0, 0, 0, 0, 5, 45
+"e:\project\pc-plat\src\tabviews\commontable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 1038, 0, 0, 60, 157, 1255
+"e:\project\pc-plat\src\tabviews\commontable\index.scss", "SCSS", 0, 0, 0, 0, 140, 0, 0, 0, 0, 0, 140
+"e:\project\pc-plat\src\tabviews\custom\components\card\balcony\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 291, 0, 0, 9, 65, 365
+"e:\project\pc-plat\src\tabviews\custom\components\card\balcony\index.scss", "SCSS", 0, 0, 0, 0, 69, 0, 0, 0, 0, 8, 77
+"e:\project\pc-plat\src\tabviews\custom\components\card\cardItem\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 148, 0, 0, 6, 33, 187
+"e:\project\pc-plat\src\tabviews\custom\components\card\cardItem\index.scss", "SCSS", 0, 0, 0, 0, 63, 0, 0, 0, 0, 2, 65
+"e:\project\pc-plat\src\tabviews\custom\components\card\cardcellList\asyncButtonComponent.jsx", "JavaScript React", 0, 0, 0, 0, 0, 19, 0, 0, 5, 5, 29
+"e:\project\pc-plat\src\tabviews\custom\components\card\cardcellList\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 709, 0, 0, 11, 95, 815
+"e:\project\pc-plat\src\tabviews\custom\components\card\cardcellList\index.scss", "SCSS", 0, 0, 0, 0, 154, 0, 0, 0, 0, 2, 156
+"e:\project\pc-plat\src\tabviews\custom\components\card\data-card\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 678, 0, 0, 12, 105, 795
+"e:\project\pc-plat\src\tabviews\custom\components\card\data-card\index.scss", "SCSS", 0, 0, 0, 0, 134, 0, 0, 0, 0, 6, 140
+"e:\project\pc-plat\src\tabviews\custom\components\card\prop-card\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 353, 0, 0, 9, 68, 430
+"e:\project\pc-plat\src\tabviews\custom\components\card\prop-card\index.scss", "SCSS", 0, 0, 0, 0, 58, 0, 0, 0, 0, 7, 65
+"e:\project\pc-plat\src\tabviews\custom\components\card\table-card\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 362, 0, 0, 16, 68, 446
+"e:\project\pc-plat\src\tabviews\custom\components\card\table-card\index.scss", "SCSS", 0, 0, 0, 0, 85, 0, 0, 0, 2, 9, 96
+"e:\project\pc-plat\src\tabviews\custom\components\carousel\cardItem\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 75, 0, 0, 6, 21, 102
+"e:\project\pc-plat\src\tabviews\custom\components\carousel\cardItem\index.scss", "SCSS", 0, 0, 0, 0, 57, 0, 0, 0, 0, 1, 58
+"e:\project\pc-plat\src\tabviews\custom\components\carousel\data-card\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 228, 0, 0, 9, 41, 278
+"e:\project\pc-plat\src\tabviews\custom\components\carousel\data-card\index.scss", "SCSS", 0, 0, 0, 0, 45, 0, 0, 0, 0, 6, 51
+"e:\project\pc-plat\src\tabviews\custom\components\carousel\prop-card\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 222, 0, 0, 9, 43, 274
+"e:\project\pc-plat\src\tabviews\custom\components\carousel\prop-card\index.scss", "SCSS", 0, 0, 0, 0, 39, 0, 0, 0, 0, 5, 44
+"e:\project\pc-plat\src\tabviews\custom\components\chart\antv-bar-line\asyncButtonComponent.jsx", "JavaScript React", 0, 0, 0, 0, 0, 23, 0, 0, 5, 6, 34
+"e:\project\pc-plat\src\tabviews\custom\components\chart\antv-bar-line\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 1542, 0, 0, 47, 223, 1812
+"e:\project\pc-plat\src\tabviews\custom\components\chart\antv-bar-line\index.scss", "SCSS", 0, 0, 0, 0, 86, 0, 0, 0, 0, 5, 91
+"e:\project\pc-plat\src\tabviews\custom\components\chart\antv-dashboard\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 573, 0, 0, 13, 76, 662
+"e:\project\pc-plat\src\tabviews\custom\components\chart\antv-dashboard\index.scss", "SCSS", 0, 0, 0, 0, 61, 0, 0, 0, 0, 6, 67
+"e:\project\pc-plat\src\tabviews\custom\components\chart\antv-pie\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 925, 0, 0, 16, 136, 1077
+"e:\project\pc-plat\src\tabviews\custom\components\chart\antv-pie\index.scss", "SCSS", 0, 0, 0, 0, 74, 0, 0, 0, 0, 5, 79
+"e:\project\pc-plat\src\tabviews\custom\components\chart\antv-scatter\asyncButtonComponent.jsx", "JavaScript React", 0, 0, 0, 0, 0, 23, 0, 0, 5, 6, 34
+"e:\project\pc-plat\src\tabviews\custom\components\chart\antv-scatter\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 389, 0, 0, 24, 62, 475
+"e:\project\pc-plat\src\tabviews\custom\components\chart\antv-scatter\index.scss", "SCSS", 0, 0, 0, 0, 86, 0, 0, 0, 0, 7, 93
+"e:\project\pc-plat\src\tabviews\custom\components\chart\custom-chart\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 305, 0, 0, 26, 60, 391
+"e:\project\pc-plat\src\tabviews\custom\components\chart\custom-chart\index.scss", "SCSS", 0, 0, 0, 0, 54, 0, 0, 0, 0, 4, 58
+"e:\project\pc-plat\src\tabviews\custom\components\code\sand-box\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 188, 0, 0, 4, 32, 224
+"e:\project\pc-plat\src\tabviews\custom\components\code\sand-box\index.scss", "SCSS", 0, 0, 0, 0, 31, 0, 0, 0, 0, 4, 35
+"e:\project\pc-plat\src\tabviews\custom\components\editor\braft-editor\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 164, 0, 0, 3, 30, 197
+"e:\project\pc-plat\src\tabviews\custom\components\editor\braft-editor\index.scss", "SCSS", 0, 0, 0, 0, 32, 0, 0, 0, 0, 4, 36
+"e:\project\pc-plat\src\tabviews\custom\components\form\normal-form\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 327, 0, 0, 11, 68, 406
+"e:\project\pc-plat\src\tabviews\custom\components\form\normal-form\index.scss", "SCSS", 0, 0, 0, 0, 103, 0, 0, 0, 0, 7, 110
+"e:\project\pc-plat\src\tabviews\custom\components\form\tab-form\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 284, 0, 0, 11, 56, 351
+"e:\project\pc-plat\src\tabviews\custom\components\form\tab-form\index.scss", "SCSS", 0, 0, 0, 0, 92, 0, 0, 0, 0, 7, 99
+"e:\project\pc-plat\src\tabviews\custom\components\group\normal-group\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 313, 0, 0, 5, 36, 354
+"e:\project\pc-plat\src\tabviews\custom\components\group\normal-group\index.scss", "SCSS", 0, 0, 0, 0, 15, 0, 0, 0, 0, 2, 17
+"e:\project\pc-plat\src\tabviews\custom\components\module\voucher\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 104, 0, 0, 5, 21, 130
+"e:\project\pc-plat\src\tabviews\custom\components\module\voucher\index.scss", "SCSS", 0, 0, 0, 0, 51, 0, 0, 0, 0, 6, 57
+"e:\project\pc-plat\src\tabviews\custom\components\module\voucher\voucherTable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 574, 0, 0, 48, 116, 738
+"e:\project\pc-plat\src\tabviews\custom\components\module\voucher\voucherTable\index.scss", "SCSS", 0, 0, 0, 0, 251, 0, 0, 0, 0, 8, 259
+"e:\project\pc-plat\src\tabviews\custom\components\share\braftContent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 46, 0, 0, 0, 12, 58
+"e:\project\pc-plat\src\tabviews\custom\components\share\braftContent\index.scss", "SCSS", 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 26
+"e:\project\pc-plat\src\tabviews\custom\components\share\normalTable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 760, 0, 0, 13, 150, 923
+"e:\project\pc-plat\src\tabviews\custom\components\share\normalTable\index.scss", "SCSS", 0, 0, 0, 0, 248, 0, 0, 0, 16, 4, 268
+"e:\project\pc-plat\src\tabviews\custom\components\share\normalheader\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 42, 0, 0, 3, 12, 57
+"e:\project\pc-plat\src\tabviews\custom\components\share\normalheader\index.scss", "SCSS", 0, 0, 0, 0, 48, 0, 0, 0, 0, 1, 49
+"e:\project\pc-plat\src\tabviews\custom\components\share\tabtransfer\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 288, 0, 0, 5, 27, 320
+"e:\project\pc-plat\src\tabviews\custom\components\share\tabtransfer\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\tabviews\custom\components\table\edit-table\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 418, 0, 0, 35, 58, 511
+"e:\project\pc-plat\src\tabviews\custom\components\table\edit-table\index.scss", "SCSS", 0, 0, 0, 0, 119, 0, 0, 0, 0, 1, 120
+"e:\project\pc-plat\src\tabviews\custom\components\table\edit-table\normalTable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 901, 0, 0, 17, 160, 1078
+"e:\project\pc-plat\src\tabviews\custom\components\table\edit-table\normalTable\index.scss", "SCSS", 0, 0, 0, 0, 290, 0, 0, 0, 7, 4, 301
+"e:\project\pc-plat\src\tabviews\custom\components\table\normal-table\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 591, 0, 0, 38, 80, 709
+"e:\project\pc-plat\src\tabviews\custom\components\table\normal-table\index.scss", "SCSS", 0, 0, 0, 0, 95, 0, 0, 0, 0, 1, 96
+"e:\project\pc-plat\src\tabviews\custom\components\tabs\antv-tabs\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 109, 0, 0, 3, 24, 136
+"e:\project\pc-plat\src\tabviews\custom\components\tabs\antv-tabs\index.scss", "SCSS", 0, 0, 0, 0, 28, 0, 0, 0, 0, 3, 31
+"e:\project\pc-plat\src\tabviews\custom\components\timeline\normal-timeline\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 266, 0, 0, 20, 47, 333
+"e:\project\pc-plat\src\tabviews\custom\components\timeline\normal-timeline\index.scss", "SCSS", 0, 0, 0, 0, 92, 0, 0, 0, 2, 10, 104
+"e:\project\pc-plat\src\tabviews\custom\components\tree\antd-tree\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 406, 0, 0, 20, 70, 496
+"e:\project\pc-plat\src\tabviews\custom\components\tree\antd-tree\index.scss", "SCSS", 0, 0, 0, 0, 92, 0, 0, 0, 0, 7, 99
+"e:\project\pc-plat\src\tabviews\custom\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 1043, 0, 0, 29, 145, 1217
+"e:\project\pc-plat\src\tabviews\custom\index.scss", "SCSS", 0, 0, 0, 0, 54, 0, 0, 0, 0, 4, 58
+"e:\project\pc-plat\src\tabviews\formtab\actionList\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 289, 0, 0, 32, 46, 367
+"e:\project\pc-plat\src\tabviews\formtab\actionList\index.scss", "SCSS", 0, 0, 0, 0, 19, 0, 0, 0, 0, 1, 20
+"e:\project\pc-plat\src\tabviews\formtab\formgroup\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 639, 0, 0, 4, 82, 725
+"e:\project\pc-plat\src\tabviews\formtab\formgroup\index.scss", "SCSS", 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 47
+"e:\project\pc-plat\src\tabviews\formtab\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 545, 0, 0, 33, 93, 671
+"e:\project\pc-plat\src\tabviews\formtab\index.scss", "SCSS", 0, 0, 0, 0, 111, 0, 0, 0, 0, 2, 113
+"e:\project\pc-plat\src\tabviews\home\defaulthome\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 276, 0, 0, 0, 8, 284
+"e:\project\pc-plat\src\tabviews\home\defaulthome\index.scss", "SCSS", 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 198
+"e:\project\pc-plat\src\tabviews\home\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 87, 0, 0, 0, 12, 99
+"e:\project\pc-plat\src\tabviews\home\index.scss", "SCSS", 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 9
+"e:\project\pc-plat\src\tabviews\iframe\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 37, 0, 0, 3, 10, 50
+"e:\project\pc-plat\src\tabviews\rolemanage\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 805, 0, 0, 60, 113, 978
+"e:\project\pc-plat\src\tabviews\rolemanage\index.scss", "SCSS", 0, 0, 0, 0, 112, 0, 0, 0, 1, 1, 114
+"e:\project\pc-plat\src\tabviews\scriptmanage\actionList\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 245, 0, 0, 32, 35, 312
+"e:\project\pc-plat\src\tabviews\scriptmanage\actionList\index.scss", "SCSS", 0, 0, 0, 0, 17, 0, 0, 0, 0, 1, 18
+"e:\project\pc-plat\src\tabviews\scriptmanage\config.jsx", "JavaScript React", 0, 0, 0, 0, 0, 86, 0, 0, 1, 2, 89
+"e:\project\pc-plat\src\tabviews\scriptmanage\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 272, 0, 0, 34, 43, 349
+"e:\project\pc-plat\src\tabviews\scriptmanage\index.scss", "SCSS", 0, 0, 0, 0, 70, 0, 0, 0, 0, 3, 73
+"e:\project\pc-plat\src\tabviews\subtable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 902, 0, 0, 56, 139, 1097
+"e:\project\pc-plat\src\tabviews\subtable\index.scss", "SCSS", 0, 0, 0, 0, 102, 0, 0, 0, 0, 4, 106
+"e:\project\pc-plat\src\tabviews\subtabtable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 734, 0, 0, 47, 121, 902
+"e:\project\pc-plat\src\tabviews\subtabtable\index.scss", "SCSS", 0, 0, 0, 0, 82, 0, 0, 0, 0, 1, 83
+"e:\project\pc-plat\src\tabviews\tabmanage\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 513, 0, 0, 4, 60, 577
+"e:\project\pc-plat\src\tabviews\tabmanage\index.scss", "SCSS", 0, 0, 0, 0, 56, 0, 0, 0, 0, 3, 59
+"e:\project\pc-plat\src\tabviews\tabmanage\mutilform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 90, 0, 0, 1, 8, 99
+"e:\project\pc-plat\src\tabviews\tabmanage\mutilform\index.scss", "SCSS", 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 47
+"e:\project\pc-plat\src\tabviews\tabmanage\transferform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 35, 0, 0, 0, 9, 44
+"e:\project\pc-plat\src\tabviews\tabmanage\transferform\index.scss", "SCSS", 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6
+"e:\project\pc-plat\src\tabviews\treepage\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 540, 0, 0, 29, 88, 657
+"e:\project\pc-plat\src\tabviews\treepage\index.scss", "SCSS", 0, 0, 0, 0, 171, 0, 0, 0, 0, 8, 179
+"e:\project\pc-plat\src\tabviews\verupmanage\actionList\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 665, 0, 0, 51, 101, 817
+"e:\project\pc-plat\src\tabviews\verupmanage\actionList\index.scss", "SCSS", 0, 0, 0, 0, 17, 0, 0, 0, 0, 1, 18
+"e:\project\pc-plat\src\tabviews\verupmanage\config.jsx", "JavaScript React", 0, 0, 0, 0, 0, 154, 0, 0, 3, 3, 160
+"e:\project\pc-plat\src\tabviews\verupmanage\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 413, 0, 0, 43, 64, 520
+"e:\project\pc-plat\src\tabviews\verupmanage\index.scss", "SCSS", 0, 0, 0, 0, 77, 0, 0, 0, 0, 3, 80
+"e:\project\pc-plat\src\tabviews\verupmanage\subtabtable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 395, 0, 0, 43, 62, 500
+"e:\project\pc-plat\src\tabviews\verupmanage\subtabtable\index.scss", "SCSS", 0, 0, 0, 0, 46, 0, 0, 0, 0, 2, 48
+"e:\project\pc-plat\src\tabviews\zshare\actionList\asyncButtonComponent.jsx", "JavaScript React", 0, 0, 0, 0, 0, 30, 0, 0, 5, 7, 42
+"e:\project\pc-plat\src\tabviews\zshare\actionList\changeuserbutton\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 240, 0, 0, 10, 35, 285
+"e:\project\pc-plat\src\tabviews\zshare\actionList\changeuserbutton\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2
+"e:\project\pc-plat\src\tabviews\zshare\actionList\excelInbutton\excelin\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 97, 0, 0, 5, 18, 120
+"e:\project\pc-plat\src\tabviews\zshare\actionList\excelInbutton\excelin\index.scss", "SCSS", 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 5
+"e:\project\pc-plat\src\tabviews\zshare\actionList\excelInbutton\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 454, 0, 0, 29, 61, 544
+"e:\project\pc-plat\src\tabviews\zshare\actionList\excelInbutton\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\tabviews\zshare\actionList\exceloutbutton\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 807, 0, 0, 47, 136, 990
+"e:\project\pc-plat\src\tabviews\zshare\actionList\exceloutbutton\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\tabviews\zshare\actionList\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 163, 0, 0, 0, 10, 173
+"e:\project\pc-plat\src\tabviews\zshare\actionList\index.scss", "SCSS", 0, 0, 0, 0, 26, 0, 0, 0, 0, 3, 29
+"e:\project\pc-plat\src\tabviews\zshare\actionList\newpagebutton\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 242, 0, 0, 7, 32, 281
+"e:\project\pc-plat\src\tabviews\zshare\actionList\newpagebutton\index.scss", "SCSS", 0, 0, 0, 0, 10, 0, 0, 0, 0, 2, 12
+"e:\project\pc-plat\src\tabviews\zshare\actionList\normalbutton\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 1808, 0, 0, 85, 272, 2165
+"e:\project\pc-plat\src\tabviews\zshare\actionList\normalbutton\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\tabviews\zshare\actionList\popupbutton\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 315, 0, 0, 13, 42, 370
+"e:\project\pc-plat\src\tabviews\zshare\actionList\popupbutton\index.scss", "SCSS", 0, 0, 0, 0, 48, 0, 0, 0, 0, 1, 49
+"e:\project\pc-plat\src\tabviews\zshare\actionList\printbutton\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 1184, 0, 0, 271, 214, 1669
+"e:\project\pc-plat\src\tabviews\zshare\actionList\printbutton\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2
+"e:\project\pc-plat\src\tabviews\zshare\actionList\tabbutton\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 225, 0, 0, 6, 34, 265
+"e:\project\pc-plat\src\tabviews\zshare\actionList\tabbutton\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2
+"e:\project\pc-plat\src\tabviews\zshare\automatic\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 172, 0, 0, 3, 38, 213
+"e:\project\pc-plat\src\tabviews\zshare\automatic\index.scss", "SCSS", 0, 0, 0, 0, 14, 0, 0, 0, 0, 1, 15
+"e:\project\pc-plat\src\tabviews\zshare\calendar\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 350, 0, 0, 0, 48, 398
+"e:\project\pc-plat\src\tabviews\zshare\calendar\index.scss", "SCSS", 0, 0, 0, 0, 206, 0, 0, 0, 1, 2, 209
+"e:\project\pc-plat\src\tabviews\zshare\cardcomponent\asyncButtonComponent.jsx", "JavaScript React", 0, 0, 0, 0, 0, 23, 0, 0, 4, 6, 33
+"e:\project\pc-plat\src\tabviews\zshare\cardcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 698, 0, 0, 27, 101, 826
+"e:\project\pc-plat\src\tabviews\zshare\cardcomponent\index.scss", "SCSS", 0, 0, 0, 0, 302, 0, 0, 0, 0, 23, 325
+"e:\project\pc-plat\src\tabviews\zshare\chartcomponent\asyncButtonComponent.jsx", "JavaScript React", 0, 0, 0, 0, 0, 23, 0, 0, 5, 6, 34
+"e:\project\pc-plat\src\tabviews\zshare\chartcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 933, 0, 0, 41, 141, 1115
+"e:\project\pc-plat\src\tabviews\zshare\chartcomponent\index.scss", "SCSS", 0, 0, 0, 0, 108, 0, 0, 0, 0, 7, 115
+"e:\project\pc-plat\src\tabviews\zshare\fileupload\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 393, 0, 0, 4, 72, 469
+"e:\project\pc-plat\src\tabviews\zshare\fileupload\index.scss", "SCSS", 0, 0, 0, 0, 52, 0, 0, 0, 0, 1, 53
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 757, 0, 0, 22, 128, 907
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\index.scss", "SCSS", 0, 0, 0, 0, 129, 0, 0, 0, 0, 1, 130
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkCheckCard\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 183, 0, 0, 0, 35, 218
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkCheckCard\index.scss", "SCSS", 0, 0, 0, 0, 101, 0, 0, 0, 1, 2, 104
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkCheckbox\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 30, 0, 0, 0, 7, 37
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkCheckbox\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkColor\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 50, 0, 0, 0, 10, 60
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkColor\index.scss", "SCSS", 0, 0, 0, 0, 39, 0, 0, 0, 0, 2, 41
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkDatePicker\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 68, 0, 0, 3, 16, 87
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkDatePicker\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkInput\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 68, 0, 0, 3, 18, 89
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkInput\index.scss", "SCSS", 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 11
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkNumberInput\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 61, 0, 0, 1, 16, 78
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkNumberInput\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkRadio\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 120, 0, 0, 0, 26, 146
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkRadio\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkSelect\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 182, 0, 0, 0, 29, 211
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkSelect\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkSwitch\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 33, 0, 0, 0, 8, 41
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkSwitch\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkTextArea\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 75, 0, 0, 0, 17, 92
+"e:\project\pc-plat\src\tabviews\zshare\mutilform\mkTextArea\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\tabviews\zshare\normalTable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 1197, 0, 0, 13, 177, 1387
+"e:\project\pc-plat\src\tabviews\zshare\normalTable\index.scss", "SCSS", 0, 0, 0, 0, 264, 0, 0, 0, 0, 12, 276
+"e:\project\pc-plat\src\tabviews\zshare\pageMessage\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 301, 0, 0, 5, 47, 353
+"e:\project\pc-plat\src\tabviews\zshare\pageMessage\index.scss", "SCSS", 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 35
+"e:\project\pc-plat\src\tabviews\zshare\settingcomponent\editTable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 293, 0, 0, 0, 29, 322
+"e:\project\pc-plat\src\tabviews\zshare\settingcomponent\editTable\index.scss", "SCSS", 0, 0, 0, 0, 64, 0, 0, 0, 0, 3, 67
+"e:\project\pc-plat\src\tabviews\zshare\settingcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 477, 0, 0, 2, 70, 549
+"e:\project\pc-plat\src\tabviews\zshare\settingcomponent\index.scss", "SCSS", 0, 0, 0, 0, 62, 0, 0, 0, 0, 2, 64
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\advanceform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 91, 0, 0, 1, 16, 108
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\advanceform\index.scss", "SCSS", 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 49
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\dategroup\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 125, 0, 0, 0, 14, 139
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\dategroup\index.scss", "SCSS", 0, 0, 0, 0, 95, 0, 0, 0, 0, 4, 99
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\dategroup\quarterpicker\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 135, 0, 0, 0, 16, 151
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\dategroup\quarterpicker\index.scss", "SCSS", 0, 0, 0, 0, 40, 0, 0, 0, 0, 3, 43
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\dategroup\yearpicker\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 105, 0, 0, 0, 15, 120
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\dategroup\yearpicker\index.scss", "SCSS", 0, 0, 0, 0, 46, 0, 0, 0, 0, 4, 50
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 641, 0, 0, 11, 101, 753
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\index.scss", "SCSS", 0, 0, 0, 0, 100, 0, 0, 0, 0, 2, 102
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\mkDatePicker\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 73, 0, 0, 3, 15, 91
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\mkDatePicker\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\mkInput\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 14, 0, 0, 0, 4, 18
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\mkInput\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\mkSelect\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 97, 0, 0, 0, 24, 121
+"e:\project\pc-plat\src\tabviews\zshare\topSearch\mkSelect\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\calendarconfig\calcomponent\calendarform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 151, 0, 0, 2, 4, 157
+"e:\project\pc-plat\src\templates\calendarconfig\calcomponent\calendarform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\calendarconfig\calcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 74, 0, 0, 9, 14, 97
+"e:\project\pc-plat\src\templates\calendarconfig\calcomponent\index.scss", "SCSS", 0, 0, 0, 0, 40, 0, 0, 0, 0, 1, 41
+"e:\project\pc-plat\src\templates\calendarconfig\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 682, 0, 0, 78, 98, 858
+"e:\project\pc-plat\src\templates\calendarconfig\index.scss", "SCSS", 0, 0, 0, 0, 188, 0, 0, 0, 0, 3, 191
+"e:\project\pc-plat\src\templates\calendarconfig\source.jsx", "JavaScript React", 0, 0, 0, 0, 0, 136, 0, 0, 0, 5, 141
+"e:\project\pc-plat\src\templates\calendarconfig\tabcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 95, 0, 0, 9, 15, 119
+"e:\project\pc-plat\src\templates\calendarconfig\tabcomponent\index.scss", "SCSS", 0, 0, 0, 0, 80, 0, 0, 0, 3, 3, 86
+"e:\project\pc-plat\src\templates\calendarconfig\tabcomponent\tabform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 202, 0, 0, 7, 22, 231
+"e:\project\pc-plat\src\templates\calendarconfig\tabcomponent\tabform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\comtableconfig\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 1156, 0, 0, 65, 140, 1361
+"e:\project\pc-plat\src\templates\comtableconfig\index.scss", "SCSS", 0, 0, 0, 0, 205, 0, 0, 0, 0, 5, 210
+"e:\project\pc-plat\src\templates\comtableconfig\menuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 232, 0, 0, 0, 16, 248
+"e:\project\pc-plat\src\templates\comtableconfig\menuform\index.scss", "SCSS", 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 7
+"e:\project\pc-plat\src\templates\comtableconfig\source.jsx", "JavaScript React", 0, 0, 0, 0, 0, 362, 0, 0, 0, 8, 370
+"e:\project\pc-plat\src\templates\formtabconfig\actionform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 409, 0, 0, 1, 33, 443
+"e:\project\pc-plat\src\templates\formtabconfig\actionform\index.scss", "SCSS", 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 33
+"e:\project\pc-plat\src\templates\formtabconfig\dragelement\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 150, 0, 0, 0, 12, 162
+"e:\project\pc-plat\src\templates\formtabconfig\dragelement\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 164, 0, 0, 1, 28, 193
+"e:\project\pc-plat\src\templates\formtabconfig\dragelement\index.scss", "SCSS", 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 15
+"e:\project\pc-plat\src\templates\formtabconfig\dragelement\itemtypes.js", "JavaScript", 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 9
+"e:\project\pc-plat\src\templates\formtabconfig\dragelement\source.jsx", "JavaScript React", 0, 0, 0, 0, 0, 12, 0, 0, 0, 1, 13
+"e:\project\pc-plat\src\templates\formtabconfig\groupform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 111, 0, 0, 3, 16, 130
+"e:\project\pc-plat\src\templates\formtabconfig\groupform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\formtabconfig\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 1847, 0, 0, 66, 211, 2124
+"e:\project\pc-plat\src\templates\formtabconfig\index.scss", "SCSS", 0, 0, 0, 0, 424, 0, 0, 0, 0, 6, 430
+"e:\project\pc-plat\src\templates\formtabconfig\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 330, 0, 0, 1, 26, 357
+"e:\project\pc-plat\src\templates\formtabconfig\settingform\index.scss", "SCSS", 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 10
+"e:\project\pc-plat\src\templates\formtabconfig\source.jsx", "JavaScript React", 0, 0, 0, 0, 0, 182, 0, 0, 0, 7, 189
+"e:\project\pc-plat\src\templates\formtabconfig\transferform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 61, 0, 0, 0, 12, 73
+"e:\project\pc-plat\src\templates\formtabconfig\transferform\index.scss", "SCSS", 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6
+"e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\dragelement\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 47, 0, 0, 0, 5, 52
+"e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\dragelement\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 75, 0, 0, 0, 11, 86
+"e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\dragelement\index.scss", "SCSS", 0, 0, 0, 0, 53, 0, 0, 0, 0, 2, 55
+"e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\dragelement\itemtypes.js", "JavaScript", 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 4
+"e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 378, 0, 0, 7, 26, 411
+"e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\index.scss", "SCSS", 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 79
+"e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\menuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 223, 0, 0, 2, 14, 239
+"e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\menuform\index.scss", "SCSS", 0, 0, 0, 0, 17, 0, 0, 0, 0, 1, 18
+"e:\project\pc-plat\src\templates\menuconfig\editsecmenu\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 439, 0, 0, 2, 22, 463
+"e:\project\pc-plat\src\templates\menuconfig\editsecmenu\index.scss", "SCSS", 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 81
+"e:\project\pc-plat\src\templates\menuconfig\editthdmenu\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 875, 0, 0, 29, 76, 980
+"e:\project\pc-plat\src\templates\menuconfig\editthdmenu\index.scss", "SCSS", 0, 0, 0, 0, 183, 0, 0, 0, 0, 2, 185
+"e:\project\pc-plat\src\templates\menuconfig\editthdmenu\menuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 156, 0, 0, 2, 13, 171
+"e:\project\pc-plat\src\templates\menuconfig\editthdmenu\menuform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\menuconfig\editthdmenu\preview\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 60, 0, 0, 0, 7, 67
+"e:\project\pc-plat\src\templates\menuconfig\editthdmenu\preview\index.scss", "SCSS", 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 30
+"e:\project\pc-plat\src\templates\menuconfig\menuelement\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 56, 0, 0, 0, 6, 62
+"e:\project\pc-plat\src\templates\menuconfig\menuelement\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 58, 0, 0, 0, 7, 65
+"e:\project\pc-plat\src\templates\menuconfig\menuelement\index.scss", "SCSS", 0, 0, 0, 0, 68, 0, 0, 0, 0, 1, 69
+"e:\project\pc-plat\src\templates\menuconfig\menuelement\itemtypes.js", "JavaScript", 0, 0, 3, 0, 0, 0, 0, 0, 0, 1, 4
+"e:\project\pc-plat\src\templates\menuconfig\menuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 137, 0, 0, 2, 10, 149
+"e:\project\pc-plat\src\templates\menuconfig\menuform\index.scss", "SCSS", 0, 0, 0, 0, 17, 0, 0, 0, 0, 1, 18
+"e:\project\pc-plat\src\templates\modalconfig\checkCard\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 72, 0, 0, 0, 11, 83
+"e:\project\pc-plat\src\templates\modalconfig\checkCard\index.scss", "SCSS", 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 35
+"e:\project\pc-plat\src\templates\modalconfig\dragelement\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 156, 0, 0, 0, 13, 169
+"e:\project\pc-plat\src\templates\modalconfig\dragelement\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 110, 0, 0, 1, 25, 136
+"e:\project\pc-plat\src\templates\modalconfig\dragelement\index.scss", "SCSS", 0, 0, 0, 0, 129, 0, 0, 0, 0, 0, 129
+"e:\project\pc-plat\src\templates\modalconfig\dragelement\source.jsx", "JavaScript React", 0, 0, 0, 0, 0, 12, 0, 0, 0, 1, 13
+"e:\project\pc-plat\src\templates\modalconfig\editcard\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 103, 0, 0, 0, 12, 115
+"e:\project\pc-plat\src\templates\modalconfig\editcard\index.scss", "SCSS", 0, 0, 0, 0, 49, 0, 0, 0, 0, 1, 50
+"e:\project\pc-plat\src\templates\modalconfig\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 728, 0, 0, 43, 97, 868
+"e:\project\pc-plat\src\templates\modalconfig\index.scss", "SCSS", 0, 0, 0, 0, 260, 0, 0, 0, 0, 3, 263
+"e:\project\pc-plat\src\templates\modalconfig\menuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 91, 0, 0, 1, 5, 97
+"e:\project\pc-plat\src\templates\modalconfig\menuform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\modalconfig\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 292, 0, 0, 7, 14, 313
+"e:\project\pc-plat\src\templates\modalconfig\settingform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\modalconfig\source.jsx", "JavaScript React", 0, 0, 0, 0, 0, 179, 0, 0, 0, 5, 184
+"e:\project\pc-plat\src\templates\modalconfig\transferform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 61, 0, 0, 0, 12, 73
+"e:\project\pc-plat\src\templates\modalconfig\transferform\index.scss", "SCSS", 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\actionform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 606, 0, 0, 4, 81, 691
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\actionform\index.scss", "SCSS", 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 39
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\dragaction\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 67, 0, 0, 0, 5, 72
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\dragaction\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 143, 0, 0, 1, 28, 172
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\dragaction\index.scss", "SCSS", 0, 0, 0, 0, 6, 0, 0, 0, 0, 1, 7
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 792, 0, 0, 59, 112, 963
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\index.scss", "SCSS", 0, 0, 0, 0, 67, 0, 0, 0, 0, 2, 69
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\columnform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 174, 0, 0, 1, 9, 184
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\columnform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\customscript\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 309, 0, 0, 8, 45, 362
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\customscript\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 836, 0, 0, 8, 79, 923
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\index.scss", "SCSS", 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 80
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\uniqueform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 117, 0, 0, 1, 11, 129
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\uniqueform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelout\columnform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 99, 0, 0, 1, 5, 105
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelout\columnform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelout\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 566, 0, 0, 5, 62, 633
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelout\index.scss", "SCSS", 0, 0, 0, 0, 86, 0, 0, 0, 0, 0, 86
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyprint\editable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 213, 0, 0, 0, 25, 238
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyprint\editable\index.scss", "SCSS", 0, 0, 0, 0, 51, 0, 0, 0, 0, 1, 52
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyprint\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 416, 0, 0, 1, 37, 454
+"e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyprint\index.scss", "SCSS", 0, 0, 0, 0, 68, 0, 0, 0, 0, 0, 68
+"e:\project\pc-plat\src\templates\sharecomponent\cardcomponent\carddetailform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 277, 0, 0, 2, 23, 302
+"e:\project\pc-plat\src\templates\sharecomponent\cardcomponent\carddetailform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\sharecomponent\cardcomponent\dragdetail\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 39, 0, 0, 0, 6, 45
+"e:\project\pc-plat\src\templates\sharecomponent\cardcomponent\dragdetail\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 43, 0, 0, 0, 7, 50
+"e:\project\pc-plat\src\templates\sharecomponent\cardcomponent\dragdetail\index.scss", "SCSS", 0, 0, 0, 0, 63, 0, 0, 0, 0, 3, 66
+"e:\project\pc-plat\src\templates\sharecomponent\cardcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 423, 0, 0, 1, 54, 478
+"e:\project\pc-plat\src\templates\sharecomponent\cardcomponent\index.scss", "SCSS", 0, 0, 0, 0, 205, 0, 0, 0, 0, 14, 219
+"e:\project\pc-plat\src\templates\sharecomponent\chartcomponent\chartcompile\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 490, 0, 0, 0, 54, 544
+"e:\project\pc-plat\src\templates\sharecomponent\chartcomponent\chartcompile\index.scss", "SCSS", 0, 0, 0, 0, 40, 0, 0, 0, 0, 5, 45
+"e:\project\pc-plat\src\templates\sharecomponent\chartcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 530, 0, 0, 0, 99, 629
+"e:\project\pc-plat\src\templates\sharecomponent\chartcomponent\index.scss", "SCSS", 0, 0, 0, 0, 11, 0, 0, 0, 0, 3, 14
+"e:\project\pc-plat\src\templates\sharecomponent\chartgroupcomponent\chartform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 511, 0, 0, 2, 32, 545
+"e:\project\pc-plat\src\templates\sharecomponent\chartgroupcomponent\chartform\index.scss", "SCSS", 0, 0, 0, 0, 19, 0, 0, 0, 0, 1, 20
+"e:\project\pc-plat\src\templates\sharecomponent\chartgroupcomponent\dragchartview\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 48, 0, 0, 0, 9, 57
+"e:\project\pc-plat\src\templates\sharecomponent\chartgroupcomponent\dragchartview\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 63, 0, 0, 0, 12, 75
+"e:\project\pc-plat\src\templates\sharecomponent\chartgroupcomponent\dragchartview\index.scss", "SCSS", 0, 0, 0, 0, 29, 0, 0, 0, 0, 3, 32
+"e:\project\pc-plat\src\templates\sharecomponent\chartgroupcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 228, 0, 0, 27, 42, 297
+"e:\project\pc-plat\src\templates\sharecomponent\chartgroupcomponent\index.scss", "SCSS", 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 27
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\colspanform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 196, 0, 0, 2, 13, 211
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\colspanform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\columnform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 334, 0, 0, 4, 28, 366
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\columnform\index.scss", "SCSS", 0, 0, 0, 0, 17, 0, 0, 0, 0, 2, 19
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\dragcolumn\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 60, 0, 0, 0, 5, 65
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\dragcolumn\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 168, 0, 0, 2, 23, 193
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\dragcolumn\index.scss", "SCSS", 0, 0, 0, 0, 6, 0, 0, 0, 0, 1, 7
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\gridbtnform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 194, 0, 0, 2, 8, 204
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\gridbtnform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 492, 0, 0, 37, 71, 600
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\index.scss", "SCSS", 0, 0, 0, 0, 95, 0, 0, 0, 1, 2, 98
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\markcolumn\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 216, 0, 0, 0, 26, 242
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\markcolumn\index.scss", "SCSS", 0, 0, 0, 0, 55, 0, 0, 0, 0, 4, 59
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\markcolumn\markform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 328, 0, 0, 16, 27, 371
+"e:\project\pc-plat\src\templates\sharecomponent\columncomponent\markcolumn\markform\index.scss", "SCSS", 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 7
+"e:\project\pc-plat\src\templates\sharecomponent\fieldscomponent\editcard\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 159, 0, 0, 0, 25, 184
+"e:\project\pc-plat\src\templates\sharecomponent\fieldscomponent\editcard\index.scss", "SCSS", 0, 0, 0, 0, 55, 0, 0, 0, 0, 1, 56
+"e:\project\pc-plat\src\templates\sharecomponent\fieldscomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 250, 0, 0, 10, 29, 289
+"e:\project\pc-plat\src\templates\sharecomponent\fieldscomponent\index.scss", "SCSS", 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 30
+"e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\dategroup\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 27, 0, 0, 0, 5, 32
+"e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\dategroup\index.scss", "SCSS", 0, 0, 0, 0, 36, 0, 0, 0, 0, 2, 38
+"e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\dragsearch\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 114, 0, 0, 0, 9, 123
+"e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\dragsearch\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 139, 0, 0, 0, 26, 165
+"e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\dragsearch\index.scss", "SCSS", 0, 0, 0, 0, 6, 0, 0, 0, 0, 1, 7
+"e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 291, 0, 0, 39, 52, 382
+"e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\index.scss", "SCSS", 0, 0, 0, 0, 84, 0, 0, 0, 0, 1, 85
+"e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\searcheditable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 283, 0, 0, 0, 25, 308
+"e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\searcheditable\index.scss", "SCSS", 0, 0, 0, 0, 43, 0, 0, 0, 0, 1, 44
+"e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\searchform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 650, 0, 0, 2, 68, 720
+"e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\searchform\index.scss", "SCSS", 0, 0, 0, 0, 36, 0, 0, 0, 1, 1, 38
+"e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 86, 0, 0, 0, 13, 99
+"e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\index.scss", "SCSS", 0, 0, 0, 0, 79, 0, 0, 0, 0, 8, 87
+"e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\verifycard\columnform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 133, 0, 0, 1, 11, 145
+"e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\verifycard\columnform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\verifycard\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 358, 0, 0, 6, 43, 407
+"e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\verifycard\index.scss", "SCSS", 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 80
+"e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\verifycard\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 295, 0, 0, 16, 24, 335
+"e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\verifycard\settingform\index.scss", "SCSS", 0, 0, 0, 0, 19, 0, 0, 0, 0, 1, 20
+"e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\verifycard\utils.jsx", "JavaScript React", 0, 0, 0, 0, 0, 114, 0, 0, 11, 19, 144
+"e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 162, 0, 0, 15, 29, 206
+"e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\index.scss", "SCSS", 0, 0, 0, 0, 39, 0, 0, 0, 0, 1, 40
+"e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\settingform\datasource\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 801, 0, 0, 3, 26, 830
+"e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\settingform\datasource\index.scss", "SCSS", 0, 0, 0, 0, 20, 0, 0, 0, 0, 2, 22
+"e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 486, 0, 0, 12, 50, 548
+"e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\settingform\index.scss", "SCSS", 0, 0, 0, 0, 60, 0, 0, 0, 0, 1, 61
+"e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\settingform\simplescript\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 440, 0, 0, 0, 53, 493
+"e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\settingform\simplescript\index.scss", "SCSS", 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 45
+"e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\settingform\utils.jsx", "JavaScript React", 0, 0, 0, 0, 0, 171, 0, 0, 18, 28, 217
+"e:\project\pc-plat\src\templates\sharecomponent\tablecomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 268, 0, 0, 15, 35, 318
+"e:\project\pc-plat\src\templates\sharecomponent\tablecomponent\index.scss", "SCSS", 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 7
+"e:\project\pc-plat\src\templates\sharecomponent\tabscomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 350, 0, 0, 35, 54, 439
+"e:\project\pc-plat\src\templates\sharecomponent\tabscomponent\index.scss", "SCSS", 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 81
+"e:\project\pc-plat\src\templates\sharecomponent\tabscomponent\tabdragelement\card.jsx", "JavaScript React", 0, 0, 0, 0, 0, 54, 0, 0, 0, 9, 63
+"e:\project\pc-plat\src\templates\sharecomponent\tabscomponent\tabdragelement\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 94, 0, 0, 0, 18, 112
+"e:\project\pc-plat\src\templates\sharecomponent\tabscomponent\tabdragelement\index.scss", "SCSS", 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 12
+"e:\project\pc-plat\src\templates\sharecomponent\tabscomponent\tabform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 302, 0, 0, 9, 29, 340
+"e:\project\pc-plat\src\templates\sharecomponent\tabscomponent\tabform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\sharecomponent\treesettingcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 92, 0, 0, 9, 13, 114
+"e:\project\pc-plat\src\templates\sharecomponent\treesettingcomponent\index.scss", "SCSS", 0, 0, 0, 0, 39, 0, 0, 0, 0, 1, 40
+"e:\project\pc-plat\src\templates\sharecomponent\treesettingcomponent\settingform\datasource\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 478, 0, 0, 3, 26, 507
+"e:\project\pc-plat\src\templates\sharecomponent\treesettingcomponent\settingform\datasource\index.scss", "SCSS", 0, 0, 0, 0, 16, 0, 0, 0, 0, 1, 17
+"e:\project\pc-plat\src\templates\sharecomponent\treesettingcomponent\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 254, 0, 0, 2, 30, 286
+"e:\project\pc-plat\src\templates\sharecomponent\treesettingcomponent\settingform\index.scss", "SCSS", 0, 0, 0, 0, 52, 0, 0, 0, 0, 1, 53
+"e:\project\pc-plat\src\templates\sharecomponent\treesettingcomponent\settingform\utils.jsx", "JavaScript React", 0, 0, 0, 0, 0, 64, 0, 0, 8, 13, 85
+"e:\project\pc-plat\src\templates\subtableconfig\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 1019, 0, 0, 55, 123, 1197
+"e:\project\pc-plat\src\templates\subtableconfig\index.scss", "SCSS", 0, 0, 0, 0, 199, 0, 0, 0, 0, 5, 204
+"e:\project\pc-plat\src\templates\subtableconfig\menuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 106, 0, 0, 0, 10, 116
+"e:\project\pc-plat\src\templates\subtableconfig\menuform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\subtableconfig\source.jsx", "JavaScript React", 0, 0, 0, 0, 0, 333, 0, 0, 0, 7, 340
+"e:\project\pc-plat\src\templates\treepageconfig\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 690, 0, 0, 52, 85, 827
+"e:\project\pc-plat\src\templates\treepageconfig\index.scss", "SCSS", 0, 0, 0, 0, 252, 0, 0, 0, 0, 6, 258
+"e:\project\pc-plat\src\templates\treepageconfig\source.jsx", "JavaScript React", 0, 0, 0, 0, 0, 53, 0, 0, 0, 5, 58
+"e:\project\pc-plat\src\templates\zshare\basetransferform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 37, 0, 0, 0, 9, 46
+"e:\project\pc-plat\src\templates\zshare\basetransferform\index.scss", "SCSS", 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6
+"e:\project\pc-plat\src\templates\zshare\codemirror\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 151, 0, 0, 1, 19, 171
+"e:\project\pc-plat\src\templates\zshare\codemirror\index.scss", "SCSS", 0, 0, 0, 0, 77, 0, 0, 0, 1, 1, 79
+"e:\project\pc-plat\src\templates\zshare\createfunc\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 179, 0, 0, 11, 24, 214
+"e:\project\pc-plat\src\templates\zshare\createfunc\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\zshare\createinterface\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 933, 0, 0, 49, 157, 1139
+"e:\project\pc-plat\src\templates\zshare\createinterface\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\zshare\createinterface\mutilform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 132, 0, 0, 2, 11, 145
+"e:\project\pc-plat\src\templates\zshare\createinterface\mutilform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\zshare\customscript\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 378, 0, 0, 0, 50, 428
+"e:\project\pc-plat\src\templates\zshare\customscript\index.scss", "SCSS", 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 45
+"e:\project\pc-plat\src\templates\zshare\dragsource\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 12, 0, 0, 0, 1, 13
+"e:\project\pc-plat\src\templates\zshare\dragsource\index.scss", "SCSS", 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 9
+"e:\project\pc-plat\src\templates\zshare\editTable\cusSwitch\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 44, 0, 0, 1, 9, 54
+"e:\project\pc-plat\src\templates\zshare\editTable\cusSwitch\index.scss", "SCSS", 0, 0, 0, 0, 38, 0, 0, 0, 0, 2, 40
+"e:\project\pc-plat\src\templates\zshare\editTable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 551, 0, 0, 0, 85, 636
+"e:\project\pc-plat\src\templates\zshare\editTable\index.scss", "SCSS", 0, 0, 0, 0, 107, 0, 0, 0, 0, 4, 111
+"e:\project\pc-plat\src\templates\zshare\editcard\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 142, 0, 0, 0, 17, 159
+"e:\project\pc-plat\src\templates\zshare\editcard\index.scss", "SCSS", 0, 0, 0, 0, 49, 0, 0, 0, 0, 1, 50
+"e:\project\pc-plat\src\templates\zshare\editcomponent\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 206, 0, 0, 6, 25, 237
+"e:\project\pc-plat\src\templates\zshare\editcomponent\index.scss", "SCSS", 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 5
+"e:\project\pc-plat\src\templates\zshare\formconfig.jsx", "JavaScript React", 0, 0, 0, 0, 0, 3511, 0, 0, 132, 39, 3682
+"e:\project\pc-plat\src\templates\zshare\menuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 122, 0, 0, 1, 10, 133
+"e:\project\pc-plat\src\templates\zshare\menuform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\zshare\modalform\datatable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 395, 0, 0, 1, 55, 451
+"e:\project\pc-plat\src\templates\zshare\modalform\datatable\index.scss", "SCSS", 0, 0, 0, 0, 76, 0, 0, 0, 0, 1, 77
+"e:\project\pc-plat\src\templates\zshare\modalform\fieldtable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 115, 0, 0, 0, 16, 131
+"e:\project\pc-plat\src\templates\zshare\modalform\fieldtable\index.scss", "SCSS", 0, 0, 0, 0, 14, 0, 0, 0, 0, 1, 15
+"e:\project\pc-plat\src\templates\zshare\modalform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 660, 0, 0, 5, 83, 748
+"e:\project\pc-plat\src\templates\zshare\modalform\index.scss", "SCSS", 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 37
+"e:\project\pc-plat\src\templates\zshare\modalform\modaleditable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 425, 0, 0, 0, 56, 481
+"e:\project\pc-plat\src\templates\zshare\modalform\modaleditable\index.scss", "SCSS", 0, 0, 0, 0, 56, 0, 0, 0, 0, 1, 57
+"e:\project\pc-plat\src\templates\zshare\pasteform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 84, 0, 0, 1, 9, 94
+"e:\project\pc-plat\src\templates\zshare\pasteform\index.scss", "SCSS", 0, 0, 0, 0, 6, 0, 0, 0, 0, 1, 7
+"e:\project\pc-plat\src\templates\zshare\transferform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 105, 0, 0, 0, 22, 127
+"e:\project\pc-plat\src\templates\zshare\transferform\index.scss", "SCSS", 0, 0, 0, 0, 36, 0, 0, 0, 0, 2, 38
+"e:\project\pc-plat\src\templates\zshare\unattended\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 66, 0, 0, 0, 12, 78
+"e:\project\pc-plat\src\templates\zshare\unattended\index.scss", "SCSS", 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8
+"e:\project\pc-plat\src\templates\zshare\unattended\settingform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 163, 0, 0, 2, 8, 173
+"e:\project\pc-plat\src\templates\zshare\unattended\settingform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\zshare\verifycard\billcodeform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 347, 0, 0, 5, 29, 381
+"e:\project\pc-plat\src\templates\zshare\verifycard\billcodeform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\zshare\verifycard\callbackcustomscript\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 259, 0, 0, 8, 34, 301
+"e:\project\pc-plat\src\templates\zshare\verifycard\callbackcustomscript\index.scss", "SCSS", 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 5
+"e:\project\pc-plat\src\templates\zshare\verifycard\contrastform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 134, 0, 0, 1, 5, 140
+"e:\project\pc-plat\src\templates\zshare\verifycard\contrastform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\zshare\verifycard\customform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 232, 0, 0, 3, 23, 258
+"e:\project\pc-plat\src\templates\zshare\verifycard\customform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\zshare\verifycard\customscript\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 287, 0, 0, 10, 36, 333
+"e:\project\pc-plat\src\templates\zshare\verifycard\customscript\index.scss", "SCSS", 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 5
+"e:\project\pc-plat\src\templates\zshare\verifycard\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 1730, 0, 0, 6, 134, 1870
+"e:\project\pc-plat\src\templates\zshare\verifycard\index.scss", "SCSS", 0, 0, 0, 0, 204, 0, 0, 0, 0, 8, 212
+"e:\project\pc-plat\src\templates\zshare\verifycard\uniqueform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 117, 0, 0, 1, 9, 127
+"e:\project\pc-plat\src\templates\zshare\verifycard\uniqueform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\templates\zshare\verifycard\voucherform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 243, 0, 0, 1, 25, 269
+"e:\project\pc-plat\src\templates\zshare\verifycard\voucherform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\utils\asyncComponent.jsx", "JavaScript React", 0, 0, 0, 0, 0, 19, 0, 0, 4, 6, 29
+"e:\project\pc-plat\src\utils\asyncIconComponent.jsx", "JavaScript React", 0, 0, 0, 0, 0, 20, 0, 0, 4, 6, 30
+"e:\project\pc-plat\src\utils\asyncLoadComponent.jsx", "JavaScript React", 0, 0, 0, 0, 0, 22, 0, 0, 4, 6, 32
+"e:\project\pc-plat\src\utils\asyncSpinComponent.jsx", "JavaScript React", 0, 0, 0, 0, 0, 22, 0, 0, 4, 6, 32
+"e:\project\pc-plat\src\utils\events.js", "JavaScript", 0, 0, 4, 0, 0, 0, 0, 0, 0, 2, 6
+"e:\project\pc-plat\src\utils\option.js", "JavaScript", 0, 0, 903, 0, 0, 0, 0, 0, 9, 15, 927
+"e:\project\pc-plat\src\utils\utils-custom.js", "JavaScript", 0, 0, 687, 0, 0, 0, 0, 0, 43, 89, 819
+"e:\project\pc-plat\src\utils\utils-datamanage.js", "JavaScript", 0, 0, 582, 0, 0, 0, 0, 0, 76, 114, 772
+"e:\project\pc-plat\src\utils\utils-update.js", "JavaScript", 0, 0, 205, 0, 0, 0, 0, 0, 29, 27, 261
+"e:\project\pc-plat\src\utils\utils.js", "JavaScript", 0, 0, 1997, 0, 0, 0, 0, 0, 252, 366, 2615
+"e:\project\pc-plat\src\views\404\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 31
+"e:\project\pc-plat\src\views\404\index.scss", "SCSS", 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 10
+"e:\project\pc-plat\src\views\appcheck\header\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 31
+"e:\project\pc-plat\src\views\appcheck\header\index.scss", "SCSS", 0, 0, 0, 0, 55, 0, 0, 0, 0, 2, 57
+"e:\project\pc-plat\src\views\appcheck\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 231, 0, 0, 6, 24, 261
+"e:\project\pc-plat\src\views\appcheck\index.scss", "SCSS", 0, 0, 0, 0, 94, 0, 0, 0, 0, 7, 101
+"e:\project\pc-plat\src\views\appmanage\header\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 27, 0, 0, 0, 4, 31
+"e:\project\pc-plat\src\views\appmanage\header\index.scss", "SCSS", 0, 0, 0, 0, 55, 0, 0, 0, 0, 2, 57
+"e:\project\pc-plat\src\views\appmanage\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 1089, 0, 0, 9, 113, 1211
+"e:\project\pc-plat\src\views\appmanage\index.scss", "SCSS", 0, 0, 0, 0, 119, 0, 0, 0, 0, 7, 126
+"e:\project\pc-plat\src\views\appmanage\mutilform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 76, 0, 0, 7, 6, 89
+"e:\project\pc-plat\src\views\appmanage\mutilform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\views\appmanage\scriptform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 216, 0, 0, 6, 30, 252
+"e:\project\pc-plat\src\views\appmanage\scriptform\index.scss", "SCSS", 0, 0, 0, 0, 11, 0, 0, 0, 0, 1, 12
+"e:\project\pc-plat\src\views\appmanage\submutilform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 231, 0, 0, 69, 14, 314
+"e:\project\pc-plat\src\views\appmanage\submutilform\index.scss", "SCSS", 0, 0, 0, 0, 22, 0, 0, 0, 0, 1, 23
+"e:\project\pc-plat\src\views\appmanage\transform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 76, 0, 0, 7, 6, 89
+"e:\project\pc-plat\src\views\appmanage\transform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\views\billprint\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 556, 0, 0, 16, 95, 667
+"e:\project\pc-plat\src\views\billprint\index.scss", "SCSS", 0, 0, 0, 0, 52, 0, 0, 0, 0, 4, 56
+"e:\project\pc-plat\src\views\design\header\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 361, 0, 0, 14, 49, 424
+"e:\project\pc-plat\src\views\design\header\index.scss", "SCSS", 0, 0, 0, 0, 205, 0, 0, 0, 0, 6, 211
+"e:\project\pc-plat\src\views\design\header\versions\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 389, 0, 0, 0, 59, 448
+"e:\project\pc-plat\src\views\design\header\versions\index.scss", "SCSS", 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 31
+"e:\project\pc-plat\src\views\design\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 28, 0, 0, 0, 6, 34
+"e:\project\pc-plat\src\views\design\index.scss", "SCSS", 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 19
+"e:\project\pc-plat\src\views\design\sidemenu\config.jsx", "JavaScript React", 0, 0, 0, 0, 0, 229, 0, 0, 22, 1, 252
+"e:\project\pc-plat\src\views\design\sidemenu\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 268, 0, 0, 4, 37, 309
+"e:\project\pc-plat\src\views\design\sidemenu\index.scss", "SCSS", 0, 0, 0, 0, 118, 0, 0, 0, 0, 1, 119
+"e:\project\pc-plat\src\views\imdesign\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 496, 0, 0, 7, 65, 568
+"e:\project\pc-plat\src\views\imdesign\index.scss", "SCSS", 0, 0, 0, 0, 330, 0, 0, 0, 0, 21, 351
+"e:\project\pc-plat\src\views\imdesign\menuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 67, 0, 0, 2, 8, 77
+"e:\project\pc-plat\src\views\imdesign\menuform\index.scss", "SCSS", 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 25
+"e:\project\pc-plat\src\views\imdesign\options.jsx", "JavaScript React", 0, 0, 0, 0, 0, 23, 0, 0, 3, 3, 29
+"e:\project\pc-plat\src\views\interface\api\index.js", "JavaScript", 0, 0, 142, 0, 0, 0, 0, 0, 11, 22, 175
+"e:\project\pc-plat\src\views\interface\header\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 38, 0, 0, 0, 7, 45
+"e:\project\pc-plat\src\views\interface\header\index.scss", "SCSS", 0, 0, 0, 0, 59, 0, 0, 0, 0, 5, 64
+"e:\project\pc-plat\src\views\interface\history\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 251, 0, 0, 3, 37, 291
+"e:\project\pc-plat\src\views\interface\history\index.scss", "SCSS", 0, 0, 0, 0, 111, 0, 0, 0, 0, 2, 113
+"e:\project\pc-plat\src\views\interface\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 23, 0, 0, 0, 5, 28
+"e:\project\pc-plat\src\views\interface\index.scss", "SCSS", 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6
+"e:\project\pc-plat\src\views\interface\workspace\editTable\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 219, 0, 0, 0, 31, 250
+"e:\project\pc-plat\src\views\interface\workspace\editTable\index.scss", "SCSS", 0, 0, 0, 0, 85, 0, 0, 0, 0, 1, 86
+"e:\project\pc-plat\src\views\interface\workspace\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 107, 0, 0, 3, 14, 124
+"e:\project\pc-plat\src\views\interface\workspace\index.scss", "SCSS", 0, 0, 0, 0, 51, 0, 0, 0, 0, 1, 52
+"e:\project\pc-plat\src\views\interface\workspace\request\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 254, 0, 0, 3, 53, 310
+"e:\project\pc-plat\src\views\interface\workspace\request\index.scss", "SCSS", 0, 0, 0, 0, 159, 0, 0, 0, 0, 3, 162
+"e:\project\pc-plat\src\views\login\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 742, 0, 0, 37, 109, 888
+"e:\project\pc-plat\src\views\login\index.scss", "SCSS", 0, 0, 0, 0, 293, 0, 0, 0, 1, 7, 301
+"e:\project\pc-plat\src\views\login\logincloudform.jsx", "JavaScript React", 0, 0, 0, 0, 0, 79, 0, 0, 1, 8, 88
+"e:\project\pc-plat\src\views\login\loginform.jsx", "JavaScript React", 0, 0, 0, 0, 0, 455, 0, 0, 5, 47, 507
+"e:\project\pc-plat\src\views\main\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 35, 0, 0, 0, 7, 42
+"e:\project\pc-plat\src\views\main\index.scss", "SCSS", 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 5
+"e:\project\pc-plat\src\views\menudesign\homeform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 161, 0, 0, 2, 18, 181
+"e:\project\pc-plat\src\views\menudesign\homeform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\views\menudesign\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 998, 0, 0, 4, 110, 1112
+"e:\project\pc-plat\src\views\menudesign\index.scss", "SCSS", 0, 0, 0, 0, 178, 0, 0, 0, 0, 5, 183
+"e:\project\pc-plat\src\views\menudesign\menuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 355, 0, 0, 5, 26, 386
+"e:\project\pc-plat\src\views\menudesign\menuform\index.scss", "SCSS", 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8
+"e:\project\pc-plat\src\views\menudesign\printmenuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 236, 0, 0, 1, 20, 257
+"e:\project\pc-plat\src\views\menudesign\printmenuform\index.scss", "SCSS", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
+"e:\project\pc-plat\src\views\mobdesign\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 1566, 0, 0, 4, 206, 1776
+"e:\project\pc-plat\src\views\mobdesign\index.scss", "SCSS", 0, 0, 0, 0, 274, 0, 0, 0, 1, 16, 291
+"e:\project\pc-plat\src\views\mobdesign\menuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 239, 0, 0, 3, 13, 255
+"e:\project\pc-plat\src\views\mobdesign\menuform\index.scss", "SCSS", 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 25
+"e:\project\pc-plat\src\views\pay\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 258, 0, 0, 11, 30, 299
+"e:\project\pc-plat\src\views\pay\index.scss", "SCSS", 0, 0, 0, 0, 146, 0, 0, 0, 3, 8, 157
+"e:\project\pc-plat\src\views\pcdesign\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 1615, 0, 0, 4, 202, 1821
+"e:\project\pc-plat\src\views\pcdesign\index.scss", "SCSS", 0, 0, 0, 0, 227, 0, 0, 0, 0, 11, 238
+"e:\project\pc-plat\src\views\pcdesign\menuform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 176, 0, 0, 3, 13, 192
+"e:\project\pc-plat\src\views\pcdesign\menuform\index.scss", "SCSS", 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 8
+"e:\project\pc-plat\src\views\printTemplate\dragelement\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 17, 0, 0, 0, 4, 21
+"e:\project\pc-plat\src\views\printTemplate\dragelement\index.scss", "SCSS", 0, 0, 0, 0, 22, 0, 0, 0, 0, 4, 26
+"e:\project\pc-plat\src\views\printTemplate\dragelement\source.jsx", "JavaScript React", 0, 0, 0, 0, 0, 14, 0, 0, 0, 2, 16
+"e:\project\pc-plat\src\views\printTemplate\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 824, 0, 0, 9, 119, 952
+"e:\project\pc-plat\src\views\printTemplate\index.scss", "SCSS", 0, 0, 0, 0, 122, 0, 0, 0, 0, 2, 124
+"e:\project\pc-plat\src\views\printTemplate\mutilform\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 290, 0, 0, 1, 32, 323
+"e:\project\pc-plat\src\views\printTemplate\mutilform\index.scss", "SCSS", 0, 0, 0, 0, 49, 0, 0, 0, 8, 0, 57
+"e:\project\pc-plat\src\views\printTemplate\option.js", "JavaScript", 0, 0, 909, 0, 0, 0, 0, 0, 2, 11, 922
+"e:\project\pc-plat\src\views\printTemplate\print.js", "JavaScript", 0, 0, 394, 0, 0, 0, 0, 0, 19, 42, 455
+"e:\project\pc-plat\src\views\rolemanage\header\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 28, 0, 0, 0, 4, 32
+"e:\project\pc-plat\src\views\rolemanage\header\index.scss", "SCSS", 0, 0, 0, 0, 56, 0, 0, 0, 0, 2, 58
+"e:\project\pc-plat\src\views\rolemanage\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 814, 0, 0, 4, 109, 927
+"e:\project\pc-plat\src\views\rolemanage\index.scss", "SCSS", 0, 0, 0, 0, 86, 0, 0, 0, 0, 5, 91
+"e:\project\pc-plat\src\views\sso\index.jsx", "JavaScript React", 0, 0, 0, 0, 0, 131, 0, 0, 2, 21, 154
+"e:\project\pc-plat\src\views\sso\index.scss", "SCSS", 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 7
+"Total", "-", 39, 61, 8931, 21640, 25331, 139339, 76, 70, 5743, 20061, 221291
\ No newline at end of file
diff --git a/.VSCodeCounter/2022-03-01_15-52-00/results.md b/.VSCodeCounter/2022-03-01_15-52-00/results.md
new file mode 100644
index 0000000..503a9e3
--- /dev/null
+++ b/.VSCodeCounter/2022-03-01_15-52-00/results.md
@@ -0,0 +1,511 @@
+# Summary
+
+Date : 2022-03-01 15:52:00
+
+Directory e:\project\pc-plat
+
+Total : 992 files,  195487 codes, 5743 comments, 20061 blanks, all 221291 lines
+
+[details](details.md)
+
+## Languages
+| language | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+| JavaScript React | 521 | 139,339 | 4,452 | 17,782 | 161,573 |
+| SCSS | 416 | 25,331 | 161 | 1,119 | 26,611 |
+| JSON | 4 | 21,640 | 0 | 3 | 21,643 |
+| JavaScript | 43 | 8,931 | 1,121 | 1,050 | 11,102 |
+| CSS | 2 | 76 | 5 | 27 | 108 |
+| XML | 3 | 70 | 3 | 44 | 117 |
+| HTML | 2 | 61 | 1 | 2 | 64 |
+| Markdown | 1 | 39 | 0 | 34 | 73 |
+
+## Directories
+| path | files | code | comment | blank | total |
+| :--- | ---: | ---: | ---: | ---: | ---: |
+| . | 992 | 195,487 | 5,743 | 20,061 | 221,291 |
+| config | 8 | 711 | 341 | 80 | 1,132 |
+| config\jest | 2 | 40 | 7 | 9 | 56 |
+| public | 4 | 87 | 1 | 3 | 91 |
+| scripts | 3 | 300 | 51 | 44 | 395 |
+| src | 974 | 172,736 | 5,350 | 19,898 | 197,984 |
+| src\api | 2 | 959 | 172 | 149 | 1,280 |
+| src\assets | 10 | 2,122 | 101 | 160 | 2,383 |
+| src\assets\css | 6 | 2,051 | 98 | 116 | 2,265 |
+| src\assets\font | 3 | 57 | 3 | 43 | 103 |
+| src\assets\mobimg | 1 | 14 | 0 | 1 | 15 |
+| src\components | 57 | 6,574 | 67 | 788 | 7,429 |
+| src\components\404 | 2 | 32 | 0 | 3 | 35 |
+| src\components\Image | 2 | 58 | 0 | 12 | 70 |
+| src\components\barcode | 2 | 68 | 0 | 13 | 81 |
+| src\components\breadview | 2 | 222 | 5 | 27 | 254 |
+| src\components\editor | 2 | 242 | 1 | 35 | 278 |
+| src\components\header | 4 | 1,258 | 18 | 124 | 1,400 |
+| src\components\header\resetpwd | 1 | 140 | 2 | 16 | 158 |
+| src\components\imgScale | 2 | 450 | 0 | 60 | 510 |
+| src\components\loading | 1 | 10 | 0 | 2 | 12 |
+| src\components\lostsvg | 1 | 72 | 0 | 2 | 74 |
+| src\components\mk-icon | 2 | 465 | 0 | 10 | 475 |
+| src\components\mkIcon | 2 | 138 | 1 | 15 | 154 |
+| src\components\mkProgress | 2 | 32 | 1 | 11 | 44 |
+| src\components\mutilform | 2 | 213 | 2 | 14 | 229 |
+| src\components\normalform | 18 | 1,318 | 9 | 263 | 1,590 |
+| src\components\normalform\modalform | 16 | 1,238 | 9 | 250 | 1,497 |
+| src\components\normalform\modalform\mkCheckbox | 2 | 36 | 0 | 9 | 45 |
+| src\components\normalform\modalform\mkInput | 2 | 50 | 4 | 18 | 72 |
+| src\components\normalform\modalform\mkNumberInput | 2 | 46 | 1 | 16 | 63 |
+| src\components\normalform\modalform\mkRadio | 2 | 74 | 0 | 20 | 94 |
+| src\components\normalform\modalform\mkSelect | 2 | 114 | 0 | 26 | 140 |
+| src\components\normalform\modalform\mkTable | 2 | 478 | 3 | 68 | 549 |
+| src\components\normalform\modalform\styleInput | 2 | 125 | 0 | 31 | 156 |
+| src\components\paste | 2 | 63 | 0 | 10 | 73 |
+| src\components\qrcode | 2 | 57 | 0 | 9 | 66 |
+| src\components\querylog | 1 | 62 | 6 | 15 | 83 |
+| src\components\sidemenu | 2 | 228 | 10 | 23 | 261 |
+| src\components\simpleform | 2 | 202 | 2 | 12 | 216 |
+| src\components\tabview | 2 | 388 | 7 | 34 | 429 |
+| src\components\video | 2 | 996 | 5 | 94 | 1,095 |
+| src\locales | 8 | 536 | 0 | 0 | 536 |
+| src\locales\en-US | 4 | 268 | 0 | 0 | 268 |
+| src\locales\zh-CN | 4 | 268 | 0 | 0 | 268 |
+| src\menu | 257 | 39,910 | 957 | 4,581 | 45,448 |
+| src\menu\bgcontroller | 2 | 161 | 3 | 25 | 189 |
+| src\menu\components | 188 | 30,299 | 760 | 3,537 | 34,596 |
+| src\menu\components\card | 33 | 5,983 | 182 | 765 | 6,930 |
+| src\menu\components\card\balcony | 3 | 480 | 12 | 54 | 546 |
+| src\menu\components\card\cardcellcomponent | 11 | 2,180 | 83 | 223 | 2,486 |
+| src\menu\components\card\cardcellcomponent\dragaction | 6 | 523 | 8 | 64 | 595 |
+| src\menu\components\card\cardcellcomponent\dragaction\mkProgress | 2 | 31 | 1 | 12 | 44 |
+| src\menu\components\card\cardcellcomponent\elementform | 2 | 516 | 9 | 34 | 559 |
+| src\menu\components\card\cardcomponent | 3 | 603 | 12 | 72 | 687 |
+| src\menu\components\card\cardsimplecomponent | 9 | 672 | 18 | 92 | 782 |
+| src\menu\components\card\cardsimplecomponent\node-wrap | 6 | 235 | 3 | 34 | 272 |
+| src\menu\components\card\cardsimplecomponent\node-wrap\menus | 4 | 158 | 3 | 21 | 182 |
+| src\menu\components\card\cardsimplecomponent\node-wrap\menus\columnform | 2 | 85 | 2 | 8 | 95 |
+| src\menu\components\card\data-card | 3 | 1,004 | 31 | 133 | 1,168 |
+| src\menu\components\card\prop-card | 2 | 488 | 12 | 92 | 592 |
+| src\menu\components\card\table-card | 2 | 556 | 14 | 99 | 669 |
+| src\menu\components\carousel | 5 | 832 | 27 | 136 | 995 |
+| src\menu\components\carousel\data-card | 3 | 443 | 15 | 63 | 521 |
+| src\menu\components\carousel\prop-card | 2 | 389 | 12 | 73 | 474 |
+| src\menu\components\chart | 25 | 6,177 | 170 | 615 | 6,962 |
+| src\menu\components\chart\antv-bar | 5 | 2,413 | 76 | 218 | 2,707 |
+| src\menu\components\chart\antv-bar\chartcompile | 3 | 1,153 | 56 | 60 | 1,269 |
+| src\menu\components\chart\antv-dashboard | 5 | 1,101 | 24 | 105 | 1,230 |
+| src\menu\components\chart\antv-dashboard\chartcompile | 3 | 581 | 17 | 40 | 638 |
+| src\menu\components\chart\antv-pie | 5 | 1,327 | 20 | 136 | 1,483 |
+| src\menu\components\chart\antv-pie\chartcompile | 3 | 684 | 14 | 41 | 739 |
+| src\menu\components\chart\antv-scatter | 5 | 861 | 20 | 88 | 969 |
+| src\menu\components\chart\antv-scatter\chartcompile | 3 | 460 | 10 | 27 | 497 |
+| src\menu\components\chart\chart-custom | 5 | 475 | 30 | 68 | 573 |
+| src\menu\components\chart\chart-custom\chartcompile | 3 | 185 | 24 | 21 | 230 |
+| src\menu\components\code | 7 | 450 | 19 | 71 | 540 |
+| src\menu\components\code\sandbox | 7 | 450 | 19 | 71 | 540 |
+| src\menu\components\code\sandbox\codecontent | 2 | 91 | 7 | 16 | 114 |
+| src\menu\components\code\sandbox\editorcode | 2 | 113 | 0 | 18 | 131 |
+| src\menu\components\editor | 5 | 374 | 9 | 52 | 435 |
+| src\menu\components\editor\braft-editor | 5 | 374 | 9 | 52 | 435 |
+| src\menu\components\editor\braft-editor\editorcontent | 2 | 85 | 0 | 15 | 100 |
+| src\menu\components\form | 14 | 2,729 | 73 | 318 | 3,120 |
+| src\menu\components\form\dragtitle | 4 | 307 | 3 | 27 | 337 |
+| src\menu\components\form\formaction | 5 | 906 | 31 | 74 | 1,011 |
+| src\menu\components\form\formaction\actionform | 2 | 372 | 8 | 29 | 409 |
+| src\menu\components\form\normal-form | 3 | 804 | 21 | 110 | 935 |
+| src\menu\components\form\tab-form | 2 | 712 | 18 | 107 | 837 |
+| src\menu\components\group | 8 | 613 | 8 | 96 | 717 |
+| src\menu\components\group\groupcomponents | 3 | 243 | 0 | 34 | 277 |
+| src\menu\components\group\normal-group | 3 | 287 | 7 | 43 | 337 |
+| src\menu\components\group\paste | 2 | 83 | 1 | 19 | 103 |
+| src\menu\components\module | 3 | 230 | 22 | 37 | 289 |
+| src\menu\components\module\voucher | 3 | 230 | 22 | 37 | 289 |
+| src\menu\components\search | 8 | 882 | 29 | 102 | 1,013 |
+| src\menu\components\search\main-search | 8 | 882 | 29 | 102 | 1,013 |
+| src\menu\components\search\main-search\dategroup | 2 | 63 | 0 | 7 | 70 |
+| src\menu\components\search\main-search\dragsearch | 3 | 224 | 0 | 27 | 251 |
+| src\menu\components\share | 43 | 5,016 | 100 | 556 | 5,672 |
+| src\menu\components\share\actioncomponent | 8 | 2,318 | 59 | 220 | 2,597 |
+| src\menu\components\share\actioncomponent\actionform | 2 | 753 | 10 | 93 | 856 |
+| src\menu\components\share\actioncomponent\dragaction | 3 | 198 | 0 | 34 | 232 |
+| src\menu\components\share\clockcomponent | 4 | 158 | 1 | 20 | 179 |
+| src\menu\components\share\clockcomponent\settingform | 2 | 98 | 1 | 9 | 108 |
+| src\menu\components\share\copycomponent | 2 | 39 | 0 | 9 | 48 |
+| src\menu\components\share\logcomponent | 2 | 135 | 0 | 17 | 152 |
+| src\menu\components\share\markcomponent | 4 | 523 | 1 | 36 | 560 |
+| src\menu\components\share\markcomponent\markform | 2 | 141 | 1 | 6 | 148 |
+| src\menu\components\share\mobPagination | 2 | 55 | 0 | 3 | 58 |
+| src\menu\components\share\normalform | 2 | 180 | 2 | 13 | 195 |
+| src\menu\components\share\normalheader | 2 | 113 | 3 | 21 | 137 |
+| src\menu\components\share\pastecomponent | 2 | 208 | 0 | 34 | 242 |
+| src\menu\components\share\searchcomponent | 5 | 495 | 28 | 76 | 599 |
+| src\menu\components\share\searchcomponent\dragsearch | 3 | 185 | 0 | 26 | 211 |
+| src\menu\components\share\sourcecomponent | 4 | 383 | 0 | 42 | 425 |
+| src\menu\components\share\sourcecomponent\inputform | 2 | 247 | 0 | 26 | 273 |
+| src\menu\components\share\styleInput | 2 | 123 | 3 | 26 | 152 |
+| src\menu\components\share\usercomponent | 4 | 286 | 3 | 39 | 328 |
+| src\menu\components\share\usercomponent\settingform | 2 | 73 | 2 | 13 | 88 |
+| src\menu\components\table | 22 | 5,164 | 71 | 534 | 5,769 |
+| src\menu\components\table\edit-table | 14 | 3,026 | 44 | 319 | 3,389 |
+| src\menu\components\table\edit-table\columns | 11 | 2,472 | 30 | 253 | 2,755 |
+| src\menu\components\table\edit-table\columns\editColumn | 3 | 701 | 5 | 39 | 745 |
+| src\menu\components\table\edit-table\columns\tableIn | 6 | 1,137 | 17 | 119 | 1,273 |
+| src\menu\components\table\edit-table\columns\tableIn\customscript | 2 | 297 | 8 | 43 | 348 |
+| src\menu\components\table\edit-table\columns\tableIn\uniqueform | 2 | 117 | 1 | 12 | 130 |
+| src\menu\components\table\normal-table | 8 | 2,138 | 27 | 215 | 2,380 |
+| src\menu\components\table\normal-table\columns | 5 | 1,424 | 13 | 133 | 1,570 |
+| src\menu\components\table\normal-table\columns\editColumn | 3 | 787 | 5 | 39 | 831 |
+| src\menu\components\tabs | 9 | 1,172 | 29 | 174 | 1,375 |
+| src\menu\components\tabs\antv-tabs | 4 | 776 | 28 | 109 | 913 |
+| src\menu\components\tabs\paste | 2 | 120 | 1 | 29 | 150 |
+| src\menu\components\tabs\tabcomponents | 3 | 276 | 0 | 36 | 312 |
+| src\menu\components\timeline | 3 | 348 | 9 | 42 | 399 |
+| src\menu\components\timeline\normal-timeline | 3 | 348 | 9 | 42 | 399 |
+| src\menu\components\tree | 3 | 329 | 12 | 39 | 380 |
+| src\menu\components\tree\antd-tree | 3 | 329 | 12 | 39 | 380 |
+| src\menu\datasource | 11 | 2,020 | 27 | 220 | 2,267 |
+| src\menu\datasource\verifycard | 9 | 1,742 | 27 | 184 | 1,953 |
+| src\menu\datasource\verifycard\columnform | 2 | 120 | 1 | 8 | 129 |
+| src\menu\datasource\verifycard\customscript | 2 | 272 | 1 | 31 | 304 |
+| src\menu\datasource\verifycard\settingform | 2 | 485 | 2 | 31 | 518 |
+| src\menu\header | 2 | 111 | 0 | 9 | 120 |
+| src\menu\menushell | 3 | 280 | 0 | 35 | 315 |
+| src\menu\modalconfig | 3 | 838 | 39 | 80 | 957 |
+| src\menu\modulesource | 5 | 204 | 1 | 25 | 230 |
+| src\menu\modulesource\dragsource | 2 | 54 | 0 | 7 | 61 |
+| src\menu\padcontroller | 2 | 90 | 3 | 12 | 105 |
+| src\menu\pastecontroller | 2 | 102 | 1 | 26 | 129 |
+| src\menu\picturecontroller | 6 | 663 | 1 | 55 | 719 |
+| src\menu\picturecontroller\editform | 2 | 176 | 1 | 10 | 187 |
+| src\menu\picturecontroller\video | 2 | 74 | 0 | 8 | 82 |
+| src\menu\popview | 4 | 877 | 10 | 95 | 982 |
+| src\menu\popview\menuform | 2 | 123 | 3 | 11 | 137 |
+| src\menu\replaceField | 4 | 703 | 6 | 76 | 785 |
+| src\menu\replaceField\settingform | 2 | 209 | 2 | 21 | 232 |
+| src\menu\stylecombcontrolbutton | 2 | 176 | 3 | 28 | 207 |
+| src\menu\stylecombcontroller | 4 | 815 | 36 | 78 | 929 |
+| src\menu\stylecombcontroller\styleInput | 2 | 132 | 3 | 30 | 165 |
+| src\menu\stylecontroller | 4 | 1,038 | 54 | 102 | 1,194 |
+| src\menu\stylecontroller\styleInput | 2 | 138 | 3 | 31 | 172 |
+| src\menu\sysinterface | 9 | 1,159 | 10 | 125 | 1,294 |
+| src\menu\sysinterface\settingform | 7 | 950 | 10 | 98 | 1,058 |
+| src\menu\sysinterface\settingform\baseform | 2 | 258 | 1 | 18 | 277 |
+| src\menu\sysinterface\settingform\simplescript | 2 | 446 | 0 | 50 | 496 |
+| src\menu\urlfieldcomponent | 4 | 208 | 2 | 33 | 243 |
+| src\menu\urlfieldcomponent\settingform | 2 | 70 | 2 | 11 | 83 |
+| src\menu\versions | 2 | 166 | 1 | 20 | 187 |
+| src\mob | 66 | 7,225 | 266 | 818 | 8,309 |
+| src\mob\colorsketch | 2 | 144 | 0 | 18 | 162 |
+| src\mob\components | 32 | 3,624 | 148 | 449 | 4,221 |
+| src\mob\components\formdragelement | 3 | 589 | 2 | 42 | 633 |
+| src\mob\components\menubar | 6 | 659 | 22 | 89 | 770 |
+| src\mob\components\menubar\normal-menubar | 6 | 659 | 22 | 89 | 770 |
+| src\mob\components\menubar\normal-menubar\menucomponent | 3 | 317 | 7 | 33 | 357 |
+| src\mob\components\navbar | 10 | 705 | 33 | 94 | 832 |
+| src\mob\components\navbar\normal-navbar | 10 | 705 | 33 | 94 | 832 |
+| src\mob\components\navbar\normal-navbar\menus | 7 | 477 | 24 | 61 | 562 |
+| src\mob\components\navbar\normal-navbar\menus\drags | 3 | 106 | 1 | 16 | 123 |
+| src\mob\components\navbar\normal-navbar\menus\menuform | 2 | 223 | 1 | 18 | 242 |
+| src\mob\components\search | 3 | 287 | 12 | 29 | 328 |
+| src\mob\components\search\single-search | 3 | 287 | 12 | 29 | 328 |
+| src\mob\components\tabs | 7 | 943 | 59 | 147 | 1,149 |
+| src\mob\components\tabs\antv-tabs | 4 | 676 | 51 | 111 | 838 |
+| src\mob\components\tabs\tabcomponents | 3 | 267 | 8 | 36 | 311 |
+| src\mob\components\topbar | 3 | 441 | 20 | 48 | 509 |
+| src\mob\components\topbar\normal-navbar | 3 | 441 | 20 | 48 | 509 |
+| src\mob\header | 2 | 91 | 0 | 7 | 98 |
+| src\mob\mobshell | 3 | 362 | 4 | 40 | 406 |
+| src\mob\modalconfig | 6 | 956 | 40 | 97 | 1,093 |
+| src\mob\modalconfig\pastecomponent | 2 | 62 | 1 | 14 | 77 |
+| src\mob\modulesource | 5 | 198 | 3 | 24 | 225 |
+| src\mob\modulesource\dragsource | 2 | 54 | 0 | 7 | 61 |
+| src\mob\searchconfig | 16 | 1,850 | 71 | 183 | 2,104 |
+| src\mob\searchconfig\groupdragelement | 3 | 136 | 0 | 21 | 157 |
+| src\mob\searchconfig\groupform | 2 | 88 | 1 | 10 | 99 |
+| src\mob\searchconfig\pastecomponent | 2 | 46 | 1 | 11 | 58 |
+| src\mob\searchconfig\searchdragelement | 3 | 394 | 23 | 37 | 454 |
+| src\mob\searchconfig\settingform | 2 | 253 | 1 | 13 | 267 |
+| src\pc | 41 | 3,702 | 105 | 461 | 4,268 |
+| src\pc\bgcontroller | 2 | 229 | 6 | 31 | 266 |
+| src\pc\components | 19 | 2,263 | 91 | 278 | 2,632 |
+| src\pc\components\login | 4 | 616 | 80 | 61 | 757 |
+| src\pc\components\login\normal-login | 4 | 616 | 80 | 61 | 757 |
+| src\pc\components\navbar | 15 | 1,647 | 11 | 217 | 1,875 |
+| src\pc\components\navbar\normal-navbar | 15 | 1,647 | 11 | 217 | 1,875 |
+| src\pc\components\navbar\normal-navbar\linksetting | 6 | 361 | 1 | 58 | 420 |
+| src\pc\components\navbar\normal-navbar\linksetting\linkform | 2 | 147 | 1 | 18 | 166 |
+| src\pc\components\navbar\normal-navbar\linksetting\linktable | 2 | 152 | 0 | 29 | 181 |
+| src\pc\components\navbar\normal-navbar\menusetting | 6 | 814 | 1 | 116 | 931 |
+| src\pc\components\navbar\normal-navbar\menusetting\menuform | 2 | 190 | 1 | 18 | 209 |
+| src\pc\components\navbar\normal-navbar\menusetting\menutable | 2 | 561 | 0 | 87 | 648 |
+| src\pc\createview | 4 | 323 | 1 | 38 | 362 |
+| src\pc\createview\settingform | 2 | 119 | 1 | 11 | 131 |
+| src\pc\menushell | 3 | 316 | 3 | 40 | 359 |
+| src\pc\modulesource | 5 | 205 | 1 | 24 | 230 |
+| src\pc\modulesource\dragsource | 2 | 54 | 0 | 7 | 61 |
+| src\pc\quotecomponent | 4 | 195 | 1 | 26 | 222 |
+| src\pc\quotecomponent\settingform | 2 | 76 | 1 | 10 | 87 |
+| src\pc\transfer | 4 | 171 | 2 | 24 | 197 |
+| src\pc\transfer\settingform | 2 | 58 | 2 | 9 | 69 |
+| src\router | 1 | 100 | 1 | 13 | 114 |
+| src\store | 5 | 180 | 35 | 24 | 239 |
+| src\tabviews | 187 | 42,159 | 1,723 | 5,982 | 49,864 |
+| src\tabviews\calendar | 2 | 512 | 33 | 87 | 632 |
+| src\tabviews\commontable | 2 | 1,178 | 60 | 157 | 1,395 |
+| src\tabviews\custom | 67 | 16,421 | 525 | 2,404 | 19,350 |
+| src\tabviews\custom\components | 65 | 15,324 | 496 | 2,255 | 18,075 |
+| src\tabviews\custom\components\card | 13 | 3,123 | 70 | 473 | 3,666 |
+| src\tabviews\custom\components\card\balcony | 2 | 360 | 9 | 73 | 442 |
+| src\tabviews\custom\components\card\cardItem | 2 | 211 | 6 | 35 | 252 |
+| src\tabviews\custom\components\card\cardcellList | 3 | 882 | 16 | 102 | 1,000 |
+| src\tabviews\custom\components\card\data-card | 2 | 812 | 12 | 111 | 935 |
+| src\tabviews\custom\components\card\prop-card | 2 | 411 | 9 | 75 | 495 |
+| src\tabviews\custom\components\card\table-card | 2 | 447 | 18 | 77 | 542 |
+| src\tabviews\custom\components\carousel | 6 | 666 | 24 | 117 | 807 |
+| src\tabviews\custom\components\carousel\cardItem | 2 | 132 | 6 | 22 | 160 |
+| src\tabviews\custom\components\carousel\data-card | 2 | 273 | 9 | 47 | 329 |
+| src\tabviews\custom\components\carousel\prop-card | 2 | 261 | 9 | 48 | 318 |
+| src\tabviews\custom\components\chart | 12 | 4,141 | 136 | 596 | 4,873 |
+| src\tabviews\custom\components\chart\antv-bar-line | 3 | 1,651 | 52 | 234 | 1,937 |
+| src\tabviews\custom\components\chart\antv-dashboard | 2 | 634 | 13 | 82 | 729 |
+| src\tabviews\custom\components\chart\antv-pie | 2 | 999 | 16 | 141 | 1,156 |
+| src\tabviews\custom\components\chart\antv-scatter | 3 | 498 | 29 | 75 | 602 |
+| src\tabviews\custom\components\chart\custom-chart | 2 | 359 | 26 | 64 | 449 |
+| src\tabviews\custom\components\code | 2 | 219 | 4 | 36 | 259 |
+| src\tabviews\custom\components\code\sand-box | 2 | 219 | 4 | 36 | 259 |
+| src\tabviews\custom\components\editor | 2 | 196 | 3 | 34 | 233 |
+| src\tabviews\custom\components\editor\braft-editor | 2 | 196 | 3 | 34 | 233 |
+| src\tabviews\custom\components\form | 4 | 806 | 22 | 138 | 966 |
+| src\tabviews\custom\components\form\normal-form | 2 | 430 | 11 | 75 | 516 |
+| src\tabviews\custom\components\form\tab-form | 2 | 376 | 11 | 63 | 450 |
+| src\tabviews\custom\components\group | 2 | 328 | 5 | 38 | 371 |
+| src\tabviews\custom\components\group\normal-group | 2 | 328 | 5 | 38 | 371 |
+| src\tabviews\custom\components\module | 4 | 980 | 53 | 151 | 1,184 |
+| src\tabviews\custom\components\module\voucher | 4 | 980 | 53 | 151 | 1,184 |
+| src\tabviews\custom\components\module\voucher\voucherTable | 2 | 825 | 48 | 124 | 997 |
+| src\tabviews\custom\components\share | 8 | 1,458 | 37 | 207 | 1,702 |
+| src\tabviews\custom\components\share\braftContent | 2 | 72 | 0 | 12 | 84 |
+| src\tabviews\custom\components\share\normalTable | 2 | 1,008 | 29 | 154 | 1,191 |
+| src\tabviews\custom\components\share\normalheader | 2 | 90 | 3 | 13 | 106 |
+| src\tabviews\custom\components\share\tabtransfer | 2 | 288 | 5 | 28 | 321 |
+| src\tabviews\custom\components\table | 6 | 2,414 | 97 | 304 | 2,815 |
+| src\tabviews\custom\components\table\edit-table | 4 | 1,728 | 59 | 223 | 2,010 |
+| src\tabviews\custom\components\table\edit-table\normalTable | 2 | 1,191 | 24 | 164 | 1,379 |
+| src\tabviews\custom\components\table\normal-table | 2 | 686 | 38 | 81 | 805 |
+| src\tabviews\custom\components\tabs | 2 | 137 | 3 | 27 | 167 |
+| src\tabviews\custom\components\tabs\antv-tabs | 2 | 137 | 3 | 27 | 167 |
+| src\tabviews\custom\components\timeline | 2 | 358 | 22 | 57 | 437 |
+| src\tabviews\custom\components\timeline\normal-timeline | 2 | 358 | 22 | 57 | 437 |
+| src\tabviews\custom\components\tree | 2 | 498 | 20 | 77 | 595 |
+| src\tabviews\custom\components\tree\antd-tree | 2 | 498 | 20 | 77 | 595 |
+| src\tabviews\formtab | 6 | 1,650 | 69 | 224 | 1,943 |
+| src\tabviews\formtab\actionList | 2 | 308 | 32 | 47 | 387 |
+| src\tabviews\formtab\formgroup | 2 | 686 | 4 | 82 | 772 |
+| src\tabviews\home | 4 | 570 | 0 | 20 | 590 |
+| src\tabviews\home\defaulthome | 2 | 474 | 0 | 8 | 482 |
+| src\tabviews\iframe | 1 | 37 | 3 | 10 | 50 |
+| src\tabviews\rolemanage | 2 | 917 | 61 | 114 | 1,092 |
+| src\tabviews\scriptmanage | 5 | 690 | 67 | 84 | 841 |
+| src\tabviews\scriptmanage\actionList | 2 | 262 | 32 | 36 | 330 |
+| src\tabviews\subtable | 2 | 1,004 | 56 | 143 | 1,203 |
+| src\tabviews\subtabtable | 2 | 816 | 47 | 122 | 985 |
+| src\tabviews\tabmanage | 6 | 747 | 5 | 80 | 832 |
+| src\tabviews\tabmanage\mutilform | 2 | 137 | 1 | 8 | 146 |
+| src\tabviews\tabmanage\transferform | 2 | 41 | 0 | 9 | 50 |
+| src\tabviews\treepage | 2 | 711 | 29 | 96 | 836 |
+| src\tabviews\verupmanage | 7 | 1,767 | 140 | 236 | 2,143 |
+| src\tabviews\verupmanage\actionList | 2 | 682 | 51 | 102 | 835 |
+| src\tabviews\verupmanage\subtabtable | 2 | 441 | 43 | 64 | 548 |
+| src\tabviews\zshare | 79 | 15,139 | 628 | 2,205 | 17,972 |
+| src\tabviews\zshare\actionList | 21 | 5,654 | 478 | 876 | 7,008 |
+| src\tabviews\zshare\actionList\changeuserbutton | 2 | 240 | 10 | 37 | 287 |
+| src\tabviews\zshare\actionList\excelInbutton | 4 | 556 | 34 | 80 | 670 |
+| src\tabviews\zshare\actionList\excelInbutton\excelin | 2 | 102 | 5 | 18 | 125 |
+| src\tabviews\zshare\actionList\exceloutbutton | 2 | 807 | 47 | 137 | 991 |
+| src\tabviews\zshare\actionList\newpagebutton | 2 | 252 | 7 | 34 | 293 |
+| src\tabviews\zshare\actionList\normalbutton | 2 | 1,808 | 85 | 273 | 2,166 |
+| src\tabviews\zshare\actionList\popupbutton | 2 | 363 | 13 | 43 | 419 |
+| src\tabviews\zshare\actionList\printbutton | 2 | 1,184 | 271 | 216 | 1,671 |
+| src\tabviews\zshare\actionList\tabbutton | 2 | 225 | 6 | 36 | 267 |
+| src\tabviews\zshare\automatic | 2 | 186 | 3 | 39 | 228 |
+| src\tabviews\zshare\calendar | 2 | 556 | 1 | 50 | 607 |
+| src\tabviews\zshare\cardcomponent | 3 | 1,023 | 31 | 130 | 1,184 |
+| src\tabviews\zshare\chartcomponent | 3 | 1,064 | 46 | 154 | 1,264 |
+| src\tabviews\zshare\fileupload | 2 | 445 | 4 | 73 | 522 |
+| src\tabviews\zshare\mutilform | 22 | 1,907 | 30 | 322 | 2,259 |
+| src\tabviews\zshare\mutilform\mkCheckCard | 2 | 284 | 1 | 37 | 322 |
+| src\tabviews\zshare\mutilform\mkCheckbox | 2 | 30 | 0 | 8 | 38 |
+| src\tabviews\zshare\mutilform\mkColor | 2 | 89 | 0 | 12 | 101 |
+| src\tabviews\zshare\mutilform\mkDatePicker | 2 | 68 | 3 | 17 | 88 |
+| src\tabviews\zshare\mutilform\mkInput | 2 | 79 | 3 | 18 | 100 |
+| src\tabviews\zshare\mutilform\mkNumberInput | 2 | 61 | 1 | 17 | 79 |
+| src\tabviews\zshare\mutilform\mkRadio | 2 | 120 | 0 | 27 | 147 |
+| src\tabviews\zshare\mutilform\mkSelect | 2 | 182 | 0 | 30 | 212 |
+| src\tabviews\zshare\mutilform\mkSwitch | 2 | 33 | 0 | 9 | 42 |
+| src\tabviews\zshare\mutilform\mkTextArea | 2 | 75 | 0 | 18 | 93 |
+| src\tabviews\zshare\normalTable | 2 | 1,461 | 13 | 189 | 1,663 |
+| src\tabviews\zshare\pageMessage | 2 | 336 | 5 | 47 | 388 |
+| src\tabviews\zshare\settingcomponent | 4 | 896 | 2 | 104 | 1,002 |
+| src\tabviews\zshare\settingcomponent\editTable | 2 | 357 | 0 | 32 | 389 |
+| src\tabviews\zshare\topSearch | 16 | 1,611 | 15 | 221 | 1,847 |
+| src\tabviews\zshare\topSearch\advanceform | 2 | 140 | 1 | 16 | 157 |
+| src\tabviews\zshare\topSearch\dategroup | 6 | 546 | 0 | 56 | 602 |
+| src\tabviews\zshare\topSearch\dategroup\quarterpicker | 2 | 175 | 0 | 19 | 194 |
+| src\tabviews\zshare\topSearch\dategroup\yearpicker | 2 | 151 | 0 | 19 | 170 |
+| src\tabviews\zshare\topSearch\mkDatePicker | 2 | 73 | 3 | 16 | 92 |
+| src\tabviews\zshare\topSearch\mkInput | 2 | 14 | 0 | 5 | 19 |
+| src\tabviews\zshare\topSearch\mkSelect | 2 | 97 | 0 | 25 | 122 |
+| src\templates | 241 | 45,591 | 1,096 | 4,258 | 50,945 |
+| src\templates\calendarconfig | 11 | 1,648 | 108 | 167 | 1,923 |
+| src\templates\calendarconfig\calcomponent | 4 | 265 | 11 | 20 | 296 |
+| src\templates\calendarconfig\calcomponent\calendarform | 2 | 151 | 2 | 5 | 158 |
+| src\templates\calendarconfig\tabcomponent | 4 | 377 | 19 | 41 | 437 |
+| src\templates\calendarconfig\tabcomponent\tabform | 2 | 202 | 7 | 23 | 232 |
+| src\templates\comtableconfig | 5 | 1,962 | 65 | 169 | 2,196 |
+| src\templates\comtableconfig\menuform | 2 | 239 | 0 | 16 | 255 |
+| src\templates\formtabconfig | 16 | 3,762 | 72 | 354 | 4,188 |
+| src\templates\formtabconfig\actionform | 2 | 442 | 1 | 33 | 476 |
+| src\templates\formtabconfig\dragelement | 5 | 349 | 1 | 42 | 392 |
+| src\templates\formtabconfig\groupform | 2 | 111 | 3 | 17 | 131 |
+| src\templates\formtabconfig\settingform | 2 | 340 | 1 | 26 | 367 |
+| src\templates\formtabconfig\transferform | 2 | 67 | 0 | 12 | 79 |
+| src\templates\menuconfig | 22 | 3,038 | 44 | 207 | 3,289 |
+| src\templates\menuconfig\editfirstmenu | 8 | 875 | 9 | 60 | 944 |
+| src\templates\menuconfig\editfirstmenu\dragelement | 4 | 178 | 0 | 19 | 197 |
+| src\templates\menuconfig\editfirstmenu\menuform | 2 | 240 | 2 | 15 | 257 |
+| src\templates\menuconfig\editsecmenu | 2 | 520 | 2 | 22 | 544 |
+| src\templates\menuconfig\editthdmenu | 6 | 1,304 | 31 | 99 | 1,434 |
+| src\templates\menuconfig\editthdmenu\menuform | 2 | 156 | 2 | 14 | 172 |
+| src\templates\menuconfig\editthdmenu\preview | 2 | 90 | 0 | 7 | 97 |
+| src\templates\menuconfig\menuelement | 4 | 185 | 0 | 15 | 200 |
+| src\templates\menuconfig\menuform | 2 | 154 | 2 | 11 | 167 |
+| src\templates\modalconfig | 17 | 2,283 | 52 | 201 | 2,536 |
+| src\templates\modalconfig\checkCard | 2 | 107 | 0 | 11 | 118 |
+| src\templates\modalconfig\dragelement | 4 | 407 | 1 | 39 | 447 |
+| src\templates\modalconfig\editcard | 2 | 152 | 0 | 13 | 165 |
+| src\templates\modalconfig\menuform | 2 | 91 | 1 | 6 | 98 |
+| src\templates\modalconfig\settingform | 2 | 292 | 7 | 15 | 314 |
+| src\templates\modalconfig\transferform | 2 | 67 | 0 | 12 | 79 |
+| src\templates\sharecomponent | 105 | 17,703 | 400 | 1,874 | 19,977 |
+| src\templates\sharecomponent\actioncomponent | 23 | 4,735 | 89 | 507 | 5,331 |
+| src\templates\sharecomponent\actioncomponent\actionform | 2 | 645 | 4 | 81 | 730 |
+| src\templates\sharecomponent\actioncomponent\dragaction | 3 | 216 | 1 | 34 | 251 |
+| src\templates\sharecomponent\actioncomponent\verifyexcelin | 8 | 1,516 | 18 | 147 | 1,681 |
+| src\templates\sharecomponent\actioncomponent\verifyexcelin\columnform | 2 | 174 | 1 | 10 | 185 |
+| src\templates\sharecomponent\actioncomponent\verifyexcelin\customscript | 2 | 309 | 8 | 46 | 363 |
+| src\templates\sharecomponent\actioncomponent\verifyexcelin\uniqueform | 2 | 117 | 1 | 12 | 130 |
+| src\templates\sharecomponent\actioncomponent\verifyexcelout | 4 | 751 | 6 | 68 | 825 |
+| src\templates\sharecomponent\actioncomponent\verifyexcelout\columnform | 2 | 99 | 1 | 6 | 106 |
+| src\templates\sharecomponent\actioncomponent\verifyprint | 4 | 748 | 1 | 63 | 812 |
+| src\templates\sharecomponent\actioncomponent\verifyprint\editable | 2 | 264 | 0 | 26 | 290 |
+| src\templates\sharecomponent\cardcomponent | 7 | 1,050 | 3 | 108 | 1,161 |
+| src\templates\sharecomponent\cardcomponent\carddetailform | 2 | 277 | 2 | 24 | 303 |
+| src\templates\sharecomponent\cardcomponent\dragdetail | 3 | 145 | 0 | 16 | 161 |
+| src\templates\sharecomponent\chartcomponent | 4 | 1,071 | 0 | 161 | 1,232 |
+| src\templates\sharecomponent\chartcomponent\chartcompile | 2 | 530 | 0 | 59 | 589 |
+| src\templates\sharecomponent\chartgroupcomponent | 7 | 925 | 29 | 99 | 1,053 |
+| src\templates\sharecomponent\chartgroupcomponent\chartform | 2 | 530 | 2 | 33 | 565 |
+| src\templates\sharecomponent\chartgroupcomponent\dragchartview | 3 | 140 | 0 | 24 | 164 |
+| src\templates\sharecomponent\columncomponent | 15 | 2,168 | 64 | 212 | 2,444 |
+| src\templates\sharecomponent\columncomponent\colspanform | 2 | 196 | 2 | 14 | 212 |
+| src\templates\sharecomponent\columncomponent\columnform | 2 | 351 | 4 | 30 | 385 |
+| src\templates\sharecomponent\columncomponent\dragcolumn | 3 | 234 | 2 | 29 | 265 |
+| src\templates\sharecomponent\columncomponent\gridbtnform | 2 | 194 | 2 | 9 | 205 |
+| src\templates\sharecomponent\columncomponent\markcolumn | 4 | 606 | 16 | 57 | 679 |
+| src\templates\sharecomponent\columncomponent\markcolumn\markform | 2 | 335 | 16 | 27 | 378 |
+| src\templates\sharecomponent\fieldscomponent | 4 | 494 | 10 | 55 | 559 |
+| src\templates\sharecomponent\fieldscomponent\editcard | 2 | 214 | 0 | 26 | 240 |
+| src\templates\sharecomponent\searchcomponent | 11 | 1,709 | 42 | 191 | 1,942 |
+| src\templates\sharecomponent\searchcomponent\dategroup | 2 | 63 | 0 | 7 | 70 |
+| src\templates\sharecomponent\searchcomponent\dragsearch | 3 | 259 | 0 | 36 | 295 |
+| src\templates\sharecomponent\searchcomponent\searcheditable | 2 | 326 | 0 | 26 | 352 |
+| src\templates\sharecomponent\searchcomponent\searchform | 2 | 686 | 3 | 69 | 758 |
+| src\templates\sharecomponent\settingcalcomponent | 9 | 1,164 | 34 | 120 | 1,318 |
+| src\templates\sharecomponent\settingcalcomponent\verifycard | 7 | 999 | 34 | 99 | 1,132 |
+| src\templates\sharecomponent\settingcalcomponent\verifycard\columnform | 2 | 133 | 1 | 12 | 146 |
+| src\templates\sharecomponent\settingcalcomponent\verifycard\settingform | 2 | 314 | 16 | 25 | 355 |
+| src\templates\sharecomponent\settingcomponent | 9 | 2,224 | 48 | 190 | 2,462 |
+| src\templates\sharecomponent\settingcomponent\settingform | 7 | 2,023 | 33 | 160 | 2,216 |
+| src\templates\sharecomponent\settingcomponent\settingform\datasource | 2 | 821 | 3 | 28 | 852 |
+| src\templates\sharecomponent\settingcomponent\settingform\simplescript | 2 | 485 | 0 | 53 | 538 |
+| src\templates\sharecomponent\tablecomponent | 2 | 275 | 15 | 35 | 325 |
+| src\templates\sharecomponent\tabscomponent | 7 | 893 | 44 | 111 | 1,048 |
+| src\templates\sharecomponent\tabscomponent\tabdragelement | 3 | 160 | 0 | 27 | 187 |
+| src\templates\sharecomponent\tabscomponent\tabform | 2 | 302 | 9 | 30 | 341 |
+| src\templates\sharecomponent\treesettingcomponent | 7 | 995 | 22 | 85 | 1,102 |
+| src\templates\sharecomponent\treesettingcomponent\settingform | 5 | 864 | 13 | 71 | 948 |
+| src\templates\sharecomponent\treesettingcomponent\settingform\datasource | 2 | 494 | 3 | 27 | 524 |
+| src\templates\subtableconfig | 5 | 1,657 | 55 | 146 | 1,858 |
+| src\templates\subtableconfig\menuform | 2 | 106 | 0 | 11 | 117 |
+| src\templates\treepageconfig | 3 | 995 | 52 | 96 | 1,143 |
+| src\templates\zshare | 57 | 12,543 | 248 | 1,044 | 13,835 |
+| src\templates\zshare\basetransferform | 2 | 43 | 0 | 9 | 52 |
+| src\templates\zshare\codemirror | 2 | 228 | 2 | 20 | 250 |
+| src\templates\zshare\createfunc | 2 | 179 | 11 | 25 | 215 |
+| src\templates\zshare\createinterface | 4 | 1,065 | 51 | 170 | 1,286 |
+| src\templates\zshare\createinterface\mutilform | 2 | 132 | 2 | 12 | 146 |
+| src\templates\zshare\customscript | 2 | 423 | 0 | 50 | 473 |
+| src\templates\zshare\dragsource | 2 | 21 | 0 | 1 | 22 |
+| src\templates\zshare\editTable | 4 | 740 | 1 | 100 | 841 |
+| src\templates\zshare\editTable\cusSwitch | 2 | 82 | 1 | 11 | 94 |
+| src\templates\zshare\editcard | 2 | 191 | 0 | 18 | 209 |
+| src\templates\zshare\editcomponent | 2 | 211 | 6 | 25 | 242 |
+| src\templates\zshare\menuform | 2 | 122 | 1 | 11 | 134 |
+| src\templates\zshare\modalform | 8 | 1,778 | 6 | 213 | 1,997 |
+| src\templates\zshare\modalform\datatable | 2 | 471 | 1 | 56 | 528 |
+| src\templates\zshare\modalform\fieldtable | 2 | 129 | 0 | 17 | 146 |
+| src\templates\zshare\modalform\modaleditable | 2 | 481 | 0 | 57 | 538 |
+| src\templates\zshare\pasteform | 2 | 90 | 1 | 10 | 101 |
+| src\templates\zshare\transferform | 2 | 141 | 0 | 24 | 165 |
+| src\templates\zshare\unattended | 4 | 237 | 2 | 21 | 260 |
+| src\templates\zshare\unattended\settingform | 2 | 163 | 2 | 9 | 174 |
+| src\templates\zshare\verifycard | 16 | 3,563 | 35 | 308 | 3,906 |
+| src\templates\zshare\verifycard\billcodeform | 2 | 347 | 5 | 30 | 382 |
+| src\templates\zshare\verifycard\callbackcustomscript | 2 | 264 | 8 | 34 | 306 |
+| src\templates\zshare\verifycard\contrastform | 2 | 134 | 1 | 6 | 141 |
+| src\templates\zshare\verifycard\customform | 2 | 232 | 3 | 24 | 259 |
+| src\templates\zshare\verifycard\customscript | 2 | 292 | 10 | 36 | 338 |
+| src\templates\zshare\verifycard\uniqueform | 2 | 117 | 1 | 10 | 128 |
+| src\templates\zshare\verifycard\voucherform | 2 | 243 | 1 | 26 | 270 |
+| src\utils | 10 | 4,461 | 425 | 637 | 5,523 |
+| src\views | 86 | 18,910 | 322 | 1,978 | 21,210 |
+| src\views\404 | 2 | 37 | 0 | 4 | 41 |
+| src\views\appcheck | 4 | 407 | 6 | 37 | 450 |
+| src\views\appcheck\header | 2 | 82 | 0 | 6 | 88 |
+| src\views\appmanage | 12 | 1,922 | 98 | 186 | 2,206 |
+| src\views\appmanage\header | 2 | 82 | 0 | 6 | 88 |
+| src\views\appmanage\mutilform | 2 | 76 | 7 | 7 | 90 |
+| src\views\appmanage\scriptform | 2 | 227 | 6 | 31 | 264 |
+| src\views\appmanage\submutilform | 2 | 253 | 69 | 15 | 337 |
+| src\views\appmanage\transform | 2 | 76 | 7 | 7 | 90 |
+| src\views\billprint | 2 | 608 | 16 | 99 | 723 |
+| src\views\design | 9 | 1,648 | 40 | 159 | 1,847 |
+| src\views\design\header | 4 | 986 | 14 | 114 | 1,114 |
+| src\views\design\header\versions | 2 | 420 | 0 | 59 | 479 |
+| src\views\design\sidemenu | 3 | 615 | 26 | 39 | 680 |
+| src\views\imdesign | 5 | 941 | 12 | 97 | 1,050 |
+| src\views\imdesign\menuform | 2 | 92 | 2 | 8 | 102 |
+| src\views\interface | 13 | 1,505 | 20 | 181 | 1,706 |
+| src\views\interface\api | 1 | 142 | 11 | 22 | 175 |
+| src\views\interface\header | 2 | 97 | 0 | 12 | 109 |
+| src\views\interface\history | 2 | 362 | 3 | 39 | 404 |
+| src\views\interface\workspace | 6 | 875 | 6 | 103 | 984 |
+| src\views\interface\workspace\editTable | 2 | 304 | 0 | 32 | 336 |
+| src\views\interface\workspace\request | 2 | 413 | 3 | 56 | 472 |
+| src\views\login | 4 | 1,569 | 44 | 171 | 1,784 |
+| src\views\main | 2 | 40 | 0 | 7 | 47 |
+| src\views\menudesign | 8 | 1,936 | 12 | 181 | 2,129 |
+| src\views\menudesign\homeform | 2 | 161 | 2 | 19 | 182 |
+| src\views\menudesign\menuform | 2 | 363 | 5 | 26 | 394 |
+| src\views\menudesign\printmenuform | 2 | 236 | 1 | 21 | 258 |
+| src\views\mobdesign | 4 | 2,104 | 8 | 235 | 2,347 |
+| src\views\mobdesign\menuform | 2 | 264 | 3 | 13 | 280 |
+| src\views\pay | 2 | 404 | 14 | 38 | 456 |
+| src\views\pcdesign | 4 | 2,026 | 7 | 226 | 2,259 |
+| src\views\pcdesign\menuform | 2 | 184 | 3 | 13 | 200 |
+| src\views\printTemplate | 9 | 2,641 | 39 | 216 | 2,896 |
+| src\views\printTemplate\dragelement | 3 | 53 | 0 | 10 | 63 |
+| src\views\printTemplate\mutilform | 2 | 339 | 9 | 32 | 380 |
+| src\views\rolemanage | 4 | 984 | 4 | 120 | 1,108 |
+| src\views\rolemanage\header | 2 | 84 | 0 | 6 | 90 |
+| src\views\sso | 2 | 138 | 2 | 21 | 161 |
+
+[details](details.md)
\ No newline at end of file
diff --git a/.VSCodeCounter/2022-03-01_15-52-00/results.txt b/.VSCodeCounter/2022-03-01_15-52-00/results.txt
new file mode 100644
index 0000000..9daa155
--- /dev/null
+++ b/.VSCodeCounter/2022-03-01_15-52-00/results.txt
@@ -0,0 +1,1506 @@
+Date : 2022-03-01 15:52:00
+Directory : e:\project\pc-plat
+Total : 992 files,  195487 codes, 5743 comments, 20061 blanks, all 221291 lines
+
+Languages
++------------------+------------+------------+------------+------------+------------+
+| language         | files      | code       | comment    | blank      | total      |
++------------------+------------+------------+------------+------------+------------+
+| JavaScript React |        521 |    139,339 |      4,452 |     17,782 |    161,573 |
+| SCSS             |        416 |     25,331 |        161 |      1,119 |     26,611 |
+| JSON             |          4 |     21,640 |          0 |          3 |     21,643 |
+| JavaScript       |         43 |      8,931 |      1,121 |      1,050 |     11,102 |
+| CSS              |          2 |         76 |          5 |         27 |        108 |
+| XML              |          3 |         70 |          3 |         44 |        117 |
+| HTML             |          2 |         61 |          1 |          2 |         64 |
+| Markdown         |          1 |         39 |          0 |         34 |         73 |
++------------------+------------+------------+------------+------------+------------+
+
+Directories
++--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+| path                                                                                                   | files      | code       | comment    | blank      | total      |
++--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+| .                                                                                                      |        992 |    195,487 |      5,743 |     20,061 |    221,291 |
+| config                                                                                                 |          8 |        711 |        341 |         80 |      1,132 |
+| config\jest                                                                                            |          2 |         40 |          7 |          9 |         56 |
+| public                                                                                                 |          4 |         87 |          1 |          3 |         91 |
+| scripts                                                                                                |          3 |        300 |         51 |         44 |        395 |
+| src                                                                                                    |        974 |    172,736 |      5,350 |     19,898 |    197,984 |
+| src\api                                                                                                |          2 |        959 |        172 |        149 |      1,280 |
+| src\assets                                                                                             |         10 |      2,122 |        101 |        160 |      2,383 |
+| src\assets\css                                                                                         |          6 |      2,051 |         98 |        116 |      2,265 |
+| src\assets\font                                                                                        |          3 |         57 |          3 |         43 |        103 |
+| src\assets\mobimg                                                                                      |          1 |         14 |          0 |          1 |         15 |
+| src\components                                                                                         |         57 |      6,574 |         67 |        788 |      7,429 |
+| src\components\404                                                                                     |          2 |         32 |          0 |          3 |         35 |
+| src\components\Image                                                                                   |          2 |         58 |          0 |         12 |         70 |
+| src\components\barcode                                                                                 |          2 |         68 |          0 |         13 |         81 |
+| src\components\breadview                                                                               |          2 |        222 |          5 |         27 |        254 |
+| src\components\editor                                                                                  |          2 |        242 |          1 |         35 |        278 |
+| src\components\header                                                                                  |          4 |      1,258 |         18 |        124 |      1,400 |
+| src\components\header\resetpwd                                                                         |          1 |        140 |          2 |         16 |        158 |
+| src\components\imgScale                                                                                |          2 |        450 |          0 |         60 |        510 |
+| src\components\loading                                                                                 |          1 |         10 |          0 |          2 |         12 |
+| src\components\lostsvg                                                                                 |          1 |         72 |          0 |          2 |         74 |
+| src\components\mk-icon                                                                                 |          2 |        465 |          0 |         10 |        475 |
+| src\components\mkIcon                                                                                  |          2 |        138 |          1 |         15 |        154 |
+| src\components\mkProgress                                                                              |          2 |         32 |          1 |         11 |         44 |
+| src\components\mutilform                                                                               |          2 |        213 |          2 |         14 |        229 |
+| src\components\normalform                                                                              |         18 |      1,318 |          9 |        263 |      1,590 |
+| src\components\normalform\modalform                                                                    |         16 |      1,238 |          9 |        250 |      1,497 |
+| src\components\normalform\modalform\mkCheckbox                                                         |          2 |         36 |          0 |          9 |         45 |
+| src\components\normalform\modalform\mkInput                                                            |          2 |         50 |          4 |         18 |         72 |
+| src\components\normalform\modalform\mkNumberInput                                                      |          2 |         46 |          1 |         16 |         63 |
+| src\components\normalform\modalform\mkRadio                                                            |          2 |         74 |          0 |         20 |         94 |
+| src\components\normalform\modalform\mkSelect                                                           |          2 |        114 |          0 |         26 |        140 |
+| src\components\normalform\modalform\mkTable                                                            |          2 |        478 |          3 |         68 |        549 |
+| src\components\normalform\modalform\styleInput                                                         |          2 |        125 |          0 |         31 |        156 |
+| src\components\paste                                                                                   |          2 |         63 |          0 |         10 |         73 |
+| src\components\qrcode                                                                                  |          2 |         57 |          0 |          9 |         66 |
+| src\components\querylog                                                                                |          1 |         62 |          6 |         15 |         83 |
+| src\components\sidemenu                                                                                |          2 |        228 |         10 |         23 |        261 |
+| src\components\simpleform                                                                              |          2 |        202 |          2 |         12 |        216 |
+| src\components\tabview                                                                                 |          2 |        388 |          7 |         34 |        429 |
+| src\components\video                                                                                   |          2 |        996 |          5 |         94 |      1,095 |
+| src\locales                                                                                            |          8 |        536 |          0 |          0 |        536 |
+| src\locales\en-US                                                                                      |          4 |        268 |          0 |          0 |        268 |
+| src\locales\zh-CN                                                                                      |          4 |        268 |          0 |          0 |        268 |
+| src\menu                                                                                               |        257 |     39,910 |        957 |      4,581 |     45,448 |
+| src\menu\bgcontroller                                                                                  |          2 |        161 |          3 |         25 |        189 |
+| src\menu\components                                                                                    |        188 |     30,299 |        760 |      3,537 |     34,596 |
+| src\menu\components\card                                                                               |         33 |      5,983 |        182 |        765 |      6,930 |
+| src\menu\components\card\balcony                                                                       |          3 |        480 |         12 |         54 |        546 |
+| src\menu\components\card\cardcellcomponent                                                             |         11 |      2,180 |         83 |        223 |      2,486 |
+| src\menu\components\card\cardcellcomponent\dragaction                                                  |          6 |        523 |          8 |         64 |        595 |
+| src\menu\components\card\cardcellcomponent\dragaction\mkProgress                                       |          2 |         31 |          1 |         12 |         44 |
+| src\menu\components\card\cardcellcomponent\elementform                                                 |          2 |        516 |          9 |         34 |        559 |
+| src\menu\components\card\cardcomponent                                                                 |          3 |        603 |         12 |         72 |        687 |
+| src\menu\components\card\cardsimplecomponent                                                           |          9 |        672 |         18 |         92 |        782 |
+| src\menu\components\card\cardsimplecomponent\node-wrap                                                 |          6 |        235 |          3 |         34 |        272 |
+| src\menu\components\card\cardsimplecomponent\node-wrap\menus                                           |          4 |        158 |          3 |         21 |        182 |
+| src\menu\components\card\cardsimplecomponent\node-wrap\menus\columnform                                |          2 |         85 |          2 |          8 |         95 |
+| src\menu\components\card\data-card                                                                     |          3 |      1,004 |         31 |        133 |      1,168 |
+| src\menu\components\card\prop-card                                                                     |          2 |        488 |         12 |         92 |        592 |
+| src\menu\components\card\table-card                                                                    |          2 |        556 |         14 |         99 |        669 |
+| src\menu\components\carousel                                                                           |          5 |        832 |         27 |        136 |        995 |
+| src\menu\components\carousel\data-card                                                                 |          3 |        443 |         15 |         63 |        521 |
+| src\menu\components\carousel\prop-card                                                                 |          2 |        389 |         12 |         73 |        474 |
+| src\menu\components\chart                                                                              |         25 |      6,177 |        170 |        615 |      6,962 |
+| src\menu\components\chart\antv-bar                                                                     |          5 |      2,413 |         76 |        218 |      2,707 |
+| src\menu\components\chart\antv-bar\chartcompile                                                        |          3 |      1,153 |         56 |         60 |      1,269 |
+| src\menu\components\chart\antv-dashboard                                                               |          5 |      1,101 |         24 |        105 |      1,230 |
+| src\menu\components\chart\antv-dashboard\chartcompile                                                  |          3 |        581 |         17 |         40 |        638 |
+| src\menu\components\chart\antv-pie                                                                     |          5 |      1,327 |         20 |        136 |      1,483 |
+| src\menu\components\chart\antv-pie\chartcompile                                                        |          3 |        684 |         14 |         41 |        739 |
+| src\menu\components\chart\antv-scatter                                                                 |          5 |        861 |         20 |         88 |        969 |
+| src\menu\components\chart\antv-scatter\chartcompile                                                    |          3 |        460 |         10 |         27 |        497 |
+| src\menu\components\chart\chart-custom                                                                 |          5 |        475 |         30 |         68 |        573 |
+| src\menu\components\chart\chart-custom\chartcompile                                                    |          3 |        185 |         24 |         21 |        230 |
+| src\menu\components\code                                                                               |          7 |        450 |         19 |         71 |        540 |
+| src\menu\components\code\sandbox                                                                       |          7 |        450 |         19 |         71 |        540 |
+| src\menu\components\code\sandbox\codecontent                                                           |          2 |         91 |          7 |         16 |        114 |
+| src\menu\components\code\sandbox\editorcode                                                            |          2 |        113 |          0 |         18 |        131 |
+| src\menu\components\editor                                                                             |          5 |        374 |          9 |         52 |        435 |
+| src\menu\components\editor\braft-editor                                                                |          5 |        374 |          9 |         52 |        435 |
+| src\menu\components\editor\braft-editor\editorcontent                                                  |          2 |         85 |          0 |         15 |        100 |
+| src\menu\components\form                                                                               |         14 |      2,729 |         73 |        318 |      3,120 |
+| src\menu\components\form\dragtitle                                                                     |          4 |        307 |          3 |         27 |        337 |
+| src\menu\components\form\formaction                                                                    |          5 |        906 |         31 |         74 |      1,011 |
+| src\menu\components\form\formaction\actionform                                                         |          2 |        372 |          8 |         29 |        409 |
+| src\menu\components\form\normal-form                                                                   |          3 |        804 |         21 |        110 |        935 |
+| src\menu\components\form\tab-form                                                                      |          2 |        712 |         18 |        107 |        837 |
+| src\menu\components\group                                                                              |          8 |        613 |          8 |         96 |        717 |
+| src\menu\components\group\groupcomponents                                                              |          3 |        243 |          0 |         34 |        277 |
+| src\menu\components\group\normal-group                                                                 |          3 |        287 |          7 |         43 |        337 |
+| src\menu\components\group\paste                                                                        |          2 |         83 |          1 |         19 |        103 |
+| src\menu\components\module                                                                             |          3 |        230 |         22 |         37 |        289 |
+| src\menu\components\module\voucher                                                                     |          3 |        230 |         22 |         37 |        289 |
+| src\menu\components\search                                                                             |          8 |        882 |         29 |        102 |      1,013 |
+| src\menu\components\search\main-search                                                                 |          8 |        882 |         29 |        102 |      1,013 |
+| src\menu\components\search\main-search\dategroup                                                       |          2 |         63 |          0 |          7 |         70 |
+| src\menu\components\search\main-search\dragsearch                                                      |          3 |        224 |          0 |         27 |        251 |
+| src\menu\components\share                                                                              |         43 |      5,016 |        100 |        556 |      5,672 |
+| src\menu\components\share\actioncomponent                                                              |          8 |      2,318 |         59 |        220 |      2,597 |
+| src\menu\components\share\actioncomponent\actionform                                                   |          2 |        753 |         10 |         93 |        856 |
+| src\menu\components\share\actioncomponent\dragaction                                                   |          3 |        198 |          0 |         34 |        232 |
+| src\menu\components\share\clockcomponent                                                               |          4 |        158 |          1 |         20 |        179 |
+| src\menu\components\share\clockcomponent\settingform                                                   |          2 |         98 |          1 |          9 |        108 |
+| src\menu\components\share\copycomponent                                                                |          2 |         39 |          0 |          9 |         48 |
+| src\menu\components\share\logcomponent                                                                 |          2 |        135 |          0 |         17 |        152 |
+| src\menu\components\share\markcomponent                                                                |          4 |        523 |          1 |         36 |        560 |
+| src\menu\components\share\markcomponent\markform                                                       |          2 |        141 |          1 |          6 |        148 |
+| src\menu\components\share\mobPagination                                                                |          2 |         55 |          0 |          3 |         58 |
+| src\menu\components\share\normalform                                                                   |          2 |        180 |          2 |         13 |        195 |
+| src\menu\components\share\normalheader                                                                 |          2 |        113 |          3 |         21 |        137 |
+| src\menu\components\share\pastecomponent                                                               |          2 |        208 |          0 |         34 |        242 |
+| src\menu\components\share\searchcomponent                                                              |          5 |        495 |         28 |         76 |        599 |
+| src\menu\components\share\searchcomponent\dragsearch                                                   |          3 |        185 |          0 |         26 |        211 |
+| src\menu\components\share\sourcecomponent                                                              |          4 |        383 |          0 |         42 |        425 |
+| src\menu\components\share\sourcecomponent\inputform                                                    |          2 |        247 |          0 |         26 |        273 |
+| src\menu\components\share\styleInput                                                                   |          2 |        123 |          3 |         26 |        152 |
+| src\menu\components\share\usercomponent                                                                |          4 |        286 |          3 |         39 |        328 |
+| src\menu\components\share\usercomponent\settingform                                                    |          2 |         73 |          2 |         13 |         88 |
+| src\menu\components\table                                                                              |         22 |      5,164 |         71 |        534 |      5,769 |
+| src\menu\components\table\edit-table                                                                   |         14 |      3,026 |         44 |        319 |      3,389 |
+| src\menu\components\table\edit-table\columns                                                           |         11 |      2,472 |         30 |        253 |      2,755 |
+| src\menu\components\table\edit-table\columns\editColumn                                                |          3 |        701 |          5 |         39 |        745 |
+| src\menu\components\table\edit-table\columns\tableIn                                                   |          6 |      1,137 |         17 |        119 |      1,273 |
+| src\menu\components\table\edit-table\columns\tableIn\customscript                                      |          2 |        297 |          8 |         43 |        348 |
+| src\menu\components\table\edit-table\columns\tableIn\uniqueform                                        |          2 |        117 |          1 |         12 |        130 |
+| src\menu\components\table\normal-table                                                                 |          8 |      2,138 |         27 |        215 |      2,380 |
+| src\menu\components\table\normal-table\columns                                                         |          5 |      1,424 |         13 |        133 |      1,570 |
+| src\menu\components\table\normal-table\columns\editColumn                                              |          3 |        787 |          5 |         39 |        831 |
+| src\menu\components\tabs                                                                               |          9 |      1,172 |         29 |        174 |      1,375 |
+| src\menu\components\tabs\antv-tabs                                                                     |          4 |        776 |         28 |        109 |        913 |
+| src\menu\components\tabs\paste                                                                         |          2 |        120 |          1 |         29 |        150 |
+| src\menu\components\tabs\tabcomponents                                                                 |          3 |        276 |          0 |         36 |        312 |
+| src\menu\components\timeline                                                                           |          3 |        348 |          9 |         42 |        399 |
+| src\menu\components\timeline\normal-timeline                                                           |          3 |        348 |          9 |         42 |        399 |
+| src\menu\components\tree                                                                               |          3 |        329 |         12 |         39 |        380 |
+| src\menu\components\tree\antd-tree                                                                     |          3 |        329 |         12 |         39 |        380 |
+| src\menu\datasource                                                                                    |         11 |      2,020 |         27 |        220 |      2,267 |
+| src\menu\datasource\verifycard                                                                         |          9 |      1,742 |         27 |        184 |      1,953 |
+| src\menu\datasource\verifycard\columnform                                                              |          2 |        120 |          1 |          8 |        129 |
+| src\menu\datasource\verifycard\customscript                                                            |          2 |        272 |          1 |         31 |        304 |
+| src\menu\datasource\verifycard\settingform                                                             |          2 |        485 |          2 |         31 |        518 |
+| src\menu\header                                                                                        |          2 |        111 |          0 |          9 |        120 |
+| src\menu\menushell                                                                                     |          3 |        280 |          0 |         35 |        315 |
+| src\menu\modalconfig                                                                                   |          3 |        838 |         39 |         80 |        957 |
+| src\menu\modulesource                                                                                  |          5 |        204 |          1 |         25 |        230 |
+| src\menu\modulesource\dragsource                                                                       |          2 |         54 |          0 |          7 |         61 |
+| src\menu\padcontroller                                                                                 |          2 |         90 |          3 |         12 |        105 |
+| src\menu\pastecontroller                                                                               |          2 |        102 |          1 |         26 |        129 |
+| src\menu\picturecontroller                                                                             |          6 |        663 |          1 |         55 |        719 |
+| src\menu\picturecontroller\editform                                                                    |          2 |        176 |          1 |         10 |        187 |
+| src\menu\picturecontroller\video                                                                       |          2 |         74 |          0 |          8 |         82 |
+| src\menu\popview                                                                                       |          4 |        877 |         10 |         95 |        982 |
+| src\menu\popview\menuform                                                                              |          2 |        123 |          3 |         11 |        137 |
+| src\menu\replaceField                                                                                  |          4 |        703 |          6 |         76 |        785 |
+| src\menu\replaceField\settingform                                                                      |          2 |        209 |          2 |         21 |        232 |
+| src\menu\stylecombcontrolbutton                                                                        |          2 |        176 |          3 |         28 |        207 |
+| src\menu\stylecombcontroller                                                                           |          4 |        815 |         36 |         78 |        929 |
+| src\menu\stylecombcontroller\styleInput                                                                |          2 |        132 |          3 |         30 |        165 |
+| src\menu\stylecontroller                                                                               |          4 |      1,038 |         54 |        102 |      1,194 |
+| src\menu\stylecontroller\styleInput                                                                    |          2 |        138 |          3 |         31 |        172 |
+| src\menu\sysinterface                                                                                  |          9 |      1,159 |         10 |        125 |      1,294 |
+| src\menu\sysinterface\settingform                                                                      |          7 |        950 |         10 |         98 |      1,058 |
+| src\menu\sysinterface\settingform\baseform                                                             |          2 |        258 |          1 |         18 |        277 |
+| src\menu\sysinterface\settingform\simplescript                                                         |          2 |        446 |          0 |         50 |        496 |
+| src\menu\urlfieldcomponent                                                                             |          4 |        208 |          2 |         33 |        243 |
+| src\menu\urlfieldcomponent\settingform                                                                 |          2 |         70 |          2 |         11 |         83 |
+| src\menu\versions                                                                                      |          2 |        166 |          1 |         20 |        187 |
+| src\mob                                                                                                |         66 |      7,225 |        266 |        818 |      8,309 |
+| src\mob\colorsketch                                                                                    |          2 |        144 |          0 |         18 |        162 |
+| src\mob\components                                                                                     |         32 |      3,624 |        148 |        449 |      4,221 |
+| src\mob\components\formdragelement                                                                     |          3 |        589 |          2 |         42 |        633 |
+| src\mob\components\menubar                                                                             |          6 |        659 |         22 |         89 |        770 |
+| src\mob\components\menubar\normal-menubar                                                              |          6 |        659 |         22 |         89 |        770 |
+| src\mob\components\menubar\normal-menubar\menucomponent                                                |          3 |        317 |          7 |         33 |        357 |
+| src\mob\components\navbar                                                                              |         10 |        705 |         33 |         94 |        832 |
+| src\mob\components\navbar\normal-navbar                                                                |         10 |        705 |         33 |         94 |        832 |
+| src\mob\components\navbar\normal-navbar\menus                                                          |          7 |        477 |         24 |         61 |        562 |
+| src\mob\components\navbar\normal-navbar\menus\drags                                                    |          3 |        106 |          1 |         16 |        123 |
+| src\mob\components\navbar\normal-navbar\menus\menuform                                                 |          2 |        223 |          1 |         18 |        242 |
+| src\mob\components\search                                                                              |          3 |        287 |         12 |         29 |        328 |
+| src\mob\components\search\single-search                                                                |          3 |        287 |         12 |         29 |        328 |
+| src\mob\components\tabs                                                                                |          7 |        943 |         59 |        147 |      1,149 |
+| src\mob\components\tabs\antv-tabs                                                                      |          4 |        676 |         51 |        111 |        838 |
+| src\mob\components\tabs\tabcomponents                                                                  |          3 |        267 |          8 |         36 |        311 |
+| src\mob\components\topbar                                                                              |          3 |        441 |         20 |         48 |        509 |
+| src\mob\components\topbar\normal-navbar                                                                |          3 |        441 |         20 |         48 |        509 |
+| src\mob\header                                                                                         |          2 |         91 |          0 |          7 |         98 |
+| src\mob\mobshell                                                                                       |          3 |        362 |          4 |         40 |        406 |
+| src\mob\modalconfig                                                                                    |          6 |        956 |         40 |         97 |      1,093 |
+| src\mob\modalconfig\pastecomponent                                                                     |          2 |         62 |          1 |         14 |         77 |
+| src\mob\modulesource                                                                                   |          5 |        198 |          3 |         24 |        225 |
+| src\mob\modulesource\dragsource                                                                        |          2 |         54 |          0 |          7 |         61 |
+| src\mob\searchconfig                                                                                   |         16 |      1,850 |         71 |        183 |      2,104 |
+| src\mob\searchconfig\groupdragelement                                                                  |          3 |        136 |          0 |         21 |        157 |
+| src\mob\searchconfig\groupform                                                                         |          2 |         88 |          1 |         10 |         99 |
+| src\mob\searchconfig\pastecomponent                                                                    |          2 |         46 |          1 |         11 |         58 |
+| src\mob\searchconfig\searchdragelement                                                                 |          3 |        394 |         23 |         37 |        454 |
+| src\mob\searchconfig\settingform                                                                       |          2 |        253 |          1 |         13 |        267 |
+| src\pc                                                                                                 |         41 |      3,702 |        105 |        461 |      4,268 |
+| src\pc\bgcontroller                                                                                    |          2 |        229 |          6 |         31 |        266 |
+| src\pc\components                                                                                      |         19 |      2,263 |         91 |        278 |      2,632 |
+| src\pc\components\login                                                                                |          4 |        616 |         80 |         61 |        757 |
+| src\pc\components\login\normal-login                                                                   |          4 |        616 |         80 |         61 |        757 |
+| src\pc\components\navbar                                                                               |         15 |      1,647 |         11 |        217 |      1,875 |
+| src\pc\components\navbar\normal-navbar                                                                 |         15 |      1,647 |         11 |        217 |      1,875 |
+| src\pc\components\navbar\normal-navbar\linksetting                                                     |          6 |        361 |          1 |         58 |        420 |
+| src\pc\components\navbar\normal-navbar\linksetting\linkform                                            |          2 |        147 |          1 |         18 |        166 |
+| src\pc\components\navbar\normal-navbar\linksetting\linktable                                           |          2 |        152 |          0 |         29 |        181 |
+| src\pc\components\navbar\normal-navbar\menusetting                                                     |          6 |        814 |          1 |        116 |        931 |
+| src\pc\components\navbar\normal-navbar\menusetting\menuform                                            |          2 |        190 |          1 |         18 |        209 |
+| src\pc\components\navbar\normal-navbar\menusetting\menutable                                           |          2 |        561 |          0 |         87 |        648 |
+| src\pc\createview                                                                                      |          4 |        323 |          1 |         38 |        362 |
+| src\pc\createview\settingform                                                                          |          2 |        119 |          1 |         11 |        131 |
+| src\pc\menushell                                                                                       |          3 |        316 |          3 |         40 |        359 |
+| src\pc\modulesource                                                                                    |          5 |        205 |          1 |         24 |        230 |
+| src\pc\modulesource\dragsource                                                                         |          2 |         54 |          0 |          7 |         61 |
+| src\pc\quotecomponent                                                                                  |          4 |        195 |          1 |         26 |        222 |
+| src\pc\quotecomponent\settingform                                                                      |          2 |         76 |          1 |         10 |         87 |
+| src\pc\transfer                                                                                        |          4 |        171 |          2 |         24 |        197 |
+| src\pc\transfer\settingform                                                                            |          2 |         58 |          2 |          9 |         69 |
+| src\router                                                                                             |          1 |        100 |          1 |         13 |        114 |
+| src\store                                                                                              |          5 |        180 |         35 |         24 |        239 |
+| src\tabviews                                                                                           |        187 |     42,159 |      1,723 |      5,982 |     49,864 |
+| src\tabviews\calendar                                                                                  |          2 |        512 |         33 |         87 |        632 |
+| src\tabviews\commontable                                                                               |          2 |      1,178 |         60 |        157 |      1,395 |
+| src\tabviews\custom                                                                                    |         67 |     16,421 |        525 |      2,404 |     19,350 |
+| src\tabviews\custom\components                                                                         |         65 |     15,324 |        496 |      2,255 |     18,075 |
+| src\tabviews\custom\components\card                                                                    |         13 |      3,123 |         70 |        473 |      3,666 |
+| src\tabviews\custom\components\card\balcony                                                            |          2 |        360 |          9 |         73 |        442 |
+| src\tabviews\custom\components\card\cardItem                                                           |          2 |        211 |          6 |         35 |        252 |
+| src\tabviews\custom\components\card\cardcellList                                                       |          3 |        882 |         16 |        102 |      1,000 |
+| src\tabviews\custom\components\card\data-card                                                          |          2 |        812 |         12 |        111 |        935 |
+| src\tabviews\custom\components\card\prop-card                                                          |          2 |        411 |          9 |         75 |        495 |
+| src\tabviews\custom\components\card\table-card                                                         |          2 |        447 |         18 |         77 |        542 |
+| src\tabviews\custom\components\carousel                                                                |          6 |        666 |         24 |        117 |        807 |
+| src\tabviews\custom\components\carousel\cardItem                                                       |          2 |        132 |          6 |         22 |        160 |
+| src\tabviews\custom\components\carousel\data-card                                                      |          2 |        273 |          9 |         47 |        329 |
+| src\tabviews\custom\components\carousel\prop-card                                                      |          2 |        261 |          9 |         48 |        318 |
+| src\tabviews\custom\components\chart                                                                   |         12 |      4,141 |        136 |        596 |      4,873 |
+| src\tabviews\custom\components\chart\antv-bar-line                                                     |          3 |      1,651 |         52 |        234 |      1,937 |
+| src\tabviews\custom\components\chart\antv-dashboard                                                    |          2 |        634 |         13 |         82 |        729 |
+| src\tabviews\custom\components\chart\antv-pie                                                          |          2 |        999 |         16 |        141 |      1,156 |
+| src\tabviews\custom\components\chart\antv-scatter                                                      |          3 |        498 |         29 |         75 |        602 |
+| src\tabviews\custom\components\chart\custom-chart                                                      |          2 |        359 |         26 |         64 |        449 |
+| src\tabviews\custom\components\code                                                                    |          2 |        219 |          4 |         36 |        259 |
+| src\tabviews\custom\components\code\sand-box                                                           |          2 |        219 |          4 |         36 |        259 |
+| src\tabviews\custom\components\editor                                                                  |          2 |        196 |          3 |         34 |        233 |
+| src\tabviews\custom\components\editor\braft-editor                                                     |          2 |        196 |          3 |         34 |        233 |
+| src\tabviews\custom\components\form                                                                    |          4 |        806 |         22 |        138 |        966 |
+| src\tabviews\custom\components\form\normal-form                                                        |          2 |        430 |         11 |         75 |        516 |
+| src\tabviews\custom\components\form\tab-form                                                           |          2 |        376 |         11 |         63 |        450 |
+| src\tabviews\custom\components\group                                                                   |          2 |        328 |          5 |         38 |        371 |
+| src\tabviews\custom\components\group\normal-group                                                      |          2 |        328 |          5 |         38 |        371 |
+| src\tabviews\custom\components\module                                                                  |          4 |        980 |         53 |        151 |      1,184 |
+| src\tabviews\custom\components\module\voucher                                                          |          4 |        980 |         53 |        151 |      1,184 |
+| src\tabviews\custom\components\module\voucher\voucherTable                                             |          2 |        825 |         48 |        124 |        997 |
+| src\tabviews\custom\components\share                                                                   |          8 |      1,458 |         37 |        207 |      1,702 |
+| src\tabviews\custom\components\share\braftContent                                                      |          2 |         72 |          0 |         12 |         84 |
+| src\tabviews\custom\components\share\normalTable                                                       |          2 |      1,008 |         29 |        154 |      1,191 |
+| src\tabviews\custom\components\share\normalheader                                                      |          2 |         90 |          3 |         13 |        106 |
+| src\tabviews\custom\components\share\tabtransfer                                                       |          2 |        288 |          5 |         28 |        321 |
+| src\tabviews\custom\components\table                                                                   |          6 |      2,414 |         97 |        304 |      2,815 |
+| src\tabviews\custom\components\table\edit-table                                                        |          4 |      1,728 |         59 |        223 |      2,010 |
+| src\tabviews\custom\components\table\edit-table\normalTable                                            |          2 |      1,191 |         24 |        164 |      1,379 |
+| src\tabviews\custom\components\table\normal-table                                                      |          2 |        686 |         38 |         81 |        805 |
+| src\tabviews\custom\components\tabs                                                                    |          2 |        137 |          3 |         27 |        167 |
+| src\tabviews\custom\components\tabs\antv-tabs                                                          |          2 |        137 |          3 |         27 |        167 |
+| src\tabviews\custom\components\timeline                                                                |          2 |        358 |         22 |         57 |        437 |
+| src\tabviews\custom\components\timeline\normal-timeline                                                |          2 |        358 |         22 |         57 |        437 |
+| src\tabviews\custom\components\tree                                                                    |          2 |        498 |         20 |         77 |        595 |
+| src\tabviews\custom\components\tree\antd-tree                                                          |          2 |        498 |         20 |         77 |        595 |
+| src\tabviews\formtab                                                                                   |          6 |      1,650 |         69 |        224 |      1,943 |
+| src\tabviews\formtab\actionList                                                                        |          2 |        308 |         32 |         47 |        387 |
+| src\tabviews\formtab\formgroup                                                                         |          2 |        686 |          4 |         82 |        772 |
+| src\tabviews\home                                                                                      |          4 |        570 |          0 |         20 |        590 |
+| src\tabviews\home\defaulthome                                                                          |          2 |        474 |          0 |          8 |        482 |
+| src\tabviews\iframe                                                                                    |          1 |         37 |          3 |         10 |         50 |
+| src\tabviews\rolemanage                                                                                |          2 |        917 |         61 |        114 |      1,092 |
+| src\tabviews\scriptmanage                                                                              |          5 |        690 |         67 |         84 |        841 |
+| src\tabviews\scriptmanage\actionList                                                                   |          2 |        262 |         32 |         36 |        330 |
+| src\tabviews\subtable                                                                                  |          2 |      1,004 |         56 |        143 |      1,203 |
+| src\tabviews\subtabtable                                                                               |          2 |        816 |         47 |        122 |        985 |
+| src\tabviews\tabmanage                                                                                 |          6 |        747 |          5 |         80 |        832 |
+| src\tabviews\tabmanage\mutilform                                                                       |          2 |        137 |          1 |          8 |        146 |
+| src\tabviews\tabmanage\transferform                                                                    |          2 |         41 |          0 |          9 |         50 |
+| src\tabviews\treepage                                                                                  |          2 |        711 |         29 |         96 |        836 |
+| src\tabviews\verupmanage                                                                               |          7 |      1,767 |        140 |        236 |      2,143 |
+| src\tabviews\verupmanage\actionList                                                                    |          2 |        682 |         51 |        102 |        835 |
+| src\tabviews\verupmanage\subtabtable                                                                   |          2 |        441 |         43 |         64 |        548 |
+| src\tabviews\zshare                                                                                    |         79 |     15,139 |        628 |      2,205 |     17,972 |
+| src\tabviews\zshare\actionList                                                                         |         21 |      5,654 |        478 |        876 |      7,008 |
+| src\tabviews\zshare\actionList\changeuserbutton                                                        |          2 |        240 |         10 |         37 |        287 |
+| src\tabviews\zshare\actionList\excelInbutton                                                           |          4 |        556 |         34 |         80 |        670 |
+| src\tabviews\zshare\actionList\excelInbutton\excelin                                                   |          2 |        102 |          5 |         18 |        125 |
+| src\tabviews\zshare\actionList\exceloutbutton                                                          |          2 |        807 |         47 |        137 |        991 |
+| src\tabviews\zshare\actionList\newpagebutton                                                           |          2 |        252 |          7 |         34 |        293 |
+| src\tabviews\zshare\actionList\normalbutton                                                            |          2 |      1,808 |         85 |        273 |      2,166 |
+| src\tabviews\zshare\actionList\popupbutton                                                             |          2 |        363 |         13 |         43 |        419 |
+| src\tabviews\zshare\actionList\printbutton                                                             |          2 |      1,184 |        271 |        216 |      1,671 |
+| src\tabviews\zshare\actionList\tabbutton                                                               |          2 |        225 |          6 |         36 |        267 |
+| src\tabviews\zshare\automatic                                                                          |          2 |        186 |          3 |         39 |        228 |
+| src\tabviews\zshare\calendar                                                                           |          2 |        556 |          1 |         50 |        607 |
+| src\tabviews\zshare\cardcomponent                                                                      |          3 |      1,023 |         31 |        130 |      1,184 |
+| src\tabviews\zshare\chartcomponent                                                                     |          3 |      1,064 |         46 |        154 |      1,264 |
+| src\tabviews\zshare\fileupload                                                                         |          2 |        445 |          4 |         73 |        522 |
+| src\tabviews\zshare\mutilform                                                                          |         22 |      1,907 |         30 |        322 |      2,259 |
+| src\tabviews\zshare\mutilform\mkCheckCard                                                              |          2 |        284 |          1 |         37 |        322 |
+| src\tabviews\zshare\mutilform\mkCheckbox                                                               |          2 |         30 |          0 |          8 |         38 |
+| src\tabviews\zshare\mutilform\mkColor                                                                  |          2 |         89 |          0 |         12 |        101 |
+| src\tabviews\zshare\mutilform\mkDatePicker                                                             |          2 |         68 |          3 |         17 |         88 |
+| src\tabviews\zshare\mutilform\mkInput                                                                  |          2 |         79 |          3 |         18 |        100 |
+| src\tabviews\zshare\mutilform\mkNumberInput                                                            |          2 |         61 |          1 |         17 |         79 |
+| src\tabviews\zshare\mutilform\mkRadio                                                                  |          2 |        120 |          0 |         27 |        147 |
+| src\tabviews\zshare\mutilform\mkSelect                                                                 |          2 |        182 |          0 |         30 |        212 |
+| src\tabviews\zshare\mutilform\mkSwitch                                                                 |          2 |         33 |          0 |          9 |         42 |
+| src\tabviews\zshare\mutilform\mkTextArea                                                               |          2 |         75 |          0 |         18 |         93 |
+| src\tabviews\zshare\normalTable                                                                        |          2 |      1,461 |         13 |        189 |      1,663 |
+| src\tabviews\zshare\pageMessage                                                                        |          2 |        336 |          5 |         47 |        388 |
+| src\tabviews\zshare\settingcomponent                                                                   |          4 |        896 |          2 |        104 |      1,002 |
+| src\tabviews\zshare\settingcomponent\editTable                                                         |          2 |        357 |          0 |         32 |        389 |
+| src\tabviews\zshare\topSearch                                                                          |         16 |      1,611 |         15 |        221 |      1,847 |
+| src\tabviews\zshare\topSearch\advanceform                                                              |          2 |        140 |          1 |         16 |        157 |
+| src\tabviews\zshare\topSearch\dategroup                                                                |          6 |        546 |          0 |         56 |        602 |
+| src\tabviews\zshare\topSearch\dategroup\quarterpicker                                                  |          2 |        175 |          0 |         19 |        194 |
+| src\tabviews\zshare\topSearch\dategroup\yearpicker                                                     |          2 |        151 |          0 |         19 |        170 |
+| src\tabviews\zshare\topSearch\mkDatePicker                                                             |          2 |         73 |          3 |         16 |         92 |
+| src\tabviews\zshare\topSearch\mkInput                                                                  |          2 |         14 |          0 |          5 |         19 |
+| src\tabviews\zshare\topSearch\mkSelect                                                                 |          2 |         97 |          0 |         25 |        122 |
+| src\templates                                                                                          |        241 |     45,591 |      1,096 |      4,258 |     50,945 |
+| src\templates\calendarconfig                                                                           |         11 |      1,648 |        108 |        167 |      1,923 |
+| src\templates\calendarconfig\calcomponent                                                              |          4 |        265 |         11 |         20 |        296 |
+| src\templates\calendarconfig\calcomponent\calendarform                                                 |          2 |        151 |          2 |          5 |        158 |
+| src\templates\calendarconfig\tabcomponent                                                              |          4 |        377 |         19 |         41 |        437 |
+| src\templates\calendarconfig\tabcomponent\tabform                                                      |          2 |        202 |          7 |         23 |        232 |
+| src\templates\comtableconfig                                                                           |          5 |      1,962 |         65 |        169 |      2,196 |
+| src\templates\comtableconfig\menuform                                                                  |          2 |        239 |          0 |         16 |        255 |
+| src\templates\formtabconfig                                                                            |         16 |      3,762 |         72 |        354 |      4,188 |
+| src\templates\formtabconfig\actionform                                                                 |          2 |        442 |          1 |         33 |        476 |
+| src\templates\formtabconfig\dragelement                                                                |          5 |        349 |          1 |         42 |        392 |
+| src\templates\formtabconfig\groupform                                                                  |          2 |        111 |          3 |         17 |        131 |
+| src\templates\formtabconfig\settingform                                                                |          2 |        340 |          1 |         26 |        367 |
+| src\templates\formtabconfig\transferform                                                               |          2 |         67 |          0 |         12 |         79 |
+| src\templates\menuconfig                                                                               |         22 |      3,038 |         44 |        207 |      3,289 |
+| src\templates\menuconfig\editfirstmenu                                                                 |          8 |        875 |          9 |         60 |        944 |
+| src\templates\menuconfig\editfirstmenu\dragelement                                                     |          4 |        178 |          0 |         19 |        197 |
+| src\templates\menuconfig\editfirstmenu\menuform                                                        |          2 |        240 |          2 |         15 |        257 |
+| src\templates\menuconfig\editsecmenu                                                                   |          2 |        520 |          2 |         22 |        544 |
+| src\templates\menuconfig\editthdmenu                                                                   |          6 |      1,304 |         31 |         99 |      1,434 |
+| src\templates\menuconfig\editthdmenu\menuform                                                          |          2 |        156 |          2 |         14 |        172 |
+| src\templates\menuconfig\editthdmenu\preview                                                           |          2 |         90 |          0 |          7 |         97 |
+| src\templates\menuconfig\menuelement                                                                   |          4 |        185 |          0 |         15 |        200 |
+| src\templates\menuconfig\menuform                                                                      |          2 |        154 |          2 |         11 |        167 |
+| src\templates\modalconfig                                                                              |         17 |      2,283 |         52 |        201 |      2,536 |
+| src\templates\modalconfig\checkCard                                                                    |          2 |        107 |          0 |         11 |        118 |
+| src\templates\modalconfig\dragelement                                                                  |          4 |        407 |          1 |         39 |        447 |
+| src\templates\modalconfig\editcard                                                                     |          2 |        152 |          0 |         13 |        165 |
+| src\templates\modalconfig\menuform                                                                     |          2 |         91 |          1 |          6 |         98 |
+| src\templates\modalconfig\settingform                                                                  |          2 |        292 |          7 |         15 |        314 |
+| src\templates\modalconfig\transferform                                                                 |          2 |         67 |          0 |         12 |         79 |
+| src\templates\sharecomponent                                                                           |        105 |     17,703 |        400 |      1,874 |     19,977 |
+| src\templates\sharecomponent\actioncomponent                                                           |         23 |      4,735 |         89 |        507 |      5,331 |
+| src\templates\sharecomponent\actioncomponent\actionform                                                |          2 |        645 |          4 |         81 |        730 |
+| src\templates\sharecomponent\actioncomponent\dragaction                                                |          3 |        216 |          1 |         34 |        251 |
+| src\templates\sharecomponent\actioncomponent\verifyexcelin                                             |          8 |      1,516 |         18 |        147 |      1,681 |
+| src\templates\sharecomponent\actioncomponent\verifyexcelin\columnform                                  |          2 |        174 |          1 |         10 |        185 |
+| src\templates\sharecomponent\actioncomponent\verifyexcelin\customscript                                |          2 |        309 |          8 |         46 |        363 |
+| src\templates\sharecomponent\actioncomponent\verifyexcelin\uniqueform                                  |          2 |        117 |          1 |         12 |        130 |
+| src\templates\sharecomponent\actioncomponent\verifyexcelout                                            |          4 |        751 |          6 |         68 |        825 |
+| src\templates\sharecomponent\actioncomponent\verifyexcelout\columnform                                 |          2 |         99 |          1 |          6 |        106 |
+| src\templates\sharecomponent\actioncomponent\verifyprint                                               |          4 |        748 |          1 |         63 |        812 |
+| src\templates\sharecomponent\actioncomponent\verifyprint\editable                                      |          2 |        264 |          0 |         26 |        290 |
+| src\templates\sharecomponent\cardcomponent                                                             |          7 |      1,050 |          3 |        108 |      1,161 |
+| src\templates\sharecomponent\cardcomponent\carddetailform                                              |          2 |        277 |          2 |         24 |        303 |
+| src\templates\sharecomponent\cardcomponent\dragdetail                                                  |          3 |        145 |          0 |         16 |        161 |
+| src\templates\sharecomponent\chartcomponent                                                            |          4 |      1,071 |          0 |        161 |      1,232 |
+| src\templates\sharecomponent\chartcomponent\chartcompile                                               |          2 |        530 |          0 |         59 |        589 |
+| src\templates\sharecomponent\chartgroupcomponent                                                       |          7 |        925 |         29 |         99 |      1,053 |
+| src\templates\sharecomponent\chartgroupcomponent\chartform                                             |          2 |        530 |          2 |         33 |        565 |
+| src\templates\sharecomponent\chartgroupcomponent\dragchartview                                         |          3 |        140 |          0 |         24 |        164 |
+| src\templates\sharecomponent\columncomponent                                                           |         15 |      2,168 |         64 |        212 |      2,444 |
+| src\templates\sharecomponent\columncomponent\colspanform                                               |          2 |        196 |          2 |         14 |        212 |
+| src\templates\sharecomponent\columncomponent\columnform                                                |          2 |        351 |          4 |         30 |        385 |
+| src\templates\sharecomponent\columncomponent\dragcolumn                                                |          3 |        234 |          2 |         29 |        265 |
+| src\templates\sharecomponent\columncomponent\gridbtnform                                               |          2 |        194 |          2 |          9 |        205 |
+| src\templates\sharecomponent\columncomponent\markcolumn                                                |          4 |        606 |         16 |         57 |        679 |
+| src\templates\sharecomponent\columncomponent\markcolumn\markform                                       |          2 |        335 |         16 |         27 |        378 |
+| src\templates\sharecomponent\fieldscomponent                                                           |          4 |        494 |         10 |         55 |        559 |
+| src\templates\sharecomponent\fieldscomponent\editcard                                                  |          2 |        214 |          0 |         26 |        240 |
+| src\templates\sharecomponent\searchcomponent                                                           |         11 |      1,709 |         42 |        191 |      1,942 |
+| src\templates\sharecomponent\searchcomponent\dategroup                                                 |          2 |         63 |          0 |          7 |         70 |
+| src\templates\sharecomponent\searchcomponent\dragsearch                                                |          3 |        259 |          0 |         36 |        295 |
+| src\templates\sharecomponent\searchcomponent\searcheditable                                            |          2 |        326 |          0 |         26 |        352 |
+| src\templates\sharecomponent\searchcomponent\searchform                                                |          2 |        686 |          3 |         69 |        758 |
+| src\templates\sharecomponent\settingcalcomponent                                                       |          9 |      1,164 |         34 |        120 |      1,318 |
+| src\templates\sharecomponent\settingcalcomponent\verifycard                                            |          7 |        999 |         34 |         99 |      1,132 |
+| src\templates\sharecomponent\settingcalcomponent\verifycard\columnform                                 |          2 |        133 |          1 |         12 |        146 |
+| src\templates\sharecomponent\settingcalcomponent\verifycard\settingform                                |          2 |        314 |         16 |         25 |        355 |
+| src\templates\sharecomponent\settingcomponent                                                          |          9 |      2,224 |         48 |        190 |      2,462 |
+| src\templates\sharecomponent\settingcomponent\settingform                                              |          7 |      2,023 |         33 |        160 |      2,216 |
+| src\templates\sharecomponent\settingcomponent\settingform\datasource                                   |          2 |        821 |          3 |         28 |        852 |
+| src\templates\sharecomponent\settingcomponent\settingform\simplescript                                 |          2 |        485 |          0 |         53 |        538 |
+| src\templates\sharecomponent\tablecomponent                                                            |          2 |        275 |         15 |         35 |        325 |
+| src\templates\sharecomponent\tabscomponent                                                             |          7 |        893 |         44 |        111 |      1,048 |
+| src\templates\sharecomponent\tabscomponent\tabdragelement                                              |          3 |        160 |          0 |         27 |        187 |
+| src\templates\sharecomponent\tabscomponent\tabform                                                     |          2 |        302 |          9 |         30 |        341 |
+| src\templates\sharecomponent\treesettingcomponent                                                      |          7 |        995 |         22 |         85 |      1,102 |
+| src\templates\sharecomponent\treesettingcomponent\settingform                                          |          5 |        864 |         13 |         71 |        948 |
+| src\templates\sharecomponent\treesettingcomponent\settingform\datasource                               |          2 |        494 |          3 |         27 |        524 |
+| src\templates\subtableconfig                                                                           |          5 |      1,657 |         55 |        146 |      1,858 |
+| src\templates\subtableconfig\menuform                                                                  |          2 |        106 |          0 |         11 |        117 |
+| src\templates\treepageconfig                                                                           |          3 |        995 |         52 |         96 |      1,143 |
+| src\templates\zshare                                                                                   |         57 |     12,543 |        248 |      1,044 |     13,835 |
+| src\templates\zshare\basetransferform                                                                  |          2 |         43 |          0 |          9 |         52 |
+| src\templates\zshare\codemirror                                                                        |          2 |        228 |          2 |         20 |        250 |
+| src\templates\zshare\createfunc                                                                        |          2 |        179 |         11 |         25 |        215 |
+| src\templates\zshare\createinterface                                                                   |          4 |      1,065 |         51 |        170 |      1,286 |
+| src\templates\zshare\createinterface\mutilform                                                         |          2 |        132 |          2 |         12 |        146 |
+| src\templates\zshare\customscript                                                                      |          2 |        423 |          0 |         50 |        473 |
+| src\templates\zshare\dragsource                                                                        |          2 |         21 |          0 |          1 |         22 |
+| src\templates\zshare\editTable                                                                         |          4 |        740 |          1 |        100 |        841 |
+| src\templates\zshare\editTable\cusSwitch                                                               |          2 |         82 |          1 |         11 |         94 |
+| src\templates\zshare\editcard                                                                          |          2 |        191 |          0 |         18 |        209 |
+| src\templates\zshare\editcomponent                                                                     |          2 |        211 |          6 |         25 |        242 |
+| src\templates\zshare\menuform                                                                          |          2 |        122 |          1 |         11 |        134 |
+| src\templates\zshare\modalform                                                                         |          8 |      1,778 |          6 |        213 |      1,997 |
+| src\templates\zshare\modalform\datatable                                                               |          2 |        471 |          1 |         56 |        528 |
+| src\templates\zshare\modalform\fieldtable                                                              |          2 |        129 |          0 |         17 |        146 |
+| src\templates\zshare\modalform\modaleditable                                                           |          2 |        481 |          0 |         57 |        538 |
+| src\templates\zshare\pasteform                                                                         |          2 |         90 |          1 |         10 |        101 |
+| src\templates\zshare\transferform                                                                      |          2 |        141 |          0 |         24 |        165 |
+| src\templates\zshare\unattended                                                                        |          4 |        237 |          2 |         21 |        260 |
+| src\templates\zshare\unattended\settingform                                                            |          2 |        163 |          2 |          9 |        174 |
+| src\templates\zshare\verifycard                                                                        |         16 |      3,563 |         35 |        308 |      3,906 |
+| src\templates\zshare\verifycard\billcodeform                                                           |          2 |        347 |          5 |         30 |        382 |
+| src\templates\zshare\verifycard\callbackcustomscript                                                   |          2 |        264 |          8 |         34 |        306 |
+| src\templates\zshare\verifycard\contrastform                                                           |          2 |        134 |          1 |          6 |        141 |
+| src\templates\zshare\verifycard\customform                                                             |          2 |        232 |          3 |         24 |        259 |
+| src\templates\zshare\verifycard\customscript                                                           |          2 |        292 |         10 |         36 |        338 |
+| src\templates\zshare\verifycard\uniqueform                                                             |          2 |        117 |          1 |         10 |        128 |
+| src\templates\zshare\verifycard\voucherform                                                            |          2 |        243 |          1 |         26 |        270 |
+| src\utils                                                                                              |         10 |      4,461 |        425 |        637 |      5,523 |
+| src\views                                                                                              |         86 |     18,910 |        322 |      1,978 |     21,210 |
+| src\views\404                                                                                          |          2 |         37 |          0 |          4 |         41 |
+| src\views\appcheck                                                                                     |          4 |        407 |          6 |         37 |        450 |
+| src\views\appcheck\header                                                                              |          2 |         82 |          0 |          6 |         88 |
+| src\views\appmanage                                                                                    |         12 |      1,922 |         98 |        186 |      2,206 |
+| src\views\appmanage\header                                                                             |          2 |         82 |          0 |          6 |         88 |
+| src\views\appmanage\mutilform                                                                          |          2 |         76 |          7 |          7 |         90 |
+| src\views\appmanage\scriptform                                                                         |          2 |        227 |          6 |         31 |        264 |
+| src\views\appmanage\submutilform                                                                       |          2 |        253 |         69 |         15 |        337 |
+| src\views\appmanage\transform                                                                          |          2 |         76 |          7 |          7 |         90 |
+| src\views\billprint                                                                                    |          2 |        608 |         16 |         99 |        723 |
+| src\views\design                                                                                       |          9 |      1,648 |         40 |        159 |      1,847 |
+| src\views\design\header                                                                                |          4 |        986 |         14 |        114 |      1,114 |
+| src\views\design\header\versions                                                                       |          2 |        420 |          0 |         59 |        479 |
+| src\views\design\sidemenu                                                                              |          3 |        615 |         26 |         39 |        680 |
+| src\views\imdesign                                                                                     |          5 |        941 |         12 |         97 |      1,050 |
+| src\views\imdesign\menuform                                                                            |          2 |         92 |          2 |          8 |        102 |
+| src\views\interface                                                                                    |         13 |      1,505 |         20 |        181 |      1,706 |
+| src\views\interface\api                                                                                |          1 |        142 |         11 |         22 |        175 |
+| src\views\interface\header                                                                             |          2 |         97 |          0 |         12 |        109 |
+| src\views\interface\history                                                                            |          2 |        362 |          3 |         39 |        404 |
+| src\views\interface\workspace                                                                          |          6 |        875 |          6 |        103 |        984 |
+| src\views\interface\workspace\editTable                                                                |          2 |        304 |          0 |         32 |        336 |
+| src\views\interface\workspace\request                                                                  |          2 |        413 |          3 |         56 |        472 |
+| src\views\login                                                                                        |          4 |      1,569 |         44 |        171 |      1,784 |
+| src\views\main                                                                                         |          2 |         40 |          0 |          7 |         47 |
+| src\views\menudesign                                                                                   |          8 |      1,936 |         12 |        181 |      2,129 |
+| src\views\menudesign\homeform                                                                          |          2 |        161 |          2 |         19 |        182 |
+| src\views\menudesign\menuform                                                                          |          2 |        363 |          5 |         26 |        394 |
+| src\views\menudesign\printmenuform                                                                     |          2 |        236 |          1 |         21 |        258 |
+| src\views\mobdesign                                                                                    |          4 |      2,104 |          8 |        235 |      2,347 |
+| src\views\mobdesign\menuform                                                                           |          2 |        264 |          3 |         13 |        280 |
+| src\views\pay                                                                                          |          2 |        404 |         14 |         38 |        456 |
+| src\views\pcdesign                                                                                     |          4 |      2,026 |          7 |        226 |      2,259 |
+| src\views\pcdesign\menuform                                                                            |          2 |        184 |          3 |         13 |        200 |
+| src\views\printTemplate                                                                                |          9 |      2,641 |         39 |        216 |      2,896 |
+| src\views\printTemplate\dragelement                                                                    |          3 |         53 |          0 |         10 |         63 |
+| src\views\printTemplate\mutilform                                                                      |          2 |        339 |          9 |         32 |        380 |
+| src\views\rolemanage                                                                                   |          4 |        984 |          4 |        120 |      1,108 |
+| src\views\rolemanage\header                                                                            |          2 |         84 |          0 |          6 |         90 |
+| src\views\sso                                                                                          |          2 |        138 |          2 |         21 |        161 |
++--------------------------------------------------------------------------------------------------------+------------+------------+------------+------------+------------+
+
+Files
++--------------------------------------------------------------------------------------------------------+------------------+------------+------------+------------+------------+
+| filename                                                                                               | language         | code       | comment    | blank      | total      |
++--------------------------------------------------------------------------------------------------------+------------------+------------+------------+------------+------------+
+| e:\project\pc-plat\README.md                                                                           | Markdown         |         39 |          0 |         34 |         73 |
+| e:\project\pc-plat\config\env.js                                                                       | JavaScript       |         54 |         29 |         11 |         94 |
+| e:\project\pc-plat\config\jest\cssTransform.js                                                         | JavaScript       |          9 |          3 |          3 |         15 |
+| e:\project\pc-plat\config\jest\fileTransform.js                                                        | JavaScript       |         31 |          4 |          6 |         41 |
+| e:\project\pc-plat\config\modules.js                                                                   | JavaScript       |         51 |         21 |         17 |         89 |
+| e:\project\pc-plat\config\paths.js                                                                     | JavaScript       |         65 |         11 |         15 |         91 |
+| e:\project\pc-plat\config\pnpTs.js                                                                     | JavaScript       |         31 |          1 |          4 |         36 |
+| e:\project\pc-plat\config\webpack.config.js                                                            | JavaScript       |        430 |        213 |         18 |        661 |
+| e:\project\pc-plat\config\webpackDevServer.config.js                                                   | JavaScript       |         40 |         59 |          6 |        105 |
+| e:\project\pc-plat\package-lock.json                                                                   | JSON             |     21,413 |          0 |          1 |     21,414 |
+| e:\project\pc-plat\package.json                                                                        | JSON             |        201 |          0 |          1 |        202 |
+| e:\project\pc-plat\public\admin.html                                                                   | HTML             |         38 |          0 |          1 |         39 |
+| e:\project\pc-plat\public\index.html                                                                   | HTML             |         23 |          1 |          1 |         25 |
+| e:\project\pc-plat\public\manifest.json                                                                | JSON             |          9 |          0 |          1 |         10 |
+| e:\project\pc-plat\public\options.json                                                                 | JSON             |         17 |          0 |          0 |         17 |
+| e:\project\pc-plat\scripts\build.js                                                                    | JavaScript       |        152 |         24 |         19 |        195 |
+| e:\project\pc-plat\scripts\start.js                                                                    | JavaScript       |        112 |         20 |         14 |        146 |
+| e:\project\pc-plat\scripts\test.js                                                                     | JavaScript       |         36 |          7 |         11 |         54 |
+| e:\project\pc-plat\src\api\cacheutils.js                                                               | JavaScript       |        288 |         67 |         45 |        400 |
+| e:\project\pc-plat\src\api\index.js                                                                    | JavaScript       |        671 |        105 |        104 |        880 |
+| e:\project\pc-plat\src\assets\css\action.scss                                                          | SCSS             |        181 |         13 |         22 |        216 |
+| e:\project\pc-plat\src\assets\css\iconfont.css                                                         | CSS              |         33 |          0 |         23 |         56 |
+| e:\project\pc-plat\src\assets\css\main.scss                                                            | SCSS             |        394 |         23 |         29 |        446 |
+| e:\project\pc-plat\src\assets\css\minkeicon.css                                                        | CSS              |         43 |          5 |          4 |         52 |
+| e:\project\pc-plat\src\assets\css\table.scss                                                           | SCSS             |        814 |         30 |         28 |        872 |
+| e:\project\pc-plat\src\assets\css\viewstyle.scss                                                       | SCSS             |        586 |         27 |         10 |        623 |
+| e:\project\pc-plat\src\assets\font\iconfont.js                                                         | JavaScript       |          1 |          0 |          0 |          1 |
+| e:\project\pc-plat\src\assets\font\iconfont.svg                                                        | XML              |         38 |          3 |         43 |         84 |
+| e:\project\pc-plat\src\assets\font\minkeicon.svg                                                       | XML              |         18 |          0 |          0 |         18 |
+| e:\project\pc-plat\src\assets\mobimg\slider-thumb.svg                                                  | XML              |         14 |          0 |          1 |         15 |
+| e:\project\pc-plat\src\components\404\index.jsx                                                        | JavaScript React |         19 |          0 |          2 |         21 |
+| e:\project\pc-plat\src\components\404\index.scss                                                       | SCSS             |         13 |          0 |          1 |         14 |
+| e:\project\pc-plat\src\components\Image\index.jsx                                                      | JavaScript React |         46 |          0 |         10 |         56 |
+| e:\project\pc-plat\src\components\Image\index.scss                                                     | SCSS             |         12 |          0 |          2 |         14 |
+| e:\project\pc-plat\src\components\barcode\index.jsx                                                    | JavaScript React |         53 |          0 |         12 |         65 |
+| e:\project\pc-plat\src\components\barcode\index.scss                                                   | SCSS             |         15 |          0 |          1 |         16 |
+| e:\project\pc-plat\src\components\breadview\index.jsx                                                  | JavaScript React |        176 |          5 |         26 |        207 |
+| e:\project\pc-plat\src\components\breadview\index.scss                                                 | SCSS             |         46 |          0 |          1 |         47 |
+| e:\project\pc-plat\src\components\editor\index.jsx                                                     | JavaScript React |        213 |          1 |         34 |        248 |
+| e:\project\pc-plat\src\components\editor\index.scss                                                    | SCSS             |         29 |          0 |          1 |         30 |
+| e:\project\pc-plat\src\components\header\index.jsx                                                     | JavaScript React |        788 |         15 |         87 |        890 |
+| e:\project\pc-plat\src\components\header\index.scss                                                    | SCSS             |        216 |          0 |          6 |        222 |
+| e:\project\pc-plat\src\components\header\loginform.jsx                                                 | JavaScript React |        114 |          1 |         15 |        130 |
+| e:\project\pc-plat\src\components\header\resetpwd\index.jsx                                            | JavaScript React |        140 |          2 |         16 |        158 |
+| e:\project\pc-plat\src\components\imgScale\index.jsx                                                   | JavaScript React |        217 |          0 |         54 |        271 |
+| e:\project\pc-plat\src\components\imgScale\index.scss                                                  | SCSS             |        233 |          0 |          6 |        239 |
+| e:\project\pc-plat\src\components\loading\index.jsx                                                    | JavaScript React |         10 |          0 |          2 |         12 |
+| e:\project\pc-plat\src\components\lostsvg\index.jsx                                                    | JavaScript React |         72 |          0 |          2 |         74 |
+| e:\project\pc-plat\src\components\mk-icon\index.jsx                                                    | JavaScript React |        465 |          0 |          9 |        474 |
+| e:\project\pc-plat\src\components\mk-icon\index.scss                                                   | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\components\mkIcon\index.jsx                                                     | JavaScript React |         71 |          1 |         13 |         85 |
+| e:\project\pc-plat\src\components\mkIcon\index.scss                                                    | SCSS             |         67 |          0 |          2 |         69 |
+| e:\project\pc-plat\src\components\mkProgress\index.jsx                                                 | JavaScript React |         32 |          1 |         10 |         43 |
+| e:\project\pc-plat\src\components\mkProgress\index.scss                                                | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\components\mutilform\index.jsx                                                  | JavaScript React |        196 |          2 |         13 |        211 |
+| e:\project\pc-plat\src\components\mutilform\index.scss                                                 | SCSS             |         17 |          0 |          1 |         18 |
+| e:\project\pc-plat\src\components\normalform\index.jsx                                                 | JavaScript React |         80 |          0 |         12 |         92 |
+| e:\project\pc-plat\src\components\normalform\index.scss                                                | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\components\normalform\modalform\index.jsx                                       | JavaScript React |        258 |          1 |         59 |        318 |
+| e:\project\pc-plat\src\components\normalform\modalform\index.scss                                      | SCSS             |         57 |          0 |          3 |         60 |
+| e:\project\pc-plat\src\components\normalform\modalform\mkCheckbox\index.jsx                            | JavaScript React |         36 |          0 |          8 |         44 |
+| e:\project\pc-plat\src\components\normalform\modalform\mkCheckbox\index.scss                           | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\components\normalform\modalform\mkInput\index.jsx                               | JavaScript React |         50 |          4 |         17 |         71 |
+| e:\project\pc-plat\src\components\normalform\modalform\mkInput\index.scss                              | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\components\normalform\modalform\mkNumberInput\index.jsx                         | JavaScript React |         46 |          1 |         15 |         62 |
+| e:\project\pc-plat\src\components\normalform\modalform\mkNumberInput\index.scss                        | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\components\normalform\modalform\mkRadio\index.jsx                               | JavaScript React |         74 |          0 |         19 |         93 |
+| e:\project\pc-plat\src\components\normalform\modalform\mkRadio\index.scss                              | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\components\normalform\modalform\mkSelect\index.jsx                              | JavaScript React |        114 |          0 |         25 |        139 |
+| e:\project\pc-plat\src\components\normalform\modalform\mkSelect\index.scss                             | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\components\normalform\modalform\mkTable\index.jsx                               | JavaScript React |        374 |          3 |         63 |        440 |
+| e:\project\pc-plat\src\components\normalform\modalform\mkTable\index.scss                              | SCSS             |        104 |          0 |          5 |        109 |
+| e:\project\pc-plat\src\components\normalform\modalform\styleInput\index.jsx                            | JavaScript React |        114 |          0 |         30 |        144 |
+| e:\project\pc-plat\src\components\normalform\modalform\styleInput\index.scss                           | SCSS             |         11 |          0 |          1 |         12 |
+| e:\project\pc-plat\src\components\paste\index.jsx                                                      | JavaScript React |         63 |          0 |          9 |         72 |
+| e:\project\pc-plat\src\components\paste\index.scss                                                     | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\components\qrcode\index.jsx                                                     | JavaScript React |         49 |          0 |          9 |         58 |
+| e:\project\pc-plat\src\components\qrcode\index.scss                                                    | SCSS             |          8 |          0 |          0 |          8 |
+| e:\project\pc-plat\src\components\querylog\index.jsx                                                   | JavaScript React |         62 |          6 |         15 |         83 |
+| e:\project\pc-plat\src\components\sidemenu\index.jsx                                                   | JavaScript React |        116 |          2 |         20 |        138 |
+| e:\project\pc-plat\src\components\sidemenu\index.scss                                                  | SCSS             |        112 |          8 |          3 |        123 |
+| e:\project\pc-plat\src\components\simpleform\index.jsx                                                 | JavaScript React |        185 |          2 |         11 |        198 |
+| e:\project\pc-plat\src\components\simpleform\index.scss                                                | SCSS             |         17 |          0 |          1 |         18 |
+| e:\project\pc-plat\src\components\tabview\index.jsx                                                    | JavaScript React |        284 |          7 |         34 |        325 |
+| e:\project\pc-plat\src\components\tabview\index.scss                                                   | SCSS             |        104 |          0 |          0 |        104 |
+| e:\project\pc-plat\src\components\video\index.jsx                                                      | JavaScript React |         40 |          0 |          6 |         46 |
+| e:\project\pc-plat\src\components\video\index.scss                                                     | SCSS             |        956 |          5 |         88 |      1,049 |
+| e:\project\pc-plat\src\index.js                                                                        | JavaScript       |        216 |          3 |         31 |        250 |
+| e:\project\pc-plat\src\locales\en-US\login.js                                                          | JavaScript       |         19 |          0 |          0 |         19 |
+| e:\project\pc-plat\src\locales\en-US\main.js                                                           | JavaScript       |         49 |          0 |          0 |         49 |
+| e:\project\pc-plat\src\locales\en-US\mob.js                                                            | JavaScript       |         29 |          0 |          0 |         29 |
+| e:\project\pc-plat\src\locales\en-US\model.js                                                          | JavaScript       |        171 |          0 |          0 |        171 |
+| e:\project\pc-plat\src\locales\zh-CN\login.js                                                          | JavaScript       |         19 |          0 |          0 |         19 |
+| e:\project\pc-plat\src\locales\zh-CN\main.js                                                           | JavaScript       |         49 |          0 |          0 |         49 |
+| e:\project\pc-plat\src\locales\zh-CN\mob.js                                                            | JavaScript       |         29 |          0 |          0 |         29 |
+| e:\project\pc-plat\src\locales\zh-CN\model.js                                                          | JavaScript       |        171 |          0 |          0 |        171 |
+| e:\project\pc-plat\src\menu\bgcontroller\index.jsx                                                     | JavaScript React |        119 |          3 |         24 |        146 |
+| e:\project\pc-plat\src\menu\bgcontroller\index.scss                                                    | SCSS             |         42 |          0 |          1 |         43 |
+| e:\project\pc-plat\src\menu\components\card\balcony\index.jsx                                          | JavaScript React |        185 |          8 |         45 |        238 |
+| e:\project\pc-plat\src\menu\components\card\balcony\index.scss                                         | SCSS             |         83 |          0 |          5 |         88 |
+| e:\project\pc-plat\src\menu\components\card\balcony\options.jsx                                        | JavaScript React |        212 |          4 |          4 |        220 |
+| e:\project\pc-plat\src\menu\components\card\cardcellcomponent\dragaction\action.jsx                    | JavaScript React |         68 |          0 |          9 |         77 |
+| e:\project\pc-plat\src\menu\components\card\cardcellcomponent\dragaction\card.jsx                      | JavaScript React |        165 |          7 |         18 |        190 |
+| e:\project\pc-plat\src\menu\components\card\cardcellcomponent\dragaction\index.jsx                     | JavaScript React |        135 |          0 |         24 |        159 |
+| e:\project\pc-plat\src\menu\components\card\cardcellcomponent\dragaction\index.scss                    | SCSS             |        124 |          0 |          1 |        125 |
+| e:\project\pc-plat\src\menu\components\card\cardcellcomponent\dragaction\mkProgress\index.jsx          | JavaScript React |         31 |          1 |         11 |         43 |
+| e:\project\pc-plat\src\menu\components\card\cardcellcomponent\dragaction\mkProgress\index.scss         | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\card\cardcellcomponent\elementform\index.jsx                    | JavaScript React |        488 |          9 |         33 |        530 |
+| e:\project\pc-plat\src\menu\components\card\cardcellcomponent\elementform\index.scss                   | SCSS             |         28 |          0 |          1 |         29 |
+| e:\project\pc-plat\src\menu\components\card\cardcellcomponent\formconfig.jsx                           | JavaScript React |        502 |         28 |          9 |        539 |
+| e:\project\pc-plat\src\menu\components\card\cardcellcomponent\index.jsx                                | JavaScript React |        608 |         38 |        114 |        760 |
+| e:\project\pc-plat\src\menu\components\card\cardcellcomponent\index.scss                               | SCSS             |         31 |          0 |          2 |         33 |
+| e:\project\pc-plat\src\menu\components\card\cardcomponent\index.jsx                                    | JavaScript React |        325 |          9 |         67 |        401 |
+| e:\project\pc-plat\src\menu\components\card\cardcomponent\index.scss                                   | SCSS             |         48 |          0 |          0 |         48 |
+| e:\project\pc-plat\src\menu\components\card\cardcomponent\options.jsx                                  | JavaScript React |        230 |          3 |          5 |        238 |
+| e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\index.jsx                              | JavaScript React |        192 |          9 |         49 |        250 |
+| e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\index.scss                             | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\node-wrap\index.jsx                    | JavaScript React |         57 |          0 |         12 |         69 |
+| e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\node-wrap\index.scss                   | SCSS             |         20 |          0 |          1 |         21 |
+| e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\node-wrap\menus\columnform\index.jsx   | JavaScript React |         85 |          2 |          7 |         94 |
+| e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\node-wrap\menus\columnform\index.scss  | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\node-wrap\menus\index.jsx              | JavaScript React |         73 |          1 |         12 |         86 |
+| e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\node-wrap\menus\index.scss             | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\card\cardsimplecomponent\options.jsx                            | JavaScript React |        245 |          6 |          8 |        259 |
+| e:\project\pc-plat\src\menu\components\card\data-card\index.jsx                                        | JavaScript React |        554 |         14 |        119 |        687 |
+| e:\project\pc-plat\src\menu\components\card\data-card\index.scss                                       | SCSS             |        123 |          0 |          7 |        130 |
+| e:\project\pc-plat\src\menu\components\card\data-card\options.jsx                                      | JavaScript React |        327 |         17 |          7 |        351 |
+| e:\project\pc-plat\src\menu\components\card\prop-card\index.jsx                                        | JavaScript React |        409 |         12 |         87 |        508 |
+| e:\project\pc-plat\src\menu\components\card\prop-card\index.scss                                       | SCSS             |         79 |          0 |          5 |         84 |
+| e:\project\pc-plat\src\menu\components\card\table-card\index.jsx                                       | JavaScript React |        465 |         14 |         93 |        572 |
+| e:\project\pc-plat\src\menu\components\card\table-card\index.scss                                      | SCSS             |         91 |          0 |          6 |         97 |
+| e:\project\pc-plat\src\menu\components\carousel\data-card\index.jsx                                    | JavaScript React |        233 |         12 |         54 |        299 |
+| e:\project\pc-plat\src\menu\components\carousel\data-card\index.scss                                   | SCSS             |         82 |          0 |          6 |         88 |
+| e:\project\pc-plat\src\menu\components\carousel\data-card\options.jsx                                  | JavaScript React |        128 |          3 |          3 |        134 |
+| e:\project\pc-plat\src\menu\components\carousel\prop-card\index.jsx                                    | JavaScript React |        301 |         12 |         68 |        381 |
+| e:\project\pc-plat\src\menu\components\carousel\prop-card\index.scss                                   | SCSS             |         88 |          0 |          5 |         93 |
+| e:\project\pc-plat\src\menu\components\chart\antv-bar\chartcompile\formconfig.jsx                      | JavaScript React |        451 |         56 |         10 |        517 |
+| e:\project\pc-plat\src\menu\components\chart\antv-bar\chartcompile\index.jsx                           | JavaScript React |        667 |          0 |         48 |        715 |
+| e:\project\pc-plat\src\menu\components\chart\antv-bar\chartcompile\index.scss                          | SCSS             |         35 |          0 |          2 |         37 |
+| e:\project\pc-plat\src\menu\components\chart\antv-bar\index.jsx                                        | JavaScript React |      1,196 |         20 |        150 |      1,366 |
+| e:\project\pc-plat\src\menu\components\chart\antv-bar\index.scss                                       | SCSS             |         64 |          0 |          8 |         72 |
+| e:\project\pc-plat\src\menu\components\chart\antv-dashboard\chartcompile\formconfig.jsx                | JavaScript React |        242 |         17 |          7 |        266 |
+| e:\project\pc-plat\src\menu\components\chart\antv-dashboard\chartcompile\index.jsx                     | JavaScript React |        304 |          0 |         31 |        335 |
+| e:\project\pc-plat\src\menu\components\chart\antv-dashboard\chartcompile\index.scss                    | SCSS             |         35 |          0 |          2 |         37 |
+| e:\project\pc-plat\src\menu\components\chart\antv-dashboard\index.jsx                                  | JavaScript React |        476 |          7 |         59 |        542 |
+| e:\project\pc-plat\src\menu\components\chart\antv-dashboard\index.scss                                 | SCSS             |         44 |          0 |          6 |         50 |
+| e:\project\pc-plat\src\menu\components\chart\antv-pie\chartcompile\formconfig.jsx                      | JavaScript React |        327 |         14 |          6 |        347 |
+| e:\project\pc-plat\src\menu\components\chart\antv-pie\chartcompile\index.jsx                           | JavaScript React |        327 |          0 |         33 |        360 |
+| e:\project\pc-plat\src\menu\components\chart\antv-pie\chartcompile\index.scss                          | SCSS             |         30 |          0 |          2 |         32 |
+| e:\project\pc-plat\src\menu\components\chart\antv-pie\index.jsx                                        | JavaScript React |        599 |          6 |         89 |        694 |
+| e:\project\pc-plat\src\menu\components\chart\antv-pie\index.scss                                       | SCSS             |         44 |          0 |          6 |         50 |
+| e:\project\pc-plat\src\menu\components\chart\antv-scatter\chartcompile\formconfig.jsx                  | JavaScript React |        177 |         10 |          4 |        191 |
+| e:\project\pc-plat\src\menu\components\chart\antv-scatter\chartcompile\index.jsx                       | JavaScript React |        251 |          0 |         21 |        272 |
+| e:\project\pc-plat\src\menu\components\chart\antv-scatter\chartcompile\index.scss                      | SCSS             |         32 |          0 |          2 |         34 |
+| e:\project\pc-plat\src\menu\components\chart\antv-scatter\index.jsx                                    | JavaScript React |        337 |         10 |         53 |        400 |
+| e:\project\pc-plat\src\menu\components\chart\antv-scatter\index.scss                                   | SCSS             |         64 |          0 |          8 |         72 |
+| e:\project\pc-plat\src\menu\components\chart\chart-custom\chartcompile\formconfig.jsx                  | JavaScript React |         72 |         24 |          2 |         98 |
+| e:\project\pc-plat\src\menu\components\chart\chart-custom\chartcompile\index.jsx                       | JavaScript React |        103 |          0 |         17 |        120 |
+| e:\project\pc-plat\src\menu\components\chart\chart-custom\chartcompile\index.scss                      | SCSS             |         10 |          0 |          2 |         12 |
+| e:\project\pc-plat\src\menu\components\chart\chart-custom\index.jsx                                    | JavaScript React |        226 |          6 |         39 |        271 |
+| e:\project\pc-plat\src\menu\components\chart\chart-custom\index.scss                                   | SCSS             |         64 |          0 |          8 |         72 |
+| e:\project\pc-plat\src\menu\components\code\sandbox\codecontent\index.jsx                              | JavaScript React |         65 |          7 |         16 |         88 |
+| e:\project\pc-plat\src\menu\components\code\sandbox\codecontent\index.scss                             | SCSS             |         26 |          0 |          0 |         26 |
+| e:\project\pc-plat\src\menu\components\code\sandbox\editorcode\index.jsx                               | JavaScript React |         95 |          0 |         16 |        111 |
+| e:\project\pc-plat\src\menu\components\code\sandbox\editorcode\index.scss                              | SCSS             |         18 |          0 |          2 |         20 |
+| e:\project\pc-plat\src\menu\components\code\sandbox\index.jsx                                          | JavaScript React |        155 |          9 |         32 |        196 |
+| e:\project\pc-plat\src\menu\components\code\sandbox\index.scss                                         | SCSS             |         35 |          0 |          2 |         37 |
+| e:\project\pc-plat\src\menu\components\code\sandbox\options.jsx                                        | JavaScript React |         56 |          3 |          3 |         62 |
+| e:\project\pc-plat\src\menu\components\editor\braft-editor\editorcontent\index.jsx                     | JavaScript React |         69 |          0 |         14 |         83 |
+| e:\project\pc-plat\src\menu\components\editor\braft-editor\editorcontent\index.scss                    | SCSS             |         16 |          0 |          1 |         17 |
+| e:\project\pc-plat\src\menu\components\editor\braft-editor\index.jsx                                   | JavaScript React |        156 |          6 |         32 |        194 |
+| e:\project\pc-plat\src\menu\components\editor\braft-editor\index.scss                                  | SCSS             |         35 |          0 |          2 |         37 |
+| e:\project\pc-plat\src\menu\components\editor\braft-editor\options.jsx                                 | JavaScript React |         98 |          3 |          3 |        104 |
+| e:\project\pc-plat\src\menu\components\form\dragtitle\card.jsx                                         | JavaScript React |         76 |          0 |         13 |         89 |
+| e:\project\pc-plat\src\menu\components\form\dragtitle\index.jsx                                        | JavaScript React |         50 |          0 |         10 |         60 |
+| e:\project\pc-plat\src\menu\components\form\dragtitle\index.scss                                       | SCSS             |         88 |          0 |          1 |         89 |
+| e:\project\pc-plat\src\menu\components\form\dragtitle\options.jsx                                      | JavaScript React |         93 |          3 |          3 |         99 |
+| e:\project\pc-plat\src\menu\components\form\formaction\actionform\index.jsx                            | JavaScript React |        333 |          8 |         29 |        370 |
+| e:\project\pc-plat\src\menu\components\form\formaction\actionform\index.scss                           | SCSS             |         39 |          0 |          0 |         39 |
+| e:\project\pc-plat\src\menu\components\form\formaction\formconfig.jsx                                  | JavaScript React |        294 |          5 |          6 |        305 |
+| e:\project\pc-plat\src\menu\components\form\formaction\index.jsx                                       | JavaScript React |        224 |         18 |         37 |        279 |
+| e:\project\pc-plat\src\menu\components\form\formaction\index.scss                                      | SCSS             |         16 |          0 |          2 |         18 |
+| e:\project\pc-plat\src\menu\components\form\normal-form\index.jsx                                      | JavaScript React |        622 |         18 |        104 |        744 |
+| e:\project\pc-plat\src\menu\components\form\normal-form\index.scss                                     | SCSS             |         82 |          0 |          3 |         85 |
+| e:\project\pc-plat\src\menu\components\form\normal-form\options.jsx                                    | JavaScript React |        100 |          3 |          3 |        106 |
+| e:\project\pc-plat\src\menu\components\form\tab-form\index.jsx                                         | JavaScript React |        630 |         18 |        104 |        752 |
+| e:\project\pc-plat\src\menu\components\form\tab-form\index.scss                                        | SCSS             |         82 |          0 |          3 |         85 |
+| e:\project\pc-plat\src\menu\components\group\groupcomponents\card.jsx                                  | JavaScript React |         99 |          0 |         10 |        109 |
+| e:\project\pc-plat\src\menu\components\group\groupcomponents\index.jsx                                 | JavaScript React |        132 |          0 |         22 |        154 |
+| e:\project\pc-plat\src\menu\components\group\groupcomponents\index.scss                                | SCSS             |         12 |          0 |          2 |         14 |
+| e:\project\pc-plat\src\menu\components\group\normal-group\index.jsx                                    | JavaScript React |        161 |          4 |         38 |        203 |
+| e:\project\pc-plat\src\menu\components\group\normal-group\index.scss                                   | SCSS             |         39 |          0 |          2 |         41 |
+| e:\project\pc-plat\src\menu\components\group\normal-group\options.jsx                                  | JavaScript React |         87 |          3 |          3 |         93 |
+| e:\project\pc-plat\src\menu\components\group\paste\index.jsx                                           | JavaScript React |         83 |          1 |         18 |        102 |
+| e:\project\pc-plat\src\menu\components\group\paste\index.scss                                          | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\module\voucher\index.jsx                                        | JavaScript React |        123 |         12 |         29 |        164 |
+| e:\project\pc-plat\src\menu\components\module\voucher\index.scss                                       | SCSS             |         39 |          0 |          3 |         42 |
+| e:\project\pc-plat\src\menu\components\module\voucher\options.jsx                                      | JavaScript React |         68 |         10 |          5 |         83 |
+| e:\project\pc-plat\src\menu\components\search\main-search\dategroup\index.jsx                          | JavaScript React |         27 |          0 |          5 |         32 |
+| e:\project\pc-plat\src\menu\components\search\main-search\dategroup\index.scss                         | SCSS             |         36 |          0 |          2 |         38 |
+| e:\project\pc-plat\src\menu\components\search\main-search\dragsearch\card.jsx                          | JavaScript React |        106 |          0 |          9 |        115 |
+| e:\project\pc-plat\src\menu\components\search\main-search\dragsearch\index.jsx                         | JavaScript React |        112 |          0 |         17 |        129 |
+| e:\project\pc-plat\src\menu\components\search\main-search\dragsearch\index.scss                        | SCSS             |          6 |          0 |          1 |          7 |
+| e:\project\pc-plat\src\menu\components\search\main-search\index.jsx                                    | JavaScript React |        377 |         26 |         64 |        467 |
+| e:\project\pc-plat\src\menu\components\search\main-search\index.scss                                   | SCSS             |        140 |          0 |          1 |        141 |
+| e:\project\pc-plat\src\menu\components\search\main-search\options.jsx                                  | JavaScript React |         78 |          3 |          3 |         84 |
+| e:\project\pc-plat\src\menu\components\share\actioncomponent\actionform\index.jsx                      | JavaScript React |        714 |         10 |         93 |        817 |
+| e:\project\pc-plat\src\menu\components\share\actioncomponent\actionform\index.scss                     | SCSS             |         39 |          0 |          0 |         39 |
+| e:\project\pc-plat\src\menu\components\share\actioncomponent\dragaction\card.jsx                       | JavaScript React |         92 |          0 |          9 |        101 |
+| e:\project\pc-plat\src\menu\components\share\actioncomponent\dragaction\index.jsx                      | JavaScript React |        106 |          0 |         24 |        130 |
+| e:\project\pc-plat\src\menu\components\share\actioncomponent\dragaction\index.scss                     | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\share\actioncomponent\formconfig.jsx                            | JavaScript React |        849 |         11 |         16 |        876 |
+| e:\project\pc-plat\src\menu\components\share\actioncomponent\index.jsx                                 | JavaScript React |        439 |         38 |         74 |        551 |
+| e:\project\pc-plat\src\menu\components\share\actioncomponent\index.scss                                | SCSS             |         79 |          0 |          3 |         82 |
+| e:\project\pc-plat\src\menu\components\share\clockcomponent\index.jsx                                  | JavaScript React |         54 |          0 |         10 |         64 |
+| e:\project\pc-plat\src\menu\components\share\clockcomponent\index.scss                                 | SCSS             |          6 |          0 |          1 |          7 |
+| e:\project\pc-plat\src\menu\components\share\clockcomponent\settingform\index.jsx                      | JavaScript React |         98 |          1 |          8 |        107 |
+| e:\project\pc-plat\src\menu\components\share\clockcomponent\settingform\index.scss                     | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\share\copycomponent\index.jsx                                   | JavaScript React |         39 |          0 |          8 |         47 |
+| e:\project\pc-plat\src\menu\components\share\copycomponent\index.scss                                  | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\share\logcomponent\index.jsx                                    | JavaScript React |        115 |          0 |         16 |        131 |
+| e:\project\pc-plat\src\menu\components\share\logcomponent\index.scss                                   | SCSS             |         20 |          0 |          1 |         21 |
+| e:\project\pc-plat\src\menu\components\share\markcomponent\index.jsx                                   | JavaScript React |        327 |          0 |         26 |        353 |
+| e:\project\pc-plat\src\menu\components\share\markcomponent\index.scss                                  | SCSS             |         55 |          0 |          4 |         59 |
+| e:\project\pc-plat\src\menu\components\share\markcomponent\markform\index.jsx                          | JavaScript React |        124 |          1 |          6 |        131 |
+| e:\project\pc-plat\src\menu\components\share\markcomponent\markform\index.scss                         | SCSS             |         17 |          0 |          0 |         17 |
+| e:\project\pc-plat\src\menu\components\share\mobPagination\index.jsx                                   | JavaScript React |         24 |          0 |          3 |         27 |
+| e:\project\pc-plat\src\menu\components\share\mobPagination\index.scss                                  | SCSS             |         31 |          0 |          0 |         31 |
+| e:\project\pc-plat\src\menu\components\share\normalform\index.jsx                                      | JavaScript React |        180 |          2 |         12 |        194 |
+| e:\project\pc-plat\src\menu\components\share\normalform\index.scss                                     | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\share\normalheader\index.jsx                                    | JavaScript React |         73 |          3 |         20 |         96 |
+| e:\project\pc-plat\src\menu\components\share\normalheader\index.scss                                   | SCSS             |         40 |          0 |          1 |         41 |
+| e:\project\pc-plat\src\menu\components\share\pastecomponent\index.jsx                                  | JavaScript React |        208 |          0 |         33 |        241 |
+| e:\project\pc-plat\src\menu\components\share\pastecomponent\index.scss                                 | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\share\searchcomponent\dragsearch\card.jsx                       | JavaScript React |        102 |          0 |          9 |        111 |
+| e:\project\pc-plat\src\menu\components\share\searchcomponent\dragsearch\index.jsx                      | JavaScript React |         83 |          0 |         16 |         99 |
+| e:\project\pc-plat\src\menu\components\share\searchcomponent\dragsearch\index.scss                     | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\share\searchcomponent\index.jsx                                 | JavaScript React |        248 |         28 |         47 |        323 |
+| e:\project\pc-plat\src\menu\components\share\searchcomponent\index.scss                                | SCSS             |         62 |          0 |          3 |         65 |
+| e:\project\pc-plat\src\menu\components\share\sourcecomponent\index.jsx                                 | JavaScript React |         81 |          0 |         14 |         95 |
+| e:\project\pc-plat\src\menu\components\share\sourcecomponent\index.scss                                | SCSS             |         55 |          0 |          2 |         57 |
+| e:\project\pc-plat\src\menu\components\share\sourcecomponent\inputform\index.jsx                       | JavaScript React |        188 |          0 |         25 |        213 |
+| e:\project\pc-plat\src\menu\components\share\sourcecomponent\inputform\index.scss                      | SCSS             |         59 |          0 |          1 |         60 |
+| e:\project\pc-plat\src\menu\components\share\styleInput\index.jsx                                      | JavaScript React |        112 |          3 |         25 |        140 |
+| e:\project\pc-plat\src\menu\components\share\styleInput\index.scss                                     | SCSS             |         11 |          0 |          1 |         12 |
+| e:\project\pc-plat\src\menu\components\share\usercomponent\index.jsx                                   | JavaScript React |        207 |          1 |         25 |        233 |
+| e:\project\pc-plat\src\menu\components\share\usercomponent\index.scss                                  | SCSS             |          6 |          0 |          1 |          7 |
+| e:\project\pc-plat\src\menu\components\share\usercomponent\settingform\index.jsx                       | JavaScript React |         73 |          2 |         12 |         87 |
+| e:\project\pc-plat\src\menu\components\share\usercomponent\settingform\index.scss                      | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\table\edit-table\columns\editColumn\formconfig.jsx              | JavaScript React |        318 |          4 |          7 |        329 |
+| e:\project\pc-plat\src\menu\components\table\edit-table\columns\editColumn\index.jsx                   | JavaScript React |        366 |          1 |         31 |        398 |
+| e:\project\pc-plat\src\menu\components\table\edit-table\columns\editColumn\index.scss                  | SCSS             |         17 |          0 |          1 |         18 |
+| e:\project\pc-plat\src\menu\components\table\edit-table\columns\index.jsx                              | JavaScript React |        514 |          8 |         92 |        614 |
+| e:\project\pc-plat\src\menu\components\table\edit-table\columns\index.scss                             | SCSS             |        120 |          0 |          3 |        123 |
+| e:\project\pc-plat\src\menu\components\table\edit-table\columns\tableIn\customscript\index.jsx         | JavaScript React |        297 |          8 |         42 |        347 |
+| e:\project\pc-plat\src\menu\components\table\edit-table\columns\tableIn\customscript\index.scss        | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\table\edit-table\columns\tableIn\index.jsx                      | JavaScript React |        643 |          8 |         64 |        715 |
+| e:\project\pc-plat\src\menu\components\table\edit-table\columns\tableIn\index.scss                     | SCSS             |         80 |          0 |          0 |         80 |
+| e:\project\pc-plat\src\menu\components\table\edit-table\columns\tableIn\uniqueform\index.jsx           | JavaScript React |        117 |          1 |         11 |        129 |
+| e:\project\pc-plat\src\menu\components\table\edit-table\columns\tableIn\uniqueform\index.scss          | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\table\edit-table\index.jsx                                      | JavaScript React |        286 |         10 |         60 |        356 |
+| e:\project\pc-plat\src\menu\components\table\edit-table\index.scss                                     | SCSS             |         78 |          0 |          3 |         81 |
+| e:\project\pc-plat\src\menu\components\table\edit-table\options.jsx                                    | JavaScript React |        190 |          4 |          3 |        197 |
+| e:\project\pc-plat\src\menu\components\table\normal-table\columns\editColumn\formconfig.jsx            | JavaScript React |        408 |          4 |         10 |        422 |
+| e:\project\pc-plat\src\menu\components\table\normal-table\columns\editColumn\index.jsx                 | JavaScript React |        362 |          1 |         28 |        391 |
+| e:\project\pc-plat\src\menu\components\table\normal-table\columns\editColumn\index.scss                | SCSS             |         17 |          0 |          1 |         18 |
+| e:\project\pc-plat\src\menu\components\table\normal-table\columns\index.jsx                            | JavaScript React |        515 |          8 |         91 |        614 |
+| e:\project\pc-plat\src\menu\components\table\normal-table\columns\index.scss                           | SCSS             |        122 |          0 |          3 |        125 |
+| e:\project\pc-plat\src\menu\components\table\normal-table\index.jsx                                    | JavaScript React |        382 |         10 |         76 |        468 |
+| e:\project\pc-plat\src\menu\components\table\normal-table\index.scss                                   | SCSS             |         78 |          0 |          3 |         81 |
+| e:\project\pc-plat\src\menu\components\table\normal-table\options.jsx                                  | JavaScript React |        254 |          4 |          3 |        261 |
+| e:\project\pc-plat\src\menu\components\tabs\antv-tabs\dragabletabs.jsx                                 | JavaScript React |        106 |          1 |         22 |        129 |
+| e:\project\pc-plat\src\menu\components\tabs\antv-tabs\index.jsx                                        | JavaScript React |        332 |          5 |         69 |        406 |
+| e:\project\pc-plat\src\menu\components\tabs\antv-tabs\index.scss                                       | SCSS             |        132 |          0 |          9 |        141 |
+| e:\project\pc-plat\src\menu\components\tabs\antv-tabs\options.jsx                                      | JavaScript React |        206 |         22 |          9 |        237 |
+| e:\project\pc-plat\src\menu\components\tabs\paste\index.jsx                                            | JavaScript React |        120 |          1 |         28 |        149 |
+| e:\project\pc-plat\src\menu\components\tabs\paste\index.scss                                           | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\components\tabs\tabcomponents\card.jsx                                     | JavaScript React |        108 |          0 |         10 |        118 |
+| e:\project\pc-plat\src\menu\components\tabs\tabcomponents\index.jsx                                    | JavaScript React |        156 |          0 |         24 |        180 |
+| e:\project\pc-plat\src\menu\components\tabs\tabcomponents\index.scss                                   | SCSS             |         12 |          0 |          2 |         14 |
+| e:\project\pc-plat\src\menu\components\timeline\normal-timeline\index.jsx                              | JavaScript React |        160 |          6 |         34 |        200 |
+| e:\project\pc-plat\src\menu\components\timeline\normal-timeline\index.scss                             | SCSS             |         76 |          0 |          5 |         81 |
+| e:\project\pc-plat\src\menu\components\timeline\normal-timeline\options.jsx                            | JavaScript React |        112 |          3 |          3 |        118 |
+| e:\project\pc-plat\src\menu\components\tree\antd-tree\index.jsx                                        | JavaScript React |        160 |          9 |         33 |        202 |
+| e:\project\pc-plat\src\menu\components\tree\antd-tree\index.scss                                       | SCSS             |         39 |          0 |          3 |         42 |
+| e:\project\pc-plat\src\menu\components\tree\antd-tree\options.jsx                                      | JavaScript React |        130 |          3 |          3 |        136 |
+| e:\project\pc-plat\src\menu\datasource\index.jsx                                                       | JavaScript React |        199 |          0 |         28 |        227 |
+| e:\project\pc-plat\src\menu\datasource\index.scss                                                      | SCSS             |         79 |          0 |          8 |         87 |
+| e:\project\pc-plat\src\menu\datasource\verifycard\columnform\index.jsx                                 | JavaScript React |        120 |          1 |          7 |        128 |
+| e:\project\pc-plat\src\menu\datasource\verifycard\columnform\index.scss                                | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\datasource\verifycard\customscript\index.jsx                               | JavaScript React |        238 |          1 |         31 |        270 |
+| e:\project\pc-plat\src\menu\datasource\verifycard\customscript\index.scss                              | SCSS             |         34 |          0 |          0 |         34 |
+| e:\project\pc-plat\src\menu\datasource\verifycard\index.jsx                                            | JavaScript React |        606 |          7 |         88 |        701 |
+| e:\project\pc-plat\src\menu\datasource\verifycard\index.scss                                           | SCSS             |         84 |          0 |          0 |         84 |
+| e:\project\pc-plat\src\menu\datasource\verifycard\settingform\index.jsx                                | JavaScript React |        458 |          2 |         30 |        490 |
+| e:\project\pc-plat\src\menu\datasource\verifycard\settingform\index.scss                               | SCSS             |         27 |          0 |          1 |         28 |
+| e:\project\pc-plat\src\menu\datasource\verifycard\utils.jsx                                            | JavaScript React |        175 |         16 |         26 |        217 |
+| e:\project\pc-plat\src\menu\header\index.jsx                                                           | JavaScript React |         28 |          0 |          6 |         34 |
+| e:\project\pc-plat\src\menu\header\index.scss                                                          | SCSS             |         83 |          0 |          3 |         86 |
+| e:\project\pc-plat\src\menu\menushell\card.jsx                                                         | JavaScript React |        111 |          0 |          9 |        120 |
+| e:\project\pc-plat\src\menu\menushell\index.jsx                                                        | JavaScript React |        149 |          0 |         23 |        172 |
+| e:\project\pc-plat\src\menu\menushell\index.scss                                                       | SCSS             |         20 |          0 |          3 |         23 |
+| e:\project\pc-plat\src\menu\modalconfig\controller.jsx                                                 | JavaScript React |         49 |          3 |         12 |         64 |
+| e:\project\pc-plat\src\menu\modalconfig\index.jsx                                                      | JavaScript React |        459 |         36 |         63 |        558 |
+| e:\project\pc-plat\src\menu\modalconfig\index.scss                                                     | SCSS             |        330 |          0 |          5 |        335 |
+| e:\project\pc-plat\src\menu\modulesource\dragsource\index.jsx                                          | JavaScript React |         14 |          0 |          1 |         15 |
+| e:\project\pc-plat\src\menu\modulesource\dragsource\index.scss                                         | SCSS             |         40 |          0 |          6 |         46 |
+| e:\project\pc-plat\src\menu\modulesource\index.jsx                                                     | JavaScript React |         82 |          0 |         14 |         96 |
+| e:\project\pc-plat\src\menu\modulesource\index.scss                                                    | SCSS             |          8 |          0 |          2 |         10 |
+| e:\project\pc-plat\src\menu\modulesource\option.jsx                                                    | JavaScript React |         60 |          1 |          2 |         63 |
+| e:\project\pc-plat\src\menu\padcontroller\index.jsx                                                    | JavaScript React |         81 |          3 |         11 |         95 |
+| e:\project\pc-plat\src\menu\padcontroller\index.scss                                                   | SCSS             |          9 |          0 |          1 |         10 |
+| e:\project\pc-plat\src\menu\pastecontroller\index.jsx                                                  | JavaScript React |        102 |          1 |         25 |        128 |
+| e:\project\pc-plat\src\menu\pastecontroller\index.scss                                                 | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\picturecontroller\editform\index.jsx                                       | JavaScript React |        162 |          1 |         10 |        173 |
+| e:\project\pc-plat\src\menu\picturecontroller\editform\index.scss                                      | SCSS             |         14 |          0 |          0 |         14 |
+| e:\project\pc-plat\src\menu\picturecontroller\index.jsx                                                | JavaScript React |        325 |          0 |         37 |        362 |
+| e:\project\pc-plat\src\menu\picturecontroller\index.scss                                               | SCSS             |         88 |          0 |          0 |         88 |
+| e:\project\pc-plat\src\menu\picturecontroller\video\index.jsx                                          | JavaScript React |         23 |          0 |          6 |         29 |
+| e:\project\pc-plat\src\menu\picturecontroller\video\index.scss                                         | SCSS             |         51 |          0 |          2 |         53 |
+| e:\project\pc-plat\src\menu\popview\index.jsx                                                          | JavaScript React |        597 |          7 |         79 |        683 |
+| e:\project\pc-plat\src\menu\popview\index.scss                                                         | SCSS             |        157 |          0 |          5 |        162 |
+| e:\project\pc-plat\src\menu\popview\menuform\index.jsx                                                 | JavaScript React |        123 |          3 |         10 |        136 |
+| e:\project\pc-plat\src\menu\popview\menuform\index.scss                                                | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\replaceField\index.jsx                                                     | JavaScript React |        485 |          4 |         55 |        544 |
+| e:\project\pc-plat\src\menu\replaceField\index.scss                                                    | SCSS             |          9 |          0 |          0 |          9 |
+| e:\project\pc-plat\src\menu\replaceField\settingform\index.jsx                                         | JavaScript React |        209 |          2 |         20 |        231 |
+| e:\project\pc-plat\src\menu\replaceField\settingform\index.scss                                        | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\stylecombcontrolbutton\index.jsx                                           | JavaScript React |        128 |          3 |         26 |        157 |
+| e:\project\pc-plat\src\menu\stylecombcontrolbutton\index.scss                                          | SCSS             |         48 |          0 |          2 |         50 |
+| e:\project\pc-plat\src\menu\stylecombcontroller\index.jsx                                              | JavaScript React |        499 |         33 |         42 |        574 |
+| e:\project\pc-plat\src\menu\stylecombcontroller\index.scss                                             | SCSS             |        184 |          0 |          6 |        190 |
+| e:\project\pc-plat\src\menu\stylecombcontroller\styleInput\index.jsx                                   | JavaScript React |        121 |          3 |         29 |        153 |
+| e:\project\pc-plat\src\menu\stylecombcontroller\styleInput\index.scss                                  | SCSS             |         11 |          0 |          1 |         12 |
+| e:\project\pc-plat\src\menu\stylecontroller\index.jsx                                                  | JavaScript React |        704 |         51 |         65 |        820 |
+| e:\project\pc-plat\src\menu\stylecontroller\index.scss                                                 | SCSS             |        196 |          0 |          6 |        202 |
+| e:\project\pc-plat\src\menu\stylecontroller\styleInput\index.jsx                                       | JavaScript React |        127 |          3 |         30 |        160 |
+| e:\project\pc-plat\src\menu\stylecontroller\styleInput\index.scss                                      | SCSS             |         11 |          0 |          1 |         12 |
+| e:\project\pc-plat\src\menu\sysinterface\index.jsx                                                     | JavaScript React |        189 |          0 |         27 |        216 |
+| e:\project\pc-plat\src\menu\sysinterface\index.scss                                                    | SCSS             |         20 |          0 |          0 |         20 |
+| e:\project\pc-plat\src\menu\sysinterface\settingform\baseform\index.jsx                                | JavaScript React |        242 |          1 |         17 |        260 |
+| e:\project\pc-plat\src\menu\sysinterface\settingform\baseform\index.scss                               | SCSS             |         16 |          0 |          1 |         17 |
+| e:\project\pc-plat\src\menu\sysinterface\settingform\index.jsx                                         | JavaScript React |        153 |          4 |         22 |        179 |
+| e:\project\pc-plat\src\menu\sysinterface\settingform\index.scss                                        | SCSS             |         60 |          0 |          1 |         61 |
+| e:\project\pc-plat\src\menu\sysinterface\settingform\simplescript\index.jsx                            | JavaScript React |        401 |          0 |         50 |        451 |
+| e:\project\pc-plat\src\menu\sysinterface\settingform\simplescript\index.scss                           | SCSS             |         45 |          0 |          0 |         45 |
+| e:\project\pc-plat\src\menu\sysinterface\settingform\utils.jsx                                         | JavaScript React |         33 |          5 |          7 |         45 |
+| e:\project\pc-plat\src\menu\urlfieldcomponent\index.jsx                                                | JavaScript React |        115 |          0 |         21 |        136 |
+| e:\project\pc-plat\src\menu\urlfieldcomponent\index.scss                                               | SCSS             |         23 |          0 |          1 |         24 |
+| e:\project\pc-plat\src\menu\urlfieldcomponent\settingform\index.jsx                                    | JavaScript React |         70 |          2 |         10 |         82 |
+| e:\project\pc-plat\src\menu\urlfieldcomponent\settingform\index.scss                                   | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\menu\versions\index.jsx                                                         | JavaScript React |        136 |          1 |         20 |        157 |
+| e:\project\pc-plat\src\menu\versions\index.scss                                                        | SCSS             |         30 |          0 |          0 |         30 |
+| e:\project\pc-plat\src\mob\colorsketch\index.jsx                                                       | JavaScript React |         84 |          0 |         15 |         99 |
+| e:\project\pc-plat\src\mob\colorsketch\index.scss                                                      | SCSS             |         60 |          0 |          3 |         63 |
+| e:\project\pc-plat\src\mob\components\formdragelement\card.jsx                                         | JavaScript React |        194 |          0 |         14 |        208 |
+| e:\project\pc-plat\src\mob\components\formdragelement\index.jsx                                        | JavaScript React |        114 |          1 |         25 |        140 |
+| e:\project\pc-plat\src\mob\components\formdragelement\index.scss                                       | SCSS             |        281 |          1 |          3 |        285 |
+| e:\project\pc-plat\src\mob\components\menubar\normal-menubar\index.jsx                                 | JavaScript React |        230 |         12 |         52 |        294 |
+| e:\project\pc-plat\src\mob\components\menubar\normal-menubar\index.scss                                | SCSS             |         69 |          0 |          3 |         72 |
+| e:\project\pc-plat\src\mob\components\menubar\normal-menubar\menucomponent\index.jsx                   | JavaScript React |        137 |          3 |         29 |        169 |
+| e:\project\pc-plat\src\mob\components\menubar\normal-menubar\menucomponent\index.scss                  | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\mob\components\menubar\normal-menubar\menucomponent\options.jsx                 | JavaScript React |        180 |          4 |          3 |        187 |
+| e:\project\pc-plat\src\mob\components\menubar\normal-menubar\options.jsx                               | JavaScript React |         43 |          3 |          1 |         47 |
+| e:\project\pc-plat\src\mob\components\navbar\normal-navbar\index.jsx                                   | JavaScript React |        122 |          6 |         29 |        157 |
+| e:\project\pc-plat\src\mob\components\navbar\normal-navbar\index.scss                                  | SCSS             |         65 |          0 |          3 |         68 |
+| e:\project\pc-plat\src\mob\components\navbar\normal-navbar\menus\drags\card.jsx                        | JavaScript React |         58 |          0 |          7 |         65 |
+| e:\project\pc-plat\src\mob\components\navbar\normal-navbar\menus\drags\index.jsx                       | JavaScript React |         48 |          1 |          8 |         57 |
+| e:\project\pc-plat\src\mob\components\navbar\normal-navbar\menus\drags\index.scss                      | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\mob\components\navbar\normal-navbar\menus\index.jsx                             | JavaScript React |        148 |         22 |         26 |        196 |
+| e:\project\pc-plat\src\mob\components\navbar\normal-navbar\menus\index.scss                            | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\mob\components\navbar\normal-navbar\menus\menuform\index.jsx                    | JavaScript React |        207 |          1 |         17 |        225 |
+| e:\project\pc-plat\src\mob\components\navbar\normal-navbar\menus\menuform\index.scss                   | SCSS             |         16 |          0 |          1 |         17 |
+| e:\project\pc-plat\src\mob\components\navbar\normal-navbar\options.jsx                                 | JavaScript React |         41 |          3 |          1 |         45 |
+| e:\project\pc-plat\src\mob\components\search\single-search\index.jsx                                   | JavaScript React |        125 |          9 |         26 |        160 |
+| e:\project\pc-plat\src\mob\components\search\single-search\index.scss                                  | SCSS             |         51 |          0 |          2 |         53 |
+| e:\project\pc-plat\src\mob\components\search\single-search\options.jsx                                 | JavaScript React |        111 |          3 |          1 |        115 |
+| e:\project\pc-plat\src\mob\components\tabs\antv-tabs\dragabletabs.jsx                                  | JavaScript React |        106 |          1 |         22 |        129 |
+| e:\project\pc-plat\src\mob\components\tabs\antv-tabs\index.jsx                                         | JavaScript React |        356 |          5 |         76 |        437 |
+| e:\project\pc-plat\src\mob\components\tabs\antv-tabs\index.scss                                        | SCSS             |        123 |          0 |          8 |        131 |
+| e:\project\pc-plat\src\mob\components\tabs\antv-tabs\options.jsx                                       | JavaScript React |         91 |         45 |          5 |        141 |
+| e:\project\pc-plat\src\mob\components\tabs\tabcomponents\card.jsx                                      | JavaScript React |        105 |          0 |         10 |        115 |
+| e:\project\pc-plat\src\mob\components\tabs\tabcomponents\index.jsx                                     | JavaScript React |        150 |          8 |         24 |        182 |
+| e:\project\pc-plat\src\mob\components\tabs\tabcomponents\index.scss                                    | SCSS             |         12 |          0 |          2 |         14 |
+| e:\project\pc-plat\src\mob\components\topbar\normal-navbar\index.jsx                                   | JavaScript React |        204 |          6 |         42 |        252 |
+| e:\project\pc-plat\src\mob\components\topbar\normal-navbar\index.scss                                  | SCSS             |         88 |          0 |          2 |         90 |
+| e:\project\pc-plat\src\mob\components\topbar\normal-navbar\options.jsx                                 | JavaScript React |        149 |         14 |          4 |        167 |
+| e:\project\pc-plat\src\mob\header\index.jsx                                                            | JavaScript React |         37 |          0 |          5 |         42 |
+| e:\project\pc-plat\src\mob\header\index.scss                                                           | SCSS             |         54 |          0 |          2 |         56 |
+| e:\project\pc-plat\src\mob\mobshell\card.jsx                                                           | JavaScript React |        127 |          3 |         13 |        143 |
+| e:\project\pc-plat\src\mob\mobshell\index.jsx                                                          | JavaScript React |        202 |          0 |         27 |        229 |
+| e:\project\pc-plat\src\mob\mobshell\index.scss                                                         | SCSS             |         33 |          1 |          0 |         34 |
+| e:\project\pc-plat\src\mob\modalconfig\controller.jsx                                                  | JavaScript React |         49 |          3 |         12 |         64 |
+| e:\project\pc-plat\src\mob\modalconfig\index.jsx                                                       | JavaScript React |        410 |         36 |         59 |        505 |
+| e:\project\pc-plat\src\mob\modalconfig\index.scss                                                      | SCSS             |        323 |          0 |          8 |        331 |
+| e:\project\pc-plat\src\mob\modalconfig\pastecomponent\index.jsx                                        | JavaScript React |         62 |          1 |         13 |         76 |
+| e:\project\pc-plat\src\mob\modalconfig\pastecomponent\index.scss                                       | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\mob\modalconfig\source.jsx                                                      | JavaScript React |        112 |          0 |          4 |        116 |
+| e:\project\pc-plat\src\mob\modulesource\dragsource\index.jsx                                           | JavaScript React |         14 |          0 |          1 |         15 |
+| e:\project\pc-plat\src\mob\modulesource\dragsource\index.scss                                          | SCSS             |         40 |          0 |          6 |         46 |
+| e:\project\pc-plat\src\mob\modulesource\index.jsx                                                      | JavaScript React |         81 |          0 |         13 |         94 |
+| e:\project\pc-plat\src\mob\modulesource\index.scss                                                     | SCSS             |          8 |          0 |          2 |         10 |
+| e:\project\pc-plat\src\mob\modulesource\option.jsx                                                     | JavaScript React |         55 |          3 |          2 |         60 |
+| e:\project\pc-plat\src\mob\searchconfig\controller.jsx                                                 | JavaScript React |         46 |          3 |         13 |         62 |
+| e:\project\pc-plat\src\mob\searchconfig\groupdragelement\card.jsx                                      | JavaScript React |         56 |          0 |          8 |         64 |
+| e:\project\pc-plat\src\mob\searchconfig\groupdragelement\index.jsx                                     | JavaScript React |         53 |          0 |         12 |         65 |
+| e:\project\pc-plat\src\mob\searchconfig\groupdragelement\index.scss                                    | SCSS             |         27 |          0 |          1 |         28 |
+| e:\project\pc-plat\src\mob\searchconfig\groupform\index.jsx                                            | JavaScript React |         78 |          1 |         10 |         89 |
+| e:\project\pc-plat\src\mob\searchconfig\groupform\index.scss                                           | SCSS             |         10 |          0 |          0 |         10 |
+| e:\project\pc-plat\src\mob\searchconfig\index.jsx                                                      | JavaScript React |        496 |         36 |         67 |        599 |
+| e:\project\pc-plat\src\mob\searchconfig\index.scss                                                     | SCSS             |        365 |          0 |          9 |        374 |
+| e:\project\pc-plat\src\mob\searchconfig\pastecomponent\index.jsx                                       | JavaScript React |         46 |          1 |         10 |         57 |
+| e:\project\pc-plat\src\mob\searchconfig\pastecomponent\index.scss                                      | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\mob\searchconfig\searchdragelement\card.jsx                                     | JavaScript React |        110 |         21 |         10 |        141 |
+| e:\project\pc-plat\src\mob\searchconfig\searchdragelement\index.jsx                                    | JavaScript React |         99 |          1 |         24 |        124 |
+| e:\project\pc-plat\src\mob\searchconfig\searchdragelement\index.scss                                   | SCSS             |        185 |          1 |          3 |        189 |
+| e:\project\pc-plat\src\mob\searchconfig\settingform\index.jsx                                          | JavaScript React |        233 |          1 |         13 |        247 |
+| e:\project\pc-plat\src\mob\searchconfig\settingform\index.scss                                         | SCSS             |         20 |          0 |          0 |         20 |
+| e:\project\pc-plat\src\mob\searchconfig\source.jsx                                                     | JavaScript React |         26 |          6 |          2 |         34 |
+| e:\project\pc-plat\src\pc\bgcontroller\index.jsx                                                       | JavaScript React |        210 |          6 |         30 |        246 |
+| e:\project\pc-plat\src\pc\bgcontroller\index.scss                                                      | SCSS             |         19 |          0 |          1 |         20 |
+| e:\project\pc-plat\src\pc\components\login\normal-login\index.jsx                                      | JavaScript React |        156 |          6 |         34 |        196 |
+| e:\project\pc-plat\src\pc\components\login\normal-login\index.scss                                     | SCSS             |        182 |          3 |          5 |        190 |
+| e:\project\pc-plat\src\pc\components\login\normal-login\loginform.jsx                                  | JavaScript React |        162 |          4 |         18 |        184 |
+| e:\project\pc-plat\src\pc\components\login\normal-login\options.jsx                                    | JavaScript React |        116 |         67 |          4 |        187 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\index.jsx                                    | JavaScript React |        206 |          6 |         35 |        247 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\index.scss                                   | SCSS             |        153 |          0 |          6 |        159 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\linksetting\index.jsx                        | JavaScript React |         53 |          0 |          9 |         62 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\linksetting\index.scss                       | SCSS             |          9 |          0 |          2 |         11 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\linksetting\linkform\index.jsx               | JavaScript React |        147 |          1 |         17 |        165 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\linksetting\linkform\index.scss              | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\linksetting\linktable\index.jsx              | JavaScript React |        134 |          0 |         27 |        161 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\linksetting\linktable\index.scss             | SCSS             |         18 |          0 |          2 |         20 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\menusetting\index.jsx                        | JavaScript React |         54 |          0 |          9 |         63 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\menusetting\index.scss                       | SCSS             |          9 |          0 |          2 |         11 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\menusetting\menuform\index.jsx               | JavaScript React |        190 |          1 |         17 |        208 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\menusetting\menuform\index.scss              | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\menusetting\menutable\index.jsx              | JavaScript React |        501 |          0 |         83 |        584 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\menusetting\menutable\index.scss             | SCSS             |         60 |          0 |          4 |         64 |
+| e:\project\pc-plat\src\pc\components\navbar\normal-navbar\options.jsx                                  | JavaScript React |        113 |          3 |          2 |        118 |
+| e:\project\pc-plat\src\pc\createview\index.jsx                                                         | JavaScript React |        204 |          0 |         26 |        230 |
+| e:\project\pc-plat\src\pc\createview\index.scss                                                        | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\pc\createview\settingform\index.jsx                                             | JavaScript React |        119 |          1 |         10 |        130 |
+| e:\project\pc-plat\src\pc\createview\settingform\index.scss                                            | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\pc\menushell\card.jsx                                                           | JavaScript React |        130 |          3 |         12 |        145 |
+| e:\project\pc-plat\src\pc\menushell\index.jsx                                                          | JavaScript React |        166 |          0 |         25 |        191 |
+| e:\project\pc-plat\src\pc\menushell\index.scss                                                         | SCSS             |         20 |          0 |          3 |         23 |
+| e:\project\pc-plat\src\pc\modulesource\dragsource\index.jsx                                            | JavaScript React |         14 |          0 |          1 |         15 |
+| e:\project\pc-plat\src\pc\modulesource\dragsource\index.scss                                           | SCSS             |         40 |          0 |          6 |         46 |
+| e:\project\pc-plat\src\pc\modulesource\index.jsx                                                       | JavaScript React |         81 |          0 |         13 |         94 |
+| e:\project\pc-plat\src\pc\modulesource\index.scss                                                      | SCSS             |          8 |          0 |          2 |         10 |
+| e:\project\pc-plat\src\pc\modulesource\option.jsx                                                      | JavaScript React |         62 |          1 |          2 |         65 |
+| e:\project\pc-plat\src\pc\quotecomponent\index.jsx                                                     | JavaScript React |        113 |          0 |         16 |        129 |
+| e:\project\pc-plat\src\pc\quotecomponent\index.scss                                                    | SCSS             |          6 |          0 |          0 |          6 |
+| e:\project\pc-plat\src\pc\quotecomponent\settingform\index.jsx                                         | JavaScript React |         76 |          1 |          9 |         86 |
+| e:\project\pc-plat\src\pc\quotecomponent\settingform\index.scss                                        | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\pc\transfer\index.jsx                                                           | JavaScript React |        113 |          0 |         14 |        127 |
+| e:\project\pc-plat\src\pc\transfer\index.scss                                                          | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\pc\transfer\settingform\index.jsx                                               | JavaScript React |         58 |          2 |          8 |         68 |
+| e:\project\pc-plat\src\pc\transfer\settingform\index.scss                                              | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\router\index.js                                                                 | JavaScript       |        100 |          1 |         13 |        114 |
+| e:\project\pc-plat\src\serviceWorker.js                                                                | JavaScript       |         90 |         31 |         13 |        134 |
+| e:\project\pc-plat\src\setupProxy.js                                                                   | JavaScript       |          1 |         46 |          5 |         52 |
+| e:\project\pc-plat\src\store\action-type.js                                                            | JavaScript       |          9 |          9 |          8 |         26 |
+| e:\project\pc-plat\src\store\action.js                                                                 | JavaScript       |         48 |          8 |          8 |         64 |
+| e:\project\pc-plat\src\store\index.js                                                                  | JavaScript       |          8 |          0 |          2 |         10 |
+| e:\project\pc-plat\src\store\options.js                                                                | JavaScript       |         36 |         10 |          1 |         47 |
+| e:\project\pc-plat\src\store\reducer.js                                                                | JavaScript       |         79 |          8 |          5 |         92 |
+| e:\project\pc-plat\src\tabviews\calendar\index.jsx                                                     | JavaScript React |        472 |         33 |         82 |        587 |
+| e:\project\pc-plat\src\tabviews\calendar\index.scss                                                    | SCSS             |         40 |          0 |          5 |         45 |
+| e:\project\pc-plat\src\tabviews\commontable\index.jsx                                                  | JavaScript React |      1,038 |         60 |        157 |      1,255 |
+| e:\project\pc-plat\src\tabviews\commontable\index.scss                                                 | SCSS             |        140 |          0 |          0 |        140 |
+| e:\project\pc-plat\src\tabviews\custom\components\card\balcony\index.jsx                               | JavaScript React |        291 |          9 |         65 |        365 |
+| e:\project\pc-plat\src\tabviews\custom\components\card\balcony\index.scss                              | SCSS             |         69 |          0 |          8 |         77 |
+| e:\project\pc-plat\src\tabviews\custom\components\card\cardItem\index.jsx                              | JavaScript React |        148 |          6 |         33 |        187 |
+| e:\project\pc-plat\src\tabviews\custom\components\card\cardItem\index.scss                             | SCSS             |         63 |          0 |          2 |         65 |
+| e:\project\pc-plat\src\tabviews\custom\components\card\cardcellList\asyncButtonComponent.jsx           | JavaScript React |         19 |          5 |          5 |         29 |
+| e:\project\pc-plat\src\tabviews\custom\components\card\cardcellList\index.jsx                          | JavaScript React |        709 |         11 |         95 |        815 |
+| e:\project\pc-plat\src\tabviews\custom\components\card\cardcellList\index.scss                         | SCSS             |        154 |          0 |          2 |        156 |
+| e:\project\pc-plat\src\tabviews\custom\components\card\data-card\index.jsx                             | JavaScript React |        678 |         12 |        105 |        795 |
+| e:\project\pc-plat\src\tabviews\custom\components\card\data-card\index.scss                            | SCSS             |        134 |          0 |          6 |        140 |
+| e:\project\pc-plat\src\tabviews\custom\components\card\prop-card\index.jsx                             | JavaScript React |        353 |          9 |         68 |        430 |
+| e:\project\pc-plat\src\tabviews\custom\components\card\prop-card\index.scss                            | SCSS             |         58 |          0 |          7 |         65 |
+| e:\project\pc-plat\src\tabviews\custom\components\card\table-card\index.jsx                            | JavaScript React |        362 |         16 |         68 |        446 |
+| e:\project\pc-plat\src\tabviews\custom\components\card\table-card\index.scss                           | SCSS             |         85 |          2 |          9 |         96 |
+| e:\project\pc-plat\src\tabviews\custom\components\carousel\cardItem\index.jsx                          | JavaScript React |         75 |          6 |         21 |        102 |
+| e:\project\pc-plat\src\tabviews\custom\components\carousel\cardItem\index.scss                         | SCSS             |         57 |          0 |          1 |         58 |
+| e:\project\pc-plat\src\tabviews\custom\components\carousel\data-card\index.jsx                         | JavaScript React |        228 |          9 |         41 |        278 |
+| e:\project\pc-plat\src\tabviews\custom\components\carousel\data-card\index.scss                        | SCSS             |         45 |          0 |          6 |         51 |
+| e:\project\pc-plat\src\tabviews\custom\components\carousel\prop-card\index.jsx                         | JavaScript React |        222 |          9 |         43 |        274 |
+| e:\project\pc-plat\src\tabviews\custom\components\carousel\prop-card\index.scss                        | SCSS             |         39 |          0 |          5 |         44 |
+| e:\project\pc-plat\src\tabviews\custom\components\chart\antv-bar-line\asyncButtonComponent.jsx         | JavaScript React |         23 |          5 |          6 |         34 |
+| e:\project\pc-plat\src\tabviews\custom\components\chart\antv-bar-line\index.jsx                        | JavaScript React |      1,542 |         47 |        223 |      1,812 |
+| e:\project\pc-plat\src\tabviews\custom\components\chart\antv-bar-line\index.scss                       | SCSS             |         86 |          0 |          5 |         91 |
+| e:\project\pc-plat\src\tabviews\custom\components\chart\antv-dashboard\index.jsx                       | JavaScript React |        573 |         13 |         76 |        662 |
+| e:\project\pc-plat\src\tabviews\custom\components\chart\antv-dashboard\index.scss                      | SCSS             |         61 |          0 |          6 |         67 |
+| e:\project\pc-plat\src\tabviews\custom\components\chart\antv-pie\index.jsx                             | JavaScript React |        925 |         16 |        136 |      1,077 |
+| e:\project\pc-plat\src\tabviews\custom\components\chart\antv-pie\index.scss                            | SCSS             |         74 |          0 |          5 |         79 |
+| e:\project\pc-plat\src\tabviews\custom\components\chart\antv-scatter\asyncButtonComponent.jsx          | JavaScript React |         23 |          5 |          6 |         34 |
+| e:\project\pc-plat\src\tabviews\custom\components\chart\antv-scatter\index.jsx                         | JavaScript React |        389 |         24 |         62 |        475 |
+| e:\project\pc-plat\src\tabviews\custom\components\chart\antv-scatter\index.scss                        | SCSS             |         86 |          0 |          7 |         93 |
+| e:\project\pc-plat\src\tabviews\custom\components\chart\custom-chart\index.jsx                         | JavaScript React |        305 |         26 |         60 |        391 |
+| e:\project\pc-plat\src\tabviews\custom\components\chart\custom-chart\index.scss                        | SCSS             |         54 |          0 |          4 |         58 |
+| e:\project\pc-plat\src\tabviews\custom\components\code\sand-box\index.jsx                              | JavaScript React |        188 |          4 |         32 |        224 |
+| e:\project\pc-plat\src\tabviews\custom\components\code\sand-box\index.scss                             | SCSS             |         31 |          0 |          4 |         35 |
+| e:\project\pc-plat\src\tabviews\custom\components\editor\braft-editor\index.jsx                        | JavaScript React |        164 |          3 |         30 |        197 |
+| e:\project\pc-plat\src\tabviews\custom\components\editor\braft-editor\index.scss                       | SCSS             |         32 |          0 |          4 |         36 |
+| e:\project\pc-plat\src\tabviews\custom\components\form\normal-form\index.jsx                           | JavaScript React |        327 |         11 |         68 |        406 |
+| e:\project\pc-plat\src\tabviews\custom\components\form\normal-form\index.scss                          | SCSS             |        103 |          0 |          7 |        110 |
+| e:\project\pc-plat\src\tabviews\custom\components\form\tab-form\index.jsx                              | JavaScript React |        284 |         11 |         56 |        351 |
+| e:\project\pc-plat\src\tabviews\custom\components\form\tab-form\index.scss                             | SCSS             |         92 |          0 |          7 |         99 |
+| e:\project\pc-plat\src\tabviews\custom\components\group\normal-group\index.jsx                         | JavaScript React |        313 |          5 |         36 |        354 |
+| e:\project\pc-plat\src\tabviews\custom\components\group\normal-group\index.scss                        | SCSS             |         15 |          0 |          2 |         17 |
+| e:\project\pc-plat\src\tabviews\custom\components\module\voucher\index.jsx                             | JavaScript React |        104 |          5 |         21 |        130 |
+| e:\project\pc-plat\src\tabviews\custom\components\module\voucher\index.scss                            | SCSS             |         51 |          0 |          6 |         57 |
+| e:\project\pc-plat\src\tabviews\custom\components\module\voucher\voucherTable\index.jsx                | JavaScript React |        574 |         48 |        116 |        738 |
+| e:\project\pc-plat\src\tabviews\custom\components\module\voucher\voucherTable\index.scss               | SCSS             |        251 |          0 |          8 |        259 |
+| e:\project\pc-plat\src\tabviews\custom\components\share\braftContent\index.jsx                         | JavaScript React |         46 |          0 |         12 |         58 |
+| e:\project\pc-plat\src\tabviews\custom\components\share\braftContent\index.scss                        | SCSS             |         26 |          0 |          0 |         26 |
+| e:\project\pc-plat\src\tabviews\custom\components\share\normalTable\index.jsx                          | JavaScript React |        760 |         13 |        150 |        923 |
+| e:\project\pc-plat\src\tabviews\custom\components\share\normalTable\index.scss                         | SCSS             |        248 |         16 |          4 |        268 |
+| e:\project\pc-plat\src\tabviews\custom\components\share\normalheader\index.jsx                         | JavaScript React |         42 |          3 |         12 |         57 |
+| e:\project\pc-plat\src\tabviews\custom\components\share\normalheader\index.scss                        | SCSS             |         48 |          0 |          1 |         49 |
+| e:\project\pc-plat\src\tabviews\custom\components\share\tabtransfer\index.jsx                          | JavaScript React |        288 |          5 |         27 |        320 |
+| e:\project\pc-plat\src\tabviews\custom\components\share\tabtransfer\index.scss                         | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\tabviews\custom\components\table\edit-table\index.jsx                           | JavaScript React |        418 |         35 |         58 |        511 |
+| e:\project\pc-plat\src\tabviews\custom\components\table\edit-table\index.scss                          | SCSS             |        119 |          0 |          1 |        120 |
+| e:\project\pc-plat\src\tabviews\custom\components\table\edit-table\normalTable\index.jsx               | JavaScript React |        901 |         17 |        160 |      1,078 |
+| e:\project\pc-plat\src\tabviews\custom\components\table\edit-table\normalTable\index.scss              | SCSS             |        290 |          7 |          4 |        301 |
+| e:\project\pc-plat\src\tabviews\custom\components\table\normal-table\index.jsx                         | JavaScript React |        591 |         38 |         80 |        709 |
+| e:\project\pc-plat\src\tabviews\custom\components\table\normal-table\index.scss                        | SCSS             |         95 |          0 |          1 |         96 |
+| e:\project\pc-plat\src\tabviews\custom\components\tabs\antv-tabs\index.jsx                             | JavaScript React |        109 |          3 |         24 |        136 |
+| e:\project\pc-plat\src\tabviews\custom\components\tabs\antv-tabs\index.scss                            | SCSS             |         28 |          0 |          3 |         31 |
+| e:\project\pc-plat\src\tabviews\custom\components\timeline\normal-timeline\index.jsx                   | JavaScript React |        266 |         20 |         47 |        333 |
+| e:\project\pc-plat\src\tabviews\custom\components\timeline\normal-timeline\index.scss                  | SCSS             |         92 |          2 |         10 |        104 |
+| e:\project\pc-plat\src\tabviews\custom\components\tree\antd-tree\index.jsx                             | JavaScript React |        406 |         20 |         70 |        496 |
+| e:\project\pc-plat\src\tabviews\custom\components\tree\antd-tree\index.scss                            | SCSS             |         92 |          0 |          7 |         99 |
+| e:\project\pc-plat\src\tabviews\custom\index.jsx                                                       | JavaScript React |      1,043 |         29 |        145 |      1,217 |
+| e:\project\pc-plat\src\tabviews\custom\index.scss                                                      | SCSS             |         54 |          0 |          4 |         58 |
+| e:\project\pc-plat\src\tabviews\formtab\actionList\index.jsx                                           | JavaScript React |        289 |         32 |         46 |        367 |
+| e:\project\pc-plat\src\tabviews\formtab\actionList\index.scss                                          | SCSS             |         19 |          0 |          1 |         20 |
+| e:\project\pc-plat\src\tabviews\formtab\formgroup\index.jsx                                            | JavaScript React |        639 |          4 |         82 |        725 |
+| e:\project\pc-plat\src\tabviews\formtab\formgroup\index.scss                                           | SCSS             |         47 |          0 |          0 |         47 |
+| e:\project\pc-plat\src\tabviews\formtab\index.jsx                                                      | JavaScript React |        545 |         33 |         93 |        671 |
+| e:\project\pc-plat\src\tabviews\formtab\index.scss                                                     | SCSS             |        111 |          0 |          2 |        113 |
+| e:\project\pc-plat\src\tabviews\home\defaulthome\index.jsx                                             | JavaScript React |        276 |          0 |          8 |        284 |
+| e:\project\pc-plat\src\tabviews\home\defaulthome\index.scss                                            | SCSS             |        198 |          0 |          0 |        198 |
+| e:\project\pc-plat\src\tabviews\home\index.jsx                                                         | JavaScript React |         87 |          0 |         12 |         99 |
+| e:\project\pc-plat\src\tabviews\home\index.scss                                                        | SCSS             |          9 |          0 |          0 |          9 |
+| e:\project\pc-plat\src\tabviews\iframe\index.jsx                                                       | JavaScript React |         37 |          3 |         10 |         50 |
+| e:\project\pc-plat\src\tabviews\rolemanage\index.jsx                                                   | JavaScript React |        805 |         60 |        113 |        978 |
+| e:\project\pc-plat\src\tabviews\rolemanage\index.scss                                                  | SCSS             |        112 |          1 |          1 |        114 |
+| e:\project\pc-plat\src\tabviews\scriptmanage\actionList\index.jsx                                      | JavaScript React |        245 |         32 |         35 |        312 |
+| e:\project\pc-plat\src\tabviews\scriptmanage\actionList\index.scss                                     | SCSS             |         17 |          0 |          1 |         18 |
+| e:\project\pc-plat\src\tabviews\scriptmanage\config.jsx                                                | JavaScript React |         86 |          1 |          2 |         89 |
+| e:\project\pc-plat\src\tabviews\scriptmanage\index.jsx                                                 | JavaScript React |        272 |         34 |         43 |        349 |
+| e:\project\pc-plat\src\tabviews\scriptmanage\index.scss                                                | SCSS             |         70 |          0 |          3 |         73 |
+| e:\project\pc-plat\src\tabviews\subtable\index.jsx                                                     | JavaScript React |        902 |         56 |        139 |      1,097 |
+| e:\project\pc-plat\src\tabviews\subtable\index.scss                                                    | SCSS             |        102 |          0 |          4 |        106 |
+| e:\project\pc-plat\src\tabviews\subtabtable\index.jsx                                                  | JavaScript React |        734 |         47 |        121 |        902 |
+| e:\project\pc-plat\src\tabviews\subtabtable\index.scss                                                 | SCSS             |         82 |          0 |          1 |         83 |
+| e:\project\pc-plat\src\tabviews\tabmanage\index.jsx                                                    | JavaScript React |        513 |          4 |         60 |        577 |
+| e:\project\pc-plat\src\tabviews\tabmanage\index.scss                                                   | SCSS             |         56 |          0 |          3 |         59 |
+| e:\project\pc-plat\src\tabviews\tabmanage\mutilform\index.jsx                                          | JavaScript React |         90 |          1 |          8 |         99 |
+| e:\project\pc-plat\src\tabviews\tabmanage\mutilform\index.scss                                         | SCSS             |         47 |          0 |          0 |         47 |
+| e:\project\pc-plat\src\tabviews\tabmanage\transferform\index.jsx                                       | JavaScript React |         35 |          0 |          9 |         44 |
+| e:\project\pc-plat\src\tabviews\tabmanage\transferform\index.scss                                      | SCSS             |          6 |          0 |          0 |          6 |
+| e:\project\pc-plat\src\tabviews\treepage\index.jsx                                                     | JavaScript React |        540 |         29 |         88 |        657 |
+| e:\project\pc-plat\src\tabviews\treepage\index.scss                                                    | SCSS             |        171 |          0 |          8 |        179 |
+| e:\project\pc-plat\src\tabviews\verupmanage\actionList\index.jsx                                       | JavaScript React |        665 |         51 |        101 |        817 |
+| e:\project\pc-plat\src\tabviews\verupmanage\actionList\index.scss                                      | SCSS             |         17 |          0 |          1 |         18 |
+| e:\project\pc-plat\src\tabviews\verupmanage\config.jsx                                                 | JavaScript React |        154 |          3 |          3 |        160 |
+| e:\project\pc-plat\src\tabviews\verupmanage\index.jsx                                                  | JavaScript React |        413 |         43 |         64 |        520 |
+| e:\project\pc-plat\src\tabviews\verupmanage\index.scss                                                 | SCSS             |         77 |          0 |          3 |         80 |
+| e:\project\pc-plat\src\tabviews\verupmanage\subtabtable\index.jsx                                      | JavaScript React |        395 |         43 |         62 |        500 |
+| e:\project\pc-plat\src\tabviews\verupmanage\subtabtable\index.scss                                     | SCSS             |         46 |          0 |          2 |         48 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\asyncButtonComponent.jsx                             | JavaScript React |         30 |          5 |          7 |         42 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\changeuserbutton\index.jsx                           | JavaScript React |        240 |         10 |         35 |        285 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\changeuserbutton\index.scss                          | SCSS             |          0 |          0 |          2 |          2 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\excelInbutton\excelin\index.jsx                      | JavaScript React |         97 |          5 |         18 |        120 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\excelInbutton\excelin\index.scss                     | SCSS             |          5 |          0 |          0 |          5 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\excelInbutton\index.jsx                              | JavaScript React |        454 |         29 |         61 |        544 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\excelInbutton\index.scss                             | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\exceloutbutton\index.jsx                             | JavaScript React |        807 |         47 |        136 |        990 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\exceloutbutton\index.scss                            | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\index.jsx                                            | JavaScript React |        163 |          0 |         10 |        173 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\index.scss                                           | SCSS             |         26 |          0 |          3 |         29 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\newpagebutton\index.jsx                              | JavaScript React |        242 |          7 |         32 |        281 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\newpagebutton\index.scss                             | SCSS             |         10 |          0 |          2 |         12 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\normalbutton\index.jsx                               | JavaScript React |      1,808 |         85 |        272 |      2,165 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\normalbutton\index.scss                              | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\popupbutton\index.jsx                                | JavaScript React |        315 |         13 |         42 |        370 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\popupbutton\index.scss                               | SCSS             |         48 |          0 |          1 |         49 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\printbutton\index.jsx                                | JavaScript React |      1,184 |        271 |        214 |      1,669 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\printbutton\index.scss                               | SCSS             |          0 |          0 |          2 |          2 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\tabbutton\index.jsx                                  | JavaScript React |        225 |          6 |         34 |        265 |
+| e:\project\pc-plat\src\tabviews\zshare\actionList\tabbutton\index.scss                                 | SCSS             |          0 |          0 |          2 |          2 |
+| e:\project\pc-plat\src\tabviews\zshare\automatic\index.jsx                                             | JavaScript React |        172 |          3 |         38 |        213 |
+| e:\project\pc-plat\src\tabviews\zshare\automatic\index.scss                                            | SCSS             |         14 |          0 |          1 |         15 |
+| e:\project\pc-plat\src\tabviews\zshare\calendar\index.jsx                                              | JavaScript React |        350 |          0 |         48 |        398 |
+| e:\project\pc-plat\src\tabviews\zshare\calendar\index.scss                                             | SCSS             |        206 |          1 |          2 |        209 |
+| e:\project\pc-plat\src\tabviews\zshare\cardcomponent\asyncButtonComponent.jsx                          | JavaScript React |         23 |          4 |          6 |         33 |
+| e:\project\pc-plat\src\tabviews\zshare\cardcomponent\index.jsx                                         | JavaScript React |        698 |         27 |        101 |        826 |
+| e:\project\pc-plat\src\tabviews\zshare\cardcomponent\index.scss                                        | SCSS             |        302 |          0 |         23 |        325 |
+| e:\project\pc-plat\src\tabviews\zshare\chartcomponent\asyncButtonComponent.jsx                         | JavaScript React |         23 |          5 |          6 |         34 |
+| e:\project\pc-plat\src\tabviews\zshare\chartcomponent\index.jsx                                        | JavaScript React |        933 |         41 |        141 |      1,115 |
+| e:\project\pc-plat\src\tabviews\zshare\chartcomponent\index.scss                                       | SCSS             |        108 |          0 |          7 |        115 |
+| e:\project\pc-plat\src\tabviews\zshare\fileupload\index.jsx                                            | JavaScript React |        393 |          4 |         72 |        469 |
+| e:\project\pc-plat\src\tabviews\zshare\fileupload\index.scss                                           | SCSS             |         52 |          0 |          1 |         53 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\index.jsx                                             | JavaScript React |        757 |         22 |        128 |        907 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\index.scss                                            | SCSS             |        129 |          0 |          1 |        130 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkCheckCard\index.jsx                                 | JavaScript React |        183 |          0 |         35 |        218 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkCheckCard\index.scss                                | SCSS             |        101 |          1 |          2 |        104 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkCheckbox\index.jsx                                  | JavaScript React |         30 |          0 |          7 |         37 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkCheckbox\index.scss                                 | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkColor\index.jsx                                     | JavaScript React |         50 |          0 |         10 |         60 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkColor\index.scss                                    | SCSS             |         39 |          0 |          2 |         41 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkDatePicker\index.jsx                                | JavaScript React |         68 |          3 |         16 |         87 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkDatePicker\index.scss                               | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkInput\index.jsx                                     | JavaScript React |         68 |          3 |         18 |         89 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkInput\index.scss                                    | SCSS             |         11 |          0 |          0 |         11 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkNumberInput\index.jsx                               | JavaScript React |         61 |          1 |         16 |         78 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkNumberInput\index.scss                              | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkRadio\index.jsx                                     | JavaScript React |        120 |          0 |         26 |        146 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkRadio\index.scss                                    | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkSelect\index.jsx                                    | JavaScript React |        182 |          0 |         29 |        211 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkSelect\index.scss                                   | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkSwitch\index.jsx                                    | JavaScript React |         33 |          0 |          8 |         41 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkSwitch\index.scss                                   | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkTextArea\index.jsx                                  | JavaScript React |         75 |          0 |         17 |         92 |
+| e:\project\pc-plat\src\tabviews\zshare\mutilform\mkTextArea\index.scss                                 | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\tabviews\zshare\normalTable\index.jsx                                           | JavaScript React |      1,197 |         13 |        177 |      1,387 |
+| e:\project\pc-plat\src\tabviews\zshare\normalTable\index.scss                                          | SCSS             |        264 |          0 |         12 |        276 |
+| e:\project\pc-plat\src\tabviews\zshare\pageMessage\index.jsx                                           | JavaScript React |        301 |          5 |         47 |        353 |
+| e:\project\pc-plat\src\tabviews\zshare\pageMessage\index.scss                                          | SCSS             |         35 |          0 |          0 |         35 |
+| e:\project\pc-plat\src\tabviews\zshare\settingcomponent\editTable\index.jsx                            | JavaScript React |        293 |          0 |         29 |        322 |
+| e:\project\pc-plat\src\tabviews\zshare\settingcomponent\editTable\index.scss                           | SCSS             |         64 |          0 |          3 |         67 |
+| e:\project\pc-plat\src\tabviews\zshare\settingcomponent\index.jsx                                      | JavaScript React |        477 |          2 |         70 |        549 |
+| e:\project\pc-plat\src\tabviews\zshare\settingcomponent\index.scss                                     | SCSS             |         62 |          0 |          2 |         64 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\advanceform\index.jsx                                 | JavaScript React |         91 |          1 |         16 |        108 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\advanceform\index.scss                                | SCSS             |         49 |          0 |          0 |         49 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\dategroup\index.jsx                                   | JavaScript React |        125 |          0 |         14 |        139 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\dategroup\index.scss                                  | SCSS             |         95 |          0 |          4 |         99 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\dategroup\quarterpicker\index.jsx                     | JavaScript React |        135 |          0 |         16 |        151 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\dategroup\quarterpicker\index.scss                    | SCSS             |         40 |          0 |          3 |         43 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\dategroup\yearpicker\index.jsx                        | JavaScript React |        105 |          0 |         15 |        120 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\dategroup\yearpicker\index.scss                       | SCSS             |         46 |          0 |          4 |         50 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\index.jsx                                             | JavaScript React |        641 |         11 |        101 |        753 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\index.scss                                            | SCSS             |        100 |          0 |          2 |        102 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\mkDatePicker\index.jsx                                | JavaScript React |         73 |          3 |         15 |         91 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\mkDatePicker\index.scss                               | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\mkInput\index.jsx                                     | JavaScript React |         14 |          0 |          4 |         18 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\mkInput\index.scss                                    | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\mkSelect\index.jsx                                    | JavaScript React |         97 |          0 |         24 |        121 |
+| e:\project\pc-plat\src\tabviews\zshare\topSearch\mkSelect\index.scss                                   | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\calendarconfig\calcomponent\calendarform\index.jsx                    | JavaScript React |        151 |          2 |          4 |        157 |
+| e:\project\pc-plat\src\templates\calendarconfig\calcomponent\calendarform\index.scss                   | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\calendarconfig\calcomponent\index.jsx                                 | JavaScript React |         74 |          9 |         14 |         97 |
+| e:\project\pc-plat\src\templates\calendarconfig\calcomponent\index.scss                                | SCSS             |         40 |          0 |          1 |         41 |
+| e:\project\pc-plat\src\templates\calendarconfig\index.jsx                                              | JavaScript React |        682 |         78 |         98 |        858 |
+| e:\project\pc-plat\src\templates\calendarconfig\index.scss                                             | SCSS             |        188 |          0 |          3 |        191 |
+| e:\project\pc-plat\src\templates\calendarconfig\source.jsx                                             | JavaScript React |        136 |          0 |          5 |        141 |
+| e:\project\pc-plat\src\templates\calendarconfig\tabcomponent\index.jsx                                 | JavaScript React |         95 |          9 |         15 |        119 |
+| e:\project\pc-plat\src\templates\calendarconfig\tabcomponent\index.scss                                | SCSS             |         80 |          3 |          3 |         86 |
+| e:\project\pc-plat\src\templates\calendarconfig\tabcomponent\tabform\index.jsx                         | JavaScript React |        202 |          7 |         22 |        231 |
+| e:\project\pc-plat\src\templates\calendarconfig\tabcomponent\tabform\index.scss                        | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\comtableconfig\index.jsx                                              | JavaScript React |      1,156 |         65 |        140 |      1,361 |
+| e:\project\pc-plat\src\templates\comtableconfig\index.scss                                             | SCSS             |        205 |          0 |          5 |        210 |
+| e:\project\pc-plat\src\templates\comtableconfig\menuform\index.jsx                                     | JavaScript React |        232 |          0 |         16 |        248 |
+| e:\project\pc-plat\src\templates\comtableconfig\menuform\index.scss                                    | SCSS             |          7 |          0 |          0 |          7 |
+| e:\project\pc-plat\src\templates\comtableconfig\source.jsx                                             | JavaScript React |        362 |          0 |          8 |        370 |
+| e:\project\pc-plat\src\templates\formtabconfig\actionform\index.jsx                                    | JavaScript React |        409 |          1 |         33 |        443 |
+| e:\project\pc-plat\src\templates\formtabconfig\actionform\index.scss                                   | SCSS             |         33 |          0 |          0 |         33 |
+| e:\project\pc-plat\src\templates\formtabconfig\dragelement\card.jsx                                    | JavaScript React |        150 |          0 |         12 |        162 |
+| e:\project\pc-plat\src\templates\formtabconfig\dragelement\index.jsx                                   | JavaScript React |        164 |          1 |         28 |        193 |
+| e:\project\pc-plat\src\templates\formtabconfig\dragelement\index.scss                                  | SCSS             |         15 |          0 |          0 |         15 |
+| e:\project\pc-plat\src\templates\formtabconfig\dragelement\itemtypes.js                                | JavaScript       |          8 |          0 |          1 |          9 |
+| e:\project\pc-plat\src\templates\formtabconfig\dragelement\source.jsx                                  | JavaScript React |         12 |          0 |          1 |         13 |
+| e:\project\pc-plat\src\templates\formtabconfig\groupform\index.jsx                                     | JavaScript React |        111 |          3 |         16 |        130 |
+| e:\project\pc-plat\src\templates\formtabconfig\groupform\index.scss                                    | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\formtabconfig\index.jsx                                               | JavaScript React |      1,847 |         66 |        211 |      2,124 |
+| e:\project\pc-plat\src\templates\formtabconfig\index.scss                                              | SCSS             |        424 |          0 |          6 |        430 |
+| e:\project\pc-plat\src\templates\formtabconfig\settingform\index.jsx                                   | JavaScript React |        330 |          1 |         26 |        357 |
+| e:\project\pc-plat\src\templates\formtabconfig\settingform\index.scss                                  | SCSS             |         10 |          0 |          0 |         10 |
+| e:\project\pc-plat\src\templates\formtabconfig\source.jsx                                              | JavaScript React |        182 |          0 |          7 |        189 |
+| e:\project\pc-plat\src\templates\formtabconfig\transferform\index.jsx                                  | JavaScript React |         61 |          0 |         12 |         73 |
+| e:\project\pc-plat\src\templates\formtabconfig\transferform\index.scss                                 | SCSS             |          6 |          0 |          0 |          6 |
+| e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\dragelement\card.jsx                         | JavaScript React |         47 |          0 |          5 |         52 |
+| e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\dragelement\index.jsx                        | JavaScript React |         75 |          0 |         11 |         86 |
+| e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\dragelement\index.scss                       | SCSS             |         53 |          0 |          2 |         55 |
+| e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\dragelement\itemtypes.js                     | JavaScript       |          3 |          0 |          1 |          4 |
+| e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\index.jsx                                    | JavaScript React |        378 |          7 |         26 |        411 |
+| e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\index.scss                                   | SCSS             |         79 |          0 |          0 |         79 |
+| e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\menuform\index.jsx                           | JavaScript React |        223 |          2 |         14 |        239 |
+| e:\project\pc-plat\src\templates\menuconfig\editfirstmenu\menuform\index.scss                          | SCSS             |         17 |          0 |          1 |         18 |
+| e:\project\pc-plat\src\templates\menuconfig\editsecmenu\index.jsx                                      | JavaScript React |        439 |          2 |         22 |        463 |
+| e:\project\pc-plat\src\templates\menuconfig\editsecmenu\index.scss                                     | SCSS             |         81 |          0 |          0 |         81 |
+| e:\project\pc-plat\src\templates\menuconfig\editthdmenu\index.jsx                                      | JavaScript React |        875 |         29 |         76 |        980 |
+| e:\project\pc-plat\src\templates\menuconfig\editthdmenu\index.scss                                     | SCSS             |        183 |          0 |          2 |        185 |
+| e:\project\pc-plat\src\templates\menuconfig\editthdmenu\menuform\index.jsx                             | JavaScript React |        156 |          2 |         13 |        171 |
+| e:\project\pc-plat\src\templates\menuconfig\editthdmenu\menuform\index.scss                            | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\menuconfig\editthdmenu\preview\index.jsx                              | JavaScript React |         60 |          0 |          7 |         67 |
+| e:\project\pc-plat\src\templates\menuconfig\editthdmenu\preview\index.scss                             | SCSS             |         30 |          0 |          0 |         30 |
+| e:\project\pc-plat\src\templates\menuconfig\menuelement\card.jsx                                       | JavaScript React |         56 |          0 |          6 |         62 |
+| e:\project\pc-plat\src\templates\menuconfig\menuelement\index.jsx                                      | JavaScript React |         58 |          0 |          7 |         65 |
+| e:\project\pc-plat\src\templates\menuconfig\menuelement\index.scss                                     | SCSS             |         68 |          0 |          1 |         69 |
+| e:\project\pc-plat\src\templates\menuconfig\menuelement\itemtypes.js                                   | JavaScript       |          3 |          0 |          1 |          4 |
+| e:\project\pc-plat\src\templates\menuconfig\menuform\index.jsx                                         | JavaScript React |        137 |          2 |         10 |        149 |
+| e:\project\pc-plat\src\templates\menuconfig\menuform\index.scss                                        | SCSS             |         17 |          0 |          1 |         18 |
+| e:\project\pc-plat\src\templates\modalconfig\checkCard\index.jsx                                       | JavaScript React |         72 |          0 |         11 |         83 |
+| e:\project\pc-plat\src\templates\modalconfig\checkCard\index.scss                                      | SCSS             |         35 |          0 |          0 |         35 |
+| e:\project\pc-plat\src\templates\modalconfig\dragelement\card.jsx                                      | JavaScript React |        156 |          0 |         13 |        169 |
+| e:\project\pc-plat\src\templates\modalconfig\dragelement\index.jsx                                     | JavaScript React |        110 |          1 |         25 |        136 |
+| e:\project\pc-plat\src\templates\modalconfig\dragelement\index.scss                                    | SCSS             |        129 |          0 |          0 |        129 |
+| e:\project\pc-plat\src\templates\modalconfig\dragelement\source.jsx                                    | JavaScript React |         12 |          0 |          1 |         13 |
+| e:\project\pc-plat\src\templates\modalconfig\editcard\index.jsx                                        | JavaScript React |        103 |          0 |         12 |        115 |
+| e:\project\pc-plat\src\templates\modalconfig\editcard\index.scss                                       | SCSS             |         49 |          0 |          1 |         50 |
+| e:\project\pc-plat\src\templates\modalconfig\index.jsx                                                 | JavaScript React |        728 |         43 |         97 |        868 |
+| e:\project\pc-plat\src\templates\modalconfig\index.scss                                                | SCSS             |        260 |          0 |          3 |        263 |
+| e:\project\pc-plat\src\templates\modalconfig\menuform\index.jsx                                        | JavaScript React |         91 |          1 |          5 |         97 |
+| e:\project\pc-plat\src\templates\modalconfig\menuform\index.scss                                       | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\modalconfig\settingform\index.jsx                                     | JavaScript React |        292 |          7 |         14 |        313 |
+| e:\project\pc-plat\src\templates\modalconfig\settingform\index.scss                                    | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\modalconfig\source.jsx                                                | JavaScript React |        179 |          0 |          5 |        184 |
+| e:\project\pc-plat\src\templates\modalconfig\transferform\index.jsx                                    | JavaScript React |         61 |          0 |         12 |         73 |
+| e:\project\pc-plat\src\templates\modalconfig\transferform\index.scss                                   | SCSS             |          6 |          0 |          0 |          6 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\actionform\index.jsx                   | JavaScript React |        606 |          4 |         81 |        691 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\actionform\index.scss                  | SCSS             |         39 |          0 |          0 |         39 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\dragaction\card.jsx                    | JavaScript React |         67 |          0 |          5 |         72 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\dragaction\index.jsx                   | JavaScript React |        143 |          1 |         28 |        172 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\dragaction\index.scss                  | SCSS             |          6 |          0 |          1 |          7 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\index.jsx                              | JavaScript React |        792 |         59 |        112 |        963 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\index.scss                             | SCSS             |         67 |          0 |          2 |         69 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\columnform\index.jsx     | JavaScript React |        174 |          1 |          9 |        184 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\columnform\index.scss    | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\customscript\index.jsx   | JavaScript React |        309 |          8 |         45 |        362 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\customscript\index.scss  | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\index.jsx                | JavaScript React |        836 |          8 |         79 |        923 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\index.scss               | SCSS             |         80 |          0 |          0 |         80 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\uniqueform\index.jsx     | JavaScript React |        117 |          1 |         11 |        129 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelin\uniqueform\index.scss    | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelout\columnform\index.jsx    | JavaScript React |         99 |          1 |          5 |        105 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelout\columnform\index.scss   | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelout\index.jsx               | JavaScript React |        566 |          5 |         62 |        633 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyexcelout\index.scss              | SCSS             |         86 |          0 |          0 |         86 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyprint\editable\index.jsx         | JavaScript React |        213 |          0 |         25 |        238 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyprint\editable\index.scss        | SCSS             |         51 |          0 |          1 |         52 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyprint\index.jsx                  | JavaScript React |        416 |          1 |         37 |        454 |
+| e:\project\pc-plat\src\templates\sharecomponent\actioncomponent\verifyprint\index.scss                 | SCSS             |         68 |          0 |          0 |         68 |
+| e:\project\pc-plat\src\templates\sharecomponent\cardcomponent\carddetailform\index.jsx                 | JavaScript React |        277 |          2 |         23 |        302 |
+| e:\project\pc-plat\src\templates\sharecomponent\cardcomponent\carddetailform\index.scss                | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\sharecomponent\cardcomponent\dragdetail\card.jsx                      | JavaScript React |         39 |          0 |          6 |         45 |
+| e:\project\pc-plat\src\templates\sharecomponent\cardcomponent\dragdetail\index.jsx                     | JavaScript React |         43 |          0 |          7 |         50 |
+| e:\project\pc-plat\src\templates\sharecomponent\cardcomponent\dragdetail\index.scss                    | SCSS             |         63 |          0 |          3 |         66 |
+| e:\project\pc-plat\src\templates\sharecomponent\cardcomponent\index.jsx                                | JavaScript React |        423 |          1 |         54 |        478 |
+| e:\project\pc-plat\src\templates\sharecomponent\cardcomponent\index.scss                               | SCSS             |        205 |          0 |         14 |        219 |
+| e:\project\pc-plat\src\templates\sharecomponent\chartcomponent\chartcompile\index.jsx                  | JavaScript React |        490 |          0 |         54 |        544 |
+| e:\project\pc-plat\src\templates\sharecomponent\chartcomponent\chartcompile\index.scss                 | SCSS             |         40 |          0 |          5 |         45 |
+| e:\project\pc-plat\src\templates\sharecomponent\chartcomponent\index.jsx                               | JavaScript React |        530 |          0 |         99 |        629 |
+| e:\project\pc-plat\src\templates\sharecomponent\chartcomponent\index.scss                              | SCSS             |         11 |          0 |          3 |         14 |
+| e:\project\pc-plat\src\templates\sharecomponent\chartgroupcomponent\chartform\index.jsx                | JavaScript React |        511 |          2 |         32 |        545 |
+| e:\project\pc-plat\src\templates\sharecomponent\chartgroupcomponent\chartform\index.scss               | SCSS             |         19 |          0 |          1 |         20 |
+| e:\project\pc-plat\src\templates\sharecomponent\chartgroupcomponent\dragchartview\card.jsx             | JavaScript React |         48 |          0 |          9 |         57 |
+| e:\project\pc-plat\src\templates\sharecomponent\chartgroupcomponent\dragchartview\index.jsx            | JavaScript React |         63 |          0 |         12 |         75 |
+| e:\project\pc-plat\src\templates\sharecomponent\chartgroupcomponent\dragchartview\index.scss           | SCSS             |         29 |          0 |          3 |         32 |
+| e:\project\pc-plat\src\templates\sharecomponent\chartgroupcomponent\index.jsx                          | JavaScript React |        228 |         27 |         42 |        297 |
+| e:\project\pc-plat\src\templates\sharecomponent\chartgroupcomponent\index.scss                         | SCSS             |         27 |          0 |          0 |         27 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\colspanform\index.jsx                  | JavaScript React |        196 |          2 |         13 |        211 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\colspanform\index.scss                 | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\columnform\index.jsx                   | JavaScript React |        334 |          4 |         28 |        366 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\columnform\index.scss                  | SCSS             |         17 |          0 |          2 |         19 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\dragcolumn\card.jsx                    | JavaScript React |         60 |          0 |          5 |         65 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\dragcolumn\index.jsx                   | JavaScript React |        168 |          2 |         23 |        193 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\dragcolumn\index.scss                  | SCSS             |          6 |          0 |          1 |          7 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\gridbtnform\index.jsx                  | JavaScript React |        194 |          2 |          8 |        204 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\gridbtnform\index.scss                 | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\index.jsx                              | JavaScript React |        492 |         37 |         71 |        600 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\index.scss                             | SCSS             |         95 |          1 |          2 |         98 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\markcolumn\index.jsx                   | JavaScript React |        216 |          0 |         26 |        242 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\markcolumn\index.scss                  | SCSS             |         55 |          0 |          4 |         59 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\markcolumn\markform\index.jsx          | JavaScript React |        328 |         16 |         27 |        371 |
+| e:\project\pc-plat\src\templates\sharecomponent\columncomponent\markcolumn\markform\index.scss         | SCSS             |          7 |          0 |          0 |          7 |
+| e:\project\pc-plat\src\templates\sharecomponent\fieldscomponent\editcard\index.jsx                     | JavaScript React |        159 |          0 |         25 |        184 |
+| e:\project\pc-plat\src\templates\sharecomponent\fieldscomponent\editcard\index.scss                    | SCSS             |         55 |          0 |          1 |         56 |
+| e:\project\pc-plat\src\templates\sharecomponent\fieldscomponent\index.jsx                              | JavaScript React |        250 |         10 |         29 |        289 |
+| e:\project\pc-plat\src\templates\sharecomponent\fieldscomponent\index.scss                             | SCSS             |         30 |          0 |          0 |         30 |
+| e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\dategroup\index.jsx                    | JavaScript React |         27 |          0 |          5 |         32 |
+| e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\dategroup\index.scss                   | SCSS             |         36 |          0 |          2 |         38 |
+| e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\dragsearch\card.jsx                    | JavaScript React |        114 |          0 |          9 |        123 |
+| e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\dragsearch\index.jsx                   | JavaScript React |        139 |          0 |         26 |        165 |
+| e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\dragsearch\index.scss                  | SCSS             |          6 |          0 |          1 |          7 |
+| e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\index.jsx                              | JavaScript React |        291 |         39 |         52 |        382 |
+| e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\index.scss                             | SCSS             |         84 |          0 |          1 |         85 |
+| e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\searcheditable\index.jsx               | JavaScript React |        283 |          0 |         25 |        308 |
+| e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\searcheditable\index.scss              | SCSS             |         43 |          0 |          1 |         44 |
+| e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\searchform\index.jsx                   | JavaScript React |        650 |          2 |         68 |        720 |
+| e:\project\pc-plat\src\templates\sharecomponent\searchcomponent\searchform\index.scss                  | SCSS             |         36 |          1 |          1 |         38 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\index.jsx                          | JavaScript React |         86 |          0 |         13 |         99 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\index.scss                         | SCSS             |         79 |          0 |          8 |         87 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\verifycard\columnform\index.jsx    | JavaScript React |        133 |          1 |         11 |        145 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\verifycard\columnform\index.scss   | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\verifycard\index.jsx               | JavaScript React |        358 |          6 |         43 |        407 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\verifycard\index.scss              | SCSS             |         80 |          0 |          0 |         80 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\verifycard\settingform\index.jsx   | JavaScript React |        295 |         16 |         24 |        335 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\verifycard\settingform\index.scss  | SCSS             |         19 |          0 |          1 |         20 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcalcomponent\verifycard\utils.jsx               | JavaScript React |        114 |         11 |         19 |        144 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\index.jsx                             | JavaScript React |        162 |         15 |         29 |        206 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\index.scss                            | SCSS             |         39 |          0 |          1 |         40 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\settingform\datasource\index.jsx      | JavaScript React |        801 |          3 |         26 |        830 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\settingform\datasource\index.scss     | SCSS             |         20 |          0 |          2 |         22 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\settingform\index.jsx                 | JavaScript React |        486 |         12 |         50 |        548 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\settingform\index.scss                | SCSS             |         60 |          0 |          1 |         61 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\settingform\simplescript\index.jsx    | JavaScript React |        440 |          0 |         53 |        493 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\settingform\simplescript\index.scss   | SCSS             |         45 |          0 |          0 |         45 |
+| e:\project\pc-plat\src\templates\sharecomponent\settingcomponent\settingform\utils.jsx                 | JavaScript React |        171 |         18 |         28 |        217 |
+| e:\project\pc-plat\src\templates\sharecomponent\tablecomponent\index.jsx                               | JavaScript React |        268 |         15 |         35 |        318 |
+| e:\project\pc-plat\src\templates\sharecomponent\tablecomponent\index.scss                              | SCSS             |          7 |          0 |          0 |          7 |
+| e:\project\pc-plat\src\templates\sharecomponent\tabscomponent\index.jsx                                | JavaScript React |        350 |         35 |         54 |        439 |
+| e:\project\pc-plat\src\templates\sharecomponent\tabscomponent\index.scss                               | SCSS             |         81 |          0 |          0 |         81 |
+| e:\project\pc-plat\src\templates\sharecomponent\tabscomponent\tabdragelement\card.jsx                  | JavaScript React |         54 |          0 |          9 |         63 |
+| e:\project\pc-plat\src\templates\sharecomponent\tabscomponent\tabdragelement\index.jsx                 | JavaScript React |         94 |          0 |         18 |        112 |
+| e:\project\pc-plat\src\templates\sharecomponent\tabscomponent\tabdragelement\index.scss                | SCSS             |         12 |          0 |          0 |         12 |
+| e:\project\pc-plat\src\templates\sharecomponent\tabscomponent\tabform\index.jsx                        | JavaScript React |        302 |          9 |         29 |        340 |
+| e:\project\pc-plat\src\templates\sharecomponent\tabscomponent\tabform\index.scss                       | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\sharecomponent\treesettingcomponent\index.jsx                         | JavaScript React |         92 |          9 |         13 |        114 |
+| e:\project\pc-plat\src\templates\sharecomponent\treesettingcomponent\index.scss                        | SCSS             |         39 |          0 |          1 |         40 |
+| e:\project\pc-plat\src\templates\sharecomponent\treesettingcomponent\settingform\datasource\index.jsx  | JavaScript React |        478 |          3 |         26 |        507 |
+| e:\project\pc-plat\src\templates\sharecomponent\treesettingcomponent\settingform\datasource\index.scss | SCSS             |         16 |          0 |          1 |         17 |
+| e:\project\pc-plat\src\templates\sharecomponent\treesettingcomponent\settingform\index.jsx             | JavaScript React |        254 |          2 |         30 |        286 |
+| e:\project\pc-plat\src\templates\sharecomponent\treesettingcomponent\settingform\index.scss            | SCSS             |         52 |          0 |          1 |         53 |
+| e:\project\pc-plat\src\templates\sharecomponent\treesettingcomponent\settingform\utils.jsx             | JavaScript React |         64 |          8 |         13 |         85 |
+| e:\project\pc-plat\src\templates\subtableconfig\index.jsx                                              | JavaScript React |      1,019 |         55 |        123 |      1,197 |
+| e:\project\pc-plat\src\templates\subtableconfig\index.scss                                             | SCSS             |        199 |          0 |          5 |        204 |
+| e:\project\pc-plat\src\templates\subtableconfig\menuform\index.jsx                                     | JavaScript React |        106 |          0 |         10 |        116 |
+| e:\project\pc-plat\src\templates\subtableconfig\menuform\index.scss                                    | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\subtableconfig\source.jsx                                             | JavaScript React |        333 |          0 |          7 |        340 |
+| e:\project\pc-plat\src\templates\treepageconfig\index.jsx                                              | JavaScript React |        690 |         52 |         85 |        827 |
+| e:\project\pc-plat\src\templates\treepageconfig\index.scss                                             | SCSS             |        252 |          0 |          6 |        258 |
+| e:\project\pc-plat\src\templates\treepageconfig\source.jsx                                             | JavaScript React |         53 |          0 |          5 |         58 |
+| e:\project\pc-plat\src\templates\zshare\basetransferform\index.jsx                                     | JavaScript React |         37 |          0 |          9 |         46 |
+| e:\project\pc-plat\src\templates\zshare\basetransferform\index.scss                                    | SCSS             |          6 |          0 |          0 |          6 |
+| e:\project\pc-plat\src\templates\zshare\codemirror\index.jsx                                           | JavaScript React |        151 |          1 |         19 |        171 |
+| e:\project\pc-plat\src\templates\zshare\codemirror\index.scss                                          | SCSS             |         77 |          1 |          1 |         79 |
+| e:\project\pc-plat\src\templates\zshare\createfunc\index.jsx                                           | JavaScript React |        179 |         11 |         24 |        214 |
+| e:\project\pc-plat\src\templates\zshare\createfunc\index.scss                                          | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\zshare\createinterface\index.jsx                                      | JavaScript React |        933 |         49 |        157 |      1,139 |
+| e:\project\pc-plat\src\templates\zshare\createinterface\index.scss                                     | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\zshare\createinterface\mutilform\index.jsx                            | JavaScript React |        132 |          2 |         11 |        145 |
+| e:\project\pc-plat\src\templates\zshare\createinterface\mutilform\index.scss                           | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\zshare\customscript\index.jsx                                         | JavaScript React |        378 |          0 |         50 |        428 |
+| e:\project\pc-plat\src\templates\zshare\customscript\index.scss                                        | SCSS             |         45 |          0 |          0 |         45 |
+| e:\project\pc-plat\src\templates\zshare\dragsource\index.jsx                                           | JavaScript React |         12 |          0 |          1 |         13 |
+| e:\project\pc-plat\src\templates\zshare\dragsource\index.scss                                          | SCSS             |          9 |          0 |          0 |          9 |
+| e:\project\pc-plat\src\templates\zshare\editTable\cusSwitch\index.jsx                                  | JavaScript React |         44 |          1 |          9 |         54 |
+| e:\project\pc-plat\src\templates\zshare\editTable\cusSwitch\index.scss                                 | SCSS             |         38 |          0 |          2 |         40 |
+| e:\project\pc-plat\src\templates\zshare\editTable\index.jsx                                            | JavaScript React |        551 |          0 |         85 |        636 |
+| e:\project\pc-plat\src\templates\zshare\editTable\index.scss                                           | SCSS             |        107 |          0 |          4 |        111 |
+| e:\project\pc-plat\src\templates\zshare\editcard\index.jsx                                             | JavaScript React |        142 |          0 |         17 |        159 |
+| e:\project\pc-plat\src\templates\zshare\editcard\index.scss                                            | SCSS             |         49 |          0 |          1 |         50 |
+| e:\project\pc-plat\src\templates\zshare\editcomponent\index.jsx                                        | JavaScript React |        206 |          6 |         25 |        237 |
+| e:\project\pc-plat\src\templates\zshare\editcomponent\index.scss                                       | SCSS             |          5 |          0 |          0 |          5 |
+| e:\project\pc-plat\src\templates\zshare\formconfig.jsx                                                 | JavaScript React |      3,511 |        132 |         39 |      3,682 |
+| e:\project\pc-plat\src\templates\zshare\menuform\index.jsx                                             | JavaScript React |        122 |          1 |         10 |        133 |
+| e:\project\pc-plat\src\templates\zshare\menuform\index.scss                                            | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\zshare\modalform\datatable\index.jsx                                  | JavaScript React |        395 |          1 |         55 |        451 |
+| e:\project\pc-plat\src\templates\zshare\modalform\datatable\index.scss                                 | SCSS             |         76 |          0 |          1 |         77 |
+| e:\project\pc-plat\src\templates\zshare\modalform\fieldtable\index.jsx                                 | JavaScript React |        115 |          0 |         16 |        131 |
+| e:\project\pc-plat\src\templates\zshare\modalform\fieldtable\index.scss                                | SCSS             |         14 |          0 |          1 |         15 |
+| e:\project\pc-plat\src\templates\zshare\modalform\index.jsx                                            | JavaScript React |        660 |          5 |         83 |        748 |
+| e:\project\pc-plat\src\templates\zshare\modalform\index.scss                                           | SCSS             |         37 |          0 |          0 |         37 |
+| e:\project\pc-plat\src\templates\zshare\modalform\modaleditable\index.jsx                              | JavaScript React |        425 |          0 |         56 |        481 |
+| e:\project\pc-plat\src\templates\zshare\modalform\modaleditable\index.scss                             | SCSS             |         56 |          0 |          1 |         57 |
+| e:\project\pc-plat\src\templates\zshare\pasteform\index.jsx                                            | JavaScript React |         84 |          1 |          9 |         94 |
+| e:\project\pc-plat\src\templates\zshare\pasteform\index.scss                                           | SCSS             |          6 |          0 |          1 |          7 |
+| e:\project\pc-plat\src\templates\zshare\transferform\index.jsx                                         | JavaScript React |        105 |          0 |         22 |        127 |
+| e:\project\pc-plat\src\templates\zshare\transferform\index.scss                                        | SCSS             |         36 |          0 |          2 |         38 |
+| e:\project\pc-plat\src\templates\zshare\unattended\index.jsx                                           | JavaScript React |         66 |          0 |         12 |         78 |
+| e:\project\pc-plat\src\templates\zshare\unattended\index.scss                                          | SCSS             |          8 |          0 |          0 |          8 |
+| e:\project\pc-plat\src\templates\zshare\unattended\settingform\index.jsx                               | JavaScript React |        163 |          2 |          8 |        173 |
+| e:\project\pc-plat\src\templates\zshare\unattended\settingform\index.scss                              | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\billcodeform\index.jsx                              | JavaScript React |        347 |          5 |         29 |        381 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\billcodeform\index.scss                             | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\callbackcustomscript\index.jsx                      | JavaScript React |        259 |          8 |         34 |        301 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\callbackcustomscript\index.scss                     | SCSS             |          5 |          0 |          0 |          5 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\contrastform\index.jsx                              | JavaScript React |        134 |          1 |          5 |        140 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\contrastform\index.scss                             | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\customform\index.jsx                                | JavaScript React |        232 |          3 |         23 |        258 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\customform\index.scss                               | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\customscript\index.jsx                              | JavaScript React |        287 |         10 |         36 |        333 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\customscript\index.scss                             | SCSS             |          5 |          0 |          0 |          5 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\index.jsx                                           | JavaScript React |      1,730 |          6 |        134 |      1,870 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\index.scss                                          | SCSS             |        204 |          0 |          8 |        212 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\uniqueform\index.jsx                                | JavaScript React |        117 |          1 |          9 |        127 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\uniqueform\index.scss                               | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\voucherform\index.jsx                               | JavaScript React |        243 |          1 |         25 |        269 |
+| e:\project\pc-plat\src\templates\zshare\verifycard\voucherform\index.scss                              | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\utils\asyncComponent.jsx                                                        | JavaScript React |         19 |          4 |          6 |         29 |
+| e:\project\pc-plat\src\utils\asyncIconComponent.jsx                                                    | JavaScript React |         20 |          4 |          6 |         30 |
+| e:\project\pc-plat\src\utils\asyncLoadComponent.jsx                                                    | JavaScript React |         22 |          4 |          6 |         32 |
+| e:\project\pc-plat\src\utils\asyncSpinComponent.jsx                                                    | JavaScript React |         22 |          4 |          6 |         32 |
+| e:\project\pc-plat\src\utils\events.js                                                                 | JavaScript       |          4 |          0 |          2 |          6 |
+| e:\project\pc-plat\src\utils\option.js                                                                 | JavaScript       |        903 |          9 |         15 |        927 |
+| e:\project\pc-plat\src\utils\utils-custom.js                                                           | JavaScript       |        687 |         43 |         89 |        819 |
+| e:\project\pc-plat\src\utils\utils-datamanage.js                                                       | JavaScript       |        582 |         76 |        114 |        772 |
+| e:\project\pc-plat\src\utils\utils-update.js                                                           | JavaScript       |        205 |         29 |         27 |        261 |
+| e:\project\pc-plat\src\utils\utils.js                                                                  | JavaScript       |      1,997 |        252 |        366 |      2,615 |
+| e:\project\pc-plat\src\views\404\index.jsx                                                             | JavaScript React |         27 |          0 |          4 |         31 |
+| e:\project\pc-plat\src\views\404\index.scss                                                            | SCSS             |         10 |          0 |          0 |         10 |
+| e:\project\pc-plat\src\views\appcheck\header\index.jsx                                                 | JavaScript React |         27 |          0 |          4 |         31 |
+| e:\project\pc-plat\src\views\appcheck\header\index.scss                                                | SCSS             |         55 |          0 |          2 |         57 |
+| e:\project\pc-plat\src\views\appcheck\index.jsx                                                        | JavaScript React |        231 |          6 |         24 |        261 |
+| e:\project\pc-plat\src\views\appcheck\index.scss                                                       | SCSS             |         94 |          0 |          7 |        101 |
+| e:\project\pc-plat\src\views\appmanage\header\index.jsx                                                | JavaScript React |         27 |          0 |          4 |         31 |
+| e:\project\pc-plat\src\views\appmanage\header\index.scss                                               | SCSS             |         55 |          0 |          2 |         57 |
+| e:\project\pc-plat\src\views\appmanage\index.jsx                                                       | JavaScript React |      1,089 |          9 |        113 |      1,211 |
+| e:\project\pc-plat\src\views\appmanage\index.scss                                                      | SCSS             |        119 |          0 |          7 |        126 |
+| e:\project\pc-plat\src\views\appmanage\mutilform\index.jsx                                             | JavaScript React |         76 |          7 |          6 |         89 |
+| e:\project\pc-plat\src\views\appmanage\mutilform\index.scss                                            | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\views\appmanage\scriptform\index.jsx                                            | JavaScript React |        216 |          6 |         30 |        252 |
+| e:\project\pc-plat\src\views\appmanage\scriptform\index.scss                                           | SCSS             |         11 |          0 |          1 |         12 |
+| e:\project\pc-plat\src\views\appmanage\submutilform\index.jsx                                          | JavaScript React |        231 |         69 |         14 |        314 |
+| e:\project\pc-plat\src\views\appmanage\submutilform\index.scss                                         | SCSS             |         22 |          0 |          1 |         23 |
+| e:\project\pc-plat\src\views\appmanage\transform\index.jsx                                             | JavaScript React |         76 |          7 |          6 |         89 |
+| e:\project\pc-plat\src\views\appmanage\transform\index.scss                                            | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\views\billprint\index.jsx                                                       | JavaScript React |        556 |         16 |         95 |        667 |
+| e:\project\pc-plat\src\views\billprint\index.scss                                                      | SCSS             |         52 |          0 |          4 |         56 |
+| e:\project\pc-plat\src\views\design\header\index.jsx                                                   | JavaScript React |        361 |         14 |         49 |        424 |
+| e:\project\pc-plat\src\views\design\header\index.scss                                                  | SCSS             |        205 |          0 |          6 |        211 |
+| e:\project\pc-plat\src\views\design\header\versions\index.jsx                                          | JavaScript React |        389 |          0 |         59 |        448 |
+| e:\project\pc-plat\src\views\design\header\versions\index.scss                                         | SCSS             |         31 |          0 |          0 |         31 |
+| e:\project\pc-plat\src\views\design\index.jsx                                                          | JavaScript React |         28 |          0 |          6 |         34 |
+| e:\project\pc-plat\src\views\design\index.scss                                                         | SCSS             |         19 |          0 |          0 |         19 |
+| e:\project\pc-plat\src\views\design\sidemenu\config.jsx                                                | JavaScript React |        229 |         22 |          1 |        252 |
+| e:\project\pc-plat\src\views\design\sidemenu\index.jsx                                                 | JavaScript React |        268 |          4 |         37 |        309 |
+| e:\project\pc-plat\src\views\design\sidemenu\index.scss                                                | SCSS             |        118 |          0 |          1 |        119 |
+| e:\project\pc-plat\src\views\imdesign\index.jsx                                                        | JavaScript React |        496 |          7 |         65 |        568 |
+| e:\project\pc-plat\src\views\imdesign\index.scss                                                       | SCSS             |        330 |          0 |         21 |        351 |
+| e:\project\pc-plat\src\views\imdesign\menuform\index.jsx                                               | JavaScript React |         67 |          2 |          8 |         77 |
+| e:\project\pc-plat\src\views\imdesign\menuform\index.scss                                              | SCSS             |         25 |          0 |          0 |         25 |
+| e:\project\pc-plat\src\views\imdesign\options.jsx                                                      | JavaScript React |         23 |          3 |          3 |         29 |
+| e:\project\pc-plat\src\views\interface\api\index.js                                                    | JavaScript       |        142 |         11 |         22 |        175 |
+| e:\project\pc-plat\src\views\interface\header\index.jsx                                                | JavaScript React |         38 |          0 |          7 |         45 |
+| e:\project\pc-plat\src\views\interface\header\index.scss                                               | SCSS             |         59 |          0 |          5 |         64 |
+| e:\project\pc-plat\src\views\interface\history\index.jsx                                               | JavaScript React |        251 |          3 |         37 |        291 |
+| e:\project\pc-plat\src\views\interface\history\index.scss                                              | SCSS             |        111 |          0 |          2 |        113 |
+| e:\project\pc-plat\src\views\interface\index.jsx                                                       | JavaScript React |         23 |          0 |          5 |         28 |
+| e:\project\pc-plat\src\views\interface\index.scss                                                      | SCSS             |          6 |          0 |          0 |          6 |
+| e:\project\pc-plat\src\views\interface\workspace\editTable\index.jsx                                   | JavaScript React |        219 |          0 |         31 |        250 |
+| e:\project\pc-plat\src\views\interface\workspace\editTable\index.scss                                  | SCSS             |         85 |          0 |          1 |         86 |
+| e:\project\pc-plat\src\views\interface\workspace\index.jsx                                             | JavaScript React |        107 |          3 |         14 |        124 |
+| e:\project\pc-plat\src\views\interface\workspace\index.scss                                            | SCSS             |         51 |          0 |          1 |         52 |
+| e:\project\pc-plat\src\views\interface\workspace\request\index.jsx                                     | JavaScript React |        254 |          3 |         53 |        310 |
+| e:\project\pc-plat\src\views\interface\workspace\request\index.scss                                    | SCSS             |        159 |          0 |          3 |        162 |
+| e:\project\pc-plat\src\views\login\index.jsx                                                           | JavaScript React |        742 |         37 |        109 |        888 |
+| e:\project\pc-plat\src\views\login\index.scss                                                          | SCSS             |        293 |          1 |          7 |        301 |
+| e:\project\pc-plat\src\views\login\logincloudform.jsx                                                  | JavaScript React |         79 |          1 |          8 |         88 |
+| e:\project\pc-plat\src\views\login\loginform.jsx                                                       | JavaScript React |        455 |          5 |         47 |        507 |
+| e:\project\pc-plat\src\views\main\index.jsx                                                            | JavaScript React |         35 |          0 |          7 |         42 |
+| e:\project\pc-plat\src\views\main\index.scss                                                           | SCSS             |          5 |          0 |          0 |          5 |
+| e:\project\pc-plat\src\views\menudesign\homeform\index.jsx                                             | JavaScript React |        161 |          2 |         18 |        181 |
+| e:\project\pc-plat\src\views\menudesign\homeform\index.scss                                            | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\views\menudesign\index.jsx                                                      | JavaScript React |        998 |          4 |        110 |      1,112 |
+| e:\project\pc-plat\src\views\menudesign\index.scss                                                     | SCSS             |        178 |          0 |          5 |        183 |
+| e:\project\pc-plat\src\views\menudesign\menuform\index.jsx                                             | JavaScript React |        355 |          5 |         26 |        386 |
+| e:\project\pc-plat\src\views\menudesign\menuform\index.scss                                            | SCSS             |          8 |          0 |          0 |          8 |
+| e:\project\pc-plat\src\views\menudesign\printmenuform\index.jsx                                        | JavaScript React |        236 |          1 |         20 |        257 |
+| e:\project\pc-plat\src\views\menudesign\printmenuform\index.scss                                       | SCSS             |          0 |          0 |          1 |          1 |
+| e:\project\pc-plat\src\views\mobdesign\index.jsx                                                       | JavaScript React |      1,566 |          4 |        206 |      1,776 |
+| e:\project\pc-plat\src\views\mobdesign\index.scss                                                      | SCSS             |        274 |          1 |         16 |        291 |
+| e:\project\pc-plat\src\views\mobdesign\menuform\index.jsx                                              | JavaScript React |        239 |          3 |         13 |        255 |
+| e:\project\pc-plat\src\views\mobdesign\menuform\index.scss                                             | SCSS             |         25 |          0 |          0 |         25 |
+| e:\project\pc-plat\src\views\pay\index.jsx                                                             | JavaScript React |        258 |         11 |         30 |        299 |
+| e:\project\pc-plat\src\views\pay\index.scss                                                            | SCSS             |        146 |          3 |          8 |        157 |
+| e:\project\pc-plat\src\views\pcdesign\index.jsx                                                        | JavaScript React |      1,615 |          4 |        202 |      1,821 |
+| e:\project\pc-plat\src\views\pcdesign\index.scss                                                       | SCSS             |        227 |          0 |         11 |        238 |
+| e:\project\pc-plat\src\views\pcdesign\menuform\index.jsx                                               | JavaScript React |        176 |          3 |         13 |        192 |
+| e:\project\pc-plat\src\views\pcdesign\menuform\index.scss                                              | SCSS             |          8 |          0 |          0 |          8 |
+| e:\project\pc-plat\src\views\printTemplate\dragelement\index.jsx                                       | JavaScript React |         17 |          0 |          4 |         21 |
+| e:\project\pc-plat\src\views\printTemplate\dragelement\index.scss                                      | SCSS             |         22 |          0 |          4 |         26 |
+| e:\project\pc-plat\src\views\printTemplate\dragelement\source.jsx                                      | JavaScript React |         14 |          0 |          2 |         16 |
+| e:\project\pc-plat\src\views\printTemplate\index.jsx                                                   | JavaScript React |        824 |          9 |        119 |        952 |
+| e:\project\pc-plat\src\views\printTemplate\index.scss                                                  | SCSS             |        122 |          0 |          2 |        124 |
+| e:\project\pc-plat\src\views\printTemplate\mutilform\index.jsx                                         | JavaScript React |        290 |          1 |         32 |        323 |
+| e:\project\pc-plat\src\views\printTemplate\mutilform\index.scss                                        | SCSS             |         49 |          8 |          0 |         57 |
+| e:\project\pc-plat\src\views\printTemplate\option.js                                                   | JavaScript       |        909 |          2 |         11 |        922 |
+| e:\project\pc-plat\src\views\printTemplate\print.js                                                    | JavaScript       |        394 |         19 |         42 |        455 |
+| e:\project\pc-plat\src\views\rolemanage\header\index.jsx                                               | JavaScript React |         28 |          0 |          4 |         32 |
+| e:\project\pc-plat\src\views\rolemanage\header\index.scss                                              | SCSS             |         56 |          0 |          2 |         58 |
+| e:\project\pc-plat\src\views\rolemanage\index.jsx                                                      | JavaScript React |        814 |          4 |        109 |        927 |
+| e:\project\pc-plat\src\views\rolemanage\index.scss                                                     | SCSS             |         86 |          0 |          5 |         91 |
+| e:\project\pc-plat\src\views\sso\index.jsx                                                             | JavaScript React |        131 |          2 |         21 |        154 |
+| e:\project\pc-plat\src\views\sso\index.scss                                                            | SCSS             |          7 |          0 |          0 |          7 |
+| Total                                                                                                  |                  |    195,487 |      5,743 |     20,061 |    221,291 |
++--------------------------------------------------------------------------------------------------------+------------------+------------+------------+------------+------------+
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 8a03d23..92f1936 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2955,6 +2955,11 @@
         "@xtuc/long": "4.2.2"
       }
     },
+    "@xmldom/xmldom": {
+      "version": "0.7.5",
+      "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.5.tgz",
+      "integrity": "sha512-V3BIhmY36fXZ1OtVcI9W+FxQqxVLsPKcNjWigIaa81dLC9IolJl5Mt4Cvhmr0flUnjSpTdrbMTSbXqYqV5dT6A=="
+    },
     "@xtuc/ieee754": {
       "version": "1.2.0",
       "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
@@ -4933,12 +4938,9 @@
       }
     },
     "caniuse-lite": {
-      "version": "1.0.30001260",
-      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001260.tgz",
-      "integrity": "sha512-Fhjc/k8725ItmrvW5QomzxLeojewxvqiYCKeFcfFEhut28IVLdpHU19dneOmltZQIE5HNbawj1HYD+1f2bM1Dg==",
-      "requires": {
-        "nanocolors": "^0.1.0"
-      }
+      "version": "1.0.30001319",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001319.tgz",
+      "integrity": "sha512-xjlIAFHucBRSMUo1kb5D4LYgcN1M45qdKP++lhqowDpwJwGkpIRTt5qQqnhxjj1vHcI7nrJxWhCC1ATrCEBTcw=="
     },
     "capture-exit": {
       "version": "2.0.0",
@@ -13937,11 +13939,6 @@
       "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
       "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg=="
     },
-    "nanocolors": {
-      "version": "0.1.12",
-      "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz",
-      "integrity": "sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ=="
-    },
     "nanomatch": {
       "version": "1.2.13",
       "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
@@ -21234,6 +21231,14 @@
         "async-limiter": "~1.0.0"
       }
     },
+    "x2js": {
+      "version": "3.4.3",
+      "resolved": "https://registry.npmjs.org/x2js/-/x2js-3.4.3.tgz",
+      "integrity": "sha512-+65+WHCaQ9E0Gb2FDz/tYRSRBGGvFsSMiWDGn8KbgJOLkJhZBMCU1lxuRMLyTcx/54IopT0rDQWCUz2f7FTsyQ==",
+      "requires": {
+        "@xmldom/xmldom": "^0.7.4"
+      }
+    },
     "xcode": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/xcode/-/xcode-2.1.0.tgz",
diff --git a/package.json b/package.json
index 7ceec02..ff154ab 100644
--- a/package.json
+++ b/package.json
@@ -100,6 +100,7 @@
     "webpack-dev-server": "3.2.1",
     "webpack-manifest-plugin": "2.0.4",
     "workbox-webpack-plugin": "4.3.1",
+    "x2js": "^3.4.3",
     "xlsx": "^0.15.5"
   },
   "scripts": {
diff --git a/public/README.txt b/public/README.txt
index 70fe1db..96a1b4e 100644
--- a/public/README.txt
+++ b/public/README.txt
@@ -6,10 +6,11 @@
 systemType        -- 绯荤粺绫诲瀷锛屾寮忕郴缁熸槸濉玴roduction锛屽紑鍙戠郴缁熶负绌猴紝寮�鍙戠郴缁熶細鏈変竴閮ㄥ垎鐨勬暟鎹ā绯婂寲
 externalDatabase  -- 澶栬仈搴擄紝涓嶄娇鐢ㄦ椂榛樿涓篺alse
 lineColor         -- 鐧诲綍椤靛垎鍓茬嚎棰滆壊
-filter            -- 椤甸潰婊ら暅锛屽�间负'true'鏃讹紝椤甸潰鏄剧ず涓洪粦鐧借壊
+filter            -- 椤甸潰婊ら暅锛屽�间负"true"鏃讹紝椤甸潰鏄剧ず涓洪粦鐧借壊锛涘綋璁剧疆涓烘棩鏈熸椂锛圷YYY-MM-DD锛夛紝鎴鍒板綋鍓嶆棩鏈燂紝椤甸潰鏄剧ず涓洪粦鐧借壊
 defaultApp        -- 榛樿搴旂敤锛岀郴缁熼粯璁ゆ墦寮�鏌愪釜瀛愬簲鐢ㄦ椂闇�濉啓搴旂敤缂栫爜
 defaultLang       -- 鎵撳紑鐨勫瓙搴旂敤璇█绫诲瀷锛岄粯璁や负zh-CN
 WXAppID           -- 浣跨敤鍏紬鍙锋椂锛岀粦瀹氱殑鍏紬鍙稩D
 debugger          -- 鍊间负true鏃跺紑鍚皟璇曟ā寮忥紝寮�鍚悗绉诲姩绔瓙搴旂敤涓細鏈夋帶鍒跺彴
 licenseKey        -- 璁稿彲瀵嗛挜锛屽湪鍐呴儴缃戠粶涓娇鐢ㄧ郴缁熸椂锛屼細璺宠繃epc楠岃瘉
-probation         -- 璇曠敤鏈燂紙YYYY-MM-DD锛夛紝鍦ㄦ寮忕郴缁熶腑锛岃瘯鐢ㄦ湡鍐呰皟鐢ㄧ郴缁熸帴鍙g殑鑴氭湰浼氳褰曚笅鏉�
\ No newline at end of file
+probation         -- 璇曠敤鏈燂紙YYYY-MM-DD锛夛紝鍦ㄦ寮忕郴缁熶腑锛岃瘯鐢ㄦ湡鍐呰皟鐢ㄧ郴缁熸帴鍙g殑鑴氭湰浼氳褰曚笅鏉�
+keepPassword      -- 璁颁綇瀵嗙爜锛岄粯璁ゅ紑鍚紝褰撳�间负"false"鏃剁鐢�
\ No newline at end of file
diff --git a/public/options.json b/public/options.json
index 20cd20a..bf2dc44 100644
--- a/public/options.json
+++ b/public/options.json
@@ -6,7 +6,7 @@
   "externalDatabase": "mkdata_kress_test",
   "lineColor": "",
   "filter": "false",
-  "defaultApp": "mkindustry",
+  "defaultApp": "mk",
   "defaultLang": "zh-CN",
   "WXAppID": "",
   "debugger": false,
diff --git a/src/api/index.js b/src/api/index.js
index 9201129..11224af 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -58,7 +58,7 @@
     localStorage.removeItem('localRole_id')
 
     sessionStorage.clear()
-    sessionStorage.setItem('loginError', JSON.stringify({request: res.config ? res.config.data : '', response: JSON.stringify(res.data)}))
+    sessionStorage.setItem('loginError', JSON.stringify({url: res.config ? res.config.url : '', request: res.config ? res.config.data : '', response: JSON.stringify(res.data)}))
     window.history.replaceState(null, null, window.location.href.split('#')[0] + '#/login')
     window.location.reload()
   }
@@ -69,7 +69,7 @@
     if (window.debugger === true) {
       response.data.ErrCode = 'E'
       return Promise.resolve(response.data)
-    } else {
+    } else if (!sessionStorage.getItem('loginError')) {
       setCurrentUrl(response)
     }
   } else {
@@ -181,7 +181,8 @@
       func: 's_visitor_login',
       timestamp: moment().format('YYYY-MM-DD HH:mm:ss'), 
       SessionUid: _SessionUid,
-      TypeCharOne: 'pc'
+      TypeCharOne: 'pc',
+      kei_id: window.btoa(window.encodeURIComponent(window.GLOB.host))
     }
     
     param.LText = md5(window.btoa(_SessionUid + param.timestamp))
@@ -223,7 +224,9 @@
       way_no: 'sms_vcode',
       systemType: options.sysType,
       login_city: city,
-      login_id_address: ipAddress
+      login_id_address: ipAddress,
+      kei_id: window.btoa(window.encodeURIComponent(window.GLOB.host)),
+      device_id: localStorage.getItem('SessionUid')
     }
 
     param.appkey = window.GLOB.appkey || ''
@@ -260,7 +263,9 @@
       systemType: options.sysType,
       Type: 'S',
       login_city: city,
-      login_id_address: ipAddress
+      login_id_address: ipAddress,
+      kei_id: window.btoa(window.encodeURIComponent(window.GLOB.host)),
+      device_id: localStorage.getItem('SessionUid')
     }
 
     param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
@@ -694,7 +699,15 @@
       }
     })
     param.sign = md5(values)
-    param.t = new Date().getTime()
+    param.t = new Date().getTime();
+
+    ['arr_field', 'LText_field', 'custom_script', 'LText1', 'LText', 'LText2', 'DateCount'].forEach(key => {
+      if (param[key]) {
+        let val = param[key]
+        delete param[key]
+        param[key] = val
+      }
+    })
 
     return param
   }
diff --git a/src/assets/css/main.scss b/src/assets/css/main.scss
index a137096..d9922e3 100644
--- a/src/assets/css/main.scss
+++ b/src/assets/css/main.scss
@@ -123,15 +123,18 @@
 }
 
 // 閲嶇疆鏃堕棿鎻掍欢鏃堕棿婊氬姩鏉�
-.ant-calendar-time-picker-select:hover::-webkit-scrollbar {
-  width: 7px;
+.ant-calendar-time-picker-select {
+  overflow-y: auto!important;
 }
-.ant-calendar-time-picker-select:hover::-webkit-scrollbar-thumb {
+.ant-calendar-time-picker-select::-webkit-scrollbar {
+  width: 6px;
+}
+.ant-calendar-time-picker-select::-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);
+  box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.08);
+  background: rgba(0, 0, 0, 0.08);
 }
-.ant-calendar-time-picker-select:hover::-webkit-scrollbar-track {
+.ant-calendar-time-picker-select::-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);
@@ -163,7 +166,7 @@
   width: 100%;
   display: inline-block;
   .ant-calendar-picker {
-    width: 100%;
+    width: 100%!important;
   }
 }
 .ant-calendar-picker-container {
@@ -443,4 +446,26 @@
 // }
 // .ant-table.ant-table-mini .ant-table-tbody > tr > td {
 //   padding: 4px 4px;
-// }
\ No newline at end of file
+// }
+.mk-date-picker.minute {
+  .ant-calendar-time-picker-combobox {
+    .ant-calendar-time-picker-select {
+      width: 50%;
+    }
+
+    >.ant-calendar-time-picker-select:last-child {
+      display: none;
+    }
+  }
+}
+.mk-date-picker.hour {
+  .ant-calendar-time-picker-combobox {
+    .ant-calendar-time-picker-select {
+      width: 100%;
+    }
+
+    >.ant-calendar-time-picker-select:not(:first-child) {
+      display: none;
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/assets/css/viewstyle.scss b/src/assets/css/viewstyle.scss
index 588eb0a..17f3272 100644
--- a/src/assets/css/viewstyle.scss
+++ b/src/assets/css/viewstyle.scss
@@ -413,9 +413,14 @@
   .system-color {
     color: $color6;
   }
+  .system-background {
+    background: $color6;
+    border-color: $color6;
+    color: #ffffff;
+  }
   .ant-timeline.system {
     .ant-timeline-item-tail {
-      border-color: $color2;;
+      border-color: $color2;
     }
   }
   .custom-tab-form-box .mk-normal-form-title.mkbtn {
diff --git a/src/assets/img/minview.png b/src/assets/img/minview.png
new file mode 100644
index 0000000..7cffe9a
--- /dev/null
+++ b/src/assets/img/minview.png
Binary files differ
diff --git a/src/assets/mobimg/commonbar.png b/src/assets/mobimg/commonbar.png
new file mode 100644
index 0000000..9b0822f
--- /dev/null
+++ b/src/assets/mobimg/commonbar.png
Binary files differ
diff --git a/src/assets/mobimg/voucher.jpg b/src/assets/mobimg/voucher.jpg
new file mode 100644
index 0000000..82a4512
--- /dev/null
+++ b/src/assets/mobimg/voucher.jpg
Binary files differ
diff --git a/src/components/header/index.jsx b/src/components/header/index.jsx
index dca77b8..5b2824b 100644
--- a/src/components/header/index.jsx
+++ b/src/components/header/index.jsx
@@ -38,7 +38,8 @@
     visible: false, // 淇敼瀵嗙爜妯℃�佹
     dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
     confirmLoading: false,
-    userName: sessionStorage.getItem('User_Name'),
+    userName: '',
+    fullName: '',
     logourl: window.GLOB.mainlogo,
     appVersion: window.GLOB.appVersion,
     loginVisible: false,
@@ -189,10 +190,19 @@
 
         const { menulist, thdMenuList } = this.getMenulist(result)
 
+        let systems = []
+        if ((options.sysType === 'local' || options.sysType === 'SSO') && result.sys_list) {
+          systems = result.sys_list
+
+          if (options.sysType === 'local' && window.GLOB.systemType !== 'production' && systems.length > 10) {
+            systems.length = 10
+          }
+        }
+
         this.setState({
           menulist,
           thdMenuList,
-          systems: window.GLOB.systemType === 'production' || options.sysType === 'SSO' ? (result.sys_list || []) : []
+          systems: systems
         })
         
         let mainMenu = menulist[0] || ''
@@ -446,7 +456,6 @@
             message: result.message,
             duration: 10
           })
-          return
         } else if (result.func_detail && result.func_detail.length > 0) {
           this.writeFuncs(result.func_detail)
         }
@@ -551,18 +560,40 @@
       url = url + '/'
     }
 
-    let href = url + 'index.html#/ssologin/' + window.btoa(window.encodeURIComponent(JSON.stringify({
-      UserID: sessionStorage.getItem('UserID'),
-      LoginUID: sessionStorage.getItem('LoginUID'),
-      User_Name: sessionStorage.getItem('User_Name'),
-      Full_Name: sessionStorage.getItem('Full_Name'),
-      avatar: sessionStorage.getItem('avatar'),
-      dataM: system.dataM ? 'true' : '',
-      debug: system.debug || '',
-      role_id: system.role_id || ''
-    })))
+    let key = Utils.getuuid()
 
-    window.open(href)
+    let _param = {
+      func: 'webapi_scan_binding_key',
+      binding_type: 'mk',
+      scan_type: 'toggle',
+      scan_appkey: system.scan_appkey,
+      id: key
+    }
+
+    Api.getSystemConfig(_param).then(res => {
+      if (!res.status) {
+        notification.warning({
+          top: 92,
+          message: res.message,
+          duration: 5
+        })
+      } else if (res.thd_party_appid && res.thd_party_member_id && res.thd_party_openid) {
+        let href = url + 'admin/index.html#/ssologin/' + window.btoa(window.encodeURIComponent(JSON.stringify({
+          appid: res.thd_party_appid,
+          memberId: res.thd_party_member_id,
+          openid: res.thd_party_openid,
+          key: key
+        })))
+
+        window.open(href)
+      } else {
+        notification.warning({
+          top: 92,
+          message: '淇℃伅缂哄け锛岃鑱旂郴绠$悊鍛橈紒',
+          duration: 5
+        })
+      }
+    })
   }
 
   dropdownMenuChange = (visible) => {
@@ -579,6 +610,15 @@
   UNSAFE_componentWillMount () {
     // 缁勪欢鍔犺浇鏃讹紝鑾峰彇鑿滃崟鏁版嵁
     this.getRolesMenu()
+
+    let fullName = sessionStorage.getItem('Full_Name') || ''
+    let userName = sessionStorage.getItem('User_Name') || ''
+
+    if (fullName.toLowerCase() === userName.toLowerCase()) {
+      userName = ''
+    }
+
+    this.setState({fullName, userName})
   }
 
   componentDidMount () {
@@ -586,6 +626,12 @@
     setTimeout(() => {
       Api.getAppVersion().then(() => {}, () => {})
     }, 1000)
+    // Api.genericInterface({
+    //   func: 's_get_fcc_account_data',
+    //   fcc_date: '2022-03-01',
+    //   search_type: ''
+    // }).then(res => {
+    // })
   }
 
   shouldComponentUpdate (nextProps, nextState) {
@@ -802,7 +848,7 @@
           <div>
             <img src={this.state.avatar || avatar} alt=""/>
             <span>
-              <span className="username">{this.state.userName}</span> <DownOutlined />
+              <span className="username"><span>{this.state.fullName}</span>{this.state.userName ? <span>{this.state.userName}</span> : null}</span> <DownOutlined />
             </span>
           </div>
         </Dropdown>
diff --git a/src/components/header/index.scss b/src/components/header/index.scss
index 78fb275..27850ef 100644
--- a/src/components/header/index.scss
+++ b/src/components/header/index.scss
@@ -97,12 +97,21 @@
       color: #ffffff;
       font-size: 0.95rem;
       .username {
+        vertical-align: middle;
         display: inline-block;
-        height: 30px;
-        max-width: 95px;
-        overflow: hidden;
-        text-overflow: ellipsis;
-        white-space: nowrap;
+        span {
+          display: block;
+          line-height: 15px;
+          padding: 0 3px;
+          font-size: 0.95rem;
+          max-width: 100px;
+          overflow: hidden;
+          text-overflow: ellipsis;
+          white-space: nowrap;
+        }
+        span + span {
+          font-size: 12px;
+        }
       }
     }
   }
diff --git a/src/components/header/loginform.jsx b/src/components/header/loginform.jsx
index be94096..6e066ec 100644
--- a/src/components/header/loginform.jsx
+++ b/src/components/header/loginform.jsx
@@ -115,13 +115,13 @@
             ]
           })(<Input.Password onPressEnter={(e) => {this.handleSubmit(e, 'username')}} placeholder={this.state.dict['login.password']} prefix={<LockOutlined style={{ color: 'rgba(0,0,0,.25)' }} />} />)}
         </Form.Item>
-        <Form.Item style={{marginBottom: '10px'}}>
+        {window.GLOB.keepKey ? <Form.Item style={{marginBottom: '10px'}}>
           {getFieldDecorator('remember', {
             valuePropName: 'checked',
             initialValue: remember,
           })(
           <Checkbox onChange={this.rememberChange}>璁颁綇瀵嗙爜</Checkbox>)}
-        </Form.Item>
+        </Form.Item> : <div style={{height: '20px'}}></div>}
       </Form>
     )
   }
diff --git a/src/components/mk-icon/index.jsx b/src/components/mk-icon/index.jsx
index eae7087..9fff348 100644
--- a/src/components/mk-icon/index.jsx
+++ b/src/components/mk-icon/index.jsx
@@ -12,8 +12,6 @@
   DownloadOutlined,
   StepBackwardOutlined,
   StepForwardOutlined,
-  FastBackwardOutlined,
-  FastForwardOutlined,
   DoubleRightOutlined,
   DoubleLeftOutlined,
   ForwardOutlined,
@@ -242,8 +240,6 @@
   'download': (props) => <DownloadOutlined {...props} />,
   'step-backward': (props) => <StepBackwardOutlined {...props} />,
   'step-forward': (props) => <StepForwardOutlined {...props} />,
-  'fast-backward': (props) => <FastBackwardOutlined {...props} />,
-  'fast-forward': (props) => <FastForwardOutlined {...props} />,
   'double-right': (props) => <DoubleRightOutlined {...props} />,
   'double-left': (props) => <DoubleLeftOutlined {...props} />,
   'forward': (props) => <ForwardOutlined {...props} />,
diff --git a/src/components/mutilform/index.jsx b/src/components/mutilform/index.jsx
deleted file mode 100644
index 11ff99a..0000000
--- a/src/components/mutilform/index.jsx
+++ /dev/null
@@ -1,211 +0,0 @@
-import React, {Component} from 'react'
-import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, InputNumber, Select, DatePicker } from 'antd'
-import moment from 'moment'
-import './index.scss'
-
-const dateFormat = 'YYYY-MM-DD'
-const timeFormat = 'YYYY-MM-DD HH:mm:ss'
-
-class MainSearch extends Component {
-  static propTpyes = {
-    formlist: PropTypes.array, // 鎼滅储鏉′欢鍒楄〃
-    dict: PropTypes.object, // 瀛楀吀椤�
-    data: PropTypes.any, // 琛ㄦ牸鏁版嵁
-    cols: PropTypes.number
-  }
-
-  state = {
-    formats: null, // 浜嬩欢鏍¢獙瑙勫垯
-    datatype: null
-  }
-
-  UNSAFE_componentWillMount () {
-    let formats = {}
-    let datatype = {}
-    this.props.formlist.forEach(item => {
-      if (item.InputType === 'date') {
-        formats[item.FieldName] = dateFormat
-      } else if (item.InputType === 'datetime') {
-        formats[item.FieldName] = timeFormat
-      }
-      datatype[item.FieldName] = item.InputType
-    })
-    this.setState({
-      formats: formats,
-      datatype: datatype
-    })
-  }
-
-  getFields() {
-    const { getFieldDecorator } = this.props.form
-    const fields = []
-    this.props.formlist.forEach((item, index) => {
-      if (item.Hide !== 'false') return // input闅愯棌
-
-      let validate = item.Validate ? JSON.parse(item.Validate) : {} // 妫�楠屾槸鍚﹀繀濉�
-      let _required = validate.required || false
-      if (item.InputType === 'text') { // 鏂囨湰
-        fields.push(
-          <Col span={24 / this.props.cols} key={index}>
-            <Form.Item label={item.Label}>
-              {getFieldDecorator(item.FieldName, {
-                initialValue: this.props.data ? this.props.data[item.FieldName] : item.InitVal,
-                rules: [
-                  {
-                    required: _required,
-                    message: this.props.dict['form.required.input'] + item.Label + '!'
-                  }
-                ]
-              })(<Input placeholder="" autoComplete="off" disabled={item.readonly} />)}
-            </Form.Item>
-          </Col>
-        )
-      } else if (item.InputType === 'spinner') { // 鏁板瓧
-        validate.min = (validate.min || validate.min === 0) ? validate.min : -Infinity
-        validate.max = (validate.max || validate.max === 0) ? validate.max : Infinity
-        validate.precision = (validate.precision || validate.precision === 0) ? validate.precision : ''
-        let _initval = (this.props.data ? this.props.data[item.FieldName] : item.InitVal) || 0
-        let model = <InputNumber initialValue={_initval} disabled={item.readonly} min={validate.min} max={validate.max} />
-
-        if (validate.precision === +validate.precision) { // 鏁版嵁绮惧害
-          model = <InputNumber initialValue={_initval} disabled={item.readonly} min={validate.min} max={validate.max} precision={validate.precision} />
-        }
-        
-        fields.push(
-          <Col span={24 / this.props.cols} key={index}>
-            <Form.Item label={item.Label}>
-              {getFieldDecorator(item.FieldName, {
-                initialValue: _initval,
-                rules: [
-                  {
-                    required: _required,
-                    message: this.props.dict['form.required.input'] + item.Label + '!'
-                  }
-                ]
-              })(model)}
-            </Form.Item>
-          </Col>
-        )
-      } else if (item.InputType === 'select') { // 涓嬫媺鎼滅储
-        fields.push(
-          <Col span={24 / this.props.cols} key={index}>
-            <Form.Item label={item.Label}>
-              {getFieldDecorator(item.FieldName, {
-                initialValue: this.props.data ? this.props.data[item.FieldName] : item.InitVal,
-                rules: [
-                  {
-                    required: _required,
-                    message: this.props.dict['form.required.select'] + item.Label + '!'
-                  }
-                ]
-              })(
-                <Select
-                  showSearch
-                  filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
-                  getPopupContainer={() => document.getElementById('form-box')}
-                >
-                  {item.DynOptions.map(option =>
-                    <Select.Option id={option.id} title={option.text} key={option.id} value={option.id}>{option.text}</Select.Option>
-                  )}
-                </Select>
-              )}
-            </Form.Item>
-          </Col>
-        )
-      } else if (item.InputType === 'date') { // 鏃堕棿鎼滅储
-        let _initval = this.props.data ? this.props.data[item.FieldName] : item.InitVal
-        fields.push(
-          <Col span={24 / this.props.cols} key={index}>
-            <Form.Item label={item.Label}>
-              {getFieldDecorator(item.FieldName, {
-                initialValue: _initval ? moment(_initval, dateFormat) : null,
-                rules: [
-                  {
-                    required: _required,
-                    message: this.props.dict['form.required.select'] + item.Label + '!'
-                  }
-                ]
-              })(
-                <DatePicker getCalendarContainer={() => document.getElementById('form-box')} format={dateFormat} />
-              )}
-            </Form.Item>
-          </Col>
-        )
-      } else if (item.InputType === 'datetime') {
-        let _initval = this.props.data ? this.props.data[item.FieldName] : item.InitVal
-        fields.push(
-          <Col span={24 / this.props.cols} key={index}>
-            <Form.Item label={item.Label}>
-              {getFieldDecorator(item.FieldName, {
-                initialValue: _initval ? moment(_initval, timeFormat) : null,
-                rules: [
-                  {
-                    required: _required,
-                    message: this.props.dict['form.required.select'] + item.Label + '!'
-                  }
-                ]
-              })(
-                <DatePicker showTime format={timeFormat} />
-              )}
-            </Form.Item>
-          </Col>
-        )
-      }
-    })
-    
-    return fields
-  }
-
-  handleConfirm = () => {
-    // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
-    return new Promise((resolve, reject) => {
-      this.props.form.validateFieldsAndScroll((err, values) => {
-        if (!err) {
-          let formdata = {}
-          Object.keys(values).forEach(key => {
-            if (values[key] && typeof(values[key]) === 'object') {
-              formdata[key] = moment(values[key]).format(this.state.formats[key])
-            } else if (values[key] || values[key] === 0) {
-              if (this.state.datatype[key] === 'spinner') {
-                formdata[key] = parseFloat(values[key])
-              } else {
-                formdata[key] = values[key].replace(/\t|\v|\n|\r/g,'')
-              }
-            } else {
-              formdata[key] = ''
-            }
-          })
-          resolve(formdata)
-        } else {
-          reject(err)
-        }
-      })
-    })
-  }
-
-  handleReset = () => {
-    // 閲嶇疆
-    this.props.form.resetFields()
-  }
-
-  render() {
-    const formItemLayout = {
-      labelCol: {
-        xs: { span: 24 },
-        sm: { span: 8 }
-      },
-      wrapperCol: {
-        xs: { span: 24 },
-        sm: { span: 16 }
-      }
-    }
-    return (
-      <Form {...formItemLayout} className="ant-advanced-search-form" id="form-box">
-        <Row gutter={24}>{this.getFields()}</Row>
-      </Form>
-    )
-  }
-}
-
-export default Form.create()(MainSearch)
\ No newline at end of file
diff --git a/src/components/mutilform/index.scss b/src/components/mutilform/index.scss
deleted file mode 100644
index 9914d8e..0000000
--- a/src/components/mutilform/index.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-.ant-advanced-search-form.main-search {
-  padding: 0px 24px 20px;
-  border-bottom: 1px solid #d9d9d9;
-  .ant-form-item {
-    display: flex;
-    margin-bottom: 10px;
-  }
-  .ant-form-item-control-wrapper {
-    flex: 1;
-  }
-  .ant-form-item-label {
-    width: 100px;
-  }
-}
-.ant-advanced-search-form {
-  position: relative;
-}
diff --git a/src/components/normalform/modalform/index.jsx b/src/components/normalform/modalform/index.jsx
index 7162b0c..6586950 100644
--- a/src/components/normalform/modalform/index.jsx
+++ b/src/components/normalform/modalform/index.jsx
@@ -109,7 +109,9 @@
 
         if (cell.hidden) return
 
-        if (supItem.hidden) {
+        if (cell.skip && supItem.forbid) { // 涓婄骇琛ㄥ崟绂佺敤鏃讹紝姝よ〃鍗曚笉鍙楁帶鍒�
+
+        } else if (supItem.hidden) {
           cell.hidden = true
         } else if (supItem.type === 'checkbox') {
           let vals = [...supItem.initval, ...item.values]
@@ -261,7 +263,7 @@
       } else if (item.type === 'source') {
         content = (<SourceComponent type="" placement="right"/>)
       } else if (item.type === 'table') {
-        content = (<MKTable columns={item.columns || []}/>)
+        content = (<MKTable columns={item.columns || []} actions={item.actions || []}/>)
       }
 
       if (!content) return
diff --git a/src/components/normalform/modalform/index.scss b/src/components/normalform/modalform/index.scss
index 2d38c93..4bd743d 100644
--- a/src/components/normalform/modalform/index.scss
+++ b/src/components/normalform/modalform/index.scss
@@ -57,4 +57,9 @@
       width: 16%;
     }
   }
+  .ant-col-12 + .ant-col-24 + .ant-col-24 {
+    .ant-form-item-label {
+      width: 16%;
+    }
+  }
 }
\ No newline at end of file
diff --git a/src/components/normalform/modalform/mkSelect/index.jsx b/src/components/normalform/modalform/mkSelect/index.jsx
index 73c44d9..0c9e069 100644
--- a/src/components/normalform/modalform/mkSelect/index.jsx
+++ b/src/components/normalform/modalform/mkSelect/index.jsx
@@ -106,20 +106,38 @@
     const { value, config, options } = this.state
 
     if (config.type !== 'multiselect') {
-      return (
-        <Select
-          showSearch
-          allowClear
-          value={value}
-          filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
-          onSelect={this.selectChange}
-          onChange={(val) => val === undefined && this.selectChange('')}
-        >
-          {options.map((option, i) =>
-            <Select.Option key={i} disabled={option.disabled} value={option.value || option.field || ''}>{option.label || option.text}</Select.Option>
-          )}
-        </Select>
-      )
+      if (config.extendName) {
+        return (
+          <Select
+            showSearch
+            allowClear
+            value={value}
+            filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0 ||
+              option.props.extend.toLowerCase().indexOf(input.toLowerCase()) >= 0}
+            onSelect={this.selectChange}
+            onChange={(val) => val === undefined && this.selectChange('')}
+          >
+            {options.map((option, i) =>
+              <Select.Option key={i} disabled={option.disabled} extend={option[config.extendName] || ''} value={option.value || option.field || ''}>{option.label || option.text}</Select.Option>
+            )}
+          </Select>
+        )
+      } else {
+        return (
+          <Select
+            showSearch
+            allowClear
+            value={value}
+            filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
+            onSelect={this.selectChange}
+            onChange={(val) => val === undefined && this.selectChange('')}
+          >
+            {options.map((option, i) =>
+              <Select.Option key={i} disabled={option.disabled} value={option.value || option.field || ''}>{option.label || option.text}</Select.Option>
+            )}
+          </Select>
+        )
+      }
     } else {
       return (<Select
         showSearch
diff --git a/src/components/normalform/modalform/mkTable/index.jsx b/src/components/normalform/modalform/mkTable/index.jsx
index 2760640..c5ae0e9 100644
--- a/src/components/normalform/modalform/mkTable/index.jsx
+++ b/src/components/normalform/modalform/mkTable/index.jsx
@@ -3,9 +3,10 @@
 import { fromJS } from 'immutable'
 import { DndProvider, DragSource, DropTarget } from 'react-dnd'
 import { Table, Input, InputNumber, Popconfirm, Form, Select, Radio, Cascader, notification, Typography, Button } from 'antd'
-import { PlusOutlined, EditOutlined, DeleteOutlined } from '@ant-design/icons'
+import { PlusOutlined, EditOutlined, DeleteOutlined, ArrowRightOutlined } from '@ant-design/icons'
 
 import Utils from '@/utils/utils.js'
+import MKEmitter from '@/utils/events.js'
 import ColorSketch from '@/mob/colorsketch'
 import asyncComponent from '@/utils/asyncComponent'
 import './index.scss'
@@ -86,8 +87,8 @@
       return <MkEditIcon allowClear/>
     } else if (inputType === 'select') {
       return (
-        <Select>
-          {options.map((item, i) => (<Select.Option key={i} value={item.field || item.value}> {item.label || item.text} </Select.Option>))}
+        <Select showSearch filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}>
+          {options.map((item, i) => (<Select.Option key={i} value={item.field || item.value}>{item.label || item.text}</Select.Option>))}
         </Select>
       )
     } else if (inputType === 'multiStr') {
@@ -165,6 +166,7 @@
   }
 
   UNSAFE_componentWillMount () {
+    let actions = this.props.actions || []
     let columns = fromJS(this.props.columns).toJS()
 
     let operation = {
@@ -196,6 +198,7 @@
               <span className="danger"><DeleteOutlined /></span>
             </Popconfirm> : null}
             {editingKey !== '' ? <span className="danger"><DeleteOutlined /></span> : null}
+            {actions.includes('view') ? <span className="copy" onClick={() => {editingKey === '' && this.changeMenu(record.menu)}}><ArrowRightOutlined /></span> : null}
           </div>
         )
       }
@@ -214,6 +217,24 @@
   //   return !is(fromJS(this.state), fromJS(nextState))
   // }
 
+  changeMenu = (MenuId) => {
+    if (MenuId === 'IM') {
+      if (!sessionStorage.getItem('instantMessage')) return
+
+      let param = {
+        MenuID: sessionStorage.getItem('instantMessage'),
+        copyMenuId: '',
+        type: 'view'
+      }
+  
+      param = window.btoa(window.encodeURIComponent(JSON.stringify(param)))
+  
+      MKEmitter.emit('changeEditMenu', {routerUrl: '/imdesign/' + param})
+    } else {
+      MKEmitter.emit('changeEditMenu', {MenuID: MenuId})
+    }
+  }
+
   isEditing = record => record.uuid === this.state.editingKey
 
   cancel = () => {
diff --git a/src/components/simpleform/index.jsx b/src/components/simpleform/index.jsx
deleted file mode 100644
index 6788adb..0000000
--- a/src/components/simpleform/index.jsx
+++ /dev/null
@@ -1,198 +0,0 @@
-import React, {Component} from 'react'
-import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, InputNumber, Select, DatePicker } from 'antd'
-import moment from 'moment'
-import './index.scss'
-
-const dateFormat = 'YYYY-MM-DD'
-const timeFormat = 'YYYY-MM-DD HH:mm:ss'
-
-class MainSearch extends Component {
-  static propTpyes = {
-    formlist: PropTypes.array, // 鎼滅储鏉′欢鍒楄〃
-    dict: PropTypes.object, // 瀛楀吀椤�
-    cols: PropTypes.number
-  }
-
-  state = {
-    formats: null, // 浜嬩欢鏍¢獙瑙勫垯
-    datatype: null
-  }
-
-  UNSAFE_componentWillMount () {
-    let formats = {}
-    let datatype = {}
-    this.props.formlist.forEach(item => {
-      if (item.InputType === 'date') {
-        formats[item.FieldName] = dateFormat
-      } else if (item.InputType === 'datetime') {
-        formats[item.FieldName] = timeFormat
-      }
-      datatype[item.FieldName] = item.InputType
-    })
-    this.setState({
-      formats: formats,
-      datatype: datatype
-    })
-  }
-
-  getFields() {
-    const { getFieldDecorator } = this.props.form
-    const fields = []
-    this.props.formlist.forEach((item, index) => {
-      if (item.type === 'text') { // 鏂囨湰鎼滅储
-        fields.push(
-          <Col span={24 / this.props.cols} key={index}>
-            <Form.Item label={item.label}>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal || '',
-                rules: [
-                  {
-                    required: !!item.required,
-                    message: this.props.dict['form.required.input'] + item.label + '!'
-                  }
-                ]
-              })(<Input placeholder="" autoComplete="off" disabled={item.readonly} />)}
-            </Form.Item>
-          </Col>
-        )
-      } else if (item.type === 'spinner') { // 鏁板瓧
-        let min = item.hasOwnProperty('validate') && item.validate.hasOwnProperty('min') ? item.validate.min : -Infinity
-        let max = item.hasOwnProperty('validate') && item.validate.hasOwnProperty('max') ? item.validate.max : Infinity
-        let model = <InputNumber initialValue={item.initVal || 0} disabled={item.readonly} min={min} max={max} />
-
-        fields.push(
-          <Col span={24 / this.props.cols} key={index}>
-            <Form.Item label={item.label}>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal || 0,
-                rules: [
-                  {
-                    required: !!item.required,
-                    message: this.props.dict['form.required.input'] + item.label + '!'
-                  }
-                ]
-              })(model)}
-            </Form.Item>
-          </Col>
-        )
-      } else if (item.type === 'select') { // 涓嬫媺鎼滅储
-        fields.push(
-          <Col span={24 / this.props.cols} key={index}>
-            <Form.Item label={item.label}>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal || '',
-                rules: [
-                  {
-                    required: !!item.required,
-                    message: this.props.dict['form.required.select'] + item.label + '!'
-                  }
-                ]
-              })(
-                <Select
-                  showSearch
-                  filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
-                  getPopupContainer={() => document.getElementById('form-box')}
-                >
-                  {item.options.map(option =>
-                    <Select.Option id={option.id} title={option.text} key={option.id} value={option.id}>{option.text}</Select.Option>
-                  )}
-                </Select>
-              )}
-            </Form.Item>
-          </Col>
-        )
-      } else if (item.type === 'date') { // 鏃堕棿鎼滅储
-        fields.push(
-          <Col span={24 / this.props.cols} key={index}>
-            <Form.Item label={item.label}>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal ? moment(item.initVal, dateFormat) : null,
-                rules: [
-                  {
-                    required: !!item.required,
-                    message: this.props.dict['form.required.select'] + item.label + '!'
-                  }
-                ]
-              })(
-                <DatePicker getCalendarContainer={() => document.getElementById('form-box')} format={dateFormat} />
-              )}
-            </Form.Item>
-          </Col>
-        )
-      } else if (item.type === 'datetime') {
-        fields.push(
-          <Col span={24 / this.props.cols} key={index}>
-            <Form.Item label={item.label}>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal ? moment(item.initVal, timeFormat) : null,
-                rules: [
-                  {
-                    required: !!item.required,
-                    message: this.props.dict['form.required.select'] + item.label + '!'
-                  }
-                ]
-              })(
-                <DatePicker showTime format={timeFormat} />
-              )}
-            </Form.Item>
-          </Col>
-        )
-      }
-    })
-    
-    return fields
-  }
-
-  handleConfirm = () => {
-    // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
-    return new Promise((resolve, reject) => {
-      this.props.form.validateFieldsAndScroll((err, values) => {
-        if (!err) {
-          let formdata = {}
-          Object.keys(values).forEach(key => {
-            if (values[key] && typeof(values[key]) === 'object') {
-              formdata[key] = moment(values[key]).format(this.state.formats[key])
-            } else if (values[key] || values[key] === 0) {
-              if (this.state.datatype[key] === 'spinner') {
-                formdata[key] = parseFloat(values[key])
-              } else {
-                formdata[key] = values[key].replace(/\t|\v|\n|\r/g,'')
-              }
-            } else {
-              formdata[key] = ''
-            }
-          })
-          resolve(formdata)
-        } else {
-          reject(err)
-        }
-      })
-    })
-  }
-
-  handleReset = () => {
-    // 閲嶇疆
-    this.props.form.resetFields()
-  }
-
-  render() {
-    const formItemLayout = {
-      labelCol: {
-        xs: { span: 24 },
-        sm: { span: 8 }
-      },
-      wrapperCol: {
-        xs: { span: 24 },
-        sm: { span: 16 }
-      }
-    }
-    return (
-      <Form {...formItemLayout} className="ant-advanced-search-form" id="form-box">
-        <Row gutter={24}>{this.getFields()}</Row>
-      </Form>
-    )
-  }
-}
-
-export default Form.create()(MainSearch)
\ No newline at end of file
diff --git a/src/components/simpleform/index.scss b/src/components/simpleform/index.scss
deleted file mode 100644
index 9914d8e..0000000
--- a/src/components/simpleform/index.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-.ant-advanced-search-form.main-search {
-  padding: 0px 24px 20px;
-  border-bottom: 1px solid #d9d9d9;
-  .ant-form-item {
-    display: flex;
-    margin-bottom: 10px;
-  }
-  .ant-form-item-control-wrapper {
-    flex: 1;
-  }
-  .ant-form-item-label {
-    width: 100px;
-  }
-}
-.ant-advanced-search-form {
-  position: relative;
-}
diff --git a/src/index.js b/src/index.js
index fd5d16d..1831681 100644
--- a/src/index.js
+++ b/src/index.js
@@ -66,7 +66,6 @@
   } catch (e) {}
 }
 sessionStorage.removeItem('isEditState')
-sessionStorage.removeItem('loginError')
 sessionStorage.setItem('role_id', sessionStorage.getItem('localRole_id') || '')
 sessionStorage.setItem('dataM', sessionStorage.getItem('localDataM') || '')
 
@@ -92,6 +91,8 @@
     GLOB.lineColor = config.lineColor || ''
     GLOB.licenseKey = config.licenseKey || ''
     GLOB.probation = false
+    GLOB.watermark = config.watermark !== false
+    GLOB.keepKey = config.keepPassword !== 'false'
 
     if (config.externalDatabase !== false && config.externalDatabase !== 'false' && config.externalDatabase !== undefined) {
       GLOB.externalDatabase = config.externalDatabase ? `[${config.externalDatabase}]..` : ''
@@ -105,44 +106,54 @@
       if (config.probation && /^20\d{2}-\d{2}-\d{2}$/.test(config.probation) && new Date(config.probation).getTime() > new Date().getTime()) {
         GLOB.probation = true
       }
+
+      if (!config.mainSystemApi) {
+        document.getElementById('root').innerHTML = '<div style="text-align: center; font-size: 30px; margin-top: 40vh;">绯荤粺鏈缃崟鐐瑰湴鍧�锛岃鑱旂郴绠$悊鍛橈紒</div>'
+        return
+      } else if (/http(s?):\/\/sso.mk9h.cn\/cloud/ig.test(config.mainSystemApi)) {
+        document.getElementById('root').innerHTML = '<div style="text-align: center; font-size: 30px; margin-top: 40vh;">姝e紡绯荤粺涓嶅彲浣跨敤 http://sso.mk9h.cn/cloud 鍋氫负鍗曠偣鍦板潃锛岃鑱旂郴绠$悊鍛橈紒</div>'
+        return
+      } else if (/http(s?):\/\/cloud.mk9h.cn/ig.test(config.mainSystemApi)) {
+        document.getElementById('root').innerHTML = '<div style="text-align: center; font-size: 30px; margin-top: 40vh;">姝e紡绯荤粺涓嶅彲浣跨敤 http://cloud.mk9h.cn 鍋氫负鍗曠偣鍦板潃锛岃鑱旂郴绠$悊鍛橈紒</div>'
+        return
+      }
     } else if (options.sysType === 'local') {
       GLOB.probation = true
       GLOB.systemType = ''
+
+      GLOB.mainSystemApi = 'https://cloud.positecgroup.com/webapi/dostars'
+
+      // GLOB.mainSystemApi = 'http://sso.mk9h.cn/cloud/webapi/dostars'
+
+      if (GLOB.watermark) {
+        GLOB.dataFormat = true
+      }
     } else {
       GLOB.systemType = ''
+      GLOB.mainSystemApi = ''
+    }
+
+    GLOB.debugger = options.sysType === 'local' && GLOB.systemType !== 'production'
+
+    if (options.sysType !== 'cloud') {
+      if (config.appkey === options.cakey) {
+        document.getElementById('root').innerHTML = '<div style="text-align: center; font-size: 30px; margin-top: 40vh;">涓嶅彲浣跨敤浜戠appkey锛岃鑱旂郴绠$悊鍛橈紒</div>'
+        return
+      }
     }
 
     if (options.sysType === 'cloud') { // cloud涓嶅彲璁剧疆鍗曠偣鏈嶅姟鍣ㄥ湴鍧�,浜戠appkey涓虹郴缁熻缃�
       GLOB.appkey = options.cakey
-      GLOB.mainSystemApi = ''
     } else if (options.sysType === 'SSO') { // sso涓嶅彲璁剧疆鍗曠偣鏈嶅姟鍣ㄥ湴鍧�
-      GLOB.mainSystemApi = ''
-      if (config.appkey === options.cakey) {
-        GLOB.appkey = ''
-        console.warn('鍗曠偣绯荤粺appkey涓嶅彲涓庝簯绔浉鍚�')
-      } else {
-        GLOB.appkey = config.appkey
-      }
+      GLOB.appkey = config.appkey
     } else if (options.sysType === 'local') { // 涓氬姟绯荤粺
-      if (config.appkey === options.cakey) {
-        GLOB.appkey = ''
-        console.warn('涓氬姟绯荤粺appkey涓嶅彲涓庝簯绔浉鍚�')
-      } else {
-        GLOB.appkey = config.appkey
-      }
-      if (config.mainSystemApi) {
+      GLOB.appkey = config.appkey
+      if (GLOB.systemType === 'production') {
         let systemApi = config.mainSystemApi
-        // 涓氬姟绯荤粺涓嶅厑璁歌繛鎺ヤ簯绔紝涓氬姟绯荤粺杩炴帴sso.mk9h.cn鏃讹紝鏁版嵁铏氬寲澶勭悊
-        if (systemApi.indexOf('cloud.mk9h.cn') > -1) {
-          systemApi = ''
-        } else if (/index.html/ig.test(systemApi)) {
+        if (/index.html/ig.test(systemApi)) {
           systemApi = systemApi.replace(/index.html.*/ig, 'webapi/dostars')
         } else if (!/webapi\/dostars$/ig.test(systemApi)) {
           systemApi = systemApi.replace(/\/?$/, '/webapi/dostars')
-        }
-
-        if (systemApi.indexOf('sso.mk9h.cn') > -1 && process.env.NODE_ENV === 'production') {
-          GLOB.dataFormat = true
         }
       
         GLOB.mainSystemApi = systemApi
@@ -187,9 +198,16 @@
       }
     }
 
+    if (/^https/.test(window.location.protocol)) { // https杞崲
+      let meta = document.createElement('meta')
+      meta.content = 'upgrade-insecure-requests'
+      meta.httpEquiv = 'Content-Security-Policy'
+      document.getElementsByTagName('head')[0].appendChild(meta)
+    }
+
     document.title = GLOB.platTitle || ''
 
-    if (config.filter === 'true') {
+    if (config.filter === 'true' || (/^20\d{2}-\d{2}-\d{2}$/.test(config.filter) && new Date(config.filter).getTime() + 86400000 >= new Date().getTime())) {
       let html = document.getElementsByTagName('html')[0]
       
       if (html) {
@@ -204,10 +222,12 @@
         GLOB.linkurl = GLOB.linkurl + 'index.html'
       }
       GLOB.service = _service ? _service + '/' : ''
+      GLOB.host = window.location.host + (_service ? '_' + _service : '')
     } else {
       GLOB.linkurl = ''
       GLOB.location = config.host
       GLOB.service = config.service
+      GLOB.host = config.host.replace(/http(s)?:\/\//ig, '') + (config.service ? '_' + config.service.replace(/\//ig, '') : '')
     }
 
     let mark = sessionStorage.getItem('system_mark')
@@ -235,6 +255,10 @@
       writable: false,
       value: GLOB.systemType
     })
+    Object.defineProperty(GLOB, 'debugger', {
+      writable: false,
+      value: GLOB.debugger
+    })
     Object.defineProperty(GLOB, 'mainSystemApi', {
       writable: false,
       value: GLOB.mainSystemApi
@@ -242,10 +266,6 @@
     Object.defineProperty(GLOB, 'linkurl', {
       writable: false,
       value: GLOB.linkurl
-    })
-    Object.defineProperty(GLOB, 'dataFormat', {
-      writable: false,
-      value: GLOB.dataFormat
     })
     Object.defineProperty(window, 'GLOB', {
       writable: false,
diff --git a/src/locales/en-US/model.js b/src/locales/en-US/model.js
index 4421fbf..12c2d81 100644
--- a/src/locales/en-US/model.js
+++ b/src/locales/en-US/model.js
@@ -100,7 +100,6 @@
   'model.form.link': 'Linkage menu',
   'model.form.linkform': 'Linkage form',
   'model.form.dateday': 'Date(Day)',
-  'model.form.datetime': 'Date(Second)',
   'model.form.dateweek': 'Date(Week)',
   'model.form.datemonth': 'Date(Month)',
   'model.form.daterange': 'Date(Range)',
diff --git a/src/locales/zh-CN/model.js b/src/locales/zh-CN/model.js
index 0cc3079..59648cb 100644
--- a/src/locales/zh-CN/model.js
+++ b/src/locales/zh-CN/model.js
@@ -100,7 +100,6 @@
   'model.form.link': '鑱斿姩鑿滃崟',
   'model.form.linkform': '鍏宠仈琛ㄥ崟',
   'model.form.dateday': '鏃ユ湡锛堝ぉ锛�',
-  'model.form.datetime': '鏃ユ湡锛堝垎/绉掞級',
   'model.form.dateweek': '鏃ユ湡锛堝懆锛�',
   'model.form.datemonth': '鏃ユ湡锛堟湀锛�',
   'model.form.daterange': '鏃ユ湡锛堝尯闂达級',
diff --git a/src/menu/bgcontroller/index.jsx b/src/menu/bgcontroller/index.jsx
index ef3cdd6..9a0f560 100644
--- a/src/menu/bgcontroller/index.jsx
+++ b/src/menu/bgcontroller/index.jsx
@@ -123,6 +123,8 @@
               <Option value="100%">100%</Option>
               <Option value="100% 100%">100% 100%</Option>
               <Option value="auto 100%">auto 100%</Option>
+              <Option value="100% auto">100% auto</Option>
+              <Option value="auto">auto</Option>
               <Option value="contain">contain</Option>
               <Option value="cover">cover</Option>
             </Select>
diff --git a/src/menu/components/card/balcony/index.jsx b/src/menu/components/card/balcony/index.jsx
index cd956c7..08638ca 100644
--- a/src/menu/components/card/balcony/index.jsx
+++ b/src/menu/components/card/balcony/index.jsx
@@ -39,7 +39,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'object',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
@@ -214,7 +213,7 @@
           <div className="mk-popover-control">
             <PlusOutlined className="plus" title="娣诲姞鍏冪礌" onClick={this.addElement} />
             <PlusSquareOutlined className="plus" title="娣诲姞鎸夐挳" onClick={this.addButton} />
-            <NormalForm title="娴姩鍗¤缃�" width={800} update={this.updateWrap} getForms={this.getWrapForms}>
+            <NormalForm title="娴姩鍗¤缃�" width={850} update={this.updateWrap} getForms={this.getWrapForms}>
               <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/>
             </NormalForm>
             <CopyComponent type="balcony" card={card}/>
diff --git a/src/menu/components/card/balcony/index.scss b/src/menu/components/card/balcony/index.scss
index 8359299..97c2b34 100644
--- a/src/menu/components/card/balcony/index.scss
+++ b/src/menu/components/card/balcony/index.scss
@@ -85,3 +85,10 @@
   z-index: 1;
   box-shadow: 0px 0px 4px #1890ff;
 }
+.mk-mob-view {
+  .check-all {
+    .ant-checkbox-inner {
+      border-radius: 10px;
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/menu/components/card/balcony/options.jsx b/src/menu/components/card/balcony/options.jsx
index 5adf31f..77696ba 100644
--- a/src/menu/components/card/balcony/options.jsx
+++ b/src/menu/components/card/balcony/options.jsx
@@ -1,3 +1,4 @@
+import React from 'react'
 import { fromJS } from 'immutable'
 import MenuUtils from '@/utils/utils-custom.js'
 
@@ -57,7 +58,12 @@
       field: 'linkType',
       label: '鍙楁帶绫诲瀷',
       initval: wrap.linkType || 'static',
-      tooltip: '缁勪欢涓庡叾浠栫粍浠朵箣闂寸殑鎺у埗绫诲瀷锛岀嫭绔嬭〃绀轰笌鍏朵粬娌℃湁鍏宠仈銆�',
+      tooltip: <div>
+        <div>缁勪欢涓庡叾浠栫粍浠朵箣闂寸殑鎺у埗绫诲瀷: </div>
+        <div>1銆佺嫭绔嬭〃绀轰笌鍏朵粬缁勪欢娌℃湁鍏宠仈銆�</div>
+        <div>2銆佸悓姝ョ被鍨嬩腑鍏紡銆佹寜閽互鍙婂叏閫夊厓绱犳瘮杈冪壒娈婏紝鎿嶄綔鏁版嵁涓哄叾鍚屾缁勪欢鐨勬暟鎹��</div>
+        <div>3銆佷笂绾х被鍨嬮渶娣诲姞褰撳墠缁勪欢鐨勪笂绾х粍浠讹紝骞跺彲璁剧疆褰撳墠缁勪欢涓哄缁堟樉绀猴紝杩樻槸鍙湁鍦ㄤ笂绾х粍浠堕�夎鍚庢墠鏄剧ず銆�</div>
+      </div>,
       required: false,
       options: [
         {value: 'static', label: '鐙珛'},
@@ -118,20 +124,17 @@
       field: 'position',
       label: '浣嶇疆',
       initval: wrap.position || 'relative',
-      tooltip: '浣跨敤鍥哄畾瀹氫綅鏃讹紝璇峰湪娴嬭瘯鐜涓煡鐪嬪畾浣嶆晥鏋溿��',
+      tooltip: '鐩稿瀹氫綅鏄浉瀵瑰叾姝e父浣嶇疆鐨勫亸绉伙紱缁濆瀹氫綅鏄浉瀵逛簬鍘熺粍浠剁殑鍋忕Щ锛屽師缁勪欢楂樺害鍙涓�0锛涘浐瀹氬畾浣嶆槸鐩稿浜庣獥鍙g殑浣嶇疆锛屽畾浣嶆晥鏋滄祴璇曠幆澧冧腑鏌ョ湅銆�',
       required: false,
       options: [
         {value: 'relative', label: '鐩稿瀹氫綅'},
+        {value: 'absolute', label: '缁濆瀹氫綅'},
         {value: 'fixed', label: '鍥哄畾瀹氫綅'},
       ],
       controlFields: [
         {field: 'quick', values: ['fixed']},
-        {field: 'top', values: ['fixed']},
-        {field: 'right', values: ['fixed']},
-        {field: 'bottom', values: ['fixed']},
-        {field: 'left', values: ['fixed']},
-        {field: 'realwidth', values: ['fixed']},
-        {field: 'transform', values: ['fixed']},
+        {field: 'realwidth', values: ['fixed', 'absolute']},
+        {field: 'transform', values: ['fixed', 'absolute']},
       ]
     },
     {
@@ -206,6 +209,18 @@
       ]
     },
     {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'multiselect',
       field: 'blacklist',
       label: '榛戝悕鍗�',
diff --git a/src/menu/components/card/cardcellcomponent/dragaction/action.jsx b/src/menu/components/card/cardcellcomponent/dragaction/action.jsx
index 364400e..8aa9cc2 100644
--- a/src/menu/components/card/cardcellcomponent/dragaction/action.jsx
+++ b/src/menu/components/card/cardcellcomponent/dragaction/action.jsx
@@ -1,7 +1,7 @@
 import React from 'react'
 import { useDrag, useDrop } from 'react-dnd'
 import { Popover, Button, Switch, Checkbox } from 'antd'
-import { EditOutlined, CopyOutlined, CloseOutlined, FontColorsOutlined, ProfileOutlined } from '@ant-design/icons'
+import { EditOutlined, CopyOutlined, CloseOutlined, FontColorsOutlined, ProfileOutlined, WarningOutlined } from '@ant-design/icons'
 
 import { resetStyle } from '@/utils/utils-custom.js'
 import MkIcon from '@/components/mk-icon'
@@ -30,12 +30,15 @@
   })
 
   let hasProfile = false
+  let warning = null
   if (['pop', 'prompt', 'exec', 'form'].includes(card.OpenType)) {
     hasProfile = true
   } else if (card.OpenType === 'excelIn' || card.OpenType === 'excelOut') {
     hasProfile = true
   } else if (card.funcType === 'print') {
     hasProfile = true
+  } else if (card.OpenType === 'innerpage' && !card.pageTemplate) {
+    warning = <WarningOutlined style={{color: 'orange', marginLeft: '5px'}}/>
   }
 
   let btnElement = null
@@ -43,16 +46,16 @@
 
   if (card.OpenType === 'form') {
     if (card.formType === 'switch') {
-      btnElement = (<Switch style={_style} size={card.size} checkedChildren={card.openText || ''} unCheckedChildren={card.closeText || ''}/>)
+      btnElement = (<Switch style={_style} className={card.size === 'large' ? 'ant-switch-large' : ''} size={card.size} checkedChildren={card.openText || ''} unCheckedChildren={card.closeText || ''}/>)
     } else {
       btnElement = (<Checkbox style={_style}></Checkbox>)
     }
   } else if (card.show === 'icon') {
-    btnElement = (<Button style={_style} type="link"><MkIcon type={card.icon}/></Button>)
+    btnElement = (<Button style={_style} type="link"><MkIcon type={card.icon}/>{warning}</Button>)
   } else if (card.show === 'link') {
-    btnElement = (<Button style={_style} type="link">{card.label}{card.icon ? <MkIcon type={card.icon}/> : null}</Button>)
+    btnElement = (<Button style={_style} type="link">{card.label}{card.icon ? <MkIcon type={card.icon}/> : null}{warning}</Button>)
   } else {
-    btnElement = (<Button style={_style}> {card.icon ? <MkIcon type={card.icon}/> : null}{card.label} </Button>)
+    btnElement = (<Button style={_style}>{card.icon ? <MkIcon type={card.icon}/> : null}{card.label}{warning}</Button>)
   }
 
   return (
diff --git a/src/menu/components/card/cardcellcomponent/dragaction/card.jsx b/src/menu/components/card/cardcellcomponent/dragaction/card.jsx
index 9b75923..480b17c 100644
--- a/src/menu/components/card/cardcellcomponent/dragaction/card.jsx
+++ b/src/menu/components/card/cardcellcomponent/dragaction/card.jsx
@@ -27,6 +27,7 @@
   '5:1': '20%', '6:1': '16.67%', '7:1': '14.29%', '8:1': '12.5%', '9:1': '11.11%',
   '10:1': '10%', '3:4': '133.33%', '2:3': '150%', '9:16': '177.78%'
 }
+const appType = sessionStorage.getItem('appType')
 
 const Card = ({ id, parent, fields, card, moveCard, findCard, editCard, delCard, copyCard, changeStyle, updateMarks }) => {
   const originalIndex = findCard(id).index
@@ -74,6 +75,10 @@
       )
     } else if (card.eleType === 'text' || card.eleType === 'number') {
       let val = `${card.prefix || ''}${card.datatype === 'static' ? (card.value || '') : (card.field || '')}${card.postfix || ''}`
+      if (card.fixStyle === 'alone') {
+        let _s = {fontSize: card.fixSize, color: card.fixColor, marginLeft: card.fixLeft, marginRight: card.fixRight}
+        val = <><span style={_s}>{card.prefix || ''}</span>{`${card.datatype === 'static' ? (card.value || '') : (card.field || '')}`}<span style={_s}>{card.postfix || ''}</span></>
+      }
       return (
         <div className={'ant-mk-text line' + (card.height || '')} style={{height: card.innerHeight || 'auto'}}>{val}</div>
       )
@@ -141,15 +146,25 @@
         </div>
       )
     } else if (card.eleType === 'currentDate') {
+      let val = `${card.prefix || ''}${moment().format(card.dateFormat)}${card.postfix || ''}`
+      if (card.fixStyle === 'alone') {
+        let _s = {fontSize: card.fixSize, color: card.fixColor, marginLeft: card.fixLeft, marginRight: card.fixRight}
+        val = <><span style={_s}>{card.prefix || ''}</span>{moment().format(card.dateFormat)}<span style={_s}>{card.postfix || ''}</span></>
+      }
       return (
         <div className="ant-mk-date">
-          {`${card.prefix || ''}${moment().format(card.dateFormat)}${card.postfix || ''}`}
+          {val}
         </div>
       )
     } else if (card.eleType === 'formula') {
+      let val = `${card.prefix || ''}${card.formula}${card.postfix || ''}`
+      if (card.fixStyle === 'alone') {
+        let _s = {fontSize: card.fixSize, color: card.fixColor, marginLeft: card.fixLeft, marginRight: card.fixRight}
+        val = <><span style={_s}>{card.prefix || ''}</span>{card.formula}<span style={_s}>{card.postfix || ''}</span></>
+      }
       return (
         <div className="ant-mk-date">
-          {`${card.prefix || ''}${card.formula}${card.postfix || ''}`}
+          {val}
         </div>
       )
     }
@@ -160,6 +175,12 @@
       e.stopPropagation()
       MKEmitter.emit('clickComponent', card, parent, 'cardcell')
     }
+  }
+
+  let able = true
+  if ((appType === 'mob' || appType === 'pc') && parent && (parent.setting.click === 'menu' || parent.setting.click === 'menus')) {
+  // if ((appType === 'mob' || appType === 'pc') && parent && parent.setting.click === 'menu') {
+    able = false
   }
 
   return (
@@ -173,7 +194,7 @@
       </div>
     } trigger="hover">
       <div ref={node => drag(drop(node))} className={'ant-col card-cell ant-col-' + card.width}>
-        <div style={_style} onClick={clickComponent} id={card.uuid}>
+        <div style={_style} onClick={clickComponent} onDoubleClick={() => able && editCard(id)} id={card.uuid}>
           {getContent()}
         </div>
       </div>
diff --git a/src/menu/components/card/cardcellcomponent/dragaction/index.jsx b/src/menu/components/card/cardcellcomponent/dragaction/index.jsx
index abb9604..bba223b 100644
--- a/src/menu/components/card/cardcellcomponent/dragaction/index.jsx
+++ b/src/menu/components/card/cardcellcomponent/dragaction/index.jsx
@@ -58,6 +58,13 @@
     copycard.originCard = card
 
     try {
+      delete _val.$srcId
+    
+      let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+      if (srcid) {
+        _val.$srcId = srcid
+      }
+      
       _val = window.btoa(window.encodeURIComponent(JSON.stringify(_val)))
     } catch (e) {
       console.warn('Stringify Failure')
diff --git a/src/menu/components/card/cardcellcomponent/dragaction/index.scss b/src/menu/components/card/cardcellcomponent/dragaction/index.scss
index b851536..ab11c7e 100644
--- a/src/menu/components/card/cardcellcomponent/dragaction/index.scss
+++ b/src/menu/components/card/cardcellcomponent/dragaction/index.scss
@@ -122,4 +122,25 @@
     background-position: center center;
     background-repeat: no-repeat;
   }
+  .ant-switch-large {
+    min-width: 60px;
+    height: 30px;
+    line-height: 28px;
+
+    .ant-switch-inner {
+      margin-right: 5px;
+      margin-left: 30px;
+      font-size: 16px;
+    }
+  }
+  .ant-switch-large.ant-switch-checked {
+    .ant-switch-inner {
+      margin-right: 30px;
+      margin-left: 5px;
+    }
+  }
+  .ant-switch-large::after {
+    width: 26px;
+    height: 26px;
+  }
 }
\ No newline at end of file
diff --git a/src/menu/components/card/cardcellcomponent/elementform/index.jsx b/src/menu/components/card/cardcellcomponent/elementform/index.jsx
index 5a4fad8..5395ef5 100644
--- a/src/menu/components/card/cardcellcomponent/elementform/index.jsx
+++ b/src/menu/components/card/cardcellcomponent/elementform/index.jsx
@@ -15,8 +15,8 @@
 
 const cardTypeOptions = {
   sequence: ['eleType', 'width'],
-  text: ['eleType', 'datatype', 'format', 'width', 'height', 'prefix', 'postfix', 'link', 'noValue'],
-  number: ['eleType', 'datatype', 'format', 'width', 'height', 'prefix', 'postfix'],
+  text: ['eleType', 'datatype', 'format', 'width', 'height', 'prefix', 'postfix', 'link', 'noValue', 'bgImage', 'fixStyle'],
+  number: ['eleType', 'datatype', 'format', 'width', 'height', 'prefix', 'postfix', 'noValue', 'fixStyle'],
   picture: ['eleType', 'datatype', 'width', 'lenWidRadio', 'maxWidth', 'link', 'noValue'],
   video: ['eleType', 'datatype', 'width', 'aspectRatio', 'autoPlay', 'loop', 'noValue'],
   icon: ['eleType', 'icon', 'datatype', 'width'],
@@ -24,8 +24,8 @@
   splitline: ['eleType', 'color', 'width', 'borderWidth'],
   barcode: ['eleType', 'datatype', 'width', 'barHeight', 'displayValue', 'interval', 'noValue'],
   qrcode: ['eleType', 'datatype', 'width', 'qrWidth', 'color', 'url', 'noValue'],
-  currentDate: ['eleType', 'width', 'dateFormat', 'prefix', 'postfix'],
-  formula: ['eleType', 'width', 'height', 'prefix', 'postfix', 'eval', 'formula'],
+  currentDate: ['eleType', 'width', 'dateFormat', 'prefix', 'postfix', 'fixStyle'],
+  formula: ['eleType', 'width', 'height', 'prefix', 'postfix', 'eval', 'formula', 'noValue', 'fixStyle'],
 }
 
 class MainSearch extends Component {
@@ -43,12 +43,13 @@
     datatype: '',
     showType: '',
     showInfo: 'false',
+    fixStyle: '',
     link: ''
   }
 
   UNSAFE_componentWillMount () {
     const { card, config } = this.props
-    let _options = this.getOptions(card.eleType, card.datatype, card.link, (card.showType || 'line'), card.showInfo)
+    let _options = this.getOptions(card.eleType, card.datatype, card.link, (card.showType || 'line'), card.showInfo, card.fixStyle || '')
     
     this.setState({
       link: card.link,
@@ -56,21 +57,26 @@
       datatype: card.datatype,
       showType: card.showType || 'line',
       showInfo: card.showInfo || 'false',
+      fixStyle: card.fixStyle || '',
       formlist: this.props.formlist.map(item => {
         item.hidden = !_options.includes(item.key)
 
-        if (item.key === 'field' || item.key === 'linkurl') {
+        if (item.key === 'field' || item.key === 'linkurl' || item.key === 'bgImage') {
           item.options = []
           config.columns.forEach(col => {
+            let label = col.label
+            if (label !== col.field) {
+              label = col.field + ' ' + col.label
+            }
             if (/^(Int|Decimal)/ig.test(col.datatype) && (card.eleType === 'number' || card.eleType === 'slider')) {
               item.options.push({
                 value: col.field,
-                text: col.label
+                text: label
               })
             } else if (/^(Nvarchar|date)/ig.test(col.datatype) && card.eleType !== 'number' && card.eleType !== 'slider') {
               item.options.push({
                 value: col.field,
-                text: col.label
+                text: label
               })
             }
           })
@@ -95,12 +101,15 @@
     })
   }
 
-  getOptions = (eleType, datatype, link, showType, showInfo) => {
+  getOptions = (eleType, datatype, link, showType, showInfo, fixStyle) => {
     let _options = fromJS(cardTypeOptions[eleType]).toJS() // 閫夐」鍒楄〃
     
     if (['text', 'number', 'picture', 'slider', 'barcode', 'qrcode', 'video'].includes(eleType)) {
       if (datatype === 'dynamic') {
         _options.push('field')
+        if (eleType === 'number') {
+          _options.push('decimal')
+        }
       } else if (eleType === 'picture' || eleType === 'video') {
         _options.push('url')
       } else {
@@ -128,6 +137,9 @@
         _options.push('tooltip')
       }
     }
+    if (_options.includes('fixStyle') && fixStyle === 'alone') {
+      _options.push('fixSize', 'fixColor', 'fixLeft', 'fixRight')
+    }
 
     return _options
   }
@@ -140,10 +152,10 @@
    */
   selectChange = (key, value, option) => {
     const { card, config } = this.props
-    const { datatype, eleType, showType, showInfo } = this.state
+    const { datatype, eleType, showType, showInfo, fixStyle } = this.state
 
     if (key === 'eleType') {
-      let _options = this.getOptions(value, datatype, '', showType, showInfo)
+      let _options = this.getOptions(value, datatype, '', showType, showInfo, fixStyle)
       
       let _formlist = this.state.formlist.map(item => {
         item.hidden = !_options.includes(item.key)
@@ -151,15 +163,20 @@
         if (item.key === 'field') {
           item.options = []
           config.columns.forEach(col => {
+            let label = col.label
+            if (label !== col.field) {
+              label = col.field + ' ' + col.label
+            }
+
             if (/^(Int|Decimal)/ig.test(col.datatype) && (value === 'number' || value === 'slider')) {
               item.options.push({
                 value: col.field,
-                text: col.label
+                text: label
               })
             } else if (/^(Nvarchar|date)/ig.test(col.datatype) && value !== 'number' && value !== 'slider') {
               item.options.push({
                 value: col.field,
-                text: col.label
+                text: label
               })
             }
           })
@@ -181,6 +198,8 @@
           item.required = value !== 'qrcode'
         } else if (item.key === 'showInfo') {
           item.initVal = showInfo
+        } else if (item.key === 'fixStyle') {
+          item.initVal = fixStyle
         }
 
         return item
@@ -210,7 +229,7 @@
         this.props.form.setFieldsValue({value: option.props.title})
       }
     } else if (key === 'link') {
-      let _options = this.getOptions(eleType, datatype, value, showType, showInfo)
+      let _options = this.getOptions(eleType, datatype, value, showType, showInfo, fixStyle)
       this.setState({
         link: value,
         formlist: this.state.formlist.map(item => {
@@ -225,11 +244,11 @@
   }
 
   onChange = (e, key) => {
-    const { eleType, datatype, link, showType, showInfo } = this.state
+    const { eleType, datatype, link, showType, showInfo, fixStyle } = this.state
     let value = e.target.value
 
     if (key === 'datatype') {
-      let _options = this.getOptions(eleType, value, link, showType, showInfo)
+      let _options = this.getOptions(eleType, value, link, showType, showInfo, fixStyle)
 
       this.setState({
         datatype: value,
@@ -240,7 +259,7 @@
         })
       })
     } else if (key === 'link') {
-      let _options = this.getOptions(eleType, datatype, value, showType, showInfo)
+      let _options = this.getOptions(eleType, datatype, value, showType, showInfo, fixStyle)
       this.setState({
         link: value,
         formlist: this.state.formlist.map(item => {
@@ -252,7 +271,7 @@
         })
       })
     } else if (key === 'showInfo') {
-      let _options = this.getOptions(eleType, datatype, link, showType, value)
+      let _options = this.getOptions(eleType, datatype, link, showType, value, fixStyle)
       this.setState({
         showInfo: value,
         formlist: this.state.formlist.map(item => {
@@ -264,7 +283,19 @@
       this.setState({
         showType: value
       }, () => {
-        let _options = this.getOptions(eleType, datatype, link, value, showInfo)
+        let _options = this.getOptions(eleType, datatype, link, value, showInfo, fixStyle)
+        this.setState({
+          formlist: this.state.formlist.map(item => {
+            item.hidden = !_options.includes(item.key)
+            return item
+          })
+        })
+      })
+    } else if (key === 'fixStyle') {
+      this.setState({
+        fixStyle: value
+      }, () => {
+        let _options = this.getOptions(eleType, datatype, link, showType, showInfo, value)
         this.setState({
           formlist: this.state.formlist.map(item => {
             item.hidden = !_options.includes(item.key)
@@ -290,7 +321,7 @@
     this.state.formlist.forEach((item, index) => {
       if (item.hidden || item.forbid) return
 
-      if (item.type === 'text') { // 鏂囨湰鎼滅储
+      if (item.type === 'text') {
         fields.push(
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
@@ -315,7 +346,7 @@
             </Form.Item>
           </Col>
         )
-      } else if (item.type === 'textarea') { // 鏂囨湰鎼滅储
+      } else if (item.type === 'textarea') {
         fields.push(
           <Col span={24} className="textarea" key={index}>
             <Form.Item label={item.tooltip ?
@@ -377,7 +408,8 @@
               })(
                 <Select
                   showSearch
-                  filterOption={(input, option) => option.props.children[2].toLowerCase().indexOf(input.toLowerCase()) >= 0}
+                  allowClear={item.allowClear || false}
+                  filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
                   onChange={(value, option) => {this.selectChange(item.key, value, option)}}
                   getPopupContainer={() => document.getElementById('card-winter')}
                 >
diff --git a/src/menu/components/card/cardcellcomponent/formconfig.jsx b/src/menu/components/card/cardcellcomponent/formconfig.jsx
index c101166..c664528 100644
--- a/src/menu/components/card/cardcellcomponent/formconfig.jsx
+++ b/src/menu/components/card/cardcellcomponent/formconfig.jsx
@@ -47,11 +47,13 @@
     { value: 'dynamic', text: '鍔ㄦ��' },
     { value: 'static', text: '闈欐��' }
   ]
+  let tooltip = ''
   if (cardCell.$cardType === 'extendCard') {
-    card.datatype = 'static'
-    dataTypes = [
-      { value: 'static', text: '闈欐��' }
-    ]
+    // card.datatype = 'static'
+    // dataTypes = [
+    //   { value: 'static', text: '闈欐��' }
+    // ]
+    tooltip = '鍦ㄦ墿灞曞崱鐗囦腑锛屽姩鎬佹暟鎹樉绀哄�间负鑾峰彇鍒扮殑绗竴琛屾暟鎹��'
   }
 
   let forms = [
@@ -75,6 +77,7 @@
       key: 'datatype',
       label: '鏁版嵁绫诲瀷',
       initVal: card.datatype || 'static',
+      tooltip,
       required: true,
       options: dataTypes
     },
@@ -160,6 +163,16 @@
         { value: 'YYYY-MM-DD HH:mm', text: 'YYYY-MM-DD HH:mm' },
         { value: 'YYYY-MM-DD HH:mm:ss', text: 'YYYY-MM-DD HH:mm:ss' },
       ]
+    },
+    {
+      type: 'number',
+      key: 'decimal',
+      min: 0,
+      max: 18,
+      decimal: 0,
+      label: '灏忔暟浣�',
+      initVal: card.decimal === undefined ? '' : card.decimal,
+      required: false
     },
     {
       type: 'text',
@@ -301,6 +314,16 @@
       initVal: card.height,
       tooltip: '鍐呭鏄剧ず琛屾暟锛屽�间负绌烘椂楂樺害鑷�傚簲锛屾敞锛氳嚜閫傚簲楂樺害浠呭湪璁剧疆鍗$墖楂樺害鍚庢湁鏁堛��',
       required: false
+    },
+    {
+      type: 'select',
+      key: 'bgImage',
+      label: '鍔ㄦ�佽儗鏅�',
+      initVal: card.bgImage || '',
+      tooltip: '缁戝畾鏁版嵁婧愬瓧娈碉紝鍙牴鎹繑鍥炲�兼敼鍙樿儗鏅浘銆�',
+      required: false,
+      allowClear: true,
+      options: []
     },
     {
       type: 'number',
@@ -455,15 +478,6 @@
     //     { value: 'self', text: '褰撳墠椤甸潰' }
     //   ]
     // },
-    // {
-    //   type: 'select',
-    //   key: 'copyMenuId',
-    //   label: '澶嶅埗鑿滃崟',
-    //   initVal: card.copyMenuId || '',
-    //   required: false,
-    //   forbid: !isApp,
-    //   options: appMenus
-    // },
     {
       type: 'select',
       key: 'linkurl',
@@ -506,7 +520,7 @@
       key: 'formula',
       label: '鍏紡',
       initVal: card.formula || '',
-      tooltip: '鎵ц鏃朵細浣跨敤鏌ヨ鍒扮殑鏁版嵁鏇挎崲鐩稿簲鐨勫瓧娈碉紝灞曠ず鑾峰緱鐨勭粨鏋溿�傚彲浣跨敤JS鐨勪竴浜涜娉曪紝濡傦細涓夊厓琛ㄨ揪寮� @field1@ > @field2@ ? 0 : 1锛汳ath瀵硅薄锛屽彇缁濆鍊� Math.abs(@field@)銆佸洓鑸嶄簲鍏� Math.round(@field@)绛�',
+      tooltip: '鎵ц鏃朵細浣跨敤鏌ヨ鍒扮殑鏁版嵁鏇挎崲鐩稿簲鐨勫瓧娈碉紝灞曠ず鑾峰緱鐨勭粨鏋滐紝鍦ㄤ笉浣跨敤瑙f瀽鏃舵崲琛岀鎴栫┖鏍间細鏇挎崲涓洪〉闈㈠厓绱犮�傚彲浣跨敤JS鐨勪竴浜涜娉曪紝濡傦細涓夊厓琛ㄨ揪寮� @field1@ > @field2@ ? 0 : 1锛汳ath瀵硅薄锛屽彇缁濆鍊� Math.abs(@field@)銆佸洓鑸嶄簲鍏� Math.round(@field@)绛�',
       placeholder: '渚嬪锛欯price@ * @number@',
       required: true
     },
@@ -522,6 +536,56 @@
         { value: 'hide', text: '闅愯棌' }
       ]
     },
+    {
+      type: 'radio',
+      key: 'fixStyle',
+      label: '鍓嶅悗缂�',
+      initVal: card.fixStyle || '',
+      tooltip: '鍓嶇紑涓庡悗缂�锛屼娇鐢ㄤ笌鍐呭缁熶竴鐨勬牱寮忚繕鏄嫭绔嬫牱寮忋��',
+      required: false,
+      options: [
+        { value: '', text: '缁熶竴鏍峰紡' },
+        { value: 'alone', text: '鐙珛鏍峰紡' }
+      ]
+    },
+    {
+      type: 'number',
+      key: 'fixSize',
+      min: 10,
+      max: 100,
+      label: '瀛椾綋澶у皬',
+      initVal: card.fixSize || 14,
+      tooltip: '鍓嶇紑銆佸悗缂�鐨勫瓧浣撳ぇ灏忋��',
+      required: true
+    },
+    {
+      type: 'color',
+      key: 'fixColor',
+      label: '瀛椾綋棰滆壊',
+      initVal: card.fixColor || 'rgba(0, 0, 0, 0.65)',
+      tooltip: '鍓嶇紑銆佸悗缂�鐨勫瓧浣撻鑹层��',
+      required: true
+    },
+    {
+      type: 'number',
+      key: 'fixLeft',
+      min: 0,
+      max: 1000,
+      label: '宸﹁竟璺�',
+      initVal: card.fixLeft || 0,
+      tooltip: '鍓嶇紑銆佸悗缂�鐨勫乏杈硅窛銆�',
+      required: false
+    },
+    {
+      type: 'number',
+      key: 'fixRight',
+      min: 0,
+      max: 1000,
+      label: '鍙宠竟璺�',
+      initVal: card.fixRight || 0,
+      tooltip: '鍓嶇紑銆佸悗缂�鐨勫彸杈硅窛銆�',
+      required: false
+    },
   ]
 
   return forms
diff --git a/src/menu/components/card/cardcellcomponent/index.jsx b/src/menu/components/card/cardcellcomponent/index.jsx
index db7b2ed..dbe882a 100644
--- a/src/menu/components/card/cardcellcomponent/index.jsx
+++ b/src/menu/components/card/cardcellcomponent/index.jsx
@@ -525,33 +525,23 @@
 
     if ((sessionStorage.getItem('style-control') && sessionStorage.getItem('style-control') === 'true')) return
 
-    if (btn.eleType === 'button') {
-      if (btn.OpenType === 'pop' || btn.execMode === 'pop') {
-        if (!btn.modal) {
-          btn.modal = {
-            setting: { title: btn.label, width: appType === 'mob' ? 100 : 60, cols: '2', container: 'view', focus: '', finish: 'close', clickouter: 'unclose', display: 'modal' },
-            tables: [],
-            groups: [],
-            fields: []
-          }
+    if (btn.OpenType === 'pop' || btn.execMode === 'pop') {
+      if (!btn.modal) {
+        btn.modal = {
+          setting: { title: btn.label, width: appType === 'mob' ? 100 : 60, cols: '2', container: 'view', focus: '', finish: 'close', clickouter: 'unclose', display: 'modal' },
+          tables: [],
+          groups: [],
+          fields: []
         }
-  
-        MKEmitter.emit('changeModal', cards, btn)
-      } else if (btn.OpenType === 'popview') {
-        MKEmitter.emit('changePopview', cards, btn)
-      } else if (btn.OpenType === 'innerpage' && btn.pageTemplate === 'page') {
-        MKEmitter.emit('changeEditMenu', {MenuID: btn.uuid, copyMenuId: btn.copyMenuId})
-      } else if (btn.OpenType === 'innerpage' && btn.pageTemplate === 'linkpage') {
-        MKEmitter.emit('changeEditMenu', {MenuID: btn.linkmenu})
-      } else {
-        this.handleElement(item)
       }
+
+      MKEmitter.emit('changeModal', cards, btn)
+    } else if (btn.OpenType === 'popview') {
+      MKEmitter.emit('changePopview', cards, btn)
+    } else if (btn.OpenType === 'innerpage' && btn.pageTemplate === 'linkpage') {
+      MKEmitter.emit('changeEditMenu', {MenuID: btn.linkmenu})
     } else {
-      if (btn.link === 'page') {
-        MKEmitter.emit('changeEditMenu', {MenuID: btn.uuid, copyMenuId: btn.copyMenuId})
-      } else if (btn.link === 'linkpage') {
-        MKEmitter.emit('changeEditMenu', {MenuID: btn.linkmenu})
-      }
+      this.handleElement(item)
     }
   }
 
@@ -676,7 +666,7 @@
           </Modal>
           {/* 缂栬緫鎸夐挳锛氬鍒躲�佺紪杈� */}
           <Modal
-            title={dict['model.action'] + '-' + (card && card.copyType === 'action' ? dict['model.copy'] : dict['model.edit'])}
+            title="鎸夐挳路缂栬緫"
             visible={actvisible}
             width={800}
             maskClosable={false}
@@ -702,7 +692,7 @@
             wrapClassName="model-table-action-verify-modal"
             title={(card && card.label ? card.label + ' - ' : '') + '楠岃瘉淇℃伅'}
             visible={profVisible}
-            width={'75vw'}
+            width={'90vw'}
             maskClosable={false}
             okText={dict['model.submit']}
             onOk={this.verifySubmit}
diff --git a/src/menu/components/card/cardcomponent/index.jsx b/src/menu/components/card/cardcomponent/index.jsx
index 7e36906..5554b8f 100644
--- a/src/menu/components/card/cardcomponent/index.jsx
+++ b/src/menu/components/card/cardcomponent/index.jsx
@@ -19,7 +19,6 @@
 
 class CardBoxComponent extends Component {
   static propTpyes = {
-    offset: PropTypes.any,           // 鍋忕Щ閲�
     cards: PropTypes.object,         // 鍗$墖琛岄厤缃俊鎭�
     card: PropTypes.object,          // 鍗$墖閰嶇疆淇℃伅
     move: PropTypes.func,            // 鍗$墖绉诲姩
@@ -320,7 +319,7 @@
   }
 
   render() {
-    const { cards, offset } = this.props
+    const { cards } = this.props
     const { card, elements, side, visible } = this.state
 
     let _style = {...card.style}
@@ -338,7 +337,7 @@
     _style = resetStyle(_style)
 
     return (
-      <Col span={card.setting.width || 6} offset={offset || 0}>
+      <Col span={card.setting.width || 6}>
         <div className={'card-item ' + (card.setting.btnControl || '')} style={_style} onClick={this.clickComponent} onDoubleClick={(e) => {e.stopPropagation(); this.doubleClickCard()}} id={card.uuid}>
           <CardCellComponent cards={cards} cardCell={card} side={side} elements={elements} updateElement={this.updateCard}/>
           <div className="card-control" onDoubleClick={(e) => e.stopPropagation()}>
diff --git a/src/menu/components/card/cardcomponent/options.jsx b/src/menu/components/card/cardcomponent/options.jsx
index b4bdd99..dfbcf7c 100644
--- a/src/menu/components/card/cardcomponent/options.jsx
+++ b/src/menu/components/card/cardcomponent/options.jsx
@@ -116,6 +116,7 @@
         {field: 'open', values: ['menu', 'link', 'menus']},
         {field: 'joint', values: ['menu', 'link', 'menus']},
         {field: 'linkbtn', values: ['button']},
+        {field: 'clickType', values: ['button']},
         {field: 'menuType', values: ['menus']},
         {field: 'menus', values: ['menus']},
       ]
@@ -134,6 +135,7 @@
       label: '鍏宠仈鑿滃崟',
       initval: setting.menu || (appType ? '' : []),
       required: true,
+      extendName: 'MenuNo',
       options: menulist,
     },
     {
@@ -178,6 +180,18 @@
     },
     {
       type: 'radio',
+      field: 'clickType',
+      label: '瑙﹀彂鏂瑰紡',
+      initval: setting.clickType || 'normal',
+      required: false,
+      options: [
+        {value: 'normal', label: '鍗曞嚮'},
+        {value: 'multi', label: '鍙屽嚮'},
+      ],
+      forbid: appType === 'mob'
+    },
+    {
+      type: 'radio',
       field: 'btnControl',
       label: '鎸夐挳鎺у埗',
       initval: setting.btnControl || 'show',
@@ -196,6 +210,7 @@
       initval: menus,
       required: true,
       span: 24,
+      actions: ['view'],
       columns: [
         {
           title: '鏍囪瘑',
diff --git a/src/menu/components/card/cardsimplecomponent/options.jsx b/src/menu/components/card/cardsimplecomponent/options.jsx
index 6c649dd..28680d5 100644
--- a/src/menu/components/card/cardsimplecomponent/options.jsx
+++ b/src/menu/components/card/cardsimplecomponent/options.jsx
@@ -116,6 +116,7 @@
       label: '鍏宠仈鑿滃崟',
       initval: setting.menu || (appType ? '' : []),
       required: true,
+      extendName: 'MenuNo',
       options: appType ? appmenulist : menulist,
     },
     {
@@ -219,6 +220,7 @@
       label: '鍏宠仈鑿滃崟',
       initval: setting.menu || (appType ? '' : []),
       required: true,
+      extendName: 'MenuNo',
       options: appType ? appmenulist : menulist,
     },
     {
diff --git a/src/menu/components/card/data-card/index.jsx b/src/menu/components/card/data-card/index.jsx
index 335e3f9..7b10cf3 100644
--- a/src/menu/components/card/data-card/index.jsx
+++ b/src/menu/components/card/data-card/index.jsx
@@ -46,7 +46,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'array',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
@@ -57,7 +56,7 @@
         name: card.name,
         subtype: card.subtype,
         setting: { interType: 'system' },
-        wrap: { name: card.name, width: card.width || 24, title: '', pagestyle: 'page', switch: 'false', cardType: '' },
+        wrap: { name: card.name, width: card.width || 24, title: '', pagestyle: 'page', cardType: '' },
         style: { marginLeft: '0px', marginRight: '0px', marginTop: '8px', marginBottom: '8px' },
         headerStyle: { fontSize: '16px', borderBottomWidth: '1px', borderBottomColor: '#e8e8e8' },
         columns: [],
@@ -436,7 +435,7 @@
       newcard = {
         uuid: Utils.getuuid(),
         $cardType: 'extendCard',
-        setting: { width: 6, type: 'simple', click: 'button'},
+        setting: { width: 6, type: 'simple', click: ''},
         style: {
           height,
           borderWidth: '1px', borderColor: '#e8e8e8',
@@ -494,6 +493,10 @@
       delete res.supNodes
     } else {
       delete _card.supNodes
+    }
+
+    if (res.layout === 'flex') {
+      _card.wrap.pagestyle = 'page'
     }
 
     this.updateComponent(_card)
@@ -640,17 +643,6 @@
   render() {
     const { card, appType } = this.state
 
-    let offset = 0
-    if (card.wrap.cardFloat && card.wrap.cardFloat !== 'left') {
-      let _width = 0
-      card.subcards.forEach(card => {
-        _width += card.setting.width
-      })
-      offset = _width < 24 ? 24 - _width : 0
-      if (card.wrap.cardFloat === 'center') {
-        offset = Math.floor(offset / 2)
-      }
-    }
     let _style = resetStyle(card.style)
 
     return (
@@ -676,7 +668,9 @@
           <ToolOutlined />
         </Popover>
         <ActionComponent config={card} type="datacard" setSubConfig={this.setSubConfig} updateaction={this.updateComponent}/>
-        {card.subcards.map((subcard, index) => (<CardComponent key={subcard.uuid} offset={!index ? offset : 0} cards={card} card={subcard} move={this.move} updateElement={this.updateCard} deleteElement={this.deleteCard}/>))}
+        <div className={'float-' + (card.wrap.cardFloat || 'left')}>
+          {card.subcards.map((subcard, index) => (<CardComponent key={subcard.uuid} cards={card} card={subcard} move={this.move} updateElement={this.updateCard} deleteElement={this.deleteCard}/>))}
+        </div>
         <div style={{clear: 'both'}}></div>
         {card.wrap.pagestyle === 'page' && card.setting.laypage === 'true' && appType !== 'mob' ? <Pagination total={85} size="small" showTotal={total => `鍏� ${total} 鏉} pageSize={20} defaultCurrent={1}/> : null}
         {card.wrap.pagestyle === 'page' && card.setting.laypage === 'true' && appType === 'mob' ? <MobPagination /> : null}
diff --git a/src/menu/components/card/data-card/index.scss b/src/menu/components/card/data-card/index.scss
index 900f85c..c49a471 100644
--- a/src/menu/components/card/data-card/index.scss
+++ b/src/menu/components/card/data-card/index.scss
@@ -91,6 +91,24 @@
       font-size: 16px;
     }
   }
+  .float-center {
+    text-align: center;
+    >.ant-col {
+      display: inline-block;
+      float: none;
+      text-align: left;
+      vertical-align: top;
+    }
+  }
+  .float-right {
+    text-align: right;
+    >.ant-col {
+      display: inline-block;
+      float: none;
+      text-align: left;
+      vertical-align: top;
+    }
+  }
 }
 
 .menu-data-card-edit-box::-webkit-scrollbar {
diff --git a/src/menu/components/card/data-card/options.jsx b/src/menu/components/card/data-card/options.jsx
index 33b8ebc..913aba8 100644
--- a/src/menu/components/card/data-card/options.jsx
+++ b/src/menu/components/card/data-card/options.jsx
@@ -29,6 +29,21 @@
     roleList = []
   }
 
+  let menulist = []
+
+  if (appType === 'mob') {
+    menulist = sessionStorage.getItem('appMenus')
+    if (menulist) {
+      try {
+        menulist = JSON.parse(menulist)
+      } catch (e) {
+        menulist = []
+      }
+    } else {
+      menulist = []
+    }
+  }
+
   const cardWrapForm = [
     {
       type: 'text',
@@ -70,9 +85,28 @@
       linkFields: ['priKeyType'],
       controlFields: [
         {field: 'goback', values: ['dynamic']},
+        {field: 'empty', values: ['dynamic']},
+        {field: 'jump', values: ['dynamic']},
         {field: 'supModule', values: ['static']},
       ],
       forbid: subtype !== 'propcard'
+    },
+    {
+      type: 'radio',
+      field: 'layout',
+      label: '鍗$墖甯冨眬',
+      initval: wrap.layout || 'grid',
+      tooltip: appType === 'mob' ? '寮规�у竷灞�鏃讹紝婊戝姩鍔犺浇鏃犳晥' : '寮规�у竷灞�鏃讹紝宸﹀彸鍒囨崲鏃犳晥',
+      required: false,
+      options: [
+        {value: 'grid', label: '鏍呮牸甯冨眬'},
+        {value: 'flex', label: '寮规�у竷灞�'},
+      ],
+      controlFields: subtype !== 'propcard' ? [
+        {field: 'printHeight', values: ['flex']},
+        {field: 'cardFloat', values: ['grid']},
+      ] : [{field: 'cardFloat', values: ['grid']}],
+      forbid: subtype === 'tablecard'
     },
     {
       type: 'radio',
@@ -128,6 +162,7 @@
       field: 'selected',
       label: '棣栬閫変腑',
       initval: wrap.selected || 'false',
+      tooltip: '褰撴寜閽墽琛屽畬鎴愬苟杩斿洖涓婚敭鍊兼椂锛岄粯璁ら�変腑涓婚敭鍊煎搴旇銆�',
       required: false,
       options: [
         {value: 'false', label: '鏃�'},
@@ -168,7 +203,7 @@
       field: 'cardFloat',
       label: '瀵归綈鏂瑰紡',
       initval: wrap.cardFloat || 'left',
-      tooltip: '璁剧疆涓哄眳涓榻愭垨鍙冲榻愶紝鍙湪鍗$墖涓�1琛屾椂鏈夋晥銆�',
+      tooltip: '璁剧疆鍗$墖鐨勫榻愭柟寮忋��',
       required: false,
       options: [
         {value: 'left', label: '宸﹀榻�'},
@@ -201,7 +236,19 @@
         {value: 'content', label: '鍐呭'},
         {value: 'headerOrfooter', label: '椤电湁/椤佃剼'},
       ],
+      controlFields: [
+        {field: 'printHeight', values: ['content']},
+      ],
       forbid: subtype !== 'propcard' || MenuType !== 'billPrint'
+    },
+    {
+      type: 'number',
+      field: 'printHeight',
+      label: '鎹㈢畻楂樺害',
+      initval: wrap.printHeight || '',
+      tooltip: subtype !== 'propcard' ? '褰撳墠鏁版嵁鍗¢珮搴︾浉褰撲簬鍑犳潯鏁版嵁銆�' : '褰撳墠灞炴�у崱楂樺害鐩稿綋浜庡嚑鏉℃暟鎹��',
+      required: false,
+      forbid: subtype === 'tablecard' || MenuType !== 'billPrint'
     },
     {
       type: 'select',
@@ -211,7 +258,7 @@
       tooltip: '璇煶鎾姤鍦ㄧЩ鍔ㄧapp涓湁鏁堛�傛敞锛氫娇鐢ㄨ闊虫挱鎶ユ椂锛屾暟鎹簮涓嶈浣跨敤鍚屾鏌ヨ锛屾坊鍔犲畾鏃跺櫒鏃讹紝鍙惊鐜挱鎶�',
       required: false,
       options: columns,
-      forbid: !columns || appType !== 'mob'
+      forbid: !columns || appType !== 'mob' || subtype !== 'propcard'
     },
     {
       type: 'radio',
@@ -233,11 +280,72 @@
       initval: wrap.empty || 'show',
       tooltip: '褰撴煡璇㈡暟鎹负绌烘椂锛岄殣钘忚缁勪欢銆�',
       required: false,
+      skip: true,
       options: [
         {value: 'show', label: '鍚�'},
         {value: 'hidden', label: '鏄�'},
       ],
-      forbid: subtype !== 'datacard'
+    },
+    {
+      type: 'radio',
+      field: 'jump',
+      label: '椤甸潰璺宠浆',
+      initval: wrap.jump || '',
+      tooltip: '閫氳繃鏌ヨ杩斿洖鍊煎垽鏂〉闈㈡槸鍚﹁璺宠浆銆�',
+      required: false,
+      options: [
+        {value: '', label: '鏃�'},
+        {value: 'menu', label: '鑿滃崟'},
+        {value: 'link', label: '閾炬帴'},
+      ],
+      controlFields: [
+        {field: 'jumpField', values: ['menu', 'link']},
+        {field: 'joint', values: ['menu', 'link']},
+        {field: 'menu', values: ['menu']},
+        {field: 'link', values: ['link']},
+      ],
+      forbid: subtype !== 'propcard' || appType !== 'mob'
+    },
+    {
+      type: 'select',
+      field: 'jumpField',
+      label: '鎺у埗瀛楁',
+      initval: wrap.jumpField || '',
+      tooltip: '褰撳瓧娈靛�间负true鏃�',
+      required: true,
+      options: columns,
+      forbid: subtype !== 'propcard' || appType !== 'mob'
+    },
+    {
+      type: 'select',
+      field: 'menu',
+      label: '鑿滃崟',
+      initval: wrap.menu || '',
+      required: true,
+      options: menulist,
+      forbid: subtype !== 'propcard' || appType !== 'mob'
+    },
+    {
+      type: 'select',
+      field: 'link',
+      label: '閾炬帴瀛楁',
+      initval: wrap.link || '',
+      tooltip: '璺宠浆閾炬帴涓烘煡璇㈡暟鎹殑杩斿洖鍊笺��',
+      required: true,
+      options: columns,
+      forbid: subtype !== 'propcard' || appType !== 'mob'
+    },
+    {
+      type: 'radio',
+      field: 'joint',
+      label: '鍙傛暟鎷兼帴',
+      initval: wrap.joint || 'true',
+      required: false,
+      options: [
+        {value: 'true', label: '鏄�'},
+        {value: 'false', label: '鍚�'},
+      ],
+      forbid: subtype !== 'propcard' || appType !== 'mob'
     },
     {
       type: 'radio',
@@ -302,6 +410,18 @@
       ]
     },
     {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'multiselect',
       field: 'blacklist',
       label: '榛戝悕鍗�',
@@ -341,11 +461,11 @@
     }
   ]
 
-  return cardWrapForm.map(item => {
+  return cardWrapForm.filter(item => {
     if (['pagestyle'].includes(item.field)) {
       item.options = item.options.filter(option => !option.forbid)
     }
 
-    return item
+    return !item.forbid
   })
 } 
\ No newline at end of file
diff --git a/src/menu/components/card/prop-card/index.jsx b/src/menu/components/card/prop-card/index.jsx
index 96e0fd7..b42cc9a 100644
--- a/src/menu/components/card/prop-card/index.jsx
+++ b/src/menu/components/card/prop-card/index.jsx
@@ -45,7 +45,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'object',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
@@ -56,7 +55,7 @@
         name: card.name,
         subtype: card.subtype,
         setting: { interType: 'system' },
-        wrap: { name: card.name, width: card.width || 24, title: '', switch: 'false', datatype: 'static' },
+        wrap: { name: card.name, width: card.width || 24, title: '', datatype: 'static' },
         style: { marginLeft: '0px', marginRight: '0px', marginTop: '8px', marginBottom: '8px' },
         headerStyle: { fontSize: '16px', borderBottomWidth: '1px', borderBottomColor: '#e8e8e8' },
         columns: [],
@@ -451,6 +450,10 @@
     if (res.supModule && res.supModule.length > 0) {
       _card.setting.supModule = res.supModule
     }
+    if (res.layout === 'flex') {
+      _card.wrap.pagestyle = 'page'
+    }
+
     this.updateComponent(_card)
   }
 
@@ -463,18 +466,6 @@
 
   render() {
     const { card } = this.state
-
-    let offset = 0
-    if (card.wrap.cardFloat && card.wrap.cardFloat !== 'left') {
-      let _width = 0
-      card.subcards.forEach(card => {
-        _width += card.setting.width
-      })
-      offset = _width < 24 ? 24 - _width : 0
-      if (card.wrap.cardFloat === 'center') {
-        offset = Math.floor(offset / 2)
-      }
-    }
 
     let _style = resetStyle(card.style)
 
@@ -500,7 +491,9 @@
         } trigger="hover">
           <ToolOutlined />
         </Popover>
-        {card.subcards.map((subcard, index) => (<CardComponent key={subcard.uuid} offset={!index ? offset : 0} cards={card} card={subcard} move={this.move} updateElement={this.updateCard} deleteElement={this.deleteCard}/>))}
+        <div className={(card.wrap.layout || 'grid') + '-layout float-' + (card.wrap.cardFloat || 'left')}>
+          {card.subcards.map(subcard => (<CardComponent key={subcard.uuid} cards={card} card={subcard} move={this.move} updateElement={this.updateCard} deleteElement={this.deleteCard}/>))}
+        </div>
       </div>
     )
   }
diff --git a/src/menu/components/card/prop-card/index.scss b/src/menu/components/card/prop-card/index.scss
index 827cf17..f8633d4 100644
--- a/src/menu/components/card/prop-card/index.scss
+++ b/src/menu/components/card/prop-card/index.scss
@@ -71,6 +71,32 @@
       margin-right: 10px;
     }
   }
+  .flex-layout {
+    display: flex;
+    width: 100%;
+    >.ant-col {
+      width: 5%;
+      flex: 1;
+    }
+  }
+  .float-center {
+    text-align: center;
+    >.ant-col {
+      display: inline-block;
+      float: none;
+      text-align: left;
+      vertical-align: top;
+    }
+  }
+  .float-right {
+    text-align: right;
+    >.ant-col {
+      display: inline-block;
+      float: none;
+      text-align: left;
+      vertical-align: top;
+    }
+  }
 }
 .menu-prop-card-edit-box::after {
   display: block;
diff --git a/src/menu/components/card/table-card/index.jsx b/src/menu/components/card/table-card/index.jsx
index 6470b65..ad0934f 100644
--- a/src/menu/components/card/table-card/index.jsx
+++ b/src/menu/components/card/table-card/index.jsx
@@ -45,7 +45,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'array',    // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
diff --git a/src/menu/components/carousel/data-card/index.jsx b/src/menu/components/carousel/data-card/index.jsx
index 61806d1..ebf521e 100644
--- a/src/menu/components/carousel/data-card/index.jsx
+++ b/src/menu/components/carousel/data-card/index.jsx
@@ -41,7 +41,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'array',    // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
diff --git a/src/menu/components/carousel/data-card/index.scss b/src/menu/components/carousel/data-card/index.scss
index b62bd6b..cd42494 100644
--- a/src/menu/components/carousel/data-card/index.scss
+++ b/src/menu/components/carousel/data-card/index.scss
@@ -76,12 +76,12 @@
     }
   }
 }
-.menu-carousel-edit-box::after {
+.menu-data-carousel-edit-box::after {
   display: block;
   content: ' ';
   clear: both;
 }
-.menu-carousel-edit-box:hover {
+.menu-data-carousel-edit-box:hover {
   z-index: 1;
   box-shadow: 0px 0px 4px #1890ff;
 }
diff --git a/src/menu/components/carousel/data-card/options.jsx b/src/menu/components/carousel/data-card/options.jsx
index 6aa1852..36441fe 100644
--- a/src/menu/components/carousel/data-card/options.jsx
+++ b/src/menu/components/carousel/data-card/options.jsx
@@ -46,6 +46,9 @@
         {value: 'dynamic', label: '鍔ㄦ��'},
         {value: 'static', label: '闈欐��'},
       ],
+      controlFields: [
+        {field: 'empty', values: ['dynamic']},
+      ],
       forbid: subtype !== 'propcard'
     },
     {
@@ -120,6 +123,31 @@
       forbid: appType === 'mob'
     },
     {
+      type: 'radio',
+      field: 'empty',
+      label: '绌哄�奸殣钘�',
+      initval: wrap.empty || 'show',
+      tooltip: '褰撴煡璇㈡暟鎹负绌烘椂锛岄殣钘忚缁勪欢銆�',
+      required: false,
+      skip: true,
+      options: [
+        {value: 'show', label: '鍚�'},
+        {value: 'hidden', label: '鏄�'},
+      ],
+    },
+    {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'multiselect',
       field: 'blacklist',
       label: '榛戝悕鍗�',
diff --git a/src/menu/components/carousel/prop-card/index.jsx b/src/menu/components/carousel/prop-card/index.jsx
index b9d3a01..1795efc 100644
--- a/src/menu/components/carousel/prop-card/index.jsx
+++ b/src/menu/components/carousel/prop-card/index.jsx
@@ -42,7 +42,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'object',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
diff --git a/src/menu/components/carousel/prop-card/index.scss b/src/menu/components/carousel/prop-card/index.scss
index a21b98f..3121478 100644
--- a/src/menu/components/carousel/prop-card/index.scss
+++ b/src/menu/components/carousel/prop-card/index.scss
@@ -81,12 +81,12 @@
     }
   }
 }
-.menu-prop-card-edit-box::after {
+.menu-prop-carousel-edit-box::after {
   display: block;
   content: ' ';
   clear: both;
 }
-.menu-prop-card-edit-box:hover {
+.menu-prop-carousel-edit-box:hover {
   z-index: 1;
   box-shadow: 0px 0px 4px #1890ff;
 }
diff --git a/src/menu/components/chart/antv-bar/chartcompile/formconfig.jsx b/src/menu/components/chart/antv-bar/chartcompile/formconfig.jsx
index 05158b6..e88e500 100644
--- a/src/menu/components/chart/antv-bar/chartcompile/formconfig.jsx
+++ b/src/menu/components/chart/antv-bar/chartcompile/formconfig.jsx
@@ -58,6 +58,18 @@
       required: true
     },
     {
+      type: 'radio',
+      key: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initVal: card.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', text: '鍚敤'},
+        {value: 'false', text: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'select',
       key: 'blacklist',
       label: '榛戝悕鍗�',
@@ -419,6 +431,17 @@
         text: '鍚敤'
       }]
     }, {
+      type: 'radio',
+      key: 'empty',
+      label: '绌哄�奸殣钘�',
+      initVal: card.empty || 'show',
+      tooltip: '褰撴煡璇㈡暟鎹负绌烘椂锛岄殣钘忚缁勪欢銆�',
+      required: false,
+      options: [
+        {value: 'show', text: '鍚�'},
+        {value: 'hidden', text: '鏄�'},
+      ],
+    }, {
       type: 'number',
       key: 'barSize',
       label: '鏌卞舰瀹藉害',
diff --git a/src/menu/components/chart/antv-bar/index.jsx b/src/menu/components/chart/antv-bar/index.jsx
index 56af912..704fe48 100644
--- a/src/menu/components/chart/antv-bar/index.jsx
+++ b/src/menu/components/chart/antv-bar/index.jsx
@@ -71,7 +71,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'array',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
diff --git a/src/menu/components/chart/antv-dashboard/chartcompile/formconfig.jsx b/src/menu/components/chart/antv-dashboard/chartcompile/formconfig.jsx
index 9a90e00..3add00e 100644
--- a/src/menu/components/chart/antv-dashboard/chartcompile/formconfig.jsx
+++ b/src/menu/components/chart/antv-dashboard/chartcompile/formconfig.jsx
@@ -58,6 +58,18 @@
       required: true
     },
     {
+      type: 'radio',
+      key: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initVal: card.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', text: '鍚敤'},
+        {value: 'false', text: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'select',
       key: 'blacklist',
       label: '榛戝悕鍗�',
@@ -144,6 +156,18 @@
         text: '鍚敤'
       }]
     },
+    // {
+    //   type: 'radio',
+    //   key: 'empty',
+    //   label: '绌哄�奸殣钘�',
+    //   initVal: card.empty || 'show',
+    //   tooltip: '褰撴煡璇㈡暟鎹负绌烘椂锛岄殣钘忚缁勪欢銆�',
+    //   required: false,
+    //   options: [
+    //     {value: 'show', text: '鍚�'},
+    //     {value: 'hidden', text: '鏄�'},
+    //   ],
+    // },
     {
       type: 'color',
       key: 'tickColor',
diff --git a/src/menu/components/chart/antv-dashboard/index.jsx b/src/menu/components/chart/antv-dashboard/index.jsx
index f26312a..03305f3 100644
--- a/src/menu/components/chart/antv-dashboard/index.jsx
+++ b/src/menu/components/chart/antv-dashboard/index.jsx
@@ -112,7 +112,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: card.subtype === 'ratioboard' ? 'array' : 'object',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
diff --git a/src/menu/components/chart/antv-pie/chartcompile/formconfig.jsx b/src/menu/components/chart/antv-pie/chartcompile/formconfig.jsx
index aaa4b33..494a36f 100644
--- a/src/menu/components/chart/antv-pie/chartcompile/formconfig.jsx
+++ b/src/menu/components/chart/antv-pie/chartcompile/formconfig.jsx
@@ -111,6 +111,18 @@
       ]
     },
     {
+      type: 'radio',
+      key: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initVal: card.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', text: '鍚敤'},
+        {value: 'false', text: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'select',
       key: 'blacklist',
       label: '榛戝悕鍗�',
@@ -296,6 +308,17 @@
         text: '鍚敤'
       }]
     }, {
+      type: 'radio',
+      key: 'empty',
+      label: '绌哄�奸殣钘�',
+      initVal: card.empty || 'show',
+      tooltip: '褰撴煡璇㈡暟鎹负绌烘椂锛岄殣钘忚缁勪欢銆�',
+      required: false,
+      options: [
+        {value: 'show', text: '鍚�'},
+        {value: 'hidden', text: '鏄�'},
+      ],
+    }, {
       type: 'number',
       key: 'splitLine',
       label: '鍒嗛殧绾�',
diff --git a/src/menu/components/chart/antv-pie/index.jsx b/src/menu/components/chart/antv-pie/index.jsx
index 14f1db8..6029781 100644
--- a/src/menu/components/chart/antv-pie/index.jsx
+++ b/src/menu/components/chart/antv-pie/index.jsx
@@ -62,7 +62,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'array',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
diff --git a/src/menu/components/chart/antv-scatter/chartcompile/formconfig.jsx b/src/menu/components/chart/antv-scatter/chartcompile/formconfig.jsx
index cf6c5da..79b4f14 100644
--- a/src/menu/components/chart/antv-scatter/chartcompile/formconfig.jsx
+++ b/src/menu/components/chart/antv-scatter/chartcompile/formconfig.jsx
@@ -53,6 +53,18 @@
       required: true
     },
     {
+      type: 'radio',
+      key: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initVal: card.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', text: '鍚敤'},
+        {value: 'false', text: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'select',
       key: 'blacklist',
       label: '榛戝悕鍗�',
@@ -143,6 +155,18 @@
       }]
     },
     {
+      type: 'radio',
+      key: 'empty',
+      label: '绌哄�奸殣钘�',
+      initVal: card.empty || 'show',
+      tooltip: '褰撴煡璇㈡暟鎹负绌烘椂锛岄殣钘忚缁勪欢銆�',
+      required: false,
+      options: [
+        {value: 'show', text: '鍚�'},
+        {value: 'hidden', text: '鏄�'},
+      ],
+    },
+    {
       type: 'text',
       key: 'Xunit',
       label: 'X杞村崟浣�',
diff --git a/src/menu/components/chart/antv-scatter/index.jsx b/src/menu/components/chart/antv-scatter/index.jsx
index 2cca38a..e8b381e 100644
--- a/src/menu/components/chart/antv-scatter/index.jsx
+++ b/src/menu/components/chart/antv-scatter/index.jsx
@@ -58,7 +58,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'array',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
diff --git a/src/menu/components/chart/chart-custom/chartcompile/formconfig.jsx b/src/menu/components/chart/chart-custom/chartcompile/formconfig.jsx
index 58786ea..26955ae 100644
--- a/src/menu/components/chart/chart-custom/chartcompile/formconfig.jsx
+++ b/src/menu/components/chart/chart-custom/chartcompile/formconfig.jsx
@@ -64,6 +64,18 @@
       required: true
     },
     {
+      type: 'radio',
+      key: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initVal: card.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', text: '鍚敤'},
+        {value: 'false', text: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'select',
       key: 'blacklist',
       label: '榛戝悕鍗�',
diff --git a/src/menu/components/chart/chart-custom/index.jsx b/src/menu/components/chart/chart-custom/index.jsx
index 929d17c..924baa8 100644
--- a/src/menu/components/chart/chart-custom/index.jsx
+++ b/src/menu/components/chart/chart-custom/index.jsx
@@ -50,7 +50,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'array',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
diff --git a/src/menu/components/code/sandbox/index.jsx b/src/menu/components/code/sandbox/index.jsx
index ba13288..6395466 100644
--- a/src/menu/components/code/sandbox/index.jsx
+++ b/src/menu/components/code/sandbox/index.jsx
@@ -41,7 +41,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         dataName: card.dataName || '',
diff --git a/src/menu/components/code/sandbox/options.jsx b/src/menu/components/code/sandbox/options.jsx
index 3576742..6aab039 100644
--- a/src/menu/components/code/sandbox/options.jsx
+++ b/src/menu/components/code/sandbox/options.jsx
@@ -48,6 +48,18 @@
       ]
     },
     {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'multiselect',
       field: 'blacklist',
       label: '榛戝悕鍗�',
diff --git a/src/menu/components/editor/braft-editor/index.jsx b/src/menu/components/editor/braft-editor/index.jsx
index ac8dd29..56f1dff 100644
--- a/src/menu/components/editor/braft-editor/index.jsx
+++ b/src/menu/components/editor/braft-editor/index.jsx
@@ -38,7 +38,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         dataName: card.dataName || '',
diff --git a/src/menu/components/editor/braft-editor/options.jsx b/src/menu/components/editor/braft-editor/options.jsx
index 7f53cc7..0cf69e3 100644
--- a/src/menu/components/editor/braft-editor/options.jsx
+++ b/src/menu/components/editor/braft-editor/options.jsx
@@ -90,6 +90,18 @@
       required: false
     },
     {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'multiselect',
       field: 'blacklist',
       label: '榛戝悕鍗�',
diff --git a/src/menu/components/form/dragtitle/options.jsx b/src/menu/components/form/dragtitle/options.jsx
index 90f9176..39849e5 100644
--- a/src/menu/components/form/dragtitle/options.jsx
+++ b/src/menu/components/form/dragtitle/options.jsx
@@ -7,7 +7,7 @@
 
   if (appType === 'mob') {
     group.fields.forEach(f => {
-      if (f.field && ['text', 'number'].includes(f.type) && f.hidden !== 'true' && f.readonly !== 'true') {
+      if (f.field && ['select', 'text', 'number'].includes(f.type) && f.hidden !== 'true' && f.readonly !== 'true') {
         fields.push(f)
       }
     })
diff --git a/src/menu/components/form/formaction/actionform/index.jsx b/src/menu/components/form/formaction/actionform/index.jsx
index f36d0b1..4a4ecf1 100644
--- a/src/menu/components/form/formaction/actionform/index.jsx
+++ b/src/menu/components/form/formaction/actionform/index.jsx
@@ -54,7 +54,7 @@
     } else if (card.type === 'next') {
       return ['type', 'label', 'enable']
     }
-    let _options = ['type', 'label', 'intertype', 'syncComponent', 'linkmenu', 'open', 'enable', 'output'] // 閫夐」鍒楄〃
+    let _options = ['type', 'label', 'intertype', 'syncComponent', 'linkmenu', 'open', 'enable', 'output', 'reload'] // 閫夐」鍒楄〃
     
     if (_intertype === 'custom') {
       _options.pop()
@@ -149,7 +149,7 @@
     this.state.formlist.forEach((item, index) => {
       if (item.hidden || item.forbid) return
 
-      if (item.type === 'text') { // 鏂囨湰鎼滅储
+      if (item.type === 'text') {
         let _rules = []
         if (item.key === 'innerFunc') {
           let str = '^(' + item.fields.join('|') + ')'
@@ -221,14 +221,14 @@
                     message: this.props.dict['form.required.input'] + item.label + '!'
                   }
                 ]
-              })(<InputNumber min={0} max={10000} precision={0} />)}
+              })(<InputNumber min={0} max={10000} precision={0} onPressEnter={this.handleSubmit}/>)}
             </Form.Item>
           </Col>
         )
       } else if (item.type === 'select') { // 涓嬫媺鎼滅储
         fields.push(
           <Col span={12} key={index}>
-            <Form.Item label={item.tooltip ?
+            <Form.Item help={item.help || null} label={item.tooltip ?
               <Tooltip placement="topLeft" overlayClassName={item.tooltipClass} title={item.tooltip}>
                 <QuestionCircleOutlined className="mk-form-tip" />
                 {item.label}
@@ -245,7 +245,7 @@
               })(
                 <Select
                   showSearch
-                  filterOption={(input, option) => option.props.children[2].toLowerCase().indexOf(input.toLowerCase()) >= 0}
+                  filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
                   onChange={(value) => {this.optionChange(item.key, value)}}
                   getPopupContainer={() => document.getElementById('winter')}
                   allowClear={item.allowClear}
@@ -360,7 +360,7 @@
       }
     }
     return (
-      <Form {...formItemLayout} className="menu-action-list-form" id="winter">
+      <Form {...formItemLayout} className="menu-form-action-list" id="winter">
         <Row gutter={24}>{this.getFields()}</Row>
       </Form>
     )
diff --git a/src/menu/components/form/formaction/actionform/index.scss b/src/menu/components/form/formaction/actionform/index.scss
index 2573ed4..ca43400 100644
--- a/src/menu/components/form/formaction/actionform/index.scss
+++ b/src/menu/components/form/formaction/actionform/index.scss
@@ -1,4 +1,4 @@
-.menu-action-list-form {
+.menu-form-action-list {
   min-height: 190px;
   .superconfig {
     color: #1890ff;
@@ -36,4 +36,7 @@
     border-color: #d9d9d9;
     box-shadow: none;
   }
+  .ant-form-explain {
+    font-size: 12px;
+  }
 }
\ No newline at end of file
diff --git a/src/menu/components/form/formaction/formconfig.jsx b/src/menu/components/form/formaction/formconfig.jsx
index 63770ba..01b6326 100644
--- a/src/menu/components/form/formaction/formconfig.jsx
+++ b/src/menu/components/form/formaction/formconfig.jsx
@@ -32,7 +32,7 @@
       menulist = []
     }
     if (appType === 'mob') {
-      menulist.push({value: 'goback', text: '杩斿洖'})
+      menulist.push({value: 'goback', text: '杩斿洖锛堜笂涓�椤碉級'})
     }
   } else {
     menulist = sessionStorage.getItem('fstMenuList')
@@ -246,9 +246,10 @@
     {
       type: (appType === 'pc' || appType === 'mob') ? 'select' : 'cascader',
       key: 'linkmenu',
-      label: '鎵撳紑鑿滃崟',
+      label: '涓嬩竴姝ユ搷浣�',
       tooltip: '鎵ц鎴愬姛鍚庨渶瑕佹墦寮�鐨勮彍鍗曘��',
       initVal: card.linkmenu,
+      help: '鍙繑鍥炰笂涓�椤点��',
       required: false,
       allowClear: true,
       options: menulist
@@ -257,7 +258,7 @@
       type: 'text',
       key: 'output',
       label: '杩斿洖鍊�',
-      tooltip: '鎵ц鎴愬姛鍚庣殑杩斿洖鍊笺��',
+      tooltip: '鎵ц鎴愬姛鍚庣殑杩斿洖鍊笺�備緥濡傦細@id',
       initVal: card.output || '',
       required: false
     },
@@ -284,6 +285,21 @@
       tooltip: '鎵ц鎴愬姛鍚庨渶瑕佸埛鏂扮殑缁勪欢銆�',
       required: false,
       options: modules
-    }
+    },
+    {
+      type: 'radio',
+      key: 'reload',
+      label: '涓婁竴椤�',
+      initVal: card.reload || 'false',
+      tooltip: '鎴愬姛鍚庢槸鍚﹀埛鏂颁笂椤电殑鏁版嵁銆傛敞锛氬湪鏄庣浜慉PP鎴栧皬绋嬪簭涓湁鏁堛��',
+      forbid: appType !== 'mob',
+      options: [{
+        value: 'false',
+        text: '涓嶅埛鏂�'
+      }, {
+        value: 'true',
+        text: '鍒锋柊'
+      }]
+    },
   ]
 }
diff --git a/src/menu/components/form/formaction/index.jsx b/src/menu/components/form/formaction/index.jsx
index 12cc00f..5a19faa 100644
--- a/src/menu/components/form/formaction/index.jsx
+++ b/src/menu/components/form/formaction/index.jsx
@@ -248,7 +248,7 @@
           wrapClassName="model-table-action-verify-modal"
           title={'楠岃瘉淇℃伅'}
           visible={profVisible}
-          width={'75vw'}
+          width={'90vw'}
           maskClosable={false}
           okText={dict['model.submit']}
           onOk={this.verifySubmit}
diff --git a/src/menu/components/form/normal-form/index.jsx b/src/menu/components/form/normal-form/index.jsx
index 47d8a42..7635452 100644
--- a/src/menu/components/form/normal-form/index.jsx
+++ b/src/menu/components/form/normal-form/index.jsx
@@ -59,7 +59,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'object',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
@@ -194,7 +193,21 @@
   }
 
   getStyle = (comIds, style) => {
-    const { card } = this.state
+    const { card, group } = this.state
+
+    if (comIds[0] === 'form') {
+      let Index = group.fields.findIndex(n => n.uuid === comIds[1])
+
+      if (Index === -1) return
+      
+      let _group = fromJS(group).toJS()
+
+      _group.fields[Index].style = style
+
+      this.updateGroup(_group)
+
+      return
+    }
 
     if (comIds.length !== 1 || comIds[0] !== card.uuid) return
 
@@ -554,6 +567,9 @@
         }
 
         if (item.uuid === res.uuid) {
+          if (item.style) {
+            res.style = item.style
+          }
           return res
         } else {
           return item
@@ -722,7 +738,8 @@
         <Modal
           title={this.state.dict['model.edit']}
           visible={this.state.visible}
-          width={850}
+          width={950}
+          maskClosable={false}
           onCancel={this.editModalCancel}
           onOk={this.handleSubmit}
           confirmLoading={this.state.sqlVerifing}
diff --git a/src/menu/components/form/normal-form/index.scss b/src/menu/components/form/normal-form/index.scss
index 0fb6111..ff50139 100644
--- a/src/menu/components/form/normal-form/index.scss
+++ b/src/menu/components/form/normal-form/index.scss
@@ -36,6 +36,9 @@
   }
   .form-area {
     position: relative;
+    .page-card {
+      background: transparent;
+    }
     >.plus {
       color: #26C281;
       cursor: pointer;
@@ -65,6 +68,9 @@
       padding-top: 10px;
       padding-bottom: 30px;
     }
+    .am-list-item {
+      background-color: transparent;
+    }
   }
 }
 .menu-normal-form-edit-box::after {
diff --git a/src/menu/components/form/normal-form/options.jsx b/src/menu/components/form/normal-form/options.jsx
index 93a7c7a..13dddcf 100644
--- a/src/menu/components/form/normal-form/options.jsx
+++ b/src/menu/components/form/normal-form/options.jsx
@@ -92,6 +92,18 @@
       forbid: config.subtype === 'tabform'
     },
     {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'multiselect',
       field: 'blacklist',
       label: '榛戝悕鍗�',
diff --git a/src/menu/components/form/tab-form/index.jsx b/src/menu/components/form/tab-form/index.jsx
index 5939b12..6117825 100644
--- a/src/menu/components/form/tab-form/index.jsx
+++ b/src/menu/components/form/tab-form/index.jsx
@@ -59,7 +59,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'object',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
@@ -76,7 +75,21 @@
         scripts: [],
         subcards: [{
           uuid: Utils.getuuid(),
-          setting: {title: '绗竴姝�', align: 'left_right'},
+          setting: {title: '鍒嗙粍1', align: 'left_right'},
+          sort: 1,
+          style: {},
+          fields: [],
+          subButton: {label: '鎻愪氦', type: 'submit', enable: 'true', style: {backgroundColor: '#1890ff', color: '#ffffff', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px'}},
+        }, {
+          uuid: Utils.getuuid(),
+          setting: {title: '鍒嗙粍2', align: 'left_right'},
+          sort: 1,
+          style: {},
+          fields: [],
+          subButton: {label: '鎻愪氦', type: 'submit', enable: 'true', style: {backgroundColor: '#1890ff', color: '#ffffff', paddingLeft: '25px', paddingRight: '25px', paddingTop: '5px', paddingBottom: '5px'}},
+        }, {
+          uuid: Utils.getuuid(),
+          setting: {title: '鍒嗙粍3', align: 'left_right'},
           sort: 1,
           style: {},
           fields: [],
@@ -192,7 +205,21 @@
   }
 
   getStyle = (comIds, style) => {
-    const { card } = this.state
+    const { card, group } = this.state
+
+    if (comIds[0] === 'form') {
+      let Index = group.fields.findIndex(n => n.uuid === comIds[1])
+
+      if (Index === -1) return
+      
+      let _group = fromJS(group).toJS()
+
+      _group.fields[Index].style = style
+
+      this.updateGroup(_group)
+
+      return
+    }
 
     if (comIds.length !== 1 || comIds[0] !== card.uuid) return
 
@@ -547,6 +574,9 @@
         }
 
         if (item.uuid === res.uuid) {
+          if (item.style) {
+            res.style = item.style
+          }
           return res
         } else {
           return item
@@ -716,7 +746,8 @@
         <Modal
           title={this.state.dict['model.edit']}
           visible={this.state.visible}
-          width={850}
+          width={950}
+          maskClosable={false}
           onCancel={this.editModalCancel}
           onOk={this.handleSubmit}
           confirmLoading={this.state.sqlVerifing}
diff --git a/src/menu/components/form/tab-form/index.scss b/src/menu/components/form/tab-form/index.scss
index 0fb6111..ff50139 100644
--- a/src/menu/components/form/tab-form/index.scss
+++ b/src/menu/components/form/tab-form/index.scss
@@ -36,6 +36,9 @@
   }
   .form-area {
     position: relative;
+    .page-card {
+      background: transparent;
+    }
     >.plus {
       color: #26C281;
       cursor: pointer;
@@ -65,6 +68,9 @@
       padding-top: 10px;
       padding-bottom: 30px;
     }
+    .am-list-item {
+      background-color: transparent;
+    }
   }
 }
 .menu-normal-form-edit-box::after {
diff --git a/src/menu/components/group/groupcomponents/card.jsx b/src/menu/components/group/groupcomponents/card.jsx
index bc2c4c4..29710b2 100644
--- a/src/menu/components/group/groupcomponents/card.jsx
+++ b/src/menu/components/group/groupcomponents/card.jsx
@@ -27,7 +27,7 @@
 const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
   const originalIndex = findCard(id).index
   const [{ isDragging }, drag] = useDrag({
-    item: { type: 'menu', id, originalIndex, floor: card.floor },
+    item: { type: 'menu', id, originalIndex },
     collect: monitor => ({
       isDragging: monitor.isDragging(),
     }),
@@ -36,10 +36,10 @@
     accept: 'menu',
     canDrop: () => true,
     drop: (item) => {
-      const { id: draggedId, originalIndex, floor } = item
+      const { id: draggedId, originalIndex } = item
       if (originalIndex === undefined) {
         item.dropTargetId = id
-      } else if (draggedId && floor === card.floor) {
+      } else if (draggedId) {
         if (draggedId === id) return
         const { index: originIndex } = findCard(draggedId)
 
diff --git a/src/menu/components/group/groupcomponents/index.jsx b/src/menu/components/group/groupcomponents/index.jsx
index abf16c9..858b5b1 100644
--- a/src/menu/components/group/groupcomponents/index.jsx
+++ b/src/menu/components/group/groupcomponents/index.jsx
@@ -106,7 +106,6 @@
         width: item.width || 24,
         dataName: Utils.getdataName(),
         name: name,
-        floor: config.floor || 1, // 缁勪欢鐨勫眰绾�
         isNew: true               // 鏂版坊鍔犳爣蹇楋紝鐢ㄤ簬鍒濆鍖�
       }
 
diff --git a/src/menu/components/group/normal-group/index.jsx b/src/menu/components/group/normal-group/index.jsx
index 2c087bc..509829e 100644
--- a/src/menu/components/group/normal-group/index.jsx
+++ b/src/menu/components/group/normal-group/index.jsx
@@ -35,7 +35,6 @@
       let _group = {
         uuid: group.uuid,
         type: group.type,
-        floor: group.floor,
         tabId: group.tabId || '',
         parentId: group.parentId || '',
         subtype: group.subtype,
@@ -145,7 +144,6 @@
   insert = (item) => {
     let group = fromJS(this.state.group).toJS()
 
-    item.floor = group.floor || 1
     item.parentId = group.parentId
 
     group.components.push(item)
@@ -181,7 +179,7 @@
     }
 
     return (
-      <div className={'menu-group-edit-box' + (paddingTop ? ' padding' : '')} style={_style} onClick={this.clickComponent} id={group.uuid}>
+      <div className={'menu-group-edit-box ' + (paddingTop ? 'padding ' : '') + (group.setting.layout || '')} style={_style} onClick={this.clickComponent} id={group.uuid}>
         <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/group/normal-group/index.scss b/src/menu/components/group/normal-group/index.scss
index 54c6b75..63a4dd9 100644
--- a/src/menu/components/group/normal-group/index.scss
+++ b/src/menu/components/group/normal-group/index.scss
@@ -38,3 +38,12 @@
   z-index: 1;
   box-shadow: 0px 0px 4px #1890ff;
 }
+.menu-group-edit-box.flex {
+  >.group-shell-inner {
+    display: flex;
+    width: 100%;
+    >.mk-component-card {
+      flex: 1;
+    }
+  }
+}
diff --git a/src/menu/components/group/normal-group/options.jsx b/src/menu/components/group/normal-group/options.jsx
index fcaca1a..9c6f2e6 100644
--- a/src/menu/components/group/normal-group/options.jsx
+++ b/src/menu/components/group/normal-group/options.jsx
@@ -50,6 +50,7 @@
         {field: 'pageLayout', values: ['true']},
         {field: 'syncModule', values: ['true']},
         {field: 'checkAll', values: ['true']},
+        {field: 'hide', values: ['true']},
       ],
       forbid: appType === 'mob'
     },
@@ -79,6 +80,43 @@
       forbid: appType === 'mob'
     },
     {
+      type: 'checkbox',
+      field: 'hide',
+      label: '闅愯棌鍏冪礌',
+      initval: setting.hide || [],
+      tooltip: '鎵ц鎵撳嵃鏃堕渶瑕侀殣钘忕殑椤甸潰鍏冪礌銆�',
+      required: false,
+      options: [
+        {value: 'search', label: '鎼滅储'},
+        {value: 'button', label: '鎸夐挳'},
+      ],
+      forbid: appType === 'mob'
+    },
+    {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: setting.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
+      type: 'radio',
+      field: 'layout',
+      label: '鍏冪礌甯冨眬',
+      initval: setting.layout || 'grid',
+      tooltip: '鍒嗙粍涓厓绱犵殑鎺掑垪鏂瑰紡',
+      required: false,
+      options: [
+        {value: 'grid', label: '鏍呮牸甯冨眬'},
+        {value: 'flex', label: '寮规�у竷灞�'},
+      ]
+    },
+    {
       type: 'multiselect',
       field: 'blacklist',
       label: '榛戝悕鍗�',
diff --git a/src/menu/components/module/voucher/index.jsx b/src/menu/components/module/voucher/index.jsx
new file mode 100644
index 0000000..e150d22
--- /dev/null
+++ b/src/menu/components/module/voucher/index.jsx
@@ -0,0 +1,164 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { is, fromJS } from 'immutable'
+import { Popover } from 'antd'
+import { EditOutlined, ToolOutlined, DeleteOutlined, FontColorsOutlined } from '@ant-design/icons'
+
+// import asyncComponent from '@/utils/asyncComponent'
+import asyncIconComponent from '@/utils/asyncIconComponent'
+import MKEmitter from '@/utils/events.js'
+import getWrapForm from './options'
+
+import './index.scss'
+
+const NormalForm = asyncIconComponent(() => import('@/components/normalform'))
+// const NormalHeader = asyncComponent(() => import('@/menu/components/share/normalheader'))
+
+class Voucher extends Component {
+  static propTpyes = {
+    card: PropTypes.object,
+    deletecomponent: PropTypes.func,
+    updateConfig: PropTypes.func,
+  }
+
+  state = {
+    card: null,
+    back: false
+  }
+
+  UNSAFE_componentWillMount () {
+    const { card } = this.props
+
+    if (card.isNew) {
+      let _card = {
+        uuid: card.uuid,
+        type: card.type,
+        tabId: card.tabId || '',
+        parentId: card.parentId || '',
+        dataName: card.dataName || '',
+        format: 'array',    // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
+        pageable: false,    // 缁勪欢灞炴�� - 鏄惁鍙垎椤�
+        switchable: false,  // 缁勪欢灞炴�� - 鏁版嵁鏄惁鍙垏鎹�
+        width: card.width || 12,
+        name: '鍑瘉',
+        subtype: card.subtype,
+        // setting: { interType: 'system' },
+        wrap: { name: '鍑瘉', title: '', width: card.width || 12, type: 'edit' },
+        style: { marginLeft: '8px', marginRight: '8px', marginTop: '8px', marginBottom: '8px' },
+        headerStyle: {},
+        columns: [],
+        scripts: [],
+      }
+      
+      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)
+  }
+
+  changeStyle = () => {
+    const { card } = this.state
+
+    MKEmitter.emit('changeStyle', [card.uuid], ['background', 'border', 'padding', 'margin', 'shadow'], card.style)
+  }
+
+  getStyle = (comIds, style) => {
+    const { card } = this.state
+
+    if (comIds[0] !== card.uuid || comIds.length !== 1) return
+
+    let _card = {...card, style}
+
+    this.setState({
+      card: _card
+    })
+    
+    this.props.updateConfig(_card)
+  }
+
+  /**
+   * @description 鏇存柊鎼滅储鏉′欢閰嶇疆淇℃伅
+   */
+  updateconfig = (config) => {
+    this.setState({
+      card: config
+    })
+    this.props.updateConfig(config)
+  }
+
+  getWrapForms = () => {
+    const { card } = this.state
+
+    return getWrapForm(card.wrap, card.uuid)
+  }
+
+  updateWrap = (res) => {
+    let _card = {...this.state.card, wrap: res}
+    _card.switchable = res.type !== 'edit'
+
+    this.updateComponent(_card)
+  }
+
+  render() {
+    const { card } = this.state
+
+    return (
+      <div className="menu-voucher-box" style={card.style} id={card.uuid}>
+        {/* <NormalHeader 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={800} update={this.updateWrap} getForms={this.getWrapForms}>
+              <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/>
+            </NormalForm>
+            <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle}/>
+            <DeleteOutlined className="close" title="鍒犻櫎缁勪欢" onClick={() => this.props.deletecomponent(card.uuid)} />
+          </div>
+        } trigger="hover">
+          <ToolOutlined />
+        </Popover>
+        <div className="voucher-box">
+          jjj
+        </div>
+      </div>
+    )
+  }
+}
+
+export default Voucher
\ No newline at end of file
diff --git a/src/menu/components/module/voucher/index.scss b/src/menu/components/module/voucher/index.scss
new file mode 100644
index 0000000..c5f6e98
--- /dev/null
+++ b/src/menu/components/module/voucher/index.scss
@@ -0,0 +1,41 @@
+.menu-voucher-box {
+  position: relative;
+  box-sizing: border-box;
+  background: #ffffff;
+  background-position: center center;
+  background-repeat: no-repeat;
+  background-size: cover;
+  min-height: 150px;
+  overflow-y: auto;
+
+  .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);
+  }
+  .empty-content {
+    text-align: center;
+    font-size: 30px;
+    margin: 0;
+    line-height: 90px;
+    color: #bcbcbc;
+  }
+}
+.menu-voucher-box::after {
+  display: block;
+  content: ' ';
+  clear: both;
+}
+.menu-voucher-box:hover {
+  z-index: 1;
+  box-shadow: 0px 0px 4px #1890ff;
+}
+.menu-voucher-box::-webkit-scrollbar {
+  display: none;
+}
+
diff --git a/src/menu/components/module/voucher/options.jsx b/src/menu/components/module/voucher/options.jsx
new file mode 100644
index 0000000..df667c8
--- /dev/null
+++ b/src/menu/components/module/voucher/options.jsx
@@ -0,0 +1,83 @@
+import { fromJS } from 'immutable'
+import MenuUtils from '@/utils/utils-custom.js'
+
+/**
+ * @description Wrap琛ㄥ崟閰嶇疆淇℃伅
+ */
+export default function (wrap, id) {
+  let roleList = sessionStorage.getItem('sysRoles')
+  let appType = sessionStorage.getItem('appType')
+
+  let menu = fromJS(window.GLOB.customMenu).toJS()
+  let modules = MenuUtils.getSupModules(menu.components, id) || []
+
+  if (roleList) {
+    try {
+      roleList = JSON.parse(roleList)
+    } catch (e) {
+      roleList = []
+    }
+  } else {
+    roleList = []
+  }
+
+  const wrapForm = [
+    // {
+    //   type: 'text',
+    //   field: 'title',
+    //   label: '鏍囬',
+    //   initval: wrap.title || '',
+    //   required: false
+    // },
+    {
+      type: 'radio',
+      field: 'type',
+      label: '绫诲瀷',
+      initval: wrap.type || 'edit',
+      required: true,
+      options: [
+        {value: 'edit', label: '缂栬緫'},
+        {value: 'check', label: '鏌ョ湅'},
+      ]
+    },
+    {
+      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: 'cascader',
+      field: 'supModule',
+      label: '涓婄骇缁勪欢',
+      initval: wrap.supModule || [],
+      required: false,
+      options: modules,
+      allowClear: true,
+    },
+    {
+      type: 'multiselect',
+      field: 'blacklist',
+      label: '榛戝悕鍗�',
+      initval: wrap.blacklist || [],
+      required: false,
+      options: roleList,
+      forbid: !!appType
+    },
+  ]
+
+  return wrapForm
+} 
\ No newline at end of file
diff --git a/src/menu/components/search/main-search/dragsearch/card.jsx b/src/menu/components/search/main-search/dragsearch/card.jsx
index 3ab0c51..1508196 100644
--- a/src/menu/components/search/main-search/dragsearch/card.jsx
+++ b/src/menu/components/search/main-search/dragsearch/card.jsx
@@ -69,13 +69,31 @@
   } else if (card.type === 'multiselect' || card.type === 'select' || card.type === 'link') {
     formItem = (<Select value={_defaultValue}></Select>)
   } else if (card.type === 'date') {
-    formItem = (<Input style={{marginTop: '4px'}} placeholder={card.labelShow === 'false' ? card.label : ''} value={card.initval} />)
+    let format = 'YYYY-MM-DD'
+    if (card.precision === 'hour') {
+      format = 'YYYY-MM-DD HH'
+    } else if (card.precision === 'minute') {
+      format = 'YYYY-MM-DD HH:mm'
+    } else if (card.precision === 'second') {
+      format = 'YYYY-MM-DD HH:mm:ss'
+    }
+    formItem = (<DatePicker format={format} value={card.initval ? moment().subtract(card.initval, 'days') : null} />)
   } else if (card.type === 'dateweek') {
     formItem = (<WeekPicker value={card.initval ? moment().subtract(card.initval * 7, 'days') : null} />)
   } else if (card.type === 'datemonth') {
     formItem = (<MonthPicker value={card.initval ? moment().subtract(card.initval, 'month') : null} />)
   } else if (card.type === 'daterange') {
+    let format = 'YYYY-MM-DD'
+    if (card.precision === 'hour') {
+      format = 'YYYY-MM-DD HH'
+    } else if (card.precision === 'minute') {
+      format = 'YYYY-MM-DD HH:mm'
+    } else if (card.precision === 'second') {
+      format = 'YYYY-MM-DD HH:mm:ss'
+    }
+    
     formItem = (<RangePicker
+      format={format}
       className="data-range"
       placeholder={['BeginTime', 'EndTime']}
       renderExtraFooter={() => 'extra footer'}
diff --git a/src/menu/components/search/main-search/dragsearch/index.jsx b/src/menu/components/search/main-search/dragsearch/index.jsx
index 36b39dc..0d48039 100644
--- a/src/menu/components/search/main-search/dragsearch/index.jsx
+++ b/src/menu/components/search/main-search/dragsearch/index.jsx
@@ -50,6 +50,13 @@
     let _val = fromJS(copycard).toJS()
 
     try {
+      delete _val.$srcId
+    
+      let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+      if (srcid) {
+        _val.$srcId = srcid
+      }
+      
       _val.uuid = Utils.getuuid()
       _val = window.btoa(window.encodeURIComponent(JSON.stringify(_val)))
     } catch (e) {
diff --git a/src/menu/components/search/main-search/index.jsx b/src/menu/components/search/main-search/index.jsx
index 618db11..c44b673 100644
--- a/src/menu/components/search/main-search/index.jsx
+++ b/src/menu/components/search/main-search/index.jsx
@@ -53,7 +53,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         width: 24,
diff --git a/src/menu/components/search/main-search/options.jsx b/src/menu/components/search/main-search/options.jsx
index 996e994..117f5ff 100644
--- a/src/menu/components/search/main-search/options.jsx
+++ b/src/menu/components/search/main-search/options.jsx
@@ -70,6 +70,18 @@
       ]
     },
     {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'multiselect',
       field: 'blacklist',
       label: '榛戝悕鍗�',
diff --git a/src/menu/components/share/actioncomponent/actionform/index.jsx b/src/menu/components/share/actioncomponent/actionform/index.jsx
index d9bb436..ce4fea6 100644
--- a/src/menu/components/share/actioncomponent/actionform/index.jsx
+++ b/src/menu/components/share/actioncomponent/actionform/index.jsx
@@ -11,8 +11,8 @@
 const { TextArea } = Input
 const MkEditIcon = asyncComponent(() => import('@/components/mkIcon'))
 const acTyOptions = {
-  pop: ['label', 'OpenType', 'intertype', 'Ot', 'show', 'swipe', 'icon', 'class', 'color', 'execSuccess', 'execError', 'resetPageIndex', 'syncComponent', 'switchTab', 'width', 'openmenu', 'open', 'refreshTab'],
-  prompt: ['label', 'OpenType', 'intertype', 'Ot', 'show', 'swipe', 'icon', 'class', 'color', 'execSuccess', 'execError', 'resetPageIndex', 'syncComponent', 'switchTab', 'width', 'openmenu', 'open', 'refreshTab'],
+  pop: ['label', 'OpenType', 'intertype', 'Ot', 'show', 'swipe', 'icon', 'class', 'color', 'execSuccess', 'execError', 'resetPageIndex', 'syncComponent', 'switchTab', 'width', 'openmenu', 'open', 'refreshTab', 'position', 'tipTitle'],
+  prompt: ['label', 'OpenType', 'intertype', 'Ot', 'show', 'swipe', 'icon', 'class', 'color', 'execSuccess', 'execError', 'resetPageIndex', 'syncComponent', 'switchTab', 'width', 'openmenu', 'open', 'refreshTab', 'position', 'tipTitle'],
   exec: ['label', 'OpenType', 'intertype', 'Ot', 'show', 'swipe', 'icon', 'class', 'color', 'execSuccess', 'execError', 'resetPageIndex', 'syncComponent', 'switchTab', 'width', 'openmenu', 'open', 'refreshTab'],
   excelIn: ['label', 'Ot', 'OpenType', 'intertype', 'show', 'icon', 'class', 'color', 'sheet', 'execSuccess', 'execError', 'resetPageIndex', 'syncComponent', 'switchTab', 'width'],
   excelOut: ['label', 'OpenType', 'intertype', 'show', 'icon', 'class', 'color', 'execSuccess', 'execError', 'syncComponent', 'switchTab', 'resetPageIndex', 'pagination', 'search', 'width'],
@@ -198,9 +198,9 @@
       } else {
         reOptions.sqlType = this.state.insertUpdateOptions
       }
-      if (this.record.execSuccess === 'goback') {
+      // if (this.record.execSuccess === 'goback') {
         shows.push('reload')
-      }
+      // }
     } else if (openType === 'form') {
       let intertype = this.record.intertype
 
@@ -296,7 +296,11 @@
       if (this.record.pageTemplate === 'custom') {
         shows.push('url', 'joint')
       } else if (this.record.pageTemplate === 'linkpage') {
-        shows.push('linkmenu', 'joint')
+        shows.push('linkmenu')
+
+        if (Ot === 'requiredSgl') {
+          shows.push('joint')
+        }
 
         reRequired.linkmenu = true
         reTooltip.linkmenu = ''
@@ -340,6 +344,8 @@
         reTooltip.linkmenu = '浣跨敤鎵爜鐧诲綍鍔熻兘鎴栬彍鍗曡烦杞姛鑳芥椂锛岄渶閫夋嫨璺宠浆鐨勮彍鍗曘��'
       } else if (_funcType === 'goBack') {
         shows.push('reload')
+      // } else if (_funcType === 'megvii') {
+      //   shows.push('subFunc')
       }
     }
     
@@ -353,6 +359,9 @@
         ]
         if (this.record.control) {
           shows.push('controlField', 'controlVal')
+        }
+        if (this.record.control === 'disabled') {
+          shows.push('reason')
         }
       }
     } else {
@@ -377,6 +386,9 @@
       }
       if (this.record.control) {
         shows.push('controlField', 'controlVal')
+      }
+      if (this.record.control === 'disabled') {
+        shows.push('reason')
       }
     }
 
@@ -635,25 +647,42 @@
           { required: item.required, message: dict['form.required.input'] + item.label + '!' }
         ]
 
-        content = <InputNumber min={item.min} max={item.max} precision={item.precision} />
+        content = <InputNumber min={item.min} max={item.max} precision={item.precision} onPressEnter={this.handleSubmit}/>
       } else if (item.type === 'select') {
         rules = [
           { required: item.required, message: dict['form.required.select'] + item.label + '!' }
         ]
 
-        content = <Select
-          showSearch
-          allowClear={item.allowClear === true}
-          filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
-          onChange={(value) => {this.optionChange(item.key, value)}}
-          getPopupContainer={() => document.getElementById('winter')}
-        >
-          {item.options.map((option, index) =>
-            <Select.Option key={index} value={(option.value || option.field)}>
-              {(option.text || option.label)}
-            </Select.Option>
-          )}
-        </Select>
+        if (item.extendName) {
+          content = <Select
+            showSearch
+            allowClear={item.allowClear === true}
+            filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0 ||
+              option.props.extend.toLowerCase().indexOf(input.toLowerCase()) >= 0}
+            onChange={(value) => {this.optionChange(item.key, value)}}
+            getPopupContainer={() => document.getElementById('winter')}
+          >
+            {item.options.map((option, index) =>
+              <Select.Option key={index} extend={option[item.extendName] || ''} value={(option.value || option.field)}>
+                {(option.text || option.label)}
+              </Select.Option>
+            )}
+          </Select>
+        } else {
+          content = <Select
+            showSearch
+            allowClear={item.allowClear === true}
+            filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
+            onChange={(value) => {this.optionChange(item.key, value)}}
+            getPopupContainer={() => document.getElementById('winter')}
+          >
+            {item.options.map((option, index) =>
+              <Select.Option key={index} value={(option.value || option.field)}>
+                {(option.text || option.label)}
+              </Select.Option>
+            )}
+          </Select>
+        }
       } else if (item.type === 'radio') {
         rules = [
           { required: item.required, message: dict['form.required.select'] + item.label + '!' }
diff --git a/src/menu/components/share/actioncomponent/dragaction/card.jsx b/src/menu/components/share/actioncomponent/dragaction/card.jsx
index d9219b1..2e38f86 100644
--- a/src/menu/components/share/actioncomponent/dragaction/card.jsx
+++ b/src/menu/components/share/actioncomponent/dragaction/card.jsx
@@ -1,7 +1,7 @@
 import React from 'react'
 import { useDrag, useDrop } from 'react-dnd'
 import { Button, Popover } from 'antd'
-import { CopyOutlined, EditOutlined, FontColorsOutlined, CloseOutlined, ProfileOutlined } from '@ant-design/icons'
+import { CopyOutlined, EditOutlined, FontColorsOutlined, CloseOutlined, ProfileOutlined, WarningOutlined } from '@ant-design/icons'
 
 import MkIcon from '@/components/mk-icon'
 import { resetStyle } from '@/utils/utils-custom.js'
@@ -48,6 +48,10 @@
     _class = 'swiper swiper-' + card.color
     show = 'button'
   }
+  let warning = null
+  if (card.OpenType === 'innerpage' && !card.pageTemplate) {
+    warning = <WarningOutlined style={{color: 'orange', marginLeft: '5px'}}/>
+  }
 
   if (show === 'icon') {
     btnElement = (
@@ -56,7 +60,7 @@
         style={_style}
         className={_class}
         onDoubleClick={() => doubleClickCard(id)}
-      >{card.icon ? <MkIcon type={card.icon}/> : card.label}</Button>
+      >{card.icon ? <MkIcon type={card.icon}/> : card.label}{warning}</Button>
     )
   } else if (show === 'link') {
     btnElement = (
@@ -65,7 +69,7 @@
         style={_style}
         className={_class}
         onDoubleClick={() => doubleClickCard(id)}
-      >{card.label}{card.icon ? <MkIcon type={card.icon}/> : null}</Button>
+      >{card.label}{card.icon ? <MkIcon type={card.icon}/> : null}{warning}</Button>
     )
   } else {
     btnElement = (
@@ -74,7 +78,7 @@
         className={_class}
         onDoubleClick={() => doubleClickCard(id)}
       >
-        <MkIcon type={card.icon}/>{card.label}
+        <MkIcon type={card.icon}/>{card.label}{warning}
       </Button>
     )
   }
diff --git a/src/menu/components/share/actioncomponent/dragaction/index.jsx b/src/menu/components/share/actioncomponent/dragaction/index.jsx
index e834be6..13bbd48 100644
--- a/src/menu/components/share/actioncomponent/dragaction/index.jsx
+++ b/src/menu/components/share/actioncomponent/dragaction/index.jsx
@@ -74,6 +74,13 @@
     copycard.originCard = card
 
     try {
+      delete _val.$srcId
+    
+      let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+      if (srcid) {
+        _val.$srcId = srcid
+      }
+      
       _val = window.btoa(window.encodeURIComponent(JSON.stringify(_val)))
     } catch (e) {
       console.warn('Stringify Failure')
diff --git a/src/menu/components/share/actioncomponent/formconfig.jsx b/src/menu/components/share/actioncomponent/formconfig.jsx
index 2516398..171b5ef 100644
--- a/src/menu/components/share/actioncomponent/formconfig.jsx
+++ b/src/menu/components/share/actioncomponent/formconfig.jsx
@@ -63,17 +63,17 @@
     })
   }
 
-  if (type === 'editable') {
-    opentypes = [
-      {
-        value: 'excelIn',
-        text: Formdict['model.form.excelIn']
-      }, {
-        value: 'excelOut',
-        text: Formdict['model.form.excelOut']
-      }
-    ]
-  }
+  // if (type === 'editable') {
+  //   opentypes = [
+  //     {
+  //       value: 'excelIn',
+  //       text: Formdict['model.form.excelIn']
+  //     }, {
+  //       value: 'excelOut',
+  //       text: Formdict['model.form.excelOut']
+  //     }
+  //   ]
+  // }
 
   let tabs = getTabs(JSON.parse(JSON.stringify(modules)))
 
@@ -109,8 +109,10 @@
       { value: 'logout', text: '閫�鍑�' },
       { value: 'mkBinding', text: '寮�閫氭壂鐮佺櫥褰�' },
       { value: 'mkUnBinding', text: '鐢ㄦ埛瑙g粦' },
+      { value: 'mkUnsubscribe', text: '娉ㄩ攢璐︽埛' },
       { value: 'reAuth', text: '鍒囨崲绯荤粺锛堟竻绌虹紦瀛�-灏忕▼搴忥級' },
       { value: 'goBack', text: '杩斿洖' },
+      // { value: 'megvii', text: '鏃疯闈㈡澘鏈�' },
     ]
     pageTemps = [
       { value: 'linkpage', text: '鍏宠仈鑿滃崟' },
@@ -149,7 +151,7 @@
   if (type === 'card') {
     opentypes.push({
       value: 'form',
-      text: '琛ㄥ崟'
+      text: '琛ㄥ崟锛堝紑鍏虫垨鍕鹃�夋锛�'
     })
   }
 
@@ -177,6 +179,16 @@
       required: true,
       options: funTypes
     },
+    // {
+    //   type: 'select',
+    //   key: 'subFunc',
+    //   label: '鎺ュ彛鍚嶇О',
+    //   initVal: card.subFunc || '',
+    //   required: true,
+    //   options: [
+    //     { value: 'login', text: '鐧诲綍' }
+    //   ]
+    // },
     {
       type: 'radio',
       key: 'formType',
@@ -283,6 +295,7 @@
       label: '鍏宠仈鑿滃崟',
       initVal: card.linkmenu || (isApp ? '' : []),
       required: true,
+      extendName: 'MenuNo',
       options: isApp ? appMenus : menulist
     },
     {
@@ -399,18 +412,18 @@
       type: 'select',
       key: 'execSuccess',
       label: Formdict['model.form.afterSuccess'],
-      initVal: card.execSuccess || 'never',
-      tooltip: refresh.length ? '鎵ц鍒锋柊婧愮粍浠舵椂锛岃鍦ㄦ簮鎸夐挳涓缃叧闂悗鍒锋柊閭d竴椤癸紝娉細姝ゆ椂浼氬悓姝ュ埛鏂板綋鍓嶇粍浠跺拰涓婄骇缁勪欢-琛屻��' : '鍒锋柊涓婄骇缁勪欢-琛屾椂锛屼細鍚屾鍒锋柊褰撳墠缁勪欢锛屾敞锛氫笂绾х粍浠跺湪鏁版嵁婧愪腑娣诲姞銆�',
+      initVal: card.execSuccess || 'grid',
+      tooltip: refresh.length ? '鎵ц鍒锋柊婧愮粍浠舵椂锛岃鍦ㄦ簮鎸夐挳涓缃叧闂悗鍒锋柊閭d竴椤癸紝娉細姝ゆ椂浼氬悓姝ュ埛鏂板綋鍓嶇粍浠跺拰涓婄骇缁勪欢-琛屻��' : '閫夋嫨鍒锋柊琛屾椂锛屽鏋滈�夋嫨澶氭潯鏁版嵁浼氬埛鏂拌〃鏍笺�傛敞锛氫笂绾х粍浠跺湪鏁版嵁婧愪腑娣诲姞銆�',
       required: true,
       options: [{
         value: 'never',
         text: Formdict['header.form.refresh.never']
       }, {
-        value: 'grid',
-        text: '鍒锋柊褰撳墠缁勪欢'
-      }, {
         value: 'line',
         text: '鍒锋柊琛�'
+      }, {
+        value: 'grid',
+        text: '鍒锋柊褰撳墠缁勪欢'
       }, {
         value: 'mainline',
         text: '鍒锋柊涓婄骇缁勪欢 - 琛�'
@@ -425,17 +438,17 @@
       key: 'execError',
       label: Formdict['model.form.afterError'],
       initVal: card.execError || 'never',
-      tooltip: refresh.length ? '鎵ц鍒锋柊婧愮粍浠舵椂锛岃鍦ㄦ簮鎸夐挳涓缃叧闂悗鍒锋柊閭d竴椤癸紝娉細姝ゆ椂浼氬悓姝ュ埛鏂板綋鍓嶇粍浠跺拰涓婄骇缁勪欢-琛屻��' : '鍒锋柊涓婄骇缁勪欢-琛屾椂锛屼細鍚屾鍒锋柊褰撳墠缁勪欢锛屾敞锛氫笂绾х粍浠跺湪鏁版嵁婧愪腑娣诲姞銆�',
+      tooltip: refresh.length ? '鎵ц鍒锋柊婧愮粍浠舵椂锛岃鍦ㄦ簮鎸夐挳涓缃叧闂悗鍒锋柊閭d竴椤癸紝娉細姝ゆ椂浼氬悓姝ュ埛鏂板綋鍓嶇粍浠跺拰涓婄骇缁勪欢-琛屻��' : '閫夋嫨鍒锋柊琛屾椂锛屽鏋滈�夋嫨澶氭潯鏁版嵁浼氬埛鏂拌〃鏍硷紝娉細涓婄骇缁勪欢鍦ㄦ暟鎹簮涓坊鍔犮��',
       required: true,
       options: [{
         value: 'never',
         text: Formdict['header.form.refresh.never']
       }, {
-        value: 'grid',
-        text: '鍒锋柊褰撳墠缁勪欢'
-      }, {
         value: 'line',
         text: '鍒锋柊琛�'
+      }, {
+        value: 'grid',
+        text: '鍒锋柊褰撳墠缁勪欢'
       }, {
         value: 'mainline',
         text: '鍒锋柊涓婄骇缁勪欢 - 琛�'
@@ -649,17 +662,25 @@
       initVal: card.openmenu || (!appType ? [] : ''),
       required: false,
       allowClear: true,
-      options: appType === 'mob' ? [...appMenus, {value: 'goback', text: '杩斿洖'}] : (appType === 'pc' ? appMenus : menulist),
+      options: appType === 'mob' ? [...appMenus, {value: 'goback', text: '杩斿洖锛堜笂涓�椤碉級'}] : (appType === 'pc' ? appMenus : menulist),
       forbid: viewType === 'popview'
     },
     {
       type: 'text',
       key: 'output',
       label: '杩斿洖鍊�',
-      tooltip: '鎵ц鎴愬姛鍚庣殑杩斿洖鍊笺��',
+      tooltip: '鎵ц鎴愬姛鍚庣殑杩斿洖鍊笺�備緥濡傦細@id',
       initVal: card.output || '',
       required: false,
       forbid: viewType === 'popview'
+    },
+    {
+      type: 'text',
+      key: 'tipTitle',
+      label: '纭鎻愮ず',
+      initVal: card.tipTitle || '',
+      tooltip: '娉細寮圭獥锛堣〃鍗曪級鍦ㄦ樉绀轰负鏄惁妗嗘椂鏈夋晥銆�',
+      required: false
     },
     {
       type: 'radio',
@@ -738,9 +759,9 @@
     {
       type: 'radio',
       key: 'reload',
-      label: '杩斿洖鍚�',
+      label: '涓婁竴椤�',
       initVal: card.reload || 'false',
-      tooltip: '杩斿洖鍚庢槸鍚﹀埛鏂版暟鎹�傛敞锛氬湪鏄庣浜慉PP鎴栧皬绋嬪簭涓湁鏁堛��',
+      tooltip: '鎴愬姛鍚庢槸鍚﹀埛鏂颁笂椤电殑鏁版嵁銆傛敞锛氬湪鏄庣浜慉PP鎴栧皬绋嬪簭涓湁鏁堛��',
       forbid: appType !== 'mob',
       options: [{
         value: 'false',
@@ -748,6 +769,22 @@
       }, {
         value: 'true',
         text: '鍒锋柊'
+      }]
+    },
+    {
+      type: 'radio',
+      key: 'position',
+      label: '鏄剧ず浣嶇疆',
+      initVal: card.position || 'middle',
+      tooltip: '娉細寮圭獥锛堣〃鍗曪級鍦ㄦ樉绀轰负鏄惁妗嗘椂鏈夋晥銆�',
+      required: false,
+      forbid: appType !== 'mob',
+      options: [{
+        value: 'middle',
+        text: '涓儴'
+      }, {
+        value: 'bottom',
+        text: '搴曢儴'
       }]
     },
     {
@@ -788,6 +825,13 @@
       required: false
     },
     {
+      type: 'text',
+      key: 'reason',
+      label: '绂佺敤鍘熷洜',
+      initVal: card.reason || '',
+      required: false
+    },
+    {
       type: 'splitLine',
       key: 'title',
       label: '琛ㄥ崟',
@@ -807,9 +851,12 @@
       label: '寮�鍏冲昂瀵�',
       initVal: card.size || 'default',
       options: [{
-        value: 'default',
+        value: 'large',
         text: '澶�'
       }, {
+        value: 'default',
+        text: '涓�'
+      }, {
         value: 'small',
         text: '灏�'
       }]
diff --git a/src/menu/components/share/actioncomponent/index.jsx b/src/menu/components/share/actioncomponent/index.jsx
index a924679..6f5275c 100644
--- a/src/menu/components/share/actioncomponent/index.jsx
+++ b/src/menu/components/share/actioncomponent/index.jsx
@@ -410,8 +410,6 @@
 
     if (element.OpenType === 'pop' || element.OpenType === 'popview' || element.execMode === 'pop') {
       this.props.setSubConfig(element)
-    } else if (element.OpenType === 'innerpage' && element.pageTemplate === 'page') {
-      MKEmitter.emit('changeEditMenu', {MenuID: element.uuid, copyMenuId: element.copyMenuId})
     } else if (element.OpenType === 'innerpage' && element.pageTemplate === 'linkpage') {
       MKEmitter.emit('changeEditMenu', {MenuID: element.linkmenu})
     } else {
@@ -467,7 +465,8 @@
         />
         {/* 缂栬緫鎸夐挳锛氬鍒躲�佺紪杈� */}
         <Modal
-          title={dict['model.action'] + '-' + (card && card.copyType === 'action' ? dict['model.copy'] : dict['model.edit'])}
+          // title={dict['model.action'] + '-' + (card && card.copyType === 'action' ? dict['model.copy'] : dict['model.edit'])}
+          title="鎸夐挳路缂栬緫"
           visible={visible}
           width={850}
           maskClosable={false}
@@ -493,7 +492,7 @@
           wrapClassName="model-table-action-verify-modal"
           title={(card && card.label ? card.label + ' - ' : '') + '楠岃瘉淇℃伅'}
           visible={profVisible}
-          width={'75vw'}
+          width={'90vw'}
           maskClosable={false}
           okText={dict['model.submit']}
           onOk={this.verifySubmit}
diff --git a/src/menu/components/share/copycomponent/index.jsx b/src/menu/components/share/copycomponent/index.jsx
index 2ed4914..74bacff 100644
--- a/src/menu/components/share/copycomponent/index.jsx
+++ b/src/menu/components/share/copycomponent/index.jsx
@@ -13,13 +13,18 @@
 
   trigger = () => {
     const { card, type } = this.props
-    let copycard = fromJS(card).toJS()
-    copycard.copyType = type
-
-    let _val = ''
+    let _val = fromJS(card).toJS()
+    _val.copyType = type
 
     try {
-      _val = window.btoa(window.encodeURIComponent(JSON.stringify(copycard)))
+      delete _val.$srcId
+    
+      let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+      if (srcid) {
+        _val.$srcId = srcid
+      }
+
+      _val = window.btoa(window.encodeURIComponent(JSON.stringify(_val)))
     } catch (e) {
       message.warning('澶嶅埗澶辫触锛岃閲嶈瘯锛�')
       _val = ''
diff --git a/src/menu/components/share/normalheader/index.jsx b/src/menu/components/share/normalheader/index.jsx
index 72a5d5e..802787f 100644
--- a/src/menu/components/share/normalheader/index.jsx
+++ b/src/menu/components/share/normalheader/index.jsx
@@ -53,7 +53,7 @@
   changeStyle = () => {
     const { config } = this.props
 
-    let options = ['font', 'border']
+    let options = ['font', 'border', 'background']
     if (config.type === 'menubar') {
       options.push('padding')
     }
diff --git a/src/menu/components/share/searchcomponent/dragsearch/card.jsx b/src/menu/components/share/searchcomponent/dragsearch/card.jsx
index 19b27ed..f6f78e3 100644
--- a/src/menu/components/share/searchcomponent/dragsearch/card.jsx
+++ b/src/menu/components/share/searchcomponent/dragsearch/card.jsx
@@ -58,6 +58,56 @@
     }
   }
 
+  let formItem = null
+  if (card.type === 'text') {
+    if (card.inputType !== 'search') {
+      formItem = <Input placeholder={card.label} value={card.initval} />
+    } else {
+      formItem = <Search placeholder={card.label} value={card.initval} enterButton/>
+    }
+
+  } else if (card.type === 'multiselect' || card.type === 'select' || card.type === 'link') {
+    formItem = <Select placeholder={card.label} value={_defaultValue}></Select>
+  } else if (card.type === 'date') {
+    let format = 'YYYY-MM-DD'
+    if (card.precision === 'hour') {
+      format = 'YYYY-MM-DD HH'
+    } else if (card.precision === 'minute') {
+      format = 'YYYY-MM-DD HH:mm'
+    } else if (card.precision === 'second') {
+      format = 'YYYY-MM-DD HH:mm:ss'
+    }
+    formItem = <DatePicker format={format} placeholder={card.label} value={card.initval ? moment().subtract(card.initval, 'days') : null} />
+  } else if (card.type === 'dateweek') {
+    formItem = <WeekPicker placeholder={card.label} value={card.initval ? moment().subtract(card.initval * 7, 'days') : null} />
+  } else if (card.type === 'datemonth') {
+    formItem = <MonthPicker placeholder={card.label} value={card.initval ? moment().subtract(card.initval, 'month') : null} />
+  } else if (card.type === 'daterange') {
+    let format = 'YYYY-MM-DD'
+    if (card.precision === 'hour') {
+      format = 'YYYY-MM-DD HH'
+    } else if (card.precision === 'minute') {
+      format = 'YYYY-MM-DD HH:mm'
+    } else if (card.precision === 'second') {
+      format = 'YYYY-MM-DD HH:mm:ss'
+    }
+
+    formItem = <RangePicker
+      format={format}
+      className="data-range"
+      placeholder={['BeginTime', 'EndTime']}
+      renderExtraFooter={() => 'extra footer'}
+      value={_defaultValue}
+    />
+  } else if (card.type === 'group') {
+    formItem = <DateGroup card={card} />
+  }
+
+  let labelwidth = card.labelwidth || 33.3
+  if (card.labelShow === 'false') {
+    labelwidth = 0
+  }
+
   return (
     <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
       <div className="mk-popover-control">
@@ -69,38 +119,14 @@
       <div className={'page-card ' + (card.labelShow || '')} style={{ opacity: opacity}}>
         <div ref={node => drag(drop(node))}>
           <Form.Item
-            labelCol={{xs: { span: 24 }, sm: { span: 8 }}}
-            wrapperCol = {{xs: { span: 24 }, sm: { span: 16 }}}
+            labelCol={{style: {width: labelwidth + '%'}}}
+            wrapperCol={{style: {width: (100 - labelwidth) + '%'}}}
+            // labelCol={{xs: { span: 24 }, sm: { span: 8 }}}
+            // wrapperCol = {{xs: { span: 24 }, sm: { span: 16 }}}
             label={card.labelShow !== 'false' ? card.label : ''}
             required={card.required === 'true'}
           >
-            {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
-            }
-            {card.type === 'date' ?
-              <DatePicker placeholder={card.label} value={card.initval ? moment().subtract(card.initval, 'days') : null} /> : null
-            }
-            {card.type === 'dateweek' ?
-              <WeekPicker placeholder={card.label} value={card.initval ? moment().subtract(card.initval * 7, 'days') : null} /> : null
-            }
-            {card.type === 'datemonth' ?
-              <MonthPicker placeholder={card.label} value={card.initval ? moment().subtract(card.initval, 'month') : null} /> : null
-            }
-            {card.type === 'daterange' ?
-              <RangePicker
-                className="data-range"
-                placeholder={['BeginTime', 'EndTime']}
-                renderExtraFooter={() => 'extra footer'}
-                value={_defaultValue}
-              /> : null
-            }
-            {card.type === 'group' ? <DateGroup card={card} /> : null }
+            {formItem}
           </Form.Item>
         </div>
       </div>
diff --git a/src/menu/components/share/searchcomponent/dragsearch/index.jsx b/src/menu/components/share/searchcomponent/dragsearch/index.jsx
index 36d7603..a5013eb 100644
--- a/src/menu/components/share/searchcomponent/dragsearch/index.jsx
+++ b/src/menu/components/share/searchcomponent/dragsearch/index.jsx
@@ -44,6 +44,13 @@
     let _val = fromJS(copycard).toJS()
 
     try {
+      delete _val.$srcId
+    
+      let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+      if (srcid) {
+        _val.$srcId = srcid
+      }
+      
       _val.uuid = Utils.getuuid()
       _val = window.btoa(window.encodeURIComponent(JSON.stringify(_val)))
     } catch (e) {
diff --git a/src/menu/components/share/searchcomponent/index.scss b/src/menu/components/share/searchcomponent/index.scss
index 8effaa7..fccf1bf 100644
--- a/src/menu/components/share/searchcomponent/index.scss
+++ b/src/menu/components/share/searchcomponent/index.scss
@@ -1,7 +1,7 @@
 .model-custom-header-search-list {
   padding: 0px;
 
-  .ant-row .ant-col {
+  .ant-row >.ant-col {
     float: right;
     padding: 0 6px;
   }
@@ -49,6 +49,12 @@
       opacity: 0;
       z-index: 2;
     }
+    .ant-form-item-label {
+      float: left;
+    }
+    .ant-form-item-control-wrapper {
+      float: left;
+    }
   }
   .page-card.false {
     .ant-form-item-label {
diff --git a/src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx b/src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx
index dc695ac..adbb88b 100644
--- a/src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx
+++ b/src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx
@@ -48,8 +48,16 @@
 
   let editCols = [
     {
+      field: '$sub',
+      label: '鎻愪氦'
+    },
+    {
       field: '$next',
       label: '涓嬩竴琛�'
+    },
+    {
+      field: '$noAct',
+      label: '鏃犲姩浣�'
     }
   ]
   columns.forEach(col => {
@@ -90,7 +98,7 @@
       key: 'Width',
       min: 20,
       max: 1000,
-      decimal: 0,
+      precision: 0,
       label: Formdict['model.form.columnWidth'],
       initVal: card.Width || 120,
       required: true
@@ -115,7 +123,6 @@
       label: Formdict['model.sort'],
       initVal: card.IsSort || 'false',
       required: true,
-      forbidden: card.isSub,
       options: [{
         value: 'true',
         text: Formdict['model.true']
@@ -172,6 +179,153 @@
     },
     {
       type: 'radio',
+      key: 'editType',
+      label: '缂栬緫绫诲瀷',
+      initVal: card.editType || 'text',
+      required: true,
+      options: [{
+        value: 'text',
+        text: '鏂囨湰'
+      }, {
+        value: 'select',
+        text: '涓嬫媺'
+      }, {
+        value: 'switch',
+        text: '寮�鍏�'
+      }]
+    },
+    {
+      type: 'text',
+      key: 'initval',
+      label: '榛樿鍊�',
+      initVal: card.initval,
+      tooltip: '浣跨敤$copy鏃讹紝琛ㄧず鏂板鏃跺鍒朵笂涓�琛屼俊鎭��',
+      required: false
+    },
+    {
+      type: 'text',
+      key: 'openVal',
+      label: '寮�鍚��',
+      initVal: card.openVal || '',
+      required: false
+    },
+    {
+      type: 'text',
+      key: 'closeVal',
+      label: '鍏抽棴鍊�',
+      initVal: card.closeVal || '',
+      required: false
+    },
+    {
+      type: 'text',
+      key: 'openText',
+      label: '寮�鍚彁绀�',
+      initVal: card.openText || '',
+      required: false
+    },
+    {
+      type: 'text',
+      key: 'closeText',
+      label: '鍏抽棴鎻愮ず',
+      initVal: card.closeText || '',
+      required: false
+    },
+    {
+      type: 'radio',
+      key: 'resourceType',
+      label: '閫夐」鏉ユ簮',
+      initVal: card.resourceType || '0',
+      required: true,
+      options: [{
+        value: '0',
+        text: '鑷畾涔�'
+      }, {
+        value: '1',
+        text: '鏁版嵁婧�'
+      }]
+    },
+    {
+      type: 'select',
+      key: 'editField',
+      label: '缂栬緫瀛楁',
+      initVal: card.editField || '',
+      tooltip: '褰撳�间笌鎻愮ず鏂囧瓧涓嶅悓鏃讹紝鍙澶栨坊鍔犵紪杈戝瓧娈碉紝浣滀负瀹為檯鍊肩殑褰曞叆瀛楁銆�',
+      allowClear: true,
+      required: false,
+      options: fields
+    },
+    {
+      type: 'options',
+      key: 'options',
+      label: '閫夐」',
+      initVal: card.options || [],
+      required: true,
+    },
+    {
+      type: 'codemirror',
+      key: 'dataSource',
+      label: '鏁版嵁婧�',
+      initVal: card.dataSource || '',
+      required: true,
+    },
+    {
+      type: 'text',
+      key: 'valueField',
+      label: '鍊悸峰瓧娈�',
+      initVal: card.valueField || '',
+      required: true,
+    },
+    {
+      type: 'text',
+      key: 'valueText',
+      label: '鏂囨湰路瀛楁',
+      initVal: card.valueText || '',
+      required: true,
+    },
+    {
+      type: 'text',
+      key: 'orderBy',
+      label: '鎺掑簭路瀛楁',
+      initVal: card.orderBy || '',
+      required: false,
+    },
+    {
+      type: 'select',
+      key: 'orderType',
+      label: '鎺掑簭鏂瑰紡',
+      initVal: card.orderType || 'asc',
+      options: [{
+        value: 'asc',
+        text: Formdict['header.form.asc']
+      }, {
+        value: 'desc',
+        text: Formdict['header.form.desc']
+      }]
+    },
+    {
+      type: 'text',
+      key: 'disableField',
+      label: '绂佺敤路瀛楁',
+      initVal: card.disableField || '',
+      tooltip: '璁剧疆绂佺敤瀛楁锛屼笖瀛楁鍊间负true鏃讹紝閫夐」涓嶅彲閫夈��',
+      required: false,
+    },
+    {
+      type: 'radio',
+      key: 'dropdown',
+      label: '涓嬫媺瀹藉害',
+      initVal: card.dropdown || 'flex',
+      required: false,
+      options: [{
+        value: 'flex',
+        text: '鑷�傚簲'
+      }, {
+        value: 'fixed',
+        text: '瀹氬'
+      }]
+    },
+    {
+      type: 'radio',
       key: 'required',
       label: '蹇呭~',
       initVal: card.required || 'false',
@@ -185,43 +339,49 @@
       }]
     },
     {
-      type: 'text',
-      key: 'initval',
-      label: '榛樿鍊�',
-      initVal: card.initval,
-      tooltip: '浣跨敤$copy鏃讹紝琛ㄧず鏂板鏃跺鍒朵笂涓�琛屼俊鎭��',
-      required: false
+      type: 'radio',
+      key: 'database',
+      label: '鏁版嵁搴�',
+      initVal: card.database || 'local',
+      options: [{
+        value: 'local',
+        text: '鏈湴'
+      }, {
+        value: 'sso',
+        text: '绯荤粺'
+      }]
     },
     {
       type: 'select',
       key: 'enter',
       label: '鍥炶溅鍒囨崲',
       initVal: card.enter || '$next',
+      tooltip: '鍖呮嫭鏂囨湰鎴栨暟鍊煎洖杞︿簨浠躲�佷笅鎷夎彍鍗曢�変腑浜嬩欢銆佸紑鍏冲垏鎹簨浠躲��',
       options: editCols
     },
-    {
-      type: 'radio',
-      key: 'footEnter',
-      label: '鏈鍥炶溅',
-      initVal: card.footEnter || 'false',
-      tooltip: '鏂板鍔熻兘浠呭湪琛ㄦ牸鍙柊澧炴椂鏈夋晥銆�',
-      options: [{
-        value: 'sub',
-        text: '鎻愪氦'
-      }, {
-        value: 'add',
-        text: '鏂板'
-      }, {
-        value: 'false',
-        text: '鏃犲姩浣�'
-      }]
-    },
+    // {
+    //   type: 'radio',
+    //   key: 'footEnter',
+    //   label: '鏈鍥炶溅',
+    //   initVal: card.footEnter || 'false',
+    //   tooltip: '鏂板鍔熻兘浠呭湪琛ㄦ牸鍙柊澧炴椂鏈夋晥銆�',
+    //   options: [{
+    //     value: 'sub',
+    //     text: '鎻愪氦'
+    //   }, {
+    //     value: 'add',
+    //     text: '鏂板'
+    //   }, {
+    //     value: 'false',
+    //     text: '鏃犲姩浣�'
+    //   }]
+    // },
     {
       type: 'number',
       key: 'decimal',
       min: 0,
       max: 18,
-      decimal: 0,
+      precision: 0,
       label: Formdict['header.form.decimal'],
       initVal: card.decimal || 0,
       required: true
@@ -285,7 +445,6 @@
       label: Formdict['header.form.prefix'],
       initVal: card.prefix || '',
       required: false,
-      readonly: false
     },
     {
       type: 'text',
@@ -293,7 +452,6 @@
       label: Formdict['header.form.postfix'],
       initVal: card.postfix || '',
       required: false,
-      readonly: false
     },
     {
       type: 'radio',
@@ -312,12 +470,20 @@
       key: 'formula',
       label: '鍏紡',
       initVal: card.formula || '',
-      tooltip: '鎵ц鏃朵細浣跨敤鏌ヨ鍒扮殑鏁版嵁鏇挎崲鐩稿簲鐨勫瓧娈碉紝灞曠ず鑾峰緱鐨勭粨鏋溿�傚彲浣跨敤JS鐨勪竴浜涜娉曪紝濡傦細涓夊厓琛ㄨ揪寮� @field1@ > @field2@ ? 0 : 1锛汳ath瀵硅薄锛屽彇缁濆鍊� Math.abs(@field@)銆佸洓鑸嶄簲鍏� Math.round(@field@)绛�',
+      tooltip: '鎵ц鏃朵細浣跨敤鏌ヨ鍒扮殑鏁版嵁鏇挎崲鐩稿簲鐨勫瓧娈碉紝灞曠ず鑾峰緱鐨勭粨鏋滐紝鍦ㄤ笉浣跨敤瑙f瀽鏃舵崲琛岀鎴栫┖鏍间細鏇挎崲涓洪〉闈㈠厓绱犮�傚彲浣跨敤JS鐨勪竴浜涜娉曪紝濡傦細涓夊厓琛ㄨ揪寮� @field1@ > @field2@ ? 0 : 1锛汳ath瀵硅薄锛屽彇缁濆鍊� Math.abs(@field@)銆佸洓鑸嶄簲鍏� Math.round(@field@)绛�',
       placeholder: '渚嬪锛欯price@ * @number@',
       required: true
     },
     {
       type: 'multiselect',
+      key: 'linkSubField',
+      label: '濉厖琛ㄥ崟',
+      tooltip: '鍦ㄥ垏鎹㈤�夐」鏃朵細鎶婁俊鎭嚜鍔ㄥ~鍏ュ叧鑱旂殑瀛楁涓��',
+      initVal: card.linkSubField || [],
+      options: fields
+    },
+    {
+      type: 'multiselect',
       key: 'blacklist',
       label: Formdict['header.form.blacklist'],
       initVal: card.blacklist || [],
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 d664236..ca299fb 100644
--- a/src/menu/components/table/edit-table/columns/editColumn/index.jsx
+++ b/src/menu/components/table/edit-table/columns/editColumn/index.jsx
@@ -6,7 +6,10 @@
 
 import { getColumnForm } from './formconfig'
 import { formRule } from '@/utils/option.js'
+import CodeMirror from '@/templates/zshare/codemirror'
+import EditTable from '@/templates/zshare/modalform/modaleditable'
 import './index.scss'
+
 
 const { TextArea } = Input
 const columnTypeOptions = {
@@ -32,7 +35,19 @@
 
   state = {
     visible: false,
-    formlist: null
+    formlist: null,
+    transfield: {}
+  }
+
+  column = null
+
+  UNSAFE_componentWillMount() {
+    let transfield = {}
+    this.props.columns.forEach(item => {
+      transfield[item.field] = item.label
+    })
+
+    this.setState({transfield})
   }
 
   UNSAFE_componentWillReceiveProps (nextProps) {
@@ -41,22 +56,45 @@
     }
   }
 
-  editColumn = (column) => {
-    let formlist = getColumnForm(column, this.props.fields, this.props.columns)
-    let _options = fromJS(columnTypeOptions[column.type]).toJS()
+  getOptions = () => {
+    let _options = fromJS(columnTypeOptions[this.column.type]).toJS()
 
-    if (column.editable === 'true') {
-      if (column.type === 'text') {
-        _options.push('required', 'enter', 'footEnter')
-      } else if (column.type === 'number') {
-        _options.push('max', 'min', 'enter', 'footEnter')
+    if (this.column.editable === 'true') {
+      if (this.column.type === 'text') {
+        _options.push('editType')
+
+        if (this.column.editType === 'switch') {
+          _options.push('enter', 'openVal', 'closeVal', 'openText', 'closeText', 'editField')
+        } else if (this.column.editType === 'select') {
+          _options.push('required', 'enter', 'resourceType', 'linkSubField', 'editField', 'dropdown')
+
+          if (this.column.resourceType === '0') {
+            _options.push('options')
+          } else {
+            _options.push('dataSource', 'valueField', 'valueText', 'orderBy', 'orderType', 'disableField', 'database')
+          }
+        } else {
+          _options.push('required', 'enter')
+        }
+      } else if (this.column.type === 'number') {
+        _options.push('max', 'min', 'enter')
       }
     }
 
+    return _options
+  }
+
+  editColumn = (column) => {
+    let formlist = getColumnForm(column, this.props.fields, this.props.columns)
+
+    this.column = fromJS(column).toJS()
+    this.column.editType = this.column.editType || 'text'
+    this.column.resourceType = this.column.resourceType || '0'
+    
+    let _options = this.getOptions()
+
     this.setState({
       visible: true,
-      editable: column.editable || 'false',
-      type: column.type,
       formlist: formlist.map(item => {
         item.hidden = !_options.includes(item.key)
 
@@ -76,24 +114,14 @@
   }
 
   typeChange = (key, value, option) => {
-    const { editable, type } = this.state
-    if (key === 'type') {
-      let _options = fromJS(columnTypeOptions[value]).toJS()
+    this.column[key] = value
 
-      if (editable === 'true') {
-        if (value === 'text') {
-          _options.push('required', 'enter', 'footEnter')
-        } else if (value === 'number') {
-          _options.push('max', 'min', 'enter', 'footEnter')
-        }
-      }
+    if (key === 'type') {
+      let _options = this.getOptions()
 
       this.setState({
-        type: value,
         formlist: this.state.formlist.map(item => {
-          if (item.key === 'editable') {
-            item.initVal = editable
-          }
+          item.initVal = this.column[item.key] || item.initVal
           item.hidden = !_options.includes(item.key)
 
           return item
@@ -116,23 +144,15 @@
         values.type = 'text'
       }
 
-      if (values.type !== this.state.type) {
-        let _options = fromJS(columnTypeOptions[values.type]).toJS()
+      let _type = this.column.type
+      this.column.type = values.type
 
-        if (editable === 'true') {
-          if (values.type === 'text') {
-            _options.push('required', 'enter', 'footEnter')
-          } else if (values.type === 'number') {
-            _options.push('max', 'min', 'enter', 'footEnter')
-          }
-        }
+      if (values.type !== _type) {
+        let _options = this.getOptions()
 
         this.setState({
-          type: values.type,
           formlist: this.state.formlist.map(item => {
-            if (item.key === 'editable') {
-              item.initVal = editable
-            }
+            item.initVal = this.column[item.key] || item.initVal
             item.hidden = !_options.includes(item.key)
 
             return item
@@ -145,20 +165,12 @@
       }
     } else if (key === 'format' && value === 'percent') {
       this.props.form.setFieldsValue({postfix: '%'})
-    } else if (key === 'editable') {
-      let _options = fromJS(columnTypeOptions[type]).toJS()
-
-      if (value === 'true') {
-        if (type === 'text') {
-          _options.push('required', 'enter', 'footEnter')
-        } else if (type === 'number') {
-          _options.push('max', 'min', 'enter', 'footEnter')
-        }
-      }
+    } else if (key === 'editable' || key === 'editType' || key === 'resourceType') {
+      let _options = this.getOptions()
 
       this.setState({
-        editable: value,
         formlist: this.state.formlist.map(item => {
+          item.initVal = this.column[item.key] || item.initVal
           item.hidden = !_options.includes(item.key)
 
           return item
@@ -167,9 +179,50 @@
     }
   }
 
+  multiselectChange = (key, value) => {
+    if (key !== 'linkSubField') return
+
+    this.column[key] = value
+  }
+
+  handleEmpty = () => {
+    let field = this.props.form.getFieldValue('valueField')
+
+    if (!field) {
+      notification.warning({
+        top: 92,
+        message: '璇峰~鍐欏�悸峰瓧娈点��',
+        duration: 5
+      })
+      return
+    }
+
+    let text = this.props.form.getFieldValue('valueText')
+
+    if (!text) {
+      notification.warning({
+        top: 92,
+        message: '璇峰~鍐欐枃鏈峰瓧娈点��',
+        duration: 5
+      })
+      return
+    }
+
+    let resource = this.props.form.getFieldValue('dataSource') || ''
+
+    resource = `select '' as ${field},'鍏ㄩ儴' as ${text} union all \n${resource}`
+
+    this.props.form.setFieldsValue({dataSource: resource})
+  }
+
+  changeOptions = (data) => {
+    this.column.options = data || []
+  }
+
   getFields() {
+    const { dict } = this.props 
     const { getFieldDecorator } = this.props.form
-    const { formlist } = this.state
+    const { formlist, transfield } = this.state
     const fields = []
 
     if (!formlist) return null
@@ -177,159 +230,113 @@
     formlist.forEach((item, index) => {
       if (item.hidden || item.forbidden) return
 
-      if (item.type === 'text') { // 鏂囨湰鎼滅储
-        let rules = []
-        if (item.key !== 'linkurl') {
-          rules = [{
+      let span = 12
+      let rules = []
+      let className = ''
+      let content = null
+      let extra = null
+      let initVal = item.initVal || ''
+
+      if (item.type === 'text') {
+        rules = [
+          { required: item.required, message: dict['form.required.input'] + item.label + '!' },
+          {
             max: formRule.input.max,
             message: formRule.input.message
-          }]
-        }
-        fields.push(
-          <Col span={12} key={index}>
-            <Form.Item label={item.tooltip ?
-              <Tooltip placement="topLeft" title={item.tooltip}>
-                <QuestionCircleOutlined className="mk-form-tip" />
-                {item.label}
-              </Tooltip> : item.label
-            }>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal || '',
-                rules: [
-                  {
-                    required: !!item.required,
-                    message: this.props.dict['form.required.input'] + item.label + '!'
-                  },
-                  ...rules
-                ]
-              })(<Input placeholder="" autoComplete="off" disabled={item.readonly} onPressEnter={this.handleSubmit} />)}
-            </Form.Item>
-          </Col>
-        )
+          }
+        ]
+
+        content = <Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} />
       } else if (item.type === 'number') {
-        fields.push(
-          <Col span={12} key={index}>
-            <Form.Item label={item.tooltip ?
-              <Tooltip placement="topLeft" title={item.tooltip}>
-                <QuestionCircleOutlined className="mk-form-tip" />
-                {item.label}
-              </Tooltip> : item.label
-            }>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal,
-                rules: [
-                  {
-                    required: !!item.required,
-                    message: this.props.dict['form.required.input'] + item.label + '!'
-                  }
-                ]
-              })(item.unlimit ? <InputNumber onPressEnter={this.handleSubmit}/> :
-                  <InputNumber min={item.min} max={item.max} precision={item.decimal} onPressEnter={this.handleSubmit}/>)}
-            </Form.Item>
-          </Col>
-        )
+        rules = [
+          { required: item.required, message: dict['form.required.input'] + item.label + '!' }
+        ]
+        initVal = item.initVal
+
+        if (!item.unlimit) {
+          content = <InputNumber min={item.min} max={item.max} precision={item.precision} onPressEnter={this.handleSubmit}/>
+        } else {
+          content = <InputNumber onPressEnter={this.handleSubmit}/>
+        }
       } else if (item.type === 'select') {
-        fields.push(
-          <Col span={12} key={index}>
-            <Form.Item label={item.label}>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal || '',
-                rules: [
-                  {
-                    required: !!item.required,
-                    message: this.props.dict['form.required.select'] + item.label + '!'
-                  }
-                ]
-              })(
-                <Select
-                  showSearch
-                  filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
-                  onChange={(value, option) => {this.typeChange(item.key, value, option)}}
-                  getPopupContainer={() => document.getElementById('columnwinter')}
-                >
-                  {item.options.map((option, index) =>
-                    <Select.Option key={index} datatype={option.datatype || ''} value={(option.value || option.field || option.MenuID)}>
-                      {(option.text || option.label || option.MenuName)}
-                    </Select.Option>
-                  )}
-                </Select>
-              )}
-            </Form.Item>
-          </Col>
-        )
+        rules = [
+          { required: item.required, message: dict['form.required.select'] + item.label + '!' }
+        ]
+        content = <Select
+          showSearch
+          allowClear={item.allowClear === true}
+          filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
+          onChange={(value, option) => {this.typeChange(item.key, value, option)}}
+          getPopupContainer={() => document.getElementById('edit-table-column-winter')}
+        >
+          {item.options.map((option, i) =>
+            <Select.Option key={i} datatype={option.datatype || ''} value={(option.value || option.field || option.MenuID)}>
+              {(option.text || option.label || option.MenuName)}
+            </Select.Option>
+          )}
+        </Select>
       } else if (item.type === 'radio') {
-        fields.push(
-          <Col span={12} key={index}>
-            <Form.Item label={item.tooltip ?
-              <Tooltip placement="topLeft" title={item.tooltip}>
-                <QuestionCircleOutlined className="mk-form-tip" />
-                {item.label}
-              </Tooltip> : item.label
-            }>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal,
-                rules: [
-                  {
-                    required: !!item.required,
-                    message: this.props.dict['form.required.select'] + item.label + '!'
-                  }
-                ]
-              })(
-                <Radio.Group onChange={(e) => {this.typeChange(item.key, e.target.value)}}>
-                  {
-                    item.options.map(option => {
-                      return (
-                        <Radio key={option.value} value={option.value}>{option.text}</Radio>
-                      )
-                    })
-                  }
-                </Radio.Group>
-              )}
-            </Form.Item>
-          </Col>
-        )
+        rules = [
+          { required: item.required, message: dict['form.required.select'] + item.label + '!' }
+        ]
+        initVal = item.initVal
+
+        content = <Radio.Group onChange={(e) => {this.typeChange(item.key, e.target.value)}}>
+          {item.options.map(option => <Radio key={option.value} value={option.value}>{option.text}</Radio>)}
+        </Radio.Group>
       } else if (item.type === 'multiselect') { // 澶氶��
-        fields.push(
-          <Col span={12} key={index}>
-            <Form.Item label={item.label}>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal || []
-              })(
-                <Select
-                  showSearch
-                  mode="multiple"
-                  filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
-                >
-                  {item.options.map((option, i) =>
-                    <Select.Option id={i} key={i} value={option.value || option.field}>{option.text || option.label}</Select.Option>
-                  )}
-                </Select>
-              )}
-            </Form.Item>
-          </Col>
-        )
-      } else if (item.type === 'textarea') { // 鏂囨湰鎼滅储
-        fields.push(
-          <Col span={24} key={index} className="textarea">
-            <Form.Item label={item.tooltip ?
-              <Tooltip placement="topLeft" title={item.tooltip}>
-                <QuestionCircleOutlined className="mk-form-tip" />
-                {item.label}
-              </Tooltip> : item.label
-            }>
-              {getFieldDecorator(item.key, {
-                initialValue: item.initVal || '',
-                rules: [
-                  {
-                    required: !!item.required,
-                    message: this.props.dict['form.required.input'] + item.label + '!'
-                  }
-                ]
-              })(<TextArea rows={2} disabled={item.readonly} placeholder={item.placeholder || ''} />)}
-            </Form.Item>
-          </Col>
-        )
+        content = <Select
+          showSearch
+          mode="multiple"
+          filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
+          onChange={(value) => this.multiselectChange(item.key, value)}
+        >
+          {item.options.map((option, i) =>
+            <Select.Option key={i} value={option.value || option.field}>{option.text || option.label}</Select.Option>
+          )}
+        </Select>
+      } else if (item.type === 'textarea') {
+        span = 24
+        className = 'text-area'
+        rules = [
+          { required: item.required, message: dict['form.required.input'] + item.label + '!' }
+        ]
+
+        content = <TextArea rows={item.rows || 2}/>
+      } else if (item.type === 'codemirror') {
+        rules = [
+          { required: item.required, message: dict['form.required.input'] + item.label + '!' }
+        ]
+        span = 24
+        className = 'text-area'
+
+        extra = <span className="add-resource-empty" onClick={this.handleEmpty}>绌�</span>
+
+        content = <CodeMirror />
+      } else if (item.type === 'options') {
+        span = 24
+        className = 'text-area'
+
+        let linkSubFields = this.column.linkSubField || []
+      
+        content = <EditTable type={'select'} module="form" transfield={transfield} linkSubFields={linkSubFields} onChange={this.changeOptions}/>
       }
+
+      fields.push(
+        <Col span={span} key={index}>
+          <Form.Item className={className} extra={extra} label={item.tooltip ?
+            <Tooltip placement="topLeft" title={item.tooltip}>
+              <QuestionCircleOutlined className="mk-form-tip" />
+              {item.label}
+            </Tooltip> : item.label
+          }>
+            {getFieldDecorator(item.key, {
+              initialValue: initVal,
+              rules: rules
+            })(content)}
+          </Form.Item>
+        </Col>
+      )
     })
     return fields
   }
@@ -352,6 +359,8 @@
         }
         this.setState({visible: false, formlist: null})
         this.props.submitCol(values)
+
+        this.column = null
       }
     })
   }
@@ -380,13 +389,13 @@
         <Modal
           title="鏄剧ず鍒楃紪杈�"
           visible={visible}
-          width={800}
+          width={900}
           maskClosable={false}
           onOk={this.handleSubmit}
           onCancel={this.editModalCancel}
           destroyOnClose
         >
-          <Form {...formItemLayout} className="commontable-column-form" id="columnwinter">
+          <Form {...formItemLayout} className="commontable-column-form" id="edit-table-column-winter">
             <Row gutter={24}>{this.getFields()}</Row>
           </Form>
         </Modal>
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 9885df8..e9dd7c5 100644
--- a/src/menu/components/table/edit-table/columns/editColumn/index.scss
+++ b/src/menu/components/table/edit-table/columns/editColumn/index.scss
@@ -6,12 +6,27 @@
       padding-right: 3px;
     }
   }
-  .textarea {
-    .ant-form-item-label {
-      width: 12%;
-    }
-    .ant-form-item-control-wrapper {
+  .ant-form-item.text-area {
+    >.ant-form-item-control-wrapper {
       width: 88%;
     }
+    >.ant-form-item-label {
+      width: 12%;
+    }
+    .CodeMirror {
+      height: 150px;
+    }
+  }
+  .ant-form-extra {
+    padding-top: 0px;
+    min-height: 0px;
+  }
+  .add-resource-empty {
+    position: absolute;
+    right: 10px;
+    top: -25px;
+    color: #1890ff;
+    cursor: pointer;
+    font-size: 14px;
   }
 }
diff --git a/src/menu/components/table/edit-table/columns/index.jsx b/src/menu/components/table/edit-table/columns/index.jsx
index 4ed5e10..cbf2d50 100644
--- a/src/menu/components/table/edit-table/columns/index.jsx
+++ b/src/menu/components/table/edit-table/columns/index.jsx
@@ -43,7 +43,7 @@
       return true
     }
 
-    if (!nextProps.column) return false
+    if (!nextProps.column) return true
 
     return !is(fromJS(this.props.column), fromJS(nextProps.column)) ||
       !is(fromJS(this.props.fields), fromJS(nextProps.fields)) ||
@@ -53,17 +53,23 @@
   render() {
     const { connectDragSource, connectDropTarget, moveCol, addElement, updateCol, editColumn, changeStyle, deleteCol, index, column, align, fields, children, ...restProps } = this.props
 
+    if (!column) return (
+      <th {...restProps} index={index}>
+        {children}
+      </th>
+    )
+
     return connectDragSource(
-      connectDropTarget(<th {...restProps} index={index} style={{ cursor: 'move', textAlign: align }} onDoubleClick={() => column && this.props.editColumn(column)}>
+      connectDropTarget(<th {...restProps} index={index} style={{ cursor: 'move', textAlign: align }} onDoubleClick={() => this.props.editColumn(column)}>
         <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
           <div className="mk-popover-control" onDoubleClick={(e) => e.stopPropagation()}>
-            {column && ['custom', 'action'].includes(column.type) ?
+            {['custom', 'action'].includes(column.type) ?
               <PlusOutlined className="plus" title="娣诲姞" onClick={() => this.props.addElement(column)} /> : null
             }
             <EditOutlined className="edit" title="缂栬緫" onClick={() => this.props.editColumn(column)} />
-            {column && column.type === 'custom' ? <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={() => this.props.changeStyle(column)}/> : null}
+            {column.type === 'custom' ? <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={() => this.props.changeStyle(column)}/> : null}
             <DeleteOutlined className="close" title="鍒犻櫎" onClick={this.deleteCol} />
-            {column && ['text', 'number', 'formula'].includes(column.type) ? <MarkColumn columns={fields} marks={column.marks} onSubmit={this.updateMarks} /> : null }
+            {['text', 'number', 'formula'].includes(column.type) ? <MarkColumn columns={fields} marks={column.marks} onSubmit={this.updateMarks} /> : null }
           </div>
         } trigger="hover">
           {children}
@@ -405,6 +411,11 @@
       cols: columns.filter(col => !col.origin)
     }
 
+    let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+    if (srcid) {
+      val.$srcId = srcid
+    }
+
     oInput.value = window.btoa(window.encodeURIComponent(JSON.stringify(val)))
     document.body.appendChild(oInput)
     oInput.select()
@@ -511,10 +522,17 @@
       }
     }
 
+    let rowSelection = null
+    if (config.wrap.tableType) {
+      rowSelection = {
+        type: config.wrap.tableType === 'radio' ? 'radio' : 'checkbox',
+      }
+    }
+
     const columns = this.state.columns.map((col, index) => {
       let title = col.label
       if (col.editable === 'true') {
-        title = <span>{col.label}<EditOutlined style={{position: 'absolute', bottom: 0, right: 0, color: '#1890ff'}}/></span>
+        title = <span>{col.label}<EditOutlined style={{position: 'absolute', bottom: 0, right: 0, color: '#1890ff', opacity: '0.7'}}/></span>
       }
       return {
         title: title,
@@ -573,6 +591,7 @@
             rowClassName="editable-row"
             style={style}
             bordered={config.wrap.bordered !== 'false'}
+            rowSelection={rowSelection}
             components={components}
             dataSource={this.state.data}
             columns={columns}
diff --git a/src/menu/components/table/edit-table/columns/index.scss b/src/menu/components/table/edit-table/columns/index.scss
index 2934fd7..3703f0e 100644
--- a/src/menu/components/table/edit-table/columns/index.scss
+++ b/src/menu/components/table/edit-table/columns/index.scss
@@ -5,7 +5,8 @@
     font-size: inherit;
   }
   .submit-btn {
-    height: 24px;
+    min-height: 24px;
+    height: auto;
     margin-right: 10px;
     background-color: #1890ff;
     border-width: 0;
@@ -63,10 +64,9 @@
     }
   }
   .col-control {
-    position: absolute;
+    position: relative;
+    float: right;
     z-index: 2;
-    right: 0;
-    top: -25px;
     >.anticon, >div > .anticon {
       font-size: 16px;
       margin-right: 10px;
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 1c83631..baf0e0c 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
@@ -306,6 +306,9 @@
                 <Select.Option key="default" value={'default'}>
                   榛樿sql
                 </Select.Option>
+                <Select.Option key="debugger" value={`z_debug: select @ErrorCode='E',@retmsg='娴嬭瘯鏂偣' goto aaa`}>
+                  娴嬭瘯鏂偣
+                </Select.Option>
                 {systemScripts.map((option, i) =>
                   <Select.Option key={i} value={option.value}>
                     {option.name}
diff --git a/src/menu/components/table/edit-table/columns/tableIn/index.jsx b/src/menu/components/table/edit-table/columns/tableIn/index.jsx
index 633ae38..9e83517 100644
--- a/src/menu/components/table/edit-table/columns/tableIn/index.jsx
+++ b/src/menu/components/table/edit-table/columns/tableIn/index.jsx
@@ -100,12 +100,12 @@
         render: (text) => {
           let title = text.match(/^\s*\/\*.+\*\//)
           title = title && title[0] ? title[0] : ''
-          text = title ? text.replace(title, '') : text
+          let _text = title ? text.replace(title, '') : text
 
           return (
             <div>
-              {title ? <span style={{color: '#a50'}}>{title}</span> : null}
-              <Paragraph copyable ellipsis={{ rows: 4, expandable: true }}>{text}</Paragraph>
+              {title ? <span style={{color: '#a50'}}>{title}<span style={{fontSize: '12px', marginLeft: '5px'}}>{_text.length}</span></span> : null}
+              <Paragraph copyable={{ text: text }} ellipsis={{ rows: 4, expandable: true }}>{_text}</Paragraph>
             </div>
           )
         }
@@ -527,7 +527,7 @@
 
     return (
       <div id="verify-excel-box-tab">
-        <Tabs activeKey={activeKey} className="verify-card-box" onChange={this.tabchange}>
+        <Tabs activeKey={activeKey} className="tablein-verify-card-box" onChange={this.tabchange}>
           <TabPane tab="鍩虹楠岃瘉" key="basemsg">
             <Form {...formItemLayout}>
               <Row gutter={24}>
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 0b2c26b..39e908f 100644
--- a/src/menu/components/table/edit-table/columns/tableIn/index.scss
+++ b/src/menu/components/table/edit-table/columns/tableIn/index.scss
@@ -1,4 +1,4 @@
-.verify-card-box {
+.tablein-verify-card-box {
   .ant-tabs-nav-scroll {
     text-align: center;
   }
diff --git a/src/menu/components/table/edit-table/index.jsx b/src/menu/components/table/edit-table/index.jsx
index 5ac87be..933ea98 100644
--- a/src/menu/components/table/edit-table/index.jsx
+++ b/src/menu/components/table/edit-table/index.jsx
@@ -46,7 +46,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'array',    // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
@@ -311,7 +310,13 @@
   }
 
   updateWrap = (res) => {
-    this.updateComponent({...this.state.card, wrap: res})
+    let card = {...this.state.card, wrap: res}
+
+    if (res.tableType) {
+      card.switchable = true
+    }
+    
+    this.updateComponent(card)
   }
 
   clickComponent = (e) => {
diff --git a/src/menu/components/table/edit-table/options.jsx b/src/menu/components/table/edit-table/options.jsx
index 3dcd8b3..d99be1f 100644
--- a/src/menu/components/table/edit-table/options.jsx
+++ b/src/menu/components/table/edit-table/options.jsx
@@ -55,6 +55,111 @@
     },
     {
       type: 'radio',
+      field: 'editable',
+      label: '鍒濆鍖�',
+      initval: wrap.editable || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍙紪杈�'},
+        {value: 'false', label: '涓嶅彲缂栬緫'},
+      ]
+    },
+    {
+      type: 'radio',
+      field: 'submittal',
+      label: '鎻愪氦鍚�',
+      initval: wrap.submittal || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍙紪杈�'},
+        {value: 'false', label: '涓嶅彲缂栬緫'},
+      ]
+    },
+    {
+      type: 'radio',
+      field: 'addable',
+      label: '鍙柊澧�',
+      initval: wrap.addable || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鏄�'},
+        {value: 'false', label: '鍚�'},
+      ]
+    },
+    {
+      type: 'radio',
+      field: 'delable',
+      label: '鍙垹闄�',
+      initval: wrap.delable || 'true',
+      required: false,
+      options: [
+        {value: 'true', label: '鏄�'},
+        {value: 'false', label: '鍚�'},
+      ]
+    },
+    {
+      type: 'radio',
+      field: 'commit',
+      label: '鏁版嵁鎻愪氦',
+      initval: wrap.commit || 'all',
+      tooltip: '鍗曢」鎻愪氦鎸囧湪琛ㄥ崟涓洖杞︽垨鍒犻櫎琛屾椂锛岃缃负鍗曢」鏃跺鐐瑰嚮鎻愪氦鎸夐挳锛屼細鎻愪氦淇敼椤广��',
+      required: false,
+      options: [
+        {value: 'all', label: '鍏ㄩ儴'},
+        {value: 'change', label: '淇敼椤�'},
+        {value: 'simple', label: '鍗曢」'},
+      ]
+    },
+    {
+      type: 'radio',
+      field: 'operType',
+      label: '缂栬緫鎸夐挳',
+      initval: wrap.operType || 'btnMode',
+      tooltip: '缂栬緫鏃剁殑娣诲姞銆佸垹闄ゆ寜閽樉绀轰綅缃紝娉細浣跨敤娴爣鏃惰〃鏍兼í鍚戞粴鍔ㄥけ鏁堬紝琛ㄦ牸璁剧疆楂樺害鏃舵诞鏍囨棤鏁堛��',
+      required: false,
+      options: [
+        {value: 'btnMode', label: '鎸夐挳寮�'},
+        {value: 'buoyMode', label: '娴爣寮�'},
+      ]
+    },
+    {
+      type: 'radio',
+      field: 'editType',
+      label: '缂栬緫妯″紡',
+      initval: wrap.editType || 'simple',
+      tooltip: '鍙紪杈戣〃鍗曟槸鍚﹀叏閮ㄦ斁寮�銆�',
+      required: false,
+      options: [
+        {value: 'simple', label: '鍗曢」'},
+        {value: 'multi', label: '鏁翠綋'},
+      ]
+    },
+    {
+      type: 'radio',
+      field: 'cache',
+      label: '缂撳瓨',
+      initval: wrap.cache || 'true',
+      tooltip: '瀵逛簬浣跨敤鏁版嵁婧愮殑涓嬫媺鑿滃崟锛屼笅鎷夐�夐」鏄惁缂撳瓨鍒版湰鍦般��',
+      required: false,
+      options: [
+        {value: 'true', label: '浣跨敤'},
+        {value: 'false', label: '涓嶄娇鐢�'},
+      ]
+    },
+    {
+      type: 'radio',
+      field: 'tableType',
+      label: '琛ㄦ牸灞炴��',
+      initval: wrap.tableType || '',
+      required: false,
+      options: [
+        {value: '', label: '涓嶅彲閫�'},
+        {value: 'radio', label: '鍗曢��'},
+        {value: 'checkbox', label: '澶氶��'},
+      ]
+    },
+    {
+      type: 'radio',
       field: 'bordered',
       label: '杈规',
       initval: wrap.bordered || 'true',
@@ -113,39 +218,6 @@
       ]
     },
     {
-      type: 'radio',
-      field: 'addable',
-      label: '鍙柊澧�',
-      initval: wrap.addable || 'false',
-      required: false,
-      options: [
-        {value: 'true', label: '鏄�'},
-        {value: 'false', label: '鍚�'},
-      ]
-    },
-    {
-      type: 'radio',
-      field: 'delable',
-      label: '鍙垹闄�',
-      initval: wrap.delable || 'true',
-      required: false,
-      options: [
-        {value: 'true', label: '鏄�'},
-        {value: 'false', label: '鍚�'},
-      ]
-    },
-    {
-      type: 'radio',
-      field: 'editable',
-      label: '鍒濆鍖�',
-      initval: wrap.editable || 'false',
-      required: false,
-      options: [
-        {value: 'true', label: '鍙紪杈�'},
-        {value: 'false', label: '涓嶅彲缂栬緫'},
-      ]
-    },
-    {
       type: 'color',
       field: 'borderColor',
       label: '杈规棰滆壊',
@@ -183,6 +255,18 @@
       required: false
     },
     {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'multiselect',
       field: 'blacklist',
       label: '榛戝悕鍗�',
diff --git a/src/menu/components/table/normal-table/columns/editColumn/formconfig.jsx b/src/menu/components/table/normal-table/columns/editColumn/formconfig.jsx
index b861cf1..d8a652f 100644
--- a/src/menu/components/table/normal-table/columns/editColumn/formconfig.jsx
+++ b/src/menu/components/table/normal-table/columns/editColumn/formconfig.jsx
@@ -152,9 +152,9 @@
       type: 'radio',
       key: 'IsSort',
       label: Formdict['model.sort'],
-      initVal: card.IsSort || 'true',
+      initVal: card.IsSort || (card.isSub ? 'false' : 'true'),
       required: true,
-      forbidden: card.isSub,
+      // forbidden: card.isSub,
       options: [{
         value: 'true',
         text: Formdict['model.true']
@@ -405,7 +405,7 @@
       key: 'formula',
       label: '鍏紡',
       initVal: card.formula || '',
-      tooltip: '鎵ц鏃朵細浣跨敤鏌ヨ鍒扮殑鏁版嵁鏇挎崲鐩稿簲鐨勫瓧娈碉紝灞曠ず鑾峰緱鐨勭粨鏋溿�傚彲浣跨敤JS鐨勪竴浜涜娉曪紝濡傦細涓夊厓琛ㄨ揪寮� @field1@ > @field2@ ? 0 : 1锛汳ath瀵硅薄锛屽彇缁濆鍊� Math.abs(@field@)銆佸洓鑸嶄簲鍏� Math.round(@field@)绛�',
+      tooltip: '鎵ц鏃朵細浣跨敤鏌ヨ鍒扮殑鏁版嵁鏇挎崲鐩稿簲鐨勫瓧娈碉紝灞曠ず鑾峰緱鐨勭粨鏋滐紝鍦ㄤ笉浣跨敤瑙f瀽鏃舵崲琛岀鎴栫┖鏍间細鏇挎崲涓洪〉闈㈠厓绱犮�傚彲浣跨敤JS鐨勪竴浜涜娉曪紝濡傦細涓夊厓琛ㄨ揪寮� @field1@ > @field2@ ? 0 : 1锛汳ath瀵硅薄锛屽彇缁濆鍊� Math.abs(@field@)銆佸洓鑸嶄簲鍏� Math.round(@field@)绛�',
       placeholder: '渚嬪锛欯price@ * @number@',
       required: true
     },
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 6222466..7aa7940 100644
--- a/src/menu/components/table/normal-table/columns/editColumn/index.jsx
+++ b/src/menu/components/table/normal-table/columns/editColumn/index.jsx
@@ -160,7 +160,7 @@
     formlist.forEach((item, index) => {
       if (item.hidden || item.forbidden) return
 
-      if (item.type === 'text') { // 鏂囨湰鎼滅储
+      if (item.type === 'text') {
         let rules = []
         if (item.key !== 'linkurl') {
           rules = [{
@@ -313,7 +313,7 @@
             </Form.Item>
           </Col>
         )
-      } else if (item.type === 'textarea') { // 鏂囨湰鎼滅储
+      } else if (item.type === 'textarea') {
         fields.push(
           <Col span={24} key={index} className="textarea">
             <Form.Item label={item.tooltip ?
diff --git a/src/menu/components/table/normal-table/columns/index.jsx b/src/menu/components/table/normal-table/columns/index.jsx
index 6baf48a..5d7552b 100644
--- a/src/menu/components/table/normal-table/columns/index.jsx
+++ b/src/menu/components/table/normal-table/columns/index.jsx
@@ -442,6 +442,11 @@
       cols: columns.filter(col => !col.origin)
     }
 
+    let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+    if (srcid) {
+      val.$srcId = srcid
+    }
+
     oInput.value = window.btoa(window.encodeURIComponent(JSON.stringify(val)))
     document.body.appendChild(oInput)
     oInput.select()
@@ -460,7 +465,8 @@
         title: col.label,
         dataIndex: col.uuid,
         align: col.Align,
-        sorter: !isSub && col.IsSort === 'true',
+        // sorter: !isSub && col.IsSort === 'true',
+        sorter: col.IsSort === 'true',
         onCell: () => ({
           column: col,
           width: col.Width,
diff --git a/src/menu/components/table/normal-table/index.jsx b/src/menu/components/table/normal-table/index.jsx
index 17a55c8..39da770 100644
--- a/src/menu/components/table/normal-table/index.jsx
+++ b/src/menu/components/table/normal-table/index.jsx
@@ -45,7 +45,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'array',    // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
diff --git a/src/menu/components/table/normal-table/options.jsx b/src/menu/components/table/normal-table/options.jsx
index 22d3d39..b1ad632 100644
--- a/src/menu/components/table/normal-table/options.jsx
+++ b/src/menu/components/table/normal-table/options.jsx
@@ -58,7 +58,7 @@
       type: 'radio',
       field: 'tableType',
       label: '琛ㄦ牸灞炴��',
-      initval: wrap.tableType,
+      initval: wrap.tableType || '',
       required: false,
       options: [
         {value: '', label: '涓嶅彲閫�'},
@@ -133,6 +133,7 @@
       field: 'selected',
       label: '棣栬閫変腑',
       initval: wrap.selected || 'false',
+      tooltip: '褰撴寜閽墽琛屽畬鎴愬苟杩斿洖涓婚敭鍊兼椂锛岄粯璁ら�変腑涓婚敭鍊煎搴旇銆�',
       required: false,
       options: [
         {value: 'false', label: '鏃�'},
@@ -247,6 +248,18 @@
       ],
     },
     {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'multiselect',
       field: 'blacklist',
       label: '榛戝悕鍗�',
diff --git a/src/menu/components/tabs/antv-tabs/index.jsx b/src/menu/components/tabs/antv-tabs/index.jsx
index e85c5fb..a6feb86 100644
--- a/src/menu/components/tabs/antv-tabs/index.jsx
+++ b/src/menu/components/tabs/antv-tabs/index.jsx
@@ -44,7 +44,6 @@
       let _tabs = {
         uuid: tabs.uuid,
         type: tabs.type,
-        floor: tabs.floor,
         tabId: tabs.tabId || '',
         parentId: tabs.parentId || '',
         subtype: tabs.subtype,
@@ -53,9 +52,9 @@
         setting: {width: 24, position: 'top', tabStyle: 'line', name: tabs.name},
         style: { marginLeft: '8px', marginRight: '8px', marginTop: '8px', marginBottom: '8px' },
         subtabs: [
-          { uuid: Utils.getuuid(), parentId: tabs.uuid, floor: tabs.floor, label: 'Tab 1', icon: '', components: [] },
-          { uuid: Utils.getuuid(), parentId: tabs.uuid, floor: tabs.floor, label: 'Tab 2', icon: '', components: [] },
-          { uuid: Utils.getuuid(), parentId: tabs.uuid, floor: tabs.floor, label: 'Tab 3', icon: '', components: [] }
+          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 1', icon: '', components: [] },
+          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 2', icon: '', components: [] },
+          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 3', icon: '', components: [] }
         ]
       }
       this.setState({
@@ -296,7 +295,6 @@
       tab = {
         uuid: '',
         parentId: tabs.uuid,
-        floor: tabs.floor,
         label: '',
         icon: '',
         components: []
@@ -317,6 +315,8 @@
     editab.label = res.label
     editab.icon = res.icon
     // editab.hasSearch = res.hasSearch || ''
+    editab.hide = res.hide || 'false'
+    editab.backgroundColor = res.backgroundColor
     editab.controlVal = res.controlVal || ''
     editab.blacklist = res.blacklist
 
@@ -361,22 +361,22 @@
     let _style = resetStyle(tabs.style)
 
     return (
-      <div className={'menu-tabs-edit-box ' + tabs.setting.display} style={_style} onClick={this.clickComponent} id={tabs.uuid}>
-        <DraggableTabs defaultActiveKey={defaultActiveKey} tabPosition={tabs.setting.position} type={tabs.setting.tabStyle} tabsMove={this.moveSwitch} onChange={this.onChange}>
+      <div className={'menu-tabs-edit-box ' + (tabs.setting.display || '')} style={_style} onClick={this.clickComponent} id={tabs.uuid}>
+        <DraggableTabs defaultActiveKey={defaultActiveKey} tabBarStyle={{background: tabs.setting.backgroundColor || 'transparent'}} tabPosition={tabs.setting.position} type={tabs.setting.tabStyle} tabsMove={this.moveSwitch} onChange={this.onChange}>
           {tabs.subtabs.map(tab => (
             <TabPane tab={
               <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
                 <div className="mk-popover-control">
-                  <NormalForm title="鏍囩缂栬緫" width={600} update={this.updateTab} getForms={() => this.getTabForms(tab)}>
+                  <NormalForm title="鏍囩缂栬緫" width={800} update={this.updateTab} getForms={() => this.getTabForms(tab)}>
                     <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/>
                   </NormalForm>
                   <PasteComponent Tab={tab} insert={this.insert} />
                   <CloseOutlined className="close" onClick={() => this.delTab(tab)} />
                 </div>
               } trigger="hover">
-                <span>{tab.icon ? <MkIcon type={tab.icon} /> : null}{tab.label}</span>
+                <span style={{textDecoration: tab.hide === 'true' ? 'line-through' : 'none'}}>{tab.icon ? <MkIcon type={tab.icon} /> : null}{tab.label}</span>
               </Popover>
-            } key={tab.uuid}>
+            } key={tab.uuid} style={{backgroundColor: tab.backgroundColor || 'transparent'}}>
               {/* {appType === 'mob' && tabs.setting.position === 'top' && tabs.setting.display === 'inline-block' && tab.hasSearch === 'icon' ?
                 <SearchOutlined className="search-icon" onDoubleClick={() => this.setSearch(tab)}/> : null} */}
               <TabComponents config={tab} handleList={this.updateTabComponent} deleteCard={this.deleteCard} />
@@ -385,10 +385,10 @@
         </DraggableTabs>
         <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
           <div className="mk-popover-control">
-            <NormalForm title="娣诲姞鏍囩" width={600} update={this.updateTab} getForms={() => this.getTabForms()}>
+            <NormalForm title="娣诲姞鏍囩" width={800} update={this.updateTab} getForms={() => this.getTabForms()}>
               <PlusOutlined className="plus" title="娣诲姞鏍囩"/>
             </NormalForm>
-            <NormalForm title="鏍囩椤佃缃�" width={700} update={this.updateTabs} getForms={this.getTabsForms}>
+            <NormalForm title="鏍囩椤佃缃�" width={800} update={this.updateTabs} getForms={this.getTabsForms}>
               <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/>
             </NormalForm>
             <CopyComponent type="tabs" card={tabs}/>
diff --git a/src/menu/components/tabs/antv-tabs/index.scss b/src/menu/components/tabs/antv-tabs/index.scss
index 7ad16c9..7466ab4 100644
--- a/src/menu/components/tabs/antv-tabs/index.scss
+++ b/src/menu/components/tabs/antv-tabs/index.scss
@@ -6,6 +6,24 @@
   background-repeat: no-repeat;
   background-size: cover;
 
+  .ant-tabs-top-bar {
+    margin-bottom: 0;
+  }
+  .ant-tabs-top-content {
+    .tab-shell-inner {
+      padding-top: 15px;
+    }
+  }
+  .ant-tabs-left-content {
+    padding-left: 0;
+  }
+  .ant-tabs-right-content {
+    padding-right: 0;
+  }
+  .ant-tabs-bottom-bar {
+    margin-top: 0;
+  }
+
   >.anticon-tool {
     position: absolute;
     z-index: 2;
diff --git a/src/menu/components/tabs/antv-tabs/options.jsx b/src/menu/components/tabs/antv-tabs/options.jsx
index 3132c06..c0430ab 100644
--- a/src/menu/components/tabs/antv-tabs/options.jsx
+++ b/src/menu/components/tabs/antv-tabs/options.jsx
@@ -25,7 +25,6 @@
       initval: tab.label || '',
       required: true,
       focus: true,
-      span: 22
     },
     {
       type: 'mkicon',
@@ -34,7 +33,6 @@
       initval: tab.icon || '',
       required: false,
       allowClear: true,
-      span: 22
     },
     // {
     //   type: 'radio',
@@ -56,8 +54,25 @@
       initval: tab.controlVal || '',
       tooltip: '褰撶鐢ㄥ瓧娈靛�间笌闅愯棌鏍囪鐩哥瓑鏃讹紝鏍囩椤典細闅愯棌銆�',
       required: false,
-      forbid: appType === 'mob',
-      span: 22
+      // forbid: appType === 'mob',
+    },
+    {
+      type: 'color',
+      field: 'backgroundColor',
+      label: '鑳屾櫙(鍐呭鍖�)',
+      initval: tab.backgroundColor || 'transparent',
+      required: false,
+    },
+    {
+      type: 'radio',
+      field: 'hide',
+      label: '闅愯棌',
+      initval: tab.hide || 'false',
+      required: false,
+      options: [
+        {value: 'false', label: '鍚�'},
+        {value: 'true', label: '鏄�'},
+      ],
     },
     {
       type: 'multiselect',
@@ -67,7 +82,6 @@
       required: false,
       options: roleList,
       forbid: !!appType,
-      span: 22
     },
   ]
 
@@ -190,7 +204,7 @@
       controlFields: [
         {field: 'controlField', notNull: true},
       ],
-      forbid: appType === 'mob',
+      // forbid: appType === 'mob',
     },
     {
       type: 'text',
@@ -199,7 +213,26 @@
       initval: setting.controlField || '',
       tooltip: '鐢ㄤ簬鎺у埗鏍囩闅愯棌鐨勫瓧娈碉紝鍦ㄦ爣绛句腑濉叆闅愯棌鏍囪銆�',
       required: true,
-      forbid: appType === 'mob',
+      // forbid: appType === 'mob',
+    },
+    {
+      type: 'color',
+      field: 'backgroundColor',
+      label: '鑳屾櫙(鏍囬鏍�)',
+      initval: setting.backgroundColor || 'transparent',
+      required: false
+    },
+    {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: setting.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !appType
     },
     {
       type: 'multiselect',
diff --git a/src/menu/components/tabs/paste/index.jsx b/src/menu/components/tabs/paste/index.jsx
index 59eb081..3e73e8d 100644
--- a/src/menu/components/tabs/paste/index.jsx
+++ b/src/menu/components/tabs/paste/index.jsx
@@ -24,8 +24,7 @@
     this.setState({visible: true})
   }
 
-  resetconfig = (item, Tab, copyBtns, uuids = {}) => {
-    item.floor = Tab.floor + 1
+  resetconfig = (item, Tab, copyBtns, uuids = {}, floor) => {
     item.tabId = Tab.uuid
     item.parentId = Tab.parentId
     
@@ -40,12 +39,12 @@
         tab.uuid = uuids[tab.uuid]
         tab.parentId = item.uuid
 
-        if (item.floor >= 3) {
+        if (floor >= 3) {
           tab.components = tab.components.filter(cell => cell.type !== 'tabs')
         }
 
         tab.components = tab.components.map(cell => {
-          cell = this.resetconfig(cell, tab, copyBtns, uuids)
+          cell = this.resetconfig(cell, tab, copyBtns, uuids, floor + 1)
           return cell
         })
       })
@@ -56,7 +55,6 @@
       item.name = item.setting.name
 
       item.components = item.components.map(cell => {
-        cell.floor = Tab.floor + 1
         cell.tabId = Tab.uuid
         cell.parentId = Tab.parentId
 
@@ -102,8 +100,9 @@
       }
 
       let copyBtns = new Map()
+      let floor = MenuUtils.getFloor(Tab.parentId)
 
-      res = this.resetconfig(res, Tab, copyBtns)
+      res = this.resetconfig(res, Tab, copyBtns, {}, floor)
 
       delete res.copyType
       
diff --git a/src/menu/components/tabs/tabcomponents/card.jsx b/src/menu/components/tabs/tabcomponents/card.jsx
index 27d0a0b..5b4ac68 100644
--- a/src/menu/components/tabs/tabcomponents/card.jsx
+++ b/src/menu/components/tabs/tabcomponents/card.jsx
@@ -30,7 +30,7 @@
 const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
   const originalIndex = findCard(id).index
   const [{ isDragging }, drag] = useDrag({
-    item: { type: 'menu', id, originalIndex, floor: card.floor },
+    item: { type: 'menu', id, originalIndex },
     collect: monitor => ({
       isDragging: monitor.isDragging(),
     }),
@@ -39,10 +39,10 @@
     accept: 'menu',
     canDrop: () => true,
     drop: (item) => {
-      const { id: draggedId, originalIndex, floor } = item
+      const { id: draggedId, originalIndex } = item
       if (originalIndex === undefined) {
         item.dropTargetId = id
-      } else if (draggedId && floor === card.floor) {
+      } else if (draggedId) {
         if (draggedId === id) return
         const { index: originIndex } = findCard(draggedId)
 
diff --git a/src/menu/components/tabs/tabcomponents/index.jsx b/src/menu/components/tabs/tabcomponents/index.jsx
index bc80a38..1e30e2a 100644
--- a/src/menu/components/tabs/tabcomponents/index.jsx
+++ b/src/menu/components/tabs/tabcomponents/index.jsx
@@ -84,13 +84,16 @@
           })
           return
         }
-      } else if (item.component === 'tabs' && config.floor === 3) {
-        notification.warning({
-          top: 92,
-          message: '鏍囩椤垫渶澶氫负涓夐噸缁撴瀯锛�',
-          duration: 5
-        })
-        return
+      } else if (item.component === 'tabs') {
+        let floor = MenuUtils.getFloor(config.parentId)
+        if (floor >= 3 ) {
+          notification.warning({
+            top: 92,
+            message: '鏍囩椤垫渶澶氫负涓夐噸缁撴瀯锛�',
+            duration: 5
+          })
+          return
+        }
       }
 
       let name = ''
@@ -134,7 +137,6 @@
         width: item.width || 24,
         dataName: Utils.getdataName(),
         name: name,
-        floor: config.floor ? (config.floor + 1) : 2, // 缁勪欢鐨勫眰绾�
         isNew: true                                   // 鏂版坊鍔犳爣蹇楋紝鐢ㄤ簬鍒濆鍖�
       }
       
diff --git a/src/menu/components/timeline/normal-timeline/index.jsx b/src/menu/components/timeline/normal-timeline/index.jsx
index 416d62d..432b1b1 100644
--- a/src/menu/components/timeline/normal-timeline/index.jsx
+++ b/src/menu/components/timeline/normal-timeline/index.jsx
@@ -38,7 +38,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         format: 'array',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
diff --git a/src/menu/components/timeline/normal-timeline/options.jsx b/src/menu/components/timeline/normal-timeline/options.jsx
index b1f0327..61cc83d 100644
--- a/src/menu/components/timeline/normal-timeline/options.jsx
+++ b/src/menu/components/timeline/normal-timeline/options.jsx
@@ -104,6 +104,18 @@
       options: columns
     },
     {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'multiselect',
       field: 'blacklist',
       label: '榛戝悕鍗�',
diff --git a/src/menu/components/tree/antd-tree/index.jsx b/src/menu/components/tree/antd-tree/index.jsx
index 5911a79..2b63b79 100644
--- a/src/menu/components/tree/antd-tree/index.jsx
+++ b/src/menu/components/tree/antd-tree/index.jsx
@@ -40,7 +40,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         dataName: card.dataName || '',
diff --git a/src/menu/components/tree/antd-tree/index.scss b/src/menu/components/tree/antd-tree/index.scss
index ff7b7fb..a1255ef 100644
--- a/src/menu/components/tree/antd-tree/index.scss
+++ b/src/menu/components/tree/antd-tree/index.scss
@@ -5,7 +5,7 @@
   background-position: center center;
   background-repeat: no-repeat;
   background-size: cover;
-  min-height: 50px;
+  min-height: 100px;
   overflow-y: auto;
 
   .anticon-tool {
diff --git a/src/menu/components/tree/antd-tree/options.jsx b/src/menu/components/tree/antd-tree/options.jsx
index f03e80a..ee531ff 100644
--- a/src/menu/components/tree/antd-tree/options.jsx
+++ b/src/menu/components/tree/antd-tree/options.jsx
@@ -122,6 +122,18 @@
       ]
     },
     {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ],
+      forbid: !appType
+    },
+    {
       type: 'multiselect',
       field: 'blacklist',
       label: '榛戝悕鍗�',
diff --git a/src/menu/datasource/index.jsx b/src/menu/datasource/index.jsx
index f7964eb..f405cf1 100644
--- a/src/menu/datasource/index.jsx
+++ b/src/menu/datasource/index.jsx
@@ -45,45 +45,19 @@
     if (appType === 'mob') {
       let ms = null
       menu.components.forEach(item => {
-        if (item.type === 'topbar' && (item.wrap.type === 'search' || (item.wrap.type === 'navbar' && item.wrap.search === 'true'))) {
+        if (item.type === 'topbar' && item.wrap.type !== 'navbar' && item.search) {
           ms = item.search
-        }
-      })
-
-      if (config.floor > 1) {
-        let _search = null
-        let filterComponent = (box) => {
-          box.components.forEach(item => {
-            if (_search) return
-
-            if (item.uuid === config.uuid) {
-              _search = box.slist.pop()
-            } else if (item.type === 'group') {
-              item.components.forEach(m => {
-                if (m.uuid !== config.uuid) return
-                _search = box.slist.pop()
-              })
-            } else if (item.type === 'tabs') {
-              let able = item.setting.display === 'inline-block' && item.setting.position === 'top'
-              item.subtabs.forEach(tab => {
-                if (able && tab.hasSearch === 'icon' && tab.search) {
-                  tab.slist = [...box.slist, tab.search]
-                } else {
-                  tab.slist = [...box.slist]
-                }
-                
-                filterComponent(tab)
-              })
-            }
+        } else if (item.type === 'search' && item.wrap.field) {
+          search.push({
+            type: 'text',
+            label: item.wrap.label,
+            field: item.wrap.field,
+            match: item.wrap.match,
+            required: item.wrap.required,
+            value: item.wrap.initval || ''
           })
         }
-        menu.slist = []
-        filterComponent(menu)
-
-        if (_search) {
-          ms = _search
-        }
-      }
+      })
 
       if (ms) {
         if (ms.setting.type === 'search') {
@@ -124,35 +98,33 @@
         })
       }
     } else {
-      if (config.floor > 1) {
-        let _search = null
-        let filterComponent = (box) => {
-          box.components.forEach(item => {
-            if (_search) return
+      let _search = null
+      let filterComponent = (box) => {
+        box.components.forEach(item => {
+          if (_search) return
 
-            if (item.type === 'search') {
-              box.slist = [...box.slist, item.search]
-            } else if (item.uuid === config.uuid) {
+          if (item.type === 'search') {
+            box.slist = [...box.slist, item.search]
+          } else if (item.uuid === config.uuid) {
+            _search = box.slist.pop()
+          } else if (item.type === 'group') {
+            item.components.forEach(m => {
+              if (m.uuid !== config.uuid) return
               _search = box.slist.pop()
-            } else if (item.type === 'group') {
-              item.components.forEach(m => {
-                if (m.uuid !== config.uuid) return
-                _search = box.slist.pop()
-              })
-            } else if (item.type === 'tabs') {
-              item.subtabs.forEach(tab => {
-                tab.slist = [...box.slist]
-                filterComponent(tab)
-              })
-            }
-          })
-        }
-        menu.slist = []
-        filterComponent(menu)
+            })
+          } else if (item.type === 'tabs') {
+            item.subtabs.forEach(tab => {
+              tab.slist = [...box.slist]
+              filterComponent(tab)
+            })
+          }
+        })
+      }
+      menu.slist = []
+      filterComponent(menu)
 
-        if (_search) {
-          search = _search
-        }
+      if (_search) {
+        search = _search
       } else {
         menu.components.forEach(item => {
           if (item.type !== 'search') return
diff --git a/src/menu/datasource/verifycard/columnform/index.jsx b/src/menu/datasource/verifycard/columnform/index.jsx
index 3b054c7..9e2108d 100644
--- a/src/menu/datasource/verifycard/columnform/index.jsx
+++ b/src/menu/datasource/verifycard/columnform/index.jsx
@@ -63,6 +63,10 @@
                   {
                     required: true,
                     message: dict['form.required.input'] + '瀛楁!'
+                  },
+                  {
+                    pattern: /^[\u4E00-\u9FA50-9a-zA-Z_]*$/ig,
+                    message: '瀛楁鍚嶅彧鍏佽鍖呭惈鏁板瓧銆佸瓧姣嶃�佹眽瀛椾互鍙奯'
                   }
                 ]
               })(<Input placeholder="" autoComplete="off" />)}
diff --git a/src/menu/datasource/verifycard/customscript/index.jsx b/src/menu/datasource/verifycard/customscript/index.jsx
index bcf0edb..2b009a3 100644
--- a/src/menu/datasource/verifycard/customscript/index.jsx
+++ b/src/menu/datasource/verifycard/customscript/index.jsx
@@ -5,6 +5,7 @@
 
 import Utils from '@/utils/utils.js'
 import CodeMirror from '@/templates/zshare/codemirror'
+import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
 class CustomForm extends Component {
@@ -150,6 +151,9 @@
             editItem: null,
             loading: false
           })
+
+          MKEmitter.emit('editLineId', values.uuid)
+
           this.props.form.setFieldsValue({
             sql: ' '
           })
@@ -227,6 +231,9 @@
                 onSelect={this.selectScript}
               >
                 <Select.Option style={{whiteSpace: 'normal'}} key="default" value="defaultsql">榛樿sql</Select.Option>
+                <Select.Option key="debugger" value={`z_debug: select @ErrorCode='E',@retmsg='娴嬭瘯鏂偣' goto aaa`}>
+                  娴嬭瘯鏂偣
+                </Select.Option>
                 {systemScripts.map((option, i) =>
                   <Select.Option style={{whiteSpace: 'normal'}} key={i} value={option.value}>{option.name}</Select.Option>
                 )}
diff --git a/src/menu/datasource/verifycard/index.jsx b/src/menu/datasource/verifycard/index.jsx
index 549d3fa..51338af 100644
--- a/src/menu/datasource/verifycard/index.jsx
+++ b/src/menu/datasource/verifycard/index.jsx
@@ -51,6 +51,10 @@
         editable: true,
         unique: true,
         copy: true,
+        rules: [{
+          pattern: /^[\u4E00-\u9FA50-9a-zA-Z_]*$/ig,
+          message: '瀛楁鍚嶅彧鍏佽鍖呭惈鏁板瓧銆佸瓧姣嶃�佹眽瀛椾互鍙奯'
+        }],
         width: '28%'
       },
       {
@@ -101,12 +105,12 @@
         render: (text) => {
           let title = text.match(/^\s*\/\*.+\*\//)
           title = title && title[0] ? title[0] : ''
-          text = title ? text.replace(title, '') : text
+          let _text = title ? text.replace(title, '') : text
 
           return (
             <div>
-              {title ? <span style={{color: '#a50'}}>{title}</span> : null}
-              <Paragraph copyable ellipsis={{ rows: 4, expandable: true }}>{text}</Paragraph>
+              {title ? <span style={{color: '#a50'}}>{title}<span style={{fontSize: '12px', marginLeft: '5px'}}>{_text.length}</span></span> : null}
+              <Paragraph copyable={{ text: text }} ellipsis={{ rows: 4, expandable: true }}>{_text}</Paragraph>
             </div>
           )
         }
@@ -375,6 +379,18 @@
         this.setState({loading: false})
       })
     } else if (activeKey === 'columns') {
+      if (this.datasource && this.datasource.state.editingKey) {
+        notification.warning({
+          top: 92,
+          message: '瀛楁鏈繚瀛橈紝璇蜂繚瀛樺悗鍒囨崲锛�',
+          duration: 5
+        })
+        this.setState({
+          loading: false
+        })
+        return
+      }
+
       this.setState({
         activeKey: val,
         loading: false
@@ -504,6 +520,15 @@
           reject()
         })
       } else if (activeKey === 'columns') {
+        if (this.datasource && this.datasource.state.editingKey) {
+          notification.warning({
+            top: 92,
+            message: '瀛楁鏈繚瀛橈紝璇蜂繚瀛樺悗鎻愪氦锛�',
+            duration: 5
+          })
+          reject()
+          return
+        }
         this.sqlverify(() => { resolve({setting, columns, scripts }) }, reject, false)
       } else if (activeKey === 'scripts') {
         let _loading = false
@@ -670,7 +695,7 @@
               updatefield={this.updatefields}
             />
             <CopyOutlined title="浠ラ�楀彿鎷兼帴褰㈠紡澶嶅埗瀛楁" onClick={this.copyColumns} style={{position: 'absolute', cursor: 'pointer', zIndex: 1, top: '-35px', right: '0px', color: '#1890ff'}} />
-            <EditTable actions={['edit', 'move', 'copy', 'del', 'clear']} type="datasourcefield" data={columns} columns={colColumns} onChange={(columns) => this.setState({columns})}/>
+            <EditTable actions={['edit', 'move', 'copy', 'del', 'clear']} type="datasourcefield" wrappedComponentRef={(inst) => this.datasource = inst} data={columns} columns={colColumns} onChange={(columns) => this.setState({columns})}/>
           </TabPane>
           <TabPane tab={
             <span>
diff --git a/src/menu/datasource/verifycard/settingform/index.jsx b/src/menu/datasource/verifycard/settingform/index.jsx
index fe0d88c..9f89d35 100644
--- a/src/menu/datasource/verifycard/settingform/index.jsx
+++ b/src/menu/datasource/verifycard/settingform/index.jsx
@@ -27,7 +27,8 @@
     modules: [],
     usefulFields: [],
     useMSearch: this.props.setting.useMSearch || 'false',
-    supModule: this.props.setting.supModule || []
+    supModule: this.props.setting.supModule || [],
+    appType: sessionStorage.getItem('appType')
   }
 
   UNSAFE_componentWillMount () {
@@ -55,11 +56,17 @@
   }
 
   handleConfirm = () => {
+    const { appType } = this.state
     // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
     return new Promise((resolve, reject) => {
       this.props.form.validateFieldsAndScroll((err, values) => {
         if (!err) {
           values.sync = values.sync || 'false'
+
+          if (appType === 'mob' && values.useMSearch === 'true') {
+            values.syncRefresh = 'true'
+          }
+
           // 鏁版嵁婧愬墠绔獙璇�
           if (values.interType === 'system' && values.execute !== 'false' && !values.dataresource) {
             notification.warning({
@@ -150,7 +157,7 @@
   render() {
     const { setting, columns, config } = this.props
     const { getFieldDecorator } = this.props.form
-    const { interType, modules, useMSearch, laypage, supModule, usefulFields } = this.state
+    const { interType, modules, useMSearch, laypage, supModule, usefulFields, appType } = this.state
 
     const formItemLayout = {
       labelCol: {
@@ -399,7 +406,7 @@
               </Form.Item>
             </Col> : null}
             {/* 1銆佷笉鍒嗛〉涓斾笉瀛樺湪涓婄骇妯″潡 */}
-            {!['navbar'].includes(config.type) && (!config.pageable || (config.pageable && laypage === 'false')) && (!supModule || supModule.length === 0 || supModule[0] === 'empty') ? <Col span={8}>
+            {!['navbar'].includes(config.type) && !['editable'].includes(config.subtype) && (!config.pageable || (config.pageable && laypage === 'false')) && (!supModule || supModule.length === 0 || supModule[0] === 'empty') ? <Col span={8}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'鍒濆鍖栧姞杞芥椂锛屾槸鍚︿笌鍏朵粬缁勪欢涓�鍚屽姞杞芥暟鎹紝娉細浠呭湪浣跨敤绯荤粺鍑芥暟锛屼笖鍒濆鍖栧姞杞芥暟鎹椂鏈夋晥锛屽垎椤佃姹傛椂鏃犳晥銆�'}>
                   <QuestionCircleOutlined className="mk-form-tip" />
@@ -433,7 +440,7 @@
                 )}
               </Form.Item>
             </Col> : null}
-            {!['navbar', 'balcony', 'menubar'].includes(config.type) && useMSearch === 'true' ? <Col span={8}>
+            {!['navbar', 'balcony', 'menubar'].includes(config.type) && useMSearch === 'true' && appType !== 'mob' ? <Col span={8}>
               <Form.Item label={
                 <Tooltip placement="topLeft" title={'澶栧眰鎼滅储鏉′欢鏀瑰彉鏃讹紝鏄惁鍒锋柊褰撳墠缁勪欢鏁版嵁銆�'}>
                   <QuestionCircleOutlined className="mk-form-tip" />
diff --git a/src/menu/menushell/card.jsx b/src/menu/menushell/card.jsx
index 83cfc00..2331154 100644
--- a/src/menu/menushell/card.jsx
+++ b/src/menu/menushell/card.jsx
@@ -26,11 +26,12 @@
 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 Voucher = asyncComponent(() => import('@/menu/components/module/voucher'))
 
 const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
   const originalIndex = findCard(id).index
   const [{ isDragging }, drag] = useDrag({
-    item: { type: 'menu', id, originalIndex, floor: card.floor },
+    item: { type: 'menu', id, originalIndex },
     collect: monitor => ({
       isDragging: monitor.isDragging(),
     }),
@@ -39,10 +40,10 @@
     accept: 'menu',
     canDrop: () => true,
     drop: (item) => {
-      const { id: draggedId, originalIndex, floor } = item
+      const { id: draggedId, originalIndex } = item
       if (originalIndex === undefined) {
         item.dropTargetId = id
-      } else if (draggedId && floor === card.floor) {
+      } else if (draggedId) {
         if (draggedId === id) return
         const { index: originIndex } = findCard(draggedId)
 
@@ -105,6 +106,8 @@
       return (<Timeline card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'chart') {
       return (<CustomChart card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
+    } else if (card.type === 'module' && card.subtype === 'voucher') {
+      return (<Voucher card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     }
   }
   return (
diff --git a/src/menu/modalconfig/index.jsx b/src/menu/modalconfig/index.jsx
index 2d63246..659bbbb 100644
--- a/src/menu/modalconfig/index.jsx
+++ b/src/menu/modalconfig/index.jsx
@@ -66,6 +66,7 @@
 
   componentDidMount () {
     MKEmitter.addListener('completeSave', this.completeSave)
+    MKEmitter.addListener('submitStyle', this.getStyle)
   }
 
   /**
@@ -76,6 +77,7 @@
       return
     }
     MKEmitter.removeListener('completeSave', this.completeSave)
+    MKEmitter.removeListener('submitStyle', this.getStyle)
   }
 
   /**
@@ -207,6 +209,24 @@
     })
   }
 
+  getStyle = (comIds, style) => {
+    const { config } = this.state
+
+    if (comIds[0] !== 'form') return
+
+    let Index = config.fields.findIndex(n => n.uuid === comIds[1])
+
+    if (Index === -1) return
+    
+    let _config = fromJS(config).toJS()
+
+    _config.fields[Index].style = style
+
+    this.setState({
+      config: _config
+    })
+  }
+
   /**
    * @description 缂栬緫鍚庢彁浜�
    * 1銆佽幏鍙栫紪杈戝悗鐨勮〃鍗曚俊鎭�
@@ -224,6 +244,9 @@
         }
 
         if (item.uuid === res.uuid) {
+          if (item.style) {
+            res.style = item.style
+          }
           return res
         } else {
           return item
@@ -518,7 +541,8 @@
         <Modal
           title={this.state.dict['model.edit']}
           visible={this.state.visible}
-          width={850}
+          width={950}
+          maskClosable={false}
           onCancel={this.editModalCancel}
           onOk={this.handleSubmit}
           confirmLoading={this.state.sqlVerifing}
diff --git a/src/menu/modulesource/option.jsx b/src/menu/modulesource/option.jsx
index c9a112a..8368f81 100644
--- a/src/menu/modulesource/option.jsx
+++ b/src/menu/modulesource/option.jsx
@@ -25,6 +25,7 @@
 import chart from '@/assets/mobimg/chart.png'
 import tree from '@/assets/mobimg/tree.png'
 import timeline from '@/assets/mobimg/timeline.png'
+// import Voucher from '@/assets/mobimg/voucher.jpg'
 
 // 缁勪欢閰嶇疆淇℃伅
 export const menuOptions = [
@@ -32,7 +33,7 @@
   { type: 'menu', url: Mainsearch, component: 'search', subtype: 'mainsearch', title: '鎼滅储鏉′欢', width: 24, forbid: ['billPrint'] },
   { type: 'menu', url: card1, component: 'card', subtype: 'datacard', title: '鏁版嵁鍗�', width: 24 },
   { type: 'menu', url: card2, component: 'card', subtype: 'propcard', title: '灞炴�у崱', width: 24 },
-  { type: 'menu', url: card2, component: 'balcony', subtype: 'balcony', title: '娴姩鍗�', width: 24, forbid: ['billPrint'] },
+  { type: 'menu', url: card2, component: 'balcony', subtype: 'balcony', title: '娴姩鍗�', width: 24},
   { type: 'menu', url: form, component: 'form', subtype: 'stepform', title: '琛ㄥ崟锛堝垎姝ワ級', width: 24, forbid: ['billPrint'] },
   { type: 'menu', url: tabForm, component: 'form', subtype: 'tabform', title: '琛ㄥ崟锛坱ab椤碉級', width: 24, forbid: ['billPrint'] },
   { type: 'menu', url: Carousel, component: 'carousel', subtype: 'datacard', title: '杞挱-鍔ㄦ�佹暟鎹�', width: 24, forbid: ['billPrint'] },
@@ -57,4 +58,5 @@
   { type: 'menu', url: Editor, component: 'editor', subtype: 'brafteditor', title: '瀵屾枃鏈�', width: 24, forbid: ['billPrint'] },
   { type: 'menu', url: SandBox, component: 'code', subtype: 'sandbox', title: '鑷畾涔�', width: 24 },
   { type: 'menu', url: group, component: 'group', subtype: 'normalgroup', title: '鍒嗙粍', width: 24, forbid: ['billPrint'] },
+  // { type: 'menu', url: Voucher, component: 'module', subtype: 'voucher', title: '鍑瘉', width: 24, forbid: ['billPrint'] },
 ]
diff --git a/src/menu/pastecontroller/index.jsx b/src/menu/pastecontroller/index.jsx
index 858866b..8ed2307 100644
--- a/src/menu/pastecontroller/index.jsx
+++ b/src/menu/pastecontroller/index.jsx
@@ -38,7 +38,6 @@
         }
 
         tab.components = tab.components.map(cell => {
-          cell.floor = tab.floor + 1
           cell.tabId = tab.uuid
           cell.parentId = tab.parentId
 
@@ -53,7 +52,6 @@
       item.name = item.setting.name
 
       item.components = item.components.map(cell => {
-        cell.floor = item.floor
         cell.tabId = item.tabId || ''
         cell.parentId = item.parentId || ''
 
diff --git a/src/menu/popview/index.jsx b/src/menu/popview/index.jsx
index 7e90b9a..e820385 100644
--- a/src/menu/popview/index.jsx
+++ b/src/menu/popview/index.jsx
@@ -46,7 +46,8 @@
     menuloading: false,
     oriConfig: null,
     config: null,
-    customComponents: []
+    customComponents: [],
+    comloading: false
   }
 
   UNSAFE_componentWillMount() {
@@ -133,10 +134,11 @@
     })
 
     this.setState({
-      config: {...config, components: []}
+      config: {...config, components},
+      comloading: true
     }, () => {
       this.setState({
-        config: {...config, components: components}
+        comloading: false
       })
     })
   }
@@ -577,10 +579,11 @@
 
   resetConfig = (config) => {
     this.setState({
-      config: {...config, components: []},
+      config,
+      comloading: true
     }, () => {
       this.setState({
-        config: config
+        comloading: false
       })
     })
 
@@ -625,7 +628,7 @@
 
   render () {
     const { btn } = this.props
-    const { activeKey, dict, config, menuloading, customComponents, MenuId } = this.state
+    const { activeKey, comloading, dict, config, menuloading, customComponents, MenuId } = this.state
 
     return (
       <div className="pc-poper-view">
@@ -670,7 +673,7 @@
                   <Button type="default" onClick={this.closeView}>{dict['mob.return']}</Button>
                 </div>
               } style={{ width: '100%' }}>
-                {config && config.components ? <MenuShell menu={config} handleList={this.updateConfig} /> : null}
+                {config && !comloading ? <MenuShell menu={config} handleList={this.updateConfig} /> : null}
               </Card>
             </div>
           </div>
diff --git a/src/menu/replaceField/index.jsx b/src/menu/replaceField/index.jsx
index 74e0380..81e4921 100644
--- a/src/menu/replaceField/index.jsx
+++ b/src/menu/replaceField/index.jsx
@@ -9,6 +9,7 @@
 import Utils from '@/utils/utils.js'
 import SettingForm from './settingform'
 import { queryTableSql } from '@/utils/option.js'
+import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
 class ReplaceField extends Component {
@@ -84,142 +85,152 @@
   }
 
   submit = () => {
-    let config = fromJS(this.props.config).toJS()
-
     this.settingRef.handleConfirm().then(res => {
       this.setState({confirming: true})
 
-      let param = {func: 'sPC_Get_FieldName', TBName: res.table}
-      if (options.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
-        param.rduri = options.cloudServiceApi
-        param.userid = sessionStorage.getItem('CloudUserID') || ''
-        param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
-      }
-
-      Api.getSystemCacheConfig(param).then(result => {
-        if (!result.status) {
-          this.setState({
-            confirming: false
-          })
-          notification.warning({
-            top: 92,
-            message: result.message,
-            duration: 5
-          })
-          return
-        }
-
-        let map = {}
-
-        result.FDName.forEach(item => {
-          if (/NVARCHAR|INT|Decimal/ig.test(item.FieldType)) {
-            item.datatype = item.FieldType
-          }
-          map[item.FieldDec] = item
-        })
-
-        if (this.props.type === 'custom') {
-          let _replace = (components) => {
-            return components.map(item => {
-              if (item.type === 'tabs') {
-                item.subtabs.forEach(tab => {
-                  tab.components = _replace(tab.components)
-                })
-                return item
-              } else if (item.type === 'group') {
-                item.components = _replace(item.components)
-                return item
-              }
-              
-              if (item.columns) {
-                item.columns = item.columns.map(col => {
-                  if (map[col.field]) {
-                    col.field = map[col.field].FieldName
-                    if (map[col.field].datatype) {
-                      col.datatype = map[col.field].datatype
-                    }
-                  }
-                  return col
-                })
-              }
-              if (item.search) {
-                item.search = item.search.map(col => {
-                  if (map[col.field]) {
-                    col.field = map[col.field].FieldName
-                  }
-                  return col
-                })
-              }
+      if (res.resource === 'custom') {
+        if (res.reType === 'name') {
+          let map = {[res.label.toLowerCase()]: {
+            FieldDec: res.label,
+            FieldName: res.field,
+            datatype: ''
+          }}
   
-              if (item.action) {
-                item.action.forEach(m => {
+          this.exec(map)
+        } else {
+          let map = {[res.field.toLowerCase()]: {
+            FieldDec: res.label,
+            FieldName: res.field,
+            datatype: ''
+          }}
+  
+          this.execLabel(map)
+        }
+      } else {
+        let param = {func: 'sPC_Get_FieldName', TBName: res.table}
+        if (options.cloudServiceApi) { // 涓斿瓨鍦ㄤ簯绔湴鍧�
+          param.rduri = options.cloudServiceApi
+          param.userid = sessionStorage.getItem('CloudUserID') || ''
+          param.LoginUID = sessionStorage.getItem('CloudLoginUID') || ''
+        }
+  
+        Api.getSystemCacheConfig(param).then(result => {
+          if (!result.status) {
+            this.setState({
+              confirming: false
+            })
+            notification.warning({
+              top: 92,
+              message: result.message,
+              duration: 5
+            })
+            return
+          }
+  
+          if (res.reType === 'name') {
+            let map = {}
+  
+            result.FDName.forEach(item => {
+              if (!item.FieldDec) return
+              if (/NVARCHAR|INT|Decimal/ig.test(item.FieldType)) {
+                item.datatype = item.FieldType
+              }
+              map[item.FieldDec.toLowerCase()] = item
+            })
+
+            this.exec(map)
+          } else {
+            let map = {}
+  
+            result.FDName.forEach(item => {
+              if (!item.FieldName) return
+              map[item.FieldName.toLowerCase()] = item
+            })
+
+            this.execLabel(map)
+          }
+        })
+      }
+    })
+  }
+
+  exec = (map) => {
+    let config = fromJS(this.props.config).toJS()
+
+    if (this.props.type === 'custom') {
+      let _replace = (components) => {
+        return components.map(item => {
+          if (item.type === 'tabs') {
+            item.subtabs.forEach(tab => {
+              tab.components = _replace(tab.components)
+            })
+            return item
+          } else if (item.type === 'group') {
+            item.components = _replace(item.components)
+            return item
+          }
+          
+          if (item.columns) {
+            item.columns = item.columns.map(col => {
+              let cell = map[col.field.toLowerCase()]
+              if (cell) {
+                col.field = cell.FieldName
+                if (cell.datatype) {
+                  col.datatype = cell.datatype
+                }
+              }
+              return col
+            })
+          }
+          if (item.search) {
+            item.search = item.search.map(col => {
+              if (col.field && map[col.field.toLowerCase()]) {
+                col.field = map[col.field.toLowerCase()].FieldName
+              }
+              return col
+            })
+          }
+
+          if (item.action) {
+            item.action.forEach(m => {
+              if (m.modal && m.modal.fields) {
+                m.modal.fields = m.modal.fields.map(col => {
+                  if (col.field && map[col.field.toLowerCase()]) {
+                    col.field = map[col.field.toLowerCase()].FieldName
+                  }
+                  return col
+                })
+              }
+              if (m.verify && m.verify.columns) {
+                m.verify.columns = m.verify.columns.map(col => {
+                  if (col.Column && map[col.Column.toLowerCase()]) {
+                    col.Column = map[col.Column.toLowerCase()].FieldName
+                  }
+                  return col
+                })
+              }
+            })
+          }
+
+          if (item.subcards) {
+            item.subcards.forEach(card => {
+              if (card.elements) { // 鍗$墖
+                card.elements = card.elements.map(m => {
+                  if (m.datatype === 'dynamic' && map[m.field.toLowerCase()]) {
+                    m.field = map[m.field.toLowerCase()].FieldName
+                  }
                   if (m.modal && m.modal.fields) {
                     m.modal.fields = m.modal.fields.map(col => {
-                      if (map[col.field]) {
-                        col.field = map[col.field].FieldName
+                      if (col.field && map[col.field.toLowerCase()]) {
+                        col.field = map[col.field.toLowerCase()].FieldName
                       }
                       return col
                     })
                   }
-                })
-              }
-  
-              if (item.subcards) {
-                item.subcards.forEach(card => {
-                  if (card.elements) { // 鍗$墖
-                    card.elements = card.elements.map(m => {
-                      if (m.datatype === 'dynamic' && map[m.field]) {
-                        m.field = map[m.field].FieldName
-                      }
-                      if (m.modal && m.modal.fields) {
-                        m.modal.fields = m.modal.fields.map(col => {
-                          if (map[col.field]) {
-                            col.field = map[col.field].FieldName
-                          }
-                          return col
-                        })
-                      }
-                      return m
-                    })
-                  }
-  
-                  if (card.backElements) { // 鍗$墖
-                    card.backElements = card.backElements.map(m => {
-                      if (m.datatype === 'dynamic' && map[m.field]) {
-                        m.field = map[m.field].FieldName
-                      }
-                      if (m.modal && m.modal.fields) {
-                        m.modal.fields = m.modal.fields.map(col => {
-                          if (map[col.field]) {
-                            col.field = map[col.field].FieldName
-                          }
-                          return col
-                        })
-                      }
-                      return m
-                    })
-                  }
-
-                  if (card.fields) { // 琛ㄥ崟
-                    card.fields = card.fields.map(m => {
-                      if (map[m.field]) {
-                        m.field = map[m.field].FieldName
-                      }
-                      return m
-                    })
-                  }
-                })
-              }
-  
-              if (item.elements) {
-                item.elements = item.elements.map(m => {
-                  if (m.datatype === 'dynamic' && map[m.field]) {
-                    m.field = map[m.field].FieldName
-                  }
-                  if (m.modal && m.modal.fields) {
-                    m.modal.fields = m.modal.fields.map(col => {
-                      if (map[col.field]) {
-                        col.field = map[col.field].FieldName
+                  if (m.verify && m.verify.columns) {
+                    m.verify.columns = m.verify.columns.map(col => {
+                      if (col.Column && map[col.Column.toLowerCase()]) {
+                        col.Column = map[col.Column.toLowerCase()].FieldName
                       }
                       return col
                     })
@@ -227,131 +238,364 @@
                   return m
                 })
               }
-  
-              if (item.plot) {
-                if (item.plot.Xaxis && map[item.plot.Xaxis]) {
-                  item.plot.Xaxis = map[item.plot.Xaxis].FieldName
-                }
-                // 缁熻鍥�
-                if (item.plot.InfoValue && map[item.plot.InfoValue]) {
-                  item.plot.InfoValue = map[item.plot.InfoValue].FieldName
-                }
-                if (item.plot.InfoType && map[item.plot.InfoType]) {
-                  item.plot.InfoType = map[item.plot.InfoType].FieldName
-                }
-                // 鍗犳瘮鍥�
-                if (item.plot.valueField && map[item.plot.valueField]) {
-                  item.plot.valueField = map[item.plot.valueField].FieldName
-                }
-                if (item.plot.labelField && map[item.plot.labelField]) {
-                  item.plot.labelField = map[item.plot.labelField].FieldName
-                }
-                // 楗煎浘
-                if (item.plot.type && map[item.plot.type]) {
-                  item.plot.type = map[item.plot.type].FieldName
-                }
-                // 鏁g偣鍥�
-                if (item.plot.gender && map[item.plot.gender]) {
-                  item.plot.gender = map[item.plot.gender].FieldName
-                }
-                if (item.Yaxis) {
-                  if (Array.isArray(item.Yaxis)) {
-                    item.Yaxis = item.Yaxis.map(m => {
-                      if (map[m]) {
-                        return map[m].FieldName
-                      }
-                      return m
-                    })
-                  } else {
-                    if (map[item.Yaxis]) {
-                      item.Yaxis = map[item.Yaxis].FieldName
-                    }
+
+              if (card.backElements) { // 鍗$墖
+                card.backElements = card.backElements.map(m => {
+                  if (m.datatype === 'dynamic' && map[m.field.toLowerCase()]) {
+                    m.field = map[m.field.toLowerCase()].FieldName
                   }
-                }
-              }
-  
-              if (item.cols) {
-                let _update = (cols) => {
-                  return cols.map(col => {
-                    if (col.type === 'action' && col.elements) {
-                      col.elements = col.elements.map(m => {
-                        if (m.modal && m.modal.fields) {
-                          m.modal.fields = m.modal.fields.map(col => {
-                            if (map[col.field]) {
-                              col.field = map[col.field].FieldName
-                            }
-                            return col
-                          })
-                        }
-    
-                        return m
-                      })
-                    } else if (col.type === 'custom' && col.elements) {
-                      col.elements = col.elements.map(m => {
-                        if (m.datatype === 'dynamic' && map[m.field]) {
-                          m.field = map[m.field].FieldName
-                        }
-    
-                        return m
-                      })
-                    } else if (col.type === 'colspan') {
-                      col.subcols = _update(col.subcols)
-                    } else if (col.field) {
-                      if (map[col.field]) {
-                        col.field = map[col.field].FieldName
+                  if (m.modal && m.modal.fields) {
+                    m.modal.fields = m.modal.fields.map(col => {
+                      if (col.field && map[col.field.toLowerCase()]) {
+                        col.field = map[col.field.toLowerCase()].FieldName
                       }
-                    }
-                    
-                    return col
-                  })
-                }
-    
-                item.cols = _update(item.cols)
+                      return col
+                    })
+                  }
+                  if (m.verify && m.verify.columns) {
+                    m.verify.columns = m.verify.columns.map(col => {
+                      if (col.Column && map[col.Column.toLowerCase()]) {
+                        col.Column = map[col.Column.toLowerCase()].FieldName
+                      }
+                      return col
+                    })
+                  }
+                  return m
+                })
               }
-  
-              return item
+
+              if (card.fields) { // 琛ㄥ崟
+                card.fields = card.fields.map(m => {
+                  if (m.field && map[m.field.toLowerCase()]) {
+                    m.field = map[m.field.toLowerCase()].FieldName
+                  }
+                  return m
+                })
+              }
             })
           }
-      
-          config.components = _replace(config.components)
-        } else if (this.props.type === 'table') {
-          config.columns = config.columns.map(col => {
-            if (col.field && map[col.field]) {
-              col.field = map[col.field].FieldName
+
+          if (item.elements) {
+            item.elements = item.elements.map(m => {
+              if (m.datatype === 'dynamic' && map[m.field.toLowerCase()]) {
+                m.field = map[m.field.toLowerCase()].FieldName
+              }
+              if (m.modal && m.modal.fields) {
+                m.modal.fields = m.modal.fields.map(col => {
+                  if (col.field && map[col.field.toLowerCase()]) {
+                    col.field = map[col.field.toLowerCase()].FieldName
+                  }
+                  return col
+                })
+              }
+              if (m.verify && m.verify.columns) {
+                m.verify.columns = m.verify.columns.map(col => {
+                  if (col.Column && map[col.Column.toLowerCase()]) {
+                    col.Column = map[col.Column.toLowerCase()].FieldName
+                  }
+                  return col
+                })
+              }
+              return m
+            })
+          }
+
+          if (item.plot) {
+            if (item.plot.Xaxis && map[item.plot.Xaxis.toLowerCase()]) {
+              item.plot.Xaxis = map[item.plot.Xaxis.toLowerCase()].FieldName
             }
-            return col
-          })
-          config.search = config.search.map(col => {
-            if (col.field && map[col.field]) {
-              col.field = map[col.field].FieldName
+            // 缁熻鍥�
+            if (item.plot.InfoValue && map[item.plot.InfoValue.toLowerCase()]) {
+              item.plot.InfoValue = map[item.plot.InfoValue.toLowerCase()].FieldName
             }
-            if (col.datefield && map[col.datefield]) {
-              col.datefield = map[col.datefield].FieldName
+            if (item.plot.InfoType && map[item.plot.InfoType.toLowerCase()]) {
+              item.plot.InfoType = map[item.plot.InfoType.toLowerCase()].FieldName
             }
-            return col
-          })
-        } else if (this.props.type === 'form') {
-          config.fields = config.fields.map(col => {
-            if (col.field && map[col.field]) {
-              col.field = map[col.field].FieldName
+            // 鍗犳瘮鍥�
+            if (item.plot.valueField && map[item.plot.valueField.toLowerCase()]) {
+              item.plot.valueField = map[item.plot.valueField.toLowerCase()].FieldName
+            }
+            if (item.plot.labelField && map[item.plot.labelField.toLowerCase()]) {
+              item.plot.labelField = map[item.plot.labelField.toLowerCase()].FieldName
+            }
+            // 楗煎浘
+            if (item.plot.type && map[item.plot.type.toLowerCase()]) {
+              item.plot.type = map[item.plot.type.toLowerCase()].FieldName
+            }
+            // 鏁g偣鍥�
+            if (item.plot.gender && map[item.plot.gender.toLowerCase()]) {
+              item.plot.gender = map[item.plot.gender.toLowerCase()].FieldName
+            }
+            if (item.Yaxis) {
+              if (Array.isArray(item.Yaxis)) {
+                item.Yaxis = item.Yaxis.map(m => {
+                  if (map[m.toLowerCase()]) {
+                    return map[m.toLowerCase()].FieldName
+                  }
+                  return m
+                })
+              } else {
+                if (item.Yaxis && map[item.Yaxis.toLowerCase()]) {
+                  item.Yaxis = map[item.Yaxis.toLowerCase()].FieldName
+                }
+              }
+            }
+          }
+
+          if (item.cols) {
+            let _update = (cols) => {
+              return cols.map(col => {
+                if (col.type === 'action' && col.elements) {
+                  col.elements = col.elements.map(m => {
+                    if (m.modal && m.modal.fields) {
+                      m.modal.fields = m.modal.fields.map(col => {
+                        if (col.field && map[col.field.toLowerCase()]) {
+                          col.field = map[col.field.toLowerCase()].FieldName
+                        }
+                        return col
+                      })
+                    }
+                    if (m.verify && m.verify.columns) {
+                      m.verify.columns = m.verify.columns.map(col => {
+                        if (col.Column && map[col.Column.toLowerCase()]) {
+                          col.Column = map[col.Column.toLowerCase()].FieldName
+                        }
+                        return col
+                      })
+                    }
+
+                    return m
+                  })
+                } else if (col.type === 'custom' && col.elements) {
+                  col.elements = col.elements.map(m => {
+                    if (m.datatype === 'dynamic' && map[m.field.toLowerCase()]) {
+                      m.field = map[m.field.toLowerCase()].FieldName
+                    }
+
+                    return m
+                  })
+                } else if (col.type === 'colspan') {
+                  col.subcols = _update(col.subcols)
+                } else if (col.field) {
+                  if (map[col.field.toLowerCase()]) {
+                    col.field = map[col.field.toLowerCase()].FieldName
+                  }
+                }
+                
+                return col
+              })
+            }
+
+            item.cols = _update(item.cols)
+          }
+
+          return item
+        })
+      }
+  
+      config.components = _replace(config.components)
+    } else if (this.props.type === 'table') {
+      config.columns = config.columns.map(col => {
+        if (col.field && map[col.field.toLowerCase()]) {
+          col.field = map[col.field.toLowerCase()].FieldName
+        }
+        return col
+      })
+
+      config.search = config.search.map(col => {
+        if (col.field && map[col.field.toLowerCase()]) {
+          col.field = map[col.field.toLowerCase()].FieldName
+        }
+        if (col.datefield && map[col.datefield.toLowerCase()]) {
+          col.datefield = map[col.datefield.toLowerCase()].FieldName
+        }
+        return col
+      })
+
+      config.action = config.action.map(m => {
+        if (m.verify && m.verify.columns) {
+          m.verify.columns = m.verify.columns.map(col => {
+            if (col.Column && map[col.Column.toLowerCase()]) {
+              col.Column = map[col.Column.toLowerCase()].FieldName
             }
             return col
           })
         }
-
-        this.setState({
-          confirming: false,
-          visible: false
-        })
-
-        notification.success({
-          top: 92,
-          message: '鏇存柊宸插畬鎴愩��',
-          duration: 3
-        })
-        this.props.updateConfig(config)
+        return m
       })
+    } else if (this.props.type === 'form') {
+      config.fields = config.fields.map(col => {
+        if (col.field && map[col.field.toLowerCase()]) {
+          col.field = map[col.field.toLowerCase()].FieldName
+        }
+        return col
+      })
+    }
+
+    this.setState({
+      confirming: false,
+      visible: false
     })
+
+    notification.success({
+      top: 92,
+      message: '鏇存柊宸插畬鎴愩��',
+      duration: 3
+    })
+    this.props.updateConfig(config)
+
+    setTimeout(() => {
+      MKEmitter.emit('revert')
+    }, 300)
+  }
+
+  execLabel = (map) => {
+    let config = fromJS(this.props.config).toJS()
+
+    if (this.props.type === 'custom') {
+      let _replace = (components) => {
+        return components.map(item => {
+          if (item.type === 'tabs') {
+            item.subtabs.forEach(tab => {
+              tab.components = _replace(tab.components)
+            })
+            return item
+          } else if (item.type === 'group') {
+            item.components = _replace(item.components)
+            return item
+          }
+          
+          if (item.columns) {
+            item.columns = item.columns.map(col => {
+              if (col.field && map[col.field.toLowerCase()]) {
+                col.label = map[col.field.toLowerCase()].FieldDec
+              }
+              return col
+            })
+          }
+          if (item.search) {
+            item.search = item.search.map(col => {
+              if (col.field && map[col.field.toLowerCase()]) {
+                col.label = map[col.field.toLowerCase()].FieldDec
+              }
+              return col
+            })
+          }
+
+          if (item.action) {
+            item.action.forEach(m => {
+              if (m.modal && m.modal.fields) {
+                m.modal.fields = m.modal.fields.map(col => {
+                  if (col.field && map[col.field.toLowerCase()]) {
+                    col.label = map[col.field.toLowerCase()].FieldDec
+                  }
+                  return col
+                })
+              }
+              if (m.verify && m.verify.columns) {
+                m.verify.columns = m.verify.columns.map(col => {
+                  if (col.Column && map[col.Column.toLowerCase()]) {
+                    col.Text = map[col.Column.toLowerCase()].FieldDec
+                  }
+                  return col
+                })
+              }
+            })
+          }
+
+          if (item.cols) {
+            let _update = (cols) => {
+              return cols.map(col => {
+                if (col.type === 'action' && col.elements) {
+                  col.elements = col.elements.map(m => {
+                    if (m.modal && m.modal.fields) {
+                      m.modal.fields = m.modal.fields.map(col => {
+                        if (col.field && map[col.field.toLowerCase()]) {
+                          col.label = map[col.field.toLowerCase()].FieldDec
+                        }
+                        return col
+                      })
+                    }
+                    if (m.verify && m.verify.columns) {
+                      m.verify.columns = m.verify.columns.map(col => {
+                        if (col.Column && map[col.Column.toLowerCase()]) {
+                          col.Text = map[col.Column.toLowerCase()].FieldDec
+                        }
+                        return col
+                      })
+                    }
+
+                    return m
+                  })
+                } else if (col.type === 'colspan') {
+                  col.subcols = _update(col.subcols)
+                } else if (col.field) {
+                  if (map[col.field.toLowerCase()]) {
+                    col.label = map[col.field.toLowerCase()].FieldDec
+                  }
+                }
+                
+                return col
+              })
+            }
+
+            item.cols = _update(item.cols)
+          }
+
+          return item
+        })
+      }
+
+      config.components = _replace(config.components)
+    } else if (this.props.type === 'table') {
+      config.columns = config.columns.map(col => {
+        if (col.field && map[col.field.toLowerCase()]) {
+          col.label = map[col.field.toLowerCase()].FieldDec
+        }
+        return col
+      })
+      
+      config.search = config.search.map(col => {
+        if (col.field && map[col.field.toLowerCase()]) {
+          col.label = map[col.field.toLowerCase()].FieldDec
+        }
+        return col
+      })
+
+      config.action = config.action.map(m => {
+        if (m.verify && m.verify.columns) {
+          m.verify.columns = m.verify.columns.map(col => {
+            if (col.Column && map[col.Column.toLowerCase()]) {
+              col.Text = map[col.Column.toLowerCase()].FieldDec
+            }
+            return col
+          })
+        }
+        return m
+      })
+    } else if (this.props.type === 'form') {
+      config.fields = config.fields.map(col => {
+        if (col.field && map[col.field.toLowerCase()]) {
+          col.label = map[col.field.toLowerCase()].FieldDec
+        }
+        return col
+      })
+    }
+
+    this.setState({
+      confirming: false,
+      visible: false
+    })
+
+    notification.success({
+      top: 92,
+      message: '鏇存柊宸插畬鎴愩��',
+      duration: 3
+    })
+    this.props.updateConfig(config)
+    setTimeout(() => {
+      MKEmitter.emit('revert')
+    }, 500)
   }
 
   render() {
diff --git a/src/menu/replaceField/settingform/index.jsx b/src/menu/replaceField/settingform/index.jsx
index ed8d59a..1bc080f 100644
--- a/src/menu/replaceField/settingform/index.jsx
+++ b/src/menu/replaceField/settingform/index.jsx
@@ -1,22 +1,72 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Tooltip, Select } from 'antd'
-import { QuestionCircleOutlined } from '@ant-design/icons'
+import { Form, Row, Col, Tooltip, Select, Radio, AutoComplete, Modal } from 'antd'
+import { QuestionCircleOutlined, SwapRightOutlined, DeleteOutlined } from '@ant-design/icons'
 
 // import './index.scss'
+const { confirm } = Modal
 
 class SettingForm extends Component {
   static propTpyes = {
     tables: PropTypes.object
   }
 
-  state = {}
+  state = {
+    resource: 'custom',
+    reType: 'field',
+    field: '',
+    label: '',
+    fields: [],
+    labels: []
+  }
+
+  UNSAFE_componentWillMount() {
+    let records = localStorage.getItem('replaceRecord')
+
+    if (records) {
+      records = JSON.parse(records)
+
+      let fields = records.fields || []
+      let labels = records.labels || []
+
+      this.setState({fields, labels, field: fields[0] || '', label: labels[0] || ''})
+    }
+
+  }
 
   handleConfirm = () => {
     // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
     return new Promise((resolve, reject) => {
       this.props.form.validateFieldsAndScroll((err, values) => {
         if (!err) {
+          if (values.resource === 'custom') {
+            let records = localStorage.getItem('replaceRecord')
+
+            if (records) {
+              records = JSON.parse(records)
+            } else {
+              records = {fields: [], labels: []}
+            }
+
+            records.fields.unshift(values.field)
+            records.labels.unshift(values.label)
+
+            let _fields = []
+            let _labels = []
+
+            records.fields = records.fields.filter(m => {
+              if (_fields.includes(m.toLowerCase())) return false
+              _fields.push(m.toLowerCase())
+              return true
+            })
+            records.labels = records.labels.filter(m => {
+              if (_labels.includes(m.toLowerCase())) return false
+              _labels.push(m.toLowerCase())
+              return true
+            })
+
+            localStorage.setItem('replaceRecord', JSON.stringify(records))
+          }
           resolve(values)
         } else {
           reject(err)
@@ -25,9 +75,23 @@
     })
   }
 
+  clear = () => {
+    let _this = this
+    confirm({
+      title: '纭畾娓呴櫎鍘嗗彶璁板綍鍚楋紵',
+      content: '',
+      onOk() {
+        localStorage.removeItem('replaceRecord')
+        _this.setState({fields: [], labels: []})
+      },
+      onCancel() {}
+    })
+  }
+
   render() {
     const { tables } = this.props
     const { getFieldDecorator } = this.props.form
+    const { resource, fields, labels, field, label, reType } = this.state
 
     const formItemLayout = {
       labelCol: {
@@ -40,10 +104,43 @@
       }
     }
 
+    let _fields = fields
+    if (field) {
+      _fields = fields.filter(item => item.toLowerCase().indexOf(field.toLowerCase()) > -1)
+    }
+    let _labels = labels
+    if (label) {
+      _labels = labels.filter(item => item.indexOf(label) > -1)
+    }
+
     return (
       <Form {...formItemLayout}>
         <Row gutter={24}>
           <Col span={20}>
+            <Form.Item label="鏇挎崲鏉ユ簮">
+              {getFieldDecorator('resource', {
+                initialValue: 'custom'
+              })(
+                <Radio.Group onChange={(e) => this.setState({resource: e.target.value})}>
+                  <Radio value="dict">鏁版嵁瀛楀吀</Radio>
+                  <Radio value="custom">鑷畾涔�</Radio>
+                </Radio.Group>
+              )}
+            </Form.Item>
+          </Col>
+          <Col span={20}>
+            <Form.Item label="鏇挎崲渚濇嵁">
+              {getFieldDecorator('reType', {
+                initialValue: 'field'
+              })(
+                <Radio.Group onChange={(e) => this.setState({reType: e.target.value})}>
+                  <Radio value="field">瀛楁 <SwapRightOutlined /> 鍚嶇О</Radio>
+                  <Radio value="name">鍘熷瓧娈� <SwapRightOutlined /> 鏂板瓧娈�</Radio>
+                </Radio.Group>
+              )}
+            </Form.Item>
+          </Col>
+          {resource === 'dict' ? <Col span={20}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="鐢ㄤ簬瀛楁鏇挎崲鐨勮〃鍚嶃��">
                 <QuestionCircleOutlined className="mk-form-tip" />
@@ -69,7 +166,62 @@
                 </Select>
               )}
             </Form.Item>
-          </Col>
+          </Col> : null}
+          {resource === 'custom' && reType === 'field' ? <Col span={20}>
+            <Form.Item label="瀛楁">
+              {getFieldDecorator('field', {
+                initialValue: field,
+                rules: [
+                  {
+                    required: true,
+                    message: '璇疯緭鍏ュ瓧娈�!'
+                  }
+                ]
+              })(<AutoComplete dataSource={_fields} autoFocus onSearch={(val) => this.setState({ field: val})} placeholder="" />)}
+            </Form.Item>
+          </Col> : null}
+          {resource === 'custom' && reType === 'field' ? <Col span={20}>
+            <Form.Item label="鍚嶇О">
+              {getFieldDecorator('label', {
+                initialValue: label,
+                rules: [
+                  {
+                    required: true,
+                    message: '璇疯緭鍏ュ悕绉�!'
+                  }
+                ]
+              })(<AutoComplete dataSource={_labels} onSearch={(val) => this.setState({ label: val})} placeholder="" />)}
+            </Form.Item>
+          </Col> : null}
+          {resource === 'custom' && reType === 'name' ? <Col span={20}>
+            <Form.Item label="鍘熷瓧娈�">
+              {getFieldDecorator('label', {
+                initialValue: label,
+                rules: [
+                  {
+                    required: true,
+                    message: '璇疯緭鍏ュ悕绉�!'
+                  }
+                ]
+              })(<AutoComplete dataSource={_labels} autoFocus onSearch={(val) => this.setState({ label: val})} placeholder="" />)}
+            </Form.Item>
+          </Col> : null}
+          {resource === 'custom' && reType === 'name' ? <Col span={20}>
+            <Form.Item label="鏇挎崲涓�">
+              {getFieldDecorator('field', {
+                initialValue: field,
+                rules: [
+                  {
+                    required: true,
+                    message: '璇疯緭鍏ュ瓧娈�!'
+                  }
+                ]
+              })(<AutoComplete dataSource={_fields} onSearch={(val) => this.setState({ field: val})} placeholder="" />)}
+            </Form.Item>
+          </Col> : null}
+          {resource === 'custom' && fields.length > 0 ? <Col span={24}>
+            <DeleteOutlined onClick={this.clear} style={{float: 'right', fontSize: '18px', marginTop: '-10px', cursor: 'pointer', color: '#ff4d4f'}} title="娓呯┖鍘嗗彶璁板綍" />
+          </Col> : null}
         </Row>
       </Form>
     )
diff --git a/src/menu/sysinterface/index.jsx b/src/menu/sysinterface/index.jsx
index bec6e8a..fcd9dcb 100644
--- a/src/menu/sysinterface/index.jsx
+++ b/src/menu/sysinterface/index.jsx
@@ -74,6 +74,11 @@
   copy = (item) => {
     let msg = { key: 'interface', type: 'line', data: item }
 
+    let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+    if (srcid) {
+      msg.$srcId = srcid
+    }
+
     try {
       msg = window.btoa(window.encodeURIComponent(JSON.stringify(msg)))
     } catch (e) {
diff --git a/src/menu/sysinterface/settingform/index.jsx b/src/menu/sysinterface/settingform/index.jsx
index 2f6e4d0..6309ec8 100644
--- a/src/menu/sysinterface/settingform/index.jsx
+++ b/src/menu/sysinterface/settingform/index.jsx
@@ -131,7 +131,7 @@
 
     return (
       <div className="model-interface-form-box" id="model-interface-form-body">
-        <Tabs activeKey={activeKey} className="verify-card-box" onChange={this.changeTab}>
+        <Tabs activeKey={activeKey} onChange={this.changeTab}>
           <TabPane tab="鎺ュ彛璁剧疆" key="setting">
             <BaseForm
               dict={dict}
diff --git a/src/menu/sysinterface/settingform/simplescript/index.jsx b/src/menu/sysinterface/settingform/simplescript/index.jsx
index 5b6a80f..ea519cb 100644
--- a/src/menu/sysinterface/settingform/simplescript/index.jsx
+++ b/src/menu/sysinterface/settingform/simplescript/index.jsx
@@ -37,12 +37,12 @@
         render: (text) => {
           let title = text.match(/^\s*\/\*.+\*\//)
           title = title && title[0] ? title[0] : ''
-          text = title ? text.replace(title, '') : text
+          let _text = title ? text.replace(title, '') : text
 
           return (
             <div>
-              {title ? <span style={{color: '#a50'}}>{title}</span> : null}
-              <Paragraph copyable ellipsis={{ rows: 4, expandable: true }}>{text}</Paragraph>
+              {title ? <span style={{color: '#a50'}}>{title}<span style={{fontSize: '12px', marginLeft: '5px'}}>{_text.length}</span></span> : null}
+              <Paragraph copyable={{ text: text }} ellipsis={{ rows: 4, expandable: true }}>{_text}</Paragraph>
             </div>
           )
         }
diff --git a/src/mob/components/formdragelement/card.jsx b/src/mob/components/formdragelement/card.jsx
index 4bfe3dd..4c35773 100644
--- a/src/mob/components/formdragelement/card.jsx
+++ b/src/mob/components/formdragelement/card.jsx
@@ -1,11 +1,12 @@
 import React from 'react'
 import { useDrag, useDrop } from 'react-dnd'
 import { Button, Popover, Switch, Checkbox, Form, Rate } from 'antd'
-import { ScanOutlined, RightOutlined, PlusOutlined, StarFilled, EditOutlined, CopyOutlined, CloseOutlined } from '@ant-design/icons'
+import { ScanOutlined, RightOutlined, PlusOutlined, StarFilled, EditOutlined, CopyOutlined, CloseOutlined, FontColorsOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import asyncComponent from '@/utils/asyncComponent'
 import MkIcon from '@/components/mk-icon'
+import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
 const CheckCard = asyncComponent(() => import('@/templates/modalconfig/checkCard'))
@@ -46,6 +47,12 @@
     copyCard(id)
   }
 
+  const changeStyle = () => {
+    let options = ['font']
+
+    MKEmitter.emit('changeStyle', ['form', card.uuid], options, card.style || {})
+  }
+
   let selectval = ''
   if (card.type === 'select' || card.type === 'link') {
     if (card.initval) {
@@ -59,23 +66,33 @@
   }
 
   let formItem = null
-  if (card.type === 'text' || card.type === 'number') {
-    formItem = (<div className={'am-list-item ' + (card.place || '')}><div className="am-list-line"><div className="am-input-label">{card.label}</div><div className={'am-input-control ' + card.cursor}>{card.initval ? card.initval : <span style={{color: '#bcbcbc'}}>{card.placeholder || ''}</span> }</div>{card.scan && card.scan !== 'false' ? <div className="am-list-extra"><ScanOutlined /></div> : null}</div></div>)
+  if (card.type === 'text' || card.type === 'linkMain') {
+    formItem = (<div className={'am-list-item input ' + (card.place || '')}><div className="am-list-line"><div className="am-input-label" style={card.style}>{card.label}</div><div className={'am-input-control ' + card.cursor}>{card.initval ? card.initval : <span style={{color: '#bcbcbc'}}>{card.placeholder || <span style={{color: 'transparent'}}>input</span>}</span> }</div>{card.scan && card.scan !== 'false' ? <div className="am-list-extra"><ScanOutlined /></div> : null}</div></div>)
   } else if (card.type === 'number') {
-    formItem = (<div className="am-list-item"><div className="am-list-line"><div className="am-input-label">{card.label}</div><div className={'am-input-control ' + card.cursor}>{card.initval}</div></div></div>)
+    formItem = (<div className={'am-list-item input ' + (card.place || '')}><div className="am-list-line"><div className="am-input-label" style={card.style}>{card.label}</div><div className={'am-input-control ' + card.cursor}>{card.initval ? card.initval : <span style={{color: '#bcbcbc'}}><span style={{color: 'transparent'}}>input</span></span> }</div>{card.placeholder ? <div className="am-list-extra" style={{color: '#999999', width: 'auto', lineHeight: 1.5}}>{card.placeholder}</div> : null}</div></div>)
+  } else if (card.type === 'number') {
+    formItem = (<div className="am-list-item input"><div className="am-list-line"><div className="am-input-label" style={card.style}>{card.label}</div><div className={'am-input-control ' + card.cursor}>{card.initval || <span style={{color: 'transparent'}}>input</span>}</div></div></div>)
   } else if (card.type === 'select' || card.type === 'link') {
-    formItem = (<div className="am-list-item"><div className="am-list-line"><div className="am-input-label">{card.label}</div><div className="am-input-control">{selectval || '璇烽�夋嫨'}</div><div className="am-list-extra"><RightOutlined /></div></div></div>)
+    formItem = (<div className="am-list-item"><div className="am-list-line"><div className="am-input-label" style={card.style}>{card.label}</div><div className="am-input-control">{selectval || '璇烽�夋嫨'}</div><div className="am-list-extra"><RightOutlined /></div></div></div>)
   } else if (card.type === 'date') {
-    formItem = (<div className="am-list-item"><div className="am-list-line"><div className="am-input-label">{card.label}</div><div className="am-input-control">{card.initval ? moment().subtract(card.initval, 'days').format('YYYY-MM-DD') : '璇烽�夋嫨'}</div><div className="am-list-extra"><RightOutlined /></div></div></div>)
+    let format = 'YYYY-MM-DD'
+    if (card.precision === 'hour') {
+      format = 'YYYY-MM-DD HH'
+    } else if (card.precision === 'minute') {
+      format = 'YYYY-MM-DD HH:mm'
+    } else if (card.precision === 'second') {
+      format = 'YYYY-MM-DD HH:mm:ss'
+    }
+    formItem = (<div className="am-list-item"><div className="am-list-line"><div className="am-input-label" style={card.style}>{card.label}</div><div className="am-input-control">{card.initval ? moment().subtract(card.initval, 'days').format(format) : '璇烽�夋嫨'}</div><div className="am-list-extra"><RightOutlined /></div></div></div>)
   } else if (card.type === 'datemonth') {
-    formItem = (<div className="am-list-item"><div className="am-list-line"><div className="am-input-label">{card.label}</div><div className="am-input-control">{card.initval ? moment().subtract(card.initval, 'month').format('YYYY-MM') : '璇烽�夋嫨'}</div><div className="am-list-extra"><RightOutlined /></div></div></div>)
+    formItem = (<div className="am-list-item"><div className="am-list-line"><div className="am-input-label" style={card.style}>{card.label}</div><div className="am-input-control">{card.initval ? moment().subtract(card.initval, 'month').format('YYYY-MM') : '璇烽�夋嫨'}</div><div className="am-list-extra"><RightOutlined /></div></div></div>)
   } else if (card.type === 'datetime') {
-    formItem = (<div className="am-list-item"><div className="am-list-line"><div className="am-input-label">{card.label}</div><div className="am-input-control">{card.initval ? moment().subtract(card.initval, 'days').format('YYYY-MM-DD HH:mm') : '璇烽�夋嫨'}</div><div className="am-list-extra"><RightOutlined /></div></div></div>)
+    formItem = (<div className="am-list-item"><div className="am-list-line"><div className="am-input-label" style={card.style}>{card.label}</div><div className="am-input-control">{card.initval ? moment().subtract(card.initval, 'days').format('YYYY-MM-DD HH:mm') : '璇烽�夋嫨'}</div><div className="am-list-extra"><RightOutlined /></div></div></div>)
   } else if (card.type === 'textarea') {
     let height = (card.maxRows || 2) * 25
     formItem = (<div className="am-list-item check-card">
       <div className="am-list-line">
-        <div className="am-input-label">{card.label}</div>
+        <div className="am-input-label" style={card.style}>{card.label}</div>
         <div className="am-input-control">
           <div style={{textAlign: 'left', position: 'relative', height, lineHeight: 1.5}}>
             {card.initval ? card.initval : <span style={{color: '#bcbcbc'}}>{card.placeholder || ''}</span> }
@@ -85,14 +102,14 @@
       </div>
     </div>)
   } else if (card.type === 'rate') {
-    formItem = (<div className={'am-list-item ' + (card.place || '')}><div className="am-list-line"><div className="am-input-label">{card.label}</div><div style={{textAlign: 'left'}} className={'am-input-control ' + (card.place === 'up_down' ? 'left' : '')}>
+    formItem = (<div className={'am-list-item ' + (card.place || '')}><div className="am-list-line"><div className="am-input-label" style={card.style}>{card.label}</div><div style={{textAlign: 'left'}} className={'am-input-control ' + (card.place === 'up_down' ? 'left' : '')}>
       <Rate value={card.initval || 0} count={card.rateCount || 5} character={card.character ? <MkIcon type={card.character}/> : <StarFilled />} allowHalf={card.allowHalf === 'true'} />
     </div></div></div>)
   } else if (card.type === 'fileupload') {
     formItem = (
       <div className="am-list-item checkbox">
         <div className="am-list-line">
-          <div className="am-input-label">{card.label}</div>
+          <div className="am-input-label" style={card.style}>{card.label}</div>
           <div className="am-input-control" style={{textAlign: 'left'}}>
             <Button style={{width: '100px', marginBottom: '10px', height: '100px', fontSize: '50px', color: '#d9d9d9'}}><PlusOutlined /></Button>
           </div>
@@ -100,9 +117,9 @@
       </div>
     )
   } else if (card.type === 'funcvar') {
-    formItem = (<div className="am-list-item"><div className="am-list-line"><div className="am-input-label">{card.label}</div><div className="am-input-control">{card.linkfield}</div></div></div>)
+    formItem = (<div className="am-list-item"><div className="am-list-line"><div className="am-input-label" style={card.style}>{card.label}</div><div className="am-input-control">{card.linkfield}</div></div></div>)
   } else if (card.type === 'switch') {
-    formItem = (<div className="am-list-item"><div className="am-list-line"><div className="am-input-label">{card.label}</div><div className="am-list-switch"><Switch checked={card.initval}/></div></div></div>)
+    formItem = (<div className="am-list-item"><div className="am-list-line"><div className="am-input-label" style={card.style}>{card.label}</div><div className="am-list-switch"><Switch checked={card.initval}/></div></div></div>)
   } else if (card.type === 'radio') {
     let options = null
     if (card.options && card.options.length > 0) {
@@ -118,7 +135,7 @@
     formItem = (
     <div className={'am-list-item checkbox mk-radio ' + (card.arrange || '')}>
       <div className="am-list-line">
-        <div className="am-input-label">{card.label}</div>
+        <div className="am-input-label" style={card.style}>{card.label}</div>
         <div className="am-input-control">
           {card.arrange !== 'line' ? <Checkbox.Group value={[card.initval]}>
             {options.map(cell => <Checkbox key={cell.key} value={cell.Value}>{cell.Text}</Checkbox>)}
@@ -147,7 +164,7 @@
     formItem = (
       <div className={'am-list-item checkbox ' + (card.arrange || '')}>
         <div className="am-list-line">
-          <div className="am-input-label">{card.label}</div>
+          <div className="am-input-label" style={card.style}>{card.label}</div>
           <div className="am-input-control">
             {<Checkbox.Group value={_val}>
               {options.map(cell => <Checkbox key={cell.key} value={cell.Value}>{cell.Text}</Checkbox>)}
@@ -160,18 +177,18 @@
   } else if (card.type === 'hint') {
     formItem = <div className="am-list-item hint">
       <div className="am-list-line">
-        <div className="am-input-label">{card.label}</div>
-        <div className="am-input-control">
+        <div className="am-input-label" style={card.style}>{card.label}</div>
+        <div className="am-input-control" style={card.style}>
           {card.message}  
         </div>
       </div>
     </div>
   } else if (card.type === 'split') {
-    formItem = <div className="split-line">{card.label}</div>
+    formItem = <div className="split-line" style={card.style}>{card.label}</div>
   } else if (card.type === 'checkcard') {
     formItem = (<div className="am-list-item check-card">
       <div className="am-list-line">
-        {card.hidelabel !== 'true' ? <div className="am-input-label">{card.label}</div> : null}
+        {card.hidelabel !== 'true' ? <div className="am-input-label" style={card.style}>{card.label}</div> : null}
         <div className="am-input-control">
           <CheckCard config={card} />
         </div>
@@ -184,20 +201,22 @@
       <div className="mk-popover-control">
         <EditOutlined className="edit" onClick={edit} />
         <CopyOutlined className="copy" onClick={copy} />
+        <FontColorsOutlined className="style" onClick={changeStyle} />
         <CloseOutlined className="close" onClick={close} />
       </div>
     } trigger="hover">
       <div className="page-card" style={{ opacity: opacity}}>
         <div ref={node => drag(drop(node))} style={{ border: '0.5px solid transparent'}} onDoubleClick={edit}>
-          {card.type === 'split' ? formItem : <Form.Item
+          <Form.Item
             style={{marginTop: card.marginTop || 0, marginBottom: card.marginBottom || 0}}
             className={'ant-form-item' + (card.required === 'true' ? ' required' : '') + (card.splitline === 'false' ? ' no-boder' : '')}
           >
             {formItem}
-            {showField ? <div className="field-name" style={card.writein === 'false' ? {color: 'orange'} : {}}>
-              {card.field}{card.hidden === 'true' ? '锛堥殣钘忥級' : ''}{card.readonly === 'true' ? '锛堝彧璇伙級' : ''}
+            <div></div>
+            {showField && card.field ? <div className="field-name" style={card.writein === 'false' ? {color: 'orange'} : {}}>
+              {card.field}{card.hidden === 'true' || card.type === 'funcvar' ? '锛堥殣钘忥級' : ''}{card.readonly === 'true' ? '锛堝彧璇伙級' : ''}{card.linkField ? <span style={{color: '#1890ff'}}>{`锛堝叧鑱�${card.linkField}锛塦}</span> : ''}{card.supField ? <span style={{color: '#8E44AD'}}>{`锛堜笂绾�${card.supField}锛塦}</span> : ''}
             </div> : ''}
-          </Form.Item>}
+          </Form.Item>
         </div>
       </div>
     </Popover>
diff --git a/src/mob/components/formdragelement/index.jsx b/src/mob/components/formdragelement/index.jsx
index 38485bc..45f4207 100644
--- a/src/mob/components/formdragelement/index.jsx
+++ b/src/mob/components/formdragelement/index.jsx
@@ -1,6 +1,7 @@
 import React, { useState } from 'react'
 import { useDrop } from 'react-dnd'
 import { is, fromJS } from 'immutable'
+import { Col } from 'antd'
 import update from 'immutability-helper'
 import Utils from '@/utils/utils.js'
 import Card from './card'
@@ -52,6 +53,13 @@
     let oInput = document.createElement('input')
     let val = JSON.parse(JSON.stringify(_card))
     val.copyType = 'form'
+
+    delete val.$srcId
+    
+    let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+    if (srcid) {
+      val.$srcId = srcid
+    }
 
     oInput.value = window.btoa(window.encodeURIComponent(JSON.stringify(val)))
     document.body.appendChild(oInput)
@@ -114,17 +122,23 @@
   return (
     <div ref={drop} className="ant-row modal-fields-row mob-form" style={style}>
       {cards.map(card => {
-        return <Card
-          id={card.uuid}
-          key={card.uuid}
-          card={card}
-          showField={showField}
-          moveCard={moveCard}
-          editCard={editCard}
-          closeCard={closeCard}
-          copyCard={copyCard}
-          findCard={findCard}
-        />
+        let span = card.span || 24
+        if (![24, 12, 8, 6].includes(span)) {
+          span = 24
+        }
+        return <Col key={card.uuid} span={span}>
+          <Card
+            id={card.uuid}
+            key={card.uuid}
+            card={card}
+            showField={showField}
+            moveCard={moveCard}
+            editCard={editCard}
+            closeCard={closeCard}
+            copyCard={copyCard}
+            findCard={findCard}
+          />
+        </Col>
       })}
     </div>
   )
diff --git a/src/mob/components/formdragelement/index.scss b/src/mob/components/formdragelement/index.scss
index 4438434..e4b9d51 100644
--- a/src/mob/components/formdragelement/index.scss
+++ b/src/mob/components/formdragelement/index.scss
@@ -1,12 +1,29 @@
 
 .modal-fields-row {
   padding-bottom: 35px;
-  .mob-col.ant-col {
+  .ant-col {
     display: inline-block;
     float: none;
     vertical-align: top;
-    padding-left: 1.2%;
-    padding-right: 1.2%;
+    padding-left: 0px;
+    padding-right: 0px;
+  }
+  >.ant-col:not(.ant-col-24) {
+    padding-right: 10px;
+    .am-list-line .am-input-label {
+      width: auto;
+      padding-right: 10px;
+    }
+    .ant-form-item.no-boder {
+      .am-list-item.input {
+        .am-list-line {
+          padding-right: 0px;
+        }
+        .am-input-control {
+          border-bottom: 1px solid #ddd;
+        }
+      }
+    }
   }
   .am-list-item {
     font-size: 16px;
@@ -28,7 +45,7 @@
       display: flex;
       flex: 1 1;
       align-self: stretch;
-      padding-right: 15px;
+      padding-right: 10px;
       overflow: hidden;
       .am-input-label {
         width: 28%;
@@ -259,6 +276,9 @@
     .am-list-line {
       border-bottom: none;
     }
+    .split-line {
+      border: 0;
+    }
   }
 }
 .mob-form.modal-fields-row {
diff --git a/src/mob/components/menubar/common-menubar/index.jsx b/src/mob/components/menubar/common-menubar/index.jsx
new file mode 100644
index 0000000..479cbf5
--- /dev/null
+++ b/src/mob/components/menubar/common-menubar/index.jsx
@@ -0,0 +1,190 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { is, fromJS } from 'immutable'
+import { Popover, Col } from 'antd'
+import { ToolOutlined, RightOutlined, MenuOutlined, SettingOutlined, EditOutlined, FontColorsOutlined, DeleteOutlined } from '@ant-design/icons'
+
+import asyncComponent from '@/utils/asyncComponent'
+import asyncIconComponent from '@/utils/asyncIconComponent'
+import { resetStyle } from '@/utils/utils-custom.js'
+import MKEmitter from '@/utils/events.js'
+import getWrapForm from './options'
+import './index.scss'
+
+const NormalForm = asyncIconComponent(() => import('@/components/normalform'))
+const CopyComponent = asyncIconComponent(() => import('@/menu/components/share/copycomponent'))
+const PasteComponent = asyncIconComponent(() => import('@/menu/components/share/pastecomponent'))
+const NormalHeader = asyncComponent(() => import('@/menu/components/share/normalheader'))
+const SettingComponent = asyncIconComponent(() => import('@/menu/datasource'))
+
+class CommonMenuBar extends Component {
+  static propTpyes = {
+    card: PropTypes.object,
+    deletecomponent: PropTypes.func,
+    updateConfig: PropTypes.func,
+  }
+
+  state = {
+    card: null,
+    back: false
+  }
+
+  UNSAFE_componentWillMount () {
+    const { card } = this.props
+
+    if (card.isNew) {
+      let _card = {
+        uuid: card.uuid,
+        type: card.type,
+        tabId: '',
+        parentId: '',
+        format: 'object',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
+        pageable: false,    // 缁勪欢灞炴�� - 鏄惁鍙垎椤�
+        switchable: false,  // 缁勪欢灞炴�� - 鏁版嵁鏄惁鍙垏鎹�
+        dataName: card.dataName || '',
+        width: card.width || 24,
+        name: card.name,
+        subtype: card.subtype,
+        setting: { interType: 'system' },
+        wrap: { name: card.name, width: card.width || 24, title: '鎴戠殑鑿滃崟', menuWidth: 6 },
+        style: { marginLeft: '0px', marginRight: '0px', marginTop: '8px', marginBottom: '8px' },
+        headerStyle: { fontSize: '16px', borderBottomWidth: '1px', borderBottomColor: '#e8e8e8' },
+        subMenus: []
+      }
+
+      if (card.config) {
+        let config = fromJS(card.config).toJS()
+
+        _card.wrap = config.wrap
+        _card.wrap.name = card.name
+        _card.style = config.style
+        _card.headerStyle = config.headerStyle
+      }
+      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)
+  }
+
+  changeStyle = () => {
+    const { card } = this.state
+
+    MKEmitter.emit('changeStyle', [card.uuid], ['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)
+  }
+
+  updateWrap = (res) => {
+    let card = {...this.state.card, wrap: res}
+    if (res.datatype === 'dynamic' && !card.format) {
+      card.format = 'object'
+      card.pageable = false
+      card.switchable = false
+      card.setting = { interType: 'system' }
+      card.columns = []
+      card.scripts = []
+    }
+    this.updateComponent(card)
+  }
+
+  clickComponent = (e) => {
+    if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') {
+      e.stopPropagation()
+      MKEmitter.emit('clickComponent', this.state.card)
+    }
+  }
+
+  render() {
+    const { card } = this.state
+    let _style = resetStyle(card.style)
+
+    return (
+      <div className="menu-commonbar-edit-box" style={_style} onClick={this.clickComponent} id={card.uuid}>
+        {card.wrap.title ? <NormalHeader config={card} updateComponent={this.updateComponent}/> : null}
+        <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
+          <div className="mk-popover-control">
+            <NormalForm title="鑿滃崟璁剧疆" width={800} update={this.updateWrap} getForms={this.getWrapForms}>
+              <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/>
+            </NormalForm>
+            <CopyComponent type="menubar" card={card}/>
+            <PasteComponent config={card} options={['menucell']} updateConfig={this.updateComponent} />
+            <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} />
+            <DeleteOutlined className="close" title="鍒犻櫎缁勪欢" onClick={() => this.props.deletecomponent(card.uuid)} />
+            {card.wrap.datatype === 'dynamic' ? <SettingComponent config={card} updateConfig={this.updateComponent} /> : null}
+            {card.wrap.datatype !== 'dynamic' ? <SettingOutlined style={{color: '#eeeeee', cursor: 'not-allowed'}}/> : null}
+          </div>
+        } trigger="hover">
+          <ToolOutlined />
+        </Popover>
+        <div className={(card.wrap.layout || 'grid') + '-layout'}>
+          <Col span={card.wrap.menuWidth || 24}>
+            <div className="menu-item">
+              <div className="menu-sign">
+                <MenuOutlined />
+              </div>
+              <div className="menu-name" >甯哥敤鑿滃崟</div>
+              <RightOutlined className="menu-right" />
+            </div>
+          </Col>
+        </div>
+      </div>
+    )
+  }
+}
+
+export default CommonMenuBar
\ No newline at end of file
diff --git a/src/mob/components/menubar/common-menubar/index.scss b/src/mob/components/menubar/common-menubar/index.scss
new file mode 100644
index 0000000..d28f371
--- /dev/null
+++ b/src/mob/components/menubar/common-menubar/index.scss
@@ -0,0 +1,105 @@
+.menu-commonbar-edit-box {
+  position: relative;
+  box-sizing: border-box;
+  background: #ffffff;
+  background-position: center center;
+  background-repeat: no-repeat;
+  background-size: cover;
+  min-height: 20px;
+  
+  .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);
+  }
+  .menu-right {
+    display: none;
+  }
+  .vertical-layout {
+    >.ant-col {
+      width: 100%;
+      .menu-item {
+        display: flex;
+        align-items: center;
+        .menu-sign {
+          margin-right: 10px;
+        }
+        .menu-name {
+          text-align: inherit;
+          flex: 10;
+        }
+        .menu-right {
+          margin-left: 5px;
+          display: inline-block;
+        }
+      }
+    }
+  }
+  .flex-layout {
+    display: flex;
+    >.ant-col {
+      flex: 1;
+      width: 5%;
+    }
+  }
+
+  .menu-item {
+    overflow: hidden;
+    position: relative;
+    min-height: 20px;
+    padding: 15px;
+    .menu-name {
+      text-align: center;
+      font-style: inherit;
+      font-weight: inherit;
+      white-space: nowrap;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      font-size: 17px;
+      line-height: 2;
+    }
+    .menu-sign {
+      position: relative;
+      text-align: center;
+      .anticon {
+        border-radius: 15%;
+        color: #ffffff;
+        font-size: 20px;
+        padding: 12px;
+        background: #1890ff;
+      }
+      .am-badge-text {
+        position: absolute;
+        height: 8px;
+        width: 8px;
+        border-radius: 100%;
+        background: #ff5b05;
+        z-index: 1;
+      }
+    }
+  }
+}
+.menu-commonbar-edit-box::after {
+  display: block;
+  content: ' ';
+  clear: both;
+}
+.menu-commonbar-edit-box:hover {
+  z-index: 1;
+  box-shadow: 0px 0px 4px #1890ff;
+}
diff --git a/src/mob/components/menubar/common-menubar/options.jsx b/src/mob/components/menubar/common-menubar/options.jsx
new file mode 100644
index 0000000..114ec44
--- /dev/null
+++ b/src/mob/components/menubar/common-menubar/options.jsx
@@ -0,0 +1,84 @@
+/**
+ * @description Wrap琛ㄥ崟閰嶇疆淇℃伅
+ */
+export default function (wrap) {
+  const menuWrapForm = [
+    {
+      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: 'number',
+      field: 'maxcount',
+      label: '鑿滃崟鏁�',
+      initval: wrap.maxcount || '',
+      tooltip: '鑿滃崟鐨勬渶澶ф樉绀烘暟閲忥紝绌烘椂涓嶅仛闄愬埗銆�',
+      min: 1,
+      max: 9999,
+      precision: 0,
+      required: false
+    },
+    {
+      type: 'radio',
+      field: 'datatype',
+      label: '鏁版嵁鏉ユ簮',
+      initval: wrap.datatype || 'static',
+      tooltip: '閫夋嫨闈欐�佸�硷紝鏃犻渶閰嶇疆鏁版嵁婧愩��',
+      required: false,
+      options: [
+        {value: 'dynamic', label: '鍔ㄦ��'},
+        {value: 'static', label: '闈欐��'},
+      ]
+    },
+    {
+      type: 'radio',
+      field: 'layout',
+      label: '鑿滃崟甯冨眬',
+      initval: wrap.layout || 'grid',
+      required: false,
+      options: [
+        {value: 'grid', label: '鏍呮牸'},
+        {value: 'vertical', label: '涓婁笅'},
+        {value: 'flex', label: '寮规��'},
+      ],
+      controlFields: [
+        {field: 'menuWidth', values: ['grid']},
+      ],
+    },
+    {
+      type: 'number',
+      field: 'menuWidth',
+      label: '鑿滃崟瀹藉害',
+      initval: wrap.menuWidth || 6,
+      tooltip: '鏍呮牸甯冨眬锛屾瘡琛岀瓑鍒嗕负24鍒椼��',
+      min: 1,
+      max: 24,
+      precision: 0,
+      required: true
+    },
+  ]
+
+  return menuWrapForm
+} 
\ No newline at end of file
diff --git a/src/mob/components/menubar/normal-menubar/index.jsx b/src/mob/components/menubar/normal-menubar/index.jsx
index 93d9aff..13b61c7 100644
--- a/src/mob/components/menubar/normal-menubar/index.jsx
+++ b/src/mob/components/menubar/normal-menubar/index.jsx
@@ -41,7 +41,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: '',
         parentId: '',
         format: 'object',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
@@ -52,7 +51,7 @@
         name: card.name,
         subtype: card.subtype,
         setting: { interType: 'system' },
-        wrap: { name: card.name, width: card.width || 24, title: '' },
+        wrap: { name: card.name, width: card.width || 24, title: '', permission: 'true' },
         style: { marginLeft: '0px', marginRight: '0px', marginTop: '8px', marginBottom: '8px' },
         headerStyle: { fontSize: '16px', borderBottomWidth: '1px', borderBottomColor: '#e8e8e8' },
         subMenus: [{
@@ -145,20 +144,27 @@
   /**
    * @description 鍗曚釜鍗$墖淇℃伅鏇存柊
    */
-  deleteCard = (cell) => {
+  deleteCard = (cell, type) => {
     let card = fromJS(this.state.card).toJS()
     let _this = this
 
-    confirm({
-      content: '纭畾鍒犻櫎鍗$墖鍚楋紵',
-      onOk() {
-        card.subMenus = card.subMenus.filter(item => item.uuid !== cell.uuid)
-
-        _this.setState({card})
-        _this.props.updateConfig(card)
-      },
-      onCancel() {}
-    })
+    if (type !== 'direct') {
+      confirm({
+        content: '纭畾鍒犻櫎鍗$墖鍚楋紵',
+        onOk() {
+          card.subMenus = card.subMenus.filter(item => item.uuid !== cell.uuid)
+  
+          _this.setState({card})
+          _this.props.updateConfig(card)
+        },
+        onCancel() {}
+      })
+    } else {
+      card.subMenus = card.subMenus.filter(item => item.uuid !== cell.uuid)
+  
+      this.setState({card})
+      this.props.updateConfig(card)
+    }
   }
 
   changeStyle = () => {
@@ -186,7 +192,7 @@
 
     let newcard = {
       uuid: Utils.getuuid(),
-      setting: { type: 'menu', width: 6, sign: 'icon', icon: 'user', name: '瀹㈡埛', url: '', color: '#ffffff', iconFont: 20, padding: 12, background: '#1890ff', imgWidth: '' },
+      setting: { type: 'menu', width: 6, sign: 'icon', icon: '', name: '', url: '', color: '#ffffff', iconFont: 20, padding: 12, background: '#1890ff', imgWidth: '' },
       style: {
         paddingTop: '15px', paddingBottom: '15px'
       }
@@ -195,12 +201,28 @@
     if (card.subMenus.length > 0) {
       newcard = fromJS(card.subMenus.slice(-1)[0]).toJS()
       newcard.uuid = Utils.getuuid()
+
+      newcard.setting.clearMenu = 'true'
+      newcard.setting.icon = ''
+      newcard.setting.name = ''
+      newcard.setting.MenuNo = ''
+      newcard.setting.type = 'menu'
+      newcard.setting.copyMenuId = ''
+      newcard.setting.linkMenuId = ''
+      newcard.setting.linkurl = ''
+      newcard.setting.tip = ''
+      newcard.setting.url = ''
     }
 
     card.subMenus.push(newcard)
     
     this.setState({card})
     this.props.updateConfig(card)
+
+    setTimeout(() => {
+      let node = document.getElementById(newcard.uuid)
+      node && node.click()
+    }, 200)
   }
 
   move = (item, direction) => {
@@ -252,18 +274,6 @@
   render() {
     const { card } = this.state
 
-    let offset = 0
-    if (card.wrap.cardFloat && card.wrap.cardFloat !== 'left') {
-      let _width = 0
-      card.subMenus.forEach(card => {
-        _width += card.setting.width
-      })
-      offset = _width < 24 ? 24 - _width : 0
-      if (card.wrap.cardFloat === 'center') {
-        offset = Math.floor(offset / 2)
-      }
-    }
-
     let _style = resetStyle(card.style)
 
     return (
@@ -286,7 +296,9 @@
         } trigger="hover">
           <ToolOutlined />
         </Popover>
-        {card.subMenus.map((menu, index) => (<MenuComponent key={menu.uuid} offset={!index ? offset : 0} cards={card} card={menu} move={this.move} updateElement={this.updateCard} deleteElement={this.deleteCard}/>))}
+        <div className={(card.wrap.layout || 'grid') + '-layout'}>
+          {card.subMenus.map((menu, index) => (<MenuComponent key={menu.uuid} cards={card} card={menu} move={this.move} updateElement={this.updateCard} deleteElement={this.deleteCard}/>))}
+        </div>
       </div>
     )
   }
diff --git a/src/mob/components/menubar/normal-menubar/index.scss b/src/mob/components/menubar/normal-menubar/index.scss
index 0686562..8732c16 100644
--- a/src/mob/components/menubar/normal-menubar/index.scss
+++ b/src/mob/components/menubar/normal-menubar/index.scss
@@ -17,7 +17,7 @@
       padding: 1px;
     }
   }
-  .anticon-tool {
+  >.anticon-tool {
     position: absolute;
     z-index: 2;
     font-size: 16px;
@@ -27,6 +27,36 @@
     padding: 5px;
     background: rgba(255, 255, 255, 0.55);
   }
+  .menu-right {
+    display: none;
+  }
+  .vertical-layout {
+    >.ant-col {
+      width: 100%;
+      .menu-item {
+        display: flex;
+        align-items: center;
+        .menu-sign {
+          margin-right: 10px;
+        }
+        .menu-name {
+          text-align: inherit;
+          flex: 10;
+        }
+        .menu-right {
+          margin-left: 5px;
+          display: inline-block;
+        }
+      }
+    }
+  }
+  .flex-layout {
+    display: flex;
+    >.ant-col {
+      flex: 1;
+      width: 5%;
+    }
+  }
 
   .menu-item {
     overflow: hidden;
diff --git a/src/mob/components/menubar/normal-menubar/menucomponent/index.jsx b/src/mob/components/menubar/normal-menubar/menucomponent/index.jsx
index 2fe6362..daac1c6 100644
--- a/src/mob/components/menubar/normal-menubar/menucomponent/index.jsx
+++ b/src/mob/components/menubar/normal-menubar/menucomponent/index.jsx
@@ -2,7 +2,7 @@
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
 import { Popover, Col } from 'antd'
-import { SwapOutlined, ArrowLeftOutlined, ArrowRightOutlined, EditOutlined, FontColorsOutlined, DeleteOutlined } from '@ant-design/icons'
+import { SwapOutlined, ArrowLeftOutlined, ArrowRightOutlined, EditOutlined, FontColorsOutlined, DeleteOutlined, RightOutlined } from '@ant-design/icons'
 
 import asyncIconComponent from '@/utils/asyncIconComponent'
 import Utils from '@/utils/utils.js'
@@ -17,7 +17,6 @@
 
 class MenuBoxComponent extends Component {
   static propTpyes = {
-    offset: PropTypes.any,           // 鍋忕Щ閲�
     cards: PropTypes.object,         // 鍗$墖琛岄厤缃俊鎭�
     card: PropTypes.object,          // 鍗$墖閰嶇疆淇℃伅
     move: PropTypes.func,            // 鍗$墖绉诲姩
@@ -76,7 +75,7 @@
     const { card } = this.state
 
     let _style = card.style ? fromJS(card.style).toJS() : {}
-    let options = ['font', 'border', 'padding']
+    let options = ['font', 'border', 'padding', 'margin', 'background']
 
     MKEmitter.emit('changeStyle', [cards.uuid, card.uuid], options, _style)
   }
@@ -110,6 +109,7 @@
       MKEmitter.emit('changeEditMenu', {
         MenuID: card.setting.type === 'linkmenu' ? card.setting.linkMenuId : card.uuid,
         copyMenuId: card.setting.type === 'menu' ? card.setting.copyMenuId : '',
+        clearMenu: card.setting.clearMenu || 'true',
         MenuNo: card.setting.MenuNo || '',
         MenuName: card.setting.name,
       })
@@ -117,7 +117,6 @@
   }
 
   render() {
-    const { offset } = this.props
     const { card } = this.state
 
     let _style = {...card.style}
@@ -125,7 +124,7 @@
     _style = resetStyle(_style)
 
     return (
-      <Col span={card.setting.width || 6} offset={offset || 0}>
+      <Col span={card.setting.width || 6}>
         <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
           <div className="mk-popover-control">
             <NormalForm title="鑿滃崟缂栬緫" width={900} update={this.updateSetting} getForms={this.getSettingForms}>
@@ -151,14 +150,19 @@
                 padding: card.setting.padding,
                 background: card.setting.background,
                 color: card.setting.color,
-                borderRadius: card.setting.borderRadius || '15%'
-              }} type={card.setting.icon}/>
+                borderRadius: card.setting.borderRadius || '15%',
+                opacity: !card.setting.icon ? 0 : 1
+              }} type={card.setting.icon || 'cloud'}/>
               {card.setting.tip ? <sup className="am-badge-text"></sup> : null}
             </div> : <div className="menu-sign">
               <img style={{width: card.setting.imgWidth, height: card.setting.imgWidth, borderRadius: card.setting.borderRadius || '15%'}} src={card.setting.url} alt=""/>
               {card.setting.tip ? <sup className="am-badge-text"></sup> : null}
             </div>}
-            <div className="menu-name">{card.setting.name}</div>
+            <div className="menu-name" style={{opacity: !card.setting.name ? 0 : 1}}>{card.setting.name || '鏄庣'}</div>
+            <RightOutlined className="menu-right" />
+            {!card.setting.name ? <NormalForm title="鑿滃崟缂栬緫" width={900} update={this.updateSetting} cancel={() => this.props.deleteElement(card, 'direct')} getForms={this.getSettingForms}>
+              <span id={card.uuid}></span>
+            </NormalForm> : null}
           </div>
         </Popover>
       </Col>
diff --git a/src/mob/components/menubar/normal-menubar/menucomponent/options.jsx b/src/mob/components/menubar/normal-menubar/menucomponent/options.jsx
index fd5ce24..ed3e96c 100644
--- a/src/mob/components/menubar/normal-menubar/menucomponent/options.jsx
+++ b/src/mob/components/menubar/normal-menubar/menucomponent/options.jsx
@@ -64,7 +64,23 @@
       initval: setting.copyMenuId || '',
       tooltip: '澶嶅埗鑿滃崟浠呭湪褰撳墠鑿滃崟鍒涘缓鏃舵湁鏁堛��',
       required: false,
-      options: menulist
+      options: menulist,
+      extendName: 'MenuNo',
+      controlFields: [
+        {field: 'clearMenu', notNull: true},
+      ],
+    },
+    {
+      type: 'radio',
+      field: 'clearMenu',
+      label: '娓呯┖鍏宠仈鑿滃崟',
+      initval: setting.clearMenu || 'true',
+      tooltip: '澶嶅埗鑿滃崟鏃讹紝鏄惁娓呯┖鍘熼〉闈腑鐨勫叧鑱旇彍鍗曘��',
+      required: false,
+      options: [
+        {value: 'true', label: '鏄�'},
+        {value: 'false', label: '鍚�'}
+      ]
     },
     {
       type: 'select',
@@ -72,6 +88,7 @@
       label: '鍏宠仈鑿滃崟',
       initval: setting.linkMenuId || '',
       required: true,
+      extendName: 'MenuNo',
       options: [
         ...menulist,
         // {value: 'IM', label: '鍗虫椂閫氫俊锛堢郴缁熼〉锛�'},
diff --git a/src/mob/components/menubar/normal-menubar/options.jsx b/src/mob/components/menubar/normal-menubar/options.jsx
index 45e6b8a..0cdd7bc 100644
--- a/src/mob/components/menubar/normal-menubar/options.jsx
+++ b/src/mob/components/menubar/normal-menubar/options.jsx
@@ -40,7 +40,42 @@
         {value: 'dynamic', label: '鍔ㄦ��'},
         {value: 'static', label: '闈欐��'},
       ]
-    }
+    },
+    {
+      type: 'radio',
+      field: 'layout',
+      label: '鑿滃崟甯冨眬',
+      initval: wrap.layout || 'grid',
+      required: false,
+      options: [
+        {value: 'grid', label: '鏍呮牸'},
+        {value: 'vertical', label: '涓婁笅'},
+        {value: 'flex', label: '寮规��'},
+      ]
+    },
+    {
+      type: 'radio',
+      field: 'common',
+      label: '甯哥敤',
+      initval: wrap.common || 'true',
+      tooltip: '褰撳墠鑿滃崟缁勪腑鐨勮彍鍗曟槸鍚﹀彲娣诲姞鑷冲父鐢ㄨ彍鍗曠粍銆�',
+      required: false,
+      options: [
+        {value: 'true', label: '鍙坊鍔�'},
+        {value: 'false', label: '涓嶅彲娣诲姞'},
+      ]
+    },
+    {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ]
+    },
   ]
 
   return menuWrapForm
diff --git a/src/mob/components/navbar/normal-navbar/index.jsx b/src/mob/components/navbar/normal-navbar/index.jsx
index 680cd0a..8244a70 100644
--- a/src/mob/components/navbar/normal-navbar/index.jsx
+++ b/src/mob/components/navbar/normal-navbar/index.jsx
@@ -32,7 +32,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         format: 'object',   // 缁勪欢灞炴�� - 鏁版嵁鏍煎紡
         pageable: false,    // 缁勪欢灞炴�� - 鏄惁鍙垎椤�
         switchable: false,  // 缁勪欢灞炴�� - 鏁版嵁鏄惁鍙垏鎹�
diff --git a/src/mob/components/navbar/normal-navbar/menus/drags/card.jsx b/src/mob/components/navbar/normal-navbar/menus/drags/card.jsx
index 11e395f..fe9dd41 100644
--- a/src/mob/components/navbar/normal-navbar/menus/drags/card.jsx
+++ b/src/mob/components/navbar/normal-navbar/menus/drags/card.jsx
@@ -36,6 +36,7 @@
       MKEmitter.emit('changeEditMenu', {
         MenuID: card.property === 'linkmenu' ? card.linkMenuId : card.MenuID,
         copyMenuId: card.property === 'menu' ? card.copyMenuId : '',
+        clearMenu: card.clearMenu || 'true',
         MenuNo: card.MenuNo,
         MenuName: card.name
       })
diff --git a/src/mob/components/navbar/normal-navbar/menus/menuform/index.jsx b/src/mob/components/navbar/normal-navbar/menus/menuform/index.jsx
index 441de0a..8efdcec 100644
--- a/src/mob/components/navbar/normal-navbar/menus/menuform/index.jsx
+++ b/src/mob/components/navbar/normal-navbar/menus/menuform/index.jsx
@@ -18,6 +18,7 @@
 
   state = {
     property: this.props.menu.property || 'menu',
+    copyMenu: this.props.menu.copyMenuId || '',
     appMenus: [],
   }
 
@@ -75,7 +76,7 @@
   render() {
     const { menu, cols } = this.props
     const { getFieldDecorator } = this.props.form
-    const { property, appMenus } = this.state
+    const { property, appMenus, copyMenu } = this.state
 
     const formItemLayout = {
       labelCol: {
@@ -192,10 +193,14 @@
                   message: '璇烽�夋嫨鍏宠仈鑿滃崟!'
                 }]
               })(
-                <Select>
-                  {appMenus.map(item => (<Select.Option key={item.MenuID} value={item.MenuID}>{item.MenuName}</Select.Option>))}
+                <Select
+                  showSearch
+                  filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0 ||
+                    option.props.extend.toLowerCase().indexOf(input.toLowerCase()) >= 0}
+                >
+                  {appMenus.map(item => (<Select.Option key={item.MenuID} extend={item.MenuNo || ''} value={item.MenuID}>{item.MenuName}</Select.Option>))}
                   {/* <Select.Option key="IM" value="IM">鍗虫椂閫氫俊锛堢郴缁熼〉锛�</Select.Option> */}
-                  <Select.Option key="AIService" value="AIService">鏅鸿兘瀹㈡湇锛堢郴缁熼〉锛�</Select.Option>
+                  <Select.Option key="AIService" extend={''} value="AIService">鏅鸿兘瀹㈡湇锛堢郴缁熼〉锛�</Select.Option>
                 </Select>
               )}
             </Form.Item>
@@ -210,12 +215,35 @@
               {getFieldDecorator('copyMenuId', {
                 initialValue: menu.copyMenuId || ''
               })(
-                <Select>
-                  {appMenus.map(item => (<Select.Option key={item.MenuID} value={item.MenuID}>{item.MenuName}</Select.Option>))}
+                <Select
+                  allowClear
+                  showSearch
+                  filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0 ||
+                    option.props.extend.toLowerCase().indexOf(input.toLowerCase()) >= 0}
+                  onChange={(val) => this.setState({copyMenu: val})}
+                >
+                  {appMenus.map(item => (<Select.Option key={item.MenuID} extend={item.MenuNo || ''} value={item.MenuID}>{item.MenuName}</Select.Option>))}
                 </Select>
               )}
             </Form.Item>
           </Col> : null}
+          {property === 'menu' && copyMenu ? <Col span={12}>
+            <Form.Item label={
+              <Tooltip placement="topLeft" title="澶嶅埗鑿滃崟鏃讹紝鏄惁娓呯┖鍘熼〉闈腑鐨勫叧鑱旇彍鍗曘��">
+                <QuestionCircleOutlined className="mk-form-tip" />
+                娓呯┖鍏宠仈鑿滃崟
+              </Tooltip>
+            }>
+              {getFieldDecorator('clearMenu', {
+                initialValue: menu.clearMenu || 'true'
+              })(
+                <Radio.Group>
+                  <Radio value="true">鏄�</Radio>
+                  <Radio value="false">鍚�</Radio>
+                </Radio.Group>
+              )}
+            </Form.Item>
+          </Col> : null}
         </Row>
       </Form>
     )
diff --git a/src/mob/components/navbar/normal-navbar/options.jsx b/src/mob/components/navbar/normal-navbar/options.jsx
index 2a7ebc2..1b4f32e 100644
--- a/src/mob/components/navbar/normal-navbar/options.jsx
+++ b/src/mob/components/navbar/normal-navbar/options.jsx
@@ -38,7 +38,18 @@
       max: 200,
       precision: 0,
       required: true
-    }
+    },
+    {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ]
+    },
   ]
 
   return wrapForm
diff --git a/src/mob/components/search/single-search/index.jsx b/src/mob/components/search/single-search/index.jsx
index 6f11afb..ec9400c 100644
--- a/src/mob/components/search/single-search/index.jsx
+++ b/src/mob/components/search/single-search/index.jsx
@@ -39,7 +39,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         width: 24,
diff --git a/src/mob/components/search/single-search/options.jsx b/src/mob/components/search/single-search/options.jsx
index 8b31c35..7acafab 100644
--- a/src/mob/components/search/single-search/options.jsx
+++ b/src/mob/components/search/single-search/options.jsx
@@ -46,6 +46,18 @@
     },
     {
       type: 'radio',
+      field: 'focus',
+      label: '鑷姩鑱氱劍',
+      initval: wrap.focus || 'false',
+      tooltip: '娉細ios绯荤粺涓棤鏁堛��',
+      required: false,
+      options: [
+        {value: 'true', label: '鏄�'},
+        {value: 'false', label: '鍚�'},
+      ]
+    },
+    {
+      type: 'radio',
       field: 'required',
       label: '蹇呭~',
       initval: wrap.required || 'false',
@@ -108,7 +120,18 @@
       precision: 0,
       initval: wrap.height || 32,
       required: false
-    }
+    },
+    {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ]
+    },
   ]
 
   return wrapForm
diff --git a/src/mob/components/tabs/antv-tabs/index.jsx b/src/mob/components/tabs/antv-tabs/index.jsx
index c644570..108b32a 100644
--- a/src/mob/components/tabs/antv-tabs/index.jsx
+++ b/src/mob/components/tabs/antv-tabs/index.jsx
@@ -1,7 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Tabs, Popover, Modal } from 'antd'
+import { Tabs, Popover, Modal, notification } from 'antd'
 import { ToolOutlined, PlusOutlined, EditOutlined, FontColorsOutlined, DeleteOutlined, CloseOutlined } from '@ant-design/icons'
 
 import MKEmitter from '@/utils/events.js'
@@ -44,7 +44,6 @@
       let _tabs = {
         uuid: tabs.uuid,
         type: tabs.type,
-        floor: tabs.floor,
         tabId: tabs.tabId || '',
         parentId: tabs.parentId || '',
         subtype: tabs.subtype,
@@ -53,9 +52,9 @@
         setting: {width: 24, position: 'top', tabStyle: 'line', name: tabs.name},
         style: { marginLeft: '8px', marginRight: '8px', marginTop: '8px', marginBottom: '8px' },
         subtabs: [
-          { uuid: Utils.getuuid(), parentId: tabs.uuid, floor: tabs.floor, label: 'Tab 1', icon: '', components: [] },
-          { uuid: Utils.getuuid(), parentId: tabs.uuid, floor: tabs.floor, label: 'Tab 2', icon: '', components: [] },
-          { uuid: Utils.getuuid(), parentId: tabs.uuid, floor: tabs.floor, label: 'Tab 3', icon: '', components: [] }
+          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 1', icon: '', components: [] },
+          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 2', icon: '', components: [] },
+          { uuid: Utils.getuuid(), parentId: tabs.uuid, label: 'Tab 3', icon: '', components: [] }
         ]
       }
 
@@ -254,6 +253,15 @@
   insert = (item, tab) => {
     let tabs = fromJS(this.state.tabs).toJS()
 
+    if (item.type === 'search') {
+      notification.warning({
+        top: 92,
+        message: '绉诲姩绔悳绱㈢粍浠朵笉鍙矘璐达紒',
+        duration: 5
+      })
+      return
+    }
+
     tabs.subtabs.forEach(stab => {
       if (stab.uuid === tab.uuid) {
         stab.components.push(item)
@@ -310,7 +318,6 @@
       tab = {
         uuid: '',
         parentId: tabs.uuid,
-        floor: tabs.floor,
         label: '',
         icon: '',
         components: []
@@ -331,6 +338,9 @@
     editab.label = res.label
     editab.icon = res.icon
     // editab.hasSearch = res.hasSearch || ''
+    editab.hide = res.hide || 'false'
+    editab.backgroundColor = res.backgroundColor
+    editab.controlVal = res.controlVal || ''
     editab.blacklist = res.blacklist
 
     if (editab.uuid) {
@@ -357,7 +367,7 @@
   getTabsForms = () => {
     const { tabs } = this.state
 
-    return getTabsSetForm(tabs.setting)
+    return getTabsSetForm(tabs.setting, tabs.uuid)
   }
 
   updateTabs = (res) => {
@@ -383,12 +393,12 @@
 
     return (
       <div className={'mob-tabs-edit-box ' + tabs.setting.display} style={_style} onClick={this.clickComponent} id={tabs.uuid}>
-        <DraggableTabs defaultActiveKey={defaultActiveKey} tabPosition={'top'} type={tabs.setting.tabStyle} tabsMove={this.moveSwitch} onChange={this.onChange}>
+        <DraggableTabs defaultActiveKey={defaultActiveKey} tabBarStyle={{background: tabs.setting.backgroundColor || 'transparent'}} tabPosition={'top'} type={tabs.setting.tabStyle} tabsMove={this.moveSwitch} onChange={this.onChange}>
           {tabs.subtabs.map(tab => (
             <TabPane tab={
               <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
                 <div className="mk-popover-control">
-                  <NormalForm title="鏍囩缂栬緫" width={600} update={this.updateTab} getForms={() => this.getTabForms(tab)}>
+                  <NormalForm title="鏍囩缂栬緫" width={800} update={this.updateTab} getForms={() => this.getTabForms(tab)}>
                     <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/>
                   </NormalForm>
                   <PasteComponent Tab={tab} insert={this.insert} />
@@ -396,9 +406,9 @@
                   <CloseOutlined className="close" onClick={() => this.delTab(tab)} />
                 </div>
               } trigger="hover">
-                <span style={_tabStyle}>{tab.icon ? <MkIcon type={tab.icon} /> : null}{tab.label}</span>
+                <span style={{..._tabStyle, textDecoration: tab.hide === 'true' ? 'line-through' : 'none'}}>{tab.icon ? <MkIcon type={tab.icon} /> : null}{tab.label}</span>
               </Popover>
-            } key={tab.uuid}>
+            } key={tab.uuid} style={{backgroundColor: tab.backgroundColor || 'transparent'}}>
               {/* {appType === 'mob' && tabs.setting.display === 'inline-block' && tab.hasSearch === 'icon' ?
                 <SearchOutlined className="search-icon" onDoubleClick={() => this.setSearch(tab)}/> : null} */}
               <TabComponents config={tab} handleList={this.updateTabComponent} deleteCard={this.deleteCard} />
@@ -407,10 +417,10 @@
         </DraggableTabs>
         <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
           <div className="mk-popover-control">
-            <NormalForm title="娣诲姞鏍囩" width={600} update={this.updateTab} getForms={() => this.getTabForms()}>
+            <NormalForm title="娣诲姞鏍囩" width={800} update={this.updateTab} getForms={() => this.getTabForms()}>
               <PlusOutlined className="plus" title="娣诲姞鏍囩"/>
             </NormalForm>
-            <NormalForm title="鏍囩椤佃缃�" width={700} update={this.updateTabs} getForms={this.getTabsForms}>
+            <NormalForm title="鏍囩椤佃缃�" width={800} update={this.updateTabs} getForms={this.getTabsForms}>
               <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/>
             </NormalForm>
             <CopyComponent type="tabs" card={tabs}/>
diff --git a/src/mob/components/tabs/antv-tabs/options.jsx b/src/mob/components/tabs/antv-tabs/options.jsx
index 43ac1d4..74643d9 100644
--- a/src/mob/components/tabs/antv-tabs/options.jsx
+++ b/src/mob/components/tabs/antv-tabs/options.jsx
@@ -1,8 +1,10 @@
+import MenuUtils from '@/utils/utils-custom.js'
+
 /**
  * @description Wrap琛ㄥ崟閰嶇疆淇℃伅
  */
 export function getTabForm(tab, setting) {
-  let appType = sessionStorage.getItem('appType')
+  // let appType = sessionStorage.getItem('appType')
   let roleList = sessionStorage.getItem('sysRoles')
 
   if (roleList) {
@@ -23,7 +25,6 @@
       initval: tab.label || '',
       required: true,
       focus: true,
-      span: 22
     },
     {
       type: 'mkicon',
@@ -32,7 +33,6 @@
       initval: tab.icon || '',
       required: false,
       allowClear: true,
-      span: 22
     },
     // {
     //   type: 'radio',
@@ -48,15 +48,40 @@
     //   span: 22
     // },
     {
-      type: 'multiselect',
-      field: 'blacklist',
-      label: '榛戝悕鍗�',
-      initval: tab.blacklist || [],
-      required: false,
-      options: roleList,
-      forbid: !!appType,
-      span: 22
+      type: 'text',
+      field: 'controlVal',
+      label: '闅愯棌鏍囪',
+      initval: tab.controlVal || '',
+      tooltip: '褰撶鐢ㄥ瓧娈靛�间笌闅愯棌鏍囪鐩哥瓑鏃讹紝鏍囩椤典細闅愯棌銆�',
+      required: false
     },
+    {
+      type: 'color',
+      field: 'backgroundColor',
+      label: '鑳屾櫙(鍐呭鍖�)',
+      initval: tab.backgroundColor || 'transparent',
+      required: false,
+    },
+    {
+      type: 'radio',
+      field: 'hide',
+      label: '闅愯棌',
+      initval: tab.hide || 'false',
+      required: false,
+      options: [
+        {value: 'false', label: '鍚�'},
+        {value: 'true', label: '鏄�'},
+      ],
+    },
+    // {
+    //   type: 'multiselect',
+    //   field: 'blacklist',
+    //   label: '榛戝悕鍗�',
+    //   initval: tab.blacklist || [],
+    //   required: false,
+    //   options: roleList,
+    //   forbid: !!appType,
+    // },
   ]
 
   return tabForm
@@ -65,7 +90,9 @@
 /**
  * @description tabs琛ㄥ崟閰嶇疆淇℃伅
  */
-export function getTabsSetForm(setting) {
+export function getTabsSetForm(setting, uuid) {
+  let modules = MenuUtils.getSupModules(window.GLOB.customMenu.components, uuid) || []
+
   const tabForm = [
     {
       type: 'text',
@@ -112,7 +139,46 @@
         {value: 'flex', label: '寮规�у竷灞�'},
         {value: 'inline-block', label: '瀹氬'},
       ],
-    }
+    },
+    {
+      type: 'cascader',
+      field: 'supModule',
+      label: '涓婄骇缁勪欢',
+      initval: setting.supModule || [],
+      tooltip: '鏍囩缁勫彲浠ラ�夋嫨涓婄骇缁勪欢锛屽~鍏ョ鐢ㄥ瓧娈碉紝鐢ㄤ簬鎺у埗鏍囩闅愯棌銆�',
+      required: false,
+      allowClear: true,
+      options: modules,
+      controlFields: [
+        {field: 'controlField', notNull: true},
+      ],
+    },
+    {
+      type: 'text',
+      field: 'controlField',
+      label: '绂佺敤瀛楁',
+      initval: setting.controlField || '',
+      tooltip: '鐢ㄤ簬鎺у埗鏍囩闅愯棌鐨勫瓧娈碉紝鍦ㄦ爣绛句腑濉叆闅愯棌鏍囪銆�',
+      required: true
+    },
+    {
+      type: 'color',
+      field: 'backgroundColor',
+      label: '鑳屾櫙(鏍囬鏍�)',
+      initval: setting.backgroundColor || 'transparent',
+      required: false
+    },
+    {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: setting.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ]
+    },
   ]
 
   return tabForm
diff --git a/src/mob/components/tabs/tabcomponents/card.jsx b/src/mob/components/tabs/tabcomponents/card.jsx
index 2d1ace5..bbd5724 100644
--- a/src/mob/components/tabs/tabcomponents/card.jsx
+++ b/src/mob/components/tabs/tabcomponents/card.jsx
@@ -29,7 +29,7 @@
 const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
   const originalIndex = findCard(id).index
   const [{ isDragging }, drag] = useDrag({
-    item: { type: 'menu', id, originalIndex, floor: card.floor },
+    item: { type: 'menu', id, originalIndex },
     collect: monitor => ({
       isDragging: monitor.isDragging(),
     }),
@@ -38,10 +38,10 @@
     accept: 'menu',
     canDrop: () => true,
     drop: (item) => {
-      const { id: draggedId, originalIndex, floor } = item
+      const { id: draggedId, originalIndex } = item
       if (originalIndex === undefined) {
         item.dropTargetId = id
-      } else if (draggedId && floor === card.floor) {
+      } else if (draggedId) {
         if (draggedId === id) return
         const { index: originIndex } = findCard(draggedId)
 
diff --git a/src/mob/components/tabs/tabcomponents/index.jsx b/src/mob/components/tabs/tabcomponents/index.jsx
index 3ed31ed..84ee423 100644
--- a/src/mob/components/tabs/tabcomponents/index.jsx
+++ b/src/mob/components/tabs/tabcomponents/index.jsx
@@ -75,22 +75,27 @@
       
       item.added = true
 
-      if (item.component === 'search') { // 鎼滅储缁勪欢涓嶅彲閲嶅娣诲姞
-        if (cards.filter(card => card.type === 'search').length > 0) {
+      if (item.component === 'search') { // 绉诲姩绔爣绛鹃〉涓笉鍙坊鍔犳悳绱�
+        // if (cards.filter(card => card.type === 'search').length > 0) {
+        //   notification.warning({
+        //     top: 92,
+        //     message: '鎼滅储鏉′欢涓嶅彲閲嶅娣诲姞锛�',
+        //     duration: 5
+        //   })
+        //   return
+        // }
+        item.added = false
+        return
+      } else if (item.component === 'tabs') {
+        let floor = MenuUtils.getFloor(config.parentId)
+        if (floor >= 3 ) {
           notification.warning({
             top: 92,
-            message: '鎼滅储鏉′欢涓嶅彲閲嶅娣诲姞锛�',
+            message: '鏍囩椤垫渶澶氫负涓夐噸缁撴瀯锛�',
             duration: 5
           })
           return
         }
-      } else if (item.component === 'tabs' && config.floor === 3) {
-        notification.warning({
-          top: 92,
-          message: '鏍囩椤垫渶澶氫负涓夐噸缁撴瀯锛�',
-          duration: 5
-        })
-        return
       }
 
       let name = ''
@@ -134,7 +139,6 @@
         width: item.width || 24,
         dataName: Utils.getdataName(),
         name: name,
-        floor: config.floor ? (config.floor + 1) : 2, // 缁勪欢鐨勫眰绾�
         isNew: true                                   // 鏂版坊鍔犳爣蹇楋紝鐢ㄤ簬鍒濆鍖�
       }
       
diff --git a/src/mob/components/topbar/normal-navbar/index.jsx b/src/mob/components/topbar/normal-navbar/index.jsx
index 3473c20..b8ece4c 100644
--- a/src/mob/components/topbar/normal-navbar/index.jsx
+++ b/src/mob/components/topbar/normal-navbar/index.jsx
@@ -2,11 +2,12 @@
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
 import { Popover } from 'antd'
-import { ExpandOutlined, ReloadOutlined, EllipsisOutlined, LogoutOutlined, ToolOutlined, ScanOutlined, LeftOutlined, EditOutlined, FontColorsOutlined, DeleteOutlined, SearchOutlined } from '@ant-design/icons'
+import { ExpandOutlined, ReloadOutlined, EllipsisOutlined, LogoutOutlined, ToolOutlined, ScanOutlined, LeftOutlined, EditOutlined, FontColorsOutlined, DeleteOutlined, SearchOutlined, MenuOutlined } from '@ant-design/icons'
 
 import asyncIconComponent from '@/utils/asyncIconComponent'
 import getWrapForm from './options'
 import MKEmitter from '@/utils/events.js'
+import avatar from '@/assets/img/avatar.jpg'
 import './index.scss'
 
 const NormalForm = asyncIconComponent(() => import('@/components/normalform'))
@@ -20,6 +21,7 @@
   }
 
   state = {
+    avatar: sessionStorage.getItem('CloudAvatar') || avatar,
     card: null,
     back: false
   }
@@ -31,12 +33,12 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         width: 24,
         subtype: card.subtype,
         wrap: { type: 'navbar', height: 50, title: 'NavBar', back: 'true', logout: 'false' },
         style: {boxShadow: '0 0 3px #D9D9D9', shadowColor: '#D9D9D9', shadowBlur: '3px', paddingLeft: '10px', paddingRight: '10px', lineHeight: '2.8', fontSize: '18px' },
-        searchStyle: {}
+        searchStyle: {},
+        titleStyle: {}
       }
 
       if (card.config) {
@@ -101,6 +103,8 @@
 
     if (comIds[1] === 'search') {
       _card.searchStyle = style
+    } else if (comIds[1] === 'title') {
+      _card.titleStyle = style
     } else {
       _card.style = style
     }
@@ -118,6 +122,12 @@
     MKEmitter.emit('changeStyle', [card.uuid], ['font', 'background', 'border', 'padding', 'shadow'], card.style)
   }
 
+  changeTitleStyle = () => {
+    const { card } = this.state
+
+    MKEmitter.emit('changeStyle', [card.uuid, 'title'], ['font'], card.titleStyle || {})
+  }
+
   changeSearchStyle = () => {
     const { card } = this.state
 
@@ -128,19 +138,6 @@
     if (sessionStorage.getItem('style-control') === 'true' || sessionStorage.getItem('style-control') === 'component') {
       e.stopPropagation()
       MKEmitter.emit('clickComponent', this.state.card)
-    }
-  }
-
-  changeMenu = (menu) => {
-    if (menu.property === 'link') {
-      window.open(menu.link)
-    } else {
-      MKEmitter.emit('changeEditMenu', {
-        MenuID: menu.property === 'linkmenu' ? menu.linkMenuId : menu.MenuID,
-        copyMenuId: menu.property === 'menu' ? menu.copyMenuId : '',
-        MenuNo: menu.MenuNo,
-        MenuName: menu.name,
-      })
     }
   }
 
@@ -178,6 +175,14 @@
   }
 
   updateWrap = (res) => {
+    let funs = res.funs || []
+
+    delete res.funs
+
+    funs.forEach(n => {
+      res[n] = 'true'
+    })
+
     this.updateComponent({...this.state.card, wrap: res})
   }
 
@@ -195,7 +200,7 @@
   }
 
   render() {
-    const { card } = this.state
+    const { card, avatar } = this.state
 
     let right = null
     if (card.wrap.logout === 'true') {
@@ -207,12 +212,15 @@
     if (card.wrap.refresh === 'true') {
       right = !right ? <ReloadOutlined /> : <EllipsisOutlined onDoubleClick={this.skip}/>
     }
+    if (card.wrap.menus && card.wrap.menus.length > 0) {
+      right = !right ? <MenuOutlined /> : <EllipsisOutlined onDoubleClick={this.skip}/>
+    }
 
     return (
       <div className="normal-topbar-edit-box" style={card.style} onClick={this.clickComponent} id={card.uuid}>
         <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
           <div className="mk-popover-control">
-            <NormalForm title="瀵艰埅鏍忚缃�" width={750} update={this.updateWrap} getForms={this.getWrapForms}>
+            <NormalForm title="瀵艰埅鏍忚缃�" width={850} update={this.updateWrap} getForms={this.getWrapForms}>
               <EditOutlined style={{color: '#1890ff'}} title="缂栬緫"/>
             </NormalForm>
             <CopyComponent type="topbar" card={card}/>
@@ -224,10 +232,17 @@
         </Popover>
         <div className="am-navbar">
           <div className="am-navbar-left">
-            {card.wrap.back !== 'false' ? <LeftOutlined /> : null}
+            {card.wrap.back !== 'false' && card.wrap.menuPosition !== 'left' ? <LeftOutlined /> : null}
+            {card.wrap.menuPosition === 'left' ? <div className="img" style={{backgroundImage: `url(${avatar})`}}></div> : null}
           </div>
           {card.wrap.type !== 'search' ?
-            <div className="am-navbar-title">{card.wrap.title || ''}</div> :
+            <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
+              <div className="mk-popover-control">
+                <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={this.changeTitleStyle}/>
+              </div>
+            } trigger="hover">
+              <div className="am-navbar-title" style={card.titleStyle}>{card.wrap.title || ''}</div>
+            </Popover> :
             <div className="am-navbar-search" onDoubleClick={this.setSearch}>
               <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
                 <div className="mk-popover-control">
diff --git a/src/mob/components/topbar/normal-navbar/index.scss b/src/mob/components/topbar/normal-navbar/index.scss
index fe4a5c8..46e93c6 100644
--- a/src/mob/components/topbar/normal-navbar/index.scss
+++ b/src/mob/components/topbar/normal-navbar/index.scss
@@ -36,6 +36,15 @@
       .anticon-left {
         margin: 0 8px 0 5px;
       }
+      .img {
+        width: 30px;
+        height: 30px;
+        border-radius: 4px;
+        margin-top: 9px;
+        margin-right: 5px;
+        background-size: cover;
+        background-position: center center;
+      }
     }
     .am-navbar-title {
       text-align: center;
diff --git a/src/mob/components/topbar/normal-navbar/options.jsx b/src/mob/components/topbar/normal-navbar/options.jsx
index 3185952..5a016d9 100644
--- a/src/mob/components/topbar/normal-navbar/options.jsx
+++ b/src/mob/components/topbar/normal-navbar/options.jsx
@@ -1,8 +1,17 @@
+import React from 'react'
+import MkIcon from '@/components/mk-icon'
+
 /**
  * @description Wrap琛ㄥ崟閰嶇疆淇℃伅
  */
 export default function (wrap) {
   let menulist = sessionStorage.getItem('appMenus')
+  let searchable = true
+  window.GLOB.customMenu.components.forEach(item => {
+    if (item.type === 'search') {
+      searchable = false
+    }
+  })
 
   if (menulist) {
     try {
@@ -14,6 +23,21 @@
     menulist = []
   }
 
+  let funs = []
+
+  if (wrap.back === 'true') {
+    funs.push('back')
+  }
+  if (wrap.logout === 'true') {
+    funs.push('logout')
+  }
+  if (wrap.scan === 'true') {
+    funs.push('scan')
+  }
+  if (wrap.refresh === 'true') {
+    funs.push('refresh')
+  }
+
   const topbarWrapForm = [
     {
       type: 'radio',
@@ -23,8 +47,8 @@
       required: false,
       options: [
         {value: 'navbar', label: '瀵艰埅鏍�'},
-        {value: 'search', label: '鎼滅储妗�'},
-        {value: 'searchIcon', label: '鎼滅储鏍�'},
+        {value: 'search', label: '鎼滅储妗�', disabled: !searchable},
+        {value: 'searchIcon', label: '鎼滅储鏍�', disabled: !searchable},
       ],
     },
     {
@@ -37,76 +61,101 @@
     },
     {
       type: 'radio',
-      field: 'back',
-      label: '杩斿洖',
-      initval: wrap.back || 'true',
+      field: 'menuPosition',
+      label: '鑿滃崟浣嶇疆',
+      initval: wrap.menuPosition || 'right',
+      tooltip: '鑷畾涔夎彍鍗曠殑浣嶇疆銆�',
       required: false,
       options: [
-        {value: 'true', label: '鏄剧ず'},
-        {value: 'false', label: '闅愯棌'},
+        {value: 'left', label: '宸︿晶'},
+        {value: 'right', label: '鍙充晶'},
       ],
       controlFields: [
-        {field: 'reload', values: ['true']},
+        {field: 'back', values: ['right']},
       ]
+    },
+    {
+      type: 'radio',
+      field: 'mode',
+      label: '寮规鑳屾櫙',
+      initval: wrap.mode || 'dark',
+      required: false,
+      options: [
+        {value: 'light', label: '鐧借壊'},
+        {value: 'dark', label: '榛戣壊'},
+      ]
+    },
+    {
+      type: 'checkbox',
+      field: 'funs',
+      label: '鎵╁睍鍔熻兘',
+      tooltip: '1銆佽繑鍥炰笂涓�椤碉紱2銆佺粦瀹氬叕浼楀彿鍚庡彲鍒嗕韩褰撳墠椤甸潰锛�3銆佷簩缁寸爜浠モ�渓ogin鈥濆紑澶存椂涓烘壂鐮佺櫥褰曪紝浜岀淮鐮佷互鈥渉ttp鈥濆紑澶翠负椤甸潰璺宠浆锛屼簩缁寸爜浠モ�渕kbid鈥濆紑澶翠负鑿滃崟璺宠浆锛屼笖璁剧疆鏈夊叧鑱旇彍鍗曪紱4銆佸綋鍓嶉〉闈㈠埛鏂帮紱5銆侀��鍑虹郴缁燂紝杩斿洖绗竴涓〉闈€��',
+      initval: funs,
+      required: false,
+      options: [
+        {value: 'back', label: '杩斿洖'},
+        {value: 'scan', label: '鎵竴鎵�'},
+        {value: 'refresh', label: '鍒锋柊'},
+        {value: 'logout', label: '閫�鍑�'},
+      ],
+      controlFields: [
+        {field: 'reload', values: ['back']},
+        {field: 'linkmenu', values: ['scan']},
+      ],
+      span: 24
     },
     // {
     //   type: 'radio',
-    //   field: 'search',
-    //   label: '鎼滅储',
-    //   initval: wrap.search || 'false',
+    //   field: 'back',
+    //   label: '杩斿洖',
+    //   initval: wrap.back || 'true',
+    //   required: false,
+    //   options: [
+    //     {value: 'true', label: '鏄剧ず'},
+    //     {value: 'false', label: '闅愯棌'},
+    //   ],
+    //   controlFields: [
+    //     {field: 'reload', values: ['true']},
+    //   ]
+    // },
+    // {
+    //   type: 'radio',
+    //   field: 'logout',
+    //   label: '閫�鍑�',
+    //   initval: wrap.logout || 'false',
+    //   tooltip: '鐐瑰嚮閫�鍑烘椂锛岃繑鍥炵涓�涓〉闈€��',
     //   required: false,
     //   options: [
     //     {value: 'true', label: '鏄剧ず'},
     //     {value: 'false', label: '闅愯棌'},
     //   ]
     // },
-    {
-      type: 'radio',
-      field: 'logout',
-      label: '閫�鍑�',
-      initval: wrap.logout || 'false',
-      tooltip: '鐐瑰嚮閫�鍑烘椂锛岃繑鍥炵涓�涓〉闈€��',
-      required: false,
-      options: [
-        {value: 'true', label: '鏄剧ず'},
-        {value: 'false', label: '闅愯棌'},
-      ]
-    },
-    {
-      type: 'radio',
-      field: 'scan',
-      label: '鎵竴鎵�',
-      initval: wrap.scan || 'false',
-      tooltip: '绯荤粺鍔熻兘锛�1銆佹壂鐮佺櫥褰曪紝浜岀淮鐮佷互鈥渓ogin鈥濆紑澶达紝2銆侀〉闈㈣烦杞紝浜岀淮鐮佷互鈥渉ttp鈥濆紑澶达紝3銆佽彍鍗曡烦杞紝浜岀淮鐮佷互鈥渕kbid鈥濆紑澶达紝涓旇缃叧鑱旇彍鍗�',
-      required: false,
-      options: [
-        {value: 'true', label: '鏄剧ず'},
-        {value: 'false', label: '闅愯棌'},
-      ],
-      controlFields: [
-        {field: 'linkmenu', values: ['true']},
-      ]
-    },
-    {
-      type: 'radio',
-      field: 'refresh',
-      label: '鍒锋柊',
-      initval: wrap.refresh || 'false',
-      required: false,
-      options: [
-        {value: 'true', label: '鏄剧ず'},
-        {value: 'false', label: '闅愯棌'},
-      ]
-    },
-    {
-      type: 'select',
-      field: 'linkmenu',
-      label: '鍏宠仈鑿滃崟',
-      initval: wrap.linkmenu || '',
-      tooltip: '浣跨敤鎵爜鐧诲綍鍔熻兘鎴栬彍鍗曡烦杞姛鑳芥椂锛岄渶閫夋嫨璺宠浆鐨勮彍鍗曘��',
-      required: false,
-      options: menulist
-    },
+    // {
+    //   type: 'radio',
+    //   field: 'scan',
+    //   label: '鎵竴鎵�',
+    //   initval: wrap.scan || 'false',
+    //   tooltip: '绯荤粺鍔熻兘锛�1銆佹壂鐮佺櫥褰曪紝浜岀淮鐮佷互鈥渓ogin鈥濆紑澶达紝2銆侀〉闈㈣烦杞紝浜岀淮鐮佷互鈥渉ttp鈥濆紑澶达紝3銆佽彍鍗曡烦杞紝浜岀淮鐮佷互鈥渕kbid鈥濆紑澶达紝涓旇缃叧鑱旇彍鍗�',
+    //   required: false,
+    //   options: [
+    //     {value: 'true', label: '鏄剧ず'},
+    //     {value: 'false', label: '闅愯棌'},
+    //   ],
+    //   controlFields: [
+    //     {field: 'linkmenu', values: ['true']},
+    //   ]
+    // },
+    // {
+    //   type: 'radio',
+    //   field: 'refresh',
+    //   label: '鍒锋柊',
+    //   initval: wrap.refresh || 'false',
+    //   required: false,
+    //   options: [
+    //     {value: 'true', label: '鏄剧ず'},
+    //     {value: 'false', label: '闅愯棌'},
+    //   ]
+    // },
     {
       type: 'radio',
       field: 'reload',
@@ -122,6 +171,54 @@
         label: '鍒锋柊'
       }]
     },
+    {
+      type: 'select',
+      field: 'linkmenu',
+      label: '鍏宠仈鑿滃崟',
+      initval: wrap.linkmenu || '',
+      tooltip: '浣跨敤鎵爜鐧诲綍鍔熻兘鎴栬彍鍗曡烦杞姛鑳芥椂锛岄渶閫夋嫨璺宠浆鐨勮彍鍗曘��',
+      required: false,
+      options: menulist
+    },
+    {
+      type: 'table',
+      field: 'menus',
+      label: '鑷畾涔夎彍鍗�',
+      initval: wrap.menus || [],
+      required: false,
+      span: 24,
+      actions: ['view'],
+      columns: [
+        {
+          title: '鍥炬爣',
+          dataIndex: 'icon',
+          inputType: 'icon',
+          editable: true,
+          required: true,
+          render: (text, record) => <MkIcon type={text}/>,
+          width: '23%'
+        },
+        {
+          title: '鑷畾涔夊悕绉�',
+          dataIndex: 'name',
+          inputType: 'text',
+          editable: true,
+          required: false,
+          width: '23%'
+        },
+        {
+          title: '鑿滃崟',
+          dataIndex: 'menu',
+          inputType: 'select',
+          editable: true,
+          required: true,
+          extends: [{key: 'label', value: 'label'}],
+          width: '23%',
+          render: (text, record) => record.label,
+          options: menulist
+        }
+      ]
+    }
   ]
 
   return topbarWrapForm
diff --git a/src/mob/mobshell/card.jsx b/src/mob/mobshell/card.jsx
index b03a40f..7095000 100644
--- a/src/mob/mobshell/card.jsx
+++ b/src/mob/mobshell/card.jsx
@@ -25,13 +25,14 @@
 const NormalNavbar = asyncComponent(() => import('@/mob/components/navbar/normal-navbar'))
 const NormalTopbar = asyncComponent(() => import('@/mob/components/topbar/normal-navbar'))
 const NormalMenuBar = asyncComponent(() => import('@/mob/components/menubar/normal-menubar'))
+const CommonMenuBar = asyncComponent(() => import('@/mob/components/menubar/common-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
   const [{ isDragging }, drag] = useDrag({
-    item: { type: 'menu', id, originalIndex, floor: card.floor },
+    item: { type: 'menu', id, originalIndex },
     collect: monitor => ({
       isDragging: monitor.isDragging(),
     }),
@@ -40,10 +41,11 @@
     accept: 'menu',
     canDrop: () => true,
     drop: (item) => {
-      const { id: draggedId, originalIndex, floor } = item
+      const { id: draggedId, originalIndex } = item
+
       if (originalIndex === undefined) {
         item.dropTargetId = id
-      } else if (draggedId && floor === card.floor) {
+      } else if (draggedId) {
         if (draggedId === id) return
         const { index: originIndex } = findCard(draggedId)
 
@@ -119,8 +121,10 @@
       return (<NormalNavbar card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'topbar') {
       return (<NormalTopbar card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
-    } else if (card.type === 'menubar') {
+    } else if (card.type === 'menubar' && card.subtype === 'menubar') {
       return (<NormalMenuBar card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
+    } else if (card.type === 'menubar' && card.subtype === 'commonbar') {
+      return (<CommonMenuBar card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'balcony') {
       return (<Balcony card={card} updateConfig={updateConfig} deletecomponent={delCard}/>)
     } else if (card.type === 'timeline') {
diff --git a/src/mob/mobshell/index.jsx b/src/mob/mobshell/index.jsx
index f4e149b..36e8761 100644
--- a/src/mob/mobshell/index.jsx
+++ b/src/mob/mobshell/index.jsx
@@ -79,6 +79,14 @@
       let style = null
 
       if (item.component === 'search') { // 鎼滅储缁勪欢涓嶅彲閲嶅娣诲姞
+        if (cards.filter(card => card.type === 'topbar' && card.wrap.type !== 'navbar').length > 0) {
+          notification.warning({
+            top: 92,
+            message: '瀵艰埅鏍忎娇鐢ㄤ簡鎼滅储锛屼笉鍙坊鍔犳悳绱㈢粍浠讹紒',
+            duration: 5
+          })
+          return
+        }
         if (cards.filter(card => card.type === 'search').length > 0) {
           notification.warning({
             top: 92,
diff --git a/src/mob/modalconfig/index.jsx b/src/mob/modalconfig/index.jsx
index 2aaddfc..6c60904 100644
--- a/src/mob/modalconfig/index.jsx
+++ b/src/mob/modalconfig/index.jsx
@@ -65,6 +65,7 @@
   }
 
   componentDidMount () {
+    MKEmitter.addListener('submitStyle', this.getStyle)
     MKEmitter.addListener('completeSave', this.completeSave)
   }
 
@@ -75,11 +76,30 @@
     this.setState = () => {
       return
     }
+    MKEmitter.removeListener('submitStyle', this.getStyle)
     MKEmitter.removeListener('completeSave', this.completeSave)
   }
 
   completeSave = () => {
     this.setState({saving: false})
+  }
+
+  getStyle = (comIds, style) => {
+    const { config } = this.state
+
+    if (comIds[0] !== 'form') return
+
+    let Index = config.fields.findIndex(n => n.uuid === comIds[1])
+
+    if (Index === -1) return
+    
+    let _config = fromJS(config).toJS()
+
+    _config.fields[Index].style = style
+
+    this.setState({
+      config: _config
+    })
   }
 
   /**
@@ -198,11 +218,6 @@
       card.linkSubField = card.linkSubField.filter(item => fields.includes(item))
     }
 
-    if (!card.span && standardform && standardform.span) {
-      card.span = standardform.span
-      card.labelwidth = standardform.labelwidth
-    }
-
     this.setState({
       standardform,
       visible: true,
@@ -228,6 +243,9 @@
         }
 
         if (item.uuid === res.uuid) {
+          if (item.style) {
+            res.style = item.style
+          }
           return res
         } else {
           return item
@@ -470,7 +488,8 @@
         <Modal
           title={this.state.dict['model.edit']}
           visible={this.state.visible}
-          width={850}
+          width={950}
+          maskClosable={false}
           onCancel={this.editModalCancel}
           onOk={this.handleSubmit}
           confirmLoading={this.state.sqlVerifing}
diff --git a/src/mob/modalconfig/source.jsx b/src/mob/modalconfig/source.jsx
index 190030d..42363a7 100644
--- a/src/mob/modalconfig/source.jsx
+++ b/src/mob/modalconfig/source.jsx
@@ -70,12 +70,12 @@
     subType: 'datemonth',
     url: ''
   },
-  {
-    type: 'form',
-    label: CommonDict['model.form.datetime'],
-    subType: 'datetime',
-    url: ''
-  },
+  // {
+  //   type: 'form',
+  //   label: '鏃ユ湡锛堝垎/绉掞級',
+  //   subType: 'datetime',
+  //   url: ''
+  // },
   {
     type: 'form',
     label: CommonDict['model.form.textarea'],
@@ -105,6 +105,11 @@
     label: '鍒嗗壊绾�',
     subType: 'split',
     url: ''
+  },
+  {
+    type: 'form',
+    label: '鍏宠仈涓昏〃',
+    subType: 'linkMain',
   }
 ]
 
diff --git a/src/mob/modulesource/option.jsx b/src/mob/modulesource/option.jsx
index 0869dff..34798d2 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 CommonBar from '@/assets/mobimg/commonbar.png'
 import timeline from '@/assets/mobimg/timeline.png'
 
 // 缁勪欢閰嶇疆淇℃伅
@@ -31,6 +32,7 @@
   { type: 'menu', url: NavTop, component: 'topbar', subtype: 'topbar', title: '瀵艰埅鏍�' },
   { type: 'menu', url: Navbar, component: 'navbar', subtype: 'tabbar', title: '鑿滃崟鏍�' },
   { type: 'menu', url: MenuBar, component: 'menubar', subtype: 'menubar', title: '鑿滃崟' },
+  { type: 'menu', url: CommonBar, component: 'menubar', subtype: 'commonbar', title: '甯哥敤鑿滃崟' },
   { type: 'menu', url: tabs, component: 'tabs', subtype: 'tabs', title: '鏍囩椤�', width: 24 },
   { type: 'menu', url: singlesearch, component: 'search', subtype: 'mainsearch', title: '鎼滅储鏉′欢', width: 24 },
   { type: 'menu', url: card1, component: 'card', subtype: 'datacard', title: '鏁版嵁鍗�', width: 24 },
diff --git a/src/mob/searchconfig/index.jsx b/src/mob/searchconfig/index.jsx
index 127b319..afd204d 100644
--- a/src/mob/searchconfig/index.jsx
+++ b/src/mob/searchconfig/index.jsx
@@ -486,6 +486,7 @@
 
   render () {
     const { dict, group, editGroup, saving } = this.state
+
     return (
       <div className="mob-search-board">
         <DndProvider backend={HTML5Backend}>
@@ -516,7 +517,7 @@
                   <div className="am-navbar-title">{group.setting.title}</div>
                 </div> : <div className="am-navbar">
                   {/* <LeftOutlined /> */}
-                  <div className="search-bar"><SearchOutlined /></div>
+                  <div className="search-bar"><SearchOutlined style={{marginRight: '10px'}}/>{group.setting.label || ''}</div>
                   <Button >鍙栨秷</Button>
                 </div>}
                 {group.floor === 1 ? <PlusOutlined className="plus-group" onClick={this.plusGroup} /> : null}
diff --git a/src/mob/searchconfig/searchdragelement/card.jsx b/src/mob/searchconfig/searchdragelement/card.jsx
index df3e2c6..48d90df 100644
--- a/src/mob/searchconfig/searchdragelement/card.jsx
+++ b/src/mob/searchconfig/searchdragelement/card.jsx
@@ -47,10 +47,18 @@
 
   let formItem = null
   if (card.type === 'date') {
+    let format = 'YYYY-MM-DD'
+    if (card.precision === 'hour') {
+      format = 'YYYY-MM-DD HH'
+    } else if (card.precision === 'minute') {
+      format = 'YYYY-MM-DD HH:mm'
+    } else if (card.precision === 'second') {
+      format = 'YYYY-MM-DD HH:mm:ss'
+    }
     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">{card.initval ? moment().subtract(card.initval, 'days').format('YYYY-MM-DD') : '璇烽�夋嫨'}</div>
+        <div className="am-input-control">{card.initval ? moment().subtract(card.initval, 'days').format(format) : '璇烽�夋嫨'}</div>
         <div className="am-list-extra"><RightOutlined /></div>
       </div>
     </div>)
@@ -129,6 +137,7 @@
             className={'ant-form-item' + (card.required === 'true' ? ' required' : '') + (card.splitline === 'false' ? ' no-boder' : '')}
           >
             {formItem}
+            <div></div>
             {showField ? <div className="field-name">{card.field}{card.hidden === 'true' ? '(闅愯棌)' : ''}</div> : ''}
           </Form.Item>}
         </div>
diff --git a/src/mob/searchconfig/searchdragelement/index.jsx b/src/mob/searchconfig/searchdragelement/index.jsx
index 10a535e..1583c99 100644
--- a/src/mob/searchconfig/searchdragelement/index.jsx
+++ b/src/mob/searchconfig/searchdragelement/index.jsx
@@ -53,6 +53,13 @@
     let val = JSON.parse(JSON.stringify(_card))
     val.copyType = 'search'
 
+    delete val.$srcId
+    
+    let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+    if (srcid) {
+      val.$srcId = srcid
+    }
+
     oInput.value = window.btoa(window.encodeURIComponent(JSON.stringify(val)))
     document.body.appendChild(oInput)
     oInput.select()
diff --git a/src/mob/searchconfig/settingform/index.jsx b/src/mob/searchconfig/settingform/index.jsx
index 5dbc386..96693bb 100644
--- a/src/mob/searchconfig/settingform/index.jsx
+++ b/src/mob/searchconfig/settingform/index.jsx
@@ -140,6 +140,19 @@
             </Form.Item>
           </Col> : null}
           {type === 'search' ? <Col span={12}>
+            <Form.Item label="鎻愮ず鏂囧瓧">
+              {getFieldDecorator('label', {
+                initialValue: config.setting.label,
+                rules: [
+                  {
+                    max: formRule.input.max,
+                    message: formRule.input.message
+                  }
+                ]
+              })(<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} />)}
+            </Form.Item>
+          </Col> : null}
+          {type === 'search' ? <Col span={12}>
             <Form.Item label="鍖归厤鏂瑰紡">
               {getFieldDecorator('match', {
                 initialValue: config.setting.match || 'like'
@@ -200,7 +213,7 @@
               )}
             </Form.Item>
           </Col>
-          {type === 'search' ? <Col span={12}>
+          {type === 'search' && config.floor === 1 ? <Col span={12}>
             <Form.Item label="鎵爜">
               {getFieldDecorator('scan', {
                 initialValue: config.setting.scan || 'false'
diff --git a/src/pc/bgcontroller/index.jsx b/src/pc/bgcontroller/index.jsx
index 9b149f7..88fdafa 100644
--- a/src/pc/bgcontroller/index.jsx
+++ b/src/pc/bgcontroller/index.jsx
@@ -158,6 +158,8 @@
               <Option value="100%">100%</Option>
               <Option value="100% 100%">100% 100%</Option>
               <Option value="auto 100%">auto 100%</Option>
+              <Option value="100% auto">100% auto</Option>
+              <Option value="auto">auto</Option>
               <Option value="contain">contain</Option>
               <Option value="cover">cover</Option>
             </Select>
diff --git a/src/pc/components/login/normal-login/index.jsx b/src/pc/components/login/normal-login/index.jsx
index 48d29f8..5e04721 100644
--- a/src/pc/components/login/normal-login/index.jsx
+++ b/src/pc/components/login/normal-login/index.jsx
@@ -35,7 +35,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         tabId: card.tabId || '',
         parentId: card.parentId || '',
         dataName: card.dataName || '',
diff --git a/src/pc/components/navbar/normal-navbar/index.jsx b/src/pc/components/navbar/normal-navbar/index.jsx
index 4c560c4..0c8d24e 100644
--- a/src/pc/components/navbar/normal-navbar/index.jsx
+++ b/src/pc/components/navbar/normal-navbar/index.jsx
@@ -34,7 +34,6 @@
       let _card = {
         uuid: card.uuid,
         type: card.type,
-        floor: card.floor,
         dataName: card.dataName || '',
         name: card.name,
         subtype: card.subtype,
@@ -141,6 +140,7 @@
     MKEmitter.emit('changeEditMenu', {
       MenuID: menu.property === 'linkmenu' ? menu.linkMenuId : menu.MenuID,
       copyMenuId: menu.property === 'menu' ? menu.copyMenuId : '',
+      clearMenu: menu.clearMenu || 'true',
       MenuNo: menu.MenuNo,
       MenuName: menu.name,
     })
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 39da53f..b57fb2b 100644
--- a/src/pc/components/navbar/normal-navbar/menusetting/menuform/index.jsx
+++ b/src/pc/components/navbar/normal-navbar/menusetting/menuform/index.jsx
@@ -15,6 +15,7 @@
 
   state = {
     property: this.props.menu.property || 'menu',
+    copyMenu: this.props.menu.copyMenuId || '',
     appMenus: [],
   }
 
@@ -72,7 +73,7 @@
   render() {
     const { menu } = this.props
     const { getFieldDecorator } = this.props.form
-    const { property, appMenus } = this.state
+    const { property, appMenus, copyMenu } = this.state
 
     const formItemLayout = {
       labelCol: {
@@ -193,12 +194,29 @@
               {getFieldDecorator('copyMenuId', {
                 initialValue: menu.copyMenuId || ''
               })(
-                <Select allowClear>
+                <Select allowClear onChange={(val) => this.setState({copyMenu: val})}>
                   {appMenus.map(item => (<Select.Option key={item.MenuID} value={item.MenuID}>{item.MenuName}</Select.Option>))}
                 </Select>
               )}
             </Form.Item>
           </Col> : null}
+          {property === 'menu' && copyMenu ? <Col span={12}>
+            <Form.Item label={
+              <Tooltip placement="topLeft" title="澶嶅埗鑿滃崟鏃讹紝鏄惁娓呯┖鍘熼〉闈腑鐨勫叧鑱旇彍鍗曘��">
+                <QuestionCircleOutlined className="mk-form-tip" />
+                娓呯┖鍏宠仈鑿滃崟
+              </Tooltip>
+            }>
+              {getFieldDecorator('clearMenu', {
+                initialValue: menu.clearMenu || 'true'
+              })(
+                <Radio.Group>
+                  <Radio value="true">鏄�</Radio>
+                  <Radio value="false">鍚�</Radio>
+                </Radio.Group>
+              )}
+            </Form.Item>
+          </Col> : null}
         </Row>
       </Form>
     )
diff --git a/src/pc/components/navbar/normal-navbar/options.jsx b/src/pc/components/navbar/normal-navbar/options.jsx
index 4940158..51b2f10 100644
--- a/src/pc/components/navbar/normal-navbar/options.jsx
+++ b/src/pc/components/navbar/normal-navbar/options.jsx
@@ -111,7 +111,18 @@
         {value: 'false', label: '涓嶅惎鐢�'},
         {value: 'true', label: '鍚敤'},
       ]
-    }
+    },
+    {
+      type: 'radio',
+      field: 'permission',
+      label: '鏉冮檺楠岃瘉',
+      initval: wrap.permission || 'false',
+      required: false,
+      options: [
+        {value: 'true', label: '鍚敤'},
+        {value: 'false', label: '绂佺敤'},
+      ]
+    },
   ]
 
   return wrapForm
diff --git a/src/pc/createview/index.jsx b/src/pc/createview/index.jsx
index bff41f3..63e233f 100644
--- a/src/pc/createview/index.jsx
+++ b/src/pc/createview/index.jsx
@@ -29,8 +29,6 @@
 
   verifySubmit = () => {
     this.verifyRef.handleConfirm().then(res => {
-      
-
       let parMenuId = sessionStorage.getItem('kei_no') + sessionStorage.getItem('typename') + sessionStorage.getItem('lang')
       let menuId = Utils.getuuid()
 
@@ -163,7 +161,7 @@
           }
 
           if (_config.components) {
-            config.components = MenuUtils.resetConfig(_config.components)
+            config.components = MenuUtils.resetConfig(_config.components, {}, res.clearMenu === 'true')
             config.tables = _config.tables || []
             config.style = _config.style || {}
             config.statusBarbgColor = _config.statusBarbgColor || ''
@@ -208,7 +206,7 @@
         <Modal
           title="鏂板缓椤甸潰"
           visible={visible}
-          width={500}
+          width={600}
           maskClosable={false}
           okText={dict['model.submit']}
           onOk={this.verifySubmit}
diff --git a/src/pc/createview/settingform/index.jsx b/src/pc/createview/settingform/index.jsx
index a8e54c8..eb82755 100644
--- a/src/pc/createview/settingform/index.jsx
+++ b/src/pc/createview/settingform/index.jsx
@@ -1,6 +1,6 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Select, Input, Tooltip } from 'antd'
+import { Form, Row, Col, Select, Input, Tooltip, Radio } from 'antd'
 import { QuestionCircleOutlined } from '@ant-design/icons'
 
 import './index.scss'
@@ -11,7 +11,8 @@
   }
 
   state = {
-    appMenus: []
+    appMenus: [],
+    copymenuId: ''
   }
 
   UNSAFE_componentWillMount () {
@@ -19,6 +20,14 @@
     if (appMenus) {
       try {
         appMenus = JSON.parse(appMenus)
+        appMenus = appMenus.map(item => {
+          item.name = item.MenuName
+          if (item.MenuNo && item.MenuNo !== item.MenuName) {
+            item.name = item.MenuName + `锛�${item.MenuNo}锛塦
+          }
+
+          return item
+        })
       } catch (e) {
         appMenus = []
       }
@@ -44,7 +53,7 @@
 
   render() {
     const { getFieldDecorator } = this.props.form
-    const { appMenus } = this.state
+    const { appMenus, copymenuId } = this.state
 
     const formItemLayout = {
       labelCol: {
@@ -113,14 +122,36 @@
               {getFieldDecorator('copymenuId', {
                 initialValue: ''
               })(
-                <Select allowClear showSearch filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}>
+                <Select
+                  allowClear
+                  showSearch
+                  onChange={(val) => this.setState({copymenuId: val})}
+                  filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
+                >
                   {appMenus.map(option =>
-                    <Select.Option key={option.MenuID} value={option.MenuID}>{option.MenuName}</Select.Option>
+                    <Select.Option key={option.MenuID} value={option.MenuID}>{option.name}</Select.Option>
                   )}
                 </Select>
               )}
             </Form.Item>
           </Col>
+          {copymenuId ? <Col span={20}>
+            <Form.Item label={
+              <Tooltip placement="topLeft" title="澶嶅埗鑿滃崟鏃讹紝鏄惁娓呯┖鍘熼〉闈腑鐨勫叧鑱旇彍鍗曘��">
+                <QuestionCircleOutlined className="mk-form-tip" />
+                娓呯┖鍏宠仈鑿滃崟
+              </Tooltip>
+            }>
+              {getFieldDecorator('clearMenu', {
+                initialValue: 'true'
+              })(
+                <Radio.Group>
+                  <Radio value={'true'}>鏄�</Radio>
+                  <Radio value={'false'}>鍚�</Radio>
+                </Radio.Group>
+              )}
+            </Form.Item>
+          </Col> : null}
         </Row>
       </Form>
     )
diff --git a/src/pc/menushell/card.jsx b/src/pc/menushell/card.jsx
index f30bf5e..bd25267 100644
--- a/src/pc/menushell/card.jsx
+++ b/src/pc/menushell/card.jsx
@@ -32,7 +32,7 @@
 const Card = ({ id, card, moveCard, findCard, delCard, updateConfig }) => {
   const originalIndex = findCard(id).index
   const [{ isDragging }, drag] = useDrag({
-    item: { type: 'menu', id, originalIndex, floor: card.floor },
+    item: { type: 'menu', id, originalIndex },
     collect: monitor => ({
       isDragging: monitor.isDragging(),
     }),
@@ -41,10 +41,11 @@
     accept: 'menu',
     canDrop: () => true,
     drop: (item) => {
-      const { id: draggedId, originalIndex, floor } = item
+      const { id: draggedId, originalIndex } = item
+      
       if (originalIndex === undefined) {
         item.dropTargetId = id
-      } else if (draggedId && floor === card.floor) {
+      } else if (draggedId) {
         if (draggedId === id) return
         const { index: originIndex } = findCard(draggedId)
 
diff --git a/src/pc/quotecomponent/settingform/index.jsx b/src/pc/quotecomponent/settingform/index.jsx
index 96a871f..6ab0f32 100644
--- a/src/pc/quotecomponent/settingform/index.jsx
+++ b/src/pc/quotecomponent/settingform/index.jsx
@@ -16,7 +16,7 @@
     if (appMenus) {
       try {
         appMenus = JSON.parse(appMenus)
-        appMenus = appMenus.filter(item => item.keys_type !== 'index')
+        appMenus = appMenus.filter(item => item.keys_type === 'navbar')
       } catch (e) {
         appMenus = []
       }
diff --git a/src/router/index.js b/src/router/index.js
index 204b72b..444f1bb 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -37,6 +37,8 @@
   {path: '/imdesign/:param', name: 'imdesign', component: ImDesign, auth: true},
   {path: '/menudesign/:param', name: 'menudesign', component: MenuDesign, auth: true},
   {path: '/billprint/:param', name: 'billprint', component: BillPrint, auth: true},
+  {path: '/docprint/:menuId', name: 'docprint', component: BillPrint, auth: false},
+  {path: '/docprint/:menuId/:id', name: 'docprint', component: BillPrint, auth: false},
   {path: '/paramsmain/:param', name: 'pmain', component: Main, auth: true},
   {path: '/role/:param', name: 'role', component: RoleManage, auth: true},
   {path: '/interface', name: 'interface', component: Interface, auth: true}
diff --git a/src/tabviews/calendar/index.jsx b/src/tabviews/calendar/index.jsx
index 783c13e..d78d54d 100644
--- a/src/tabviews/calendar/index.jsx
+++ b/src/tabviews/calendar/index.jsx
@@ -424,7 +424,7 @@
     }
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
-    if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
+    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
       param.custom_script &&  console.info(`${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${param.custom_script}`)
       LText &&  console.info(LText)
     }
diff --git a/src/tabviews/commontable/index.jsx b/src/tabviews/commontable/index.jsx
index c11195d..3b32650 100644
--- a/src/tabviews/commontable/index.jsx
+++ b/src/tabviews/commontable/index.jsx
@@ -386,6 +386,8 @@
         config.setting.selected = 'false'
       } else if (config.setting.selected === 'init' && config.setting.onload === 'false') {
         config.setting.selected = 'false'
+      } else {
+        config.setting.orisel = true
       }
 
       let autoMatic = null
@@ -485,7 +487,7 @@
     }
   }
 
-  loadData = () => {
+  loadData = (id) => {
     const { MenuID } = this.props
     const { setting, search, loadCustomApi, hasReqFields, ContainerId } = this.state
 
@@ -521,10 +523,10 @@
 
       this.loadOutResource()
       if (setting.execType === 'async') {
-        this.loadmaindata()
+        this.loadmaindata(id)
       }
     } else {
-      this.loadmaindata()
+      this.loadmaindata(id)
     }
   }
 
@@ -664,7 +666,7 @@
         Sort: index + 1
       }))
 
-      if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) {
+      if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
         let sql = lines.map(item => (`
           ${item.insert}
           ${item.selects.join(` union all
@@ -698,7 +700,7 @@
   /**
    * @description 涓昏〃鏁版嵁鍔犺浇
    */ 
-  async loadmaindata () {
+  async loadmaindata (id) {
     const { setting, arr_field, search, orderBy, BID, pageIndex, pageSize, absFields, autoMatic } = this.state
 
     this.setState({
@@ -718,9 +720,9 @@
         start = pageSize * (pageIndex - 1) + 1
       }
 
-      if (setting.selected !== 'false') {
+      if (setting.selected !== 'false' || (setting.orisel && id)) {
         setTimeout(() => {
-          MKEmitter.emit('mkTableCheckTopLine', this.props.MenuID)
+          MKEmitter.emit('mkTableCheckTopLine', this.props.MenuID, id)
         }, 200)
         if (setting.selected === 'init') {
           this.setState({setting: {...setting, selected: 'false'}})
@@ -952,17 +954,17 @@
   /**
    * @description 琛ㄦ牸鍒锋柊
    */
-  reloadtable = (btn) => {
+  reloadtable = (btn, id = '') => {
     if (!btn || btn.resetPageIndex !== 'false') {
       MKEmitter.emit('resetTable', this.props.MenuID) // 鍒楄〃閲嶇疆
       this.setState({
         pageIndex: 1
       }, () => {
-        this.loadData()
+        this.loadData(id)
       })
     } else {
       MKEmitter.emit('resetTable', this.props.MenuID, 'false') // 鍒楄〃閲嶇疆
-      this.loadData()
+      this.loadData(id)
     }
   }
 
@@ -1023,7 +1025,6 @@
     const { MenuID } = this.props
 
     if (MenuID !== menuId) return
-    if (id === 'empty') return
 
     if (id === 'formtab') { // 琛ㄥ崟鏍囩椤靛埛鏂�
       this.reloadtable(btn)
@@ -1079,7 +1080,7 @@
     if (position === 'line' && lines && lines.length === 1) {
       this.loadmainLinedata(lines[0].$$uuid)
     } else {
-      this.reloadtable(btn)
+      this.reloadtable(btn, id)
     }
   }
 
diff --git a/src/tabviews/custom/components/card/balcony/index.jsx b/src/tabviews/custom/components/card/balcony/index.jsx
index 72ad28f..c92528f 100644
--- a/src/tabviews/custom/components/card/balcony/index.jsx
+++ b/src/tabviews/custom/components/card/balcony/index.jsx
@@ -35,9 +35,8 @@
   }
 
   UNSAFE_componentWillMount () {
-    const { data, BID } = this.props
+    const { data, BID, initdata } = this.props
     let _config = fromJS(this.props.config).toJS()
-    let _cols = new Map()
 
     let _data = { $$empty: true }
     let _sync = false
@@ -51,6 +50,12 @@
           _data = _data[0] || {}
         }
         _sync = false
+      } else if (_sync && initdata) {
+        _data = initdata
+        if (Array.isArray(_data)) {
+          _data = _data[0] || {$$empty: true}
+        }
+        _sync = false
       }
     }
 
@@ -58,12 +63,8 @@
       _data.$$BID = BID || ''
     }
 
-    _config.columns.forEach(item => {
-      _cols.set(item.field, item)
-    })
-
-    if (_config.wrap.position === 'fixed') {
-      _config.style.position = 'fixed'
+    if (_config.wrap.position === 'fixed' || _config.wrap.position === 'absolute') {
+      _config.style.position = _config.wrap.position
       _config.style.zIndex = 2
       _config.style.left = _config.wrap.left || ''
       _config.style.right = _config.wrap.right || ''
@@ -71,6 +72,12 @@
       _config.style.bottom = _config.wrap.bottom || ''
       _config.style.transform = _config.wrap.transform || ''
       _config.style.width = _config.wrap.realwidth || ''
+    } else {
+      _config.style.zIndex = 2
+      _config.style.left = _config.wrap.left || ''
+      _config.style.right = _config.wrap.right || ''
+      _config.style.top = _config.wrap.top || ''
+      _config.style.bottom = _config.wrap.bottom || ''
     }
 
     let show = true
@@ -101,7 +108,9 @@
       arr_field: _config.columns.map(col => col.field).join(','),
     }, () => {
       if (_config.wrap.datatype !== 'static' && _config.setting && _config.setting.sync !== 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, _config.setting.delay || 0)
       }
     })
   }
@@ -208,30 +217,35 @@
    * @param {*} position   // 鍒锋柊浣嶇疆
    * @param {*} btn        // 鎵ц鐨勬寜閽�
    */
-  refreshByButtonResult = (menuId, position, btn) => {
+  refreshByButtonResult = (menuId, position, btn, id, lines) => {
     const { config, BID, syncConfig } = this.state
 
     if (config.uuid !== menuId) return
 
-    this.loadData()                                                            // 鏁版嵁鍒锋柊
-
-    let supModule = config.wrap.supModule
-
     if (syncConfig) {
-      supModule = syncConfig.setting.supModule
+      MKEmitter.emit('refreshByButtonResult', syncConfig.uuid, position, btn, id, lines)
 
-      MKEmitter.emit('refreshByButtonResult', syncConfig.uuid, position, btn)
-    }
+      this.loadData()
+    } else {
+      let supModule = config.wrap.supModule
 
-    if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== supModule) {
-      MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
-    }
+      btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
 
-    if (position === 'mainline' && supModule) {                                // 涓昏〃琛屽埛鏂�
-      MKEmitter.emit('reloadData', supModule, (BID || 'empty'))
-    } else if (position === 'popclose') {                                      // 鏍囩鍏抽棴鍒锋柊
-      supModule && MKEmitter.emit('reloadData', supModule, (BID || 'empty'))
-      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
+      if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
+        if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+          if (supModule && BID) {
+            MKEmitter.emit('reloadData', supModule, BID)
+          } else {
+            this.loadData()
+          }
+        } else {
+          this.loadData()
+        }
+      }
+      
+      if (position === 'popclose') {                                      // 鏍囩鍏抽棴鍒锋柊
+        btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
+      }
     }
   }
 
@@ -316,6 +330,7 @@
 
       _data.$$BID = BID || ''
       _data.$$BData = BData
+      _data.$$uuid = _data[config.setting.primaryKey] || ''
 
       this.setState({
         data: _data,
diff --git a/src/tabviews/custom/components/card/cardItem/index.jsx b/src/tabviews/custom/components/card/cardItem/index.jsx
index 3e03eee..a5a6694 100644
--- a/src/tabviews/custom/components/card/cardItem/index.jsx
+++ b/src/tabviews/custom/components/card/cardItem/index.jsx
@@ -44,6 +44,8 @@
   openView = () => {
     const { card, data, cards } = this.props
 
+    if (!card.setting.click) return
+
     if (card.setting.click === 'menus' && cards.subtype === 'datacard' && card.$cardType !== 'extendCard') {
       let menu = null
       
@@ -131,7 +133,23 @@
       }
 
       window.open(src)
-    } else if (card.setting.click === 'button' && card.setting.linkbtn) {
+    } else if (card.setting.click === 'button' && card.setting.clickType !== 'multi' && card.setting.linkbtn) {
+      if (data.$$type === 'extendCard') {
+        MKEmitter.emit('triggerBtnId', card.setting.linkbtn, [])
+      } else if (cards.subtype === 'datacard') {
+        MKEmitter.emit('triggerBtnId', card.setting.linkbtn, [data], 'linkbtn')
+      } else {
+        MKEmitter.emit('triggerBtnId', card.setting.linkbtn, [data])
+      }
+    }
+  }
+
+  doubleClick = () => {
+    const { card, data, cards } = this.props
+
+    if (card.setting.click !== 'button' || card.setting.clickType !== 'multi') return
+
+    if (card.setting.linkbtn) {
       if (data.$$type === 'extendCard') {
         MKEmitter.emit('triggerBtnId', card.setting.linkbtn, [])
       } else if (cards.subtype === 'datacard') {
@@ -146,7 +164,7 @@
     const { card, data, cards } = this.props
 
     return (
-      <div className={'card-item-box ' + (card.setting.btnControl || '')} style={card.style} onClick={this.openView}>
+      <div className={'card-item-box ' + (card.setting.btnControl || '')} style={card.style} onClick={this.openView} onDoubleClick={this.doubleClick}>
         <CardCellComponent data={data} cards={cards} cardCell={card} elements={card.elements}/>
         {card.setting.type === 'multi' ? <div className={'back-side ' + card.setting.transform} style={card.backStyle}>
           <CardCellComponent data={data} cards={cards} cardCell={card} elements={card.backElements}/>
diff --git a/src/tabviews/custom/components/card/cardcellList/index.jsx b/src/tabviews/custom/components/card/cardcellList/index.jsx
index 5608b31..de5702b 100644
--- a/src/tabviews/custom/components/card/cardcellList/index.jsx
+++ b/src/tabviews/custom/components/card/cardcellList/index.jsx
@@ -290,7 +290,12 @@
       }
 
       if (val !== '') {
-        val = `${card.prefix || ''}${val}${card.postfix || ''}`
+        if (card.fixStyle === 'alone') {
+          let _s = {fontSize: card.fixSize, color: card.fixColor, marginLeft: card.fixLeft, marginRight: card.fixRight}
+          val = <><span style={_s}>{card.prefix || ''}</span>{val}<span style={_s}>{card.postfix || ''}</span></>
+        } else {
+          val = `${card.prefix || ''}${val}${card.postfix || ''}`
+        }
       }
 
       if (card.marks) {
@@ -311,6 +316,10 @@
         _style.cursor = 'pointer'
       }
 
+      if (card.bgImage && data[card.bgImage]) {
+        _style.backgroundImage = `url('${data[card.bgImage]}')`
+      }
+
       return (
         <Col key={card.uuid} span={card.width}>
           <div style={_style} onClick={(e) => {this.openNewView(e, card)}}>
@@ -328,6 +337,10 @@
         val = data[card.field]
       }
 
+      if (!val && card.noValue === 'hide') { // 绌哄�奸殣钘�
+        return null
+      }
+
       if (typeof(val) === 'number') {
         if (card.format === 'percent') {
           val = val * 100
@@ -335,8 +348,8 @@
           val = Math.abs(val)
         }
 
-        if (card.col && card.col.type === 'number') {
-          let decimal = card.col.decimal || 0
+        if (typeof(card.decimal) === 'number') {
+          let decimal = card.decimal
 
           if (card.format === 'percent') {
             decimal = decimal - 2
@@ -358,7 +371,12 @@
       }
 
       if (val !== '') {
-        val = `${card.prefix || ''}${val}${card.postfix || ''}`
+        if (card.fixStyle === 'alone') {
+          let _s = {fontSize: card.fixSize, color: card.fixColor, marginLeft: card.fixLeft, marginRight: card.fixRight}
+          val = <><span style={_s}>{card.prefix || ''}</span>{val}<span style={_s}>{card.postfix || ''}</span></>
+        } else {
+          val = `${card.prefix || ''}${val}${card.postfix || ''}`
+        }
       }
       
       if (card.marks) {
@@ -567,10 +585,19 @@
         </Col>
       )
     } else if (card.eleType === 'currentDate') {
+      let val = moment().format(card.dateFormat || 'YYYY-MM-DD')
+      
+      if (card.fixStyle === 'alone') {
+        let _s = {fontSize: card.fixSize, color: card.fixColor, marginLeft: card.fixLeft, marginRight: card.fixRight}
+        val = <><span style={_s}>{card.prefix || ''}</span>{val}<span style={_s}>{card.postfix || ''}</span></>
+      } else {
+        val = `${card.prefix || ''}${val}${card.postfix || ''}`
+      }
+
       return (
         <Col key={card.uuid} span={card.width}>
           <div className="ant-mk-date" style={card.style}>
-            {card.dateFormat ? `${card.prefix || ''}${moment().format(card.dateFormat)}${card.postfix || ''}` : null}
+            {val}
           </div>
         </Col>
       )
@@ -597,7 +624,7 @@
             }
           }
 
-          if (!val) return
+          // if (!val) return
 
           val += _val
         })
@@ -620,11 +647,21 @@
         val = _val === undefined ? '' : _val
       }
 
+      if (val === '' && card.noValue === 'hide') { // 绌哄�奸殣钘�
+        return null
+      }
+
       if (val !== '') {
-        val = `${card.prefix || ''}${val}${card.postfix || ''}`
-        if (card.eval === 'false' && /\s/ig.test(val)) {
-          val = val.replace(/\s/ig, '&nbsp;')
+        if (val && typeof(val) === 'string') {
+          val = val.replace(/\n/ig, '<br/>').replace(/\s/ig, '&nbsp;')
           val = <span dangerouslySetInnerHTML={{__html: val}}></span>
+        }
+
+        if (card.fixStyle === 'alone') {
+          let _s = {fontSize: card.fixSize, color: card.fixColor, marginLeft: card.fixLeft, marginRight: card.fixRight}
+          val = <><span style={_s}>{card.prefix || ''}</span>{val}<span style={_s}>{card.postfix || ''}</span></>
+        } else {
+          val = `${card.prefix || ''}${val}${card.postfix || ''}`
         }
       }
 
@@ -650,10 +687,16 @@
         </Col>
       )
     } else if (card.eleType === 'button') {
+      let _disabled = data.$disabled
       if (card.control === 'hidden') {
-        let s = data[card.controlField]
+        let s = data[card.controlField] !== undefined ? data[card.controlField] + '' : ''
         if (s === card.controlVal || (card.controlVal && card.controlVal.split(',').includes(s))) {
           return null
+        }
+      } else if (card.control === 'disabled') {
+        let s = data[card.controlField] !== undefined ? data[card.controlField] + '' : ''
+        if (s === card.controlVal || (card.controlVal && card.controlVal.split(',').includes(s))) {
+          _disabled = true
         }
       }
       
@@ -661,10 +704,10 @@
 
       if (data.$$type === 'extendCard') {
         _data = data.$$selectedData || []
-      } else if (data.$$empty) {
-        _data = []
       } else if (card.$sync) {
         _data = this.props.syncData
+      } else if (data.$$empty) {
+        _data = []
       }
 
       if (['exec', 'prompt', 'pop', 'form'].includes(card.OpenType)) {
@@ -673,7 +716,7 @@
             <NormalButton
               BID={data.$$BID}
               BData={data.$$BData || ''}
-              disabled={data.$disabled}
+              disabled={_disabled}
               lineId={data.$$key || ''}
               btn={card}
               show={card.show}
@@ -690,7 +733,7 @@
             <ExcelInButton
               BID={data.$$BID}
               BData={data.$$BData || ''}
-              disabled={data.$disabled}
+              disabled={_disabled}
               lineId={data.$$key || ''}
               btn={card}
               show={card.show}
@@ -707,7 +750,7 @@
               BID={data.$$BID}
               BData={data.$$BData || ''}
               lineId={data.$$key || ''}
-              disabled={data.$disabled}
+              disabled={_disabled}
               btn={card}
               show={card.show}
               style={card.style}
@@ -721,7 +764,7 @@
             <PopupButton
               BID={data.$$BID}
               BData={data.$$BData || ''}
-              disabled={data.$disabled}
+              disabled={_disabled}
               lineId={data.$$key || ''}
               btn={card}
               show={card.show}
@@ -736,7 +779,7 @@
           <Col key={card.uuid} className="mk-cell-btn" style={card.wrapStyle} span={card.width}>
             <TabButton
               BData={data.$$BData || ''}
-              disabled={data.$disabled}
+              disabled={_disabled}
               lineId={data.$$key || ''}
               btn={card}
               show={card.show}
@@ -751,7 +794,7 @@
           <Col key={card.uuid} className="mk-cell-btn" style={card.wrapStyle} span={card.width}>
             <NewPageButton
               BData={data.$$BData || ''}
-              disabled={data.$disabled}
+              disabled={_disabled}
               lineId={data.$$key || ''}
               btn={card}
               show={card.show}
@@ -768,7 +811,7 @@
               <ChangeUserButton
                 BID={data.$$BID}
                 BData={data.$$BData || ''}
-                disabled={data.$disabled}
+                disabled={_disabled}
                 lineId={data.$$key || ''}
                 btn={card}
                 show={card.show}
@@ -784,7 +827,7 @@
               <PrintButton
                 BID={data.$$BID}
                 BData={data.$$BData || ''}
-                disabled={data.$disabled}
+                disabled={_disabled}
                 lineId={data.$$key || ''}
                 btn={card}
                 show={card.show}
diff --git a/src/tabviews/custom/components/card/cardcellList/index.scss b/src/tabviews/custom/components/card/cardcellList/index.scss
index f48154a..ec32d1f 100644
--- a/src/tabviews/custom/components/card/cardcellList/index.scss
+++ b/src/tabviews/custom/components/card/cardcellList/index.scss
@@ -148,6 +148,27 @@
   .ant-mk-picture.scale {
     cursor: zoom-in;
   }
+  .ant-switch-large {
+    min-width: 60px;
+    height: 30px;
+    line-height: 28px;
+
+    .ant-switch-inner {
+      margin-right: 5px;
+      margin-left: 30px;
+      font-size: 16px;
+    }
+  }
+  .ant-switch-large.ant-switch-checked {
+    .ant-switch-inner {
+      margin-right: 30px;
+      margin-left: 5px;
+    }
+  }
+  .ant-switch-large::after {
+    width: 26px;
+    height: 26px;
+  }
 }
 .card-cell-list::after {
   content: ' ';
diff --git a/src/tabviews/custom/components/card/data-card/index.jsx b/src/tabviews/custom/components/card/data-card/index.jsx
index 704b8bc..3b9a2bc 100644
--- a/src/tabviews/custom/components/card/data-card/index.jsx
+++ b/src/tabviews/custom/components/card/data-card/index.jsx
@@ -98,23 +98,11 @@
       _sync = false
     }
 
-    if (_config.wrap.cardFloat && _config.wrap.cardFloat !== 'left') {
-      let _width = 0
-      precards.forEach(card => {
-        _width += card.setting.width
-      })
-      nextcards.forEach(card => {
-        _width += card.setting.width
-      })
-      
-      _config.$offset = _width
-    } else {
-      _config.wrap.cardFloat = null
-    }
-
     let selected = 'false'
     if (_config.wrap.selected === 'always' || _config.wrap.selected === 'init') {
       selected = _config.wrap.selected
+    } else {
+      _config.wrap.selected = 'false'
     }
 
     if (_data) {
@@ -144,18 +132,19 @@
     }
 
     _config.columns.forEach(item => {
+      if (item.type !== 'number') return
       _cols.set(item.field, item)
     })
 
     _card.elements = _card.elements.map(item => {
-      if (item.field && _cols.has(item.field)) {
-        item.col = _cols.get(item.field)
+      if (item.eleType === 'number' && item.field && _cols.has(item.field) && typeof(item.decimal) !== 'number') {
+        item.decimal = _cols.get(item.field).decimal || 0
       }
       return item
     })
     _card.backElements = _card.backElements.map(item => {
-      if (item.field && _cols.has(item.field)) {
-        item.col = _cols.get(item.field)
+      if (item.eleType === 'number' && item.field && _cols.has(item.field) && typeof(item.decimal) !== 'number') {
+        item.decimal = _cols.get(item.field).decimal || 0
       }
       return item
     })
@@ -167,6 +156,7 @@
 
     _config.wrap.selStyle = _config.wrap.selStyle || 'active'
     _config.wrap.scale = _config.wrap.scale === 'true' ? 'scale' : ''
+    _config.wrap.layout = (_config.wrap.layout || 'grid') + '-layout float-' + (_config.wrap.cardFloat || 'left')
 
     _config.wrap.wrapClass =  `${_config.wrap.selStyle} ${_config.wrap.cardType || ''} ${_config.wrap.scale}`
 
@@ -185,7 +175,9 @@
       arr_field: _config.columns.map(col => col.field).join(','),
     }, () => {
       if (_config.setting.sync !== 'true' && _config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, _config.setting.delay || 0)
       }
     })
   }
@@ -260,32 +252,19 @@
    * @param {*} position   // 鍒锋柊浣嶇疆
    * @param {*} btn        // 鎵ц鐨勬寜閽�
    */
-  refreshByButtonResult = (menuId, position, btn, id, lines) => {
+  refreshByButtonResult = (menuId, position, btn, id = '', lines) => {
     const { config, BID, supComs, supNodes } = this.state
 
     if (config.uuid !== menuId) return
 
-    if (position === 'line' && lines && lines.length === 1) {
-      this.loadLinedata(lines[0].$$uuid)
-    } else if (!btn || btn.resetPageIndex !== 'false') {
-      this.setState({
-        pageIndex: 1
-      }, () => {
-        this.loadData()
-      })
-    } else {
-      this.loadData()
-    }
-
-
     if (supComs) {
-      if (btn.syncComponentId && btn.syncComponentId !== config.uuid && !supComs.includes(btn.syncComponentId)) {
-        MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
-      }
-  
-      if (position === 'mainline' || position === 'popclose') {                 // 涓昏〃琛屽埛鏂�
+      btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+
+      if (position === 'mainline' || position === 'popclose') { // 涓昏〃鍒锋柊锛屽幓闄ゅ悓姝ュ埛鏂扮粍浠�
         let supNode = supNodes[supNodes.length - 1]
         supComs.forEach((item, i) => {
+          if (item === btn.syncComponentId) return
+
           setTimeout(() => {
             if (supNode && supNode.key === item) {
               MKEmitter.emit('reloadData', item, supNode.value)
@@ -294,25 +273,59 @@
             }
           }, i * 10)
         })
-        if (position === 'popclose') {                                      // 鏍囩鍏抽棴鍒锋柊
-          btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
+      } else if (!btn.syncComponentId || !supComs.includes(btn.syncComponentId)) {
+        if (position === 'line') {
+          if (lines && lines.length === 1) {
+            this.loadLinedata(lines[0].$$uuid)
+          } else {
+            this.loadData(id)
+          }
+        } else if (!btn || btn.resetPageIndex !== 'false') {
+          this.setState({
+            pageIndex: 1
+          }, () => {
+            this.loadData(id)
+          })
+        } else {
+          this.loadData(id)
         }
       }
     } else {
-      if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) {
-        MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
+      let supModule = config.setting.supModule
+
+      btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+
+      if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
+        if (position === 'line') {
+          if (lines && lines.length === 1) {
+            this.loadLinedata(lines[0].$$uuid)
+          } else {
+            this.loadData(id)
+          }
+        } else if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+          if (supModule && BID) {
+            MKEmitter.emit('reloadData', supModule, BID)
+          } else {
+            this.loadData(id)
+          }
+        } else if (!btn || btn.resetPageIndex !== 'false') {
+          this.setState({
+            pageIndex: 1
+          }, () => {
+            this.loadData(id)
+          })
+        } else {
+          this.loadData(id)
+        }
       }
-  
-      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)
-      }
+    }
+
+    if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
+      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
     }
   }
 
-  checkTopLine = () => {
+  checkTopLine = (id) => {
     const { config, data } = this.state
 
     if (!data || data.length === 0 || data[0].$disabled) {
@@ -329,15 +342,23 @@
       return
     }
 
+    let index = 0
+    if (id) {
+      index = data.findIndex(item => item.$$uuid === id)
+      if (index === -1) {
+        index = 0
+      }
+    }
+
     this.setState({
-      activeKey: 0,
-      selectKeys: [0],
-      selectedData: [data[0]]
+      activeKey: index,
+      selectKeys: [index],
+      selectedData: [data[index]]
     })
 
-    MKEmitter.emit('resetSelectLine', config.uuid, data[0].$$uuid, data[0])
+    MKEmitter.emit('resetSelectLine', config.uuid, data[index].$$uuid, data[index])
     if (config.setting.$hasSyncModule) {
-      MKEmitter.emit('syncBalconyData', config.uuid, [data[0]], data.length === 1)
+      MKEmitter.emit('syncBalconyData', config.uuid, [data[index]], data.length === 1)
     }
   }
 
@@ -374,7 +395,6 @@
     const { config } = this.state
 
     if (config.uuid !== menuId) return
-    if (id === 'empty') return
 
     if (!id) {
       this.loadData()
@@ -401,9 +421,11 @@
       }
 
       if (bid !== this.state.BID || bid !== '') {
-        this.setState({ BID: bid, BData: _data, pageIndex: 1 }, () => {
+        this.setState({ BID: bid, BData: _data, pageIndex: 1, supNodes }, () => {
           this.loadData()
         })
+      } else {
+        this.setState({ supNodes })
       }
     } else {
       if (!config.setting.supModule || config.setting.supModule !== MenuID) return
@@ -442,7 +464,7 @@
     })
   }
 
-  async loadData () {
+  async loadData (id) {
     const { mainSearch, menuType } = this.props
     const { config, arr_field, pageIndex, search, BID, BData, selected } = this.state
 
@@ -457,9 +479,9 @@
         loading: false
       })
       
-      if (selected !== 'false') {
+      if (selected !== 'false' || (id && config.wrap.selected !== 'false')) {
         setTimeout(() => {
-          this.checkTopLine()
+          this.checkTopLine(id)
         }, 200)
         if (selected === 'init') {
           this.setState({selected: 'false'})
@@ -502,9 +524,9 @@
         start = config.setting.pageSize * (pageIndex - 1) + 1
       }
 
-      if (selected !== 'false') {
+      if (selected !== 'false' || (id && config.wrap.selected !== 'false')) {
         setTimeout(() => {
-          this.checkTopLine()
+          this.checkTopLine(id)
         }, 200)
         if (selected === 'init') {
           this.setState({selected: 'false'})
@@ -586,7 +608,7 @@
               _data.key = item.key
               _data.$$uuid = _data[config.setting.primaryKey] || ''
               _data.$$BID = BID || ''
-              item.$$BData = BData || ''
+              _data.$$BData = BData || ''
               _data.$Index = item.$Index
               return _data
             } else {
@@ -596,6 +618,8 @@
         } catch (e) {
           console.warn('鏁版嵁鏌ヨ閿欒')
         }
+
+        MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data)
       }
 
       this.setState({
@@ -712,16 +736,11 @@
       _total = config.setting.pageSize * pageIndex
       switchable = true
     }
-    let offset = 0
 
-    if (config.wrap.cardFloat) {
-      let length = data ? data.length : 0
-      if (card.setting.width * length + config.$offset < 24) {
-        offset = 24 - card.setting.width * length - config.$offset
-        if (config.wrap.cardFloat === 'center') {
-          offset = Math.floor(offset / 2)
-        }
-      }
+    let extendData = {$$BID: BID, $$BData: BData, $$selectedData: selectedData, $$type: 'extendCard'}
+
+    if (data && data[0]) {
+      extendData = {...extendData, ...data[0]}
     }
 
     return (
@@ -745,11 +764,10 @@
         }
         <div className={`data-zoom ${config.wrap.wrapClass}`}>
           {switchable ? <div className={'prev-page ' + (pageIndex === 1 ? 'disabled' : '')} onClick={this.prevPage}><div><div><img src={preImg} alt=""/></div></div></div> : null}
-          <Row className="card-row-list">
-            {offset ? <Col span={offset} style={{height: '10px'}}> </Col> : null}
+          <Row className={'card-row-list ' + config.wrap.layout}>
             {precards.map((item, index) => (
               <Col key={'pre' + index} className="extend-card" span={item.setting.width || 6}>
-                <CardItem card={item} cards={config} data={{$$BID: BID, $$BData: BData, $$selectedData: selectedData, $$type: 'extendCard'}}/>
+                <CardItem card={item} cards={config} data={extendData}/>
               </Col>
             ))}
             {data && data.map((item, index) => {
@@ -770,7 +788,7 @@
             })}
             {nextcards.map((item, index) => (
               <Col key={'next' + index} className="extend-card" span={item.setting.width || 6}>
-                <CardItem card={item} cards={config} data={{$$BID: BID, $$BData: BData, $$selectedData: selectedData, $$type: 'extendCard'}}/>
+                <CardItem card={item} cards={config} data={extendData}/>
               </Col>
             ))}
           </Row>
diff --git a/src/tabviews/custom/components/card/data-card/index.scss b/src/tabviews/custom/components/card/data-card/index.scss
index 3cfc493..a9d15b4 100644
--- a/src/tabviews/custom/components/card/data-card/index.scss
+++ b/src/tabviews/custom/components/card/data-card/index.scss
@@ -26,6 +26,9 @@
         color: #bcbcbc;
         .ant-mk-text, .ant-mk-date, .anticon {
           color: #bcbcbc!important;
+          span {
+            color: #bcbcbc!important;
+          }
         }
       }
     }
@@ -46,6 +49,32 @@
       cursor: pointer;
     }
   }
+  .card-row-list.flex-layout {
+    display: flex;
+    width: 100%;
+    >.ant-col {
+      width: 5%;
+      flex: 1;
+    }
+  }
+  .card-row-list.float-center {
+    text-align: center;
+    >.ant-col {
+      display: inline-block;
+      float: none;
+      text-align: left;
+      vertical-align: top;
+    }
+  }
+  .card-row-list.float-right {
+    text-align: right;
+    >.ant-col {
+      display: inline-block;
+      float: none;
+      text-align: left;
+      vertical-align: top;
+    }
+  }
   .card-item-box {
     position: relative;
     background-color: #ffffff;
diff --git a/src/tabviews/custom/components/card/prop-card/index.jsx b/src/tabviews/custom/components/card/prop-card/index.jsx
index e4dc898..921b4a9 100644
--- a/src/tabviews/custom/components/card/prop-card/index.jsx
+++ b/src/tabviews/custom/components/card/prop-card/index.jsx
@@ -47,33 +47,31 @@
       _sync = _config.setting.sync === 'true'
 
       if (_sync && data) {
-        _data = data[_config.dataName] || {}
-        if (_data && Array.isArray(_data)) {
-          _data = _data[0] || {}
+        _data = data[_config.dataName] || {$$empty: true}
+        if (Array.isArray(_data)) {
+          _data = _data[0] || {$$empty: true}
         }
         _sync = false
       } else if (_sync && initdata) {
-        _data = initdata || {}
-        if (_data && Array.isArray(_data)) {
-          _data = _data[0] || {}
+        _data = initdata
+        if (Array.isArray(_data)) {
+          _data = _data[0] || {$$empty: true}
         }
         _sync = false
       }
     }
 
-    if (_data) {
-      _data.$$BID = BID || ''
-      _data.$$BData = BData || ''
-      if (_config.setting.primaryKey) {
-        _data.$$uuid = _data[_config.setting.primaryKey] || ''
-      }
+    _data.$$BID = BID || ''
+    _data.$$BData = BData || ''
+    if (_config.setting.primaryKey) {
+      _data.$$uuid = _data[_config.setting.primaryKey] || ''
     }
 
     _config.columns.forEach(item => {
+      if (item.type !== 'number') return
       _cols.set(item.field, item)
     })
 
-    let _width = 0
     _config.subcards.forEach(card => {
       if (card.setting.click === 'button' && !card.setting.linkbtn) {
         card.elements.forEach(ele => {
@@ -85,29 +83,19 @@
           card.setting.click = ''
         }
       }
-      _width += card.setting.width
       card.elements = card.elements.map(item => {
-        if (item.field && _cols.has(item.field)) {
-          item.col = _cols.get(item.field)
+        if (item.eleType === 'number' && item.field && _cols.has(item.field) && typeof(item.decimal) !== 'number') {
+          item.decimal = _cols.get(item.field).decimal || 0
         }
         return item
       })
       card.backElements = card.backElements.map(item => {
-        if (item.field && _cols.has(item.field)) {
-          item.col = _cols.get(item.field)
+        if (item.eleType === 'number' && item.field && _cols.has(item.field) && typeof(item.decimal) !== 'number') {
+          item.decimal = _cols.get(item.field).decimal || 0
         }
         return item
       })
     })
-
-    let offset = 0
-    if (_config.wrap.cardFloat && _config.wrap.cardFloat !== 'left' && _width < 24) {
-      offset = 24 - _width
-      if (_config.wrap.cardFloat === 'center') {
-        offset = Math.floor(offset / 2)
-      }
-      _config.subcards[0].offset = offset
-    }
 
     let selected = _config.wrap.selected || 'false'
 
@@ -115,7 +103,7 @@
     _config.wrap.priKeyType = _config.wrap.priKeyType || 'static'
     _config.wrap.scale = _config.wrap.scale === 'true' ? 'scale' : ''
 
-    _config.wrap.wrapClass =  `${_config.wrap.selStyle} ${_config.wrap.cardType || ''} ${_config.wrap.scale || ''}`
+    _config.wrap.wrapClass =  `${_config.wrap.selStyle} ${_config.wrap.cardType || ''} ${_config.wrap.scale || ''} ${_config.wrap.layout || 'grid'}-layout float-${_config.wrap.cardFloat || 'left'}`
 
     this.setState({
       selected,
@@ -127,7 +115,9 @@
       arr_field: _config.columns.map(col => col.field).join(','),
     }, () => {
       if (_config.wrap.datatype !== 'static' && _config.setting.sync !== 'true' && _config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, _config.setting.delay || 0)
       } else if ((!_sync || _config.wrap.priKeyType === 'static') && selected !== 'false') {
         setTimeout(() => {
           this.checkTopLine()
@@ -166,9 +156,9 @@
     if (sync && !is(fromJS(this.props.data), fromJS(nextProps.data))) {
       let _data = { $$empty: true }
       if (nextProps.data && nextProps.data[config.dataName]) {
-        _data = nextProps.data[config.dataName] || {}
+        _data = nextProps.data[config.dataName]
         if (Array.isArray(_data)) {
-          _data = _data[0] || {}
+          _data = _data[0] || {$$empty: true}
         }
       }
 
@@ -269,16 +259,23 @@
 
     if (config.uuid !== menuId) return
 
-    this.loadData()                                                            // 鏁版嵁鍒锋柊
+    let supModule = config.setting.supModule
 
-    if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) {
-      MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+
+    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
+      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+        if (supModule && BID) {
+          MKEmitter.emit('reloadData', supModule, BID)
+        } else {
+          this.loadData()
+        }
+      } else {
+        this.loadData()
+      }
     }
 
-    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'))
+    if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
       btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
     }
   }
@@ -287,6 +284,7 @@
     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()
@@ -398,6 +396,8 @@
   render() {
     const { config, loading, data, activeKey } = this.state
 
+    if (config.wrap.empty === 'hidden' && (!data || data.$$empty)) return null
+
     return (
       <div className="custom-prop-card-box" style={config.style}>
         {loading ?
diff --git a/src/tabviews/custom/components/card/prop-card/index.scss b/src/tabviews/custom/components/card/prop-card/index.scss
index 7d7e25b..7b10775 100644
--- a/src/tabviews/custom/components/card/prop-card/index.scss
+++ b/src/tabviews/custom/components/card/prop-card/index.scss
@@ -17,6 +17,32 @@
       cursor: pointer;
     }
   }
+  .card-row-list.flex-layout {
+    display: flex;
+    width: 100%;
+    >.ant-col {
+      width: 5%;
+      flex: 1;
+    }
+  }
+  .card-row-list.float-center {
+    text-align: center;
+    >.ant-col {
+      display: inline-block;
+      float: none;
+      text-align: left;
+      vertical-align: top;
+    }
+  }
+  .card-row-list.float-right {
+    text-align: right;
+    >.ant-col {
+      display: inline-block;
+      float: none;
+      text-align: left;
+      vertical-align: top;
+    }
+  }
   .card-row-list.scale {
     .mk-card:hover {
       >.card-item-box {
diff --git a/src/tabviews/custom/components/card/table-card/index.jsx b/src/tabviews/custom/components/card/table-card/index.jsx
index 14107bf..845703f 100644
--- a/src/tabviews/custom/components/card/table-card/index.jsx
+++ b/src/tabviews/custom/components/card/table-card/index.jsx
@@ -60,6 +60,7 @@
         item.key = index
         item.$$uuid = item[_config.setting.primaryKey] || ''
         item.$$BID = BID || ''
+        item.$$BData = BData || ''
         item.$Index = index + 1 + ''
         return item
       })
@@ -77,13 +78,14 @@
     }
 
     _config.columns.forEach(item => {
+      if (item.type !== 'number') return
       _cols.set(item.field, item)
     })
 
     _config.subcards.forEach(card => {
       card.elements = card.elements.map(item => {
-        if (item.field && _cols.has(item.field)) {
-          item.col = _cols.get(item.field)
+        if (item.eleType === 'number' && item.field && _cols.has(item.field) && typeof(item.decimal) !== 'number') {
+          item.decimal = _cols.get(item.field).decimal || 0
         }
         return item
       })
@@ -99,7 +101,9 @@
       arr_field: _config.columns.map(col => col.field).join(','),
     }, () => {
       if (_config.setting.sync !== 'true' && _config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, _config.setting.delay || 0)
       }
     })
   }
@@ -165,16 +169,23 @@
 
     if (config.uuid !== menuId) return
 
-    this.loadData(btn)                                                         // 鏁版嵁鍒锋柊
+    let supModule = config.setting.supModule
 
-    if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) {
-      MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+
+    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
+      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+        if (supModule && BID) {
+          MKEmitter.emit('reloadData', supModule, BID)
+        } else {
+          this.loadData()
+        }
+      } else {
+        this.loadData()
+      }
     }
 
-    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'))
+    if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
       btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
     }
   }
@@ -408,6 +419,8 @@
   render() {
     const { config, loading, data, BID, pageIndex, total } = this.state
 
+    if (config.wrap.empty === 'hidden' && (!data || data.length === 0)) return null
+    
     return (
       <div className="custom-table-card-box" style={{...config.style}}>
         {loading ?
diff --git a/src/tabviews/custom/components/carousel/data-card/index.jsx b/src/tabviews/custom/components/carousel/data-card/index.jsx
index 7de4d1f..9fe7608 100644
--- a/src/tabviews/custom/components/carousel/data-card/index.jsx
+++ b/src/tabviews/custom/components/carousel/data-card/index.jsx
@@ -52,12 +52,14 @@
         item.key = index
         item.$$uuid = item[_config.setting.primaryKey] || ''
         item.$$BID = BID || ''
+        item.$$BData = BData || ''
         item.$Index = index + 1
         return item
       })
     }
 
     _config.columns.forEach(item => {
+      if (item.type !== 'number') return
       _cols.set(item.field, item)
     })
 
@@ -68,8 +70,8 @@
     }
 
     _card.elements = _card.elements.map(item => {
-      if (item.field && _cols.has(item.field)) {
-        item.col = _cols.get(item.field)
+      if (item.eleType === 'number' && item.field && _cols.has(item.field) && typeof(item.decimal) !== 'number') {
+        item.decimal = _cols.get(item.field).decimal || 0
       }
       return item
     })
@@ -86,7 +88,9 @@
       arr_field: _config.columns.map(col => col.field).join(','),
     }, () => {
       if (_config.setting.sync !== 'true' && _config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, _config.setting.delay || 0)
       }
     })
   }
@@ -147,16 +151,23 @@
 
     if (config.uuid !== menuId) return
 
-    this.loadData(btn)                                                         // 鏁版嵁鍒锋柊
+    let supModule = config.setting.supModule
 
-    if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) {
-      MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+
+    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
+      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+        if (supModule && BID) {
+          MKEmitter.emit('reloadData', supModule, BID)
+        } else {
+          this.loadData()
+        }
+      } else {
+        this.loadData()
+      }
     }
 
-    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'))
+    if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
       btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
     }
   }
@@ -244,6 +255,8 @@
   render() {
     const { config, loading, data, card } = this.state
 
+    if (config.wrap.empty === 'hidden' && (!data || data.length === 0)) return null
+    
     return (
       <div className="custom-data-carousel-box" style={config.style}>
         {loading ?
diff --git a/src/tabviews/custom/components/carousel/prop-card/index.jsx b/src/tabviews/custom/components/carousel/prop-card/index.jsx
index 4004576..34f0eb3 100644
--- a/src/tabviews/custom/components/carousel/prop-card/index.jsx
+++ b/src/tabviews/custom/components/carousel/prop-card/index.jsx
@@ -41,26 +41,25 @@
       _sync = _config.setting.sync === 'true'
 
       if (_sync && data) {
-        _data = data[_config.dataName] || {}
-        if (_data && Array.isArray(_data)) {
-          _data = _data[0] || {}
+        _data = data[_config.dataName] || {$$empty: true}
+        if (Array.isArray(_data)) {
+          _data = _data[0] || {$$empty: true}
         }
         _sync = false
       } else if (_sync && initdata) {
-        _data = initdata || {}
-        if (_data && Array.isArray(_data)) {
-          _data = _data[0] || {}
+        _data = initdata
+        if (Array.isArray(_data)) {
+          _data = _data[0] || {$$empty: true}
         }
         _sync = false
       }
     }
 
-    if (_data) {
-      _data.$$BID = BID || ''
-      _data.$$BData = BData || ''
-    }
+    _data.$$BID = BID || ''
+    _data.$$BData = BData || ''
 
     _config.columns.forEach(item => {
+      if (item.type !== 'number') return
       _cols.set(item.field, item)
     })
 
@@ -70,8 +69,8 @@
         card.style.cursor = 'pointer'
       }
       card.elements = card.elements.map(item => {
-        if (item.field && _cols.has(item.field)) {
-          item.col = _cols.get(item.field)
+        if (item.eleType === 'number' && item.field && _cols.has(item.field) && typeof(item.decimal) !== 'number') {
+          item.decimal = _cols.get(item.field).decimal || 0
         }
         return item
       })
@@ -88,7 +87,9 @@
       arr_field: _config.columns.map(col => col.field).join(','),
     }, () => {
       if (_config.wrap.datatype !== 'static' && _config.setting && _config.setting.sync !== 'true' && _config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, _config.setting.delay || 0)
       }
     })
   }
@@ -122,15 +123,13 @@
       let _data = {$$empty: true}
       if (nextProps.data && nextProps.data[config.dataName]) {
         _data = nextProps.data[config.dataName]
-        if (_data && Array.isArray(_data)) {
-          _data = _data[0]
+        if (Array.isArray(_data)) {
+          _data = _data[0] || {$$empty: true}
         }
       }
 
-      if (_data) {
-        _data.$$BID = BID || ''
-        _data.$$BData = BData || ''
-      }
+      _data.$$BID = BID || ''
+      _data.$$BData = BData || ''
 
       this.setState({sync: false, data: _data})
     } else if (config.setting.syncRefresh && nextProps.mainSearch && !is(fromJS(this.props.mainSearch), fromJS(nextProps.mainSearch))) {
@@ -151,16 +150,23 @@
 
     if (config.uuid !== menuId) return
 
-    this.loadData()                                                            // 鏁版嵁鍒锋柊
+    let supModule = config.setting.supModule
 
-    if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) {
-      MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+
+    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
+      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+        if (supModule && BID) {
+          MKEmitter.emit('reloadData', supModule, BID)
+        } else {
+          this.loadData()
+        }
+      } else {
+        this.loadData()
+      }
     }
 
-    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'))
+    if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
       btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
     }
   }
@@ -246,6 +252,8 @@
   render() {
     const { config, loading, data } = this.state
 
+    if (config.wrap.empty === 'hidden' && (!data || data.$$empty)) return null
+
     return (
       <div className="custom-prop-carousel-box" style={config.style}>
         {loading ?
diff --git a/src/tabviews/custom/components/chart/antv-bar-line/index.jsx b/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
index b83a695..2184ac3 100644
--- a/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-bar-line/index.jsx
@@ -323,7 +323,9 @@
       transfield
     }, () => {
       if (config.setting.sync !== 'true' && config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, _config.setting.delay || 0)
       } else if (config.setting.sync === 'true' && _data) {
         this.handleData()
       }
@@ -439,16 +441,23 @@
 
     if (config.uuid !== menuId) return
 
-    this.loadData()                                                            // 鏁版嵁鍒锋柊
+    let supModule = config.setting.supModule
 
-    if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) {
-      MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+
+    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
+      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+        if (supModule && BID) {
+          MKEmitter.emit('reloadData', supModule, BID)
+        } else {
+          this.loadData()
+        }
+      } else {
+        this.loadData()
+      }
     }
 
-    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'))
+    if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
       btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
     }
   }
@@ -1763,8 +1772,16 @@
   render() {
     const { config, loading, empty, BID } = this.state
 
+    let style = {...config.style}
+    if (empty && config.plot.empty === 'hidden') {
+      style.opacity = 0
+      style.position = 'absolute'
+      style.zIndex = -1
+      style.width = '100%'
+    }
+
     return (
-      <div className="custom-line-chart-plot-box" style={config.style}>
+      <div className="custom-line-chart-plot-box" style={style}>
         {loading ?
           <div className="loading-mask">
             <div className="ant-spin-blur"></div>
diff --git a/src/tabviews/custom/components/chart/antv-dashboard/index.jsx b/src/tabviews/custom/components/chart/antv-dashboard/index.jsx
index 63d21b7..280fa16 100644
--- a/src/tabviews/custom/components/chart/antv-dashboard/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-dashboard/index.jsx
@@ -108,7 +108,9 @@
       title: config.plot.title
     }, () => {
       if (config.setting.sync !== 'true' && config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, _config.setting.delay || 0)
       } else if (config.setting.sync === 'true') {
         this.handleData()
       }
diff --git a/src/tabviews/custom/components/chart/antv-pie/index.jsx b/src/tabviews/custom/components/chart/antv-pie/index.jsx
index e5aa7e7..be6d309 100644
--- a/src/tabviews/custom/components/chart/antv-pie/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-pie/index.jsx
@@ -76,7 +76,9 @@
       search: Utils.initMainSearch(config.search)
     }, () => {
       if (config.setting.sync !== 'true' && config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, _config.setting.delay || 0)
       } else if (config.setting.sync === 'true' && _data) {
         this.handleData()
       }
@@ -1043,8 +1045,16 @@
   render() {
     const { config, loading, empty, BID } = this.state
 
+    let style = {...config.style}
+    if (empty && config.plot.empty === 'hidden') {
+      style.opacity = 0
+      style.position = 'absolute'
+      style.zIndex = -1
+      style.width = '100%'
+    }
+
     return (
-      <div className="custom-pie-chart-plot-box" style={config.style}>
+      <div className="custom-pie-chart-plot-box" style={style}>
         {loading ?
           <div className="loading-mask">
             <div className="ant-spin-blur"></div>
diff --git a/src/tabviews/custom/components/chart/antv-scatter/index.jsx b/src/tabviews/custom/components/chart/antv-scatter/index.jsx
index 074d4ea..9a9d578 100644
--- a/src/tabviews/custom/components/chart/antv-scatter/index.jsx
+++ b/src/tabviews/custom/components/chart/antv-scatter/index.jsx
@@ -66,7 +66,9 @@
       search: Utils.initMainSearch(config.search),
     }, () => {
       if (config.setting.sync !== 'true' && config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, _config.setting.delay || 0)
       } else if (config.setting.sync === 'true' && _data) {
         this.handleData()
       }
@@ -182,14 +184,24 @@
 
     if (config.uuid !== menuId) return
 
-    this.loadData()                                                            // 鏁版嵁鍒锋柊
+    let supModule = config.setting.supModule
 
-    if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) {
-      MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+
+    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
+      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+        if (supModule && BID) {
+          MKEmitter.emit('reloadData', supModule, BID)
+        } else {
+          this.loadData()
+        }
+      } else {
+        this.loadData()
+      }
     }
 
-    if (position === 'mainline' && config.setting.supModule) {                 // 涓昏〃琛屽埛鏂�
-      MKEmitter.emit('reloadData', config.setting.supModule, (BID || 'empty'))
+    if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
+      btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
     }
   }
 
@@ -426,8 +438,16 @@
   render() {
     const { config, loading, empty, BID } = this.state
 
+    let style = {...config.style}
+    if (empty && config.plot.empty === 'hidden') {
+      style.opacity = 0
+      style.position = 'absolute'
+      style.zIndex = -1
+      style.width = '100%'
+    }
+
     return (
-      <div className="custom-scatter-plot-box" style={config.style}>
+      <div className="custom-scatter-plot-box" style={style}>
         {loading ?
           <div className="loading-mask">
             <div className="ant-spin-blur"></div>
diff --git a/src/tabviews/custom/components/chart/custom-chart/index.jsx b/src/tabviews/custom/components/chart/custom-chart/index.jsx
index f7d88bd..41cc2ac 100644
--- a/src/tabviews/custom/components/chart/custom-chart/index.jsx
+++ b/src/tabviews/custom/components/chart/custom-chart/index.jsx
@@ -61,7 +61,9 @@
       search: Utils.initMainSearch(config.search)
     }, () => {
       if (config.setting.sync !== 'true' && config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, _config.setting.delay || 0)
       } else if (config.setting.sync === 'true' && _data) {
         this.handleData()
       }
@@ -177,16 +179,23 @@
 
     if (config.uuid !== menuId) return
 
-    this.loadData()                                                            // 鏁版嵁鍒锋柊
+    let supModule = config.setting.supModule
 
-    if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) {
-      MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+
+    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
+      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+        if (supModule && BID) {
+          MKEmitter.emit('reloadData', supModule, BID)
+        } else {
+          this.loadData()
+        }
+      } else {
+        this.loadData()
+      }
     }
 
-    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'))
+    if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
       btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
     }
   }
diff --git a/src/tabviews/custom/components/code/sand-box/index.jsx b/src/tabviews/custom/components/code/sand-box/index.jsx
index 508932b..e7c6a74 100644
--- a/src/tabviews/custom/components/code/sand-box/index.jsx
+++ b/src/tabviews/custom/components/code/sand-box/index.jsx
@@ -67,7 +67,9 @@
       arr_field: _config.columns.map(col => col.field).join(','),
     }, () => {
       if (_config.wrap.datatype !== 'static' && _config.setting && _config.setting.sync !== 'true' && _config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, _config.setting.delay || 0)
       }
       this.renderView()
     })
diff --git a/src/tabviews/custom/components/editor/braft-editor/index.jsx b/src/tabviews/custom/components/editor/braft-editor/index.jsx
index c2f8d55..54ee6a6 100644
--- a/src/tabviews/custom/components/editor/braft-editor/index.jsx
+++ b/src/tabviews/custom/components/editor/braft-editor/index.jsx
@@ -68,7 +68,9 @@
       arr_field: _config.columns.map(col => col.field).join(','),
     }, () => {
       if (_config.wrap.datatype !== 'static' && _config.setting && _config.setting.sync !== 'true' && _config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, _config.setting.delay || 0)
       }
     })
   }
diff --git a/src/tabviews/custom/components/form/normal-form/index.jsx b/src/tabviews/custom/components/form/normal-form/index.jsx
index 3d7cd2b..1fdc49f 100644
--- a/src/tabviews/custom/components/form/normal-form/index.jsx
+++ b/src/tabviews/custom/components/form/normal-form/index.jsx
@@ -50,12 +50,12 @@
       if (_sync && data && data[config.dataName]) {
         _data = data[config.dataName]
         if (Array.isArray(_data)) {
-          _data = _data[0] || {}
+          _data = _data[0] || {$$empty: true}
         }
         _sync = false
       }
     } else {
-      _data = {}
+      _data = {$$empty: true}
     }
 
     if (!config.wrap.groupLabel) {
@@ -71,10 +71,16 @@
     config.subcards = config.subcards.map(group => {
       group.subButton.uuid = group.uuid
       group.subButton.$menuId = group.uuid
-      group.subButton.Ot = 'requiredSgl'
+      group.subButton.Ot = config.wrap.datatype === 'static' ? 'notRequired' : 'requiredSgl'
       group.subButton.$forbid = true
       group.subButton.OpenType = 'formSubmit'
       group.subButton.execError = 'never'
+
+      group.subButton.syncComponentId = group.subButton.syncComponent ? group.subButton.syncComponent.pop() : ''
+
+      if (group.subButton.syncComponentId === config.uuid) {
+        group.subButton.syncComponentId = ''
+      }
 
       if (group.subButton.enable === 'false') {
         group.subButton.style.display = 'none'
@@ -125,7 +131,9 @@
       arr_field: config.columns.map(col => col.field).join(','),
     }, () => {
       if (config.wrap.datatype !== 'static' && config.setting && config.setting.sync !== 'true' && config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, config.setting.delay || 0)
       }
     })
   }
@@ -158,12 +166,12 @@
     const { sync, config, group } = this.state
 
     if (sync && !is(fromJS(this.props.data), fromJS(nextProps.data))) {
-      let _data = {}
+      let _data = {$$empty: true}
       let _group = group
       if (nextProps.data && nextProps.data[config.dataName]) {
         _data = nextProps.data[config.dataName]
         if (Array.isArray(_data)) {
-          _data = _data[0] || {}
+          _data = _data[0] || {$$empty: true}
         }
       }
       if (config.wrap.statusControl && _data[config.wrap.statusControl]) {
@@ -199,12 +207,12 @@
 
     if (group.uuid !== menuId) return
 
-    if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) {
-      MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
-    }
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
 
-    if (config.wrap.datatype !== 'static' && config.setting) {
-      this.loadData()
+    if (!btn.syncComponentId || btn.syncComponentId !== config.setting.supModule) {
+      if (config.wrap.datatype !== 'static' && config.setting) {
+        this.loadData()
+      }
     }
 
     if (id) {
@@ -216,7 +224,9 @@
 
   resetParentParam = (MenuID, id) => {
     const { config } = this.state
+
     if (config.wrap.datatype === 'static' || !config.setting.supModule || config.setting.supModule !== MenuID) return
+    
     if (id !== this.state.BID || id !== '') {
       this.setState({ BID: id }, () => {
         this.loadData()
@@ -262,7 +272,7 @@
 
     if (config.wrap.datatype === 'static' || (config.setting.supModule && !BID)) {
       this.setState({
-        data: {}
+        data: {$$empty: true}
       })
       return
     }
@@ -283,7 +293,7 @@
 
     let result = await Api.genericInterface(param)
     if (result.status) {
-      let _data = result.data && result.data[0] ? result.data[0] : {}
+      let _data = result.data && result.data[0] ? result.data[0] : {$$empty: true}
       let _group = group
 
       if (type === 'refresh') {
@@ -298,7 +308,7 @@
       this.setState({
         group: null,
         step: _group.sort - 1,
-        data: _data || {},
+        data: _data || {$$empty: true},
         loading: false
       }, () => {
         this.setState({group: _group})
@@ -382,7 +392,7 @@
             btn={group.subButton}
             setting={config.setting}
             columns={config.columns}
-            selectedData={[data]}
+            selectedData={data.$$empty ? [] : [data]}
           />
           {group.nextButton.enable === 'true' && group.sort !== config.subcards.length ? <Button type="link" className="skip" onClick={this.nextStep} style={group.nextButton.style}>{group.nextButton.label}</Button> : null}
         </div> : null}
diff --git a/src/tabviews/custom/components/form/tab-form/index.jsx b/src/tabviews/custom/components/form/tab-form/index.jsx
index 20cfcac..a3f9f60 100644
--- a/src/tabviews/custom/components/form/tab-form/index.jsx
+++ b/src/tabviews/custom/components/form/tab-form/index.jsx
@@ -49,12 +49,12 @@
       if (_sync && data && data[config.dataName]) {
         _data = data[config.dataName]
         if (Array.isArray(_data)) {
-          _data = _data[0] || {}
+          _data = _data[0] || {$$empty: true}
         }
         _sync = false
       }
     } else {
-      _data = {}
+      _data = {$$empty: true}
     }
 
     if (!config.wrap.groupLabel) {
@@ -70,10 +70,16 @@
     config.subcards = config.subcards.map(group => {
       group.subButton.uuid = group.uuid
       group.subButton.$menuId = group.uuid
-      group.subButton.Ot = 'requiredSgl'
+      group.subButton.Ot = config.wrap.datatype === 'static' ? 'notRequired' : 'requiredSgl'
       group.subButton.$forbid = true
       group.subButton.OpenType = 'formSubmit'
       group.subButton.execError = 'never'
+
+      group.subButton.syncComponentId = group.subButton.syncComponent ? group.subButton.syncComponent.pop() : ''
+
+      if (group.subButton.syncComponentId === config.uuid) {
+        group.subButton.syncComponentId = ''
+      }
 
       if (group.subButton.enable === 'false') {
         group.subButton.style.display = 'none'
@@ -111,7 +117,9 @@
       arr_field: config.columns.map(col => col.field).join(','),
     }, () => {
       if (config.wrap.datatype !== 'static' && config.setting && config.setting.sync !== 'true' && config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, config.setting.delay || 0)
       }
     })
   }
@@ -144,12 +152,12 @@
     const { sync, config, group } = this.state
 
     if (sync && !is(fromJS(this.props.data), fromJS(nextProps.data))) {
-      let _data = {}
+      let _data = {$$empty: true}
       let _group = group
       if (nextProps.data && nextProps.data[config.dataName]) {
         _data = nextProps.data[config.dataName]
         if (Array.isArray(_data)) {
-          _data = _data[0] || {}
+          _data = _data[0] || {$$empty: true}
         }
       }
 
@@ -182,16 +190,16 @@
 
     if (group.uuid !== menuId) return
 
-    if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) {
-      MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+
+    if (!btn.syncComponentId || btn.syncComponentId !== config.setting.supModule) {
+      if (config.wrap.datatype !== 'static' && config.setting) {
+        this.loadData()
+      }
     }
 
     if (id) {
       MKEmitter.emit('resetSelectLine', config.uuid, id, '')
-    }
-
-    if (config.wrap.datatype !== 'static' && config.setting) {
-      this.loadData()
     }
 
     this.execSuccess(btn, id)
@@ -233,7 +241,7 @@
 
     if (config.wrap.datatype === 'static' || (config.setting.supModule && !BID)) {
       this.setState({
-        data: {}
+        data: {$$empty: true}
       })
       return
     }
@@ -254,13 +262,13 @@
 
     let result = await Api.genericInterface(param)
     if (result.status) {
-      let _data = result.data && result.data[0] ? result.data[0] : {}
+      let _data = result.data && result.data[0] ? result.data[0] : {$$empty: true}
 
       let _group = group
 
       this.setState({
         group: null,
-        data: _data || {},
+        data: _data || {$$empty: true},
         loading: false
       }, () => {
         this.setState({group: _group})
@@ -328,7 +336,7 @@
             btn={group.subButton}
             setting={config.setting}
             columns={config.columns}
-            selectedData={[data]}
+            selectedData={data.$$empty ? [] : [data]}
           />
         </div> : null}
       </div>
diff --git a/src/tabviews/custom/components/group/normal-group/index.jsx b/src/tabviews/custom/components/group/normal-group/index.jsx
index 99486fe..19c4411 100644
--- a/src/tabviews/custom/components/group/normal-group/index.jsx
+++ b/src/tabviews/custom/components/group/normal-group/index.jsx
@@ -266,6 +266,7 @@
 
     let pageSize = ['A4', 'A3', 'A5'].includes(config.setting.pageSize) ? config.setting.pageSize : 'A4'
     let pageLayout = config.setting.pageLayout !== 'horizontal' ? 'vertical' : 'horizontal'
+    let hides = config.setting.hide || []
 
     let pageParam = {
       A4: {
@@ -301,7 +302,7 @@
           doc.write(`<LINK rel="stylesheet" type="text/css" href="${linkList[i].href}">`)
         }
       }
-      doc.write(`<style>body{width: ${width}px!important;}*{border-style: solid;border-width: 0;}.print-button, .top-search{display: none!important;}</style>`)
+      doc.write(`<style>body{width: ${width}px!important;} *{border-style: solid;border-width: 0;} .print-button{display: none!important;} ${hides.includes('search') ? '.top-search{display: none!important;}' : ''} ${hides.includes('button') ? '.ant-btn{opacity: 0!important;}' : ''}</style>`)
       for (let i = 0;i < styleList.length;i++) {
         doc.write('<style>' + styleList[i].innerHTML + '</style>')
       }
@@ -333,9 +334,9 @@
     const { printing } = this.state
 
     return (
-      <div className="normal-group-wrap" id={config.uuid} style={config.style}>
+      <div className={'normal-group-wrap ' + (config.setting.layout || '')} id={config.uuid} style={config.style}>
         {config.setting && config.setting.print === 'true' ? <Button className="print-button" icon="printer" loading={printing} onClick={this.print}></Button> : null}
-        <Row>{this.getComponents()}</Row>
+        <Row className="component-wrap">{this.getComponents()}</Row>
       </div>
     )
   }
diff --git a/src/tabviews/custom/components/group/normal-group/index.scss b/src/tabviews/custom/components/group/normal-group/index.scss
index e502301..419bf1b 100644
--- a/src/tabviews/custom/components/group/normal-group/index.scss
+++ b/src/tabviews/custom/components/group/normal-group/index.scss
@@ -14,3 +14,14 @@
   display: block;
   clear: both;
 }
+
+.normal-group-wrap.flex {
+  >.ant-row {
+    display: flex;
+    >.ant-col {
+      flex: 1;
+      max-width: unset;
+      width: 5%;
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/tabviews/custom/components/module/voucher/index.jsx b/src/tabviews/custom/components/module/voucher/index.jsx
new file mode 100644
index 0000000..b36187e
--- /dev/null
+++ b/src/tabviews/custom/components/module/voucher/index.jsx
@@ -0,0 +1,130 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { is, fromJS } from 'immutable'
+import { Button, Select, Input, DatePicker } from 'antd'
+// import { EditOutlined, ToolOutlined, DeleteOutlined, FontColorsOutlined } from '@ant-design/icons'
+
+import asyncComponent from '@/utils/asyncComponent'
+// import MKEmitter from '@/utils/events.js'
+import './index.scss'
+
+const VoucherTable = asyncComponent(() => import('./voucherTable'))
+
+class VoucherModule extends Component {
+  static propTpyes = {
+    BID: PropTypes.any,              // 鐖剁骇Id
+    config: PropTypes.object,        // 缁勪欢閰嶇疆淇℃伅
+  }
+
+  state = {
+    BID: '',
+    type: '',
+    config: null,
+    loading: false,
+    data: null,
+    searchkey: null,
+    disableAdd: true,
+    disableSave: true,
+    typeOptions: []
+  }
+
+  UNSAFE_componentWillMount () {
+    const { config, BID } = this.props
+
+    this.setState({
+      config: fromJS(config).toJS(),
+      BID: BID || '',
+      type: config.wrap.type
+    }, () => {
+      this.loadData()
+    })
+  }
+
+  componentDidMount () {
+
+  }
+
+  shouldComponentUpdate (nextProps, nextState) {
+    return !is(fromJS(this.state), fromJS(nextState))
+  }
+
+  /**
+   * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊锛屾竻闄ゅ揩鎹烽敭璁剧疆
+   */
+  componentWillUnmount () {
+    this.setState = () => {
+      return
+    }
+  }
+
+  loadData = () => {
+
+  }
+
+  triggeradd = () => {
+    
+  }
+
+  triggersave = () => {
+
+  }
+
+  triggerprint = () => {
+
+  }
+
+  render() {
+    const { config, disableSave, disableAdd, typeOptions, data, type } = this.state
+
+    return (
+      <div className="menu-voucher-wrap" style={config.style}>
+        <div className="voucher-header">
+          <Button className="system-background header-btn" disabled={disableAdd} onClick={this.triggeradd}>鏂板</Button>
+          <Button className="system-background header-btn" disabled={disableSave} onClick={this.triggersave}>淇濆瓨</Button>
+          <Button className="system-background header-btn" disabled={disableSave} onClick={this.triggerprint}>鎵撳嵃</Button>
+          <Button className="system-background header-btn" disabled={disableSave} onClick={this.triggerprint}>瀵煎叆</Button>
+          <Button className="system-background header-btn" disabled={disableSave} onClick={this.triggerprint}>瀵煎嚭</Button>
+        </div>
+        {type === 'edit' ? <div className="voucher-body">
+          <div className="pre-wrap">
+            <div className="voucher-code">
+              <Select>
+                {typeOptions.map(option =>
+                  <Select.Option value={option.value}>{option.label}</Select.Option>
+                )}
+              </Select>
+              <Input autoComplete="off" /> 鍙�
+            </div>
+            <div className="voucher-date">
+              鏃ユ湡锛�<DatePicker onChange={this.onChange}/>
+            </div>
+            <div className="voucher-affix">
+              闄勫崟鎹� <Input autoComplete="off" /> 寮�
+              <Button type="link" className="" onClick={this.triggerprint}>闄勪欢</Button>
+              <Button type="link" className="" onClick={this.triggerprint}>澶囨敞</Button>
+            </div>
+          </div>
+          <VoucherTable config={config} data={data}/>
+        </div> : null}
+        {type === 'check' ? <div className="voucher-body">
+          <div className="pre-wrap">
+            <div className="voucher-code">
+              璁� 1 鍙�
+            </div>
+            <div className="voucher-date">
+              鏃ユ湡锛�2022-02-24
+            </div>
+            <div className="voucher-affix">
+              闄勫崟鎹� 2 寮�
+              <Button type="link" className="" onClick={this.triggerprint}>闄勪欢</Button>
+              <Button type="link" className="" onClick={this.triggerprint}>澶囨敞</Button>
+            </div>
+          </div>
+          <VoucherTable config={config} data={data}/>
+        </div> : null}
+      </div>
+    )
+  }
+}
+
+export default VoucherModule
\ No newline at end of file
diff --git a/src/tabviews/custom/components/module/voucher/index.scss b/src/tabviews/custom/components/module/voucher/index.scss
new file mode 100644
index 0000000..0137321
--- /dev/null
+++ b/src/tabviews/custom/components/module/voucher/index.scss
@@ -0,0 +1,56 @@
+.menu-voucher-wrap {
+  position: relative;
+  box-sizing: border-box;
+  background: #ffffff;
+  background-position: center center;
+  background-repeat: no-repeat;
+  background-size: cover;
+  min-height: 150px;
+  overflow-y: auto;
+  color: #000000;
+
+  .voucher-header {
+    padding: 10px;
+    border-bottom: 1px solid #eeeeee;
+
+    .header-btn {
+      height: 28px;
+      min-width: 80px;
+      margin-right: 10px;
+    }
+  }
+  .voucher-body {
+    padding: 0 15px;
+    .voucher-code {
+      display: inline-block;
+      width: 160px;
+      margin-right: 15px;
+      
+      .ant-select {
+        width: 65px;
+        margin-right: 10px;
+      }
+      .ant-input {
+        width: 60px;
+      }
+    }
+    .pre-wrap {
+      padding: 10px 0px;
+    }
+    .voucher-date {
+      display: inline-block;
+      .ant-calendar-picker {
+        width: 120px;
+      }
+    }
+    .voucher-affix {
+      float: right;
+      width: 250px;
+      .ant-input {
+        width: 60px;
+      }
+    }
+  }
+}
+
+
diff --git a/src/tabviews/custom/components/module/voucher/voucherTable/index.jsx b/src/tabviews/custom/components/module/voucher/voucherTable/index.jsx
new file mode 100644
index 0000000..d4bb231
--- /dev/null
+++ b/src/tabviews/custom/components/module/voucher/voucherTable/index.jsx
@@ -0,0 +1,738 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { is, fromJS } from 'immutable'
+import { Table, Modal, Input, InputNumber, notification, message } from 'antd'
+// import { EditOutlined } from '@ant-design/icons'
+
+import Api from '@/api'
+import Utils from '@/utils/utils.js'
+import MKEmitter from '@/utils/events.js'
+import zhCN from '@/locales/zh-CN/main.js'
+import enUS from '@/locales/en-US/main.js'
+import '@/assets/css/table.scss'
+import './index.scss'
+
+class BodyRow extends React.Component {
+  shouldComponentUpdate (nextProps, nextState) {
+    return !is(fromJS(this.props.data), fromJS(nextProps.data))
+  }
+
+  render() {
+    let { data, ...resProps } = this.props
+    let style = {}
+    let className = ''
+
+    return <tr {...resProps} className={className} style={style}/>
+  }
+}
+
+class BodyCell extends React.Component {
+  state = {
+    editing: false,
+  }
+
+  shouldComponentUpdate (nextProps, nextState) {
+    return !is(fromJS(this.props.record), fromJS(nextProps.record)) ||
+      nextState.editing !== this.state.editing
+  }
+
+  componentDidMount () {
+    MKEmitter.addListener('tdFocus', this.tdFocus)
+  }
+
+  /**
+   * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊锛屾竻闄ゅ揩鎹烽敭璁剧疆
+   */
+  componentWillUnmount () {
+    this.setState = () => {
+      return
+    }
+    MKEmitter.removeListener('tdFocus', this.tdFocus)
+  }
+
+  tdFocus = (id) => {
+    const { col, record } = this.props
+
+    if (id !== col.uuid + record.uuid) return
+
+    this.focus()
+  }
+
+  enterPress = () => {
+    const { col, record } = this.props
+    const { value } = this.state
+
+    this.setState({editing: false})
+
+    if (value !== record[col.field]) {
+      let line = {...record, [col.field]: value}
+
+      if (col.field === 'debtor') {
+        line.creditor = ''
+      } else {
+        line.debtor = ''
+      }
+
+      MKEmitter.emit('changeRecord', col.tableId, line)
+    }
+
+    setTimeout(() => {
+      if (col.field === 'creditor') {
+        MKEmitter.emit('nextLine', col, record)
+      } else {
+        let cl = {remark: 'subject', subject: 'debtor', debtor: 'creditor'}
+        MKEmitter.emit('tdFocus', cl[col.uuid] + record.uuid)
+      }
+    }, 50)
+  }
+
+  focus = () => {
+    const { col, record } = this.props
+
+    if (record.type === 'total') return
+
+    this.setState({editing: true, value: record[col.field]}, () => {
+      let node = document.getElementById(col.uuid + record.uuid)
+      node && node.select()
+    })
+  }
+
+  onBlur = () => {
+    const { col, record } = this.props
+    const { value } = this.state
+
+    this.setState({editing: false})
+
+    if (value !== record[col.field]) {
+      let line = {...record, [col.field]: value}
+
+      if (col.field === 'debtor') {
+        line.creditor = ''
+      } else {
+        line.debtor = ''
+      }
+
+      MKEmitter.emit('changeRecord', col.tableId, line)
+    }
+  }
+  
+  onChange = (val) => {
+    this.setState({value: val})
+  }
+
+  render() {
+    let { col, record, className } = this.props
+    const { editing } = this.state
+
+    let children = null
+    let colSpan = 1
+
+    if (col.field === 'remark') {
+      let val = record.remark || ''
+
+      if (record.type === 'total') {
+        children = <div className="content-wrap" style={{lineHeight: '60px'}}>鍚堣: {val}</div>
+        colSpan = 2
+      } else {
+        if (editing) {
+          children = <Input.TextArea id={col.uuid + record.uuid} autoSize={false} defaultValue={val} onChange={(e) => this.onChange(e.target.value)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
+        } else {
+          children = <div className="content-wrap" onClick={this.focus}>{val}</div>
+        }
+      }
+    } else if (col.field === 'subject') {
+      if (record.type === 'total') {
+        colSpan = 0
+      } else {
+        let val = record.subject || ''
+  
+        if (editing) {
+          children = <Input.TextArea id={col.uuid + record.uuid} autoSize={false} defaultValue={val} onChange={(e) => this.onChange(e.target.value)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
+        } else {
+          children = <div className="content-wrap" onClick={this.focus}>{val}</div>
+        }
+      }
+    } else if (col.field === 'debtor') {
+      let val = record.debtor
+      let down = false
+      let vals = []
+      if (typeof(val) === 'number') {
+        if (val < 0) {
+          down = true
+          val = Math.abs(val)
+        }
+        vals = (val * 100).toFixed(0).split('').reverse()
+      }
+
+      if (editing) {
+        children = <InputNumber id={col.uuid + record.uuid} defaultValue={val} onChange={(val) => this.onChange(val)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
+      } else {
+        children = <div className={'money-uint' + (down ? ' down' : '')} onClick={this.focus}>
+          <span>{vals[10] || ''}</span> <span>{vals[9] || ''}</span> <span>{vals[8] || ''}</span> <span>{vals[7] || ''}</span> <span>{vals[6] || ''}</span> <span>{vals[5] || ''}</span>
+          <span>{vals[4] || ''}</span> <span>{vals[3] || ''}</span> <span>{vals[2] || ''}</span> <span>{vals[1] || ''}</span> <span className="last">{vals[0] || ''}</span>
+        </div>
+      }
+    } else if (col.field === 'creditor') {
+      let val = record.creditor
+      let down = false
+      let vals = []
+      if (typeof(val) === 'number') {
+        if (val < 0) {
+          down = true
+          val = Math.abs(val)
+        }
+        vals = (val * 100).toFixed(0).split('').reverse()
+      }
+
+      if (editing) {
+        children = <InputNumber id={col.uuid + record.uuid} defaultValue={val} onChange={(val) => this.onChange(val)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
+      } else {
+        children = <div className={'money-uint' + (down ? ' down' : '')} onClick={this.focus}>
+        <span>{vals[10] || ''}</span> <span>{vals[9] || ''}</span> <span>{vals[8] || ''}</span> <span>{vals[7] || ''}</span> <span>{vals[6] || ''}</span> <span>{vals[5] || ''}</span>
+        <span>{vals[4] || ''}</span> <span>{vals[3] || ''}</span> <span>{vals[2] || ''}</span> <span>{vals[1] || ''}</span> <span className="last">{vals[0] || ''}</span>
+      </div>
+      }
+    }
+
+    if (!colSpan) return null
+
+    return (<td colSpan={colSpan} className={className}>{children}</td>)
+  }
+}
+
+class VoucherTable extends Component {
+  static propTpyes = {
+    config: PropTypes.object,        // 鑿滃崟Id
+    BID: PropTypes.any,              // 涓昏〃ID
+    data: PropTypes.any,             // 琛ㄦ牸鏁版嵁
+    total: PropTypes.any,            // 鎬绘暟
+    loading: PropTypes.bool,         // 琛ㄦ牸鍔犺浇涓�
+    refreshdata: PropTypes.func,     // 琛ㄦ牸涓帓搴忓垪銆侀〉鐮佺殑鍙樺寲鏃跺埛鏂�
+  }
+
+  state = {
+    dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
+    data: [],
+    edData: [],
+    edColumns: [],
+    tableId: '',          // 琛ㄦ牸ID
+    pageSize: 10,         // 姣忛〉鏁版嵁鏉℃暟
+    columns: null,        // 鏄剧ず鍒�
+    loading: false,
+  }
+
+  UNSAFE_componentWillMount () {
+    const { config } = this.props
+
+    let data = [
+      {remark: '鎻愮幇', subject: '1001 搴撳瓨鐜伴噾', debtor: 124, creditor: ''},
+      {remark: '璐叆鍥哄畾璧勪骇', subject: '1001 搴撳瓨鐜伴噾', debtor: '', creditor: 124},
+      {remark: '杞粨閿�鍞垚鏈�', subject: '1001 搴撳瓨鐜伴噾', debtor: -524, creditor: ''},
+      {remark: '鎻愮幇', subject: '1001 搴撳瓨鐜伴噾', debtor: 34, creditor: ''},
+    ]
+
+    data = this.initData(data)
+    data.push(this.getTotalLine(data))
+
+    let columns = [
+      {
+        title: '鎽樿',
+        dataIndex: 'remark',
+        key: 'remark',
+        width: '22%',
+        onCell: record => ({
+          record,
+          col: {uuid: 'remark', field: 'remark', tableId: config.uuid},
+        })
+      },
+      {
+        title: '浼氳绉戠洰',
+        dataIndex: 'subject',
+        key: 'subject',
+        width: '34%',
+        onCell: record => ({
+          record,
+          col: {uuid: 'subject', field: 'subject', tableId: config.uuid},
+        })
+      },
+      {
+        title: () => (<>
+          <div className="money-title">鍊熸柟閲戦</div>
+          <div className="money-uint">
+            <span>浜�</span> <span>鍗�</span> <span>鐧�</span> <span>鍗�</span> <span>涓�</span> <span>鍗�</span>
+            <span>鐧�</span> <span>鍗�</span> <span>鍏�</span> <span>瑙�</span> <span className="last">鍒�</span>
+          </div>
+        </>),
+        dataIndex: 'debtor',
+        key: 'debtor',
+        width: '22%',
+        onCell: record => ({
+          record,
+          col: {uuid: 'debtor', field: 'debtor', tableId: config.uuid},
+        })
+      },
+      {
+        title: () => (<>
+          <div className="money-title">璐锋柟閲戦</div>
+          <div className="money-uint">
+            <span>浜�</span> <span>鍗�</span> <span>鐧�</span> <span>鍗�</span> <span>涓�</span> <span>鍗�</span>
+            <span>鐧�</span> <span>鍗�</span> <span>鍏�</span> <span>瑙�</span> <span className="last">鍒�</span>
+          </div>
+        </>),
+        dataIndex: 'creditor',
+        key: 'creditor',
+        width: '22%',
+        onCell: record => ({
+          record,
+          col: {uuid: 'creditor', field: 'creditor', tableId: config.uuid},
+        })
+      }
+    ]
+
+    this.setState({
+      data: data,
+      edData: fromJS(data).toJS(),
+      columns,
+      tableId: config.uuid
+    })
+  }
+
+  shouldComponentUpdate (nextProps, nextState) {
+    return !is(fromJS(this.props), fromJS(nextProps)) || !is(fromJS(this.state), fromJS(nextState))
+  }
+
+  componentDidMount () {
+    MKEmitter.addListener('nextLine', this.nextLine)
+    MKEmitter.addListener('delRecord', this.delRecord)
+    MKEmitter.addListener('changeRecord', this.changeRecord)
+  }
+
+  /**
+   * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊
+   */
+  componentWillUnmount () {
+    this.setState = () => {
+      return
+    }
+    MKEmitter.removeListener('nextLine', this.nextLine)
+    MKEmitter.removeListener('delRecord', this.delRecord)
+    MKEmitter.removeListener('changeRecord', this.changeRecord)
+  }
+
+  UNSAFE_componentWillReceiveProps(nextProps) {
+    if (!is(fromJS(this.props.data), fromJS(nextProps.data))) {
+      this.setState({data: nextProps.data || []})
+    }
+  }
+
+  initData = (data) => {
+    let _data = data.map((item, i) => {
+      item.uuid = Utils.getuuid()
+      item.index = i
+      
+      return item
+    })
+
+    if (_data.length < 4) {
+      for (let i = _data.length - 1; i < 4; i++) {
+        _data.push({uuid: Utils.getuuid(), index: i + 1, remark: '', subject: '', debtor: '', creditor: ''})
+      }
+    }
+    return _data
+  }
+
+  getTotalLine = (data) => {
+    let totalLine = {uuid: Utils.getuuid(), type: 'total'}
+    let debtor = ''
+    let creditor = ''
+
+    data.forEach(item => {
+      if (typeof(item.debtor) === 'number') {
+        if (debtor === '') {
+          debtor = 0
+        }
+
+        debtor += item.debtor
+      } else if (typeof(item.creditor) === 'number') {
+        if (debtor === '') {
+          debtor = 0
+        }
+        if (creditor === '') {
+          creditor = 0
+        }
+        creditor += item.creditor
+      }
+    })
+
+    totalLine.debtor = debtor
+    totalLine.creditor = creditor
+
+    totalLine.remark = this.changeMoneyToChinese(debtor)
+    
+    return totalLine
+  }
+  
+  changeMoneyToChinese = (money) => {
+    let cnNums = ['闆�', '澹�', '璐�', '鍙�', '鑲�', '浼�', '闄�', '鏌�', '鎹�', '鐜�']
+    let cnIntRadice = ['', '鎷�', '浣�', '浠�']
+    let cnIntUnits = ['', '涓�', '浜�', '鍏�']
+    let cnDecUnits = ['瑙�', '鍒�', '姣�', '鍘�']
+    let cnInteger = '鏁�'
+    let cnIntLast = '鍏�'
+    let maxNum = 999999999999999.9999 // 鏈�澶у鐞嗙殑鏁板瓧
+    let IntegerNum = null
+    let DecimalNum = null
+    let ChineseStr = ''
+    let parts = null // 鍒嗙閲戦鍚庣敤鐨勬暟缁勶紝棰勫畾涔�
+    let Symbol = ''  // 姝h礋鍊兼爣璁�
+
+    if (money === '') return ''
+
+    if (money >= maxNum) return '瓒呭嚭鏈�澶у鐞嗘暟瀛�'
+
+    if (money === 0) {
+      ChineseStr = cnNums[0] + cnIntLast + cnInteger;
+      return ChineseStr
+    }
+    if(money < 0) {
+      money = -money
+      Symbol = '璐�'       
+    }
+    money = money.toString() // 杞崲涓哄瓧绗︿覆
+    if (money.indexOf('.') === -1) {
+      IntegerNum = money
+      DecimalNum = ''
+    } else {
+      parts = money.split('.')
+      IntegerNum = parts[0]
+      DecimalNum = parts[1].substr(0, 4)
+    }
+
+    if (parseInt(IntegerNum, 10) > 0) { // 鑾峰彇鏁村瀷閮ㄥ垎杞崲
+      let zeroCount = 0
+      let IntLen = IntegerNum.length
+      for (let i = 0; i < IntLen; i++) {
+        let n = IntegerNum.substr(i, 1)
+        let p = IntLen - i - 1
+        let q = p / 4
+        let m = p % 4
+        
+        if (n === '0') {
+          zeroCount++
+        } else {
+          if (zeroCount > 0) {
+            ChineseStr += cnNums[0]
+          }
+          zeroCount = 0 // 褰掗浂
+          ChineseStr += cnNums[parseInt(n)] + cnIntRadice[m]
+        }
+
+        if (m === 0 && zeroCount < 4) {
+          ChineseStr += cnIntUnits[q]
+        }
+      }
+      ChineseStr += cnIntLast
+    }
+
+    if (DecimalNum !== '') { // 灏忔暟閮ㄥ垎
+      let decLen = DecimalNum.length
+
+      for (let i = 0; i < decLen; i++) {
+        let n = DecimalNum.substr(i, 1)
+        if (n !== '0') {
+          ChineseStr += cnNums[Number(n)] + cnDecUnits[i]
+        }
+      }
+    }
+    if (ChineseStr === '') {
+      ChineseStr += cnNums[0] + cnIntLast + cnInteger
+    } else if (DecimalNum === '') {
+      ChineseStr += cnInteger
+    }
+
+    ChineseStr = Symbol + ChineseStr
+    
+    return ChineseStr
+  }
+
+  nextLine = (col, record) => {
+    const { edData, tableId } = this.state
+
+    if (col.tableId !== tableId) return
+
+    if (record.index < edData.length - 2) {
+      MKEmitter.emit('tdFocus', 'remark' + edData[record.index + 1].uuid)
+    } else {
+      let _data = fromJS(edData).toJS()
+      let line = {uuid: Utils.getuuid(), index: _data.length - 1, remark: record.remark || '', subject: '', debtor: '', creditor: ''}
+
+      _data.splice(_data.length - 1, 0, line)
+
+      this.setState({edData: _data}, () => {
+        MKEmitter.emit('tdFocus', 'remark' + line.uuid)
+      })
+    }
+  }
+
+  plusLine = (initEditLine) => {
+    const { edData } = this.state
+
+    let item = {...edData[edData.length - 1]}
+
+    item.key = item.key + 1
+    item.$$uuid = '$new'
+
+    this.setState({edData: [...edData, item]}, () => {
+      MKEmitter.emit('tdFocus', initEditLine.uuid + item.uuid)
+    })
+  }
+
+  delRecord = (id, record) => {
+    const { tableId, edData } = this.state
+
+    if (id !== tableId) return
+
+    let _data = edData.filter(item => item.uuid !== record.uuid)
+
+    _data.pop()
+
+    if (_data.length < 4) {
+      for (let i = _data.length - 1; i < 4; i++) {
+        _data.push({uuid: Utils.getuuid(), index: i + 1, remark: '', subject: '', debtor: '', creditor: ''})
+      }
+    }
+
+    _data.push(this.getTotalLine(_data))
+
+    this.setState({edData: _data})
+  }
+
+  changeRecord = (tableId, record) => {
+    if (tableId !== this.state.tableId) return
+
+    let _data = this.state.edData.map(item => {
+      if (item.uuid === record.uuid) {
+        return record
+      } else {
+        return item
+      }
+    })
+
+    _data.pop()
+
+    if (record.index === _data.length - 1) {
+      _data.push({uuid: Utils.getuuid(), index: record.index + 1, remark: '', subject: '', debtor: '', creditor: ''})
+    }
+
+    _data.push(this.getTotalLine(_data))
+
+    this.setState({edData: _data})
+  }
+
+  addLine = () => {
+    const { BID } = this.props
+    const { edData } = this.state
+
+    let item = {}
+    if (edData.length > 0) {
+      item = {...edData[edData.length - 1]}
+      item.key = item.key + 1
+      item.$$uuid = '$new'
+    } else {
+      item.key = 0
+      item.$$uuid = '$new'
+      item.$$BID = BID || ''
+    }
+
+    this.setState({edData: [...edData, item]})
+  }
+
+  checkData = () => {
+    const { edData } = this.state
+
+    if (edData.length === 0) {
+      notification.warning({
+        top: 92,
+        message: '鎻愪氦鏁版嵁涓嶅彲涓虹┖锛�',
+        duration: 5
+      })
+      return
+    }
+    let err = ''
+    let data = fromJS(edData).toJS().map(item => {
+      // let line = []
+      // fields.forEach(col => {
+      //   if (col.editable !== 'true' || item.$deleted) {
+      //     if (col.type === 'number') {
+      //       item[col.field] = +item[col.field]
+      //       if (isNaN(item[col.field])) {
+      //         item[col.field] = 0
+      //       }
+      //     } else {
+      //       item[col.field] = item[col.field] !== undefined ? (item[col.field] + '') : ''
+      //     }
+      //     return
+      //   }
+      //   if (col.type === 'text') {
+      //     let val = item[col.field] !== undefined ? (item[col.field] + '') : ''
+      //     if (col.required === 'true' && !val) {
+      //       line.push(`${col.label}涓嶅彲涓虹┖`)
+      //     }
+      //     item[col.field] = val
+      //   } else if (col.type === 'number') {
+      //     let val = item[col.field]
+      //     if (!val && val !== 0) {
+      //       line.push(`${col.label}涓嶅彲涓虹┖`)
+      //       return
+      //     }
+      //     val = +val
+      //     if (isNaN(val)) {
+      //       line.push(`${col.label}鏁版嵁鏍煎紡閿欒`)
+      //       return
+      //     }
+
+      //     val = +val.toFixed(col.decimal || 0)
+          
+      //     if (typeof(col.max) === 'number' && val > col.max) {
+      //       line.push(`${col.label}涓嶅彲澶т簬${col.max}`)
+      //     } else if (typeof(col.min) === 'number' && val < col.min) {
+      //       line.push(`${col.label}涓嶅彲灏忎簬${col.min}`)
+      //     }
+
+      //     item[col.field] = val
+      //   }
+      // })
+
+      return item
+    })
+
+    if (err) {
+      notification.warning({
+        top: 92,
+        message: err,
+        duration: 5
+      })
+    } else {
+      this.submit(data)
+    }
+  }
+
+  submit = (data) => {
+    const { BID } = this.props
+
+    let param = {
+      // excel_in: result.lines,
+      BID: BID || ''
+    }
+
+    this.setState({
+      loading: true
+    })
+
+    param.func = 'submit.innerFunc'
+
+    Api.genericInterface(param).then((res) => {
+      if (res.status) {
+        this.execSuccess(res)
+      } else {
+        this.execError(res)
+      }
+    }, () => {
+      this.execError({})
+    })
+  }
+
+  execSuccess = (res) => {
+    const { submit } = this.props
+
+    if (res && res.ErrCode === 'S') { // 鎵ц鎴愬姛
+      notification.success({
+        top: 92,
+        message: res.ErrMesg || this.state.dict['main.action.confirm.success'],
+        duration: submit.stime ? submit.stime : 2
+      })
+    } else if (res && res.ErrCode === 'Y') { // 鎵ц鎴愬姛
+      Modal.success({
+        title: res.ErrMesg || this.state.dict['main.action.confirm.success']
+      })
+    } else if (res && res.ErrCode === '-1') { // 瀹屾垚鍚庝笉鎻愮ず
+
+    }
+
+    this.setState({
+      loading: false
+    })
+
+    if (submit.closetab === 'true') {
+      MKEmitter.emit('popclose')
+    }
+    if (submit.execSuccess !== 'never') {
+      MKEmitter.emit('refreshByButtonResult', submit.$menuId, submit.execSuccess, submit)
+    }
+  }
+
+  execError = (res) => {
+    const { submit } = this.props
+
+    if (res.ErrCode === 'E') {
+      Modal.error({
+        title: res.message || res.ErrMesg,
+      })
+    } else if (res.ErrCode === 'N') {
+      notification.error({
+        top: 92,
+        message: res.message || res.ErrMesg,
+        duration: submit.ntime ? submit.ntime : 10
+      })
+    } else if (res.ErrCode === 'F') {
+      notification.error({
+        className: 'notification-custom-error',
+        top: 92,
+        message: res.message || res.ErrMesg,
+        duration: submit.ftime ? submit.ftime : 10
+      })
+    } else if (res.ErrCode === 'NM') {
+      message.error(res.message || res.ErrMesg)
+    }
+    
+    this.setState({
+      loading: false
+    })
+
+    if (submit.execError !== 'never') {
+      MKEmitter.emit('refreshByButtonResult', submit.$menuId, submit.execError, submit)
+    }
+  }
+
+  render() {
+    const { edData, columns} = this.state
+
+    const components = {
+      body: {
+        row: BodyRow,
+        cell: BodyCell
+      }
+    }
+
+    return (
+      <div className="voucher-table-wrap">
+        <Table
+          rowKey="uuid"
+          components={components}
+          columns={columns}
+          dataSource={edData}
+          bordered={true}
+          // loading={this.props.loading}
+          onRow={(record, index) => {
+            return {
+              data: record
+            }
+          }}
+          pagination={false}
+        />
+      </div>
+    )
+  }
+}
+
+export default VoucherTable
\ No newline at end of file
diff --git a/src/tabviews/custom/components/module/voucher/voucherTable/index.scss b/src/tabviews/custom/components/module/voucher/voucherTable/index.scss
new file mode 100644
index 0000000..e8175c8
--- /dev/null
+++ b/src/tabviews/custom/components/module/voucher/voucherTable/index.scss
@@ -0,0 +1,259 @@
+.voucher-table-wrap {
+  position: relative;
+  padding: 0px;
+
+  .normal-table-footer {
+    padding: 10px 0px;
+    color: rgba(0, 0, 0, 0.65);
+  }
+  .normal-table-footer.pagination {
+    position: absolute;
+    bottom: 10px;
+  }
+  >.ant-table-wrapper {
+    position: relative;
+    z-index: 1;
+  }
+  .ant-table {
+    color: inherit;
+    font-size: inherit;
+  }
+
+  .money-uint {
+    display: flex;
+    span {
+      display: inline-block;
+      flex: 1;
+      text-align: center;
+      font-size: 12px;
+    }
+    span:not(.last) {
+      border-right: 1px solid #e9e9e9;
+    }
+    span:nth-child(3), span:nth-child(6) {
+      border-color: #91d5ff;
+    }
+    span:nth-child(9) {
+      border-color: #ffa39e;
+    }
+  }
+
+  table {
+    max-width: 100%;
+    width: 100%;
+    .ant-table-thead {
+      tr {
+        th {
+          position: relative;
+          background-color: transparent;
+          padding: 0;
+          height: 60px;
+          line-height: 60px;
+          text-align: center;
+
+          .ant-table-header-column {
+            display: block;
+            width: 100%;
+            height: 100%;
+
+            .ant-table-column-title {
+              display: block;
+              width: 100%;
+              height: 100%;
+              font-weight: bold;
+              font-size: 13px;
+            }
+          }
+          .money-title {
+            line-height: 30px;
+            font-weight: bold;
+            font-size: 13px;
+          }
+          .money-uint {
+            line-height: 30px;
+            border-top: 1px solid #dadada;
+          }
+        }
+      }
+    }
+    .ant-table-selection-column {
+      width: 60px;
+      min-width: 60px;
+      max-width: 60px;
+    }
+    .ant-table-tbody {
+      tr td {
+        position: relative;
+        background-color: transparent;
+        padding: 0;
+        height: 60px;
+        vertical-align: top;
+
+        .content-wrap {
+          padding: 5px;
+          height: 100%;
+          font-size: 13px;
+          font-weight: bold;
+        }
+        .money-uint {
+          height: 100%;
+          line-height: 60px;
+
+          span {
+            font-size: 14px;
+            font-weight: bold;
+          }
+        }
+        .money-uint.down {
+          span {
+            color: #ff4d4f;
+          }
+        }
+      }
+    }
+  }
+  .ant-input {
+    height: 60px;
+    border-radius: 0;
+    resize: none;
+  }
+  .ant-input-number {
+    height: 60px;
+    border-radius: 0;
+    
+    .ant-input-number-handler-wrap {
+      display: none;
+    }
+    .ant-input-number-input {
+      border-radius: 0;
+      height: 60px;
+    }
+  }
+  .editing_table_cell {
+    .ant-input {
+      padding: 0px;
+      position: absolute;
+      top: 0px;
+      left: 0px;
+      right: 0px;
+      bottom: 0px;
+      border: 1px solid #1890ff;
+    }
+    .ant-input-number-input {
+      position: absolute;
+      top: 0px;
+      left: 0px;
+      right: 0px;
+      bottom: 0px;
+      border: 1px solid #1890ff;
+    }
+    .anticon {
+      color: #ff4d4f;
+      position: absolute;
+      right: 3px;
+      top: calc(50% - 8px);
+    }
+  }
+  td.pointer {
+    position: relative;
+  }
+  td.pointer {
+    .mk-mask {
+      display: none;
+      cursor: pointer;
+      position: absolute;
+      top: 0;
+      left: 0;
+      bottom: 0;
+      right: 0;
+    }
+  }
+}
+.edit-custom-table.editable {
+  td {
+    background-color: #ffffff!important;
+  }
+  td.pointer .mk-mask {
+    display: block;
+  }
+  .mk-operation {
+    display: none;
+  }
+  .ant-table-placeholder {
+    display: none;
+  }
+}
+.edit-custom-table:not(.fixed-height) {
+  .ant-table-body::-webkit-scrollbar {
+    width: 8px;
+    height: 10px;
+  }
+  ::-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);
+  }
+  ::-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);
+  }
+}
+.edit-custom-table.fixed-height {
+  .ant-table-body {
+    border-bottom: 1px solid rgba(0, 0, 0, .05);
+    .ant-table-fixed {
+      border-bottom: 0;
+    }
+  }
+}
+.edit-custom-table.hidden {
+  thead {
+    display: none;
+  }
+}
+.edit-custom-table.ghost {
+  .ant-table-thead > tr {
+    > th {
+      color: inherit;
+      background: transparent;
+      .ant-table-column-sorter .ant-table-column-sorter-inner {
+        color: inherit;
+      }
+    }
+    > th:hover {
+      background: transparent;
+    }
+  }
+  .ant-table-body {
+    overflow-x: auto;
+    tr {
+      td {
+        background: transparent!important;
+      }
+    }
+    tr:hover td {
+      background: transparent!important;
+    }
+  }
+}
+.image-scale-modal {
+  width: 70vw;
+  min-height: 80vh;
+  top: 10vh;
+  .ant-modal-body {
+    min-height: calc(80vh - 110px);
+    line-height: calc(80vh - 160px);
+    text-align: center;
+  }
+  .ant-modal-footer {
+    text-align: center;
+    span {
+      display: inline-block;
+      color: #1890ff;
+      padding: 5px 15px;
+      cursor: pointer;
+    }
+  }
+}
\ No newline at end of file
diff --git a/src/tabviews/custom/components/share/normalTable/index.jsx b/src/tabviews/custom/components/share/normalTable/index.jsx
index 4a50717..0c6f9ad 100644
--- a/src/tabviews/custom/components/share/normalTable/index.jsx
+++ b/src/tabviews/custom/components/share/normalTable/index.jsx
@@ -382,7 +382,6 @@
     lineMarks: PropTypes.array,      // 琛屾爣璁�
     fields: PropTypes.array,         // 缁勪欢瀛楁闆�
     ContainerId: PropTypes.any,      // 鏍囩椤靛灞侷d
-    BData: PropTypes.any,            // 涓昏〃鏁版嵁
     data: PropTypes.any,             // 琛ㄦ牸鏁版嵁
     total: PropTypes.any,            // 鎬绘暟
     loading: PropTypes.bool,         // 琛ㄦ牸鍔犺浇涓�
@@ -528,18 +527,27 @@
     MKEmitter.removeListener('resetTable', this.resetTable)
   }
 
-  mkCheckTopLine = (menuId) => {
+  mkCheckTopLine = (menuId, id) => {
     const { MenuID, data, setting } = this.props
 
     if (MenuID !== menuId || !data || data.length === 0) return
-    if (data[0].$disabled) return
 
-    this.changedata(0)
-    this.setState({ selectedRowKeys: [0], activeIndex: 0 })
-    this.props.chgSelectData([data[0]])
+    let index = 0
+    if (id) {
+      index = data.findIndex(item => item.$$uuid === id)
+      if (index === -1) {
+        index = 0
+      }
+    }
+
+    if (data[index].$disabled) return
+
+    this.changedata(index)
+    this.setState({ selectedRowKeys: [index], activeIndex: index })
+    this.props.chgSelectData([data[index]])
 
     if (setting.$hasSyncModule) {
-      MKEmitter.emit('syncBalconyData', MenuID, [data[0]], data.length === 1)
+      MKEmitter.emit('syncBalconyData', MenuID, [data[index]], data.length === 1)
     }
   }
 
@@ -722,13 +730,13 @@
   }
 
   changedata = (index) => {
-    const { MenuID, data, setting } = this.props
+    const { MenuID, data } = this.props
 
     let _id = ''
     let _data = ''
 
     if (data && data.length > 0 && index !== '') {
-      _id = data[index][setting.primaryKey] || ''
+      _id = data[index].$$uuid || ''
       _data = data[index] || ''
     }
 
diff --git a/src/tabviews/custom/components/share/normalheader/index.jsx b/src/tabviews/custom/components/share/normalheader/index.jsx
index 570a190..92848b7 100644
--- a/src/tabviews/custom/components/share/normalheader/index.jsx
+++ b/src/tabviews/custom/components/share/normalheader/index.jsx
@@ -24,7 +24,7 @@
 
     this.setState({
       title: config.plot ? config.plot.title : config.wrap.title,
-      show: !['normaltable', 'propcard'].includes(config.subtype) && config.search && config.search.length > 0
+      show: !['normaltable', 'propcard', 'editable'].includes(config.subtype) && config.search && config.search.length > 0
     })
   }
 
diff --git a/src/tabviews/custom/components/share/tabtransfer/index.jsx b/src/tabviews/custom/components/share/tabtransfer/index.jsx
index ae8f36b..2754f25 100644
--- a/src/tabviews/custom/components/share/tabtransfer/index.jsx
+++ b/src/tabviews/custom/components/share/tabtransfer/index.jsx
@@ -68,6 +68,7 @@
     }
 
     let params = []
+    let delay = 20
     config.components.forEach(item => {
       if (item.type === 'tabs' || item.type === 'group') return
 
@@ -96,6 +97,8 @@
         }
       } else {
         item.setting.sync = 'false'
+        item.setting.delay = delay
+        delay += 20
       }
     })
 
@@ -240,7 +243,7 @@
       } else if (item.type === 'table' && item.subtype === 'editable') {
         return (
           <Col span={item.width} key={item.uuid}>
-            <EditTable config={item} data={data} BID={BID} BData={BData} mainSearch={mainSearch} menuType={menuType} />
+            <EditTable config={item} BID={BID} BData={BData} mainSearch={mainSearch} menuType={menuType} />
           </Col>
         )
       } else if (item.type === 'group' && item.subtype === 'normalgroup') {
@@ -299,7 +302,7 @@
 
   render() {
     return (
-      <Row gutter={8}>{this.getComponents()}</Row>
+      <Row className="component-wrap" gutter={8}>{this.getComponents()}</Row>
     )
   }
 }
diff --git a/src/tabviews/custom/components/table/edit-table/index.jsx b/src/tabviews/custom/components/table/edit-table/index.jsx
index 083affa..613acf2 100644
--- a/src/tabviews/custom/components/table/edit-table/index.jsx
+++ b/src/tabviews/custom/components/table/edit-table/index.jsx
@@ -1,6 +1,6 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import {connect} from 'react-redux'
+import { connect } from 'react-redux'
 import { is, fromJS } from 'immutable'
 import { notification } from 'antd'
 
@@ -9,18 +9,17 @@
 import UtilsDM from '@/utils/utils-datamanage.js'
 import asyncComponent from '@/utils/asyncComponent'
 import MKEmitter from '@/utils/events.js'
+import MainTable from './normalTable'
 import './index.scss'
 
 // 閫氱敤缁勪欢
 const MainSearch = asyncComponent(() => import('@/tabviews/zshare/topSearch'))
 const MainAction = asyncComponent(() => import('@/tabviews/zshare/actionList'))
-const MainTable = asyncComponent(() => import('./normalTable'))
 const NormalHeader = asyncComponent(() => import('@/tabviews/custom/components/share/normalheader'))
 
 class EditableTable extends Component {
   static propTpyes = {
     BID: PropTypes.any,              // 鐖剁骇Id
-    data: PropTypes.array,           // 缁熶竴鏌ヨ鏁版嵁
     config: PropTypes.object,        // 缁勪欢閰嶇疆淇℃伅
     mainSearch: PropTypes.any,       // 澶栧眰鎼滅储鏉′欢
     menuType: PropTypes.any,         // 鑿滃崟绫诲瀷
@@ -36,13 +35,15 @@
     arr_field: '',        // 浣跨敤 sPC_Get_TableData 鏃剁殑鏌ヨ瀛楁闆�
     setting: null,        // 椤甸潰鍏ㄥ眬璁剧疆锛氭暟鎹簮銆佹寜閽強鏄剧ず鍒楀浐瀹氥�佷富閿瓑
     data: [],             // 鍒楄〃鏁版嵁闆�
+    selectedData: [],     // 宸查�夎〃鏍兼暟鎹�
     total: 0,             // 鎬绘暟
     loading: false,       // 鍒楄〃鏁版嵁鍔犺浇涓�
     pageIndex: 1,         // 椤电爜
     pageSize: 10,         // 姣忛〉鏁版嵁鏉℃暟
     orderBy: '',          // 鎺掑簭
     search: '',           // 鎼滅储鏉′欢鏁扮粍锛屼娇鐢ㄦ椂闇�鍒嗗満鏅鐞�
-    statFValue: []        // 鍚堣鍊�
+    statFValue: [],       // 鍚堣鍊�
+    lock: false
   }
 
   /**
@@ -50,48 +51,86 @@
    * 1銆� initdata 涓烘墦鍗版椂浣跨敤鐨勬暟鎹泦
    */
   UNSAFE_componentWillMount () {
-    const { data, initdata, BID, BData } = this.props
+    const { BID, BData } = this.props
     let _config = fromJS(this.props.config).toJS()
     let _cols = new Map()
-    let _data = null
-    let _sync = _config.setting.sync === 'true'
     let setting = {..._config.setting, ..._config.wrap, style: {}}
+    setting.tableId = Utils.getuuid()
 
-    if (_config.setting.sync === 'true' && data) {
-      _data = data[_config.dataName] || []
-      _sync = false
-    } else if (_config.setting.sync === 'true' && initdata) {
-      _data = initdata || []
-      _sync = false
+    _config.submit.style = _config.submit.style || {}
+    _config.submit.wrapStyle = {}
+    _config.submit.hasAction = _config.action.length > 0
+    if (!_config.submit.hasAction) {
+      if (_config.submit.style.marginTop) {
+        _config.submit.wrapStyle.paddingTop = _config.submit.style.marginTop
+      }
+      if (_config.submit.style.marginBottom) {
+        _config.submit.wrapStyle.paddingBottom = _config.submit.style.marginBottom
+      }
+    } else {
+      _config.submit.wrapStyle.paddingTop = '15px'
     }
 
-    if (_data) {
-      _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
-      })
+    if (setting.height) {
+      setting.operType = 'btnMode'
     }
 
     _config.columns.forEach(item => {
+      if (item.type !== 'number') return
       _cols.set(item.field, item)
     })
 
+    let _columns = []
+    let signAdd = false
     _config.cols.forEach(column => {
+      if (column.Hide === 'true') return
+      if (column.type === 'index') {
+        column.field = '$Index'
+        column.type = 'text'
+      }
+
+      if (setting.addable === 'true' && setting.operType === 'buoyMode' && column.type !== 'action' && !signAdd) {
+        column.addable = true
+        signAdd = true
+      }
+
+      if (column.marks && column.marks.length === 0) {
+        column.marks = ''
+      }
+
+      column.tableId = setting.tableId
+
+      if (column.type === 'text' && column.editable === 'true' && column.editType === 'select') {
+        column.options = column.options || []
+        column.options = column.options.filter(cell => {
+          cell.value = cell.Value
+          cell.label = cell.Text
+  
+          return !cell.Hide
+        })
+      }
+
       if (column.type === 'custom') {
         column.elements = column.elements.map(item => {
-          if (item.field && _cols.has(item.field)) {
-            item.col = _cols.get(item.field)
+          if (item.eleType === 'number' && item.field && _cols.has(item.field) && typeof(item.decimal) !== 'number') {
+            item.decimal = _cols.get(item.field).decimal || 0
           }
           return item
         })
       } else if (column.type === 'action') {
         column.operations = column.elements
       }
+
+      _columns.push(column)
     })
+
+    if (setting.delable !== 'false' && setting.operType === 'buoyMode') {
+      if (_columns[_columns.length - 1] && _columns[_columns.length - 1].type !== 'action') {
+        _columns[_columns.length - 1].delable = true
+      } else if (_columns[_columns.length - 2] && _columns[_columns.length - 2].type !== 'action') {
+        _columns[_columns.length - 2].delable = true
+      }
+    }
 
     if (setting.color) {
       setting.style.color = setting.color
@@ -109,21 +148,19 @@
       BID: BID || '',
       BData: BData || '',
       title: _config.wrap.title,
-      sync: _sync,
-      data: _data,
       config: _config,
       setting: setting,
       searchlist: _config.search,
       actions: _config.action,
-      columns: _config.cols,
+      columns: _columns,
       arr_field: _config.columns.map(col => col.field).join(','),
       search: Utils.initMainSearch(_config.search) // 鎼滅储鏉′欢鍒濆鍖栵紙鍚湁鏃堕棿鏍煎紡锛岄渶瑕佽浆鍖栵級
     }, () => {
-      if (_config.setting.sync !== 'true' && _config.setting.onload === 'true') {
-        this.loadmaindata()
-        this.getStatFieldsValue()
-      } else if (_config.setting.onload === 'true') {
-        this.getStatFieldsValue()
+      if (_config.setting.onload === 'true') {
+        setTimeout(() => {
+          this.loadmaindata()
+          this.getStatFieldsValue()
+        }, _config.setting.delay || 0)
       }
     })
   }
@@ -140,6 +177,7 @@
     if (setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇�
       this.setState({
         data: [],
+        selectedData: [],
         total: 0
       })
       reset && MKEmitter.emit('resetTable', config.uuid, repage) // 鍒楄〃閲嶇疆
@@ -176,17 +214,105 @@
       if (setting.laypage) {
         start = pageSize * (pageIndex - 1) + 1
       }
+      let data = result.data.map((item, index) => {
+        item.key = index
+        item.$$uuid = item[setting.primaryKey] || ''
+        item.$$BID = BID || ''
+        item.$$BData = BData || ''
+        item.$Index = start + index + ''
+        item.$type = 'upt'
+        item.$origin = true
+        return item
+      })
 
       this.setState({
-        data: result.data.map((item, index) => {
-          item.key = index
-          item.$$uuid = item[setting.primaryKey] || ''
-          item.$$BID = BID || ''
-          item.$$BData = BData || ''
-          item.$Index = start + index + ''
-          return item
-        }),
+        data: data,
+        selectedData: [],
         total: result.total,
+        loading: false
+      })
+
+      MKEmitter.emit('transferData', config.uuid, data)
+    } else {
+      this.setState({
+        loading: false
+      })
+      notification.error({
+        top: 92,
+        message: result.message,
+        duration: 10
+      })
+    }
+  }
+
+  /**
+   * @description 鑾峰彇鍗曡鏁版嵁
+   */ 
+  async loadmainLinedata (id, line) {
+    const { mainSearch } = this.props
+    const { setting, config, arr_field, search, orderBy, BID, pageIndex, pageSize, BData } = this.state
+
+    let searches = fromJS(search).toJS()
+    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)
+        }
+      })
+    }
+
+    this.setState({
+      loading: true
+    })
+
+    let _orderBy = orderBy || setting.order
+    let param = UtilsDM.getQueryDataParams(setting, arr_field, searches, _orderBy, pageIndex, pageSize, BID, this.props.menuType, id)
+
+    let result = await Api.genericInterface(param)
+    if (result.status) {
+      let data = fromJS(this.state.data).toJS()
+      let selectedData = fromJS(this.state.selectedData).toJS()
+
+      let _data = result.data[0] || {}
+      _data.$$uuid = _data[setting.primaryKey] || ''
+      _data.$$BID = BID || ''
+      _data.$$BData = BData || ''
+      _data.$type = 'upt'
+      _data.$origin = true
+
+      try {
+        data = data.map(item => {
+          if (item.$$uuid === _data.$$uuid) {
+            _data.key = item.key
+            _data.$Index = item.$Index
+            return _data
+          } else {
+            return item
+          }
+        })
+        selectedData = selectedData.map(item => {
+          if (_data.$$uuid === item.$$uuid) {
+            return _data
+          }
+          return item
+        })
+      } catch (e) {
+        console.warn('鏁版嵁鏌ヨ閿欒')
+      }
+
+      if (line) {
+        if (line.$type === 'del' && !result.data[0]) {
+          data = data.filter(m => m.$$uuid === line.$$uuid)
+        }
+        MKEmitter.emit('transferData', config.uuid, _data, 'line')
+      } else {
+        MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data)
+      }
+
+      this.setState({
+        data,
+        selectedData,
         loading: false
       })
     } else {
@@ -359,12 +485,16 @@
     })
   }
 
-  reloadData = (menuId, id) => {
+  reloadData = (menuId, id, item) => {
     const { config } = this.state
 
     if (config.uuid !== menuId) return
 
-    this.reloadtable()
+    if (!id) {
+      this.reloadtable()
+    } else {
+      this.loadmainLinedata(id, item)
+    }
   }
 
   resetParentParam = (MenuID, id, data) => {
@@ -389,44 +519,42 @@
    * @param {*} position   // 鍒锋柊浣嶇疆
    * @param {*} btn        // 鎵ц鐨勬寜閽�
    */
-  refreshByButtonResult = (menuId, position, btn) => {
+  refreshByButtonResult = (menuId, position, btn, id, lines) => {
     const { config, BID } = this.state
 
     if (config.uuid !== menuId) return
 
-    this.reloadtable(btn)                                                      // 鏁版嵁鍒锋柊
+    let supModule = config.setting.supModule
 
-    if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) {
-      MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+
+    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
+      if (position === 'line') {
+        if (lines && lines.length === 1) {
+          this.loadmainLinedata(lines[0].$$uuid)
+        } else {
+          this.reloadtable(btn)
+        }
+      } else if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+        if (supModule && BID) {
+          MKEmitter.emit('reloadData', supModule, BID)
+        } else {
+          this.reloadtable(btn)
+        }
+      } else {
+        this.reloadtable(btn)
+      }
     }
 
-    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'))
+    if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
       btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
     }
   }
 
   UNSAFE_componentWillReceiveProps(nextProps) {
-    const { sync, config, BID, BData } = this.state
+    const { config } = 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))) {
+    if (config.setting.syncRefresh && nextProps.mainSearch && !is(fromJS(this.props.mainSearch), fromJS(nextProps.mainSearch))) {
       this.setState({pageIndex: 1}, () => {
         this.reloadtable()
       })
@@ -458,7 +586,7 @@
   }
 
   render() {
-    const { BID, setting, searchlist, actions, config, columns, BData } = this.state
+    const { BID, setting, searchlist, actions, config, columns, BData, selectedData, lock } = this.state
 
     return (
       <div className="custom-edit-table" style={config.style}>
@@ -471,25 +599,25 @@
           setting={setting}
           actions={actions}
           BData={BData}
+          lock={lock}
           columns={config.columns}
-          selectedData={[]}
+          selectedData={selectedData}
         />
-        <div className={'main-table-box ' + (!actions || actions.length === 0 ? 'no-action' : '')}>
-          <MainTable
-            BID={BID}
-            setting={setting}
-            columns={columns}
-            MenuID={config.uuid}
-            data={this.state.data}
-            submit={config.submit}
-            fields={config.columns}
-            total={this.state.total}
-            lineMarks={config.lineMarks}
-            loading={this.state.loading}
-            refreshdata={this.refreshbytable}
-            statFValue={this.state.statFValue}
-          />
-        </div>
+        <MainTable
+          BID={BID}
+          setting={setting}
+          columns={columns}
+          MenuID={config.uuid}
+          submit={config.submit}
+          fields={config.columns}
+          total={this.state.total}
+          lineMarks={config.lineMarks}
+          loading={this.state.loading}
+          refreshdata={this.refreshbytable}
+          chgSelectData={(selects) => this.setState({selectedData: selects})}
+          changeLock={(lock) => this.setState({lock: lock})}
+          statFValue={this.state.statFValue}
+        />
       </div>
     )
   }
diff --git a/src/tabviews/custom/components/table/edit-table/index.scss b/src/tabviews/custom/components/table/edit-table/index.scss
index 0519a10..686b44b 100644
--- a/src/tabviews/custom/components/table/edit-table/index.scss
+++ b/src/tabviews/custom/components/table/edit-table/index.scss
@@ -11,7 +11,9 @@
   >.button-list.toolbar-button {
     padding: 0;
     line-height: 45px;
-    padding-right: 60px;
+    float: left;
+    position: relative;
+    z-index: 2;
     button {
       margin-right: 0px;
       margin-bottom: 0px;
@@ -30,61 +32,6 @@
     max-width: 95%;
     .ant-modal-body {
       max-height: calc(100vh - 265px);
-    }
-  }
-  .main-table-box {
-    position: relative;
-    min-height: 150px;
-    .main-pickup {
-      position: absolute;
-      right: 5px;
-      top: -24px;
-      z-index: 2;
-    }
-    .submit-table {
-      position: absolute;
-      z-index: 2;
-      right: 60px;
-      top: -26px;
-      height: 24px;
-      color: #ffffff;
-      background-color: #1890ff;
-      border-width: 0;
-    }
-    .custom-control {
-      position: absolute;
-      z-index: 1;
-      right: 0px;
-      top: -23px;
-      font-size: 18px;
-      padding: 3px;
-      cursor: pointer;
-    }
-    >.async-spin {
-      line-height: 150px!important;
-    }
-  }
-  .no-action.main-table-box {
-    .main-pickup {
-      position: relative;
-      right: 0px;
-      top: 0px;
-      z-index: 2;
-      margin-bottom: 4px;
-      float: right;
-    }
-    .submit-table {
-      float: right;
-      position: relative;
-      z-index: 2;
-      right: 0px;
-      top: 0px;
-      height: 24px;
-      color: #ffffff;
-      background-color: #1890ff;
-      margin-right: 15px;
-      margin-bottom: 2px;
-      border-width: 0;
     }
   }
   .ant-collapse {
diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/cusSwitch/index.jsx b/src/tabviews/custom/components/table/edit-table/normalTable/cusSwitch/index.jsx
new file mode 100644
index 0000000..6b16aea
--- /dev/null
+++ b/src/tabviews/custom/components/table/edit-table/normalTable/cusSwitch/index.jsx
@@ -0,0 +1,49 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+// import { is, fromJS } from 'immutable'
+import { Switch } from 'antd'
+
+import './index.scss'
+
+class ColorSketch extends Component {
+  static propTpyes = {
+    defaultValue: PropTypes.any,
+    autoFocus: PropTypes.any,
+    config: PropTypes.object,
+    onChange: PropTypes.func
+  }
+  state = {
+    status: false
+  }
+
+  UNSAFE_componentWillMount () {
+    const { defaultValue, config } = this.props
+    
+    let status = false
+
+    if (defaultValue === config.openVal) {
+      status = true
+    }
+    
+    this.setState({status})
+  }
+
+  changeStatus = (val) => {
+    const { config } = this.props
+    this.setState({ status: val }, () => {
+      let _val = val ? config.openVal : config.closeVal
+      let _text = val ? config.openText : config.closeText
+      this.props.onChange(_val, _text)
+    })
+  }
+
+  render() {
+    const { config, autoFocus } = this.props
+    const { status } = this.state
+    return (
+      <Switch checkedChildren={config.openText} autoFocus={autoFocus} onBlur={this.props.onBlur} unCheckedChildren={config.closeText} checked={status} onChange={this.changeStatus} />
+    )
+  }
+}
+
+export default ColorSketch
\ No newline at end of file
diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/cusSwitch/index.scss b/src/tabviews/custom/components/table/edit-table/normalTable/cusSwitch/index.scss
new file mode 100644
index 0000000..96900ce
--- /dev/null
+++ b/src/tabviews/custom/components/table/edit-table/normalTable/cusSwitch/index.scss
@@ -0,0 +1,40 @@
+.color-sketch-block {
+  height: 25px;
+  width: 100%;
+
+  .color-sketch-block-box {
+    display: inline-block;
+    width: calc(100% - 160px);
+    height: 100%;
+    border-radius: 2px;
+    background: #ffffff url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==') left center;
+  }
+  .color-sketch-block-inner {
+    display: inline-block;
+    cursor: pointer;
+    border-radius: 2px;
+    box-shadow: 0 0 0 1px rgba(0, 0, 0, .1);
+    width: 100%;
+    height: 100%;
+  }
+  .color-sketch-value {
+    display: inline-block;
+    width: 160px;
+    padding-left: 10px;
+    height: 25px;
+    line-height: 25px;
+    vertical-align: top;
+    white-space: nowrap;
+    overflow: visible;
+  }
+}
+
+.color-sketch-popover {
+  z-index: 1090!important;
+  .ant-popover-inner-content {
+    padding: 0;
+    .sketch-picker {
+      width: 250px!important;
+    }
+  }
+}
\ No newline at end of file
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 1464bfa..9d7eaf9 100644
--- a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
+++ b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
@@ -1,17 +1,19 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Table, Typography, Switch, Modal, Input, InputNumber, Tooltip, Button, notification, message } from 'antd'
-import { ExclamationCircleOutlined, EditOutlined, PlusOutlined } from '@ant-design/icons'
+import { Table, Typography, Switch, Modal, Input, InputNumber, Tooltip, Button, notification, message, Select } from 'antd'
+import { ExclamationCircleOutlined, EditOutlined, PlusOutlined, PlusCircleOutlined, DeleteOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
+import options from '@/store/options.js'
 import asyncComponent from '@/utils/asyncComponent'
 import Utils, { getEditTableSql, getMark } from '@/utils/utils.js'
 import MkIcon from '@/components/mk-icon'
 import MKEmitter from '@/utils/events.js'
 import zhCN from '@/locales/zh-CN/main.js'
 import enUS from '@/locales/en-US/main.js'
+import CusSwitch from './cusSwitch'
 import '@/assets/css/table.scss'
 import './index.scss'
 
@@ -124,7 +126,7 @@
   tdFocus = (id) => {
     const { col, record } = this.props
 
-    if (id !== col.uuid + record.$Index) return
+    if (id !== col.uuid + record.$$uuid) return
     this.focus()
   }
 
@@ -135,9 +137,11 @@
     this.setState({editing: false})
     setTimeout(() => {
       if (col.enter === '$next') {
-        MKEmitter.emit('nextLine', col, record.$Index)
-      } else {
-        MKEmitter.emit('tdFocus', col.enter + record.$Index)
+        MKEmitter.emit('nextLine', col, record.$$uuid)
+      } else if (col.enter === '$sub') {
+        MKEmitter.emit('subLine', col, record)
+      } else if (col.enter !== '$noAct') {
+        MKEmitter.emit('tdFocus', col.enter + record.$$uuid)
       }
     }, 50)
 
@@ -149,27 +153,34 @@
   focus = () => {
     const { col, record } = this.props
 
-    let err = null
-    let val = record[col.field] !== undefined ? record[col.field] : ''
-
-    if (col.type === 'number') {
-      val = +val
-      if (isNaN(val)) {
-        val = 0
+    if (col.editType === 'switch' || col.editType === 'select') {
+      this.setState({editing: true}, () => {
+        let node = document.getElementById(col.uuid + record.$$uuid)
+        node && node.click()
+      })
+    } else {
+      let err = null
+      let val = record[col.field] !== undefined ? record[col.field] : ''
+  
+      if (col.type === 'number') {
+        val = +val
+        if (isNaN(val)) {
+          val = 0
+        }
+        if (typeof(col.max) === 'number' && val > col.max) {
+          err = col.label + '鏈�澶т负' + col.max
+        } else if (typeof(col.min) === 'number' && val < col.min) {
+          err = col.label + '鏈�灏忎负' + col.min
+        }
+      } else if (col.required === 'true' && !val) {
+        err = '璇峰~鍐�' + col.label
       }
-      if (typeof(col.max) === 'number' && val > col.max) {
-        err = col.label + '鏈�澶т负' + col.max
-      } else if (typeof(col.min) === 'number' && val < col.min) {
-        err = col.label + '鏈�灏忎负' + col.min
-      }
-    } else if (col.required === 'true' && !val) {
-      err = '璇峰~鍐�' + col.label
+  
+      this.setState({editing: true, value: val, err}, () => {
+        let node = document.getElementById(col.uuid + record.$$uuid)
+        node && node.select()
+      })
     }
-
-    this.setState({editing: true, value: val, err}, () => {
-      let node = document.getElementById(col.uuid + record.$Index)
-      node && node.select()
-    })
   }
 
   onBlur = () => {
@@ -204,9 +215,79 @@
     this.setState({value: val, err})
   }
 
+  onSwitchChange = (val, label) => {
+    const { col, record } = this.props
+
+    this.setState({editing: false})
+
+    setTimeout(() => {
+      if (col.enter === '$next') {
+        MKEmitter.emit('nextLine', col, record.$$uuid)
+      } else if (col.enter === '$sub') {
+        MKEmitter.emit('subLine', col, record)
+      } else if (col.enter !== '$noAct') {
+        MKEmitter.emit('tdFocus', col.enter + record.$$uuid)
+      }
+    }, 50)
+
+    let values = {}
+    if (col.editField) {
+      values[col.field] = label
+      values[col.editField] = val
+    } else {
+      values[col.field] = val
+    }
+
+    MKEmitter.emit('changeRecord', col.tableId, {...record, ...values})
+  }
+
+  onSelectChange = (val, option) => {
+    const { col, record } = this.props
+
+    let values = {}
+    let _option = col.options.filter(m => m.key === option.key)[0]
+
+    if (_option) {
+      if (col.linkSubField) {
+        col.linkSubField.forEach(m => {
+          values[m] = _option[m] !== undefined ? _option[m] : ''
+        })
+      }
+
+      if (col.editField) {
+        values[col.field] = _option.label
+        values[col.editField] = val
+      } else {
+        values[col.field] = val
+      }
+    }
+
+    this.setState({editing: false})
+
+    setTimeout(() => {
+      if (col.enter === '$next') {
+        MKEmitter.emit('nextLine', col, record.$$uuid)
+      } else if (col.enter === '$sub') {
+        MKEmitter.emit('subLine', col, record)
+      } else if (col.enter !== '$noAct') {
+        MKEmitter.emit('tdFocus', col.enter + record.$$uuid)
+      }
+    }, 50)
+
+    MKEmitter.emit('changeRecord', col.tableId, {...record, ...values})
+  }
+
+  switchBlur = () => {
+    setTimeout(() => {
+      this.setState({editing: false})
+    }, 10)
+  }
+
   render() {
-    let { col, config, record, style, className } = this.props
+    let { col, config, record, style, className, ...resProps } = this.props
     const { editing, value, err } = this.state
+
+    if (!col) return (<td {...resProps} className={className} style={style}/>)
 
     let children = null
     if (col.type === 'text') {
@@ -241,12 +322,49 @@
 
       if (col.editable === 'true') {
         if (editing) {
-          return (<td className="editing_table_cell">
-            <Input id={col.uuid + record.$Index} defaultValue={value} onChange={(e) => this.onChange(e.target.value)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
-            {err ? <Tooltip title={err}><ExclamationCircleOutlined /></Tooltip> : null}
-          </td>)
+          if (!col.editType || col.editType === 'text') {
+            return (<td className="editing_table_cell">
+              <Input id={col.uuid + record.$$uuid} defaultValue={value} onChange={(e) => this.onChange(e.target.value)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
+              {err ? <Tooltip title={err}><ExclamationCircleOutlined /></Tooltip> : null}
+            </td>)
+          } else if (col.editType === 'switch') {
+            let _value = ''
+            if (col.editField) {
+              _value = record[col.editField] !== undefined ? record[col.editField] : ''
+            } else {
+              _value = record[col.field] !== undefined ? record[col.field] : ''
+            }
+            return (<td className="editing_table_cell">
+              <CusSwitch config={col} defaultValue={_value} autoFocus={true} onChange={this.onSwitchChange} onBlur={this.switchBlur}/>
+            </td>)
+          } else {
+            let _value = ''
+            if (col.editField) {
+              _value = record[col.editField] !== undefined ? record[col.editField] : ''
+            } else {
+              _value = record[col.field] !== undefined ? record[col.field] : ''
+            }
+            return (<td className="editing_table_cell">
+              <Select
+                showSearch
+                defaultValue={_value}
+                dropdownClassName="edit-table-dropdown"
+                dropdownMatchSelectWidth={col.dropdown === 'fixed'}
+                id={col.uuid + record.$$uuid}
+                onBlur={() => this.setState({editing: false})}
+                filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
+                onSelect={this.onSelectChange}
+              >
+                {col.options.map((item, i) => (<Select.Option key={item.key} disabled={item.$disabled} value={item.value}>{item.label}</Select.Option>))}
+              </Select>
+            </td>)
+          }
         } else {
-          return (<td className={className + ' pointer'} style={style}><div className="mk-mask" onClick={this.focus}></div>{content}</td>)
+          return (<td className={className + ' pointer'} style={style}>
+            {col.addable ? <PlusCircleOutlined onClick={() => MKEmitter.emit('addRecord', col.tableId, {...record})} className="mk-editable mk-plus"/> : null}
+            <div className="mk-mask" onClick={this.focus}></div>{content}
+            {col.delable ? <DeleteOutlined onClick={() => MKEmitter.emit('delRecord', col.tableId, {...record})} className="mk-editable mk-del"/> : null}
+          </td>)
         }
       } else {
         children = content
@@ -297,11 +415,15 @@
       if (col.editable === 'true') {
         if (editing) {
           return (<td className="editing_table_cell">
-            <InputNumber id={col.uuid + record.$Index} defaultValue={value} onChange={(val) => this.onChange(val)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
+            <InputNumber id={col.uuid + record.$$uuid} defaultValue={value} onChange={(val) => this.onChange(val)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
             {err ? <Tooltip title={err}><ExclamationCircleOutlined /></Tooltip> : null}
           </td>)
         } else {
-          return (<td className={className + ' pointer'} style={style}><div className="mk-mask" onClick={this.focus}></div>{content}</td>)
+          return (<td className={className + ' pointer'} style={style}>
+            {col.addable ? <PlusCircleOutlined onClick={() => MKEmitter.emit('addRecord', col.tableId, {...record})} className="mk-editable mk-plus"/> : null}
+            <div className="mk-mask" onClick={this.focus}></div>{content}
+            {col.delable ? <DeleteOutlined onClick={() => MKEmitter.emit('delRecord', col.tableId, {...record})} className="mk-editable mk-del"/> : null}
+          </td>)
         }
       } else {
         children = content
@@ -384,7 +506,361 @@
       )
     }
 
-    return (<td className={className} style={style}>{children}</td>)
+    return (<td className={className} style={style}>{col.addable ? <PlusCircleOutlined onClick={() => MKEmitter.emit('addRecord', col.tableId, {...record})} className="mk-editable mk-plus"/> : null}{children}{col.delable ? <DeleteOutlined onClick={() => MKEmitter.emit('delRecord', col.tableId, {...record})} className="mk-editable mk-del"/> : null}</td>)
+    // return (<td className={className} style={style}>{children}</td>)
+  }
+}
+
+class BodyAllCell extends React.Component {
+  state = {
+    err: null
+  }
+
+  shouldComponentUpdate (nextProps, nextState) {
+    return !is(fromJS(this.props.record), fromJS(nextProps.record)) ||
+      nextState.err !== this.state.err
+  }
+
+  componentDidMount () {
+    MKEmitter.addListener('tdFocus', this.tdFocus)
+  }
+
+  /**
+   * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊锛屾竻闄ゅ揩鎹烽敭璁剧疆
+   */
+  componentWillUnmount () {
+    this.setState = () => {
+      return
+    }
+    MKEmitter.removeListener('tdFocus', this.tdFocus)
+  }
+
+  tdFocus = (id) => {
+    const { col, record } = this.props
+
+    if (id !== col.uuid + record.$$uuid) return
+    this.focus()
+  }
+
+  enterPress = () => {
+    const { col, record } = this.props
+
+    setTimeout(() => {
+      if (col.enter === '$next') {
+        MKEmitter.emit('nextLine', col, record.$$uuid)
+      } else if (col.enter === '$sub') {
+        MKEmitter.emit('subLine', col, record)
+      } else if (col.enter !== '$noAct') {
+        MKEmitter.emit('tdFocus', col.enter + record.$$uuid)
+      }
+    }, 50)
+  }
+
+  focus = () => {
+    const { col, record } = this.props
+
+    if (col.editType === 'switch' || col.editType === 'select') {
+      let node = document.getElementById(col.uuid + record.$$uuid)
+      node && node.click()
+    } else {
+      let err = null
+      let val = record[col.field] !== undefined ? record[col.field] : ''
+  
+      if (col.type === 'number') {
+        val = +val
+        if (isNaN(val)) {
+          val = 0
+        }
+        if (typeof(col.max) === 'number' && val > col.max) {
+          err = col.label + '鏈�澶т负' + col.max
+        } else if (typeof(col.min) === 'number' && val < col.min) {
+          err = col.label + '鏈�灏忎负' + col.min
+        }
+      } else if (col.required === 'true' && !val) {
+        err = '璇峰~鍐�' + col.label
+      }
+  
+      this.setState({err}, () => {
+        let node = document.getElementById(col.uuid + record.$$uuid)
+        node && node.select()
+      })
+    }
+  }
+  
+  onChange = (val) => {
+    const { col, record } = this.props
+    
+    let err = null
+
+    if (col.type === 'number') {
+      val = +val
+      if (isNaN(val)) {
+        val = 0
+      }
+      if (typeof(col.max) === 'number' && val > col.max) {
+        err = col.label + '鏈�澶т负' + col.max
+      } else if (typeof(col.min) === 'number' && val < col.min) {
+        err = col.label + '鏈�灏忎负' + col.min
+      }
+    } else if (col.required === 'true' && !val) {
+      err = '璇峰~鍐�' + col.label
+    }
+    this.setState({err})
+    MKEmitter.emit('changeRecord', col.tableId, {...record, [col.field]: val})
+  }
+
+  onSwitchChange = (val, label) => {
+    const { col, record } = this.props
+
+    setTimeout(() => {
+      if (col.enter === '$next') {
+        MKEmitter.emit('nextLine', col, record.$$uuid)
+      } else if (col.enter === '$sub') {
+        MKEmitter.emit('subLine', col, record)
+      } else if (col.enter !== '$noAct') {
+        MKEmitter.emit('tdFocus', col.enter + record.$$uuid)
+      }
+    }, 50)
+
+    let values = {}
+    if (col.editField) {
+      values[col.field] = label
+      values[col.editField] = val
+    } else {
+      values[col.field] = val
+    }
+
+    MKEmitter.emit('changeRecord', col.tableId, {...record, ...values})
+  }
+
+  onSelectChange = (val, option) => {
+    const { col, record } = this.props
+
+    let values = {}
+    let _option = col.options.filter(m => m.key === option.key)[0]
+
+    if (_option) {
+      if (col.linkSubField) {
+        col.linkSubField.forEach(m => {
+          values[m] = _option[m] !== undefined ? _option[m] : ''
+        })
+      }
+
+      if (col.editField) {
+        values[col.field] = _option.label
+        values[col.editField] = val
+      } else {
+        values[col.field] = val
+      }
+    }
+
+    setTimeout(() => {
+      if (col.enter === '$next') {
+        MKEmitter.emit('nextLine', col, record.$$uuid)
+      } else if (col.enter === '$sub') {
+        MKEmitter.emit('subLine', col, record)
+      } else if (col.enter !== '$noAct') {
+        MKEmitter.emit('tdFocus', col.enter + record.$$uuid)
+      }
+    }, 50)
+
+    MKEmitter.emit('changeRecord', col.tableId, {...record, ...values})
+  }
+
+  render() {
+    let { col, config, record, style, className } = this.props
+    const { err } = this.state
+
+    let children = null
+    if (col.type === 'text') {
+      if (col.editable === 'true') {
+        let _value = ''
+        if (col.editField) {
+          _value = record[col.editField] !== undefined ? record[col.editField] : ''
+        } else {
+          _value = record[col.field] !== undefined ? record[col.field] : ''
+        }
+        
+        if (!col.editType || col.editType === 'text') {
+          children = (<>
+            <Input id={col.uuid + record.$$uuid} defaultValue={_value} onChange={(e) => this.onChange(e.target.value)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
+            {err ? <Tooltip title={err}><ExclamationCircleOutlined /></Tooltip> : null}
+          </>)
+        } else if (col.editType === 'switch') {
+          children = (
+            <CusSwitch config={col} autoFocus={false} defaultValue={_value} onChange={this.onSwitchChange} onBlur={() => {}}/>
+          )
+        } else {
+          children = (<>
+            <Select
+              showSearch
+              dropdownClassName="edit-table-dropdown"
+              dropdownMatchSelectWidth={col.dropdown === 'fixed'}
+              defaultValue={_value}
+              id={col.uuid + record.$$uuid}
+              filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
+              onSelect={this.onSelectChange}
+            >
+              {col.options.map((item, i) => (<Select.Option key={item.key} disabled={item.$disabled} value={item.value}>{item.label}</Select.Option>))}
+            </Select>
+          </>)
+        }
+      } else {
+        let content = ''
+        if (record[col.field] !== undefined) {
+          content = `${record[col.field]}`
+        }
+
+        if (content !== '') {
+          if (col.textFormat === 'YYYY-MM-DD' && /^[1-9]\d{3}(-|\/)(0[1-9]|1[0-2])(-|\/)(0[1-9]|[1-2][0-9]|3[0-1])/.test(content)) {
+            content = `${content.substr(0, 4)}-${content.substr(5, 2)}-${content.substr(8, 2)}`
+          } else if (col.textFormat === 'YYYY-MM-DD HH:mm:ss' && /^[1-9]\d{3}(-|\/)(0[1-9]|1[0-2])(-|\/)(0[1-9]|[1-2][0-9]|3[0-1]).([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]/.test(content)) {
+            content = `${content.substr(0, 4)}-${content.substr(5, 2)}-${content.substr(8, 2)} ${content.substr(11, 2)}:${content.substr(14, 2)}:${content.substr(17, 2)}`
+          }
+
+          content = (col.prefix || '') + content + (col.postfix || '')
+        }
+
+        if (col.marks) {
+          let mark = getMark(col.marks, record, style)
+
+          style = mark.style
+
+          if (mark.icon) {
+            if (mark.position === 'front') {
+              content = <span><MkIcon style={{color: mark.color}} type={mark.icon} /> {content}</span>
+            } else {
+              content = <span>{content} <MkIcon style={{color: mark.color}} type={mark.icon} /></span>
+            }
+          }
+        }
+        children = content
+      }
+    } else if (col.type === 'number') {
+      if (col.editable === 'true') {
+        let _value = record[col.field] !== undefined ? record[col.field] : ''
+        children = (<>
+          <InputNumber id={col.uuid + record.$$uuid} defaultValue={_value} onChange={(val) => this.onChange(val)} onPressEnter={this.enterPress}/>
+          {err ? <Tooltip title={err}><ExclamationCircleOutlined /></Tooltip> : null}
+        </>)
+      } else {
+        let content = ''
+        try {
+          content = parseFloat(record[col.field])
+          if (isNaN(content)) {
+            content = ''
+          }
+        } catch (e) {
+          content = ''
+        }
+
+        if (content !== '') {
+          let decimal = col.decimal || 0
+          if (col.format === 'percent') {
+            content = content * 100
+            decimal = decimal > 2 ? decimal - 2 : 0
+          } else if (col.format === 'abs') {
+            content = Math.abs(content)
+          }
+    
+          content = content.toFixed(decimal)
+    
+          if (col.format === 'thdSeparator') {
+            content = content.replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,')
+          }
+    
+          content = col.prefix + content + col.postfix
+        }
+
+        if (col.marks) {
+          let mark = getMark(col.marks, record, style)
+
+          style = mark.style
+
+          if (mark.icon) {
+            if (mark.position === 'front') {
+              content = <span><MkIcon style={{color: mark.color}} type={mark.icon} /> {content}</span>
+            } else {
+              content = <span>{content} <MkIcon style={{color: mark.color}} type={mark.icon} /></span>
+            }
+          }
+        }
+        children = content
+      }
+    } else if (col.type === 'textarea') {
+      let content = ''
+      if (record[col.field] !== undefined) {
+        content = `${record[col.field]}`
+      }
+
+      if (content) {
+        content = col.prefix + content + col.postfix
+      }
+
+      children = (
+        <div>
+          {content ? <Paragraph copyable ellipsis={{ rows: 3, expandable: true }}>{content}</Paragraph> : null }
+        </div>
+      )
+    } else if (col.type === 'formula') {
+      let content = col.formula
+      Object.keys(record).forEach(key => {
+        let reg = new RegExp('@' + key + '@', 'ig')
+        content = content.replace(reg, record[key])
+      })
+
+      if (col.eval !== 'false') {
+        try {
+          // eslint-disable-next-line
+          content = eval(content)
+        } catch (e) {
+          content = ''
+        }
+      }
+
+      content = content === undefined ? '' : content
+
+      if (content !== '') {
+        content = `${col.prefix || ''}${content}${col.postfix || ''}`
+
+        if (col.eval === 'false') {
+          content = content.replace(/\n/ig, '<br/>').replace(/\s/ig, '&nbsp;')
+          content = <span dangerouslySetInnerHTML={{__html: content}}></span>
+        }
+      }
+
+      if (col.marks) {
+        let mark = getMark(col.marks, record, style)
+
+        style = mark.style
+
+        if (mark.icon) {
+          if (mark.position === 'front') {
+            content = <span><MkIcon style={{color: mark.color}} type={mark.icon} /> {content}</span>
+          } else {
+            content = <span>{content} <MkIcon style={{color: mark.color}} type={mark.icon} /></span>
+          }
+        }
+      }
+
+      children = content
+    } else if (col.type === 'custom') {
+      style.padding = '0px'
+      if (col.style) {
+        style = {...style, ...col.style}
+      }
+
+      children = (
+        <CardCellComponent data={record} cards={config} elements={col.elements}/>
+      )
+    } else if (col.type === 'operation') {
+      style.padding = '0px 5px'
+      children = (
+        <Button type="link" style={{color: 'rgb(255, 77, 79)', backgroundColor: 'transparent'}} onClick={() => MKEmitter.emit('delRecord', col.tableId, {...record})}>鍒犻櫎</Button>
+      )
+    }
+
+    return (<td className={'editing_all_table_cell ' + className} style={style}>{col.addable ? <PlusCircleOutlined onClick={() => MKEmitter.emit('addRecord', col.tableId, {...record})} className="mk-editable mk-plus"/> : null}{children}{col.delable ? <DeleteOutlined onClick={() => MKEmitter.emit('delRecord', col.tableId, {...record})} className="mk-editable mk-del"/> : null}</td>)
   }
 }
 
@@ -397,10 +873,11 @@
     lineMarks: PropTypes.any,        // 琛屾爣璁�
     fields: PropTypes.array,         // 缁勪欢瀛楁闆�
     BID: PropTypes.any,              // 涓昏〃ID
-    data: PropTypes.any,             // 琛ㄦ牸鏁版嵁
     total: PropTypes.any,            // 鎬绘暟
     loading: PropTypes.bool,         // 琛ㄦ牸鍔犺浇涓�
     refreshdata: PropTypes.func,     // 琛ㄦ牸涓帓搴忓垪銆侀〉鐮佺殑鍙樺寲鏃跺埛鏂�
+    changeLock: PropTypes.func,
+    chgSelectData: PropTypes.func,
   }
 
   state = {
@@ -408,6 +885,7 @@
     data: [],
     edData: [],
     edColumns: [],
+    selectedRowKeys: [],  // 琛ㄦ牸涓�変腑琛�
     tableId: '',          // 琛ㄦ牸ID
     pageIndex: 1,         // 鍒濆椤甸潰绱㈠紩
     pageSize: 10,         // 姣忛〉鏁版嵁鏉℃暟
@@ -416,40 +894,30 @@
     pickup: false,        // 鏀惰捣鏈�夋嫨椤�
     orderfields: {},      // 鎺掑簭id涓巉ield杞崲
     loading: false,
-    editable: 'false',
+    editable: false,
     pageOptions: []
   }
 
   UNSAFE_componentWillMount () {
-    const { setting, fields, columns, data } = this.props
+    const { setting, fields, columns } = this.props
     let orderfields = {}
     let initEditLine = null
     let edColumns = []
-    let tableId = (() => {
-      let uuid = []
-      let _options = 'abcdefghigklmnopqrstuv'
-      for (let i = 0; i < 19; i++) {
-        uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1))
-      }
-      return uuid.join('')
-    }) ()
 
     let _columns = []
+    let deForms = []
     columns.forEach(item => {
-      if (item.Hide === 'true') return
-      if (item.type === 'index') {
-        item.field = '$Index'
-        item.type = 'text'
-      }
-
-      item.tableId = tableId
-
       if (!initEditLine && item.editable === 'true') {
         initEditLine = item
       }
 
-      if (item.marks && item.marks.length === 0) {
-        item.marks = ''
+      if (item.type === 'text' && item.editable === 'true' && item.editType === 'select' && item.resourceType === '1') {
+        let _option = Utils.getSelectQueryOptions(item)
+
+        item.base_sql = window.btoa(window.encodeURIComponent(_option.sql))
+        item.arr_field = _option.field
+
+        deForms.push(item)
       }
 
       if (item.field) {
@@ -474,14 +942,14 @@
         _copy.sorter = false
 
         if (item.editable === 'true') {
-          _copy.title = <span>{item.label}<EditOutlined className="system-color" style={{position: 'absolute', bottom: '2px', right: '5px'}}/></span>
+          _copy.title = <span>{item.label}<EditOutlined className="system-color mk-edit-sign"/></span>
         }
         edColumns.push(_copy)
       }
       _columns.push(_item)
     })
 
-    if (setting.delable !== 'false') {
+    if (setting.delable !== 'false' && setting.operType !== 'buoyMode') {
       edColumns.push({
         align: 'center',
         dataIndex: 'mkoperation',
@@ -490,13 +958,13 @@
         width: 100,
         onCell: record => ({
           record,
-          col: {type: 'operation', tableId: tableId},
+          col: {type: 'operation', tableId: setting.tableId},
         })
       })
     }
 
     if (setting.borderColor) { // 杈规棰滆壊
-      let style = `#${tableId} table, #${tableId} tr, #${tableId} th, #${tableId} td {border-color: ${setting.borderColor}}`
+      let style = `#${setting.tableId} table, #${setting.tableId} tr, #${setting.tableId} th, #${setting.tableId} td {border-color: ${setting.borderColor}}`
       let ele = document.createElement('style')
       ele.innerHTML = style
       document.getElementsByTagName('head')[0].appendChild(ele)
@@ -513,13 +981,16 @@
     this.setState({
       pageSize: setting.pageSize || 10,
       pageOptions,
-      data,
       columns: _columns,
       edColumns,
-      tableId,
+      tableId: setting.tableId,
       orderfields,
       initEditLine,
-      editable: setting.editable
+      editable: setting.editable === 'true'
+    }, () => {
+      if (deForms.length > 0) {
+        this.improveActionForm(deForms)
+      }
     })
   }
 
@@ -529,34 +1000,17 @@
 
   componentDidMount () {
     const { fields, setting } = this.props
-    const { data, editable } = this.state
-
-    // let _fields = [] // 瀹氫箟鍏ㄩ儴瀛楁锛屼笉鍦ㄤ粠鍙紪杈戝垪涓�夊彇
-
-    // let fieldType = {}
-    // fields.forEach(item => {
-    //   fieldType[item.field] = item.datatype
-    // })
-
-    // columns.forEach(col => {
-    //   if (!col.field || col.type === 'index') return
-
-    //   _fields.push({...col, datatype: fieldType[col.field] || 'Nvarchar(50)'})
-    // })
 
     this.setState({
       fields: fields.filter(item => item.field !== setting.primaryKey),
     })
 
-    if (editable === 'true' && data && data.length > 0) {
-      setTimeout(() => {
-        this.pickupChange()
-      }, 200)
-    }
-
+    MKEmitter.addListener('subLine', this.subLine)
     MKEmitter.addListener('nextLine', this.nextLine)
+    MKEmitter.addListener('addRecord', this.addLine)
     MKEmitter.addListener('delRecord', this.delRecord)
     MKEmitter.addListener('resetTable', this.resetTable)
+    MKEmitter.addListener('transferData', this.transferData)
     MKEmitter.addListener('changeRecord', this.changeRecord)
   }
 
@@ -567,52 +1021,310 @@
     this.setState = () => {
       return
     }
+    MKEmitter.removeListener('subLine', this.subLine)
     MKEmitter.removeListener('nextLine', this.nextLine)
+    MKEmitter.removeListener('addRecord', this.addLine)
     MKEmitter.removeListener('delRecord', this.delRecord)
     MKEmitter.removeListener('resetTable', this.resetTable)
+    MKEmitter.removeListener('transferData', this.transferData)
     MKEmitter.removeListener('changeRecord', this.changeRecord)
   }
 
-  UNSAFE_componentWillReceiveProps(nextProps) {
-    if (!is(fromJS(this.props.data), fromJS(nextProps.data))) {
-      this.setState({data: nextProps.data || []})
-      if (this.state.editable === 'true') {
+  transferData = (menuid, data, type) => {
+    if (menuid !== this.props.MenuID) return
+
+    if (type !== 'line') {
+      this.setState({data: data || []})
+
+      if (this.state.editable && !this.state.pickup) {
         setTimeout(() => {
           this.pickupChange()
         }, 200)
       }
+    } else if (type === 'line' && data.$$uuid) {
+      let _data = this.state.data.map(item => {
+        if (item.$$uuid === data.$$uuid) {
+          return data
+        } else {
+          return item
+        }
+      })
+      let _edData = this.state.edData.map(item => {
+        if (item.$$uuid === data.$$uuid) {
+          return data
+        } else {
+          return item
+        }
+      })
+
+      this.setState({edData: _edData, data: _data})
+    }
+    this.setState({editable: false})
+  }
+
+  improveActionForm = (deForms) => {
+    const { BID, setting } = this.props
+
+    let deffers = []
+    let mainItems = []  // 浜戠鎴栧崟鐐规暟鎹�
+    let localItems = [] // 鏈湴鏁版嵁
+    let cache = setting.cache !== 'false'
+
+    deForms.forEach(item => {
+      if (item.database === 'sso') {
+        mainItems.push(`select '${item.uuid}' as obj_name,'${item.arr_field}' as arr_field,'${item.base_sql}' as LText`)
+      } else {
+        localItems.push(`select '${item.uuid}' as obj_name,'${item.arr_field}' as arr_field,'${item.base_sql}' as LText`)
+      }
+    })
+    
+    if (options.sysType !== 'local') {
+      localItems = [...localItems, ...mainItems]
+      mainItems = []
+    }
+
+    // 鏈湴璇锋眰
+    let param = {
+      func: 'sPC_Get_SelectedList',
+      LText: localItems.join(' union all '),
+      obj_name: '',
+      arr_field: '',
+      table_type: 'Y',
+      BID: BID || ''
+    }
+
+    if (param.LText) {
+      param.LText = Utils.formatOptions(param.LText)
+      param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
+      param.secretkey = Utils.encrypt(param.LText, param.timestamp)
+
+      deffers.push(
+        new Promise(resolve => {
+          Api.getSystemCacheConfig(param, cache).then(res => {
+            if (!res.status) {
+              notification.warning({
+                top: 92,
+                message: res.message,
+                duration: 5
+              })
+            }
+            resolve(res)
+          })
+        })
+      )
+    }
+
+    // 绯荤粺璇锋眰
+    let mainparam = {
+      func: 'sPC_Get_SelectedList',
+      LText: mainItems.join(' union all '),
+      obj_name: '',
+      arr_field: '',
+      table_type: 'Y',
+      BID: BID || ''
+    }
+
+    if (mainparam.LText) {
+      mainparam.LText = Utils.formatOptions(mainparam.LText)
+      mainparam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
+      mainparam.secretkey = Utils.encrypt(mainparam.LText, mainparam.timestamp)
+
+      if (window.GLOB.mainSystemApi) {
+        mainparam.rduri = window.GLOB.mainSystemApi
+      }
+
+      deffers.push(
+        new Promise(resolve => {
+          Api.getSystemCacheConfig(mainparam, cache).then(res => {
+            if (!res.status) {
+              notification.warning({
+                top: 92,
+                message: res.message,
+                duration: 5
+              })
+            }
+            resolve(res)
+          })
+        })
+      )
+    }
+
+    Promise.all(deffers).then(response => {
+      let result = {...response[0], ...(response[1] || {})}
+
+      delete result.ErrCode
+      delete result.ErrMesg
+      delete result.message
+      delete result.status
+
+      this.resetFormList(result)
+    })
+  }
+
+  resetFormList = (result) => {
+    const { columns } = this.props
+    const { edColumns } = this.state
+
+    let _edColumns = []
+
+    let reCols = {}
+    columns.forEach(item => {
+      if (item.resourceType === '1' && result[item.uuid] && result[item.uuid].length > 0) {
+        let options = []
+        let _map = new Map()
+        result[item.uuid].forEach(cell => {
+          let _cell = {key: Utils.getuuid()}
+
+          _cell.value = cell[item.valueField]
+          _cell.label = cell[item.valueText]
+
+          if (!_cell.label && _cell.label !== 0) return
+
+          if (_map.has(_cell.value)) return
+          _map.set(_cell.value, true)
+
+          if (item.linkSubField) {
+            item.linkSubField.forEach(m => {
+              _cell[m] = cell[m] === undefined ? '' : cell[m]
+            })
+          }
+
+          if (item.disableField && cell[item.disableField] && /^true$/ig.test(cell[item.disableField])) {
+            _cell.$disabled = true
+          }
+  
+          options.push(_cell)
+        })
+
+        item.options = options
+
+        reCols[item.uuid] = item
+      }
+    })
+
+    _edColumns = edColumns.map(item => {
+      if (reCols[item.dataIndex]) {
+        item.onCell = record => ({
+          record,
+          col: reCols[item.dataIndex]
+        })
+      }
+
+      return item
+    })
+
+    if (this.state.pickup) {
+      this.setState({
+        pickup: false
+      }, () => {
+        this.setState({pickup: true, edColumns: _edColumns})
+      })
+    } else {
+      this.setState({edColumns: _edColumns})
     }
   }
   
-  nextLine = (col, index) => {
+  nextLine = (col, uuid) => {
     const { setting } = this.props
     const { edData, initEditLine, tableId } = this.state
 
     if (col.tableId !== tableId) return
 
-    index = +index
+    let index = edData.findIndex(item => item.$$uuid === uuid)
+    let next = edData[index + 1] || null
 
-    if (index < edData.length && initEditLine) {
-      MKEmitter.emit('tdFocus', initEditLine.uuid + (index + 1))
-    } else if (col.footEnter === 'add' && setting.addable === 'true') {
+    if (next && initEditLine) {
+      MKEmitter.emit('tdFocus', initEditLine.uuid + next.$$uuid)
+    } else if (setting.addable === 'true') {
       setTimeout(() => {
-        this.plusLine(initEditLine)
+        this.plusLine()
       }, 10)
-    } else if (col.footEnter === 'sub') {
+    } else if (edData[index]) {
       setTimeout(() => {
-        this.checkData()
+        this.subLine(col, edData[index])
       }, 10)
     }
   }
 
-  plusLine = (initEditLine) => {
-    const { edData, fields } = this.state
+  subLine = (col, record) => {
+    const { tableId, fields, edData } = this.state
+
+    if (col && col.tableId !== tableId) return
+
+    if (edData.filter(item => !item.$origin).length > 1) {
+      setTimeout(() => {
+        this.submit(edData)
+      }, 10)
+      return
+    }
+
+    setTimeout(() => {
+      let item = fromJS(record).toJS()
+      let line = []
+      fields.forEach(col => {
+        if (col.editable !== 'true' || item.$deleted) {
+          if (col.type === 'number') {
+            item[col.field] = +item[col.field]
+            if (isNaN(item[col.field])) {
+              item[col.field] = 0
+            }
+          } else {
+            item[col.field] = item[col.field] !== undefined ? (item[col.field] + '') : ''
+          }
+          return
+        }
+        if (col.type === 'text') {
+          let val = item[col.field] !== undefined ? (item[col.field] + '') : ''
+          if (col.required === 'true' && !val) {
+            line.push(`${col.label}涓嶅彲涓虹┖`)
+          }
+          item[col.field] = val
+        } else if (col.type === 'number') {
+          let val = item[col.field]
+          if (!val && val !== 0) {
+            line.push(`${col.label}涓嶅彲涓虹┖`)
+            return
+          }
+          val = +val
+          if (isNaN(val)) {
+            line.push(`${col.label}鏁版嵁鏍煎紡閿欒`)
+            return
+          }
+
+          val = +val.toFixed(col.decimal || 0)
+          
+          if (typeof(col.max) === 'number' && val > col.max) {
+            line.push(`${col.label}涓嶅彲澶т簬${col.max}`)
+          } else if (typeof(col.min) === 'number' && val < col.min) {
+            line.push(`${col.label}涓嶅彲灏忎簬${col.min}`)
+          }
+
+          item[col.field] = val
+        }
+      })
+
+      let err = line.join('锛�')
+
+      if (err) {
+        notification.warning({
+          top: 92,
+          message: err,
+          duration: 5
+        })
+      } else {
+        this.submit([item], 'simple')
+      }
+    }, 10)
+  }
+
+  plusLine = () => {
+    const { edData, fields, initEditLine } = this.state
 
     let item = {...edData[edData.length - 1]}
 
-    item.key = item.key + 1
-    item.$$uuid = '$new'
-    item.$Index = item.key + 1 + ''
+    item.$$uuid = Utils.getguid()
+    item.$type = 'add'
+    item.$Index = ''
 
     fields.forEach(col => {
       if (col.initval !== '$copy') {
@@ -630,33 +1342,35 @@
     })
 
     this.setState({edData: [...edData, item]}, () => {
-      MKEmitter.emit('tdFocus', initEditLine.uuid + item.$Index)
+      MKEmitter.emit('tdFocus', initEditLine.uuid + item.$$uuid)
     })
   }
 
   delRecord = (id, record) => {
+    const { setting } = this.props
     const { tableId, edData } = this.state
 
     if (id !== tableId) return
 
     let _data = []
 
-    if (record.$$uuid === '$new') {
-      _data = edData.filter(item => item.$Index !== record.$Index)
-      _data = _data.map((item, index) => {
-        item.key = index
-        item.$Index = 1 + index + ''
-        return item
-      })
+    if (record.$type === 'add') {
+      _data = edData.filter(item => item.$$uuid !== record.$$uuid)
     } else {
       _data = edData.map(item => {
-        if (item.$Index === record.$Index) {
+        if (item.$$uuid === record.$$uuid) {
           record.$deleted = true
+          record.$origin = false
+          record.$type = 'del'
           return record
         } else {
           return item
         }
       })
+
+      if (setting.commit === 'simple' && record.$deleted) {
+        this.subLine(null, record)
+      }
     }
 
     this.setState({edData: _data})
@@ -668,7 +1382,8 @@
     if (id !== tableId) return
 
     let _data = this.state.edData.map(item => {
-      if (item.$Index === record.$Index) {
+      if (item.$$uuid === record.$$uuid) {
+        record.$origin = false
         return record
       } else {
         return item
@@ -678,40 +1393,73 @@
     this.setState({edData: _data})
   }
 
-  addLine = () => {
+  addLine = (id, record) => {
     const { BID } = this.props
-    const { edData, fields } = this.state
+    const { edData, fields, tableId } = this.state
 
-    let item = {}
-    if (edData.length > 0) {
-      item = {...edData[edData.length - 1]}
-      item.key = item.key + 1
-      item.$$uuid = '$new'
-      item.$Index = item.key + 1 + ''
-    } else {
-      item.key = 0
-      item.$$uuid = '$new'
-      item.$Index = item.key + 1 + ''
+    if (id) {
+      if (id !== tableId) return
+      let _edData = fromJS(edData).toJS()
+      let index = _edData.findIndex(item => record.$$uuid === item.$$uuid)
+
+      let item = {}
+
+      item.$$uuid = Utils.getguid()
+      item.$type = 'add'
+      item.$Index = ''
       item.$$BID = BID || ''
-    }
-
-    fields.forEach(col => {
-      if (col.initval !== '$copy') {
-        item[col.field] = col.initval
-      }
-      if (col.type === 'number') {
-        item[col.field] = +item[col.field]
-        if (isNaN(item[col.field])) {
-          item[col.field] = 0
+  
+      fields.forEach(col => {
+        if (col.initval !== '$copy') {
+          item[col.field] = col.initval
         }
-      }
+        if (col.type === 'number') {
+          item[col.field] = +item[col.field]
+          if (isNaN(item[col.field])) {
+            item[col.field] = 0
+          }
+        }
+  
+        if (item[col.field] === undefined) {
+          item[col.field] = ''
+        }
+      })
 
-      if (item[col.field] === undefined) {
-        item[col.field] = ''
-      }
-    })
+      _edData.splice(index, 0, item)
 
-    this.setState({edData: [...edData, item]})
+      this.setState({edData: _edData})
+    } else {
+      let item = {}
+      if (edData.length > 0) {
+        item = {...edData[edData.length - 1]}
+        item.$$uuid = Utils.getguid()
+        item.$type = 'add'
+        item.$Index = ''
+      } else {
+        item.$$uuid = Utils.getguid()
+        item.$type = 'add'
+        item.$Index = ''
+        item.$$BID = BID || ''
+      }
+  
+      fields.forEach(col => {
+        if (col.initval !== '$copy') {
+          item[col.field] = col.initval
+        }
+        if (col.type === 'number') {
+          item[col.field] = +item[col.field]
+          if (isNaN(item[col.field])) {
+            item[col.field] = 0
+          }
+        }
+  
+        if (item[col.field] === undefined) {
+          item[col.field] = ''
+        }
+      })
+  
+      this.setState({edData: [...edData, item]})
+    }
   }
 
   checkData = () => {
@@ -726,6 +1474,7 @@
       return
     }
     let err = ''
+    let Index = 1
     let data = fromJS(edData).toJS().map(item => {
       let line = []
       fields.forEach(col => {
@@ -771,7 +1520,10 @@
       })
 
       if (line.length > 0) {
-        err += `绗�${item.$Index}琛岋細` + line.join('锛�') + '锛�'
+        err += `绗�${Index}琛岋細` + line.join('锛�') + '锛�'
+      }
+      if (!item.$deleted) {
+        Index++
       }
 
       return item
@@ -788,9 +1540,22 @@
     }
   }
 
-  submit = (data) => {
-    const { submit, BID } = this.props
+  submit = (data, type) => {
+    const { submit, BID, setting } = this.props
     const { fields } = this.state
+
+    if (type !== 'simple' && (setting.commit === 'change' || setting.commit === 'simple')) {
+      data = data.filter(item => !item.$origin)
+    }
+
+    if (data.length === 0) {
+      notification.warning({
+        top: 92,
+        message: '鏁版嵁鏈慨鏀癸紝涓嶅彲鎻愪氦锛�',
+        duration: 5
+      })
+      return
+    }
 
     let result = getEditTableSql(submit, data, fields)
 
@@ -831,7 +1596,12 @@
 
       Api.genericInterface(param).then((res) => {
         if (res.status) {
-          this.execSuccess(res)
+          if (type === 'simple') {
+            this.updataLine(data[0])
+            this.execSuccess(res, type)
+          } else {
+            this.execSuccess(res)
+          }
         } else {
           this.execError(res)
         }
@@ -843,7 +1613,12 @@
 
       Api.genericInterface(param).then((res) => {
         if (res.status) {
-          this.execSuccess(res)
+          if (type === 'simple') {
+            this.updataLine(data[0])
+            this.execSuccess(res, type)
+          } else {
+            this.execSuccess(res)
+          }
         } else {
           this.execError(res)
         }
@@ -853,7 +1628,26 @@
     }
   }
 
-  execSuccess = (res) => {
+  updataLine = (item) => {
+    if (item.$type === 'del') {
+      let _data = this.state.edData.filter(m => m.$$uuid !== item.$$uuid)
+
+      this.setState({edData: _data})
+    } else {
+      let _data = this.state.edData.map(m => {
+        if (m.$$uuid === item.$$uuid) {
+          item.$origin = true
+          return item
+        }
+        return m
+      })
+
+      this.setState({edData: _data})
+    }
+    MKEmitter.emit('reloadData', this.props.MenuID, item.$$uuid, item)
+  }
+
+  execSuccess = (res, type) => {
     const { submit } = this.props
 
     if (res && res.ErrCode === 'S') { // 鎵ц鎴愬姛
@@ -873,6 +1667,8 @@
     this.setState({
       loading: false
     })
+
+    if (type === 'simple') return
 
     if (submit.closetab === 'true') {
       MKEmitter.emit('popclose')
@@ -918,8 +1714,14 @@
   }
 
   repick = () => {
+    const { setting } = this.props
     const { data } = this.state
 
+    if (setting.submittal === 'true') {
+      this.setState({editable: true})
+    }
+
+    this.props.changeLock(false)
     this.setState({
       data: [],
       edData: [],
@@ -931,12 +1733,82 @@
     })
   }
 
+  /**
+   * 
+   */
+  onSelectChange = selectedRowKeys => {
+    this.setState({ selectedRowKeys })
+
+    let activeId = ''
+    if (selectedRowKeys.length > 0) {
+      activeId = selectedRowKeys.slice(-1)[0]
+    }
+    this.changedata(activeId)
+    this.selectdata(selectedRowKeys)
+  }
+
+  /**
+   * @description 鐐瑰嚮鏁磋锛岃Е鍙戝垏鎹紝 鍒ゆ柇鏄惁鍙�夛紝鍗曢�夋垨澶氶�夛紝杩涜瀵瑰簲鎿嶄綔
+   */
+  changeRow = (index) => {
+    const { setting } = this.props
+
+    if (!setting.tableType || this.state.pickup) return
+    
+    let newkeys = fromJS(this.state.selectedRowKeys).toJS()
+
+    let activeId = ''
+    if (setting.tableType === 'radio') {
+      activeId = index
+      newkeys = [index]
+      this.setState({ selectedRowKeys: newkeys })
+    } else {
+      if (newkeys.includes(index)) {
+        newkeys = newkeys.filter(item => item !== index)
+
+        if (newkeys.length > 0) {
+          activeId = newkeys.slice(-1)[0]
+        }
+      } else {
+        activeId = index
+        newkeys.push(index)
+      }
+
+      this.setState({ selectedRowKeys: newkeys })
+    }
+
+    this.changedata(activeId)
+    this.selectdata(newkeys)
+  }
+
+  changedata = (id) => {
+    const { MenuID } = this.props
+    const { data } = this.state
+
+    let _data = ''
+
+    if (id) {
+      _data = data.filter(item => item.$$uuid === id)[0] || ''
+    }
+
+    MKEmitter.emit('resetSelectLine', MenuID, id, _data)
+  }
+
+  selectdata = (keys) => {
+    const { data } = this.state
+
+    let _data = data.filter(item => keys.includes(item.$$uuid))
+
+    this.props.chgSelectData(_data)
+  }
+
   changeTable = (pagination, filters, sorter) => {
     const { orderfields } = this.state
 
     this.setState({
       pageIndex: pagination.current,
-      pageSize: pagination.pageSize
+      pageSize: pagination.pageSize,
+      selectedRowKeys: [],
     })
 
     sorter.field = orderfields[sorter.field] || ''
@@ -949,15 +1821,20 @@
 
     if (id !== MenuID) return
 
-    if (repage !== 'false') {
+    if (repage === 'false') {
       this.setState({
-        pageIndex: 1
+        selectedRowKeys: [],
+      })
+    } else {
+      this.setState({
+        pageIndex: 1,
+        selectedRowKeys: [],
       })
     }
   }
 
   pickupChange = () => {
-    const { submit } = this.props
+    const { submit, MenuID, setting } = this.props
     const { data } = this.state
 
     let pickup = !this.state.pickup
@@ -971,7 +1848,7 @@
       return
     }
 
-    if (!pickup && !is(fromJS(data), fromJS(this.state.edData))) {
+    if (!pickup && this.state.edData.filter(item => !item.$origin).length > 0) {
       const _this = this
       confirm({
         title: '鏁版嵁宸蹭慨鏀癸紝纭畾鏀惧純淇濆瓨鍚楋紵',
@@ -990,29 +1867,46 @@
         onCancel() {}
       })
     } else {
+      pickup && MKEmitter.emit('resetSelectLine', MenuID, '', '')
+      pickup && this.props.chgSelectData([])
+      let keys = this.state.selectedRowKeys
       this.setState({
         data: [],
         edData: [],
+        selectedRowKeys: [],
         pickup,
         loading: false,
-        editable: 'false'
+        editable: false
       }, () => {
-        this.setState({
-          data: data,
-          edData: pickup ? fromJS(data).toJS() : []
-        })
+        if (pickup && setting.tableType === 'checkbox' && keys.length > 0) {
+          this.setState({
+            data: data,
+            edData: fromJS(data).toJS().filter(item => {
+              item.$origin = false
+              
+              return keys.includes(item.$$uuid)
+            })
+          })
+        } else {
+          this.setState({
+            data: data,
+            edData: pickup ? fromJS(data).toJS() : []
+          })
+        }
       })
+
     }
+    this.props.changeLock(pickup)
   }
 
   render() {
     const { setting, statFValue, lineMarks, submit } = this.props
-    const { pickup, tableId, data, edData, columns, edColumns, loading, pageOptions } = this.state
+    const { pickup, tableId, data, edData, columns, edColumns, loading, pageOptions, selectedRowKeys } = this.state
 
     const components = {
       body: {
         row: BodyRow,
-        cell: BodyCell
+        cell: setting.editType !== 'multi' || !pickup ? BodyCell : BodyAllCell
       }
     }
 
@@ -1024,6 +1918,16 @@
       _data = edData
       _data = _data.filter(item => !item.$deleted)
       _columns = edColumns
+    }
+
+    // 璁剧疆琛ㄦ牸閫夋嫨灞炴�э細鍗曢�夈�佸閫夈�佷笉鍙��
+    let rowSelection = null
+    if (setting.tableType && !pickup) {
+      rowSelection = {
+        selectedRowKeys,
+        type: (setting.tableType === 'radio') ? 'radio' : 'checkbox',
+        onChange: this.onSelectChange
+      }
     }
 
     let _pagination = false
@@ -1047,30 +1951,41 @@
     let height = setting.height || false
 
     return (
-      <div className={`edit-custom-table ${pickup ? 'editable' : ''} ${setting.tableHeader || ''} ${height ? 'fixed-height' : ''} ${setting.mode || ''}`} id={tableId}>
-        <Switch title="缂栬緫" className="main-pickup" checkedChildren="寮�" unCheckedChildren="鍏�" checked={pickup} onChange={this.pickupChange} />
-        {pickup ? <Button style={submit.style} onClick={() => setTimeout(() => {this.checkData()}, 10)} loading={loading} className="submit-table" type="link">鎻愪氦</Button> : null}
-        <Table
-          components={components}
-          style={setting.style}
-          size={setting.size || 'middle'}
-          bordered={setting.bordered !== 'false'}
-          columns={_columns}
-          dataSource={_data}
-          loading={this.props.loading}
-          scroll={{ x: '100%', y: height }}
-          onRow={(record, index) => {
-            return {
-              lineMarks,
-              data: record
-            }
-          }}
-          onChange={this.changeTable}
-          pagination={_pagination}
-        />
-        {_footer ? <div className={'normal-table-footer ' + (_pagination ? 'pagination' : '')}>{_footer}</div> : null}
-        {pickup && setting.addable === 'true' ? <Button onClick={this.addLine} style={{display: 'block', width: '100%', color: '#26C281', border: '1px solid #dddddd', borderRadius: 0}} type="link"><PlusOutlined /></Button> : null}
-      </div>
+      <>
+        {submit.hasAction && pickup ? <div className="edit-custom-table-leftbtn-wrap">
+          <Button style={submit.style} onClick={() => setTimeout(() => {this.checkData()}, 10)} loading={loading} className="submit-table" type="link">鎻愪氦</Button>
+        </div> : null}
+        <div className="edit-custom-table-btn-wrap" style={submit.wrapStyle}>
+          {!submit.hasAction && pickup ? <Button style={submit.style} onClick={() => setTimeout(() => {this.checkData()}, 10)} loading={loading} className="submit-table" type="link">鎻愪氦</Button> : null}
+          <Switch title="缂栬緫" className="main-pickup" checkedChildren="寮�" unCheckedChildren="鍏�" disabled={loading || this.props.loading} checked={pickup} onChange={this.pickupChange} />
+        </div>
+        <div className={`edit-custom-table ${pickup ? 'editable' : ''} ${setting.tableHeader || ''} ${setting.operType || ''} ${height ? 'fixed-height' : ''} ${setting.mode || ''}`} id={tableId}>
+          <Table
+            rowKey="$$uuid"
+            components={components}
+            style={setting.style}
+            size={setting.size || 'middle'}
+            bordered={setting.bordered !== 'false'}
+            rowSelection={rowSelection}
+            columns={_columns}
+            dataSource={_data}
+            loading={this.props.loading}
+            scroll={{ x: '100%', y: height }}
+            onRow={(record, index) => {
+              return {
+                lineMarks,
+                data: record,
+                onClick: () => {this.changeRow(record.$$uuid)},
+              }
+            }}
+            onChange={this.changeTable}
+            pagination={_pagination}
+          />
+          {_footer ? <div className={'normal-table-footer ' + (_pagination ? 'pagination' : '')}>{_footer}</div> : null}
+          {pickup && setting.addable === 'true' ? <Button className="mk-add-line" onClick={() => this.addLine()} disabled={this.props.loading} type="link"><PlusOutlined /></Button> : null}
+          {pickup && _data.length > 10 ? <Button style={submit.style} onClick={() => setTimeout(() => {this.checkData()}, 10)} loading={loading} className="submit-footer-table" type="link">鎻愪氦</Button> : null}
+        </div>
+      </>
     )
   }
 }
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 027503b..9e0ddc1 100644
--- a/src/tabviews/custom/components/table/edit-table/normalTable/index.scss
+++ b/src/tabviews/custom/components/table/edit-table/normalTable/index.scss
@@ -1,5 +1,6 @@
 .edit-custom-table {
   position: relative;
+  min-height: 150px;
   padding: 0px;
 
   .normal-table-footer {
@@ -17,6 +18,12 @@
   .ant-table {
     color: inherit;
     font-size: inherit;
+  }
+  .mk-edit-sign {
+    position: absolute;
+    bottom: 2px;
+    right: 5px;
+    opacity: 0.7;
   }
 
   table {
@@ -135,47 +142,91 @@
       }
     }
   }
-  .fix-header {
-    .ant-table-body {
-      min-height: unset
-    }
-    .ant-table-placeholder {
-      display: none;
-    }
-    .ant-table-wrapper {
-      display: none;
-    }
-    .ant-affix .ant-table-wrapper {
-      display: block;
-    }
-  }
-  .ant-input {
-    border: none;
-    box-shadow: none!important;
-    height: auto;
-    border-radius: 0;
-  }
-  .ant-input-number {
-    border: none;
-    box-shadow: none!important;
-    height: auto;
-    .ant-input-number-handler-wrap {
-      display: none;
-    }
-    .ant-input-number-input {
-      border-radius: 0;
-      padding: 0;
-      height: auto;
-    }
-  }
+
   .editing_table_cell {
     .ant-input {
       padding: 0px;
+      position: absolute;
+      top: 0px;
+      left: 0px;
+      right: 0px;
+      bottom: 0px;
+      border: 1px solid var(--antd-wave-shadow-color);
+      height: auto;
+      border-radius: 0;
+      box-shadow: none!important;
     }
-    .anticon {
+    .ant-select {
+      padding: 0px;
+      position: absolute;
+      top: 0px;
+      left: 0px;
+      right: 0px;
+      bottom: 0px;
+      .ant-select-selection {
+        height: 100%;
+        border-radius: 0;
+
+        .ant-select-arrow {
+          display: none;
+        }
+      }
+    }
+    .ant-input-number {
+      height: auto;
+      border-radius: 0;
+      position: unset;
+      border: none;
+      box-shadow: none!important;
+      
+      .ant-input-number-handler-wrap {
+        display: none;
+      }
+      .ant-input-number-input {
+        border-radius: 0;
+        padding: 0;
+        height: auto;
+        position: absolute;
+        top: 0px;
+        left: 0px;
+        right: 0px;
+        bottom: 0px;
+        border: 1px solid var(--antd-wave-shadow-color);
+      }
+    }
+    .anticon-exclamation-circle {
       color: #ff4d4f;
       position: absolute;
       right: 3px;
+      top: calc(50% - 8px);
+    }
+  }
+  .editing_all_table_cell {
+    .ant-input {
+      border-radius: 0;
+      padding: 4px 5px;
+    }
+    .ant-select {
+      width: 100%;
+      .ant-select-selection {
+        border-radius: 0;
+      }
+    }
+    .ant-input-number {
+      border-radius: 0;
+      
+      .ant-input-number-handler-wrap {
+        display: none;
+      }
+      .ant-input-number-input {
+        border-radius: 0;
+        padding: 4px 5px;
+      }
+    }
+    .anticon-exclamation-circle {
+      color: #ff4d4f;
+      position: absolute;
+      right: 13px;
       top: calc(50% - 8px);
     }
   }
@@ -193,6 +244,62 @@
       right: 0;
     }
   }
+  .mk-editable {
+    position: absolute;
+    display: none;
+    top: calc(50% - 18px);
+    cursor: pointer;
+    padding: 10px 5px;
+    opacity: 0;
+  }
+  tr:hover {
+    .mk-editable {
+      opacity: 1;
+    }
+    .mk-plus {
+      left: -25px;
+    }
+    .mk-del {
+      right: -25px;
+    }
+  }
+  .mk-plus {
+    left: 0px;
+    color: rgb(38, 194, 129);
+    padding-right: 10px;
+  }
+  .mk-del {
+    right: 0px;
+    color: rgb(255, 77, 79);
+    padding-left: 10px;
+  }
+  .mk-add-line {
+    width: 100px;
+    color: #26C281;
+    border-radius: 0;
+    font-size: 25px;
+    height: 45px;
+  }
+  .submit-footer-table {
+    float: right;
+    min-height: 24px;
+    height: auto;
+    color: #ffffff;
+    background-color: #1890ff;
+    border-width: 0;
+    margin-top: 10px!important;
+    margin-right: 10px!important;
+  }
+}
+.edit-custom-table.buoyMode {
+  .ant-table-scroll {
+    overflow: unset;
+    overflow-x: unset;
+
+    .ant-table-body {
+      overflow-x: unset!important;
+    }
+  }
 }
 .edit-custom-table.editable {
   td {
@@ -206,6 +313,9 @@
   }
   .ant-table-placeholder {
     display: none;
+  }
+  .mk-editable {
+    display: inline-block;
   }
 }
 .edit-custom-table:not(.fixed-height) {
@@ -281,4 +391,45 @@
       cursor: pointer;
     }
   }
+}
+.edit-table-dropdown {
+  .ant-select-dropdown-menu-item {
+    white-space: unset;
+    text-overflow: unset;
+  }
+}
+.edit-custom-table-btn-wrap {
+  float: right;
+  padding: 5px 0px;
+  .main-pickup {
+    position: relative;
+    z-index: 2;
+  }
+  .submit-table {
+    position: relative;
+    z-index: 2;
+    margin-right: 15px;
+    min-height: 24px;
+    height: auto;
+    color: #ffffff;
+    background-color: #1890ff;
+    border-width: 0;
+    margin-top: 0px!important;
+    margin-bottom: 0px!important;
+  }
+}
+.edit-custom-table-leftbtn-wrap {
+  float: left;
+  line-height: 45px;
+  .submit-table {
+    position: relative;
+    z-index: 2;
+    min-height: 28px;
+    height: auto;
+    color: #ffffff;
+    background-color: #1890ff;
+    border-width: 0;
+    margin-top: 0px;
+    margin-bottom: 0px;
+  }
 }
\ No newline at end of file
diff --git a/src/tabviews/custom/components/table/normal-table/index.jsx b/src/tabviews/custom/components/table/normal-table/index.jsx
index 72585ec..8337aed 100644
--- a/src/tabviews/custom/components/table/normal-table/index.jsx
+++ b/src/tabviews/custom/components/table/normal-table/index.jsx
@@ -71,6 +71,8 @@
 
     if (setting.selected !== 'always' && setting.selected !== 'init') {
       setting.selected = 'false'
+    } else {
+      setting.orisel = true
     }
 
     if (_config.setting.sync === 'true' && data) {
@@ -110,14 +112,15 @@
     }
 
     _config.columns.forEach(item => {
+      if (item.type !== 'number') return
       _cols.set(item.field, item)
     })
 
     _config.cols.forEach(column => {
       if (column.type === 'custom') {
         column.elements = column.elements.map(item => {
-          if (item.field && _cols.has(item.field)) {
-            item.col = _cols.get(item.field)
+          if (item.eleType === 'number' && item.field && _cols.has(item.field) && typeof(item.decimal) !== 'number') {
+            item.decimal = _cols.get(item.field).decimal || 0
           }
           return item
         })
@@ -155,8 +158,10 @@
       search: Utils.initMainSearch(_config.search) // 鎼滅储鏉′欢鍒濆鍖栵紙鍚湁鏃堕棿鏍煎紡锛岄渶瑕佽浆鍖栵級
     }, () => {
       if (_config.setting.sync !== 'true' && _config.setting.onload === 'true') {
-        this.loadmaindata()
-        this.getStatFieldsValue()
+        setTimeout(() => {
+          this.loadmaindata()
+          this.getStatFieldsValue()
+        }, _config.setting.delay || 0)
       } else if (_config.setting.onload === 'true') {
         this.getStatFieldsValue()
       }
@@ -168,7 +173,7 @@
    * @param { Boolean } reset  琛ㄦ牸鏄惁閲嶇疆
    * @param { String }  repage 琛ㄦ牸鏄惁閲嶇疆椤电爜
    */
-  async loadmaindata (reset, repage) {
+  async loadmaindata (reset, repage, id) {
     const { mainSearch } = this.props
     const { setting, config, arr_field, search, orderBy, BID, pageIndex, pageSize, BData } = this.state
 
@@ -178,6 +183,7 @@
         selectedData: [],
         total: 0
       })
+      
       MKEmitter.emit('resetSelectLine', config.uuid, '', '') // 骞挎挱鏁版嵁鍒囨崲
       reset && MKEmitter.emit('resetTable', config.uuid, repage) // 鍒楄〃閲嶇疆
       if (setting.$hasSyncModule) {
@@ -210,9 +216,9 @@
 
     let result = await Api.genericInterface(param)
     if (result.status) {
-      if (setting.selected !== 'false' && result.data && result.data.length > 0) {
+      if ((setting.selected !== 'false' || (setting.orisel && id)) && result.data && result.data.length > 0) {
         setTimeout(() => {
-          MKEmitter.emit('mkCheckTopLine', config.uuid)
+          MKEmitter.emit('mkCheckTopLine', config.uuid, id)
         }, 200)
         if (setting.selected === 'init') {
           this.setState({setting: {...setting, selected: 'false'}})
@@ -317,6 +323,8 @@
         } catch (e) {
           console.warn('鏁版嵁鏌ヨ閿欒')
         }
+
+        MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data)
       }
 
       this.setState({
@@ -453,16 +461,16 @@
   /**
    * @description 琛ㄦ牸鍒锋柊
    */
-  reloadtable = (btn) => {
+  reloadtable = (btn, id) => {
     if (!btn || btn.resetPageIndex !== 'false') {
       this.setState({
         pageIndex: 1
       }, () => {
-        this.loadmaindata(true, 'true')
+        this.loadmaindata(true, 'true', id)
         this.getStatFieldsValue()
       })
     } else {
-      this.loadmaindata(true, 'false')
+      this.loadmaindata(true, 'false', id)
       this.getStatFieldsValue()
     }
   }
@@ -498,7 +506,6 @@
     const { config } = this.state
 
     if (config.uuid !== menuId) return
-    if (id === 'empty') return
 
     if (!id) {
       this.reloadtable()
@@ -534,20 +541,29 @@
 
     if (config.uuid !== menuId) return
 
-    if (position === 'line' && lines && lines.length === 1) {
-      this.loadmainLinedata(lines[0].$$uuid)
-    } else {
-      this.reloadtable(btn)                                                    // 鏁版嵁鍒锋柊
+    let supModule = config.setting.supModule
+
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+
+    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
+      if (position === 'line') {
+        if (lines && lines.length === 1) {
+          this.loadmainLinedata(lines[0].$$uuid)
+        } else {
+          this.reloadtable(btn, id)
+        }
+      } else if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+        if (supModule && BID) {
+          MKEmitter.emit('reloadData', supModule, BID)
+        } else {
+          this.reloadtable(btn, id)
+        }
+      } else {
+        this.reloadtable(btn, id)
+      }
     }
 
-    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'))
+    if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
       btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
     }
   }
diff --git a/src/tabviews/custom/components/table/normal-table/index.scss b/src/tabviews/custom/components/table/normal-table/index.scss
index 787734a..3e10f6a 100644
--- a/src/tabviews/custom/components/table/normal-table/index.scss
+++ b/src/tabviews/custom/components/table/normal-table/index.scss
@@ -41,15 +41,6 @@
       top: -22px;
       z-index: 2;
     }
-    .custom-control {
-      position: absolute;
-      z-index: 1;
-      right: 0px;
-      top: -23px;
-      font-size: 18px;
-      padding: 3px;
-      cursor: pointer;
-    }
     >.async-spin {
       line-height: 150px!important;
     }
diff --git a/src/tabviews/custom/components/tabs/antv-tabs/index.jsx b/src/tabviews/custom/components/tabs/antv-tabs/index.jsx
index 4b8ef58..e098179 100644
--- a/src/tabviews/custom/components/tabs/antv-tabs/index.jsx
+++ b/src/tabviews/custom/components/tabs/antv-tabs/index.jsx
@@ -30,8 +30,14 @@
   UNSAFE_componentWillMount () {
     const { config, bids } = this.props
 
+    let _tabs = fromJS(config).toJS()
+
+    if (_tabs.setting.supModule) {
+      _tabs.subtabs = []
+    }
+
     this.setState({
-      tabs: fromJS(config).toJS(),
+      tabs: _tabs,
       parentIds: config.parentIds || [],
       bids: bids ? bids : {}
     })
@@ -71,12 +77,12 @@
     }
 
     if (tabs.setting.supModule === MenuID) {
-      if (!data || data[tabs.setting.controlField] === undefined) {
+      if (!data) {
         this.setState({
-          tabs: {...tabs, subtabs: this.props.config.subtabs}
+          tabs: {...tabs, subtabs: []}
         })
       } else {
-        let val = data[tabs.setting.controlField]
+        let val = data[tabs.setting.controlField] === undefined ? '' : data[tabs.setting.controlField] + ''
         this.setState({
           tabs: {...tabs, subtabs: this.props.config.subtabs.filter(tab => {
             if (tab.controlVal === val) {
@@ -119,11 +125,13 @@
     const { mainSearch, BID } = this.props
     const { tabs, bids } = this.state
 
+    if (!tabs.subtabs.length) return null
+
     return (
       <div className={'menu-antv-tabs-wrap ' + tabs.setting.tabLabel} style={tabs.style}>
-        <Tabs defaultActiveKey="1" tabPosition={tabs.setting.position} type={tabs.setting.tabStyle}>
+        <Tabs defaultActiveKey="1" tabBarStyle={{background: tabs.setting.backgroundColor || 'transparent'}} tabPosition={tabs.setting.position} type={tabs.setting.tabStyle}>
           {tabs.subtabs.map(tab => (
-            <TabPane tab={<span id={'tab' + tab.uuid}>{tab.icon ? <MkIcon type={tab.icon} /> : null}{tab.label}</span>} key={tab.uuid}>
+            <TabPane tab={<span id={'tab' + tab.uuid}>{tab.icon ? <MkIcon type={tab.icon} /> : null}{tab.label}</span>} style={{backgroundColor: tab.backgroundColor || 'transparent'}} key={tab.uuid}>
               <TabTransfer BID={BID} config={tab} bids={bids} mainSearch={mainSearch}/>
             </TabPane>
           ))}
diff --git a/src/tabviews/custom/components/tabs/antv-tabs/index.scss b/src/tabviews/custom/components/tabs/antv-tabs/index.scss
index dc4e400..7f07a5c 100644
--- a/src/tabviews/custom/components/tabs/antv-tabs/index.scss
+++ b/src/tabviews/custom/components/tabs/antv-tabs/index.scss
@@ -5,6 +5,24 @@
   background-position: center center;
   background-repeat: no-repeat;
   background-size: cover;
+
+  .ant-tabs-top-bar {
+    margin-bottom: 0;
+  }
+  .ant-tabs-top-content {
+    .ant-tabs-tabpane {
+      padding-top: 15px;
+    }
+  }
+  .ant-tabs-left-content {
+    padding-left: 0;
+  }
+  .ant-tabs-right-content {
+    padding-right: 0;
+  }
+  .ant-tabs-bottom-bar {
+    margin-top: 0;
+  }
 }
 
 .menu-antv-tabs-wrap.hide >.ant-tabs >.ant-tabs-bar{
diff --git a/src/tabviews/custom/components/timeline/normal-timeline/index.jsx b/src/tabviews/custom/components/timeline/normal-timeline/index.jsx
index d49100c..c3353c1 100644
--- a/src/tabviews/custom/components/timeline/normal-timeline/index.jsx
+++ b/src/tabviews/custom/components/timeline/normal-timeline/index.jsx
@@ -58,6 +58,7 @@
         item.key = index
         item.$$uuid = item[_config.setting.primaryKey] || ''
         item.$$BID = BID || ''
+        item.$$BData = BData || ''
         item.$Index = index + 1 + ''
         return item
       })
@@ -67,13 +68,14 @@
     _config.wrap.contentHeight = _config.wrap.title ? 'calc(100% - 45px)' : '100%'
 
     _config.columns.forEach(item => {
+      if (item.type !== 'number') return
       _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)
+      if (item.eleType === 'number' && item.field && _cols.has(item.field) && typeof(item.decimal) !== 'number') {
+        item.decimal = _cols.get(item.field).decimal || 0
       }
       return item
     })
@@ -88,7 +90,9 @@
       arr_field: _config.columns.map(col => col.field).join(','),
     }, () => {
       if (_config.setting.sync !== 'true' && _config.setting.onload === 'true') {
-        this.loadData()
+        setTimeout(() => {
+          this.loadData()
+        }, _config.setting.delay || 0)
       }
     })
   }
@@ -154,16 +158,23 @@
 
     if (config.uuid !== menuId) return
 
-    this.loadData(btn)                                                         // 鏁版嵁鍒锋柊
+    let supModule = config.setting.supModule
 
-    if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) {
-      MKEmitter.emit('reloadData', btn.syncComponentId)                        // 鍚岀骇鏍囩鍒锋柊
+    btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId)
+
+    if (!btn.syncComponentId || btn.syncComponentId !== supModule) {
+      if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠�
+        if (supModule && BID) {
+          MKEmitter.emit('reloadData', supModule, BID)
+        } else {
+          this.loadData()
+        }
+      } else {
+        this.loadData()
+      }
     }
 
-    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'))
+    if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」
       btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId)
     }
   }
diff --git a/src/tabviews/custom/components/tree/antd-tree/index.jsx b/src/tabviews/custom/components/tree/antd-tree/index.jsx
index e9d7bc7..305d461 100644
--- a/src/tabviews/custom/components/tree/antd-tree/index.jsx
+++ b/src/tabviews/custom/components/tree/antd-tree/index.jsx
@@ -62,7 +62,9 @@
       sync: _sync
     }, () => {
       if (config.setting.sync !== 'true' && config.setting.onload === 'true') {
-        this.loadData(null)
+        setTimeout(() => {
+          this.loadData(null)
+        }, config.setting.delay || 0)
       } else if (config.setting.sync === 'true' && _data) {
         this.handleData()
       }
diff --git a/src/tabviews/custom/components/tree/antd-tree/index.scss b/src/tabviews/custom/components/tree/antd-tree/index.scss
index e60ec78..859f346 100644
--- a/src/tabviews/custom/components/tree/antd-tree/index.scss
+++ b/src/tabviews/custom/components/tree/antd-tree/index.scss
@@ -75,6 +75,9 @@
       height: 60px;
     }
   }
+  .tree-header + .ant-empty {
+    margin-top: 35px;
+  }
   .loading-mask {
     position: absolute;
     left: 0px;
diff --git a/src/tabviews/custom/index.jsx b/src/tabviews/custom/index.jsx
index b7262d9..c5d426f 100644
--- a/src/tabviews/custom/index.jsx
+++ b/src/tabviews/custom/index.jsx
@@ -40,6 +40,7 @@
 const PagemsgComponent = asyncComponent(() => import('@/tabviews/zshare/pageMessage'))
 const CustomChart = asyncComponent(() => import('./components/chart/custom-chart'))
 const TimeLine = asyncComponent(() => import('./components/timeline/normal-timeline'))
+const Voucher = asyncComponent(() => import('./components/module/voucher'))
 
 class CustomPage extends Component {
   static propTpyes = {
@@ -423,7 +424,7 @@
         Sort: index + 1
       }))
 
-      if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) {
+      if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
         let sql = lines.map(item => (`
           ${item.insert}
           ${item.selects.join(` union all
@@ -475,6 +476,8 @@
             tab.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0
           ) {
             return false
+          } else if (tab.hide === 'true') {
+            return false
           }
           return true
         })
@@ -517,6 +520,23 @@
           item.wrap.blacklist.filter(v => roleId.indexOf(v) > -1).length > 0
         ) {
           return false
+        }
+      }
+
+      if (item.wrap && item.wrap.supType === 'multi') { // 鏁版嵁鍗″涓婄骇缁勪欢
+        if (item.supNodes && item.supNodes[0]) {
+          item.setting.supModule = item.supNodes[0].componentId
+        } else {
+          item.wrap.supType = 'single'
+          item.supNodes = null
+          item.setting.supModule = ''
+        }
+      } else if (item.setting && item.setting.supModule) {
+        let pid = item.setting.supModule.pop()
+        if (pid && pid !== 'empty') {
+          item.setting.supModule = pid
+        } else {
+          item.setting.supModule = ''
         }
       }
 
@@ -581,6 +601,10 @@
           cell.$tabId = tabId
           cell.$view = 'CustomPage'
 
+          if (cell.syncComponentId === item.uuid) {
+            cell.syncComponentId = ''
+          }
+
           if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { // 鎵撳嵃鏈鸿缃�
             cell = this.getPrinter(cell, item.uuid)
           }
@@ -616,6 +640,10 @@
               cell.$tabId = tabId
               cell.$view = 'CustomPage'
 
+              if (cell.syncComponentId === item.uuid) {
+                cell.syncComponentId = ''
+              }
+
               if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { // 鎵撳嵃鏈鸿缃�
                 cell = this.getPrinter(cell, item.uuid)
               }
@@ -639,6 +667,10 @@
               cell.$MenuID = this.props.MenuID
               cell.$tabId = tabId
               cell.$view = 'CustomPage'
+
+              if (cell.syncComponentId === item.uuid) {
+                cell.syncComponentId = ''
+              }
 
               if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { // 鎵撳嵃鏈鸿缃�
                 cell = this.getPrinter(cell, item.uuid)
@@ -668,6 +700,10 @@
             cell.$tabId = tabId
             cell.$view = 'CustomPage'
 
+            if (cell.syncComponentId === item.uuid) {
+              cell.syncComponentId = ''
+            }
+
             if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { // 鎵撳嵃鏈鸿缃�
               cell = this.getPrinter(cell, item.uuid)
             }
@@ -690,6 +726,10 @@
               cell.$MenuID = this.props.MenuID
               cell.$tabId = tabId
               cell.$view = 'CustomPage'
+
+              if (cell.syncComponentId === item.uuid) {
+                cell.syncComponentId = ''
+              }
 
               if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { // 鎵撳嵃鏈鸿缃�
                 cell = this.getPrinter(cell, item.uuid)
@@ -717,6 +757,10 @@
             cell.$tabId = tabId
             cell.$view = 'CustomPage'
 
+            if (cell.syncComponentId === item.uuid) {
+              cell.syncComponentId = ''
+            }
+
             if (cell.OpenType === 'funcbutton' && cell.funcType === 'print' && cell.verify) { // 鎵撳嵃鏈鸿缃�
               cell = this.getPrinter(cell, item.uuid)
             }
@@ -734,23 +778,6 @@
         if (item.subtype === 'editable') {
           item.submit.logLabel = item.$menuname + '-鎻愪氦'
           item.submit.$menuId = item.uuid
-        }
-      } 
-
-      if (item.wrap && item.wrap.supType === 'multi') { // 鏁版嵁鍗″涓婄骇缁勪欢
-        if (item.supNodes && item.supNodes[0]) {
-          item.setting.supModule = item.supNodes[0].componentId
-        } else {
-          item.wrap.supType = 'single'
-          item.supNodes = null
-          item.setting.supModule = ''
-        }
-      } else if (item.setting && item.setting.supModule) {
-        let pid = item.setting.supModule.pop()
-        if (pid && pid !== 'empty') {
-          item.setting.supModule = pid
-        } else {
-          item.setting.supModule = ''
         }
       }
 
@@ -823,6 +850,7 @@
 
   // 鏍煎紡鍖栭粯璁よ缃�
   formatSetting = (components, params, mainSearch, inherit, regs, balMap) => {
+    let delay = 20
     return components.map(component => {
       if (component.type === 'tabs') {
         component.subtabs = component.subtabs.map(tab => {
@@ -916,8 +944,10 @@
         } else {
           params.push(getStructDefaultParam(component, searchlist, params.length === 0))
         }
-      } else if (component.floor === 1) {
+      } else if (params) {
         component.setting.sync = 'false'
+        component.setting.delay = delay
+        delay += 20
       }
 
       if (balMap.has(component.uuid)) {
@@ -1134,7 +1164,7 @@
       } else if (item.type === 'table' && item.subtype === 'editable') {
         return (
           <Col span={item.width} key={item.uuid}>
-            <EditTable config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
+            <EditTable config={item} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
           </Col>
         )
       } else if (item.type === 'group' && item.subtype === 'normalgroup') {
@@ -1167,6 +1197,12 @@
             <CustomChart config={item} data={data} BID={_bid} mainSearch={mainSearch} menuType={menuType} />
           </Col>
         )
+      } else if (item.type === 'module' && item.subtype === 'voucher') {
+        return (
+          <Col span={item.width} key={item.uuid}>
+            <Voucher config={item} BID={_bid} />
+          </Col>
+        )
       } else {
         return null
       }
@@ -1180,7 +1216,7 @@
     return (
       <div className={'custom-page-wrap ' + (loadingview || loading ? 'loading' : '')} id={this.state.ContainerId} style={config ? config.style : null}>
         {(loadingview || loading) ? <Spin className="view-spin" size="large" /> : null}
-        <Row>{this.getComponents()}</Row>
+        <Row className="component-wrap">{this.getComponents()}</Row>
         {menuType !== 'HS' && window.GLOB.systemType !== 'production' ? <PagemsgComponent menu={{MenuName: this.props.MenuName, MenuNo: this.props.MenuNo}} config={config} dict={this.state.dict} /> : null}
         {menuType !== 'HS' && shortcuts ? <SettingComponent config={config} dict={this.state.dict} shortcuts={shortcuts} permAction={this.props.permAction}/> : null}
         {viewlost ? <NotFount msg={this.state.lostmsg} /> : null}
diff --git a/src/tabviews/custom/index.scss b/src/tabviews/custom/index.scss
index 6b7e1c7..b01f497 100644
--- a/src/tabviews/custom/index.scss
+++ b/src/tabviews/custom/index.scss
@@ -8,6 +8,9 @@
   padding-right: 16px;
   background-size: 100%;
   
+  .component-wrap >.ant-col {
+    min-height: 0;
+  }
   .box404 {
     padding-top: 30px;
   }
diff --git a/src/tabviews/formtab/index.jsx b/src/tabviews/formtab/index.jsx
index b16b3c7..a94d93b 100644
--- a/src/tabviews/formtab/index.jsx
+++ b/src/tabviews/formtab/index.jsx
@@ -103,15 +103,26 @@
         config.tabgroups = _tabgroups
       }
 
-      config.action = config.action.filter(item => permAction[item.uuid])
-      config.tabgroups.forEach(group => {
-        group.sublist = group.sublist.filter(tab => {
-          if (tab.supMenu === 'mainTable') {
-            tab.supMenu = MenuID
-          }
-          return permAction[tab.linkTab]
+      if (this.props.menuType !== 'HS') {
+        config.action = config.action.filter(item => permAction[item.uuid])
+        config.tabgroups.forEach(group => {
+          group.sublist = group.sublist.filter(tab => {
+            if (tab.supMenu === 'mainTable') {
+              tab.supMenu = MenuID
+            }
+            return permAction[tab.linkTab]
+          })
         })
-      })
+      } else {
+        config.tabgroups.forEach(group => {
+          group.sublist = group.sublist.filter(tab => {
+            if (tab.supMenu === 'mainTable') {
+              tab.supMenu = MenuID
+            }
+            return true
+          })
+        })
+      }
 
       // 鎸夐挳绫诲瀷鍏煎
       config.action = config.action.map(item => {
diff --git a/src/tabviews/subtable/index.jsx b/src/tabviews/subtable/index.jsx
index d872d45..5f39261 100644
--- a/src/tabviews/subtable/index.jsx
+++ b/src/tabviews/subtable/index.jsx
@@ -319,6 +319,8 @@
         config.setting.selected = 'false'
       } else if (config.setting.selected === 'init' && config.setting.onload === 'false') {
         config.setting.selected = 'false'
+      } else {
+        config.setting.orisel = true
       }
 
       if (config.setting.controlField) {
@@ -365,7 +367,7 @@
     }
   }
   
-  loadData = () => {
+  loadData = (id) => {
     const { mainSearch } = this.props
     const { setting, BID, search, loadCustomApi, hasReqFields } = this.state
 
@@ -414,10 +416,10 @@
 
       this.loadOutResource(searches)
       if (setting.execType === 'async') {
-        this.loadmaindata()
+        this.loadmaindata(id)
       }
     } else {
-      this.loadmaindata()
+      this.loadmaindata(id)
     }
   }
 
@@ -557,7 +559,7 @@
         Sort: index + 1
       }))
 
-      if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) {
+      if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
         let sql = lines.map(item => (`
           ${item.insert}
           ${item.selects.join(` union all
@@ -591,7 +593,7 @@
   /**
    * @description 瀛愯〃鏁版嵁鍔犺浇
    */
-  async loadmaindata () {
+  async loadmaindata (id) {
     const { mainSearch } = this.props
     const { setting, BID, arr_field, search, orderBy, pageIndex, pageSize, absFields } = this.state
 
@@ -617,9 +619,9 @@
         start = pageSize * (pageIndex - 1) + 1
       }
 
-      if (setting.selected !== 'false') {
+      if (setting.selected !== 'false' || (setting.orisel && id)) {
         setTimeout(() => {
-          MKEmitter.emit('mkTableCheckTopLine', this.props.MenuID)
+          MKEmitter.emit('mkTableCheckTopLine', this.props.MenuID, id)
         }, 200)
         if (setting.selected === 'init') {
           this.setState({setting: {...setting, selected: 'false'}})
@@ -827,17 +829,17 @@
   /**
    * @description 琛ㄦ牸鍒锋柊
    */
-  reloadtable = (btn) => {
+  reloadtable = (btn, id = '') => {
     if (!btn || btn.resetPageIndex !== 'false') {
       MKEmitter.emit('resetTable', this.props.Tab.uuid) // 鍒楄〃閲嶇疆
       this.setState({
         pageIndex: 1
       }, () => {
-        this.loadData()
+        this.loadData(id)
       })
     } else {
       MKEmitter.emit('resetTable', this.props.Tab.uuid, 'false') // 鍒楄〃閲嶇疆
-      this.loadData()
+      this.loadData(id)
     }
   }
 
@@ -892,7 +894,6 @@
     const { MenuID } = this.props
 
     if (menuId.indexOf(MenuID) === -1) return
-    if (id === 'empty') return
 
     if (!id) {
       this.reloadtable()
@@ -915,19 +916,23 @@
     const { Tab, SupMenuID } = this.props
     const { BID } = this.state
 
-    if (position === 'line' && lines && lines.length === 1) {
-      this.loadmainLinedata(lines[0].$$uuid)
+    if (position === 'line') {
+      if (lines && lines.length === 1) {
+        this.loadmainLinedata(lines[0].$$uuid)
+      } else {
+        this.reloadtable(btn, id)
+      }
     } else if (position === 'grid' || position === 'view') {
-      this.reloadtable(btn)
+      this.reloadtable(btn, id)
     } else if (position === 'maingrid' || position === 'mainline') {
-      this.reloadtable(btn)
-      if (Tab.supMenu) {
-        MKEmitter.emit('reloadData', Tab.supMenu, (BID || 'empty')) // 涓昏〃閲嶇疆
-      } else if (!Tab.supMenu && Tab.level === 0) {
-        MKEmitter.emit('reloadData', SupMenuID, (BID || 'empty'))   // 鏍戝舰缁撴瀯锛�0绾ф爣绛�
+      this.reloadtable(btn, id)
+      if (Tab.supMenu && BID) {
+        MKEmitter.emit('reloadData', Tab.supMenu, BID) // 涓昏〃閲嶇疆
+      } else if (!Tab.supMenu && Tab.level === 0 && BID) {
+        MKEmitter.emit('reloadData', SupMenuID, BID)   // 鏍戝舰缁撴瀯锛�0绾ф爣绛�
       }
     } else if (position === 'equaltab') {
-      this.reloadtable(btn)
+      this.reloadtable(btn, id)
       if (Tab.equalTab && Tab.equalTab.length > 0) {
         MKEmitter.emit('reloadData', Tab.equalTab.join(',')) // 鍚岀骇鏍囩閲嶇疆
       }
diff --git a/src/tabviews/subtabtable/index.jsx b/src/tabviews/subtabtable/index.jsx
index 2daa24c..9343c02 100644
--- a/src/tabviews/subtabtable/index.jsx
+++ b/src/tabviews/subtabtable/index.jsx
@@ -280,6 +280,8 @@
         config.setting.selected = 'false'
       } else if (config.setting.selected === 'init' && config.setting.onload === 'false') {
         config.setting.selected = 'false'
+      } else {
+        config.setting.orisel = true
       }
 
       if (config.setting.controlField) {
@@ -321,7 +323,7 @@
     }
   }
 
-  loadData = () => {
+  loadData = (id) => {
     const { setting, search, hasReqFields, loadCustomApi } = this.state
 
     let searches = fromJS(search).toJS()
@@ -356,10 +358,10 @@
 
       this.loadOutResource(searches)
       if (setting.execType === 'async') {
-        this.loadmaindata()
+        this.loadmaindata(id)
       }
     } else {
-      this.loadmaindata()
+      this.loadmaindata(id)
     }
   }
 
@@ -500,7 +502,7 @@
         Sort: index + 1
       }))
 
-      if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) {
+      if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
         let sql = lines.map(item => (`
           ${item.insert}
           ${item.selects.join(` union all
@@ -534,7 +536,7 @@
   /**
    * @description 瀛愯〃鏁版嵁鍔犺浇
    */
-  async loadmaindata () {
+  async loadmaindata (id) {
     const { BID } = this.props
     const { setting, arr_field, search, orderBy, pageIndex, pageSize, absFields } = this.state
 
@@ -557,9 +559,9 @@
         start = pageSize * (pageIndex - 1) + 1
       }
 
-      if (setting.selected !== 'false') {
+      if (setting.selected !== 'false' || (setting.orisel && id)) {
         setTimeout(() => {
-          MKEmitter.emit('mkTableCheckTopLine', this.props.MenuID)
+          MKEmitter.emit('mkTableCheckTopLine', this.props.MenuID, id)
         }, 200)
         if (setting.selected === 'init') {
           this.setState({setting: {...setting, selected: 'false'}})
@@ -762,17 +764,17 @@
   /**
    * @description 琛ㄦ牸鍒锋柊
    */
-  reloadtable = (btn) => {
+  reloadtable = (btn, id) => {
     if (!btn || btn.resetPageIndex !== 'false') {
       MKEmitter.emit('resetTable', this.props.Tab.uuid) // 鍒楄〃閲嶇疆
       this.setState({
         pageIndex: 1
       }, () => {
-        this.loadData()
+        this.loadData(id)
       })
     } else {
       MKEmitter.emit('resetTable', this.props.Tab.uuid, 'false') // 鍒楄〃閲嶇疆
-      this.loadData()
+      this.loadData(id)
     }
     
   }
@@ -807,7 +809,7 @@
    * @param {*} position   // 鍒锋柊浣嶇疆
    * @param {*} btn        // 鎵ц鐨勬寜閽�
    */
-  refreshByButtonResult = (menuId, position, btn, id, lines) => {
+  refreshByButtonResult = (menuId, position, btn, id = '', lines) => {
     const { MenuID } = this.props
 
     if (MenuID !== menuId) return
@@ -815,7 +817,7 @@
     if (position === 'line' && lines && lines.length === 1) {
       this.loadmainLinedata(lines[0].$$uuid)
     } else {
-      this.reloadtable(btn)
+      this.reloadtable(btn, id)
     }
     MKEmitter.emit('refreshPopButton', this.props.Tab.uuid)
   }
diff --git a/src/tabviews/verupmanage/config.jsx b/src/tabviews/verupmanage/config.jsx
index 32add62..e6ee268 100644
--- a/src/tabviews/verupmanage/config.jsx
+++ b/src/tabviews/verupmanage/config.jsx
@@ -118,12 +118,12 @@
       }
     ],
     columns:[
-      {label:'ID',field:'ID',type:'text',Align:'left',Hide:'true',IsSort:'true',Width:120,prefix:'',postfix:'',matchVal:'',color:'',fieldlength:50,uuid:'1583983669503v35f3e7f52iosklnomg'},
-      {label:'鍏抽敭瀛�',field:'KeyWords',type:'text',Align:'left',Hide:'false',IsSort:'true',Width:120,prefix:'',postfix:'',matchVal:'',color:'',fieldlength:50,uuid:'15839836784475gl5v26qgual768ab8u'},
-      {label:'鎻忚堪',field:'Remark',type:'text',Align:'left',Hide:'false',IsSort:'true',Width:120,prefix:'',postfix:'',matchVal:'',color:'',fieldlength:50,uuid:'15839837044624m3k41m7omhs6q8f9fo'},
-      {label:'绫诲瀷',field:'TypeName',type:'text',Align:'left',Hide:'false',IsSort:'true',Width:120,prefix:'',postfix:'',matchVal:'',color:'',fieldlength:50,uuid:'1583983717421ts67iu14hmmeqivel5e'},
-      {label:'鎺掑簭',field:'Sort',type:'text',Align:'left',Hide:'false',IsSort:'true',Width:120,prefix:'',postfix:'',matchVal:'',color:'',fieldlength:50,uuid:'1583983728654ks05hor8mgiqbp61ivl'},
-      {label:'SrcID',field:'SrcID',type:'text',Align:'left',Hide:'true',IsSort:'true',Width:120,prefix:'',postfix:'',matchVal:'',color:'',fieldlength:50,uuid:'1584001165784gu23d35b43i860n0a19'}
+      {label:'ID',field:'ID',type:'text',Align:'left',Hide:'true',IsSort:'false',Width:120,prefix:'',postfix:'',matchVal:'',color:'',fieldlength:50,uuid:'1583983669503v35f3e7f52iosklnomg'},
+      {label:'鍏抽敭瀛�',field:'KeyWords',type:'text',Align:'left',Hide:'false',IsSort:'false',Width:120,prefix:'',postfix:'',matchVal:'',color:'',fieldlength:50,uuid:'15839836784475gl5v26qgual768ab8u'},
+      {label:'鎻忚堪',field:'Remark',type:'text',Align:'left',Hide:'false',IsSort:'false',Width:120,prefix:'',postfix:'',matchVal:'',color:'',fieldlength:50,uuid:'15839837044624m3k41m7omhs6q8f9fo'},
+      {label:'绫诲瀷',field:'TypeName',type:'text',Align:'left',Hide:'false',IsSort:'false',Width:120,prefix:'',postfix:'',matchVal:'',color:'',fieldlength:50,uuid:'1583983717421ts67iu14hmmeqivel5e'},
+      {label:'鎺掑簭',field:'Sort',type:'text',Align:'left',Hide:'false',IsSort:'false',Width:120,prefix:'',postfix:'',matchVal:'',color:'',fieldlength:50,uuid:'1583983728654ks05hor8mgiqbp61ivl'},
+      {label:'SrcID',field:'SrcID',type:'text',Align:'left',Hide:'true',IsSort:'false',Width:120,prefix:'',postfix:'',matchVal:'',color:'',fieldlength:50,uuid:'1584001165784gu23d35b43i860n0a19'}
     ],
     gridBtn: {display: false}
   },
diff --git a/src/tabviews/verupmanage/index.jsx b/src/tabviews/verupmanage/index.jsx
index 22c47a4..fe65a69 100644
--- a/src/tabviews/verupmanage/index.jsx
+++ b/src/tabviews/verupmanage/index.jsx
@@ -450,7 +450,7 @@
   }
 
   render() {
-    const { searchlist, setting, actions, columns, pickup, config, selectedData } = this.state
+    const { searchlist, setting, actions, columns, pickup, config, selectedData, pageSize } = this.state
 
     return (
       <div className="veruptable" id={this.state.ContainerId}>
@@ -478,6 +478,7 @@
             pickup={pickup}
             setting={setting}
             columns={columns}
+            pageSize={pageSize}
             dict={this.state.dict}
             data={this.state.data}
             total={this.state.total}
diff --git a/src/tabviews/verupmanage/subtabtable/index.jsx b/src/tabviews/verupmanage/subtabtable/index.jsx
index d33454c..a64b977 100644
--- a/src/tabviews/verupmanage/subtabtable/index.jsx
+++ b/src/tabviews/verupmanage/subtabtable/index.jsx
@@ -46,7 +46,7 @@
     total: 0,             // 鎬绘暟
     loading: false,       // 鍒楄〃鏁版嵁鍔犺浇涓�
     pageIndex: 1,         // 椤电爜
-    pageSize: 10,         // 姣忛〉鏁版嵁鏉℃暟
+    pageSize: 100,         // 姣忛〉鏁版嵁鏉℃暟
     orderBy: '',          // 鎺掑簭
     search: '',           // 鎼滅储鏉′欢鏁扮粍锛屼娇鐢ㄦ椂闇�鍒嗗満鏅鐞�
     popAction: false,     // 寮规椤甸潰锛屾寜閽俊鎭�
@@ -350,29 +350,6 @@
   }
 
   /**
-   * @description 椤甸潰鍒锋柊锛岄噸鏂拌幏鍙栭厤缃�
-   */
-  reloadview = () => {
-    this.setState({
-      config: null,
-      searchlist: null,
-      actions: null,
-      columns: null,
-      arr_field: '',
-      setting: null,
-      data: null,
-      total: 0,
-      loading: false,
-      pageIndex: 1,
-      pageSize: 10,
-      orderBy: '',
-      search: ''
-    }, () => {
-      this.loadconfig()
-    })
-  }
-
-  /**
    * @description 鎸夐挳鎿嶄綔瀹屾垚鍚庯紙鎴愬姛鎴栧け璐ワ級锛岄〉闈㈠埛鏂帮紝閲嶇疆椤电爜鍙婇�夋嫨椤�
    */
   refreshbyaction = (btn, type) => {
@@ -380,16 +357,6 @@
       this.reloadtable()
     } else if (btn.execError === 'grid' && type === 'error') {
       this.reloadtable()
-    } else if (btn.execSuccess === 'view' && type === 'success') {
-      this.reloadview()
-    } else if (btn.execError === 'view' && type === 'error') {
-      this.reloadview()
-    } else if (btn.popClose === 'grid' && type === 'pop') {
-      this.reloadtable()
-    } else if (btn.popClose === 'view' && type === 'pop') {
-      this.reloadview()
-    } else if (btn.popClose === 'maingrid' && type === 'pop') {
-      this.props.handleMainTable('maingrid')
     }
   }
 
@@ -446,7 +413,7 @@
   }
 
   render() {
-    const { BID, BData, setting, searchlist, actions, columns, pickup, selectedData } = this.state
+    const { BID, BData, setting, searchlist, actions, columns, pickup, selectedData, pageSize } = this.state
 
     return (
       <div className="verup-subtable" id={'subtable' + this.props.MenuID}>
@@ -481,6 +448,7 @@
               pickup={pickup}
               setting={setting}
               columns={columns}
+              pageSize={pageSize}
               dict={this.state.dict}
               data={this.state.data}
               total={this.state.total}
diff --git a/src/tabviews/zshare/actionList/changeuserbutton/index.jsx b/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
index 6e36e79..beb7547 100644
--- a/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/changeuserbutton/index.jsx
@@ -38,7 +38,7 @@
 
     if (btn.controlField && selectedData && selectedData.length > 0) { // 琛ㄦ牸涓寜閽殣钘忔帶鍒�
       selectedData.forEach(item => {
-        let s = item[btn.controlField] + ''
+        let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
         if (s === btn.controlVal || (btn.controlVal && btn.controlVal.split(',').includes(s))) {
           disabled = true
         }
@@ -77,7 +77,7 @@
     if (btn.controlField && !is(fromJS(nextProps.selectedData || []), fromJS(selectedData || []))) {
       if (nextProps.selectedData && nextProps.selectedData.length > 0) { // 琛ㄦ牸涓寜閽殣钘忔帶鍒�
         nextProps.selectedData.forEach(item => {
-          let s = item[btn.controlField] + ''
+          let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
           if (s === btn.controlVal || (btn.controlVal && btn.controlVal.split(',').includes(s))) {
             disabled = true
           }
@@ -257,6 +257,7 @@
           icon={btn.icon}
           loading={loading}
           disabled={disabled}
+          title={disabled ? (btn.reason || '') : ''}
           className={'mk-btn mk-' + btn.class}
           onClick={(e) => {e.stopPropagation(); this.actionTrigger()}}
         >{btn.label}</Button>
@@ -281,7 +282,7 @@
       return (
         <Button
           type="link"
-          title={show === 'icon' ? btn.label : ''}
+          title={disabled ? (btn.reason || '') : (show === 'icon' ? btn.label : '')}
           loading={loading}
           disabled={disabled}
           style={btn.style}
diff --git a/src/tabviews/zshare/actionList/excelInbutton/index.jsx b/src/tabviews/zshare/actionList/excelInbutton/index.jsx
index dc4e82e..15dbb8b 100644
--- a/src/tabviews/zshare/actionList/excelInbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/excelInbutton/index.jsx
@@ -43,7 +43,7 @@
 
     if (btn.controlField && selectedData && selectedData.length > 0) { // 琛ㄦ牸涓寜閽殣钘忔帶鍒�
       selectedData.forEach(item => {
-        let s = item[btn.controlField] + ''
+        let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
         if (s === btn.controlVal || (btn.controlVal && btn.controlVal.split(',').includes(s))) {
           disabled = true
         }
@@ -82,7 +82,7 @@
     if (btn.controlField && !is(fromJS(nextProps.selectedData || []), fromJS(selectedData || []))) {
       if (nextProps.selectedData && nextProps.selectedData.length > 0) { // 琛ㄦ牸涓寜閽殣钘忔帶鍒�
         nextProps.selectedData.forEach(item => {
-          let s = item[btn.controlField] + ''
+          let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
           if (s === btn.controlVal || (btn.controlVal && btn.controlVal.split(',').includes(s))) {
             disabled = true
           }
@@ -191,7 +191,7 @@
   execSuccess = (res) => {
     const { btn } = this.props
 
-    if (res && res.ErrCode === 'S') { // 鎵ц鎴愬姛
+    if (res && (res.ErrCode === 'S' || !res.ErrCode)) { // 鎵ц鎴愬姛
       notification.success({
         top: 92,
         message: res.ErrMesg || this.state.dict['main.action.confirm.success'],
@@ -493,6 +493,7 @@
           icon={btn.icon}
           loading={loading}
           disabled={disabled}
+          title={disabled ? (btn.reason || '') : ''}
           className={'mk-btn mk-' + btn.class}
           onClick={() => {this.actionTrigger()}}
         >{btn.label}</Button>
@@ -518,7 +519,7 @@
       return <div style={{display: 'inline-block'}} onClick={(e) => e.stopPropagation()}>
         <Button
           type="link"
-          title={show === 'icon' ? btn.label : ''}
+          title={disabled ? (btn.reason || '') : (show === 'icon' ? btn.label : '')}
           loading={loading}
           disabled={disabled}
           style={btn.style}
diff --git a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
index 891cd34..cbc490b 100644
--- a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx
@@ -478,11 +478,13 @@
   exportExcel = (data) => {
     const { btn } = this.props
     
+    let columns = btn.verify.columns.filter(col => col.output !== 'false')
+    
     try {
-      let imgCol = btn.verify.columns.filter(col => col.type === 'image')[0]
+      let imgCol = columns.filter(col => col.type === 'image')[0]
 
       if (imgCol) {
-        const column = btn.verify.columns.map(item => {
+        const column = columns.map(item => {
           let col = {
             title: item.Text, 
             key: item.Column,
@@ -503,7 +505,7 @@
   
           item.$Index = index + 1 + ''
   
-          btn.verify.columns.forEach((col, i) => {
+          columns.forEach((col, i) => {
             if (item[col.Column] && col.abs === 'true') {
               _row[col.Column] = Math.abs(item[col.Column])
             } else {
@@ -528,7 +530,7 @@
         let colwidth = []
         let abses = []
   
-        btn.verify.columns.forEach(col => {
+        columns.forEach(col => {
           if (_topRow[col.Column]) return
   
           _header.push(col.Column)
@@ -823,7 +825,7 @@
     }
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
-    if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
+    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
       param.custom_script && console.info(`${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${param.custom_script}`)
       LText && console.info(LText)
     }
@@ -856,7 +858,7 @@
   execSuccess = (res) => {
     const { btn } = this.props
 
-    if (res && res.ErrCode === 'S') { // 鎵ц鎴愬姛
+    if (res && (res.ErrCode === 'S' || !res.ErrCode)) { // 鎵ц鎴愬姛
       notification.success({
         top: 92,
         message: res.ErrMesg || this.state.dict['main.action.confirm.success'],
@@ -939,6 +941,7 @@
           className={'mk-btn mk-' + btn.class}
           icon={btn.icon}
           disabled={disabled}
+          title={disabled ? (btn.reason || '') : ''}
           onClick={(e) => {e.stopPropagation(); this.actionTrigger()}}
           loading={loading}
         >{btn.label}</Button>
@@ -963,7 +966,7 @@
       return (
         <Button
           type="link"
-          title={show === 'icon' ? btn.label : ''}
+          title={disabled ? (btn.reason || '') : (show === 'icon' ? btn.label : '')}
           loading={loading}
           disabled={disabled}
           style={btn.style}
diff --git a/src/tabviews/zshare/actionList/index.jsx b/src/tabviews/zshare/actionList/index.jsx
index 068783c..be12727 100644
--- a/src/tabviews/zshare/actionList/index.jsx
+++ b/src/tabviews/zshare/actionList/index.jsx
@@ -18,6 +18,7 @@
 class ActionList extends Component {
   static propTpyes = {
     BID: PropTypes.any,               // 涓昏〃ID
+    lock: PropTypes.any,              // 鍙紪杈戣〃涓寜閽攣瀹�
     BData: PropTypes.any,             // 涓昏〃鏁版嵁
     selectedData: PropTypes.any,      // 瀛愯〃涓�夋嫨鏁版嵁
     Tab: PropTypes.any,               // 濡傛灉褰撳墠鍏冪礌涓烘爣绛炬椂锛宼ab涓烘爣绛句俊鎭�
@@ -35,7 +36,7 @@
   }
 
   getButtonList = (actions) => {
-    const { BID, BData, MenuID, Tab, columns, setting, ContainerId, selectedData } = this.props
+    const { BID, BData, MenuID, Tab, columns, setting, ContainerId, selectedData, lock } = this.props
 
     return actions.map(item => {
       if (['exec', 'prompt', 'pop'].includes(item.OpenType)) {
@@ -43,6 +44,7 @@
           <NormalButton
             key={item.uuid}
             show={item.show || 'actionList'}
+            disabled={lock || false}
             BID={BID}
             Tab={Tab}
             btn={item}
@@ -58,6 +60,7 @@
           <ExcelInButton
             key={item.uuid}
             show={item.show || 'actionList'}
+            disabled={lock || false}
             BID={BID}
             Tab={Tab}
             btn={item}
@@ -71,6 +74,7 @@
           <ExcelOutButton
             key={item.uuid}
             show={item.show || 'actionList'}
+            disabled={lock || false}
             BID={BID}
             Tab={Tab}
             btn={item}
@@ -83,6 +87,7 @@
           <PopupButton
             key={item.uuid}
             show={item.show || 'actionList'}
+            disabled={lock || false}
             BID={BID}
             Tab={Tab}
             btn={item}
@@ -96,6 +101,7 @@
           <TabButton
             key={item.uuid}
             show={item.show || 'actionList'}
+            disabled={lock || false}
             btn={item}
             BData={BData}
             MenuID={MenuID}
@@ -108,6 +114,7 @@
           <NewPageButton
             key={item.uuid}
             show="actionList"
+            disabled={lock || false}
             btn={item}
             BData={BData}
             setting={setting}
@@ -120,6 +127,7 @@
             <ChangeUserButton
               key={item.uuid}
               show={item.show || 'actionList'}
+              disabled={lock || false}
               BID={BID}
               btn={item}
               BData={BData}
@@ -133,6 +141,7 @@
             <PrintButton
               key={item.uuid}
               show={item.show || 'actionList'}
+              disabled={lock || false}
               BID={BID}
               Tab={Tab}
               btn={item}
diff --git a/src/tabviews/zshare/actionList/newpagebutton/index.jsx b/src/tabviews/zshare/actionList/newpagebutton/index.jsx
index 8914d39..cb1f797 100644
--- a/src/tabviews/zshare/actionList/newpagebutton/index.jsx
+++ b/src/tabviews/zshare/actionList/newpagebutton/index.jsx
@@ -35,7 +35,7 @@
 
     if (btn.controlField && selectedData && selectedData.length > 0) { // 琛ㄦ牸涓寜閽殣钘忔帶鍒�
       selectedData.forEach(item => {
-        let s = item[btn.controlField] + ''
+        let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
         if (s === btn.controlVal || (btn.controlVal && btn.controlVal.split(',').includes(s))) {
           disabled = true
         }
@@ -74,7 +74,7 @@
     if (btn.controlField && !is(fromJS(nextProps.selectedData || []), fromJS(selectedData || []))) {
       if (nextProps.selectedData && nextProps.selectedData.length > 0) { // 琛ㄦ牸涓寜閽殣钘忔帶鍒�
         nextProps.selectedData.forEach(item => {
-          let s = item[btn.controlField] + ''
+          let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
           if (s === btn.controlVal || (btn.controlVal && btn.controlVal.split(',').includes(s))) {
             disabled = true
           }
@@ -244,6 +244,7 @@
           className={'mk-btn mk-' + btn.class}
           icon={btn.icon}
           disabled={disabled}
+          title={disabled ? (btn.reason || '') : ''}
           onClick={(e) => {e.stopPropagation(); this.actionTrigger()}}
         >{btn.label}</Button>
       )
@@ -267,7 +268,7 @@
       return (
         <Button
           type="link"
-          title={show === 'icon' ? btn.label : ''}
+          title={disabled ? (btn.reason || '') : (show === 'icon' ? btn.label : '')}
           style={btn.style}
           disabled={disabled}
           icon={icon}
diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx
index 4b71efb..ac2b71c 100644
--- a/src/tabviews/zshare/actionList/normalbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -60,7 +60,7 @@
 
     if (btn.controlField && selectedData && selectedData.length > 0) { // 琛ㄦ牸涓寜閽殣钘忔帶鍒�
       selectedData.forEach(item => {
-        let s = item[btn.controlField] + ''
+        let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
         if (s === btn.controlVal || (btn.controlVal && btn.controlVal.split(',').includes(s))) {
           disabled = true
         }
@@ -85,6 +85,10 @@
     if (btn.OpenType === 'form') {
       let data = selectedData && selectedData[0] ? selectedData[0] : null
       this.setState({check: data && data[btn.field] === btn.openVal})
+    } else if (btn.OpenType === 'formSubmit') {
+      this.setState({
+        selines: selectedData || []
+      })
     }
   }
 
@@ -113,7 +117,7 @@
     if (btn.controlField && !is(fromJS(nextProps.selectedData || []), fromJS(selectedData || []))) {
       if (nextProps.selectedData && nextProps.selectedData.length > 0) { // 琛ㄦ牸涓寜閽殣钘忔帶鍒�
         nextProps.selectedData.forEach(item => {
-          let s = item[btn.controlField] + ''
+          let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
           if (s === btn.controlVal || (btn.controlVal && btn.controlVal.split(',').includes(s))) {
             disabled = true
           }
@@ -142,6 +146,10 @@
     if (btn.OpenType === 'form') {
       let data = nextProps.selectedData && nextProps.selectedData[0] ? nextProps.selectedData[0] : null
       this.setState({check: data && data[btn.field] === btn.openVal})
+    } else if (btn.OpenType === 'formSubmit') {
+      this.setState({
+        selines: nextProps.selectedData || []
+      })
     }
   }
 
@@ -164,13 +172,39 @@
   }
 
   actionSubmit = (res) => {
-    const { btn } = this.props
+    const { btn, setting, BID } = this.props
+    const { selines } = this.state
 
     if (btn.uuid !== res.menuId) return
 
+    let data = selines || []
+
+    if (setting.supModule && !BID) {
+      notification.warning({
+        top: 92,
+        message: '闇�瑕佷笂绾т富閿�硷紒',
+        duration: 3
+      })
+      return
+    } else if (btn.Ot !== 'notRequired' && data.length === 0) {
+      notification.warning({
+        top: 92,
+        message: '璇烽�夋嫨琛岋紒',
+        duration: 5
+      })
+      return
+    } else if (btn.Ot === 'requiredSgl' && data.length !== 1) {
+      notification.warning({
+        top: 92,
+        message: '璇烽�夋嫨鍗曡鏁版嵁锛�',
+        duration: 5
+      })
+      return
+    }
+
     this.setState({ loading: true })
 
-    this.execSubmit(this.state.selines, () => {}, res.form)
+    this.execSubmit(data, () => {}, res.form)
   }
 
   resetModuleParam = (menuId, btnId, param) => {
@@ -300,12 +334,14 @@
     })
     
     if (btn.OpenType === 'formSubmit') {
-      MKEmitter.emit('mkFormSubmit', btn.uuid)
+      this.setState({}, () => {
+        MKEmitter.emit('mkFormSubmit', btn.uuid)
+      })
       return
     } else if (btn.OpenType === 'prompt') {
       this.setState({loading: true})
       confirm({
-        title: this.state.dict['main.action.confirm.tip'],
+        title: btn.tipTitle || this.state.dict['main.action.confirm.tip'],
         onOk() {
           return new Promise(resolve => {
             _this.execSubmit(data, resolve)
@@ -985,6 +1021,12 @@
       _resolve()
     })
   }
+  // xml璋冪敤鏂瑰紡
+  // Api.directRequest('http://localhost:3001/test.xml', 'get', null, 'true').then(res => {
+  //   let $x2js = new x2js()
+  //   let jsonObj = $x2js.xml2js(res);
+  //   console.info(jsonObj)
+  // })
 
   /**
    * @description 鑷畾涔夎姹傚惊鐜墽琛�
@@ -1172,7 +1214,7 @@
       sql = _prevCustomScript + sql
       sql = sql + _backCustomScript
 
-      if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) {
+      if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
         console.info(sql.replace(/\n\s{8}/ig, '\n'))
       }
 
@@ -1209,7 +1251,7 @@
         Sort: index + 1
       }))
 
-      if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) {
+      if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
         let sql = [...lineMap.values()].map(item => (`
           ${item.insert}
           ${item.selects.join(` union all
@@ -1449,7 +1491,7 @@
     const { btn } = this.props
     const { btnconfig, autoMatic } = this.state
 
-    if ((res && res.ErrCode === 'S') || autoMatic) { // 鎵ц鎴愬姛
+    if ((res && (res.ErrCode === 'S' || !res.ErrCode)) || autoMatic) { // 鎵ц鎴愬姛
       notification.success({
         top: 92,
         message: res.ErrMesg || this.state.dict['main.action.confirm.success'],
@@ -1485,6 +1527,15 @@
     if (btn.output) {
       id = res.mk_b_id || res[btn.output] || ''
     }
+    let tabId = ''
+    if (btn.refreshTab && btn.refreshTab.length > 0) {
+      tabId = btn.refreshTab[btn.refreshTab.length - 1]
+    }
+
+    if (tabId && btn.$MenuID === tabId) { // 鍒锋柊褰撳墠鑿滃崟鏃讹紝鍋滄鍏朵粬鎿嶄綔
+      MKEmitter.emit('reloadMenuView', tabId, 'table')
+      return
+    }
 
     if (btn.execSuccess === 'closetab') {
       MKEmitter.emit('closeTabView', btn.$MenuID)
@@ -1494,9 +1545,10 @@
       MKEmitter.emit('refreshByButtonResult', btn.$menuId, btn.execSuccess, btn, id, this.state.selines)
     }
 
-    if (btn.refreshTab && btn.refreshTab.length > 0) {
-      MKEmitter.emit('reloadMenuView', btn.refreshTab[btn.refreshTab.length - 1], 'table')
+    if (tabId) {
+      MKEmitter.emit('reloadMenuView', tabId, 'table')
     }
+    
     if (btn.switchTab && btn.switchTab.length > 0) {
       let id = btn.switchTab[btn.switchTab.length - 1]
       let node = document.getElementById('tab' + id)
@@ -1855,7 +1907,7 @@
   }
 
   modelconfirm = () => {
-    const { BData } = this.props
+    const { BData, btn } = this.props
     const { btnconfig, selines } = this.state
     let _this = this
 
@@ -1931,7 +1983,7 @@
       this.execSubmit(selines, () => {}, result)
     } else {
       confirm({
-        title: this.state.dict['main.action.confirm.tip'],
+        title: btn.tipTitle || this.state.dict['main.action.confirm.tip'],
         onOk() {
           return new Promise(resolve => {
             _this.execSubmit(selines, resolve, result)
@@ -2041,9 +2093,9 @@
 
     if (btn.OpenType === 'form') {
       if (btn.formType === 'switch') {
-        return <Switch loading={loading} checked={check} disabled={disabled || loading} onChange={(val,e) => {e.stopPropagation();this.actionTrigger()}} style={style} size={btn.size} checkedChildren={btn.openText || ''} unCheckedChildren={btn.closeText || ''}/>
+        return <Switch loading={loading} checked={check} disabled={disabled || loading} title={disabled ? (btn.reason || '') : ''} onChange={(val,e) => {e.stopPropagation();this.actionTrigger()}} style={style} className={btn.size === 'large' ? 'ant-switch-large' : ''} size={btn.size} checkedChildren={btn.openText || ''} unCheckedChildren={btn.closeText || ''}/>
       } else {
-        return <Checkbox disabled={disabled || loading} checked={check} onChange={(e) => {e.stopPropagation();this.actionTrigger()}} style={style}></Checkbox>
+        return <Checkbox disabled={disabled || loading} title={disabled ? (btn.reason || '') : ''} checked={check} onChange={(e) => {e.stopPropagation();this.actionTrigger()}} style={style}></Checkbox>
       }
     } else if (show === 'actionList') {
       return <div style={{display: 'inline-block'}} onClick={(e) => e.stopPropagation()}>
@@ -2052,6 +2104,7 @@
           icon={btn.icon}
           loading={loading}
           disabled={disabled}
+          title={disabled ? (btn.reason || '') : ''}
           className={'mk-btn mk-' + btn.class}
           onClick={() => {this.actionTrigger()}}
         >{(loadingNumber ? `(${loadingNumber})` : '') + btn.label}</Button>
@@ -2087,7 +2140,7 @@
       return <div style={{display: 'inline-block'}} onClick={(e) => e.stopPropagation()}>
         <Button
           type="link"
-          title={show === 'icon' ? btn.label : ''}
+          title={disabled ? (btn.reason || '') : (show === 'icon' ? btn.label : '')}
           loading={loading}
           disabled={disabled}
           style={btn.style || style}
diff --git a/src/tabviews/zshare/actionList/popupbutton/index.jsx b/src/tabviews/zshare/actionList/popupbutton/index.jsx
index f1b9b3b..0d95d4c 100644
--- a/src/tabviews/zshare/actionList/popupbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/popupbutton/index.jsx
@@ -43,7 +43,7 @@
 
     if (btn.controlField && selectedData && selectedData.length > 0) { // 琛ㄦ牸涓寜閽殣钘忔帶鍒�
       selectedData.forEach(item => {
-        let s = item[btn.controlField] + ''
+        let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
         if (s === btn.controlVal || (btn.controlVal && btn.controlVal.split(',').includes(s))) {
           disabled = true
         }
@@ -85,7 +85,7 @@
     if (btn.controlField && !is(fromJS(nextProps.selectedData || []), fromJS(selectedData || []))) {
       if (nextProps.selectedData && nextProps.selectedData.length > 0) { // 琛ㄦ牸涓寜閽殣钘忔帶鍒�
         nextProps.selectedData.forEach(item => {
-          let s = item[btn.controlField] + ''
+          let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
           if (s === btn.controlVal || (btn.controlVal && btn.controlVal.split(',').includes(s))) {
             disabled = true
           }
@@ -184,7 +184,7 @@
       // 闇�瑕侀�夋嫨鍗曡鏃讹紝鏍¢獙鏁版嵁
       notification.warning({
         top: 92,
-        message: this.state.dict['main.action.confirm.selectSingleLine'],
+        message: data.length === 0 ? '璇烽�夋嫨琛岋紒' : '璇烽�夋嫨鍗曡鏁版嵁锛�',
         duration: 5
       })
       return
@@ -350,12 +350,13 @@
           className={'mk-btn mk-' + btn.class}
           icon={btn.icon}
           disabled={disabled}
+          title={disabled ? (btn.reason || '') : ''}
           onClick={() => {this.actionTrigger()}}
           loading={loading}
         >{btn.label}</Button> : null}
         {show !== 'actionList' ? <Button
           type="link"
-          title={show === 'icon' ? btn.label : ''}
+          title={disabled ? (btn.reason || '') : (show === 'icon' ? btn.label : '')}
           loading={loading}
           disabled={disabled}
           style={btn.style}
diff --git a/src/tabviews/zshare/actionList/printbutton/index.jsx b/src/tabviews/zshare/actionList/printbutton/index.jsx
index 90ae0dd..6c14dd2 100644
--- a/src/tabviews/zshare/actionList/printbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/printbutton/index.jsx
@@ -54,7 +54,7 @@
 
     if (btn.controlField && selectedData && selectedData.length > 0) { // 琛ㄦ牸涓寜閽殣钘忔帶鍒�
       selectedData.forEach(item => {
-        let s = item[btn.controlField] + ''
+        let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
         if (s === btn.controlVal || (btn.controlVal && btn.controlVal.split(',').includes(s))) {
           disabled = true
         }
@@ -99,7 +99,7 @@
     if (btn.controlField && !is(fromJS(nextProps.selectedData || []), fromJS(selectedData || []))) {
       if (nextProps.selectedData && nextProps.selectedData.length > 0) { // 琛ㄦ牸涓寜閽殣钘忔帶鍒�
         nextProps.selectedData.forEach(item => {
-          let s = item[btn.controlField] + ''
+          let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
           if (s === btn.controlVal || (btn.controlVal && btn.controlVal.split(',').includes(s))) {
             disabled = true
           }
@@ -1269,7 +1269,7 @@
     const { btn } = this.props
     const { autoMatic } = this.state
 
-    if ((res && res.ErrCode === 'S') || autoMatic) { // 鎵ц鎴愬姛
+    if ((res && (res.ErrCode === 'S' || !res.ErrCode)) || autoMatic) { // 鎵ц鎴愬姛
       notification.success({
         top: 92,
         message: res.ErrMesg || this.state.dict['main.action.confirm.success'],
@@ -1618,6 +1618,7 @@
           icon={btn.icon}
           loading={loading}
           disabled={disabled}
+          title={disabled ? (btn.reason || '') : ''}
           className={'mk-btn mk-' + btn.class}
           onClick={() => {this.actionTrigger()}}
         >{loadingNumber ? `(${loadingNumber})` : '' + btn.label}</Button>
@@ -1643,7 +1644,7 @@
       return <div style={{display: 'inline-block'}} onClick={(e) => e.stopPropagation()}>
         <Button
           type="link"
-          title={show === 'icon' ? btn.label : ''}
+          title={disabled ? (btn.reason || '') : (show === 'icon' ? btn.label : '')}
           loading={loading}
           disabled={disabled}
           style={btn.style}
diff --git a/src/tabviews/zshare/actionList/tabbutton/index.jsx b/src/tabviews/zshare/actionList/tabbutton/index.jsx
index 42774f4..353a566 100644
--- a/src/tabviews/zshare/actionList/tabbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/tabbutton/index.jsx
@@ -35,7 +35,7 @@
 
     if (btn.controlField && selectedData && selectedData.length > 0) { // 琛ㄦ牸涓寜閽殣钘忔帶鍒�
       selectedData.forEach(item => {
-        let s = item[btn.controlField] + ''
+        let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
         if (s === btn.controlVal || (btn.controlVal && btn.controlVal.split(',').includes(s))) {
           disabled = true
         }
@@ -74,7 +74,7 @@
     if (btn.controlField && !is(fromJS(nextProps.selectedData || []), fromJS(selectedData || []))) {
       if (nextProps.selectedData && nextProps.selectedData.length > 0) { // 琛ㄦ牸涓寜閽殣钘忔帶鍒�
         nextProps.selectedData.forEach(item => {
-          let s = item[btn.controlField] + ''
+          let s = item[btn.controlField] !== undefined ? item[btn.controlField] + '' : ''
           if (s === btn.controlVal || (btn.controlVal && btn.controlVal.split(',').includes(s))) {
             disabled = true
           }
@@ -218,6 +218,7 @@
           className={'mk-btn mk-' + btn.class}
           icon={btn.icon}
           disabled={disabled}
+          title={disabled ? (btn.reason || '') : ''}
           onClick={(e) => {e.stopPropagation(); this.actionTrigger()}}
         >{btn.label}</Button>
       )
@@ -241,7 +242,7 @@
       return (
         <Button
           type="link"
-          title={show === 'icon' ? btn.label : ''}
+          title={disabled ? (btn.reason || '') : (show === 'icon' ? btn.label : '')}
           style={btn.style}
           disabled={disabled}
           icon={icon}
diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx
index 9c61db0..1db51b6 100644
--- a/src/tabviews/zshare/mutilform/index.jsx
+++ b/src/tabviews/zshare/mutilform/index.jsx
@@ -77,9 +77,21 @@
         linkFields[item.linkField].push({field: item.field, uuid: item.uuid})
       }
 
-      if (item.type === 'split' || item.type === 'hint') return true
+      if (item.type === 'split') return true
+      if (item.type === 'hint') {
+        if (item.field && data && data[item.field]) {
+          item.message = data[item.field]
+        }
+        delete item.field
+        return true
+      } else if (item.type === 'date') { // 鏃堕棿鎼滅储
+        item.precision = item.precision || 'day'
+      } else if (item.type === 'datetime') {
+        item.type = 'date'
+        item.precision = 'second'
+      }
 
-      if (!item.field || !['text', 'number', 'switch', 'rate', 'select', 'link', 'linkMain', 'funcvar', 'date', 'datemonth', 'datetime', 'radio', 'checkbox', 'checkcard', 'fileupload', 'textarea', 'multiselect', 'brafteditor', 'color'].includes(item.type)) return false
+      if (!item.field || !['text', 'number', 'switch', 'rate', 'select', 'link', 'linkMain', 'funcvar', 'date', 'datemonth', 'radio', 'checkbox', 'checkcard', 'fileupload', 'textarea', 'multiselect', 'brafteditor', 'color'].includes(item.type)) return false
 
       // 鏁版嵁鑷姩濉厖
       let readin = item.readin !== 'false'
@@ -101,10 +113,17 @@
 
       if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type)) {
         item.options = item.options || []
-        item.options = item.options.map(cell => {
+        // item.options = item.options.map(cell => {
+        //   cell.value = cell.Value
+        //   cell.label = cell.Text
+
+        //   return cell
+        // })
+        item.options = item.options.filter(cell => {
           cell.value = cell.Value
           cell.label = cell.Text
-          return cell
+
+          return !cell.Hide
         })
         if (item.setAll === 'true' && ['select', 'link', 'radio'].includes(item.type)) { // 娣诲姞绌哄��
           item.options.unshift({
@@ -125,12 +144,24 @@
       if (item.type === 'linkMain') {
         newval = BData && BData[item.field] ? BData[item.field] : '$empty'
       } else if (item.type === 'date') { // 鏃堕棿鎼滅储
+        let format = 'YYYY-MM-DD'
+        let _format = 'YYYY-MM-DD HH:mm:ss'
+        if (item.precision === 'day') {
+          _format = 'YYYY-MM-DD'
+        } else if (item.precision === 'hour') {
+          format = 'YYYY-MM-DD HH'
+        } else if (item.precision === 'minute') {
+          format = 'YYYY-MM-DD HH:mm'
+        } else if (item.precision === 'second') {
+          format = 'YYYY-MM-DD HH:mm:ss'
+        }
+
         if (newval !== '$empty') {
-          newval = moment(newval, 'YYYY-MM-DD').format('YYYY-MM-DD')
+          newval = moment(newval, format).format(_format)
           newval = newval === 'Invalid date' ? '$empty' : newval
         }
         if (newval === '$empty' && item.initval) {
-          newval = moment().subtract(item.initval, 'days').format('YYYY-MM-DD')
+          newval = moment().subtract(item.initval, 'days').format(_format)
         }
       } else if (item.type === 'datemonth') {
         if (newval !== '$empty') {
@@ -140,14 +171,18 @@
         if (newval === '$empty' && item.initval) {
           newval = moment().subtract(item.initval, 'month').format('YYYY-MM')
         }
-      } else if (item.type === 'datetime') {
-        if (newval !== '$empty') {
-          newval = moment(newval, 'YYYY-MM-DD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss')
-          newval = newval === 'Invalid date' ? '$empty' : newval
-        }
-        if (newval === '$empty' && item.initval) {
-          newval = moment().subtract(item.initval, 'days').format('YYYY-MM-DD') + ' 00:00:00'
-        }
+      // } else if (item.type === 'datetime') {
+      //   if (newval !== '$empty') {
+      //     newval = moment(newval, 'YYYY-MM-DD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss')
+      //     newval = newval === 'Invalid date' ? '$empty' : newval
+      //   }
+      //   if (newval === '$empty' && item.initval) {
+      //     if (item.initval === '0') {
+      //       newval = moment().format('YYYY-MM-DD HH:mm:ss')
+      //     } else {
+      //       newval = moment().subtract(item.initval, 'days').format('YYYY-MM-DD') + ' 00:00:00'
+      //     }
+      //   }
       } else if (item.type === 'switch') { // 寮�鍏冲彧鎺ユ敹鍥哄畾鍊�
         if (newval !== '$empty' && (newval === item.closeVal || newval === item.openVal)) {
 
@@ -196,10 +231,14 @@
         }, {
           required: item.required === 'true',
           message: item.label + '涓嶅彲涓虹┖!'
-        }, {
-          max: item.fieldlength,
-          message: formRule.input.formMessage.replace('@max', item.fieldlength)
         }]
+
+        if (!item.lenControl || item.lenControl === 'limit') {
+          _rules.push({
+            max: item.fieldlength,
+            message: formRule.input.formMessage.replace('@max', item.fieldlength)
+          })
+        }
 
         if (item.regular) {
           if (item.regular === 'number') {
@@ -314,6 +353,8 @@
       fieldMap.set(key, supItem)
     })
 
+    let reFieldsVal = null
+
     formlist = formlist.map(cell => {
       if (cell.labelwidth) {
         cell.labelCol = {style: {width: cell.labelwidth + '%'}}
@@ -321,6 +362,34 @@
       }
       if (!cell.field || !fieldMap.has(cell.field)) return cell
       let item = fieldMap.get(cell.field)
+
+      // 涓嬬骇琛ㄥ崟鎺у埗-瀛楁鍐欏叆
+      if ((['select', 'radio', 'link'].includes(item.type) || (item.type === 'checkcard' && item.multiple !== 'true')) && item.linkSubField) {
+        item.subFields = []
+        item.linkSubField.forEach(m => {
+          let n = fieldMap.get(m)
+          if (n && ['text', 'number', 'textarea'].includes(n.type)) {
+            item.subFields.push({
+              uuid: n.uuid,
+              field: m
+            })
+          }
+        })
+
+        if (item.subFields.length === 0) {
+          item.subFields = null
+        } else if (item.oriOptions.length > 0) {
+          item.oriOptions = item.oriOptions.map(cell => {
+            item.subFields.forEach(m => {
+              cell[m.field] = cell[m.field] === undefined ? '' : cell[m.field]
+            })
+            return cell
+          })
+          
+          item.options = fromJS(item.oriOptions).toJS()
+        }
+        item.linkSubField = null
+      }
 
       // if (item.type === 'link') {
       if (item.linkField) {
@@ -350,35 +419,7 @@
       if (linkFields[item.field]) {
         item.linkFields = linkFields[item.field]
       }
-
-      // 涓嬬骇琛ㄥ崟鎺у埗-瀛楁鍐欏叆
-      if ((['select', 'radio', 'link'].includes(item.type) || (item.type === 'checkcard' && item.multiple !== 'true')) && item.linkSubField) {
-        item.subFields = []
-        item.linkSubField.forEach(m => {
-          let n = fieldMap.get(m)
-          if (n && ['text', 'number', 'textarea'].includes(n.type)) {
-            item.subFields.push({
-              uuid: n.uuid,
-              field: m
-            })
-          }
-        })
-
-        if (item.subFields.length === 0) {
-          item.subFields = null
-        } else if (item.options.length > 0) {
-          item.options = item.options.map(cell => {
-            item.subFields.forEach(m => {
-              cell[m.field] = cell[m.field] === undefined ? '' : cell[m.field]
-            })
-            return cell
-          })
-          
-          item.oriOptions = fromJS(item.options).toJS()
-        }
-        item.linkSubField = null
-      }
-
+      
       if (item.enter === 'tab' || item.enter === 'sub') {
         if (fieldMap.has(item.tabField)) {
           item.tabUuid = fieldMap.get(item.tabField).uuid
@@ -388,9 +429,32 @@
           item.tabUuid = item.uuid
         }
       }
+
+      if (item.subFields && item.options.length > 0) {
+        // eslint-disable-next-line
+        let option = item.options.filter(cell => item.initval == cell.value)[0]
+
+        if (option) {
+          reFieldsVal = reFieldsVal || {}
+          item.subFields.forEach(n => {
+            reFieldsVal[n.field] = option[n.field]
+          })
+        }
+      }
       
       return item
     })
+
+    if (reFieldsVal) {
+      formlist = formlist.map(cell => {
+        if (reFieldsVal[cell.field] === undefined) return cell
+
+        cell.initval = reFieldsVal[cell.field]
+        record[cell.field] = reFieldsVal[cell.field]
+
+        return cell
+      })
+    }
 
     this.record = record
 
@@ -576,6 +640,7 @@
   }
 
   resetFormList = (result) => {
+    let reFieldsVal = null
     let _formlist = fromJS(this.state.formlist).toJS().map(item => {
       if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect'].includes(item.type) && result[item.field] && result[item.field].length > 0) {
         let options = []
@@ -616,15 +681,42 @@
         } else {
           item.options = item.oriOptions
         }
-      }
 
-      if (['select', 'link', 'radio'].includes(item.type) && typeof(item.initval) === 'string' && item.initval.indexOf('$first') > -1) { // 閫変腑绗竴椤�
-        item.initval = item.options[0] ? item.options[0].value : ''
-        this.record[item.field] = item.initval
+        if (['select', 'link', 'radio'].includes(item.type) && typeof(item.initval) === 'string' && item.initval.indexOf('$first') > -1) { // 閫変腑绗竴椤�
+          item.initval = item.options[0] ? item.options[0].value : ''
+          this.record[item.field] = item.initval
+        }
+
+        if (item.subFields && item.options.length > 0) {
+          // eslint-disable-next-line
+          let option = item.options.filter(cell => item.initval == cell.value)[0]
+  
+          if (option) {
+            reFieldsVal = reFieldsVal || {}
+            item.subFields.forEach(n => {
+              reFieldsVal[n.field] = option[n.field]
+            })
+          }
+        }
       }
       
       return item
     })
+
+    if (reFieldsVal) {
+      _formlist = _formlist.map((cell, i) => {
+        if (reFieldsVal[cell.field] === undefined) return cell
+
+        cell.initval = reFieldsVal[cell.field]
+        this.record[cell.field] = reFieldsVal[cell.field]
+
+        setTimeout(() => {
+          MKEmitter.emit('mkFC', 'input', cell.uuid, reFieldsVal[cell.field])
+        }, i * 5)
+
+        return cell
+      })
+    }
 
     this.setState({
       formlist: _formlist
@@ -647,43 +739,43 @@
   recordChange = (values, item) => {
     this.record = {...this.record, ...values}
 
-    if (item && item.controlFields) {
-      let map = new Map()
-      this.state.formlist.forEach(cell => {
-        if (!cell.field) return
-        map.set(cell.field, cell)
-      })
+    if (!item || !item.controlFields) return
 
-      let reset = (current) => {
-        let val = this.record[current.field]
+    let map = new Map()
+    this.state.formlist.forEach(cell => {
+      if (!cell.field) return
+      map.set(cell.field, cell)
+    })
 
-        current.controlFields.forEach(cell => {
-          let m = map.get(cell.field)
-          m.hidden = current.hidden || !cell.values.includes(val)
+    let reset = (current) => {
+      let val = this.record[current.field]
 
-          if (m.hidden) {
-            m.initval = this.record[m.field]
-          }
+      current.controlFields.forEach(cell => {
+        let m = map.get(cell.field)
+        m.hidden = current.hidden || !cell.values.includes(val)
 
-          map.set(cell.field, m)
+        if (m.hidden) {
+          m.initval = this.record[m.field]
+        }
 
-          if (m.controlFields) {
-            reset(m)
-          }
-        })
-      }
+        map.set(cell.field, m)
 
-      reset(item)
-
-      this.setState({
-        formlist: this.state.formlist.map(cell => {
-          if (cell.field) {
-            return map.get(cell.field)
-          }
-          return cell
-        })
+        if (m.controlFields) {
+          reset(m)
+        }
       })
     }
+
+    reset(item)
+
+    this.setState({
+      formlist: this.state.formlist.map(cell => {
+        if (cell.field) {
+          return map.get(cell.field)
+        }
+        return cell
+      })
+    })
   }
 
   getFields() {
@@ -698,21 +790,23 @@
       if (item.type === 'split') {
         fields.push(
           <Col span={24} key={index}>
-            <p className="mk-form-split-line">{item.label}</p>
+            <p className="mk-form-split-line" style={item.style}>{item.label}</p>
           </Col>
         )
       } else if (item.type === 'hint') {
         fields.push(
           <Col span={item.span || 24} key={index}>
-            <Form.Item className="hint" colon={!!item.label} label={item.label || ' '} labelCol={item.labelCol} wrapperCol={item.wrapperCol}>
-              <div className="message">{item.message}</div>
+            <Form.Item className="hint" colon={false} label={item.label ? <span className="mk-form-label" style={item.style}>{item.label}</span> : ' '} labelCol={item.labelCol} wrapperCol={item.wrapperCol}>
+              <div className="message" style={item.style}>{item.message}</div>
             </Form.Item>
           </Col>
         )
       } else {
         let content = null
         let className = ''
-        let label = item.tooltip ? <Tooltip placement="topLeft" title={item.tooltip}><QuestionCircleOutlined style={{color: '#c49f47', marginRight: '3px'}}/>{item.label}</Tooltip> : item.label
+        let label = item.tooltip ? <Tooltip placement="topLeft" title={item.tooltip}><QuestionCircleOutlined style={{color: '#c49f47', marginRight: '3px'}}/>
+          <span className="mk-form-label" style={item.style}>{item.label}</span>
+        </Tooltip> : <span className="mk-form-label" style={item.style}>{item.label}</span>
       
         if (item.type === 'text' || item.type === 'linkMain') {
           content = (<MKInput config={item} onChange={(val, defer) => !defer && this.recordChange({[item.field]: val})} onSubmit={this.props.inputSubmit} />)
@@ -731,7 +825,7 @@
           content = (<MKCheckbox config={item} onChange={(val) => this.recordChange({[item.field]: val})}/>)
         } else if (item.type === 'radio') {
           content = (<MKRadio config={item} onChange={(val, other) => this.recordChange({[item.field]: val, ...other}, item)}/>)
-        } else if (item.type === 'date' || item.type === 'datemonth' || item.type === 'datetime') {
+        } else if (item.type === 'date' || item.type === 'datemonth') {
           content = (<MKDatePicker config={item} onChange={(val) => this.recordChange({[item.field]: val})} />)
         } else if (item.type === 'fileupload') {
           className = item.readonly ? 'readonly' : ''
@@ -752,6 +846,7 @@
           <Col span={item.span || 24} key={index}>
             <Form.Item
               label={label}
+              colon={false}
               className={className}
               extra={item.extra || null}
               labelCol={item.labelCol}
@@ -815,6 +910,14 @@
               _item.type = 'text'
             }
           }
+
+          if (item.type === 'text' && item.lenControl && item.lenControl !== 'limit') {
+            if (item.lenControl === 'left') {
+              _item.value = _item.value.substr(0, item.fieldlength)
+            } else {
+              _item.value = _item.value.slice(-item.fieldlength)
+            }
+          }
     
           search.push(_item)
         })
diff --git a/src/tabviews/zshare/mutilform/index.scss b/src/tabviews/zshare/mutilform/index.scss
index 537c050..3eeeb15 100644
--- a/src/tabviews/zshare/mutilform/index.scss
+++ b/src/tabviews/zshare/mutilform/index.scss
@@ -17,6 +17,16 @@
       margin-left: 0;
     }
   }
+  .mk-form-label::after {
+    content: ':';
+    position: relative;
+    top: -0.5px;
+    margin: 0 8px 0 2px;
+    text-decoration: none;
+  }
+  .ant-form-item-no-colon::after {
+    content: none!important;
+  }
   .ant-form-item {
     display: flex;
   }
diff --git a/src/tabviews/zshare/mutilform/mkCheckCard/index.jsx b/src/tabviews/zshare/mutilform/mkCheckCard/index.jsx
index 9014cbb..d0b2c65 100644
--- a/src/tabviews/zshare/mutilform/mkCheckCard/index.jsx
+++ b/src/tabviews/zshare/mutilform/mkCheckCard/index.jsx
@@ -145,6 +145,19 @@
       }, () => {
         this.props.onChange(item.$value, other)
       })
+    } else {
+      let other = {}
+      config.linkFields && config.linkFields.forEach((m, i) => {
+        setTimeout(() => {
+          MKEmitter.emit('mkFP', m.uuid, '', 0)
+        }, (i + 1) * 100)
+      })
+
+      this.setState({
+        selectKeys: ''
+      }, () => {
+        this.props.onChange('', other)
+      })
     }
   }
 
diff --git a/src/tabviews/zshare/mutilform/mkDatePicker/index.jsx b/src/tabviews/zshare/mutilform/mkDatePicker/index.jsx
index b2acd83..a3d0899 100644
--- a/src/tabviews/zshare/mutilform/mkDatePicker/index.jsx
+++ b/src/tabviews/zshare/mutilform/mkDatePicker/index.jsx
@@ -20,13 +20,19 @@
     if (config.type === 'datemonth') {
       mode = 'month'
       format = 'YYYY-MM'
-    } else if (config.type === 'datetime') {
-      mode = 'datetime'
+    } else if (config.precision === 'day') {
+      format = 'YYYY-MM-DD'
+    } else if (config.precision === 'hour') {
+      format = 'YYYY-MM-DD HH'
+    } else if (config.precision === 'minute') {
+      format = 'YYYY-MM-DD HH:mm'
+    } else if (config.precision === 'second') {
       format = 'YYYY-MM-DD HH:mm:ss'
     }
+
     let value = config.initval || null
     if (value) {
-      value = moment(value, format)
+      value = moment(value, 'YYYY-MM-DD HH:mm:ss')
     }
 
     this.state = {
@@ -49,9 +55,19 @@
   }
 
   onChange = (val) => {
-    const { format } = this.state
+    const { config } = this.props
+    const { format, mode } = this.state
+    let _val = val ? moment(val).format(format) : ''
 
-    this.props.onChange(val ? moment(val).format(format) : '')
+    if (mode === 'date' && _val) {
+      if (config.precision === 'hour') {
+        _val = _val + ':00:00'
+      } else if (config.precision === 'minute') {
+        _val = _val + ':00'
+      }
+    }
+
+    this.props.onChange(_val)
   }
 
   disabledDate = (current) => {
@@ -72,14 +88,12 @@
 
   render() {
     const { config } = this.props
-    const { value, mode } = this.state
+    const { value, mode, format } = this.state
 
     if (mode === 'date') {
-      return <DatePicker defaultValue={value} disabledDate={this.disabledDate} disabled={config.readonly} onChange={this.onChange}/>
+      return <DatePicker dropdownClassName={'mk-date-picker ' + config.precision} showTime={format !== 'YYYY-MM-DD'} format={format} defaultValue={value} disabledDate={this.disabledDate} disabled={config.readonly} onChange={this.onChange}/>
     } else if (mode === 'month') {
       return <MonthPicker defaultValue={value} disabled={config.readonly} onChange={this.onChange}/>
-    } else if (mode === 'datetime') {
-      return <DatePicker defaultValue={value} disabledDate={this.disabledDate} showTime disabled={config.readonly} onChange={this.onChange}/>
     }
   }
 }
diff --git a/src/tabviews/zshare/normalTable/index.jsx b/src/tabviews/zshare/normalTable/index.jsx
index bc497d5..2481f06 100644
--- a/src/tabviews/zshare/normalTable/index.jsx
+++ b/src/tabviews/zshare/normalTable/index.jsx
@@ -115,8 +115,17 @@
         }
       }
   
-      columns.forEach((item, index) => {
-        if (item.hidden === true || item.Hide === 'true') return
+      columns.forEach(item => {
+        if (item.hidden === true || item.Hide === 'true') {
+          if (item.marks) { // 鎻愬彇琛屾爣璁�
+            item.marks.forEach(mark => {
+              if (mark.signType !== 'line') return
+
+              lineMarks.push(mark)
+            })
+          }
+          return
+        }
         let cell = null
   
         if (item.type === 'colspan') {
@@ -216,7 +225,11 @@
           }
         }
         
-        _columns.push(cell)
+        if (item.type === 'action' && item.position === 'left') {
+          _columns.unshift(cell)
+        } else {
+          _columns.push(cell)
+        }
       })
   
       if (rowspans.length === 0) {
@@ -231,7 +244,7 @@
       pageOptions.push(size)
       pageOptions = pageOptions.sort((a, b) => a - b)
     }
-    
+
     this.setState({
       pageOptions,
       columns: _columns,
@@ -265,12 +278,20 @@
     MKEmitter.removeListener('mkTableCheckTopLine', this.mkTableCheckTopLine)
   }
 
-  mkTableCheckTopLine = (id) => {
-    if (id !== this.props.MenuID) return
+  mkTableCheckTopLine = (menuid, id) => {
+    const {MenuID, data} = this.props
 
-    if (this.props.data.length > 0) {
-      this.changeRow(this.props.data[0], 0)
+    if (menuid !== MenuID || data.length === 0) return
+
+    let index = 0
+    if (id) {
+      index = data.findIndex(item => item.$$uuid === id)
+      if (index === -1) {
+        index = 0
+      }
     }
+
+    this.changeRow(data[index], index)
   }
 
   autoSelectData = (id, index) => {
diff --git a/src/tabviews/zshare/topSearch/advanceform/index.jsx b/src/tabviews/zshare/topSearch/advanceform/index.jsx
index 8680e75..ae479bd 100644
--- a/src/tabviews/zshare/topSearch/advanceform/index.jsx
+++ b/src/tabviews/zshare/topSearch/advanceform/index.jsx
@@ -53,7 +53,11 @@
       if (content) {
         fields.push(
           <Col span={item.ratio || 6} key={index}>
-            <Form.Item label={item.labelShow !== 'false' ? item.label : ''}>
+            <Form.Item
+              labelCol={item.labelCol}
+              wrapperCol={item.wrapperCol}
+              label={item.labelShow !== 'false' ? item.label : ''}
+            >
               {getFieldDecorator(item.field, {
                 initialValue: item.initval,
                 rules: _rules
diff --git a/src/tabviews/zshare/topSearch/index.jsx b/src/tabviews/zshare/topSearch/index.jsx
index 8f02a8b..39e88fc 100644
--- a/src/tabviews/zshare/topSearch/index.jsx
+++ b/src/tabviews/zshare/topSearch/index.jsx
@@ -101,6 +101,13 @@
         linkFields[item.linkField].push({field: item.field, uuid: item.uuid})
       }
 
+      let labelwidth = item.labelwidth || 33.3
+      if (item.labelShow === 'false') {
+        labelwidth = 0
+      }
+      item.labelCol = {style: {width: labelwidth + '%'}}
+      item.wrapperCol = {style: {width: (100 - labelwidth) + '%'}}
+
       if (fieldMap.has(item.field)) {
         item.field = item.field + '@tail@'
       }
@@ -116,7 +123,15 @@
       }
 
       if (item.advanced && item.initval) {
-        advanceValues.push({field: item.field, type: item.type, label: item.label, value: item.initval})
+        let val = item.initval
+        if (item.precision === 'hour') {
+          if (/,/ig.test(val)) {
+            val = val.split(',').map(m => m + ':00').join(',')
+          } else {
+            val = val + ':00'
+          }
+        }
+        advanceValues.push({field: item.field, type: item.type, label: item.label, value: val})
       }
 
       if (item.type === 'group') {
@@ -489,7 +504,12 @@
       if (content) {
         fields.push(
           <Col span={item.ratio || 6} key={index}>
-            <Form.Item className={className} label={item.labelShow !== 'false' ? item.label : ''}>
+            <Form.Item
+              className={className}
+              label={item.labelShow !== 'false' ? item.label : ''}
+              labelCol={item.labelCol}
+              wrapperCol={item.wrapperCol}
+            >
               {getFieldDecorator(field, {
                 initialValue: item.initval,
                 rules: _rules
@@ -580,7 +600,15 @@
         record[item.field] = item.initval
       }
       if (item.advanced && item.initval) {
-        advanceValues.push({field: item.field, type: item.type, label: item.label, value: item.initval})
+        let val = item.initval
+        if (item.precision === 'hour') {
+          if (/,/ig.test(val)) {
+            val = val.split(',').map(m => m + ':00').join(',')
+          } else {
+            val = val + ':00'
+          }
+        }
+        advanceValues.push({field: item.field, type: item.type, label: item.label, value: val})
       }
 
       return item
@@ -667,6 +695,7 @@
           label: item.label,
           match: item.match,
           required: item.required,
+          precision: item.precision || '',
           forbid: item.$forbid
         })
       }
@@ -684,6 +713,13 @@
 
       let val = this.record[item.field]
       if (val || val === 0) {
+        if (item.precision === 'hour') {
+          if (/,/ig.test(val)) {
+            val = val.split(',').map(m => m + ':00').join(',')
+          } else {
+            val = val + ':00'
+          }
+        }
         advanceValues.push({field: item.field, type: item.type, label: item.label, value: val})
       }
     })
diff --git a/src/tabviews/zshare/topSearch/mkDatePicker/index.jsx b/src/tabviews/zshare/topSearch/mkDatePicker/index.jsx
index 4ebc9b2..859be1a 100644
--- a/src/tabviews/zshare/topSearch/mkDatePicker/index.jsx
+++ b/src/tabviews/zshare/topSearch/mkDatePicker/index.jsx
@@ -23,9 +23,19 @@
     } else if (config.type === 'week') {
       mode = 'week'
       format = 'YYYY-MM-DD'
-    } else if (config.type === 'daterange') {
-      mode = 'daterange'
-      format = 'YYYY-MM-DD'
+    } else {
+      if (config.type === 'daterange') {
+        mode = 'daterange'
+      }
+      if (config.precision === 'day') {
+        format = 'YYYY-MM-DD'
+      } else if (config.precision === 'hour') {
+        format = 'YYYY-MM-DD HH'
+      } else if (config.precision === 'minute') {
+        format = 'YYYY-MM-DD HH:mm'
+      } else if (config.precision === 'second') {
+        format = 'YYYY-MM-DD HH:mm:ss'
+      }
     }
     let value = config.initval || null
 
@@ -43,6 +53,7 @@
     this.state = {
       value,
       mode,
+      precision: config.precision || 'day',
       format
     }
   }
@@ -74,16 +85,16 @@
   }
 
   render() {
-    const { value, mode } = this.state
+    const { value, mode, format, precision } = this.state
 
     if (mode === 'date') {
-      return <DatePicker value={value} onChange={this.onChange}/>
+      return <DatePicker dropdownClassName={'mk-date-picker ' + precision} value={value} showTime={format !== 'YYYY-MM-DD'} format={format} onChange={this.onChange}/>
     } else if (mode === 'month') {
       return <MonthPicker value={value} onChange={this.onChange}/>
     } else if (mode === 'week') {
       return <WeekPicker value={value} onChange={this.onChange}/>
     } else if (mode === 'daterange') {
-      return <RangePicker placeholder={['寮�濮嬫棩鏈�', '缁撴潫鏃ユ湡']} value={value} onChange={this.onChange}/>
+      return <RangePicker dropdownClassName={'mk-date-picker ' + precision} placeholder={['寮�濮嬫棩鏈�', '缁撴潫鏃ユ湡']} showTime={format !== 'YYYY-MM-DD'} format={format} value={value} onChange={this.onChange}/>
     }
   }
 }
diff --git a/src/templates/formtabconfig/actionform/index.jsx b/src/templates/formtabconfig/actionform/index.jsx
index 503b392..2c3ae5b 100644
--- a/src/templates/formtabconfig/actionform/index.jsx
+++ b/src/templates/formtabconfig/actionform/index.jsx
@@ -243,7 +243,7 @@
     this.state.formlist.forEach((item, index) => {
       if (item.hidden) return
 
-      if (item.type === 'text') { // 鏂囨湰鎼滅储
+      if (item.type === 'text') {
         let _rules = []
         if (item.key === 'innerFunc') {
           let str = '^(' + item.fields.join('|') + ')'
@@ -290,7 +290,7 @@
             </Form.Item>
           </Col>
         )
-      } else if (item.type === 'number') { // 鏂囨湰鎼滅储
+      } else if (item.type === 'number') {
         fields.push(
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
@@ -324,8 +324,6 @@
                 ]
               })(
                 <Select
-                  showSearch
-                  filterOption={(input, option) => option.props.children[2].toLowerCase().indexOf(input.toLowerCase()) >= 0}
                   getPopupContainer={() => document.getElementById('winter')}
                   disabled={!!item.readonly}
                 >
diff --git a/src/templates/formtabconfig/dragelement/index.jsx b/src/templates/formtabconfig/dragelement/index.jsx
index 4816521..3621397 100644
--- a/src/templates/formtabconfig/dragelement/index.jsx
+++ b/src/templates/formtabconfig/dragelement/index.jsx
@@ -59,6 +59,13 @@
     delete val.originUuid
     delete val.iscopy
 
+    delete val.$srcId
+    
+    let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+    if (srcid) {
+      val.$srcId = srcid
+    }
+
     oInput.value = window.btoa(window.encodeURIComponent(JSON.stringify(val)))
     document.body.appendChild(oInput)
     oInput.select()
diff --git a/src/templates/formtabconfig/index.jsx b/src/templates/formtabconfig/index.jsx
index 297b37b..317f850 100644
--- a/src/templates/formtabconfig/index.jsx
+++ b/src/templates/formtabconfig/index.jsx
@@ -1942,7 +1942,7 @@
         <Modal
           title={this.state.card && this.state.card.iscopy ? '琛ㄥ崟-澶嶅埗' : '琛ㄥ崟-缂栬緫'}
           visible={modaltype === 'search'}
-          width={700}
+          width={950}
           maskClosable={false}
           onOk={this.handleSubmit}
           confirmLoading={this.state.sqlVerifing}
@@ -2009,7 +2009,7 @@
           wrapClassName="common-table-fields-modal"
           title={'楠岃瘉淇℃伅'}
           visible={this.state.profileVisible}
-          width={'75vw'}
+          width={'90vw'}
           maskClosable={false}
           okText={this.state.dict['model.submit']}
           onOk={this.verifySubmit}
diff --git a/src/templates/menuconfig/menuform/index.jsx b/src/templates/menuconfig/menuform/index.jsx
index b7de0a9..8a1ae15 100644
--- a/src/templates/menuconfig/menuform/index.jsx
+++ b/src/templates/menuconfig/menuform/index.jsx
@@ -70,7 +70,7 @@
               })(
                 <Select
                   showSearch
-                  filterOption={(input, option) => option.props.children[2].toLowerCase().indexOf(input.toLowerCase()) >= 0}
+                  filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
                   onChange={(value) => {this.openTypeChange(item.key, value)}}
                   getPopupContainer={() => document.getElementById('form-box')}
                 >
diff --git a/src/templates/modalconfig/checkCard/index.scss b/src/templates/modalconfig/checkCard/index.scss
index 8a6d3aa..230aa8d 100644
--- a/src/templates/modalconfig/checkCard/index.scss
+++ b/src/templates/modalconfig/checkCard/index.scss
@@ -1,5 +1,8 @@
 .check-card-edit-box {
   line-height: 1.5;
+  .ant-col {
+    float: left;
+  }
   .card-cell {
     position: relative;
     border: 1px solid #bcbcbc;
diff --git a/src/templates/modalconfig/dragelement/card.jsx b/src/templates/modalconfig/dragelement/card.jsx
index 662a035..bbd5db0 100644
--- a/src/templates/modalconfig/dragelement/card.jsx
+++ b/src/templates/modalconfig/dragelement/card.jsx
@@ -1,11 +1,12 @@
 import React from 'react'
 import { useDrag, useDrop } from 'react-dnd'
 import { Select, DatePicker, Input, InputNumber, Button, Popover, Switch, Radio, Checkbox, Form, Rate } from 'antd'
-import { QuestionCircleOutlined, UploadOutlined, EditOutlined, CopyOutlined, CloseOutlined, StarFilled } from '@ant-design/icons'
+import { QuestionCircleOutlined, UploadOutlined, EditOutlined, CopyOutlined, CloseOutlined, StarFilled, FontColorsOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import asyncComponent from '@/utils/asyncComponent'
 import MkIcon from '@/components/mk-icon'
+import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
 const { MonthPicker } = DatePicker
@@ -51,6 +52,12 @@
     copyCard(id)
   }
 
+  const changeStyle = () => {
+    let options = ['font']
+
+    MKEmitter.emit('changeStyle', ['form', card.uuid], options, card.style || {})
+  }
+
   let selectval = ''
   if (card.type === 'multiselect' || card.type === 'select' || card.type === 'link') {
     if (card.initval) {
@@ -76,11 +83,19 @@
   } else if (card.type === 'color') {
     formItem = (<ColorSketch value={card.initval || 'transparent'}/>)
   } else if (card.type === 'date') {
-    formItem = (<DatePicker value={card.initval ? moment().subtract(card.initval, 'days') : null} />)
+    let format = 'YYYY-MM-DD'
+    if (card.precision === 'hour') {
+      format = 'YYYY-MM-DD HH'
+    } else if (card.precision === 'minute') {
+      format = 'YYYY-MM-DD HH:mm'
+    } else if (card.precision === 'second') {
+      format = 'YYYY-MM-DD HH:mm:ss'
+    }
+    formItem = (<DatePicker format={format} value={card.initval ? moment().subtract(card.initval, 'days') : null} />)
   } else if (card.type === 'datemonth') {
     formItem = (<MonthPicker value={card.initval ? moment().subtract(card.initval, 'month') : null} />)
   } else if (card.type === 'datetime') {
-    formItem = (<DatePicker showTime value={card.initval ? moment().subtract(card.initval, 'days') : null} />)
+    formItem = (<DatePicker format='YYYY-MM-DD HH:mm:ss' value={card.initval ? moment().subtract(card.initval, 'days') : null} />)
   } else if (card.type === 'textarea') {
     formItem = (<TextArea value={card.initval} placeholder={card.placeholder || ''} autoSize={{ minRows: 2, maxRows: 6 }} />)
   } else if (card.type === 'brafteditor') {
@@ -115,24 +130,23 @@
       <Checkbox value="D">D</Checkbox>
     </Checkbox.Group>)
   } else if (card.type === 'hint') {
-    formItem = <div style={{marginTop: '10px', color: 'rgba(0, 0, 0, 0.85)', lineHeight: '1.5'}}>{card.message}</div>
+    formItem = <div style={{marginTop: '10px', color: 'rgba(0, 0, 0, 0.85)', lineHeight: '1.5', ...card.style}}>{card.message}</div>
   } else if (card.type === 'split') {
-    formItem = <div className="split-line">{card.label}</div>
+    formItem = <div className="split-line" style={card.style}>{card.label}</div>
   } else if (card.type === 'checkcard') {
     className += ' checkcard'
     formItem = <CheckCard config={card} />
   }
 
-  let _label = card.label
-  let colon = !!card.label
+  let _label = <span className="mk-form-label" style={card.style}>{card.label}</span>
+
   if (card.tooltip) {
-    _label = <span><QuestionCircleOutlined className="mk-form-tip" />{card.label}</span>
+    _label = <><QuestionCircleOutlined className="mk-form-tip" /><span className="mk-form-label" style={card.style}>{card.label}</span></>
   }
   if (card.type === 'brafteditor' && card.hidelabel === 'true') {
     _label = null
-    colon = false
-  } else if (card.type === 'hint') {
-    _label = _label || ' '
+  } else if (card.type === 'hint' && !card.label) {
+    _label = ' '
   }
 
   return (
@@ -140,6 +154,7 @@
       <div className="mk-popover-control">
         <EditOutlined className="edit" onClick={edit} />
         <CopyOutlined className="copy" onClick={copy} />
+        <FontColorsOutlined className="style" onClick={changeStyle} />
         <CloseOutlined className="close" onClick={close} />
       </div>
     } trigger="hover">
@@ -147,7 +162,7 @@
         <div ref={node => drag(drop(node))} onDoubleClick={edit}>
           {card.type === 'split' ? formItem : <Form.Item
             className={className}
-            colon={colon}
+            colon={false}
             label={_label}
             required={card.required === 'true'}
             extra={card.extra || null}
@@ -155,8 +170,9 @@
             wrapperCol={card.labelwidth ? {style: {width: (100 - card.labelwidth) + '%'}} : null}
           >
             {formItem}
+            <div></div>
             {showField ? <div className="field-name" style={card.writein === 'false' ? {color: 'orange'} : {}}>
-              {card.field}{card.hidden === 'true' ? '锛堥殣钘忥級' : ''}{card.readonly === 'true' ? '锛堝彧璇伙級' : ''}
+              {card.field}{card.hidden === 'true' || card.type === 'funcvar' ? '锛堥殣钘忥級' : ''}{card.readonly === 'true' ? '锛堝彧璇伙級' : ''}{card.linkField ? <span style={{color: '#1890ff'}}>{`锛堝叧鑱�${card.linkField}锛塦}</span> : ''}{card.supField ? <span style={{color: '#8E44AD'}}>{`锛堜笂绾�${card.supField}锛塦}</span> : ''}
             </div> : ''}
           </Form.Item>}
         </div>
diff --git a/src/templates/modalconfig/dragelement/index.jsx b/src/templates/modalconfig/dragelement/index.jsx
index 437fc2b..e0dc731 100644
--- a/src/templates/modalconfig/dragelement/index.jsx
+++ b/src/templates/modalconfig/dragelement/index.jsx
@@ -54,6 +54,13 @@
     let val = JSON.parse(JSON.stringify(_card))
     val.copyType = 'form'
 
+    delete val.$srcId
+    
+    let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+    if (srcid) {
+      val.$srcId = srcid
+    }
+
     oInput.value = window.btoa(window.encodeURIComponent(JSON.stringify(val)))
     document.body.appendChild(oInput)
     oInput.select()
diff --git a/src/templates/modalconfig/dragelement/index.scss b/src/templates/modalconfig/dragelement/index.scss
index 82c2213..50b59b2 100644
--- a/src/templates/modalconfig/dragelement/index.scss
+++ b/src/templates/modalconfig/dragelement/index.scss
@@ -33,6 +33,16 @@
       line-height: 1;
     }
   }
+  .mk-form-label::after {
+    content: ':';
+    position: relative;
+    top: -0.5px;
+    margin: 0 8px 0 2px;
+    text-decoration: none;
+  }
+  .ant-form-item-no-colon::after {
+    content: none!important;
+  }
   .ant-form-item {
     cursor: move;
     display: flex;
diff --git a/src/templates/modalconfig/index.jsx b/src/templates/modalconfig/index.jsx
index 6b01727..7e56c2c 100644
--- a/src/templates/modalconfig/index.jsx
+++ b/src/templates/modalconfig/index.jsx
@@ -20,6 +20,7 @@
 import asyncComponent from '@/utils/asyncComponent'
 import { BaseConfig, SearchItems } from './source'
 import { updateForm } from '@/utils/utils-update.js'
+import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
 const { Panel } = Collapse
@@ -28,6 +29,7 @@
 
 const Versions = asyncComponent(() => import('@/menu/versions'))
 const ReplaceField = asyncComponent(() => import('@/menu/replaceField'))
+const StyleController = asyncComponent(() => import('@/menu/stylecontroller'))
 const ModalForm = asyncComponent(() => import('@/templates/zshare/modalform'))
 const EditComponent = asyncComponent(() => import('@/templates/zshare/editcomponent'))
 const DragElement = asyncComponent(() => import('./dragelement'))
@@ -129,6 +131,7 @@
   }
 
   componentDidMount() {
+    MKEmitter.addListener('submitStyle', this.getStyle)
     document.onkeydown = (event) => {
       let e = event || window.event
       let keyCode = e.keyCode || e.which || e.charCode
@@ -161,6 +164,7 @@
    * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊
    */
   componentWillUnmount () {
+    MKEmitter.removeListener('submitStyle', this.getStyle)
     this.setState = () => {
       return
     }
@@ -187,6 +191,24 @@
     }
 
     this.props.handleView(param)
+  }
+
+  getStyle = (comIds, style) => {
+    const { config } = this.state
+
+    if (comIds[0] !== 'form') return
+
+    let Index = config.fields.findIndex(n => n.uuid === comIds[1])
+
+    if (Index === -1) return
+    
+    let _config = fromJS(config).toJS()
+
+    _config.fields[Index].style = style
+
+    this.setState({
+      config: _config
+    })
   }
 
   /**
@@ -362,6 +384,9 @@
         }
 
         if (item.uuid === res.uuid) {
+          if (item.style) {
+            res.style = item.style
+          }
           return res
         } else {
           return item
@@ -805,7 +830,7 @@
         <Modal
           title={dict['model.edit']}
           visible={this.state.visible}
-          width={850}
+          width={950}
           maskClosable={false}
           onCancel={this.editModalCancel}
           onOk={this.handleSubmit}
@@ -852,6 +877,7 @@
         >
           {dict['header.menu.config.placeholder']}
         </Modal>
+        <StyleController />
       </div>
     )
   }
diff --git a/src/templates/modalconfig/menuform/index.jsx b/src/templates/modalconfig/menuform/index.jsx
index aa09a7c..aa1b4bd 100644
--- a/src/templates/modalconfig/menuform/index.jsx
+++ b/src/templates/modalconfig/menuform/index.jsx
@@ -13,7 +13,7 @@
     const { getFieldDecorator } = this.props.form
     const fields = []
     this.props.formlist.forEach((item, index) => {
-      if (item.type === 'text') { // 鏂囨湰鎼滅储
+      if (item.type === 'text') {
         fields.push(
           <Col span={24} key={index}>
             <Form.Item label={item.label}>
diff --git a/src/templates/modalconfig/settingform/index.jsx b/src/templates/modalconfig/settingform/index.jsx
index 3b1efa7..f9abc14 100644
--- a/src/templates/modalconfig/settingform/index.jsx
+++ b/src/templates/modalconfig/settingform/index.jsx
@@ -182,7 +182,7 @@
               )}
             </Form.Item>
           </Col>
-          {appType !== 'mob' ? <Col span={12}>
+          <Col span={12}>
             <Form.Item label="鐐瑰嚮钂欏眰">
               {getFieldDecorator('clickouter', {
                 initialValue: config.setting.clickouter || 'unclose'
@@ -193,7 +193,7 @@
                 </Radio.Group>
               )}
             </Form.Item>
-          </Col> : null}
+          </Col>
           <Col span={12}>
             <Form.Item label={
               <Tooltip placement="topLeft" title="闇�瑕侀�氳繃鏁版嵁婧愭煡璇㈢殑閫夐」锛屾槸鍚︿娇鐢ㄧ紦瀛樸��">
diff --git a/src/templates/modalconfig/source.jsx b/src/templates/modalconfig/source.jsx
index 0f50944..deddd57 100644
--- a/src/templates/modalconfig/source.jsx
+++ b/src/templates/modalconfig/source.jsx
@@ -134,11 +134,11 @@
     label: CommonDict['model.form.datemonth'],
     subType: 'datemonth',
   },
-  {
-    type: 'form',
-    label: CommonDict['model.form.datetime'],
-    subType: 'datetime',
-  },
+  // {
+  //   type: 'form',
+  //   label: '鏃ユ湡锛堝垎/绉掞級',
+  //   subType: 'datetime',
+  // },
   {
     type: 'form',
     label: CommonDict['model.form.textarea'],
diff --git a/src/templates/sharecomponent/actioncomponent/actionform/index.jsx b/src/templates/sharecomponent/actioncomponent/actionform/index.jsx
index 2dae98e..d0ef468 100644
--- a/src/templates/sharecomponent/actioncomponent/actionform/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/actionform/index.jsx
@@ -13,8 +13,8 @@
 
 const { TextArea } = Input
 const actionTypeOptions = {
-  pop: ['label', 'position', 'OpenType', 'intertype', 'Ot', 'icon', 'class', 'execSuccess', 'execError', 'openmenu', 'output'],
-  prompt: ['label', 'position', 'OpenType', 'intertype', 'Ot', 'icon', 'class', 'execSuccess', 'execError', 'openmenu', 'output'],
+  pop: ['label', 'position', 'OpenType', 'intertype', 'Ot', 'icon', 'class', 'execSuccess', 'execError', 'openmenu', 'output', 'tipTitle'],
+  prompt: ['label', 'position', 'OpenType', 'intertype', 'Ot', 'icon', 'class', 'execSuccess', 'execError', 'openmenu', 'output', 'tipTitle'],
   exec: ['label', 'position', 'OpenType', 'intertype', 'Ot', 'icon', 'class', 'execSuccess', 'execError', 'openmenu', 'output'],
   excelIn: ['label', 'Ot', 'OpenType', 'intertype', 'icon', 'class', 'sheet', 'execSuccess', 'execError'],
   excelOut: ['label', 'OpenType', 'intertype', 'icon', 'class', 'execSuccess', 'execError', 'pagination', 'search'],
@@ -295,6 +295,9 @@
     if (this.record.control) {
       shows.push('controlField', 'controlVal')
     }
+    if (this.record.control === 'disabled') {
+      shows.push('reason')
+    }
 
     return {
       shows,
@@ -517,7 +520,7 @@
           { required: item.required, message: dict['form.required.input'] + item.label + '!' }
         ]
 
-        content = <InputNumber min={item.min} max={item.max} precision={item.precision} />
+        content = <InputNumber min={item.min} max={item.max} precision={item.precision} onPressEnter={this.handleSubmit}/>
       } else if (item.type === 'select') {
         rules = [
           { required: item.required, message: dict['form.required.select'] + item.label + '!' }
diff --git a/src/templates/sharecomponent/actioncomponent/dragaction/index.jsx b/src/templates/sharecomponent/actioncomponent/dragaction/index.jsx
index ff79592..e98d0a5 100644
--- a/src/templates/sharecomponent/actioncomponent/dragaction/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/dragaction/index.jsx
@@ -64,6 +64,13 @@
     let _val = fromJS(copycard).toJS()
 
     try {
+      delete _val.$srcId
+    
+      let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+      if (srcid) {
+        _val.$srcId = srcid
+      }
+      
       _val.uuid = Utils.getuuid()
       _val = window.btoa(window.encodeURIComponent(JSON.stringify(_val)))
     } catch (e) {
diff --git a/src/templates/sharecomponent/actioncomponent/index.jsx b/src/templates/sharecomponent/actioncomponent/index.jsx
index b1ff516..8a0a704 100644
--- a/src/templates/sharecomponent/actioncomponent/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/index.jsx
@@ -906,7 +906,7 @@
           wrapClassName="model-table-action-verify-modal"
           title={(card && card.label ? card.label + ' - ' : '') + '楠岃瘉淇℃伅'}
           visible={profVisible}
-          width={'75vw'}
+          width={'90vw'}
           maskClosable={false}
           okText={dict['model.submit']}
           onOk={this.verifySubmit}
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.jsx
index 1389b88..f89a973 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelin/customscript/index.jsx
@@ -44,7 +44,13 @@
 
     fields.push('jskey')
 
-    let _sql = `Declare @${btn.sheet} table (${columns.map(item => item.Column + ' ' + item.type).join(',')},jskey nvarchar(50) )
+    let _dec = columns.map(item => item.Column + ' ' + item.type).join(',')
+
+    if (_dec) {
+      _dec += ','
+    }
+
+    let _sql = `Declare @${btn.sheet} table (${_dec}jskey nvarchar(50) )
       Declare @UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(50),@mk_organization nvarchar(50),@login_city nvarchar(50),@ErrorCode nvarchar(50), @retmsg nvarchar(4000),@tbid Nvarchar(512)
       Select @ErrorCode='', @retmsg=''
     `
@@ -315,6 +321,9 @@
                 <Select.Option key="default" value={'default'}>
                   榛樿sql
                 </Select.Option>
+                <Select.Option key="debugger" value={`z_debug: select @ErrorCode='E',@retmsg='娴嬭瘯鏂偣' goto aaa`}>
+                  娴嬭瘯鏂偣
+                </Select.Option>
                 {systemScripts.map((option, i) =>
                   <Select.Option key={i} value={option.value}>
                     {option.name}
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx
index c2bf0ab..86c254e 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx
@@ -12,6 +12,7 @@
 import ColumnForm from './columnform'
 import CustomScript from './customscript'
 import asyncComponent from '@/utils/asyncComponent'
+import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
 const { TabPane } = Tabs
@@ -174,12 +175,12 @@
         render: (text) => {
           let title = text.match(/^\s*\/\*.+\*\//)
           title = title && title[0] ? title[0] : ''
-          text = title ? text.replace(title, '') : text
+          let _text = title ? text.replace(title, '') : text
 
           return (
             <div>
-              {title ? <span style={{color: '#a50'}}>{title}</span> : null}
-              <Paragraph copyable ellipsis={{ rows: 4, expandable: true }}>{text}</Paragraph>
+              {title ? <span style={{color: '#a50'}}>{title}<span style={{fontSize: '12px', marginLeft: '5px'}}>{_text.length}</span></span> : null}
+              <Paragraph copyable={{ text: text }} ellipsis={{ rows: 4, expandable: true }}>{_text}</Paragraph>
             </div>
           )
         }
@@ -518,6 +519,8 @@
       verify.scripts.push(values)
     }
 
+    MKEmitter.emit('editLineId', values.uuid)
+
     this.setState({
       verify: verify
     })
@@ -734,7 +737,7 @@
 
     return (
       <div id="verify-excel-box-tab">
-        <Tabs activeKey={activeKey} className="verify-card-box" onChange={this.tabchange}>
+        <Tabs activeKey={activeKey} className="excelin-verify-card-box" onChange={this.tabchange}>
           <TabPane tab="鍩虹楠岃瘉" key="basemsg">
             <Form {...formItemLayout}>
               <Row gutter={24}>
@@ -797,7 +800,7 @@
             </span>
           } key="unique">
             <UniqueForm fields={verify.columns} dict={this.props.dict} uniqueChange={this.uniqueChange}/>
-            <EditTable actions={['edit', 'move', 'del']} data={verify.uniques} columns={uniqueColumns} onChange={this.changeUniques}/>
+            <EditTable actions={['edit', 'move', 'del', 'status']} data={verify.uniques} columns={uniqueColumns} onChange={this.changeUniques}/>
           </TabPane> : null}
           {card.intertype === 'system' ? <TabPane tab={
             <span>
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.scss b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.scss
index 0b2c26b..604f0a8 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.scss
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.scss
@@ -1,4 +1,4 @@
-.verify-card-box {
+.excelin-verify-card-box {
   .ant-tabs-nav-scroll {
     text-align: center;
   }
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
index 72cc3a2..a8e0200 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
@@ -49,16 +49,16 @@
         min: 5,
         max: 200,
         editable: true,
-        width: '20%',
+        width: '14%',
         render: (text) => text || 20
       },
       {
         title: '绫诲瀷',
         dataIndex: 'type',
-        inputType: 'select',
+        inputType: 'radio',
         editable: true,
         required: false,
-        width: '20%',
+        width: '18%',
         render: (text) => {
           if (text === 'image') {
             return '鍥剧墖'
@@ -74,12 +74,31 @@
       {
         title: '鍙栫粷瀵瑰��',
         dataIndex: 'abs',
-        inputType: 'select',
+        inputType: 'radio',
         editable: true,
         required: false,
-        width: '20%',
+        width: '14%',
         render: (text) => {
           if (text === 'true') {
+            return '鏄�'
+          } else {
+            return '鍚�'
+          }
+        },
+        options: [
+          {value: 'true', text: '鏄�'},
+          {value: 'false', text: '鍚�'}
+        ]
+      },
+      {
+        title: '瀵煎嚭',
+        dataIndex: 'output',
+        inputType: 'radio',
+        editable: true,
+        required: false,
+        width: '14%',
+        render: (text) => {
+          if (text !== 'false') {
             return '鏄�'
           } else {
             return '鍚�'
@@ -107,9 +126,10 @@
     if (card.intertype !== 'system') {
       _verify.enable = 'false'
     }
-    if (_verify.columns[0] && !_verify.columns[0].type) {
+    if (_verify.columns[0] && (!_verify.columns[0].type || !_verify.columns[0].output)) {
       _verify.columns = _verify.columns.map(col => {
         col.type = col.type || 'text'
+        col.output = col.output || 'true'
         return col
       })
     }
@@ -192,6 +212,7 @@
     }
     values.uuid = Utils.getuuid()
     values.abs = 'false'
+    values.output = 'true'
     verify.columns.push(values)
 
     this.setState({
@@ -398,6 +419,7 @@
         Text: item.label,
         Width: 20,
         abs: 'false',
+        output: 'true',
         type: 'text',
         uuid: Utils.getuuid()
       })
@@ -437,6 +459,7 @@
           Text: col.Text,
           Width: 20,
           abs: 'false',
+          output: 'true',
           type: 'text',
         }
 
@@ -464,7 +487,7 @@
 
     return (
       <div id="verify-excelout-box-tab">
-        <Tabs defaultActiveKey="1" className="verify-card-box" onChange={this.tabchange}>
+        <Tabs defaultActiveKey="1" className="excelout-verify-card-box" onChange={this.tabchange}>
           <TabPane tab={
             <span>
               Excel瀵煎嚭鍒�
diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.scss b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.scss
index d44185c..e0e7581 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.scss
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.scss
@@ -1,4 +1,4 @@
-.verify-card-box {
+.excelout-verify-card-box {
   .ant-tabs-nav-scroll {
     text-align: center;
   }
@@ -78,4 +78,9 @@
       z-index: 1;
     }
   }
+  .modal-edit-table {
+    .ant-radio-group {
+      width: 50px;
+    }
+  }
 }
\ No newline at end of file
diff --git a/src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx b/src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx
index eb1f155..0c9ffd3 100644
--- a/src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx
+++ b/src/templates/sharecomponent/chartgroupcomponent/chartform/index.jsx
@@ -294,7 +294,7 @@
     this.state.formlist.forEach((item, index) => {
       if (item.hidden) return
       
-      if (item.type === 'text') { // 鏂囨湰鎼滅储
+      if (item.type === 'text') {
         fields.push(
           <Col span={12} key={index}>
             <Form.Item label={item.tooltip ?
diff --git a/src/templates/sharecomponent/columncomponent/columnform/index.jsx b/src/templates/sharecomponent/columncomponent/columnform/index.jsx
index 2991a73..a69897e 100644
--- a/src/templates/sharecomponent/columncomponent/columnform/index.jsx
+++ b/src/templates/sharecomponent/columncomponent/columnform/index.jsx
@@ -141,7 +141,7 @@
     this.state.formlist.forEach((item, index) => {
       if (item.hidden) return
 
-      if (item.type === 'text') { // 鏂囨湰鎼滅储
+      if (item.type === 'text') {
         let rules = []
         if (item.key === 'field' || item.key === 'nameField') {
           rules = [{
@@ -178,7 +178,7 @@
             </Form.Item>
           </Col>
         )
-      } else if (item.type === 'textarea') { // 鏂囨湰鎼滅储
+      } else if (item.type === 'textarea') {
         fields.push(
           <Col span={24} key={index} className="textarea">
             <Form.Item label={item.tooltip ?
diff --git a/src/templates/sharecomponent/columncomponent/dragcolumn/card.jsx b/src/templates/sharecomponent/columncomponent/dragcolumn/card.jsx
index 91ff3d3..41c0125 100644
--- a/src/templates/sharecomponent/columncomponent/dragcolumn/card.jsx
+++ b/src/templates/sharecomponent/columncomponent/dragcolumn/card.jsx
@@ -53,6 +53,7 @@
               <div className="ant-table-column-fields">
                 <span className="ant-table-column-title">{card.type === 'colspan' ? card.subfield : card.field}</span>
                 {card.Hide === 'true' ? <CloseCircleOutlined style={{marginLeft: '5px', color: 'orange', fontSize: '12px'}}/> : null}
+                {['text', 'number'].includes(card.type) && card.marks && card.marks.length ? <AntDesignOutlined style={{marginLeft: '5px', color: 'purple', fontSize: '12px'}}/> : null}
               </div> : null
             }
           </span>
diff --git a/src/templates/sharecomponent/columncomponent/dragcolumn/index.jsx b/src/templates/sharecomponent/columncomponent/dragcolumn/index.jsx
index c364c6d..267c6c4 100644
--- a/src/templates/sharecomponent/columncomponent/dragcolumn/index.jsx
+++ b/src/templates/sharecomponent/columncomponent/dragcolumn/index.jsx
@@ -131,6 +131,23 @@
           {i === 0 && column.length > 0 && setting.tableType === 'radio' ?
             <div className="page-card" style={{flex: 60}}></div> : null
           }
+          {i === 0 && gridBtn && gridBtn.display && gridBtn.position === 'left' ?
+            <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
+              <div className="mk-popover-control">
+                <EditOutlined className="edit" onClick={handleGridBtn}/>
+              </div>
+            } trigger="hover">
+              <div className="page-card" style={{flex: gridBtn.Width}}>
+                <div style={{cursor: 'default'}}>
+                  <span className="ant-table-header-column">
+                    <div className="ant-table-column-sorters" title={gridBtn.label} style={{textAlign: gridBtn.Align}}>
+                      <span className="ant-table-column-title">{gridBtn.label}</span>
+                    </div>
+                  </span>
+                </div>
+              </div>
+            </Popover> : null
+          }
           {column.map(card => (
             <Card
               key={card.uuid}
@@ -144,7 +161,7 @@
               findCard={findCard}
             />
           ))}
-          {i === (columns.length - 1) && gridBtn && gridBtn.display ?
+          {i === (columns.length - 1) && gridBtn && gridBtn.display && gridBtn.position !== 'left' ?
             <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
               <div className="mk-popover-control">
                 <EditOutlined className="edit" onClick={handleGridBtn}/>
diff --git a/src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx b/src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx
index 6d701af..9fa3613 100644
--- a/src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx
+++ b/src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx
@@ -21,7 +21,7 @@
         required: true
       },
       {
-        type: 'select',
+        type: 'radio',
         key: 'Align',
         label: this.props.dict['model.form.align'],
         initVal: this.props.card.Align,
@@ -44,6 +44,20 @@
         label: this.props.dict['model.form.columnWidth'],
         initVal: this.props.card.Width,
         required: true
+      },
+      {
+        type: 'radio',
+        key: 'position',
+        label: '鏄剧ず浣嶇疆',
+        initVal: this.props.card.position || 'right',
+        required: true,
+        options: [{
+          MenuID: 'left',
+          text: '宸︿晶'
+        }, {
+          MenuID: 'right',
+          text: '鍙充晶'
+        }]
       }
     ]
   }
@@ -60,7 +74,7 @@
     const { getFieldDecorator } = this.props.form
     const fields = []
     this.state.formlist.forEach((item, index) => {
-      if (item.type === 'text') { // 鏂囨湰鎼滅储
+      if (item.type === 'text') {
         fields.push(
           <Col span={12} key={index}>
             <Form.Item label={item.label}>
@@ -80,7 +94,7 @@
             </Form.Item>
           </Col>
         )
-      } else if (item.type === 'number') { // 鏂囨湰鎼滅储
+      } else if (item.type === 'number') {
         fields.push(
           <Col span={12} key={index}>
             <Form.Item label={item.label}>
diff --git a/src/templates/sharecomponent/columncomponent/index.jsx b/src/templates/sharecomponent/columncomponent/index.jsx
index 2648a81..4d1dd74 100644
--- a/src/templates/sharecomponent/columncomponent/index.jsx
+++ b/src/templates/sharecomponent/columncomponent/index.jsx
@@ -377,6 +377,11 @@
       columns: columnlist
     }
 
+    let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+    if (srcid) {
+      val.$srcId = srcid
+    }
+
     oInput.value = window.btoa(window.encodeURIComponent(JSON.stringify(val)))
     document.body.appendChild(oInput)
     oInput.select()
diff --git a/src/templates/sharecomponent/searchcomponent/dragsearch/card.jsx b/src/templates/sharecomponent/searchcomponent/dragsearch/card.jsx
index e8f7af2..6183e23 100644
--- a/src/templates/sharecomponent/searchcomponent/dragsearch/card.jsx
+++ b/src/templates/sharecomponent/searchcomponent/dragsearch/card.jsx
@@ -76,13 +76,31 @@
   } else if (card.type === 'multiselect' || card.type === 'select' || card.type === 'link') {
     formItem = (<Select value={_defaultValue}></Select>)
   } else if (card.type === 'date') {
-    formItem = (<DatePicker value={card.initval ? moment().subtract(card.initval, 'days') : null} />)
+    let format = 'YYYY-MM-DD'
+    if (card.precision === 'hour') {
+      format = 'YYYY-MM-DD HH'
+    } else if (card.precision === 'minute') {
+      format = 'YYYY-MM-DD HH:mm'
+    } else if (card.precision === 'second') {
+      format = 'YYYY-MM-DD HH:mm:ss'
+    }
+    formItem = (<DatePicker format={format} value={card.initval ? moment().subtract(card.initval, 'days') : null} />)
   } else if (card.type === 'dateweek') {
     formItem = (<WeekPicker value={card.initval ? moment().subtract(card.initval * 7, 'days') : null} />)
   } else if (card.type === 'datemonth') {
     formItem = (<MonthPicker value={card.initval ? moment().subtract(card.initval, 'month') : null} />)
   } else if (card.type === 'daterange') {
+    let format = 'YYYY-MM-DD'
+    if (card.precision === 'hour') {
+      format = 'YYYY-MM-DD HH'
+    } else if (card.precision === 'minute') {
+      format = 'YYYY-MM-DD HH:mm'
+    } else if (card.precision === 'second') {
+      format = 'YYYY-MM-DD HH:mm:ss'
+    }
+
     formItem = (<RangePicker
+      format={format}
       className="data-range"
       placeholder={['BeginTime', 'EndTime']}
       renderExtraFooter={() => 'extra footer'}
@@ -93,6 +111,11 @@
   } else if (card.type === 'checkcard') {
     type = 'checkcard'
     formItem = <CheckCard config={card} />
+  }
+
+  let labelwidth = card.labelwidth || 33.3
+  if (card.labelShow === 'false') {
+    labelwidth = 0
   }
 
   return (
@@ -106,8 +129,10 @@
       <div className={'page-card ' + (card.labelShow || '') + ' ' + type} style={{ opacity: opacity}}>
         <div ref={node => drag(drop(node))} onDoubleClick={() => editCard(id)}>
           <Form.Item
-            labelCol={{xs: { span: 24 }, sm: { span: 8 }}}
-            wrapperCol = {{xs: { span: 24 }, sm: { span: 16 }}}
+            labelCol={{style: {width: labelwidth + '%'}}}
+            wrapperCol={{style: {width: (100 - labelwidth) + '%'}}}
+            // labelCol={{xs: { span: 24 }, sm: { span: 8 }}}
+            // wrapperCol = {{xs: { span: 24 }, sm: { span: 16 }}}
             label={card.labelShow !== 'false' ? card.label : ''}
             required={card.required === 'true'}
             help={showField ? card.field + (card.datefield ? ', ' + card.datefield : '') : ''}
diff --git a/src/templates/sharecomponent/searchcomponent/dragsearch/index.jsx b/src/templates/sharecomponent/searchcomponent/dragsearch/index.jsx
index 504ef5f..c0907c6 100644
--- a/src/templates/sharecomponent/searchcomponent/dragsearch/index.jsx
+++ b/src/templates/sharecomponent/searchcomponent/dragsearch/index.jsx
@@ -50,6 +50,13 @@
     let _val = fromJS(copycard).toJS()
 
     try {
+      delete _val.$srcId
+
+      let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+      if (srcid) {
+        _val.$srcId = srcid
+      }
+
       _val.uuid = Utils.getuuid()
       _val = window.btoa(window.encodeURIComponent(JSON.stringify(_val)))
     } catch (e) {
diff --git a/src/templates/sharecomponent/searchcomponent/index.scss b/src/templates/sharecomponent/searchcomponent/index.scss
index e8da957..74c00ca 100644
--- a/src/templates/sharecomponent/searchcomponent/index.scss
+++ b/src/templates/sharecomponent/searchcomponent/index.scss
@@ -15,10 +15,11 @@
   }
   > .ant-row {
     min-height: 65px;
+    >.ant-col {
+      padding: 0 12px!important;
+    }
   }
-  .ant-row .ant-col-6 {
-    padding: 0 12px!important;
-  }
+  
   .ant-row.ant-form-item .ant-col {
     padding: 0;
   }
@@ -30,7 +31,11 @@
     height: 55px;
     .ant-form-item {
       margin-bottom: 0px;
+      .ant-form-item-label {
+        float: left;
+      }
       .ant-form-item-control-wrapper {
+        float: left;
         .ant-select {
           width: 100%;
           margin-top: 4px;
diff --git a/src/templates/sharecomponent/searchcomponent/searchform/index.jsx b/src/templates/sharecomponent/searchcomponent/searchform/index.jsx
index ced101f..2b3e7fd 100644
--- a/src/templates/sharecomponent/searchcomponent/searchform/index.jsx
+++ b/src/templates/sharecomponent/searchcomponent/searchform/index.jsx
@@ -94,17 +94,17 @@
 ]
 
 const searchTypeOptions = {
-  text: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'inputType', 'advanced', 'query'],
-  select: ['label', 'field', 'resourceType', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'setAll', 'dropdown', 'query'],
-  multiselect: ['label', 'field', 'resourceType', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'query'],
-  link: ['label', 'field', 'resourceType', 'initval', 'type', 'linkField', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'setAll', 'dropdown', 'query'],
-  date: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'query'],
-  checkcard: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'resourceType', 'display', 'width', 'multiple', 'borderColor', 'required', 'Hide', 'labelShow', 'advanced', 'query'],
-  dateweek: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'query'],
-  datemonth: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'query'],
-  daterange: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'query'],
-  group: ['label', 'type', 'field', 'datefield', 'initval', 'blacklist', 'ratio', 'items', 'required', 'labelShow', 'query'],
-  range: ['label', 'type', 'field', 'initval', 'match', 'blacklist', 'Hide', 'required', 'maxValue', 'minValue', 'step', 'labelShow', 'query']
+  text: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'inputType', 'advanced', 'query', 'labelwidth'],
+  select: ['label', 'field', 'resourceType', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'setAll', 'dropdown', 'query', 'labelwidth'],
+  multiselect: ['label', 'field', 'resourceType', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'query', 'labelwidth'],
+  link: ['label', 'field', 'resourceType', 'initval', 'type', 'linkField', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'setAll', 'dropdown', 'query', 'labelwidth'],
+  date: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'query', 'precision', 'labelwidth'],
+  checkcard: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'resourceType', 'display', 'width', 'multiple', 'required', 'Hide', 'labelShow', 'advanced', 'query', 'labelwidth'],
+  dateweek: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'query', 'labelwidth'],
+  datemonth: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'query', 'labelwidth'],
+  daterange: ['label', 'field', 'initval', 'type', 'match', 'ratio', 'blacklist', 'required', 'Hide', 'labelShow', 'advanced', 'query', 'precision', 'labelwidth'],
+  group: ['label', 'type', 'field', 'datefield', 'initval', 'blacklist', 'ratio', 'items', 'required', 'labelShow', 'query', 'labelwidth'],
+  range: ['label', 'type', 'field', 'initval', 'match', 'blacklist', 'Hide', 'required', 'maxValue', 'minValue', 'step', 'labelShow', 'query', 'labelwidth']
 }
 
 class MainSearch extends Component {
@@ -197,9 +197,9 @@
         }
       } else {
         if (this.record.resourceType === '0') {        // 鑷畾涔夎祫婧�
-          shows.push('options', 'fields', 'backgroundColor')
+          shows.push('options', 'fields', 'backgroundColor', 'borderColor')
         } else if (this.record.resourceType === '1') { // 鏁版嵁婧�
-          shows.push('dataSource', 'cardValField', 'fields', 'orderBy', 'orderType', 'database', 'backgroundColor')
+          shows.push('dataSource', 'cardValField', 'fields', 'orderBy', 'orderType', 'database', 'backgroundColor', 'borderColor')
         }
       }
       shows.push('linkField')
@@ -257,6 +257,7 @@
   }
 
   optionChange = (key, value) => {
+    let oriType = this.record.type
     this.record[key] = value
     let _fieldval = {}
 
@@ -281,6 +282,9 @@
       if (value === 'checkcard') {
         this.record.multiple = 'false'
         _fieldval.multiple = 'false'
+        _fieldval.ratio = 24
+      } else if (oriType === 'checkcard') {
+        _fieldval.ratio = 6
       }
 
       if (this.record.options.length > 0) {
@@ -385,6 +389,36 @@
     }
   }
 
+  handleEmpty = () => {
+    let field = this.props.form.getFieldValue('valueField')
+
+    if (!field) {
+      notification.warning({
+        top: 92,
+        message: '璇峰~鍐欏�悸峰瓧娈点��',
+        duration: 5
+      })
+      return
+    }
+
+    let text = this.props.form.getFieldValue('valueText')
+
+    if (!text) {
+      notification.warning({
+        top: 92,
+        message: '璇峰~鍐欐枃鏈峰瓧娈点��',
+        duration: 5
+      })
+      return
+    }
+
+    let resource = this.props.form.getFieldValue('dataSource') || ''
+
+    resource = `select '' as ${field},'鍏ㄩ儴' as ${text} union all \n${resource}`
+
+    this.props.form.setFieldsValue({dataSource: resource})
+  }
+
   getFields() {
     const { getFieldDecorator } = this.props.form
     const { dict } = this.props
@@ -398,9 +432,10 @@
       let rules = []
       let className = ''
       let content = null
+      let extra = null
       let initVal = item.initVal || ''
 
-      if (item.type === 'text') { // 鏂囨湰鎼滅储
+      if (item.type === 'text') {
         let type = this.record.type
         rules = [
           { required: item.required, message: dict['form.required.input'] + item.label + '!' }
@@ -428,7 +463,7 @@
         initVal = item.initVal
 
         if (item.max) {
-          content = <InputNumber min={item.min} max={item.max} precision={0} onPressEnter={this.handleSubmit}/>
+          content = <InputNumber min={item.min} max={item.max} precision={item.precision || 0} onPressEnter={this.handleSubmit}/>
         } else {
           content = <InputNumber onPressEnter={this.handleSubmit}/>
         }
@@ -440,7 +475,7 @@
         content = <Select
           showSearch
           allowClear={item.allowClear === true}
-          filterOption={(input, option) => option.props.children[2].toLowerCase().indexOf(input.toLowerCase()) >= 0}
+          filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
           onChange={(value) => {this.optionChange(item.key, value)}}
           getPopupContainer={() => document.getElementById('commontable-search-form-box')}
         >
@@ -462,12 +497,16 @@
             )
           })}
         </Radio.Group>
-      } else if (item.type === 'textarea') {
+      } else if (item.type === 'codemirror') {
         rules = [
           { required: item.required, message: dict['form.required.input'] + item.label + '!' }
         ]
         span = 24
         className = 'text-area'
+
+        if (this.record.type === 'select' || this.record.type === 'link') {
+          extra = <span className="add-resource-empty" onClick={this.handleEmpty}>鍏ㄩ儴</span>
+        }
 
         content = <CodeMirror />
       } else if (item.type === 'options') {
@@ -477,7 +516,7 @@
         let type = this.record.type
         
         if (type !== 'checkcard') {
-          content = <EditTable type={type} transfield={{}} linkSubFields={[]} onChange={this.changeOptions}/>
+          content = <EditTable type={type} module="search" transfield={{}} linkSubFields={[]} onChange={this.changeOptions}/>
         } else {
           if (this.record.linkField) {
             type = 'link'
@@ -514,7 +553,7 @@
 
       fields.push(
         <Col span={span} key={index}>
-          <Form.Item className={className} label={item.tooltip ?
+          <Form.Item className={className} extra={extra} label={item.tooltip ?
             <Tooltip placement="topLeft" title={item.tooltip}>
               <QuestionCircleOutlined className="mk-form-tip" />
               {item.label}
diff --git a/src/templates/sharecomponent/searchcomponent/searchform/index.scss b/src/templates/sharecomponent/searchcomponent/searchform/index.scss
index 4624854..b1ed736 100644
--- a/src/templates/sharecomponent/searchcomponent/searchform/index.scss
+++ b/src/templates/sharecomponent/searchcomponent/searchform/index.scss
@@ -32,4 +32,16 @@
       }
     }
   }
+  .ant-form-extra {
+    padding-top: 0px;
+    min-height: 0px;
+  }
+  .add-resource-empty {
+    position: absolute;
+    right: 10px;
+    top: -25px;
+    color: #1890ff;
+    cursor: pointer;
+    font-size: 14px;
+  }
 }
\ No newline at end of file
diff --git a/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx b/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx
index e853a54..221db3c 100644
--- a/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx
+++ b/src/templates/sharecomponent/settingcomponent/settingform/datasource/index.jsx
@@ -700,7 +700,7 @@
             </Col>
             {tableType !== '' ? <Col span={12}>
               <Form.Item label={
-                <Tooltip placement="topLeft" title="鍦ㄥ惎鐢ㄦ棤浜哄�煎畧鍔熻兘鏃舵棤鏁堛��">
+                <Tooltip placement="topLeft" title="褰撴寜閽墽琛屽畬鎴愬苟杩斿洖涓婚敭鍊兼椂锛岄粯璁ら�変腑涓婚敭鍊煎搴旇銆傛敞锛氬湪鍚敤鏃犱汉鍊煎畧鍔熻兘鏃舵棤鏁堛��">
                   <QuestionCircleOutlined className="mk-form-tip" />
                   棣栬閫変腑
                 </Tooltip>
diff --git a/src/templates/sharecomponent/settingcomponent/settingform/index.jsx b/src/templates/sharecomponent/settingcomponent/settingform/index.jsx
index 2be5f9a..0ad95b9 100644
--- a/src/templates/sharecomponent/settingcomponent/settingform/index.jsx
+++ b/src/templates/sharecomponent/settingcomponent/settingform/index.jsx
@@ -477,7 +477,7 @@
     return (
       <div className="model-table-setting-form-box" id="model-setting-form-body">
         {loading && <Spin size="large" />}
-        <Tabs activeKey={activeKey} className="verify-card-box" onChange={this.changeTab}>
+        <Tabs activeKey={activeKey} onChange={this.changeTab}>
           <TabPane tab="鏁版嵁婧�" key="setting">
             <DataSource
               menu={menu}
diff --git a/src/templates/sharecomponent/settingcomponent/settingform/simplescript/index.jsx b/src/templates/sharecomponent/settingcomponent/settingform/simplescript/index.jsx
index 44a3d6f..61ac6e4 100644
--- a/src/templates/sharecomponent/settingcomponent/settingform/simplescript/index.jsx
+++ b/src/templates/sharecomponent/settingcomponent/settingform/simplescript/index.jsx
@@ -40,12 +40,12 @@
         render: (text) => {
           let title = text.match(/^\s*\/\*.+\*\//)
           title = title && title[0] ? title[0] : ''
-          text = title ? text.replace(title, '') : text
+          let _text = title ? text.replace(title, '') : text
 
           return (
             <div>
-              {title ? <span style={{color: '#a50'}}>{title}</span> : null}
-              <Paragraph copyable ellipsis={{ rows: 4, expandable: true }}>{text}</Paragraph>
+              {title ? <span style={{color: '#a50'}}>{title}<span style={{fontSize: '12px', marginLeft: '5px'}}>{_text.length}</span></span> : null}
+              <Paragraph copyable={{ text: text }} ellipsis={{ rows: 4, expandable: true }}>{_text}</Paragraph>
             </div>
           )
         }
diff --git a/src/templates/sharecomponent/tablecomponent/index.jsx b/src/templates/sharecomponent/tablecomponent/index.jsx
index 77ed37a..f2da2b6 100644
--- a/src/templates/sharecomponent/tablecomponent/index.jsx
+++ b/src/templates/sharecomponent/tablecomponent/index.jsx
@@ -287,16 +287,17 @@
           style={{ width: '100%' }}
           optionFilterProp="children"
           value="璇烽�夋嫨琛ㄥ悕"
-          onChange={this.onTableChange}
+          onSelect={this.onTableChange}
+          dropdownClassName="mk-tables"
           showArrow={false}
           getPopupContainer={() => containerId ? document.getElementById(containerId) : document.body}
           filterOption={(input, option) => {
-            return option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0 ||
-              option.props.value.toLowerCase().indexOf(input.toLowerCase()) >= 0
+            return option.props.children[0].toLowerCase().indexOf(input.toLowerCase()) >= 0 ||
+              option.props.children[2].toLowerCase().indexOf(input.toLowerCase()) >= 0
           }}
         > 
           {tables.map((table, index) => (
-            <Option key={index} title={table.TbName} value={table.TbName}>{table.Remark}</Option>
+            <Option key={index} title={table.TbName} value={table.TbName}>{table.Remark}<br/>{table.TbName}</Option>
           ))}
         </Select>
         {selectedTables.length > 0 && <List
diff --git a/src/templates/sharecomponent/treesettingcomponent/settingform/index.jsx b/src/templates/sharecomponent/treesettingcomponent/settingform/index.jsx
index 3f3d3a4..bb5ebe8 100644
--- a/src/templates/sharecomponent/treesettingcomponent/settingform/index.jsx
+++ b/src/templates/sharecomponent/treesettingcomponent/settingform/index.jsx
@@ -250,7 +250,7 @@
     return (
       <div className="model-tree-setting-form-box" id="model-setting-form-body">
         {loading && <Spin size="large" />}
-        <Tabs activeKey={activeKey} className="verify-card-box" onChange={this.changeTab}>
+        <Tabs activeKey={activeKey} onChange={this.changeTab}>
           <TabPane tab="鏁版嵁婧�" key="setting">
             <DataSource
               menu={menu}
diff --git a/src/templates/sharecomponent/treesettingcomponent/settingform/index.scss b/src/templates/sharecomponent/treesettingcomponent/settingform/index.scss
index f2570ad..7d2db84 100644
--- a/src/templates/sharecomponent/treesettingcomponent/settingform/index.scss
+++ b/src/templates/sharecomponent/treesettingcomponent/settingform/index.scss
@@ -47,7 +47,7 @@
     box-shadow: unset;
   }
 
-  .verify-card-box .ant-tabs-nav-scroll {
+  .ant-tabs-nav-scroll {
     text-align: center;
   }
 }
\ No newline at end of file
diff --git a/src/templates/zshare/customscript/index.jsx b/src/templates/zshare/customscript/index.jsx
index 4ddae3f..8daf4ab 100644
--- a/src/templates/zshare/customscript/index.jsx
+++ b/src/templates/zshare/customscript/index.jsx
@@ -9,6 +9,7 @@
 import Api from '@/api'
 import CodeMirror from '@/templates/zshare/codemirror'
 import asyncComponent from '@/utils/asyncComponent'
+import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
 const { Paragraph } = Typography
@@ -39,12 +40,12 @@
         render: (text) => {
           let title = text.match(/^\s*\/\*.+\*\//)
           title = title && title[0] ? title[0] : ''
-          text = title ? text.replace(title, '') : text
+          let _text = title ? text.replace(title, '') : text
 
           return (
             <div>
-              {title ? <span style={{color: '#a50'}}>{title}</span> : null}
-              <Paragraph copyable ellipsis={{ rows: 4, expandable: true }}>{text}</Paragraph>
+              {title ? <span style={{color: '#a50'}}>{title}<span style={{fontSize: '12px', marginLeft: '5px'}}>{_text.length}</span></span> : null}
+              <Paragraph copyable={{ text: text }} ellipsis={{ rows: 4, expandable: true }}>{_text}</Paragraph>
             </div>
           )
         }
@@ -260,6 +261,8 @@
         editItem: null
       })
 
+      MKEmitter.emit('editLineId', values.uuid)
+
       this.props.scriptsUpdate(_scripts)
       this.props.form.setFieldsValue({
         sql: ''
@@ -390,6 +393,9 @@
                   onChange={this.selectScript}
                 >
                   <Select.Option key="default" value={defaultSql}>榛樿sql</Select.Option>
+                  <Select.Option key="debugger" value={`z_debug: select @ErrorCode='E',@retmsg='娴嬭瘯鏂偣' goto aaa`}>
+                    娴嬭瘯鏂偣
+                  </Select.Option>
                   {systemScripts.map((option, i) =>
                     <Select.Option style={{whiteSpace: 'normal'}} key={i} value={option.value}>{option.name}</Select.Option>
                   )}
diff --git a/src/templates/zshare/editTable/index.jsx b/src/templates/zshare/editTable/index.jsx
index 347b021..ef0ff17 100644
--- a/src/templates/zshare/editTable/index.jsx
+++ b/src/templates/zshare/editTable/index.jsx
@@ -3,7 +3,7 @@
 import { is, fromJS } from 'immutable'
 import { DndProvider, DragSource, DropTarget } from 'react-dnd'
 import { Table, Input, InputNumber, Popconfirm, Form, Select, Radio, Cascader, notification, message, Modal, Typography } from 'antd'
-import { CopyOutlined, EditOutlined, DeleteOutlined, SnippetsOutlined } from '@ant-design/icons'
+import { CopyOutlined, EditOutlined, DeleteOutlined, SnippetsOutlined, SwapOutlined } from '@ant-design/icons'
 
 import Utils from '@/utils/utils.js'
 import ColorSketch from '@/mob/colorsketch'
@@ -12,6 +12,7 @@
 import CusSwitch from './cusSwitch'
 import zhCN from '@/locales/zh-CN/model.js'
 import enUS from '@/locales/en-US/model.js'
+import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
 const MkEditIcon = asyncComponent(() => import('@/components/mkIcon'))
@@ -110,10 +111,12 @@
       )
     } else if (inputType === 'radio') {
       return (
-        <Radio.Group>
+        <Radio.Group style={{whiteSpace: 'nowrap'}}>
           {options.map((item, i) => (<Radio key={i} value={item.field || item.value}> {item.label || item.text} </Radio>))}
         </Radio.Group>
       )
+    } else if (inputType === 'textarea') {
+      return <Input.TextArea autoSize={true} placeholder=""/>
     } else {
       return <Input onPressEnter={() => this.getValue(form)}/>
     }
@@ -131,7 +134,7 @@
 
   renderCell = (form) => {
     const { getFieldDecorator } = form
-    const { editing, dataIndex, title, record, children, className, required, inputType } = this.props
+    const { editing, dataIndex, title, record, children, className, required, inputType, rules } = this.props
 
     return (
       <td className={className}>
@@ -142,7 +145,8 @@
                 {
                   required: required,
                   message: ['number', 'text', 'input'].includes(inputType) ? `${eTDict['form.required.input']} ${title}!` : `${eTDict['form.required.select']} ${title}!`,
-                }
+                },
+                ...rules
               ],
               initialValue: inputType === 'multiStr' ? (record[dataIndex] ? record[dataIndex].split(',') : []) : record[dataIndex],
             })(this.getInput(form))}
@@ -171,6 +175,7 @@
     data: [],
     editingKey: '',
     visible: false,
+    editLineId: '',
     columns: []
   }
 
@@ -217,6 +222,7 @@
             <div className={'edit-operation-btn' + (editingKey !== '' ? ' disabled' : '')} style={{minWidth: '110px', whiteSpace: 'nowrap'}}>
               {actions.includes('edit') ? <span className="primary" onClick={() => {editingKey === '' && this.edit(record.uuid)}}><EditOutlined /></span> : null}
               {actions.includes('copy') ? <span className="copy" onClick={() => {editingKey === '' && this.copy(record)}}><CopyOutlined /></span> : null}
+              {actions.includes('status') ? <span className="status" onClick={() => {editingKey === '' && this.handleStatus(record)}}><SwapOutlined /></span> : null}
               {actions.includes('del') && editingKey === '' ? <Popconfirm
                 overlayClassName="popover-confirm"
                 title={eTDict['model.query.delete']}
@@ -270,6 +276,21 @@
     }
   }
 
+  componentDidMount () {
+    MKEmitter.addListener('editLineId', this.getEditLineId)
+  }
+
+  componentWillUnmount () {
+    this.setState = () => {
+      return
+    }
+    MKEmitter.removeListener('editLineId', this.getEditLineId)
+  }
+
+  getEditLineId = (id) => {
+    this.setState({ editLineId: id })
+  }
+
   isEditing = record => record.uuid === this.state.editingKey
 
   cancel = () => {
@@ -311,6 +332,11 @@
     }
 
     try {
+      let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+      if (srcid) {
+        msg.$srcId = srcid
+      }
+      
       msg = window.btoa(window.encodeURIComponent(JSON.stringify(msg)))
     } catch (e) {
       console.warn('Stringify Failure')
@@ -390,6 +416,22 @@
         })
       }
       message.success('绮樿创鎴愬姛銆�')
+    })
+  }
+
+  handleStatus = (record) => {
+    const { data } = this.state
+
+    record.status = record.status === 'false' ? 'true' : 'false'
+
+    let newData = data.map(item => {
+      if (record.uuid === item.uuid) return record
+
+      return item
+    })
+    
+    this.setState({ data: newData }, () => {
+      this.props.onChange(newData)
     })
   }
 
@@ -508,6 +550,7 @@
 
   render() {
     const { actions, indexShow } = this.props
+    const { editLineId } = this.state
 
     let components = {
       body: {
@@ -534,6 +577,7 @@
           inputType: col.inputType,
           dataIndex: col.dataIndex,
           options: col.options || [],
+          rules: col.rules || [],
           min: col.min || 0,
           max: col.max || 500,
           unlimit: col.unlimit,
@@ -570,7 +614,7 @@
               components={components}
               dataSource={data}
               columns={columns}
-              rowClassName="editable-row"
+              rowClassName={record => !editLineId || editLineId !== record.uuid ? 'editable-row' : 'editable-row active'}
               pagination={false}
               onRow={(record, index) => ({
                 index,
diff --git a/src/templates/zshare/editTable/index.scss b/src/templates/zshare/editTable/index.scss
index 954f3ab..7d83deb 100644
--- a/src/templates/zshare/editTable/index.scss
+++ b/src/templates/zshare/editTable/index.scss
@@ -19,6 +19,14 @@
     > td:last-child {
       padding: 0px;
     }
+    textarea.ant-input {
+      vertical-align: middle;
+    }
+  }
+  .editable-row.active {
+    td {
+      background-color: #bae7ff!important;
+    }
   }
   .mk-index {
     text-align: center;
@@ -31,7 +39,7 @@
   .edit-operation-btn {
     display: block;
     text-align: center;
-    span {
+    > span {
       margin-right: 10px;
       cursor: pointer;
       font-size: 16px;
@@ -42,6 +50,9 @@
     }
     .copy {
       color: #26C281;
+    }
+    .status {
+      color: #8E44AD;
     }
     .danger {
       color: #ff4d4f;
@@ -61,6 +72,9 @@
     .danger {
       color: rgba(0, 0, 0, .25);
     }
+    .status {
+      color: rgba(0, 0, 0, .25);
+    }
     .copy {
       color: rgba(0, 0, 0, .25);
     }
diff --git a/src/templates/zshare/formconfig.jsx b/src/templates/zshare/formconfig.jsx
index dfcd692..5761a1e 100644
--- a/src/templates/zshare/formconfig.jsx
+++ b/src/templates/zshare/formconfig.jsx
@@ -302,6 +302,14 @@
   let typeOptions = []
 
   if (appType === 'mob') {
+    // let adapters = sessionStorage.getItem('adapter')
+    // if (adapters) {
+    //   adapters = adapters.split(',')
+    // } else {
+    //   adapters = []
+    // }
+    // (adapters.includes('wxmini') ? '(灏忕▼搴忔殏涓嶆敮鎸�)' : '')
+
     typeOptions = [{
       value: 'range',
       text: '鏁板�硷紙鍖洪棿锛�'
@@ -318,6 +326,7 @@
     //   value: 'daterange',
     //   text: Formdict['model.form.daterange']
     }]
+
   } else {
     typeOptions = [{
       value: 'text',
@@ -506,7 +515,7 @@
       required: true
     },
     {
-      type: 'textarea',
+      type: 'codemirror',
       key: 'dataSource',
       label: Formdict['header.form.datasource'],
       initVal: card.dataSource || '',
@@ -650,6 +659,37 @@
       required: false
     },
     {
+      type: 'number',
+      key: 'labelwidth',
+      min: 1,
+      max: 100,
+      precision: 1,
+      label: '鍚嶇О瀹藉害',
+      initVal: card.labelwidth || 33.3,
+      tooltip: '鍚嶇О鍗犳嵁鎼滅储鏉′欢瀹藉害鐨勭櫨鍒嗘瘮銆傛敞锛氬瓨鍦ㄥ鍒楁悳绱㈡椂锛屽綋鍓嶆悳绱㈠鏋滄兂瑕佸崰鎹暣琛屽彲鍙傜収浠ヤ笅姣斾緥锛屼袱鍒楋紙16.5锛夈�佷笁鍒楋紙10.8锛夈�佸洓鍒楋紙8锛�',
+      required: true,
+      forbid: appType === 'mob'
+    },
+    {
+      type: 'radio',
+      key: 'precision',
+      label: '绮剧‘搴�',
+      initVal: card.precision || 'day',
+      options: [{
+        value: 'day',
+        text: '澶�'
+      }, {
+        value: 'hour',
+        text: '灏忔椂'
+      }, {
+        value: 'minute',
+        text: '鍒嗛挓'
+      }, {
+        value: 'second',
+        text: '绉�'
+      }]
+    },
+    {
       type: 'radio',
       key: 'required',
       label: Formdict['model.required'],
@@ -746,6 +786,7 @@
       key: 'advanced',
       label: '楂樼骇鎼滅储',
       initVal: card.advanced || 'false',
+      tooltip: '鍦ㄩ殣钘忔悳绱㈡寜閽椂锛岄珮绾ф悳绱㈡棤鏁堛��',
       forbid: appType === 'mob',
       options: [{
         value: 'true',
@@ -1177,18 +1218,18 @@
       type: refresh.length === 0 ? 'radio' : 'select',
       key: 'execSuccess',
       label: Formdict['model.form.afterSuccess'],
-      initVal: card.execSuccess || 'never',
+      initVal: card.execSuccess || 'grid',
       tooltip: '閫夋嫨鍒锋柊琛屾椂锛屽鏋滈�夋嫨澶氭潯鏁版嵁浼氬埛鏂拌〃鏍笺��',
       required: true,
       options: [{
         value: 'never',
         text: '涓嶅埛鏂�'
       }, {
-        value: 'grid',
-        text: '鍒锋柊琛ㄦ牸'
-      }, {
         value: 'line',
         text: '鍒锋柊琛�'
+      }, {
+        value: 'grid',
+        text: '鍒锋柊琛ㄦ牸'
       },
       ...refresh]
     },
@@ -1203,11 +1244,11 @@
         value: 'never',
         text: '涓嶅埛鏂�'
       }, {
-        value: 'grid',
-        text: '鍒锋柊琛ㄦ牸'
-      }, {
         value: 'line',
         text: '鍒锋柊琛�'
+      }, {
+        value: 'grid',
+        text: '鍒锋柊琛ㄦ牸'
       },
       ...refresh]
     },
@@ -1268,8 +1309,16 @@
       type: 'text',
       key: 'output',
       label: '杩斿洖鍊�',
-      tooltip: '鎵ц鎴愬姛鍚庣殑杩斿洖鍊笺��',
+      tooltip: '鎵ц鎴愬姛鍚庣殑杩斿洖鍊笺�備緥濡傦細@id',
       initVal: card.output || '',
+      required: false
+    },
+    {
+      type: 'text',
+      key: 'tipTitle',
+      label: '纭鎻愮ず',
+      initVal: card.tipTitle || '',
+      tooltip: '娉細寮圭獥锛堣〃鍗曪級鍦ㄦ樉绀轰负鏄惁妗嗘椂鏈夋晥銆�',
       required: false
     },
     {
@@ -1422,6 +1471,13 @@
       label: '鎺у埗鍊�',
       tooltip: '褰撻�夋嫨鎺у埗瀛楁锛屼笖瀛楁鍊间笌鎺у埗鍊肩浉绛夋椂锛屾寜閽細闅愯棌鎴栫鐢紝澶氫釜鍊肩敤閫楀彿鍒嗛殧銆�',
       initVal: card.controlVal || '',
+      required: false
+    },
+    {
+      type: 'text',
+      key: 'reason',
+      label: '绂佺敤鍘熷洜',
+      initVal: card.reason || '',
       required: false
     },
   ]
@@ -2260,9 +2316,9 @@
   }, {
     value: 'datemonth',
     text: Formdict['model.form.datemonth']
-  }, {
-    value: 'datetime',
-    text: Formdict['model.form.datetime']
+  // }, {
+  //   value: 'datetime',
+  //   text: '鏃ユ湡锛堝垎/绉掞級'
   }, {
     value: 'textarea',
     text: Formdict['model.form.textarea']
@@ -2325,9 +2381,9 @@
     }, {
       value: 'datemonth',
       text: Formdict['model.form.datemonth']
-    }, {
-      value: 'datetime',
-      text: Formdict['model.form.datetime']
+    // }, {
+    //   value: 'datetime',
+    //   text: '鏃ユ湡锛堝垎/绉掞級'
     }, {
       value: 'textarea',
       text: Formdict['model.form.textarea']
@@ -2343,6 +2399,9 @@
     }, {
       value: 'split',
       text: '鍒嗛殧绾�'
+    }, {
+      value: 'linkMain',
+      text: '鍏宠仈涓昏〃'
     }]
   }
 
@@ -2350,6 +2409,9 @@
     _fieldlength = 512
   } else if (['textarea', 'brafteditor'].includes(card.type)) {
     _fieldlength = 8000
+  } else if (card.type === 'datetime') {
+    card.type = 'date'
+    card.precision = 'second'
   }
 
   let options = card.options || []
@@ -2367,6 +2429,10 @@
     initval = card.initval === true
   } else if (card.type === 'number') {
     initval = card.initval || 0
+  }
+
+  if (appType === 'mob' && ![24, 12, 8, 6].includes(card.span)) {
+    card.span = 24
   }
 
   return [
@@ -2744,6 +2810,25 @@
       }]
     },
     {
+      type: 'radio',
+      key: 'precision',
+      label: '绮剧‘搴�',
+      initVal: card.precision || 'day',
+      options: [{
+        value: 'day',
+        text: '澶�'
+      }, {
+        value: 'hour',
+        text: '灏忔椂'
+      }, {
+        value: 'minute',
+        text: '鍒嗛挓'
+      }, {
+        value: 'second',
+        text: '绉�'
+      }]
+    },
+    {
       type: 'number',
       key: 'fieldlength',
       min: 1,
@@ -2752,7 +2837,7 @@
       label: Formdict['model.form.field'] + Formdict['model.length'],
       // tooltip: '鏂囨湰銆佷笅鎷夋銆佹棩鏈熺瓑瀛楁榛樿闀垮害涓�50锛屽琛屾枃鏈笌鏂囦欢涓婁紶瀛楁榛樿闀垮害涓�512',
       initVal: card.fieldlength || _fieldlength,
-      required: false
+      required: true
     },
     {
       type: 'number',
@@ -3063,7 +3148,7 @@
       type: 'radio',
       key: 'interception',
       label: '鎴彇绌烘牸',
-      initVal: card.interception || 'false',
+      initVal: card.interception || 'true',
       tooltip: '鎻愪氦鏃讹紝鏄惁鎴彇棣栧熬鐨勭┖鐧藉瓧绗︺��',
       options: [{
         value: 'true',
@@ -3155,6 +3240,46 @@
       forbid: appType === 'mob'
     },
     {
+      type: 'radio',
+      key: 'span',
+      label: '琛ㄥ崟瀹藉害',
+      initVal: card.span || 24,
+      tooltip: '鏍呮牸甯冨眬鏁磋24绛夊垎銆�',
+      required: true,
+      forbid: appType !== 'mob',
+      options: [{
+        value: 24,
+        text: 24
+      }, {
+        value: 12,
+        text: 12
+      }, {
+        value: 8,
+        text: 8
+      }, {
+        value: 6,
+        text: 6
+      }]
+    },
+    {
+      type: 'radio',
+      key: 'lenControl',
+      label: '闀垮害鎺у埗',
+      initVal: card.lenControl || 'limit',
+      tooltip: '鍦ㄨ缃瓧娈甸暱搴﹀悗锛屽闀垮害鐨勬帶鍒舵柟寮忋��',
+      required: false,
+      options: [{
+        value: 'limit',
+        text: '闄愬埗杈撳叆'
+      }, {
+        value: 'left',
+        text: '宸︽埅'
+      }, {
+        value: 'right',
+        text: '鍙虫埅'
+      }]
+    },
+    {
       type: 'number',
       key: 'labelwidth',
       min: 1,
@@ -3210,6 +3335,7 @@
     {
       type: 'text',
       key: 'supvalue',
+      max: 512,
       label: '鏄剧ず鍊�',
       tooltip: '璇峰~鍐欐樉绀哄�硷紝鍙湁涓婄骇琛ㄥ崟鍊间笌鏄剧ず鍊肩浉鍚屾椂锛岃琛ㄥ崟鎵嶄細鏄剧ず锛屾敞锛�1銆佸涓�肩敤閫楀彿鍒嗛殧锛�2銆佷笂绾ц〃鍗曞垵濮嬪�间负$first鏃舵殏鏈鐞嗐��',
       initVal: card.supvalue || '',
@@ -3233,6 +3359,22 @@
       initVal: card.extra || '',
       required: false,
       forbid: appType === 'mob'
+    },
+    {
+      type: 'radio',
+      key: 'enterReplace',
+      label: '鍥炶溅绗︽浛鎹�',
+      tooltip: '鍥炶溅绗︿細鏇挎崲涓鸿嫳鏂囬�楀彿銆�',
+      initVal: card.enterReplace || 'false',
+      required: false,
+      forbid: appType !== 'mob',
+      options: [{
+        value: 'false',
+        text: '鍚�'
+      }, {
+        value: 'true',
+        text: '鏄�'
+      }]
     },
     {
       type: 'text',
@@ -3288,7 +3430,7 @@
       key: 'marginTop',
       label: '涓婅竟璺濓紙px锛�',
       initVal: card.marginTop || 0,
-      min: 0,
+      min: -100,
       max: 1000,
       precision: 0,
       required: false,
@@ -3299,7 +3441,7 @@
       key: 'marginBottom',
       label: '涓嬭竟璺濓紙px锛�',
       initVal: card.marginBottom || 0,
-      min: 0,
+      min: -100,
       max: 1000,
       precision: 0,
       required: false,
diff --git a/src/templates/zshare/menuform/index.jsx b/src/templates/zshare/menuform/index.jsx
index 302ad7e..d6bd07f 100644
--- a/src/templates/zshare/menuform/index.jsx
+++ b/src/templates/zshare/menuform/index.jsx
@@ -44,7 +44,7 @@
     const { getFieldDecorator } = this.props.form
     const fields = []
     this.state.formlist.forEach((item, index) => {
-      if (item.type === 'text') { // 鏂囨湰鎼滅储
+      if (item.type === 'text') {
         fields.push(
           <Col span={24} key={index}>
             <Form.Item label={item.label}>
diff --git a/src/templates/zshare/modalform/datatable/index.jsx b/src/templates/zshare/modalform/datatable/index.jsx
index 2a361f8..ec8b5a1 100644
--- a/src/templates/zshare/modalform/datatable/index.jsx
+++ b/src/templates/zshare/modalform/datatable/index.jsx
@@ -2,8 +2,8 @@
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
 import { DndProvider, DragSource, DropTarget } from 'react-dnd'
-import { Table, Input, Popconfirm, Form, notification } from 'antd'
-import { PlusOutlined, EditOutlined, DeleteOutlined } from '@ant-design/icons'
+import { Table, Input, Popconfirm, Form, notification, message } from 'antd'
+import { PlusOutlined, EditOutlined, DeleteOutlined, SwapOutlined } from '@ant-design/icons'
 
 import Utils from '@/utils/utils.js'
 import FileUpload from '@/tabviews/zshare/fileupload'
@@ -118,14 +118,14 @@
     return (
       <td {...restProps}>
         {editing ? (
-          <Form.Item style={{ margin: 0 }}>
+          <Form.Item style={{ margin: '0 -5px 0 -5px' }}>
             {getFieldDecorator(dataIndex, {
-              rules: [
-                {
-                  required: dataIndex === '$value',
-                  message: `Please Input ${title}!`,
-                },
-              ],
+              // rules: [
+              //   {
+              //     required: dataIndex === '$value',
+              //     message: `Please Input ${title}!`,
+              //   },
+              // ],
               initialValue: _val,
             })(this.getInput(form))}
           </Form.Item>
@@ -258,6 +258,7 @@
         ) : (
           <div className={'operation-btn' + (editingKey !== '' ? ' disabled' : '')}>
             <span className="primary" onClick={() => {editingKey === '' && this.edit(record.key)}}><EditOutlined /></span>
+            <span className="hide-control" title="鏄剧ず/闅愯棌" onClick={() => {editingKey === '' && this.handleHide(record.key)}}><SwapOutlined /></span>
             {editingKey === '' ? <Popconfirm
               overlayClassName="popover-confirm"
               title={this.props.dict['model.query.delete']}
@@ -281,8 +282,20 @@
   }
 
   onSave = (record) => {
+    const { type } = this.props
     const newData = [...this.state.data]
     const index = newData.findIndex(item => record.key === item.key)
+
+    if (type === 'link') {
+      if (newData.filter(m => record.key !== m.key && record.$value === m.$value && record.ParentID === m.ParentID).length > 0) {
+        message.warning('鐩稿悓ParentID涓嬶紝姝alue鍊煎凡瀛樺湪锛�')
+      }
+    } else {
+      if (newData.filter(m => record.key !== m.key && record.$value === m.$value).length > 0) {
+        message.warning('姝alue鍊煎凡瀛樺湪锛�')
+      }
+    }
+
     if (index > -1) {
       newData.splice(index, 1, record)
       this.setState({ data: newData, editingKey: '' }, () => {
@@ -303,6 +316,8 @@
   }
 
   save(form, key) {
+    const { type } = this.props
+
     form.validateFields((error, row) => {
       if (error) {
         return;
@@ -310,6 +325,17 @@
 
       const newData = [...this.state.data]
       const index = newData.findIndex(item => key === item.key)
+
+      if (type === 'link') {
+        if (newData.filter(m => key !== m.key && row.$value === m.$value && row.ParentID === m.ParentID).length > 0) {
+          message.warning('鐩稿悓ParentID涓嬶紝姝alue鍊煎凡瀛樺湪锛�')
+        }
+      } else {
+        if (newData.filter(m => key !== m.key && row.$value === m.$value).length > 0) {
+          message.warning('姝alue鍊煎凡瀛樺湪锛�')
+        }
+      }
+
       if (index > -1) {
         const item = newData[index]
         newData.splice(index, 1, {
@@ -358,6 +384,20 @@
 
   edit(key) {
     this.setState({ editingKey: key })
+  }
+
+  handleHide = (key) => {
+    let _data = this.state.data.map(item => {
+      if (item.key === key) {
+        item.Hide = !item.Hide
+      }
+      return item
+    })
+    this.setState({
+      data: _data
+    }, () => {
+      this.props.onChange(_data)
+    })
   }
 
   moveRow = (dragIndex, hoverIndex) => {
@@ -418,7 +458,7 @@
               rowKey="key"
               dataSource={this.state.data}
               columns={columns}
-              rowClassName="editable-row"
+              rowClassName={(record) => record.Hide ? 'editable-row hide' : 'editable-row'}
               onRow={(record, index) => ({
                 index,
                 moveAble: !this.state.editingKey,
diff --git a/src/templates/zshare/modalform/datatable/index.scss b/src/templates/zshare/modalform/datatable/index.scss
index 4e81d56..fbd1e54 100644
--- a/src/templates/zshare/modalform/datatable/index.scss
+++ b/src/templates/zshare/modalform/datatable/index.scss
@@ -18,7 +18,7 @@
       line-height: 1;
     }
     > td {
-      padding: 16px 10px;
+      padding: 13px 10px;
     }
     .fileupload-form-container .ant-upload-list-picture-card .ant-upload-list-item {
       margin: 0;
@@ -26,6 +26,14 @@
       .ant-upload-list-item-info > span {
         height: 100%;
       }
+    }
+    .ant-input {
+      padding: 0 5px;
+    }
+  }
+  .editable-row.hide {
+    td:not(:last-child) {
+      text-decoration: line-through;
     }
   }
   .operation-btn {
@@ -41,6 +49,9 @@
     .primary {
       color: #1890ff;
     }
+    .hide-control {
+      color: rgb(142, 68, 173);
+    }
     .danger {
       color: #ff4d4f;
     }
@@ -52,6 +63,9 @@
     .primary {
       color: rgba(0, 0, 0, .25);
     }
+    .hide-control {
+      color: rgba(0, 0, 0, .25);
+    }
     .danger {
       color: rgba(0, 0, 0, .25);
     }
diff --git a/src/templates/zshare/modalform/index.jsx b/src/templates/zshare/modalform/index.jsx
index 711f3e6..0fca860 100644
--- a/src/templates/zshare/modalform/index.jsx
+++ b/src/templates/zshare/modalform/index.jsx
@@ -19,24 +19,24 @@
 const MkEditIcon = asyncComponent(() => import('@/components/mkIcon'))
 
 const modalTypeOptions = {
-  text: ['initval', 'readonly', 'required', 'hidden', 'readin', 'fieldlength', 'regular', 'interception', 'span', 'labelwidth', 'tooltip', 'extra', 'enter', 'cursor', 'scan', 'splitline', 'placeholder', 'place', 'marginTop', 'marginBottom'],
+  text: ['initval', 'readonly', 'required', 'hidden', 'readin', 'fieldlength', 'regular', 'interception', 'span', 'labelwidth', 'tooltip', 'extra', 'enter', 'cursor', 'scan', 'splitline', 'placeholder', 'place', 'marginTop', 'marginBottom', 'lenControl'],
   number: ['initval', 'readonly', 'hidden', 'decimal', 'min', 'max', 'readin', 'span', 'labelwidth', 'tooltip', 'extra', 'enter', 'cursor', 'splitline', 'place', 'marginTop', 'marginBottom'],
   select: ['initval', 'readonly', 'required', 'hidden', 'readin', 'resourceType', 'setAll', 'linkSubField', 'span', 'labelwidth', 'tooltip', 'extra', 'emptyText', 'enter', 'splitline', 'dropdown', 'marginTop', 'marginBottom'],
   checkbox: ['initval', 'readonly', 'required', 'hidden', 'readin', 'resourceType', 'fieldlength', 'span', 'labelwidth', 'tooltip', 'extra', 'splitline', 'arrange', 'marginTop', 'marginBottom'],
   radio: ['initval', 'readonly', 'required', 'hidden', 'readin', 'resourceType', 'linkSubField', 'span', 'labelwidth', 'tooltip', 'extra', 'setAll', 'emptyText', 'splitline', 'arrange', 'marginTop', 'marginBottom'],
-  checkcard: ['initval', 'readonly', 'required', 'hidden', 'readin', 'resourceType', 'fieldlength', 'span', 'labelwidth', 'display', 'tooltip', 'extra', 'width', 'multiple', 'borderColor', 'splitline', 'marginTop', 'marginBottom'],
+  checkcard: ['initval', 'readonly', 'required', 'hidden', 'readin', 'resourceType', 'fieldlength', 'span', 'labelwidth', 'display', 'tooltip', 'extra', 'width', 'multiple', 'splitline', 'marginTop', 'marginBottom'],
   multiselect: ['initval', 'readonly', 'required', 'hidden', 'readin', 'resourceType', 'fieldlength', 'span', 'labelwidth', 'tooltip', 'extra', 'marginTop', 'marginBottom'],
   link: ['initval', 'readonly', 'required', 'hidden', 'readin', 'resourceType', 'setAll', 'linkField', 'linkSubField', 'span', 'labelwidth', 'tooltip', 'extra', 'emptyText', 'enter', 'splitline', 'dropdown', 'marginTop', 'marginBottom'],
   fileupload: ['readonly', 'required', 'readin', 'fieldlength', 'maxfile', 'fileType', 'span', 'labelwidth', 'tooltip', 'extra', 'compress', 'splitline', 'marginTop', 'marginBottom'],
   switch: ['initval', 'openVal', 'closeVal', 'openText', 'closeText', 'readonly', 'hidden', 'readin', 'span', 'labelwidth', 'tooltip', 'extra', 'splitline', 'marginTop', 'marginBottom'],
-  date: ['initval', 'readonly', 'required', 'hidden', 'readin', 'span', 'labelwidth', 'tooltip', 'extra', 'declareType', 'mode', 'splitline', 'marginTop', 'marginBottom', 'minDate', 'maxDate'],
+  date: ['initval', 'readonly', 'required', 'hidden', 'readin', 'span', 'labelwidth', 'tooltip', 'extra', 'declareType', 'mode', 'splitline', 'marginTop', 'marginBottom', 'minDate', 'maxDate', 'precision'],
   datemonth: ['initval', 'readonly', 'required', 'hidden', 'readin', 'span', 'labelwidth', 'tooltip', 'extra', 'declareType', 'splitline', 'marginTop', 'marginBottom'],
   datetime: ['initval', 'readonly', 'required', 'hidden', 'readin', 'span', 'labelwidth', 'tooltip', 'extra', 'declareType', 'mode', 'splitline', 'marginTop', 'marginBottom', 'minDate', 'maxDate'],
-  textarea: ['initval', 'readonly', 'required', 'hidden', 'readin', 'fieldlength', 'span', 'labelwidth', 'maxRows', 'encryption', 'interception', 'tooltip', 'extra', 'count', 'placeholder', 'marginTop', 'marginBottom'],
+  textarea: ['initval', 'readonly', 'required', 'hidden', 'readin', 'fieldlength', 'span', 'labelwidth', 'maxRows', 'encryption', 'interception', 'tooltip', 'extra', 'count', 'placeholder', 'marginTop', 'marginBottom', 'enterReplace'],
   color: ['initval', 'readonly', 'required', 'hidden', 'readin', 'span', 'labelwidth', 'tooltip', 'extra', 'marginTop', 'marginBottom'],
   rate: ['initval', 'readonly', 'required', 'hidden', 'readin', 'span', 'labelwidth', 'splitline', 'tooltip', 'extra', 'marginTop', 'marginBottom', 'allowHalf', 'rateCount', 'character', 'place'],
-  hint: ['label', 'type', 'blacklist', 'message', 'span', 'labelwidth', 'splitline', 'marginTop', 'marginBottom'],
-  split: ['label', 'type', 'marginTop', 'marginBottom'],
+  hint: ['label', 'field', 'type', 'blacklist', 'message', 'span', 'labelwidth', 'splitline', 'marginTop', 'marginBottom'],
+  split: ['label', 'type', 'marginTop', 'marginBottom', 'splitline'],
   brafteditor: ['required', 'hidelabel', 'hidden', 'readin', 'fieldlength', 'readonly', 'span', 'labelwidth', 'tooltip', 'extra', 'encryption', 'marginTop', 'marginBottom'],
   funcvar: ['span', 'labelwidth', 'splitline', 'marginTop', 'marginBottom'],
   linkMain: ['readonly', 'required', 'hidden', 'fieldlength', 'span', 'labelwidth', 'tooltip', 'extra', 'marginTop', 'marginBottom']
@@ -117,7 +117,10 @@
     let reRequired = {}
     let reTooltip = {}
 
+    reRequired.field = true
+
     if (type === 'hint' || type === 'split') {
+      reRequired.field = false
       shows = fromJS(modalTypeOptions[type]).toJS()
     }
 
@@ -140,6 +143,9 @@
       reRequired.initval = true
       if (this.record.enter === 'tab' || this.record.enter === 'sub') {
         shows.push('tabField')
+      }
+      if (sessionStorage.getItem('appType') === 'mob') { // 绉诲姩绔彸渚ф墿灞曚俊鎭�
+        shows.push('placeholder')
       }
     } else if (['multiselect', 'select', 'link', 'radio', 'checkbox'].includes(type)) {
       if (this.record.resourceType === '0') {        // 鑷畾涔夎祫婧�
@@ -164,9 +170,9 @@
         }
       } else {
         if (this.record.resourceType === '0') {        // 鑷畾涔夎祫婧�
-          shows.push('options', 'fields', 'backgroundColor')
+          shows.push('options', 'fields', 'backgroundColor', 'borderColor')
         } else if (this.record.resourceType === '1') { // 鏁版嵁婧�
-          shows.push('dataSource', 'cardValField', 'fields', 'orderBy', 'orderType', 'disableField', 'database', 'backgroundColor')
+          shows.push('dataSource', 'cardValField', 'fields', 'orderBy', 'orderType', 'disableField', 'database', 'backgroundColor', 'borderColor')
         }
       }
 
@@ -414,6 +420,36 @@
     }
   }
 
+  handleEmpty = () => {
+    let field = this.props.form.getFieldValue('valueField')
+
+    if (!field) {
+      notification.warning({
+        top: 92,
+        message: '璇峰~鍐欏�悸峰瓧娈点��',
+        duration: 5
+      })
+      return
+    }
+
+    let text = this.props.form.getFieldValue('valueText')
+
+    if (!text) {
+      notification.warning({
+        top: 92,
+        message: '璇峰~鍐欐枃鏈峰瓧娈点��',
+        duration: 5
+      })
+      return
+    }
+
+    let resource = this.props.form.getFieldValue('dataSource') || ''
+
+    resource = `select '' as ${field},'鍏ㄩ儴' as ${text} union all \n${resource}`
+
+    this.props.form.setFieldsValue({dataSource: resource})
+  }
+
   getFields() {
     const { getFieldDecorator } = this.props.form
     const { dict } = this.props
@@ -427,6 +463,7 @@
       let rules = []
       let className = ''
       let content = null
+      let extra = null
       let initVal = item.initVal || ''
 
       if (item.type === 'text') {
@@ -440,6 +477,11 @@
           }, {
             max: formRule.field.max,
             message: formRule.field.maxMessage
+          })
+        } else if (item.max) {
+          rules.push({
+            max: item.max,
+            message: `${item.label}鏈�澶�${item.max}涓瓧绗
           })
         } else {
           rules.push({
@@ -467,7 +509,7 @@
         content = <Select
           showSearch
           allowClear={item.allowClear === true}
-          filterOption={(input, option) => option.props.children[2].toLowerCase().indexOf(input.toLowerCase()) >= 0}
+          filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
           onChange={(value) => {this.optionChange(item.key, value)}}
           getPopupContainer={() => document.getElementById('modal-fields-form-box')}
         >
@@ -508,6 +550,10 @@
         span = 24
         className = 'text-area'
 
+        if (this.record.type === 'select' || this.record.type === 'link') {
+          extra = <span className="add-resource-empty" onClick={this.handleEmpty}>绌�</span>
+        }
+
         content = <CodeMirror />
       } else if (item.type === 'textarea') {
         span = 24
@@ -531,7 +577,7 @@
           if (type === 'radio' && this.record.linkField) {
             type = 'link'
           }
-          content = <EditTable type={type} transfield={transfield} linkSubFields={linkSubFields} onChange={this.changeOptions}/>
+          content = <EditTable type={type} module="form" transfield={transfield} linkSubFields={linkSubFields} onChange={this.changeOptions}/>
         } else {
           if (this.record.multiple === 'true') {
             linkSubFields = []
@@ -560,7 +606,7 @@
 
       fields.push(
         <Col span={span} key={index}>
-          <Form.Item className={className} label={item.tooltip ?
+          <Form.Item className={className} extra={extra} label={item.tooltip ?
             <Tooltip placement="topLeft" title={item.tooltip}>
               <QuestionCircleOutlined className="mk-form-tip" />
               {item.label}
diff --git a/src/templates/zshare/modalform/index.scss b/src/templates/zshare/modalform/index.scss
index 7e46fda..6df9194 100644
--- a/src/templates/zshare/modalform/index.scss
+++ b/src/templates/zshare/modalform/index.scss
@@ -34,4 +34,16 @@
       }
     }
   }
+  .ant-form-extra {
+    padding-top: 0px;
+    min-height: 0px;
+  }
+  .add-resource-empty {
+    position: absolute;
+    right: 10px;
+    top: -25px;
+    color: #1890ff;
+    cursor: pointer;
+    font-size: 14px;
+  }
 }
\ No newline at end of file
diff --git a/src/templates/zshare/modalform/modaleditable/index.jsx b/src/templates/zshare/modalform/modaleditable/index.jsx
index 8670071..3e076af 100644
--- a/src/templates/zshare/modalform/modaleditable/index.jsx
+++ b/src/templates/zshare/modalform/modaleditable/index.jsx
@@ -67,7 +67,7 @@
     }
 
     return editing ? (
-      <Form.Item style={{ margin: 0 }}>
+      <Form.Item style={{ margin: '0 -5px 0 -5px' }}>
         {form.getFieldDecorator(dataIndex, {
           rules: [
             {
@@ -115,6 +115,7 @@
 class EditTable extends Component {
   static propTpyes = {
     type: PropTypes.string,         // 琛ㄥ崟绫诲瀷
+    module: PropTypes.string,       // 鍏冪礌绫诲瀷
     linkSubFields: PropTypes.array, // 鍏宠仈瀛楁
     transfield: PropTypes.object,   // 琛ㄥ崟瀛楁鍚嶇О
     onChange: PropTypes.func        // 鏁版嵁鍙樺寲
@@ -215,6 +216,20 @@
       _data.splice(index + 1, 0, record)
     }
 
+    this.setState({
+      dataSource: _data
+    }, () => {
+      this.props.onChange(_data)
+    })
+  }
+
+  handleHide = (record) => {
+    let _data = this.state.dataSource.map(item => {
+      if (item.key === record.key) {
+        item.Hide = !item.Hide
+      }
+      return item
+    })
     this.setState({
       dataSource: _data
     }, () => {
@@ -336,6 +351,7 @@
             <div style={{fontSize: '15px'}}>
               <span className="operation-btn" onClick={() => this.handleUpDown(record, 'up')} style={{color: '#1890ff'}}><ArrowUpOutlined /></span>
               <span className="operation-btn" onClick={() => this.handleUpDown(record, 'down')} style={{color: '#ff4d4f'}}><ArrowDownOutlined /></span>
+              <span className="operation-btn" title="鏄剧ず/闅愯棌" onClick={() => this.handleHide(record)} style={{color: 'rgb(142, 68, 173)'}}><SwapOutlined /></span>
               <Popconfirm
                 title="纭畾鍒犻櫎鍚楋紵"
                 overlayClassName="popover-confirm"
@@ -368,6 +384,35 @@
     }
   }
 
+  handleEmpty = (e) => {
+    e.stopPropagation()
+    const { linkSubFields, module } = this.props
+    const { dataSource } = this.state
+
+    if (dataSource.filter(item => item.Value === '').length > 0) {
+      message.warning('Value涓虹┖宸插瓨鍦紒')
+      return
+    }
+    const newData = {
+      key: Utils.getuuid(),
+      Value: '',
+      Text: module === 'form' ? '绌�' : '鍏ㄩ儴',
+      ParentID: ''
+    }
+
+    linkSubFields.forEach(m => {
+      newData[m] = newData[m] || ''
+    })
+
+    let _data = [newData, ...dataSource]
+
+    this.setState({
+      dataSource: _data,
+    }, () => {
+      this.props.onChange(_data)
+    })
+  }
+
   resetColumn = (type, linkSubFields) => {
     const { columns, dataSource } = this.getColumns(type, linkSubFields, this.state.dataSource)
 
@@ -392,6 +437,7 @@
   }
 
   render() {
+    const { module } = this.props
     const { dataSource } = this.state
     const components = {
       body: {
@@ -417,10 +463,11 @@
     })
     return (
       <div className="common-modal-edit-table">
+        <span className="add-row add-row-empty" onClick={this.handleEmpty}>{module === 'form' ? '绌�' : '鍏ㄩ儴'}</span>
         <PlusOutlined className="add-row" onClick={this.handleAdd} />
         <Table
           components={components}
-          rowClassName={() => 'editable-row'}
+          rowClassName={(record) => record.Hide ? 'editable-row hide' : 'editable-row'}
           bordered
           dataSource={dataSource}
           columns={columns}
diff --git a/src/templates/zshare/modalform/modaleditable/index.scss b/src/templates/zshare/modalform/modaleditable/index.scss
index 010e085..ab53b8e 100644
--- a/src/templates/zshare/modalform/modaleditable/index.scss
+++ b/src/templates/zshare/modalform/modaleditable/index.scss
@@ -8,11 +8,18 @@
     font-size: 18px;
     color: #26C281;
   }
+  .add-row-empty {
+    font-size: 14px;
+    right: 50px;
+    line-height: 1.5;
+    color: #1890ff;
+    cursor: pointer;
+  }
   .ant-table-thead > tr > th {
     padding: 10px 16px;
   }
   .ant-table-tbody > tr > td {
-    padding: 5px 16px;
+    padding: 5px 10px;
   }
   .editable-cell-value-wrap {
     cursor: pointer;
@@ -22,10 +29,9 @@
     vertical-align: middle;
     word-wrap: break-word;
     word-break: break-word;
-    .ant-input {
-      height: 30px;
-      padding: 0 11px;
-    }
+  }
+  .ant-input {
+    padding: 0 5px;
   }
   .ant-form-item-control-wrapper {
     width: 100%;
@@ -37,9 +43,12 @@
     }
   }
   .operation-btn {
-    margin-right: 15px;
+    margin-right: 10px;
     cursor: pointer;
   }
+  .editable-row.hide {
+    text-decoration: line-through;
+  }
   .ant-form-explain {
     font-size: 12px;
   }
diff --git a/src/templates/zshare/pasteform/index.jsx b/src/templates/zshare/pasteform/index.jsx
index 08ed804..6b5cd34 100644
--- a/src/templates/zshare/pasteform/index.jsx
+++ b/src/templates/zshare/pasteform/index.jsx
@@ -27,9 +27,23 @@
       this.props.form.validateFieldsAndScroll((err, values) => {
         if (!err) {
           let _config = values.config
-
           try {
             _config = JSON.parse(window.decodeURIComponent(window.atob(_config)))
+
+            if (typeof(_config) === 'object' && _config.$srcId) {
+              let srcid = localStorage.getItem(window.location.href.split('#')[0] + 'srcId')
+              if (srcid && _config.$srcId !== srcid) {
+                notification.warning({
+                  top: 92,
+                  message: '褰撳墠绯荤粺鏃犳潈闄愪娇鐢ㄦ椤归厤缃紒',
+                  duration: 5
+                })
+
+                _config = ''
+              } else {
+                delete _config.$srcId
+              }
+            }
           } catch (e) {
             notification.warning({
               top: 92,
@@ -47,14 +61,6 @@
         }
       })
     })
-  }
-
-  submit = () => {
-    if (this.props.inputSubmit) {
-      setTimeout(() => {
-        this.props.inputSubmit()
-      }, 10)
-    }
   }
 
   render() {
@@ -82,7 +88,7 @@
                     message: '璇疯緭鍏ラ厤缃俊鎭�!'
                   }
                 ]
-              })(<TextArea autoSize={{ minRows: 6, maxRows: 6 }} onPressEnter={this.submit}/>)}
+              })(<TextArea autoSize={{ minRows: 6, maxRows: 6 }}/>)}
             </Form.Item>
           </Col>
         </Row>
diff --git a/src/templates/zshare/verifycard/billcodeform/index.jsx b/src/templates/zshare/verifycard/billcodeform/index.jsx
index 8b6a946..a5ac2c7 100644
--- a/src/templates/zshare/verifycard/billcodeform/index.jsx
+++ b/src/templates/zshare/verifycard/billcodeform/index.jsx
@@ -156,7 +156,7 @@
         values.fieldName = _funField ? _funField.label : ''
 
         // 涓�绾ц彍鍗曞�间负20190203125926873D6029A9C511041719420鏃禩ypeCharTwo=TableCode锛屽叾浠栫敤BillCode
-        if (values.ModularCode === '20190203125926873D6029A9C511041719420') {
+        if (values.ModularCode === '20190203125926873D6029A9C511041719420' || values.ModularCode === '01') {
           values.TypeCharTwo = 'TableCode'
         } else {
           values.TypeCharTwo = 'BillCode'
diff --git a/src/templates/zshare/verifycard/callbackcustomscript/index.jsx b/src/templates/zshare/verifycard/callbackcustomscript/index.jsx
index 0b5316b..0f481b7 100644
--- a/src/templates/zshare/verifycard/callbackcustomscript/index.jsx
+++ b/src/templates/zshare/verifycard/callbackcustomscript/index.jsx
@@ -221,7 +221,7 @@
     }
 
     return (
-      <Form {...formItemLayout} className="verify-form" id="verify-custom-callback-scripts">
+      <Form {...formItemLayout} className="verify-form verify-custom-callback-scripts" id="verify-custom-callback-scripts">
         <Row gutter={24}>
           <Col span={8}>
             <Form.Item label={'琛ㄥ悕'} style={{whiteSpace: 'nowrap', margin: 0}}>
diff --git a/src/templates/zshare/verifycard/callbackcustomscript/index.scss b/src/templates/zshare/verifycard/callbackcustomscript/index.scss
index 89791c7..059f94f 100644
--- a/src/templates/zshare/verifycard/callbackcustomscript/index.scss
+++ b/src/templates/zshare/verifycard/callbackcustomscript/index.scss
@@ -1,4 +1,4 @@
-#verify-custom-scripts {
+.verify-custom-callback-scripts {
   .ant-select-dropdown-menu-item {
     white-space: normal;
   }
diff --git a/src/templates/zshare/verifycard/customform/index.jsx b/src/templates/zshare/verifycard/customform/index.jsx
index d203f25..0dc8608 100644
--- a/src/templates/zshare/verifycard/customform/index.jsx
+++ b/src/templates/zshare/verifycard/customform/index.jsx
@@ -183,6 +183,7 @@
             <Button onClick={this.handleConfirm} loading={this.state.loading} className="mk-green">
               淇濆瓨
             </Button>
+            <div></div>
             <Button onClick={this.handleCancel}>
               鍙栨秷
             </Button>
diff --git a/src/templates/zshare/verifycard/customscript/index.jsx b/src/templates/zshare/verifycard/customscript/index.jsx
index 2bf77c8..1909699 100644
--- a/src/templates/zshare/verifycard/customscript/index.jsx
+++ b/src/templates/zshare/verifycard/customscript/index.jsx
@@ -11,6 +11,7 @@
 
 class CustomForm extends Component {
   static propTpyes = {
+    type: PropTypes.any,
     dict: PropTypes.object,         // 瀛楀吀椤�
     btn: PropTypes.object,          // 鎸夐挳淇℃伅
     usefulfields: PropTypes.string, // 鍙敤瀛楁
@@ -31,10 +32,16 @@
       editItem: record
     })
 
-    this.props.form.setFieldsValue({
-      sql: record.sql,
-      position: record.position || 'back'
-    })
+    if (this.props.type) {
+      this.props.form.setFieldsValue({
+        sql: record.sql
+      })
+    } else {
+      this.props.form.setFieldsValue({
+        sql: record.sql,
+        position: record.position || 'back'
+      })
+    }
   }
 
   handleConfirm = () => {
@@ -43,6 +50,7 @@
     this.props.form.validateFieldsAndScroll((err, values) => {
       if (!err) {
         values.uuid = editItem ? editItem.uuid : ''
+        values.position = values.position || (editItem ? editItem.position : 'front')
 
         let _quot = values.sql.match(/'{1}/g)
         let _lparen = values.sql.match(/\({1}/g)
@@ -95,22 +103,24 @@
         let _backCustomScript = '' // 榛樿sql鍚庢墽琛岃剼鏈�
 
         this.props.customScripts.forEach(item => {
-          if (item.status === 'false') return
+          if (item.status === 'false' && values.uuid !== item.uuid) return
 
-          if (item.position === 'init') {
+          let _item = values.uuid === item.uuid ? values : item
+
+          if (_item.position === 'init') {
             _initCustomScript += `
             /* 鍒濆鍖栬剼鏈� */
-            ${values.uuid === item.uuid ? values.sql : item.sql}
+            ${_item.sql}
             `
-          } else if (item.position === 'front') {
+          } else if (_item.position === 'front') {
             _prevCustomScript += `
             /* 榛樿sql鍓嶈剼鏈� */
-            ${values.uuid === item.uuid ? values.sql : item.sql}
+            ${_item.sql}
             `
           } else {
             _backCustomScript += `
             /* 榛樿sql鍚庤剼鏈� */
-            ${values.uuid === item.uuid ? values.sql : item.sql}
+            ${_item.sql}
             `
           }
         })
@@ -219,7 +229,7 @@
   }
 
   render() {
-    const { usefulfields, systemScripts, btn } = this.props
+    const { usefulfields, systemScripts, btn, type } = this.props
     const { getFieldDecorator } = this.props.form
     const formItemLayout = {
       labelCol: {
@@ -232,25 +242,27 @@
       }
     }
 
+    let _type = type || ''
+
     return (
-      <Form {...formItemLayout} className="verify-form" id="verify-custom-scripts">
+      <Form {...formItemLayout} className="verify-form verify-custom-scripts" id={'verify-custom-scripts' + _type}>
         <Row gutter={24}>
-          {btn.sql ? <Col span={8}>
+          {!_type && btn.sql ? <Col span={8}>
             <Form.Item label={'琛ㄥ悕'} style={{whiteSpace: 'nowrap', margin: 0}}>
               {btn.sql}
             </Form.Item>
           </Col> : null}
-          <Col span={10}>
+          {!_type ? <Col span={10}>
             <Form.Item label={'鎶ラ敊瀛楁'} style={{margin: 0, whiteSpace: 'nowrap'}}>
               ErrorCode锛堝鍔犲悗缂�NT琛ㄧず鏁版嵁涓嶅洖婊氾紝濡侲NT銆丯NT銆丗NT銆丯MNT锛�, retmsg
             </Form.Item>
-          </Col>
-          {usefulfields ? <Col span={24} className="sqlfield">
+          </Col> : null}
+          {!_type && usefulfields ? <Col span={24} className="sqlfield">
             <Form.Item label={'鍙敤瀛楁'}>
               {usefulfields}
             </Form.Item>
           </Col> : null}
-          <Col span={8} style={{whiteSpace: 'nowrap'}}>
+          {!_type ?<Col span={8} style={{whiteSpace: 'nowrap'}}>
             <Form.Item style={{marginBottom: 0}} label={
               <Tooltip placement="bottomLeft" title={'鑷畾涔夎剼鏈笌榛樿sql浣嶇疆鍏崇郴銆�'}>
                 <QuestionCircleOutlined className="mk-form-tip" />
@@ -267,22 +279,25 @@
                 </Radio.Group>
               )}
             </Form.Item>
-          </Col>
-          <Col span={10}>
+          </Col> : null}
+          {!_type ?<Col span={10}>
             <Form.Item label={'蹇嵎娣诲姞'} style={{marginBottom: 0}}>
               <Select
                 showSearch
                 filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0}
                 onSelect={this.selectScript}
-                getPopupContainer={() => document.getElementById('verify-custom-scripts')}
+                getPopupContainer={() => document.getElementById('verify-custom-scripts' + _type)}
               >
                 <Select.Option key="default" value={this.props.defaultsql}>榛樿sql</Select.Option>
+                <Select.Option key="debugger" value={`z_debug: select @ErrorCode='E',@retmsg='娴嬭瘯鏂偣' goto aaa`}>
+                  娴嬭瘯鏂偣
+                </Select.Option>
                 {systemScripts.map((option, i) =>
                   <Select.Option key={i} value={option.value}>{option.name}</Select.Option>
                 )}
               </Select>
             </Form.Item>
-          </Col>
+          </Col> : null}
           <Col span={6} className="add">
             <Button onClick={this.handleConfirm} loading={this.state.loading} className="mk-green" style={{marginBottom: 15, marginLeft: 40}}>
               淇濆瓨
diff --git a/src/templates/zshare/verifycard/customscript/index.scss b/src/templates/zshare/verifycard/customscript/index.scss
index 89791c7..7853744 100644
--- a/src/templates/zshare/verifycard/customscript/index.scss
+++ b/src/templates/zshare/verifycard/customscript/index.scss
@@ -1,4 +1,4 @@
-#verify-custom-scripts {
+.verify-custom-scripts {
   .ant-select-dropdown-menu-item {
     white-space: normal;
   }
diff --git a/src/templates/zshare/verifycard/index.jsx b/src/templates/zshare/verifycard/index.jsx
index 6a3ecb5..b98a3c2 100644
--- a/src/templates/zshare/verifycard/index.jsx
+++ b/src/templates/zshare/verifycard/index.jsx
@@ -2,7 +2,7 @@
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
 import { Form, Tabs, Row, Col, Radio, Button, Select, Popconfirm, notification, Modal, message, InputNumber, Tooltip, Typography } from 'antd'
-import { QuestionCircleOutlined, CheckCircleOutlined, StopOutlined, EditOutlined, SwapOutlined, DeleteOutlined, ExclamationOutlined } from '@ant-design/icons'
+import { QuestionCircleOutlined, CheckCircleOutlined, StopOutlined, EditOutlined, SwapOutlined, DeleteOutlined, ExclamationOutlined, BorderOutlined } from '@ant-design/icons'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -17,6 +17,8 @@
 import VoucherForm from './voucherform'
 import asyncComponent from '@/utils/asyncComponent'
 import { updateForm } from '@/utils/utils-update.js'
+import MKEmitter from '@/utils/events.js'
+import MinView from '@/assets/img/minview.png'
 import './index.scss'
 
 const { TabPane } = Tabs
@@ -37,6 +39,8 @@
     initsql: '',            // sql楠岃瘉鏃跺彉閲忓0鏄庡強璧嬪��
     notes: [],              // 鐭俊妯℃澘
     setting: null,
+    visible: false,
+    scriptId: '',
     verify: {},
     fields: [],
     usefulfields: '',
@@ -228,12 +232,12 @@
         render: (text) => {
           let title = text.match(/^\s*\/\*.+\*\//)
           title = title && title[0] ? title[0] : ''
-          // text = title ? text.replace(title, '') : text
+          let _text = title ? text.replace(title, '') : text
 
           return (
             <div>
-              {title ? <span style={{color: '#a50'}}>{title}</span> : null}
-              <Paragraph copyable ellipsis={{ rows: 4, expandable: true }}>{text}</Paragraph>
+              {title ? <span style={{color: '#a50'}}>{title}<span style={{fontSize: '12px', marginLeft: '5px'}}>{_text.length}</span></span> : null}
+              <Paragraph copyable={{ text: text }} ellipsis={{ rows: 4, expandable: true }}>{_text}</Paragraph>
             </div>
           )
         }
@@ -298,12 +302,12 @@
         render: (text) => {
           let title = text.match(/^\s*\/\*.+\*\//)
           title = title && title[0] ? title[0] : ''
-          // text = title ? text.replace(title, '') : text
+          let _text = title ? text.replace(title, '') : text
 
           return (
             <div>
-              {title ? <span style={{color: '#a50'}}>{title}</span> : null}
-              <Paragraph copyable ellipsis={{ rows: 4, expandable: true }}>{text}</Paragraph>
+              {title ? <span style={{color: '#a50'}}>{title}<span style={{fontSize: '12px', marginLeft: '5px'}}>{_text.length}</span></span> : null}
+              <Paragraph copyable={{ text: text }} ellipsis={{ rows: 4, expandable: true }}>{_text}</Paragraph>
             </div>
           )
         }
@@ -367,12 +371,12 @@
         render: (text) => {
           let title = text.match(/^\s*\/\*.+\*\//)
           title = title && title[0] ? title[0] : ''
-          // text = title ? text.replace(title, '') : text
+          let _text = title ? text.replace(title, '') : text
 
           return (
             <div>
-              {title ? <span style={{color: '#a50'}}>{title}</span> : null}
-              <Paragraph copyable ellipsis={{ rows: 4, expandable: true }}>{text}</Paragraph>
+              {title ? <span style={{color: '#a50'}}>{title}<span style={{fontSize: '12px', marginLeft: '5px'}}>{_text.length}</span></span> : null}
+              <Paragraph copyable={{ text: text }} ellipsis={{ rows: 4, expandable: true }}>{_text}</Paragraph>
             </div>
           )
         }
@@ -469,7 +473,7 @@
           let _type = record.Type
           if (_type && typeof(_type) === 'string') {
             _type = parseInt(_type)
-          } else {
+          } else if (!_type) {
             _type = 4
           }
 
@@ -531,7 +535,7 @@
 
   UNSAFE_componentWillMount() {
     const { columns, config, card, btnTab } = this.props
-    let _verify = card.verify || {}
+    let _verify = fromJS(card.verify || {}).toJS()
 
     let _invalid = _verify.invalid
 
@@ -645,14 +649,20 @@
         resolve(_fields)
       }
     }).then(_fields => {
-      let _usefulfields = ['BID', 'ID', 'LoginUID', 'SessionUid', 'UserID', 'Appkey', 'UserName', 'FullName', 'RoleID', 'mk_departmentcode', 'mk_organization', 'login_city', 'BillCode', 'BVoucher', 'FIBVoucherDate', 'FiYear', 'ModularDetailCode']
-      let _declare = ['@UserName nvarchar(50)', '@FullName nvarchar(50)', '@RoleID nvarchar(512)', '@mk_departmentcode nvarchar(50)', '@mk_organization nvarchar(50)', '@login_city nvarchar(50)', '@ErrorCode nvarchar(50)', '@retmsg nvarchar(4000)', '@BillCode nvarchar(50)', '@BVoucher nvarchar(50)', '@FIBVoucherDate nvarchar(50)', '@FiYear nvarchar(50)', '@ModularDetailCode nvarchar(50)']
-      let _select = ['@UserName=\'\'', '@FullName=\'\'', '@RoleID=\'\'', '@mk_departmentcode=\'\'', '@mk_organization=\'\'', '@login_city=\'\'', '@ErrorCode=\'\'', '@retmsg=\'\'', '@BillCode=\'\'', '@BVoucher=\'\'', '@FIBVoucherDate=\'\'', '@FiYear=\'\'', '@ModularDetailCode=\'\'']
+      let _usefulfields = ['UserName', 'FullName', 'RoleID', 'mk_departmentcode', 'mk_organization', 'login_city', 'BillCode', 'BVoucher', 'FIBVoucherDate', 'FiYear', 'ModularDetailCode']
+      let _declare = ['@UserName nvarchar(50)', '@FullName nvarchar(50)', '@RoleID nvarchar(512)', '@mk_departmentcode nvarchar(50)', '@mk_organization nvarchar(50)', '@login_city nvarchar(50)', '@ErrorCode nvarchar(50)', '@retmsg nvarchar(4000)', '@BillCode nvarchar(50)', '@BVoucher nvarchar(50)', '@FIBVoucherDate nvarchar(50)', '@FiYear nvarchar(50)', '@ModularDetailCode nvarchar(50)', '@bid nvarchar(50)']
+      let _select = ['@UserName=\'\'', '@FullName=\'\'', '@RoleID=\'\'', '@mk_departmentcode=\'\'', '@mk_organization=\'\'', '@login_city=\'\'', '@ErrorCode=\'\'', '@retmsg=\'\'', '@BillCode=\'\'', '@BVoucher=\'\'', '@FIBVoucherDate=\'\'', '@FiYear=\'\'', '@ModularDetailCode=\'\'', '@bid=\'\'']
       let fieldArr = _usefulfields.map(_f => _f.toLowerCase())
       let hasBid = false
+      
+      fieldArr.push('bid')
 
       _fields = _fields.filter(_f => _f.field)
       _fields.forEach(_f => {
+        if (_f.field.toLowerCase() === 'bid') {
+          hasBid = true
+        }
+
         if (fieldArr.includes(_f.field.toLowerCase())) return
 
         fieldArr.push(_f.field.toLowerCase())
@@ -673,7 +683,7 @@
 
         if (_f.type.match(/date/ig)) {
           _type = 'datetime'
-          _select.push(`@${_f.field}='1900-01-01'`)
+          _select.push(`@${_f.field}='1949-10-01'`)
         } else if (_f.type === 'number') {
           _type = `decimal(18,${_fieldlen})`
           _select.push(`@${_f.field}=0`)
@@ -685,10 +695,6 @@
         }
 
         _declare.push(`@${_f.field} ${_type}`)
-
-        if (_f.field.toLowerCase() === 'bid') {
-          hasBid = true
-        }
       })
 
       let uniqueFields = fromJS(_fields).toJS()
@@ -696,9 +702,6 @@
       if (!hasBid) { // 鍞竴鎬ч獙璇佹坊鍔燘ID
         uniqueFields.unshift({ uuid: 'BID', field: 'BID', label: 'BID', type: 'text' })
         _fields.unshift({ uuid: 'BID', field: 'BID', label: 'BID', type: 'text' })
-        fieldArr.push('bid')
-        _declare.push(`@bid nvarchar(50)`)
-        _select.push(`@bid=''`)
       }
 
       let hasColumn = false
@@ -923,7 +926,7 @@
         columnsFields: _columns,
         initsql: _sql,
         defaultsql: _defaultsql,
-        usefulfields: _usefulfields.join(', '),
+        usefulfields: ['BID', 'ID', 'LoginUID', 'SessionUid', 'UserID', 'Appkey', ..._usefulfields].join(', '),
         uniqueColumns: this.state.uniqueColumns.map(col => {
           if (col.dataIndex === 'field') {
             col.options = uniqueFields
@@ -1097,6 +1100,8 @@
       values.uuid = Utils.getuuid()
       verify.scripts.push(values)
     }
+
+    MKEmitter.emit('editLineId', values.uuid)
 
     this.setState({ verify })
   }
@@ -1449,7 +1454,7 @@
 
   render() {
     const { card } = this.props
-    const { verify, fields, uniqueFields, uniqueColumns, unionFields, onceUniqueColumns, columnsFields, contrastColumns, customColumns, orderColumns, scriptsColumns, cbScriptsColumns, orderModular, orderModularDetail, voucher, voucherDetail, notes } = this.state
+    const { verify, fields, visible, uniqueFields, uniqueColumns, unionFields, onceUniqueColumns, columnsFields, contrastColumns, customColumns, orderColumns, scriptsColumns, cbScriptsColumns, orderModular, orderModularDetail, voucher, voucherDetail, notes } = this.state
     const formItemLayout = {
       labelCol: {
         xs: { span: 24 },
@@ -1583,7 +1588,7 @@
             </span>
           } key="2x">
             <ContrastForm dict={this.props.dict} contrastChange={this.contrastChange}/>
-            <EditTable actions={['edit', 'move', 'copy', 'del']} type="contrastverify" data={verify.contrasts} columns={contrastColumns} onChange={(contrasts) => this.setState({verify: {...verify, contrasts}})}/>
+            <EditTable actions={['edit', 'move', 'copy', 'del', 'status']} type="contrastverify" data={verify.contrasts} columns={contrastColumns} onChange={(contrasts) => this.setState({verify: {...verify, contrasts}})}/>
           </TabPane> : null}
           {card.intertype === 'system' || (card.intertype === 'custom' && card.procMode === 'system') ? <TabPane tab={
             <span>
@@ -1632,7 +1637,7 @@
               dict={this.props.dict}
               uniqueChange={this.uniqueChange}
             />
-            <EditTable actions={['edit', 'move', 'del']} data={verify.uniques} columns={card.Ot !== 'requiredOnce' ? uniqueColumns : onceUniqueColumns} onChange={this.changeUniques}/>
+            <EditTable actions={['edit', 'move', 'del', 'status']} data={verify.uniques} columns={card.Ot !== 'requiredOnce' ? uniqueColumns : onceUniqueColumns} onChange={this.changeUniques}/>
           </TabPane> : null}
           {card.intertype === 'system' || (card.intertype === 'custom' && card.procMode === 'system') ? <TabPane tab={
             <span>
@@ -1656,6 +1661,18 @@
               {verify.scripts.length ? <span className="count-tip">{verify.scripts.length}</span> : null}
             </span>
           } key="6">
+            
+            <BorderOutlined className="full-scripts" onClick={() => {
+              if (this.scriptsForm && (this.scriptsForm.state.editItem || (this.scriptsForm.props.form.getFieldValue('sql') && !/^\s+$/.test(this.scriptsForm.props.form.getFieldValue('sql'))))) {
+                notification.warning({
+                  top: 92,
+                  message: '璇蜂繚瀛樿嚜瀹氫箟鑴氭湰锛�',
+                  duration: 5
+                })
+                return
+              }
+              this.setState({visible: true, scriptId: ''})
+            }}/>
             <CustomScript
               btn={this.props.card}
               dict={this.props.dict}
@@ -1775,6 +1792,76 @@
             </Form>
           </TabPane>
         </Tabs>
+        <Modal
+          wrapClassName="model-custom-scripts-modal"
+          title="鑷畾涔夎剼鏈�"
+          visible={visible}
+          width={'95vw'}
+          maskClosable={false}
+          destroyOnClose
+        >
+          <img className="unfull-scripts" src={MinView} onClick={() => this.setState({visible: false, scriptId: ''})} alt=""/>
+          <div className="script-table-wrap">
+            {verify.scripts.map(item => {
+              let title = item.sql.match(/^\s*\/\*.+\*\//)
+              title = title && title[0] ? title[0] : ''
+              let _text = title ? item.sql.replace(title, '') : item.sql
+
+              let position = null
+              if (item.position === 'init') {
+                position = <span style={{color: 'orange'}}>鍒濆鍖�</span>
+              } else if (item.position === 'front') {
+                position = <span style={{color: '#26C281'}}>sql鍓�</span>
+              } else {
+                position = <span style={{color: '#1890ff'}}>sql鍚�</span>
+              }
+
+              return (
+                <div className={'script-item ' + (this.state.scriptId === item.uuid ? 'active' : '') } key={item.uuid}>
+                  <div style={{cursor: 'pointer'}} onClick={() => {
+                    this.scriptsFullForm.edit(item)
+                    this.setState({scriptId: item.uuid})
+                  }}>
+                    {title ? <div style={{color: '#a50', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis'}}>{title}</div> : null}
+                    <Paragraph copyable={{ text: item.sql }} ellipsis={{ rows: 4 }}>{_text}</Paragraph>
+                    <div>{position}{item.status === 'false' ?
+                      <span style={{color: '#ff4d4f', marginLeft: '20px'}}>
+                        绂佺敤
+                        <StopOutlined style={{marginLeft: '5px'}} />
+                      </span> : 
+                      <span style={{color: '#26C281', marginLeft: '20px'}}>
+                        鍚敤
+                        <CheckCircleOutlined style={{marginLeft: '5px'}}/>
+                      </span>}
+                    </div>
+                  </div>
+                  <div style={{textAlign: 'right'}}>
+                    <span className="operation-btn" onClick={() => this.handleStatus(item, 'scripts')} style={{color: '#8E44AD'}}><SwapOutlined /></span>
+                    <Popconfirm
+                      overlayClassName="popover-confirm"
+                      title={this.props.dict['model.query.delete']}
+                      onConfirm={() => this.handleDelete(item, 'scripts')
+                    }>
+                      <span className="operation-btn" style={{color: '#ff4d4f'}}><DeleteOutlined /></span>
+                    </Popconfirm>
+                  </div>
+                </div>
+              )
+            })}
+          </div>
+          <CustomScript
+            type="fullscreen"
+            btn={this.props.card}
+            dict={this.props.dict}
+            initsql={this.state.initsql}
+            customScripts={verify.scripts}
+            defaultsql={this.state.defaultsql}
+            usefulfields={this.state.usefulfields}
+            systemScripts={this.state.systemScripts}
+            scriptsChange={this.scriptsChange}
+            wrappedComponentRef={(inst) => this.scriptsFullForm = inst}
+          />
+        </Modal>
       </div>
     )
   }
diff --git a/src/templates/zshare/verifycard/index.scss b/src/templates/zshare/verifycard/index.scss
index d3dab25..da0eef1 100644
--- a/src/templates/zshare/verifycard/index.scss
+++ b/src/templates/zshare/verifycard/index.scss
@@ -72,4 +72,141 @@
   .operation-btn:not(:first-child) {
     margin-left: 5px;
   }
+  .full-scripts {
+    position: absolute;
+    right: 0px;
+    top: 18px;
+    font-size: 18px;
+    color: #1890ff;
+  }
+}
+.model-custom-scripts-modal {
+  .ant-modal {
+    top: 30px;
+    .ant-modal-header {
+      padding: 10px 24px;
+    }
+    .ant-modal-footer {
+      display: none;
+    }
+    .ant-modal-close {
+      display: none;
+    }
+    .ant-modal-body {
+      padding: 0;
+      height: calc(100vh - 100px);
+      overflow: hidden;
+      display: flex;
+
+      .script-table-wrap {
+        width: 240px;
+        overflow-y: auto;
+        overflow-x: hidden;
+        height: calc(100vh - 100px);
+
+        .operation-btn {
+          display: inline-block;
+          font-size: 16px;
+          padding: 0 5px;
+          cursor: pointer;
+          margin-left: 5px;
+        }
+
+        .script-item {
+          border-bottom: 1px solid #eeeeee;
+          padding: 15px 10px 5px;
+        }
+        .script-item.active {
+          background-color: #bae7ff;
+        }
+        .ant-typography {
+          margin-bottom: 5px;
+        }
+      }
+
+      .script-table-wrap::-webkit-scrollbar {
+        width: 7px;
+      }
+      .script-table-wrap::-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);
+      }
+      .script-table-wrap::-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);
+      }
+
+      .unfull-scripts {
+        position: absolute;
+        right: 20px;
+        z-index: 2;
+        top: 10px;
+        color: #1890ff;
+        width: 26px;
+        cursor: pointer;
+        padding: 5px;
+    
+      }
+
+      .verify-form {
+        flex: 1;
+        >.ant-row {
+          margin: 0!important;
+          position: unset;
+        }
+        .sql {
+          padding: 0!important;
+          .ant-form-item-label {
+            display: none;
+          }
+          .ant-form-item-control-wrapper {
+            width: 100%;
+          }
+          .CodeMirror {
+            height: calc(100vh - 100px);
+            border-radius: 0;
+          }
+          .code-mirror-area {
+            border-radius: 0;
+            width: calc(95vw - 240px);
+          }
+        }
+        .sqlfield {
+          .ant-form-item {
+            margin-bottom: 5px;
+          }
+          .ant-form-item-control {
+            line-height: 24px;
+          }
+          .ant-form-item-label {
+            line-height: 25px;
+          }
+          .ant-form-item-children {
+            line-height: 22px;
+          }
+          .ant-col-sm-8 {
+            width: 10.5%;
+          }
+          .ant-col-sm-16 {
+            width: 89.5%;
+          }
+        }
+        .add {
+          position: absolute;
+          top: 10px;
+          z-index: 1;
+          .ant-btn {
+            height: 28px;
+          }
+          .mk-green {
+            margin-left: 0!important;
+            margin-right: 10px;
+          }
+        }
+      }
+    }
+  }
 }
\ No newline at end of file
diff --git a/src/utils/option.js b/src/utils/option.js
index b8b73e7..58196a7 100644
--- a/src/utils/option.js
+++ b/src/utils/option.js
@@ -163,7 +163,7 @@
   ],
   datetime: [
     {value: '', text: _dict['model.empty']},
-    {value: '0', text: '浠婂ぉ'},
+    {value: '0', text: '褰撳墠'},
     {value: 1, text: '鏄ㄥぉ'},
     {value: 3, text: '鍓嶄笁澶�'},
     {value: 7, text: '鍓嶄竷澶�'},
@@ -196,6 +196,18 @@
   }, {
     value: '=',
     text: '='
+  }, {
+    value: '>',
+    text: '>'
+  }, {
+    value: '<',
+    text: '<'
+  }, {
+    value: '>=',
+    text: '>='
+  }, {
+    value: '<=',
+    text: '<='
   }],
   multiselect: [{
     value: 'like',
@@ -205,14 +217,26 @@
     text: 'not like'
   }],
   select: [{
-    value: '=',
-    text: '='
-  }, {
     value: 'like',
     text: 'like'
   }, {
     value: 'not like',
     text: 'not like'
+  }, {
+    value: '=',
+    text: '='
+  }, {
+    value: '>',
+    text: '>'
+  }, {
+    value: '<',
+    text: '<'
+  }, {
+    value: '>=',
+    text: '>='
+  }, {
+    value: '<=',
+    text: '<='
   }],
   date: [{
     value: '>=',
@@ -923,4 +947,4 @@
   ]
 }
 
-export const queryTableSql = 'select TbName,Remark from (select TbName,Remark from sDataDictb where appkey= @appkey@ and Deleted=0 union select a.TbName,Remark from (select TbName,Remark from sDataDictb where appkey= \'\' and Deleted=0 ) a left join (select TbName from sDataDictb where appkey= @appkey@ and Deleted=0 ) b on a.TbName=b.TbName where b.TbName is null ) t'
+export const queryTableSql = 'select top 999999 TbName,Remark from (select TbName,Remark from sDataDictb where appkey= @appkey@ and Deleted=0 union select a.TbName,Remark from (select TbName,Remark from sDataDictb where appkey= \'\' and Deleted=0 ) a left join (select TbName from sDataDictb where appkey= @appkey@ and Deleted=0 ) b on a.TbName=b.TbName where b.TbName is null ) t order by TbName'
diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js
index 928c462..0d109b5 100644
--- a/src/utils/utils-custom.js
+++ b/src/utils/utils-custom.js
@@ -95,9 +95,16 @@
           children: null
         }
       } else if (item.switchable) { // 鏁版嵁鍙垏鎹�
+        let disabled = false
+        if (item.type === 'card') {
+          disabled = item.wrap.cardType === ''
+        } else if (item.type === 'table') {
+          disabled = item.wrap.tableType === ''
+        }
         return {
           value: item.uuid,
-          label: item.name
+          label: item.name,
+          disabled: disabled
         }
       } else if (item.type === 'form') { // 鏁版嵁鏍煎紡锛屽瓨鍦ㄦ暟鎹簮
         return {
@@ -332,7 +339,7 @@
    * @description 閲嶇疆鑿滃崟閰嶇疆锛岄〉闈㈡暣浣撳鍒�
    * @return {String}  components 閰嶇疆淇℃伅
    */
-  static resetConfig = (components, uuids = {}) => {
+  static resetConfig = (components, uuids = {}, clear = false) => {
     return components.map(item => {
       if (item.type === 'navbar') {
         return item
@@ -352,31 +359,59 @@
             cell.parentId = item.uuid
             return cell
           })
-          tab.components = this.resetConfig(tab.components, uuids)
+          tab.components = this.resetConfig(tab.components, uuids, clear)
         })
       } else if (item.type === 'group') {
         item.components = item.components.map(cell => {
           cell.parentId = item.uuid
           return cell
         })
-        item.components = this.resetConfig(item.components, uuids)
+        item.components = this.resetConfig(item.components, uuids, clear)
       } else if (item.type === 'menubar') {
         item.subMenus = item.subMenus.map(cell => {
           cell.uuid = this.getuuid()
+          if (clear && cell.setting.type === 'linkmenu') {
+            cell.setting.type = 'menu'
+            cell.setting.linkMenuId = ''
+          }
           return cell
         })
       } else if (['card', 'carousel', 'timeline'].includes(item.type) || (item.type === 'table' && item.subtype === 'tablecard')) {
         item.subcards.forEach(card => {
           card.uuid = this.getuuid()
+
+          if (clear) {
+            if (card.setting.click === 'menu') {
+              card.setting.click = ''
+              card.setting.menu = ''
+            } else if (card.setting.click === 'menus') {
+              card.setting.click = ''
+              card.setting.menuType = ''
+              delete card.menus
+            }
+          }
+
           if (card.elements) {
             card.elements = card.elements.map(cell => {
               cell.uuid = this.getuuid()
+
+              if (clear && cell.eleType === 'button' && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
+                cell.pageTemplate = ''
+                cell.linkmenu = ''
+              }
+              
               return cell
             })
           }
           if (card.backElements) {
             card.backElements = card.backElements.map(cell => {
               cell.uuid = this.getuuid()
+
+              if (clear && cell.eleType === 'button' && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
+                cell.pageTemplate = ''
+                cell.linkmenu = ''
+              }
+
               return cell
             })
           }
@@ -385,6 +420,12 @@
         if (item.elements) {
           item.elements = item.elements.map(cell => {
             cell.uuid = this.getuuid()
+
+            if (clear && cell.eleType === 'button' && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
+              cell.pageTemplate = ''
+              cell.linkmenu = ''
+            }
+
             return cell
           })
         }
@@ -398,11 +439,18 @@
             } else if (c.type === 'custom' && c.elements) {
               c.elements = c.elements.map(cell => {
                 cell.uuid = this.getuuid()
+
                 return cell
               })
             } else if (c.type === 'action' && c.elements) {
               c.elements = c.elements.map(cell => {
                 cell.uuid = this.getuuid()
+
+                if (clear && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
+                  cell.pageTemplate = ''
+                  cell.linkmenu = ''
+                }
+
                 return cell
               })
             }
@@ -456,6 +504,11 @@
           oriUids[cell.uuid] = _uuid
           cell.uuid = _uuid
 
+          if (clear && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
+            cell.pageTemplate = ''
+            cell.linkmenu = ''
+          }
+
           return cell
         })
       }
@@ -475,6 +528,9 @@
             })
             return cell
           })
+        }
+        if (clear && item.wrap.menus) {
+          item.wrap.menus = []
         }
       } else if (item.search) {
         item.search = item.search.map(cell => {
@@ -511,6 +567,35 @@
   }
 
   /**
+   * @description 閲嶇疆鑿滃崟閰嶇疆锛岄〉闈㈡暣浣撳鍒�
+   * @return {String}  components 閰嶇疆淇℃伅
+   */
+  static getFloor = (id) => {
+    let floor = 1
+    let finish = false
+
+    let reCheck = (components, f) => {
+      components.forEach(item => {
+        if (finish) return
+        if (item.type === 'tabs') {
+          if (item.uuid === id) {
+            floor = f
+            finish = true
+          } else {
+            item.subtabs.forEach(tab => {
+              reCheck(tab.components, f + 1)
+            })
+          }
+        }
+      })
+    }
+
+    reCheck(window.GLOB.customMenu.components, 1)
+
+    return floor
+  }
+
+  /**
    * @description 鏁版嵁婧愬悕绉帮紝鐢ㄤ簬缁熶竴鏌ヨ
    * @return {String}  name
    */
diff --git a/src/utils/utils-datamanage.js b/src/utils/utils-datamanage.js
index 4b98d65..6c428a5 100644
--- a/src/utils/utils-datamanage.js
+++ b/src/utils/utils-datamanage.js
@@ -200,7 +200,7 @@
     }
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
-    if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
+    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
       _customScript && console.info(`${setting.$name ? `/*${setting.$name} 鑷畾涔夎剼鏈�*/\n` : ''}${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
       LText && console.info(`${setting.$name ? `/*${setting.$name} 鏁版嵁婧�*/\n` : ''}` + LText)
     }
@@ -339,7 +339,7 @@
     }
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
-    if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
+    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
       _customScript &&  console.info(`${setting.$name ? `/*${setting.$name} 鑷畾涔夎剼鏈� 缁熻鏌ヨ*/\n` : ''}${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
       LText &&  console.info(`${setting.$name ? `/*${setting.$name} 鏁版嵁婧� 缁熻鏌ヨ*/\n` : ''}` + LText)
     }
@@ -462,7 +462,7 @@
       })
 
       // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
-      if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
+      if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
         console.info(sql.replace(/\n\s{8}/ig, '\n'))
       }
     }
@@ -537,7 +537,7 @@
     sql = _prevCustomScript + sql
     sql = sql + _backCustomScript
 
-    if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) {
+    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
       console.info(sql.replace(/\n\s{8}/ig, '\n'))
     }
 
@@ -695,7 +695,7 @@
   }
 
   // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
-  if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
+  if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
     _customScript && console.info(`${setting.$name ? `/*${setting.$name} 鑷畾涔夎剼鏈紙鍚屾鏌ヨ锛�*/\n` : ''}${_dataresource ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
     _dataresource && console.info(`${setting.$name ? `/*${setting.$name} 鏁版嵁婧愶紙鍚屾鏌ヨ锛�*/\n` : ''}` + _dataresource)
   }
diff --git a/src/utils/utils.js b/src/utils/utils.js
index e195f6b..91cd72f 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -251,20 +251,43 @@
       item.$forbid = item.query === 'false'
 
       if (item.type === 'date') { // 鏃堕棿鎼滅储
-        item.initval = item.initval ? moment().subtract(item.initval, 'days').format('YYYY-MM-DD') : ''
+        item.precision = item.precision || 'day'
+        let format = 'YYYY-MM-DD'
+        if (item.precision === 'day') {
+
+        } else if (item.precision === 'hour') {
+          format = 'YYYY-MM-DD HH'
+        } else if (item.precision === 'minute') {
+          format = 'YYYY-MM-DD HH:mm'
+        } else if (item.precision === 'second') {
+          format = 'YYYY-MM-DD HH:mm:ss'
+        }
+
+        item.initval = item.initval ? moment().subtract(item.initval, 'days').format(format) : ''
       } else if (item.type === 'datemonth') {
         item.initval = item.initval ? moment().subtract(item.initval, 'month').format('YYYY-MM') : ''
       } else if (item.type === 'dateweek') {
         item.initval = item.initval ? moment().subtract(item.initval * 7, 'days').format('YYYY-MM-DD') : ''
       } else if (item.type === 'daterange') {
+        item.precision = item.precision || 'day'
+        let format = 'YYYY-MM-DD'
+        if (item.precision === 'day') {
+
+        } else if (item.precision === 'hour') {
+          format = 'YYYY-MM-DD HH'
+        } else if (item.precision === 'minute') {
+          format = 'YYYY-MM-DD HH:mm'
+        } else if (item.precision === 'second') {
+          format = 'YYYY-MM-DD HH:mm:ss'
+        }
         if (item.initval === 'week') {
-          item.initval = [moment().startOf('week').format('YYYY-MM-DD'), moment().endOf('week').format('YYYY-MM-DD')].join(',')
+          item.initval = [moment().startOf('week').format(format), moment().endOf('week').format(format)].join(',')
         } else if (item.initval === 'month') {
-          item.initval = [moment().startOf('month').format('YYYY-MM-DD'), moment().endOf('month').format('YYYY-MM-DD')].join(',')
+          item.initval = [moment().startOf('month').format(format), moment().endOf('month').format(format)].join(',')
         } else if (item.initval) {
           try {
             let _initval = JSON.parse(item.initval)
-            let _vals = [moment().subtract(_initval[0], 'days').format('YYYY-MM-DD'), moment().subtract(_initval[1], 'days').format('YYYY-MM-DD')]
+            let _vals = [moment().subtract(_initval[0], 'days').format(format), moment().subtract(_initval[1], 'days').format(format)]
             item.initval = _vals.join(',')
           } catch (e) {
             item.initval = ''
@@ -358,6 +381,7 @@
         label: cell.label,
         value: cell.initval,
         required: cell.required,
+        precision: cell.precision || '',
         forbid: cell.$forbid
       }
       
@@ -398,10 +422,18 @@
         let _val = item.value || ''
 
         if (_val) {
-          if (item.match === '<' || item.match === '<=') {
-            _val = moment(_val, 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000'
-          } else if (item.match === '>' || item.match === '>=') {
-            _val = _val + ' 00:00:00.000'
+          if (item.precision === 'day') {
+            if (item.match === '<' || item.match === '<=') {
+              _val = moment(_val, 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000'
+            } else if (item.match === '>' || item.match === '>=') {
+              _val = _val + ' 00:00:00.000'
+            }
+          } else if (item.precision === 'hour') {
+            _val = _val + ':00:00.000'
+          } else if (item.precision === 'minute') {
+            _val = _val + ':00.000'
+          } else if (item.precision === 'second') {
+            _val = _val + '.000'
           }
         }
 
@@ -437,8 +469,20 @@
         let _endval = ''
         if (item.value) {
           let val = item.value.split(',')
-          _startval = val[0] + ' 00:00:00.000'
-          _endval = moment(val[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000'
+
+          if (item.precision === 'day') {
+            _startval = val[0] + ' 00:00:00.000'
+            _endval = moment(val[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000'
+          } else if (item.precision === 'hour') {
+            _startval = val[0] + ':00:00.000'
+            _endval = val[1] + ':00:00.000'
+          } else if (item.precision === 'minute') {
+            _startval = val[0] + ':00.000'
+            _endval = val[1] + ':00.000'
+          } else if (item.precision === 'second') {
+            _startval = val[0] + '.000'
+            _endval = val[1] + '.000'
+          }
         }
 
         newsearches[item.key] = _startval
@@ -463,59 +507,87 @@
   static joinMainSearchkey (searches) {
     if (!searches || searches.length === 0) return ''
 
-    let searchText = ''
+    let searchText = []
     searches.forEach(item => {
       if (item.forbid || !item.value) return
       
-      searchText += (searchText !== '' ? ' AND ' : '')
       if (item.type === 'text' || item.type === 'select') { // 缁煎悎鎼滅储锛屾枃鏈垨涓嬫媺锛屾墍鏈夊瓧娈垫嫾鎺�
-        let str = item.match === '=' ? '' : '%'
+        let str = item.match === 'like' || item.match === 'not like' ? '%' : ''
         let fields = item.key.split(',').map(field => {
           return field + ' ' + item.match + ' \'' + str + item.value + str + '\''
         })
 
-        searchText += '(' + fields.join(' OR ') + ')'
+        searchText.push('(' + fields.join(' OR ') + ')')
+      } else if (item.type === 'checkcard') {
+        let str = item.match === 'like' || item.match === 'not like' ? '%' : ''
+
+        searchText.push('(' + item.key + ' ' + item.match + ' \'' + str + item.value + str + '\')')
       } else if (item.type === 'multi') {
-        searchText += `'${item.value}' ${item.match} '%'+${item.key}+'%'`
+        searchText.push(`('${item.value}' ${item.match} '%'+${item.key}+'%')`)
       } else if (item.type === 'date') {
         let _val = item.value
-        let timetail = ' 00:00:00.000'
+        let timetail = ''
         let _match = item.match
 
         if (item.match === '<' || item.match === '<=') { // 鏃堕棿涓�<=鏃讹紝鍖归厤鍚庝竴澶╃殑0鐐癸紝鍖归厤鏂瑰紡涓�<
           _match = '<'
-          _val = moment(_val, 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD')
-        } else if (item.match === '=') {
+          if (item.precision === 'day') {
+            _val = moment(_val, 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD')
+          }
+        }
+        if (item.match === '=') {
           timetail = ''
+        } else if (item.precision === 'day') {
+          timetail = ' 00:00:00.000'
+        } else if (item.precision === 'hour') {
+          timetail = ':00:00.000'
+        } else if (item.precision === 'minute') {
+          timetail = ':00.000'
+        } else if (item.precision === 'second') {
+          timetail = '.000'
         }
 
-        searchText += '(' + item.key + ' ' + _match + ' \'' + _val + timetail + '\')'
+        searchText.push('(' + item.key + ' ' + _match + ' \'' + _val + timetail + '\')')
       } else if (item.type === 'datemonth') { // 鏈�-杩囨护鏉′欢锛屼粠鏈堝紑濮嬭嚦缁撴潫锛岀粨鏉熸椂闂翠负鏈堟湯鍔犱竴澶╃殑0鐐癸紝鏂瑰紡涓�<
         let _startval = moment(item.value, 'YYYY-MM').startOf('month').format('YYYY-MM-DD') + ' 00:00:00.000'
         let _endval = moment(item.value, 'YYYY-MM').endOf('month').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000'
 
-        searchText += '(' + item.key + ' >= \'' + _startval + '\' AND ' + item.key + ' < \'' + _endval + '\')'
+        searchText.push('(' + item.key + ' >= \'' + _startval + '\' AND ' + item.key + ' < \'' + _endval + '\')')
       } else if (item.type === 'dateweek') { // 鍛�-杩囨护鏉′欢
         let _startval = moment(item.value, 'YYYY-MM-DD' ).startOf('week').format('YYYY-MM-DD') + ' 00:00:00.000'
         let _endval = moment(item.value, 'YYYY-MM-DD').endOf('week').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000'
 
-        searchText += '(' + item.key + ' >= \'' + _startval + '\' AND ' + item.key + ' < \'' + _endval + '\')'
+        searchText.push('(' + item.key + ' >= \'' + _startval + '\' AND ' + item.key + ' < \'' + _endval + '\')')
       } else if (item.type === 'daterange') {
         let val = item.value.split(',')
-        let _startval = val[0] + ' 00:00:00.000'
-        let _endval = moment(val[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000'
+        let _startval = ''
+        let _endval = ''
 
-        searchText += '(' + item.key + ' >= \'' + _startval + '\' AND ' + item.key + ' < \'' + _endval + '\')'
+        if (item.precision === 'day') {
+          _startval = val[0] + ' 00:00:00.000'
+          _endval = moment(val[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000'
+        } else if (item.precision === 'hour') {
+          _startval = val[0] + ':00:00.000'
+          _endval = val[1] + ':00:00.000'
+        } else if (item.precision === 'minute') {
+          _startval = val[0] + ':00.000'
+          _endval = val[1] + ':00.000'
+        } else if (item.precision === 'second') {
+          _startval = val[0] + '.000'
+          _endval = val[1] + '.000'
+        }
+
+        searchText.push('(' + item.key + ' >= \'' + _startval + '\' AND ' + item.key + ' < \'' + _endval + '\')')
       } else if (item.type === 'range') {
         let val = item.value.split(',')
 
-        searchText += '(' + item.key + ' >= \'' + val[0] + '\' AND ' + item.key + ' < \'' + val[1] + '\')'
+        searchText.push('(' + item.key + ' >= \'' + val[0] + '\' AND ' + item.key + ' < \'' + val[1] + '\')')
       } else {
-        searchText += '(' + item.key + ' ' + item.match + ' \'' + item.value + '\')'
+        searchText.push('(' + item.key + ' ' + item.match + ' \'' + item.value + '\')')
       }
     })
 
-    return searchText
+    return searchText.join(' AND ')
   }
 
   /**
@@ -543,10 +615,24 @@
       fieldmap.set(item.key, true)
 
       if (item.type === 'date') {
-        if (['>=', '>'].includes(item.match)) {
-          item.value = item.value ? item.value + ' 00:00:00.000' : '1970-01-01 00:00:00.000'
-        } else if (['<=', '<'].includes(item.match)) {
-          item.value = item.value ? moment(item.value, 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000' : '2050-01-01 00:00:00.000'
+        if (!item.value) {
+          if (['>=', '>'].includes(item.match)) {
+            item.value = '1970-01-01 00:00:00.000'
+          } else if (['<=', '<'].includes(item.match)) {
+            item.value = '2050-01-01 00:00:00.000'
+          }
+        } else if (search.precision === 'day') {
+          if (['>=', '>'].includes(item.match)) {
+            item.value = item.value + ' 00:00:00.000'
+          } else if (['<=', '<'].includes(item.match)) {
+            item.value = moment(item.value, 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000'
+          }
+        } else if (search.precision === 'hour') {
+          item.value = item.value + ':00:00.000'
+        } else if (search.precision === 'minute') {
+          item.value = item.value + ':00.000'
+        } else if (search.precision === 'second') {
+          item.value = item.value + '.000'
         }
 
         options.push(item)
@@ -577,11 +663,23 @@
       } else if (item.type === 'daterange') {
         let _startval = '1970-01-01 00:00:00.000'
         let _endval = '2050-01-01 00:00:00.000'
-        
+
         if (item.value) {
           let val = item.value.split(',')
-          _startval = val[0] + ' 00:00:00.000'
-          _endval = moment(val[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000'
+
+          if (search.precision === 'day') {
+            _startval = val[0] + ' 00:00:00.000'
+            _endval = moment(val[1], 'YYYY-MM-DD').add(1, 'days').format('YYYY-MM-DD') + ' 00:00:00.000'
+          } else if (search.precision === 'hour') {
+            _startval = val[0] + ':00:00.000'
+            _endval = val[1] + ':00:00.000'
+          } else if (search.precision === 'minute') {
+            _startval = val[0] + ':00.000'
+            _endval = val[1] + ':00.000'
+          } else if (search.precision === 'second') {
+            _startval = val[0] + '.000'
+            _endval = val[1] + '.000'
+          }
         }
 
         let copy = JSON.parse(JSON.stringify(item))
@@ -756,7 +854,7 @@
       sql = sql.replace(/@db@/ig, window.GLOB.externalDatabase)
     }
 
-    if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) {
+    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
       console.info(sql)
     }
 
@@ -1048,7 +1146,7 @@
       
       aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg`
 
-    if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) {
+    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
       let fsql = `
       ${_sql}
       ${_sqlInsert}
@@ -1114,19 +1212,6 @@
   
   database = database ? (database[0] || '') : ''
 
-  let getuuid = () => {
-    let uuid = []
-    let timestamp = new Date().getTime()
-    let _options = '0123456789abcdefghigklmnopqrstuv'
-    for (let i = 0; i < 19; i++) {
-      uuid.push(_options.substr(Math.floor(Math.random() * 0x20), 1))
-    }
-    uuid = timestamp + uuid.join('')
-    return uuid
-  }
-
-  // let upId = getuuid()
-
   let _initCustomScript = '' // 鍒濆鍖栬剼鏈�
   let _prevCustomScript = '' // 榛樿sql鍓嶆墽琛岃剼鏈�
   let _backCustomScript = '' // 榛樿sql鍚庢墽琛岃剼鏈�
@@ -1168,13 +1253,7 @@
     })
 
     let key = item.$$uuid
-    let type = 'upt'
-    if (key === '$new') {
-      key = getuuid()
-      type = 'add'
-    } else if (item.$deleted) {
-      type = 'del'
-    }
+    let type = item.$type || 'upt'
 
     vals.push(`'${key}'`)
     vals.push(`'${type}'`)
@@ -1279,7 +1358,7 @@
       
       aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg`
 
-    if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) {
+    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
       let fsql = `
       ${_sql}
       ${_sqlInsert}
@@ -1395,7 +1474,7 @@
         }
         _initFormfields.push(`@${_key}=${val}`)
       } else if (['date', 'datemonth', 'datetime'].includes(form.type)) {
-        _initFormfields.push(`@${_key}='${form.value || '1900-01-01'}'`)
+        _initFormfields.push(`@${_key}='${form.value || '1949-10-01'}'`)
       } else {
         _initFormfields.push(`@${_key}='${form.value}'`)
       }
@@ -1440,7 +1519,7 @@
         let _val = datavars.hasOwnProperty(_key) ? datavars[_key] : ''
 
         if (col.datatype && /^date/ig.test(col.datatype) && !_val) {
-          _val = '1900-01-01'
+          _val = '1949-10-01'
         }
 
         _initvars.push(_key)
@@ -2026,7 +2105,7 @@
       aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg`
   }
 
-  if ((window.GLOB.systemType !== 'production' && options.sysType !== 'cloud') || window.debugger === true) {
+  if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
     // _sql = _sql.replace(/\n\s{8}/ig, '\n')
     console.info(_sql)
   }
@@ -2048,6 +2127,7 @@
   let icon = null
   let color = null
   let position = null
+  style = JSON.parse(JSON.stringify(style))
 
   marks.some(mark => {
     let originVal = record[mark.field[0]] + ''
diff --git a/src/views/appmanage/index.jsx b/src/views/appmanage/index.jsx
index a9081be..bfff01d 100644
--- a/src/views/appmanage/index.jsx
+++ b/src/views/appmanage/index.jsx
@@ -474,6 +474,11 @@
               cell.statusBarColor = _param.statusBarColor || 'black'
               cell.sysBgColor = _param.sysBgColor || '#ffffff'
               cell.adapter = _param.adapter || ''
+              cell.share = _param.share || 'false' // 鍒嗕韩
+              cell.share_des = _param.share_des || '' // 鍒嗕韩鎻忚堪
+              cell.share_url = _param.share_url || '' // 鍒嗕韩鍥剧墖
+              cell.share_link = _param.share_link || '' // 鍒嗕韩閾炬帴
+
               if (cell.adapter && (cell.adapter === 'true' || cell.adapter === 'false')) {
                 cell.adapter = ''
               }
@@ -484,6 +489,9 @@
 
             if (cell.user_binding !== 'true') {
               cell.user_binding = 'false'
+            }
+            if (cell.share !== 'true') {
+              cell.share = 'false'
             }
 
             if (!cell.adapter && cell.apptype) {
@@ -499,6 +507,23 @@
 
           return item
         })
+
+        if (!selectApp && applist[0]) {
+          let _href = window.location.href.split('#')[0] + 'app_record'
+          let record = localStorage.getItem(_href)
+          record = record ? JSON.parse(record) : null
+          
+          if (record) {
+            if (record.activeId) {
+              let index = applist.findIndex(item => item.ID === record.activeId)
+              if (index === -1) {
+                localStorage.setItem(_href, JSON.stringify({preId: '', activeId: ''}))
+              } else if (index !== 0) {
+                applist.unshift(...applist.splice(index, 1))
+              }
+            }
+          }
+        }
 
         if (!selectApp && applist[0]) {
           selectApp = applist[0]
@@ -632,7 +657,7 @@
     })
 
     // 瀛愬簲鐢↖D銆乼ypename銆佸簲鐢↖D銆丆loudUserID銆乤ppkey銆乴ogin_types(鏄惁闇�瑕佺櫥褰曪紝宸插純鐢�)銆乴ink_type(鏄惁浣跨敤鐭繛鎺ワ紝宸插純鐢�)銆乺ole_type(鏄惁浣跨敤瑙掕壊绠$悊)銆乴ang銆乧ss(鐨偆)銆乼itle(鏍囬)銆乫avicon(鍥炬爣)銆乽ser_binding(鐢ㄦ埛缁戝畾)銆乻ms_id(鐭俊妯℃澘ID)銆佽嚜瀹氫箟
-    param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || 'false'}','','${window.btoa(window.encodeURIComponent(JSON.stringify({userbind: item.userbind || '', instantMessage: item.instantMessage || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || ''})))}'`)
+    param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || 'false'}','','${window.btoa(window.encodeURIComponent(JSON.stringify({userbind: item.userbind || '', instantMessage: item.instantMessage || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || '', share: item.share || '', share_des: item.share_des || '', share_url: item.share_url || '', share_link: item.share_link || ''})))}'`)
     param.LText = param.LText.join(' union all ')
     param.LText = Utils.formatOptions(param.LText)
     
@@ -672,6 +697,20 @@
   
   jumpApp = (item) => {
     const { selectApp } = this.state
+
+    let _href = window.location.href.split('#')[0] + 'app_record'
+    let record = localStorage.getItem(_href)
+    record = record ? JSON.parse(record) : null
+
+    if (!record) {
+      localStorage.setItem(_href, JSON.stringify({preId: selectApp.ID, activeId: ''}))
+    } else {
+      if (record.preId === selectApp.ID) {
+        localStorage.setItem(_href, JSON.stringify({preId: selectApp.ID, activeId: selectApp.ID}))
+      } else {
+        localStorage.setItem(_href, JSON.stringify({...record, preId: selectApp.ID}))
+      }
+    }
 
     let route = 'mobdesign'
     if (item.typename === 'pc') {
@@ -863,7 +902,7 @@
           return item
         })
 
-        param.LText = selectApp.sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || 'false'}','','${window.btoa(window.encodeURIComponent(JSON.stringify({userbind: item.userbind || '', instantMessage: item.instantMessage || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || ''})))}'`)
+        param.LText = selectApp.sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || 'false'}','','${window.btoa(window.encodeURIComponent(JSON.stringify({userbind: item.userbind || '', instantMessage: item.instantMessage || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || '', share: item.share || '', share_des: item.share_des || '', share_url: item.share_url || '', share_link: item.share_link || ''})))}'`)
         param.LText = param.LText.join(' union all ')
         param.LText = Utils.formatOptions(param.LText)
       }
@@ -956,7 +995,7 @@
         return item
       })
 
-      param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || 'false'}','','${window.btoa(window.encodeURIComponent(JSON.stringify({userbind: item.userbind || '', instantMessage: item.instantMessage || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || ''})))}'`)
+      param.LText = sublist.map(item => `select '${item.ID}','${item.typename}','${selectApp.ID}','${sessionStorage.getItem('CloudUserID') || ''}','${window.GLOB.appkey || ''}','false','false','${item.role_type || 'true'}','${item.lang || 'zh-CN'}','${item.css || ''}','${item.title || ''}','${item.favicon || ''}','${item.user_binding || 'false'}','','${window.btoa(window.encodeURIComponent(JSON.stringify({userbind: item.userbind || '', instantMessage: item.instantMessage || '', apptype: item.apptype || '', delay: item.delay || 0, statusBarColor: item.statusBarColor || 'black', sysBgColor: item.sysBgColor || '#ffffff', adapter: item.adapter || '', share: item.share || '', share_des: item.share_des || '', share_url: item.share_url || '', share_link: item.share_link || ''})))}'`)
       param.LText = param.LText.join(' union all ')
       param.LText = Utils.formatOptions(param.LText)
 
@@ -1075,8 +1114,12 @@
                 let color = skinStyle[item.css] ? skinStyle[item.css].color : '#e8e8e8'
                 let binding = ''
                 if (item.user_binding === 'true') {
-                  binding = '闇�瑕�'
+                  binding = '鐢ㄦ埛缁戝畾'
                 }
+                if (item.share === 'true') {
+                  binding = binding ? binding + '銆佸垎浜�' : '鍒嗕韩'
+                }
+
                 return (
                   <div className="sub-app" key={index} style={{borderColor: color}}>
                     <Row>
@@ -1112,10 +1155,16 @@
                       </Col>
                       <Col span={12}>
                         <div className="app-item">
-                          {binding ? <div className="label">
+                          {/* {binding ? <div className="label">
                             <Tooltip placement="topLeft" title="寰俊鍏紬鍙风櫥褰曟椂锛岀郴缁熺敤鎴蜂笌寰俊鐢ㄦ埛鐨勭粦瀹氭柟寮忋��">
                               <QuestionCircleOutlined className="mk-form-tip" />
                               鐢ㄦ埛缁戝畾:
+                            </Tooltip>
+                          </div> : null} */}
+                          {binding ? <div className="label">
+                            <Tooltip placement="topLeft" title="寰俊鍏紬鍙锋垨灏忕▼搴忎腑锛岀粦瀹氱郴缁熺敤鎴枫�佽嚜瀹氫箟鍒嗕韩绛夊姛鑳姐��">
+                              <QuestionCircleOutlined className="mk-form-tip" />
+                              鎵╁睍鍔熻兘:
                             </Tooltip>
                           </div> : null}
                           <div className="content">{binding}</div>
@@ -1130,7 +1179,7 @@
                       <Col span={12}>
                         <div className="app-item">
                           <div className="label">缃戠珯澶村儚:</div>
-                          <div className="content">{item.favicon ? <img style={{width: '18px', height: '18px'}} src={item.favicon} alt="" /> : '鏃�'}</div>
+                          <div className="content">{item.favicon ? <img style={{width: '18px', height: '18px', borderRadius: '4px'}} src={item.favicon} alt="" /> : '鏃�'}</div>
                         </div>
                       </Col>
                     </Row>
diff --git a/src/views/appmanage/scriptform/index.jsx b/src/views/appmanage/scriptform/index.jsx
index 39bd2ee..be8c9af 100644
--- a/src/views/appmanage/scriptform/index.jsx
+++ b/src/views/appmanage/scriptform/index.jsx
@@ -224,9 +224,10 @@
                   message: '璇烽�夋嫨椤甸潰!'
                 }]
               })(
-                <Select>
+                <Select showSearch filterOption={(input, option) => option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0 || 
+                  option.props.extra.toLowerCase().indexOf(input.toLowerCase()) >= 0}>
                   {views.map(item => {
-                    return <Select.Option key={item.MenuID} value={item.MenuID}>{item.MenuName}</Select.Option>
+                    return <Select.Option key={item.MenuID} extra={item.MenuNo || ''} value={item.MenuID}>{item.MenuName}</Select.Option>
                   })}
                 </Select>
               )}
diff --git a/src/views/appmanage/submutilform/index.jsx b/src/views/appmanage/submutilform/index.jsx
index bc52f1f..8f21434 100644
--- a/src/views/appmanage/submutilform/index.jsx
+++ b/src/views/appmanage/submutilform/index.jsx
@@ -16,19 +16,29 @@
     inputSubmit: PropTypes.func  // input鍥炶溅鎻愪氦
   }
 
-  state = {typename: 'mob', adapters: []}
+  state = {typename: 'mob', adapters: [], exts: []}
 
   UNSAFE_componentWillMount() {
     const { card } = this.props
     let adapters = []
+    let exts = []
     let typename = 'mob'
 
     if (card) {
       typename = card.typename || 'mob'
       adapters = card.adapter ? card.adapter.split(',') : []
+
+      if (typename !== 'pc') {
+        if (card.user_binding === 'true') {
+          exts.push('user_binding')
+        }
+        if (card.share === 'true') {
+          exts.push('share')
+        }
+      }
     }
 
-    this.setState({typename, adapters})
+    this.setState({typename, adapters, exts})
   }
 
   /**
@@ -38,31 +48,25 @@
     return new Promise(resolve => {
       this.props.form.validateFieldsAndScroll((err, values) => {
         if (!err) {
-          // values.user_binding = values.user_binding ? values.user_binding.join(',') : ''
           values.adapter = values.adapter ? values.adapter.join(',') : ''
-          // if (values.user_binding.indexOf('sms_vcode') > -1 && !values.sms_id) {
-          //   notification.warning({
-          //     top: 92,
-          //     message: '鎵嬫満鍙风粦瀹氭椂锛岄渶瑕佺煭淇℃ā鏉匡紒',
-          //     duration: 5
-          //   })
-          //   return
-          // }
+
+          if (values.exts) {
+            values.user_binding = values.exts.includes('user_binding') ? 'true' : 'false'
+            values.share = values.exts.includes('share') ? 'true' : 'false'
+            delete values.exts
+          }
+
           resolve(values)
         }
       })
     })
   }
 
-  // onChange = (vals) => {
-  //   this.setState({user_binding: vals})
-  // }
-
   onAdapterChange = (vals) => {
+    if (!vals.includes('weixin') && !vals.includes('wxmini')) {
+      this.setState({exts: []})
+    }
     this.setState({adapters: vals})
-    // if (!vals.includes('weixin') && !vals.includes('wxmini')) {
-    //   this.setState({user_binding: []})
-    // }
   }
 
   /**
@@ -76,7 +80,7 @@
   render() {
     const { card, type } = this.props
     const { getFieldDecorator } = this.props.form
-    const { typename, adapters } = this.state
+    const { typename, adapters, exts } = this.state
     const formItemLayout = {
       labelCol: {
         xs: { span: 24 },
@@ -166,6 +170,23 @@
             </Form.Item>
           </Col> : null}
           {typename !== 'pc' && (adapters.includes('weixin') || adapters.includes('wxmini')) ? <Col span={12}>
+            <Form.Item label={
+              <Tooltip placement="topLeft" title="鍦ㄥ叕浼楀彿鎴栧皬绋嬪簭涓紝鍙坊鍔犵粦瀹氱郴缁熺敤鎴枫�佽嚜瀹氫箟鍒嗕韩绛夊姛鑳斤紝鑷畾涔夊垎浜缃悗锛屽綋鍓嶅瓙搴旂敤灏嗛粯璁や娇鐢ㄦ鍒嗕韩閾炬帴銆�">
+                <QuestionCircleOutlined className="mk-form-tip" />
+                鎵╁睍鍔熻兘
+              </Tooltip>
+            }>
+              {getFieldDecorator('exts', {
+                initialValue: exts
+              })(
+                <Checkbox.Group onChange={(vals) => this.setState({exts: vals})}>
+                  <Checkbox value="user_binding">鐢ㄦ埛缁戝畾</Checkbox>
+                  <Checkbox value="share">鍒嗕韩</Checkbox>
+                </Checkbox.Group>
+              )}
+            </Form.Item>
+          </Col> : null}
+          {/* {typename !== 'pc' && (adapters.includes('weixin') || adapters.includes('wxmini')) ? <Col span={12}>
             <Form.Item label="鐢ㄦ埛缁戝畾">
               {getFieldDecorator('user_binding', {
                 initialValue: card ? card.user_binding : 'false'
@@ -174,42 +195,59 @@
                   <Radio value="true">闇�瑕�</Radio>
                   <Radio value="false">涓嶉渶瑕�</Radio>
                 </Radio.Group>
-                // <Checkbox.Group onChange={this.onChange}>
-                //   <Checkbox value="uname_pwd">璐﹀彿</Checkbox>
-                //   <Checkbox value="sms_vcode">鎵嬫満鐭俊</Checkbox>
-                // </Checkbox.Group>
-              )}
-            </Form.Item>
-          </Col> : null}
-          {/* {typename !== 'pc' && user_binding.includes('sms_vcode') ? <Col span={12}>
-            <Form.Item label={
-              <Tooltip placement="topLeft" title="鐭俊妯℃澘鍙湪 浜戠郴缁�->搴旂敤鏈嶅姟->寮�鍙戣�呬腑蹇�->鐭俊妯℃澘 澶勬坊鍔犮��">
-                <QuestionCircleOutlined className="mk-form-tip" />
-                鐭俊妯℃澘
-              </Tooltip>
-            }>
-              {getFieldDecorator('sms_id', {
-                initialValue: card ? card.sms_id || '' : '',
-                rules: [{
-                  required: true,
-                  message: '浣跨敤鎵嬫満鐭俊鏃惰閫夋嫨鐭俊妯℃澘!'
-                }]
-              })(
-                <Select allowClear>
-                  {msgs.map(option =>
-                    <Select.Option key={option.ID} value={option.ID}>{option.SignName + ' - ' + option.TemplateCode}</Select.Option>
-                  )}
-                </Select>
               )}
             </Form.Item>
           </Col> : null} */}
           <Col span={12}>
-            <Form.Item label="鏍囬">
+            <Form.Item label={
+              exts.includes('share') ?
+              <Tooltip placement="topLeft" title="瀛愬簲鐢ㄥ強鍒嗕韩鏃剁殑鏍囬銆�">
+                <QuestionCircleOutlined className="mk-form-tip" />
+                鏍囬
+              </Tooltip> : '鏍囬'
+            }>
               {getFieldDecorator('title', {
-                initialValue: card ? card.title || '' : ''
+                initialValue: card ? card.title || '' : '',
+                rules: exts.includes('share') ? [{
+                  required: true,
+                  message: '璇峰~鍐欐爣棰�!'
+                }] : []
               })(<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} />)}
             </Form.Item>
           </Col>
+          {exts.includes('share') ? <Col span={12}>
+            <Form.Item label={
+              <Tooltip placement="topLeft" title="鍒嗕韩鏃剁殑鎻忚堪淇℃伅銆�">
+                <QuestionCircleOutlined className="mk-form-tip" />
+                鍒嗕韩鎻忚堪
+              </Tooltip>
+            }>
+              {getFieldDecorator('share_des', {
+                initialValue: card ? card.share_des || '' : ''
+              })(<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} />)}
+            </Form.Item>
+          </Col> : null}
+          {exts.includes('share') ? <Col span={12}>
+            <Form.Item label="鍒嗕韩鍥剧墖">
+              {getFieldDecorator('share_url', {
+                initialValue: card ? card.share_url : ''
+              })(
+                <SourceComponent type="picture" placement="right"/>
+              )}
+            </Form.Item>
+          </Col> : null}
+          {exts.includes('share') ? <Col span={12}>
+            <Form.Item label="鍒嗕韩閾炬帴">
+              {getFieldDecorator('share_link', {
+                initialValue: card ? card.share_link || 'main' : 'main'
+              })(
+                <Radio.Group>
+                  <Radio value="main">搴旂敤鍏ュ彛</Radio>
+                  <Radio value="view">椤甸潰閾炬帴</Radio>
+                </Radio.Group>
+              )}
+            </Form.Item>
+          </Col> : null}
           <Col span={12}>
             <Form.Item label="缃戠珯澶村儚">
               {getFieldDecorator('favicon', {
@@ -219,35 +257,9 @@
               )}
             </Form.Item>
           </Col>
-          {/* {typename !== 'pc' && user_binding.length > 0 ? <Col span={12}>
-            <Form.Item label={
-              <Tooltip placement="topLeft" title="浣跨敤寰俊鎺堟潈鐧诲綍鏃讹紝缁戝畾鐢ㄦ埛椤甸潰鐨勭増鏉冨0鏄庯紝娉細鍙坊鍔爃tml鏍囩銆�">
-                <QuestionCircleOutlined className="mk-form-tip" />
-                鐗堟潈
-              </Tooltip>
-            }>
-              {getFieldDecorator('copyright', {
-                initialValue: card ? card.copyright || '' : ''
-              })(<Input placeholder="" autoComplete="off" onPressEnter={this.handleSubmit} />)}
-            </Form.Item>
-          </Col> : null}
-          {typename !== 'pc' && user_binding.length > 0 ? <Col span={12}>
-            <Form.Item label={
-              <Tooltip placement="topLeft" title="浣跨敤寰俊鎺堟潈鐧诲綍鏃讹紝缁戝畾鐢ㄦ埛椤甸潰鐨凩OGO銆�">
-                <QuestionCircleOutlined className="mk-form-tip" />
-                LOGO
-              </Tooltip>
-            }>
-              {getFieldDecorator('logo', {
-                initialValue: card ? card.logo : ''
-              })(
-                <SourceComponent type="picture" placement="right"/>
-              )}
-            </Form.Item>
-          </Col> : null} */}
           {typename !== 'pc' && adapters.includes('app') ? <Col span={12}>
             <Form.Item label={
-              <Tooltip placement="topLeft" title="鍦ㄤ娇鐢ㄦ槑绉戜簯APP鏃讹紝椤甸潰鐨勫垏鎹㈡ā寮�">
+              <Tooltip placement="topLeft" title="鍦ㄤ娇鐢ㄦ槑绉戜簯APP鏃讹紝椤甸潰鐨勫垏鎹㈡ā寮忋�傛敞锛氳嫻鏋淎PP鏆備笉鏀寔H5妯″紡銆�">
                 <QuestionCircleOutlined className="mk-form-tip" />
                 搴旂敤妯″紡
               </Tooltip>
diff --git a/src/views/billprint/index.jsx b/src/views/billprint/index.jsx
index a3764b8..d1e8084 100644
--- a/src/views/billprint/index.jsx
+++ b/src/views/billprint/index.jsx
@@ -5,9 +5,9 @@
 
 import Api from '@/api'
 import Utils from '@/utils/utils.js'
+import options, { styles } from '@/store/options.js'
 import zhCN from '@/locales/zh-CN/main.js'
 import enUS from '@/locales/en-US/main.js'
-import options from '@/store/options.js'
 import UtilsDM from '@/utils/utils-datamanage.js'
 import NotFount from '@/components/404'
 import asyncComponent from '@/utils/asyncComponent'
@@ -25,6 +25,7 @@
 const NormalTable = asyncComponent(() => import('@/tabviews/custom/components/table/normal-table'))
 const SandBox = asyncComponent(() => import('@/tabviews/custom/components/code/sand-box'))
 const TimeLine = asyncComponent(() => import('@/tabviews/custom/components/timeline/normal-timeline'))
+const Balcony = asyncComponent(() => import('@/tabviews/custom/components/card/balcony'))
 
 class BillPrint extends Component {
   state = {
@@ -36,26 +37,38 @@
     data: '',
     tempId: '',
     config: null,
+    auto: true
   }
 
   UNSAFE_componentWillMount() {
-    try {
-      let param = JSON.parse(window.decodeURIComponent(window.atob(this.props.match.params.param)))
+    const { params } = this.props.match
 
-      sessionStorage.setItem('dataM', param.dataM || '')
-      sessionStorage.setItem('localDataM', param.dataM || '')
+    if (params.menuId) {
       this.setState({
-        BID: param.id || '',
-        tempId: param.tempId
+        BID: params.id || '',
+        tempId: params.menuId
       }, () => {
-        this.getMenuParam()
+        this.getTouristMsg()
       })
-    } catch (e) {
-      notification.warning({
-        top: 92,
-        message: '鑿滃崟淇℃伅瑙f瀽閿欒锛�',
-        duration: 5
-      })
+    } else {
+      try {
+        let param = JSON.parse(window.decodeURIComponent(window.atob(params.param)))
+  
+        sessionStorage.setItem('dataM', param.dataM || '')
+        sessionStorage.setItem('localDataM', param.dataM || '')
+        this.setState({
+          BID: param.id || '',
+          tempId: param.tempId
+        }, () => {
+          this.getMenuParam()
+        })
+      } catch (e) {
+        notification.warning({
+          top: 92,
+          message: '鑿滃崟淇℃伅瑙f瀽閿欒锛�',
+          duration: 5
+        })
+      }
     }
   }
 
@@ -72,6 +85,55 @@
     }
   }
 
+  getTouristMsg = () => {
+    Api.getTouristMsg().then(result => {
+      if (result.status) {
+        sessionStorage.setItem('UserID', result.UserID || '')
+        sessionStorage.setItem('LoginUID', result.LoginUID || '')
+        sessionStorage.setItem('dataM', 'false')
+
+        this.getMenuParam()
+
+        // 鑾峰彇绯荤粺淇℃伅
+        let _param = {
+          func: 's_Get_style',
+          TypeCharOne: 'PC',
+          LText: `select '${window.GLOB.appkey}'`,
+        }
+
+        _param.userid = result.UserID
+        _param.LoginUID = result.LoginUID
+        _param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
+        _param.secretkey = Utils.encrypt(_param.LText, _param.timestamp)
+
+        Api.getSystemConfig(_param).then(res => {
+          if (res.status) {
+            window.GLOB.style = res.CSS
+            document.title = res.titleName
+        
+            if (window.GLOB.style && styles[window.GLOB.style]) {
+              document.body.className = styles[window.GLOB.style] + ' ' + (res.split_line_show === 'false' ? 'hidden-split-line' : '')
+            }
+
+            if (res.titlelogo) {
+              let link = document.querySelector("link[rel*='icon']") || document.createElement('link')
+              link.type = 'image/x-icon'
+              link.rel = 'shortcut icon'
+              link.href = res.titlelogo
+              document.getElementsByTagName('head')[0].appendChild(link)
+            }
+          }
+        })
+      } else {
+        notification.warning({
+          top: 92,
+          message: result.message,
+          duration: 5
+        })
+      }
+    })
+  }
+
   getMenuParam = () => {
     const { tempId, BID } = this.state
 
@@ -79,6 +141,8 @@
       func: 'sPC_Get_LongParam',
       MenuID: tempId
     }
+
+    window.GLOB.dataFormat = false // 鎵撳嵃鍘婚櫎姘村嵃
 
     if (window.GLOB.mainSystemApi) { // 浠庡崟鐐圭櫥褰曟湇鍔″櫒鍙栨墦鍗伴厤缃俊鎭�
       _param.rduri = window.GLOB.mainSystemApi
@@ -186,6 +250,21 @@
           if (component.search) component.search = []
           component.data = [] // 鍒濆鍖栨暟鎹负绌�
 
+          if (component.type === 'table' && component.subtype === 'normaltable') {
+            let getColumns = (cols) => {
+              return cols.map(item => {
+                if (item.type === 'colspan') {
+                  item.subcols = getColumns(item.subcols)
+                } else {
+                  item.IsSort = 'false'
+                }
+          
+                return item
+              })
+            }
+            component.cols = getColumns(component.cols)
+          }
+
           if (component.wrap.datatype === 'static') {
             component.format = ''
           }
@@ -292,7 +371,7 @@
   }
 
   /**
-   * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼ sPC_Get_TableData 鐨勫弬鏁�
+   * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼鍙傛暟
    */
   getDefaultParam = (component) => {
     const { columns, setting, dataName, format } = component
@@ -308,7 +387,7 @@
     }
 
     // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞
-    if ((options.sysType === 'local' && !window.GLOB.systemType) || window.debugger === true) {
+    if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) {
       _customScript &&  console.info(`${_dataresource ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`)
       _dataresource &&  console.info(_dataresource)
     }
@@ -332,12 +411,26 @@
     if (!params || params.length === 0) return ''
     let LText_field = []
     let transaction = false
+
+    let userName = sessionStorage.getItem('User_Name') || ''
+    let fullName = sessionStorage.getItem('Full_Name') || ''
+    let RoleID = sessionStorage.getItem('role_id') || ''
+    let departmentcode = sessionStorage.getItem('departmentcode') || ''
+    let organization = sessionStorage.getItem('organization') || ''
+    let city = sessionStorage.getItem('city') || ''
+  
+    if (sessionStorage.getItem('isEditState') === 'true') {
+      userName = sessionStorage.getItem('CloudUserName') || ''
+      fullName = sessionStorage.getItem('CloudFullName') || ''
+    }
+
     let LText = params.map((item, index) => {
       let _sql = item.sql
       let _script = item.script
 
       if (index === 0) {
-        _script = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000) select @ErrorCode='',@retmsg =''
+        _script = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(50),@mk_organization nvarchar(50),@login_city nvarchar(50)
+          select @ErrorCode='',@retmsg ='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @login_city='${city}'
           ${_script}
         `
       }
@@ -424,6 +517,12 @@
         this.setState({loadingview: false, pages})
       }
 
+      let auto = true
+
+      if (comps[comps.length - 1].wrap && comps[comps.length - 1].wrap.printHeight) {
+        auto = false
+      }
+
       while (!over) {
         let page = []
         let count = 0
@@ -445,23 +544,57 @@
             return
           } else if (item.subtype === 'datacard' || item.type === 'table') {
             if (_item.dataArray && _item.dataArray.length > 0) {
-              item.data = []
-
-              while (count < limit && _item.dataArray.length > 0) {
-                item.data.push(_item.dataArray.shift())
-                count++
-              }
+              if (item.subtype === 'datacard' && item.wrap.layout === 'flex') {
+                if (!item.added && item.wrap.printHeight) {
+                  count += item.wrap.printHeight
+                  if (count >= limit) {
+                    _pageover = true
+                  }
+                  if (count <= limit) {
+                    _item.added = true
+                    page.push(item)
+                  }
+                } else if (!item.added) {
+                  _item.added = true
+                  page.push(item)
+                }
+              } else {
+                item.data = []
   
-              if (count >= limit) {
-                _pageover = true
+                while (count + 1 <= limit && _item.dataArray.length > 0) {
+                  item.data.push(_item.dataArray.shift())
+                  count++
+                }
+    
+                if (count >= limit) {
+                  _pageover = true
+                }
+                page.push(item)
               }
+              _item.added = true
+            } else if (!item.added) {
+              _item.added = true
+              page.push(item)
+            }
+          } else if (!item.added && item.wrap && item.wrap.printHeight) {
+            if (item.wrap.empty === 'hidden' && (!item.data || item.data.length === 0)) {
+              _item.added = true
+              return
+            }
+
+            count += item.wrap.printHeight
+            if (count >= limit) {
+              _pageover = true
+            }
+            if (count <= limit) {
+              _item.added = true
               page.push(item)
             }
           } else if (!item.added) {
             _item.added = true
             page.push(item)
           }
-
+          
           if (index + 1 >= length && !_pageover) {
             pagesover = true
           }
@@ -491,16 +624,49 @@
               return
             } else if (item.subtype === 'datacard' || item.type === 'table') {
               if (_item.dataArray && _item.dataArray.length > 0) {
-                item.data = []
-  
-                while (count < limit && _item.dataArray.length > 0) {
-                  item.data.push(_item.dataArray.shift())
-                  count++
+                if (item.subtype === 'datacard' && item.wrap.layout === 'flex') {
+                  if (!item.added && item.wrap.printHeight) {
+                    count += item.wrap.printHeight
+                    if (count >= limit) {
+                      _pageover = true
+                    }
+                    if (count <= limit) {
+                      _item.added = true
+                      page.push(item)
+                    }
+                  } else if (!item.added) {
+                    _item.added = true
+                    page.push(item)
+                  }
+                } else {
+                  item.data = []
+
+                  while (count + 1 <= limit && _item.dataArray.length > 0) {
+                    item.data.push(_item.dataArray.shift())
+                    count++
+                  }
+      
+                  if (count >= limit) {
+                    _pageover = true
+                  }
+                  page.push(item)
                 }
-    
-                if (count >= limit) {
-                  _pageover = true
-                }
+                _item.added = true
+              } else if (!item.added) {
+                _item.added = true
+                page.push(item)
+              }
+            } else if (!item.added && item.wrap && item.wrap.printHeight) {
+              if (item.wrap.empty === 'hidden' && (!item.data || item.data.length === 0)) {
+                _item.added = true
+                return
+              }
+              count += item.wrap.printHeight
+              if (count >= limit) {
+                _pageover = true
+              }
+              if (count <= limit) {
+                _item.added = true
                 page.push(item)
               }
             } else if (!item.added) {
@@ -522,7 +688,7 @@
         }
       }
 
-      this.setState({loadingview: false, pages})
+      this.setState({loadingview: false, pages, auto})
     })
   }
 
@@ -551,7 +717,7 @@
           doc.write(`<LINK rel="stylesheet" type="text/css" href="${linkList[i].href}">`)
         }
       }
-      doc.write(`<style>body{width: ${config.width}px!important;}*{border-style: solid;border-width: 0;}</style>`)
+      doc.write(`<style>body{width: ${config.width}px!important;}*{border-style: solid;border-width: 0;}.ant-table-placeholder{display: none;}.ant-empty{display: none;}</style>`)
       for (let i = 0;i < styleList.length;i++) {
         doc.write('<style>' + styleList[i].innerHTML + '</style>')
       }
@@ -635,6 +801,12 @@
             <SandBox config={item} initdata={item.data} mainSearch={[]} menuType="" />
           </Col>
         )
+      } else if (item.type === 'balcony') {
+        return (
+          <Col span={item.width} key={item.uuid}>
+            <Balcony config={item} initdata={item.data} menuType="" />
+          </Col>
+        )
       } else if (item.type === 'timeline') {
         return (
           <Col span={item.width} key={item.uuid}>
@@ -648,13 +820,13 @@
   }
 
   render() {
-    const { loadingview, viewlost, config, pages } = this.state
+    const { loadingview, viewlost, config, pages, auto } = this.state
 
     return (
       <div className="bill-print-wrap" >
         {loadingview && <Spin size="large" />}
         {pages ? <div id="bill-print">
-          {pages.map((components, index) => (<div className="print-page" key={index} style={{...config.style, overflow: 'hidden', boxSizing: 'border-box'}}><Row>{this.getComponents(components)}</Row></div>))}
+          {pages.map((components, index) => (<div className={'print-page' + (auto ? ' auto' : '')} key={index} style={{...config.style, overflow: 'hidden', boxSizing: 'border-box'}}><Row>{this.getComponents(components)}</Row></div>))}
         </div> : null}
         {viewlost ? <NotFount msg={this.state.lostmsg} /> : null}
         {pages && !loadingview && !viewlost ? <div className="print-button"><Button icon="printer" size="large" shape="circle" onClick={this.print}></Button></div> : null}
diff --git a/src/views/billprint/index.scss b/src/views/billprint/index.scss
index 80dd4f8..29dd0ba 100644
--- a/src/views/billprint/index.scss
+++ b/src/views/billprint/index.scss
@@ -29,6 +29,12 @@
     right: 10px;
     top: calc(40vh + 70px);
   }
+  .ant-table-placeholder {
+    display: none;
+  }
+  .ant-empty {
+    display: none;
+  }
 }
 
 .print-page {
@@ -46,7 +52,7 @@
     border-radius: 0!important;
   }
 }
-.print-page:last-child {
+.print-page.auto:last-child {
   height: auto!important;
 }
 
diff --git a/src/views/design/sidemenu/config.jsx b/src/views/design/sidemenu/config.jsx
index a9c12b3..40e4bf2 100644
--- a/src/views/design/sidemenu/config.jsx
+++ b/src/views/design/sidemenu/config.jsx
@@ -212,6 +212,7 @@
   PageParam: {Icon: 'folder'},
   children: [{
     src: '',
+    systems: ['production', 'local', 'SSO', 'cloud'],
     PageParam: {OpenType: 'newtab', Template: 'ManageTable'},
     type: 'ManageTable',
     MenuID: '1577972969199lei1g0qkvlh4tkc908m',
diff --git a/src/views/login/index.jsx b/src/views/login/index.jsx
index 50ea083..1b581e6 100644
--- a/src/views/login/index.jsx
+++ b/src/views/login/index.jsx
@@ -89,13 +89,6 @@
    * @param {Object} param 鐢ㄦ埛鍚嶅瘑鐮佺瓑淇℃伅
    */
   async loginsubmit (param) {
-    if (options.sysType === 'local' && !window.GLOB.mainSystemApi) { // 涓氬姟绯荤粺蹇呴』璁剧疆鍗曠偣鍦板潃
-      Modal.warning({
-        title: '鏈缃崟鐐规湇鍔″櫒鍦板潃锛岃鑱旂郴绠$悊鍛橈紒'
-      })
-      return
-    }
-
     let city = sessionStorage.getItem('city') || ''
     let ipAddress = sessionStorage.getItem('ipAddress') || ''
 
@@ -187,13 +180,6 @@
   }
 
   async phoneloginsubmit (param) {
-    if (options.sysType === 'local' && !window.GLOB.mainSystemApi) { // 涓氬姟绯荤粺蹇呴』璁剧疆鍗曠偣鍦板潃
-      Modal.warning({
-        title: '鏈缃崟鐐规湇鍔″櫒鍦板潃锛岃鑱旂郴绠$悊鍛橈紒'
-      })
-      return
-    }
-
     let city = sessionStorage.getItem('city') || ''
     let ipAddress = sessionStorage.getItem('ipAddress') || ''
 
@@ -213,9 +199,7 @@
       sessionStorage.setItem('organization', res.organization || '')
       sessionStorage.setItem('localRole_id', res.role_id || '')
 
-      let _url = window.location.href.split('#')[0]
-
-      localStorage.setItem(_url + 'lang', param.lang || 'zh-CN')
+      localStorage.setItem(_href + 'lang', param.lang || 'zh-CN')
       sessionStorage.setItem('lang', param.lang || 'zh-CN')
 
       sessionStorage.removeItem('visitorUserID')
@@ -245,12 +229,6 @@
   }
 
   authLogin = (appid, openid, memberid, scanId) => {
-    if (options.sysType === 'local' && !window.GLOB.mainSystemApi) { // 涓氬姟绯荤粺蹇呴』璁剧疆鍗曠偣鍦板潃
-      Modal.warning({
-        title: '鏈缃崟鐐规湇鍔″櫒鍦板潃锛岃鑱旂郴绠$悊鍛橈紒'
-      })
-      return
-    }
     Api.getTouristMsg(appid, openid, memberid, scanId).then(res => {
       if (res.status) {
         sessionStorage.setItem('UserID', res.UserID)
@@ -321,7 +299,28 @@
     //   if (!res || !res.ip) return
     //   sessionStorage.setItem('ipAddress', res.ip)
     // })
-    const _addressUrl = window.location.href.split('#')[0] + 'queryAddress'
+    if (sessionStorage.getItem('loginError')) {
+      try {
+        let res = JSON.parse(sessionStorage.getItem('loginError'))
+        console.info(res.url)
+        console.info(res.request)
+        console.info(res.response)
+
+        let result = JSON.parse(res.response)
+
+        notification.warning({
+          top: 92,
+          message: result.message,
+          duration: 5
+        })
+      } catch (e) {}
+      
+      setTimeout(() => {
+        sessionStorage.removeItem('loginError')
+      }, 2000)
+    }
+
+    const _addressUrl = _href + 'queryAddress'
 
     if (localStorage.getItem(_addressUrl) !== 'true') {
       sessionStorage.setItem('city', '')
@@ -331,7 +330,7 @@
     }
 
     const timeStamp = new Date().getTime()
-    const _authUrl = window.location.href.split('#')[0] + 'AuthCode'
+    const _authUrl = _href + 'AuthCode'
 
     let authCode = localStorage.getItem(_authUrl)
     let _s = md5('mksoft' + moment().format('YYYYMMDD'))
@@ -370,12 +369,14 @@
             keys[char] = (offset + i) % 10
           }
   
-          let lictime = +key2.replace(/[A-Z]/ig, (s) => {
+          let lictime = key2.replace(/[A-Z]/ig, (s) => {
             return keys[s]
           })
-          let curtime = +moment().format('YYYYMMDD')
+          lictime = lictime.slice(0,4) + '/' + lictime.slice(4,6) + '/' + lictime.slice(6)
+          lictime = Math.floor(new Date(lictime).getTime() / 86400000)
+          let curtime = Math.floor(new Date().getTime() / 86400000)
           let licday = lictime - curtime
-          let _mindUrl = window.location.href.split('#')[0] + 'notMind'
+          let _mindUrl = _href + 'notMind'
 
           if (licday < 0 || isNaN(licday)) {
             Modal.warning({
@@ -527,15 +528,7 @@
             res.indexlogo = res.indexlogo ? res.indexlogo.replace(/:8080/ig, '').replace(/http:/ig, 'https:') : ''
             res.loginlogo = res.loginlogo ? res.loginlogo.replace(/:8080/ig, '').replace(/http:/ig, 'https:') : ''
 
-            if (/^https/.test(window.location.protocol)) { // https杞崲
-              res.Banner = res.Banner ? res.Banner.replace(/^http:/ig, 'https:') : ''
-              res.doclogo = res.doclogo ? res.doclogo.replace(/^http:/ig, 'https:') : ''
-              res.indexlogo = res.indexlogo ? res.indexlogo.replace(/^http:/ig, 'https:') : ''
-              res.loginlogo = res.loginlogo ? res.loginlogo.replace(/^http:/ig, 'https:') : ''
-              res.titlelogo = res.titlelogo ? res.titlelogo.replace(/^http:/ig, 'https:') : ''
-            }
-
-            let _url = window.location.href.split('#')[0] + 'system'
+            let _url = _href + 'system'
             let systemMsg = {
               favicon: res.titlelogo || '',
               platTitle: res.titleName || '',
@@ -559,7 +552,13 @@
               level = ''
             }
 
-            localStorage.setItem(window.location.href.split('#')[0] + 'pwdlevel', level)
+            localStorage.setItem(_href + 'pwdlevel', level)
+
+            if (res.srcid) {
+              localStorage.setItem(_href + 'srcId', res.srcid)
+            } else {
+              localStorage.removeItem(_href + 'srcId')
+            }
 
             sessionStorage.setItem('home_background', res.index_background_color || '')
             if (res.sys_datetime) {
@@ -576,7 +575,7 @@
               localStorage.removeItem(_url)
             }
 
-            let _loginurl = window.location.href.split('#')[0] + 'loginways'
+            let _loginurl = _href + 'loginways'
             let login_ways = []
             let login_types = []
             if (res.login_ways && res.login_ways.length > 0) {
@@ -670,7 +669,7 @@
       }
     })
     
-    let loginWays = localStorage.getItem(window.location.href.split('#')[0] + 'loginways')
+    let loginWays = localStorage.getItem(_href + 'loginways')
     if (loginWays) {
       try {
         loginWays = JSON.parse(window.decodeURIComponent(window.atob(loginWays)))
diff --git a/src/views/login/loginform.jsx b/src/views/login/loginform.jsx
index 172aa29..214054d 100644
--- a/src/views/login/loginform.jsx
+++ b/src/views/login/loginform.jsx
@@ -46,6 +46,9 @@
     if (localStorage.getItem(_url + 'remember') === 'false') {
       remember = false
     }
+    if (!window.GLOB.keepKey) {
+      remember = false
+    }
 
     let smsId = ''
     let _loginWays = []
diff --git a/src/views/menudesign/index.jsx b/src/views/menudesign/index.jsx
index 66e4dc9..f07b1fe 100644
--- a/src/views/menudesign/index.jsx
+++ b/src/views/menudesign/index.jsx
@@ -917,7 +917,7 @@
   }
 
   verifyConfig = (show) => {
-    const { config } = this.state
+    const { config, MenuType } = this.state
     let error = ''
 
     let check = (components) => {
@@ -936,6 +936,7 @@
           return
         }
         
+        if (['voucher'].includes(item.subtype)) return
         if (['propcard', 'brafteditor', 'sandbox', 'stepform', 'tabform'].includes(item.subtype) && item.wrap.datatype === 'static') return
         if (['balcony'].includes(item.type) && item.wrap.datatype === 'static') return
   
@@ -983,6 +984,39 @@
       })
     }
 
+    if (MenuType === 'billPrint' && !error) {
+      let forbid = {
+        tabs: '鏍囩椤�',
+        search: '鎼滅储鏉′欢',
+        form: '琛ㄥ崟',
+        carousel: '杞挱',
+        tree: '鏍戝舰鍒楄〃',
+        chart: '鑷畾涔夊浘琛�',
+        editor: '瀵屾枃鏈�',
+        group: '鍒嗙粍'
+      }
+      let subforbid = {
+        editable: '鍙紪杈戣〃鏍�',
+        voucher: '鍑瘉'
+      }
+
+      config.components.forEach(item => {
+        if (!error && forbid[item.type]) {
+          error = '鎵撳嵃妯℃澘涓笉鍙娇鐢�' + forbid[item.type]
+        } else if (!error && subforbid[item.type]) {
+          error = '鎵撳嵃妯℃澘涓笉鍙娇鐢�' + subforbid[item.type]
+        }
+      })
+
+      if (show && error) {
+        notification.warning({
+          top: 92,
+          message: error,
+          duration: 5
+        })
+      }
+    }
+
     return error
   }
 
diff --git a/src/views/menudesign/menuform/index.jsx b/src/views/menudesign/menuform/index.jsx
index 0b3fbbd..78f5593 100644
--- a/src/views/menudesign/menuform/index.jsx
+++ b/src/views/menudesign/menuform/index.jsx
@@ -156,6 +156,8 @@
       this.props.updateConfig({...config, OpenType: value})
     } else if (key === 'hidden') {
       this.props.updateConfig({...config, hidden: value})
+    } else if (key === 'permission') {
+      this.props.updateConfig({...config, permission: value})
     }
   }
 
diff --git a/src/views/menudesign/printmenuform/index.jsx b/src/views/menudesign/printmenuform/index.jsx
index 12514d8..9b099fc 100644
--- a/src/views/menudesign/printmenuform/index.jsx
+++ b/src/views/menudesign/printmenuform/index.jsx
@@ -194,7 +194,7 @@
                     message: dict['mob.required.input'] + '棣栭〉鏁�!'
                   }
                 ]
-              })(<InputNumber min={1} max={1000} precision={0} onChange={this.changeFirstCount}/>)}
+              })(<InputNumber min={1} max={1000} precision={1} onChange={this.changeFirstCount}/>)}
             </Form.Item>
           </Col>
           <Col span={24}>
@@ -207,14 +207,14 @@
                     message: dict['mob.required.input'] + '姣忛〉鏁�!'
                   }
                 ]
-              })(<InputNumber min={1} max={1000} precision={0} onChange={this.changeCount}/>)}
+              })(<InputNumber min={1} max={1000} precision={1} onChange={this.changeCount}/>)}
             </Form.Item>
           </Col>
           <Col span={24}>
             <Form.Item label="灏鹃〉鏁�(鏉�)">
               {getFieldDecorator('lastCount', {
                 initialValue: config.lastCount
-              })(<InputNumber min={1} max={1000} precision={0} onChange={this.changeLastCount}/>)}
+              })(<InputNumber min={1} max={1000} precision={1} onChange={this.changeLastCount}/>)}
             </Form.Item>
           </Col>
           <Col span={24}>
diff --git a/src/views/mobdesign/index.jsx b/src/views/mobdesign/index.jsx
index 0bac9a5..98854e4 100644
--- a/src/views/mobdesign/index.jsx
+++ b/src/views/mobdesign/index.jsx
@@ -6,7 +6,7 @@
 import moment from 'moment'
 import HTML5Backend from 'react-dnd-html5-backend'
 import { ConfigProvider, notification, Modal, Collapse, Switch, Button, message, Spin, Typography } from 'antd'
-import { DoubleLeftOutlined, DoubleRightOutlined, HomeOutlined, LoginOutlined, RedoOutlined } from '@ant-design/icons'
+import { DoubleLeftOutlined, DoubleRightOutlined, HomeOutlined, LoginOutlined, RedoOutlined, ArrowLeftOutlined } from '@ant-design/icons'
 
 import Api from '@/api'
 import Utils, { setGLOBFuncs } from '@/utils/utils.js'
@@ -17,7 +17,6 @@
 import MKEmitter from '@/utils/events.js'
 import MenuUtils from '@/utils/utils-custom.js'
 import asyncComponent from '@/utils/asyncComponent'
-import backurl from '@/assets/img/back.jpg'
 
 import './index.scss'
 
@@ -265,6 +264,7 @@
     let param = {
       MenuID: menu.MenuID,
       copyMenuId: menu.copyMenuId || '',
+      clearMenu: menu.clearMenu !== 'false',
       type: 'view'
     }
 
@@ -748,7 +748,7 @@
           }
         }
       } else {
-        config.components = MenuUtils.resetConfig(config.components)
+        config.components = MenuUtils.resetConfig(config.components, {}, urlParam.clearMenu)
         config.enabled = false
         message.success('澶嶅埗鎴愬姛锛屼繚瀛樺悗鐢熸晥銆�')
       }
@@ -857,34 +857,58 @@
     const { config } = this.state
     
     let traversal = (components) => {
-      let list = components.map(item => {
+      let list = []
+      components.forEach(item => {
         let m = {
           key: item.uuid,
           title: item.name,
           children: []
         }
 
-        if (item.type === 'topbar' || item.type === 'login' || item.type === 'navbar') {
+        if (item.type === 'topbar' || item.type === 'login' || item.type === 'navbar' || (item.type === 'menubar' && item.subtype === 'commonbar')) {
           return null
         } else if (item.type === 'tabs') {
           let tabs = []
+          let mm = []
           item.subtabs.forEach(tab => {
             let s = traversal(tab.components)
 
             if (s.length === 0) return
-
+            
             tabs.push({
               key: tab.uuid,
               title: tab.label,
               children: s
             })
+
+            mm.push(...s)
           })
 
           if (tabs.length > 0) {
             m.children = tabs
           }
+
+          if (item.setting.permission === 'true') {
+            list.push(m)
+          } else if (mm.length) {
+            list.push(...mm)
+          }
+          
+          return null
         } else if (item.type === 'group') {
           m.children = traversal(item.components)
+
+          if (item.setting.permission === 'true') {
+            list.push(m)
+          } else if (m.children.length) {
+            list.push(...m.children)
+          }
+          
+          return null
+        } if (item.plot && item.plot.permission !== 'true') {
+          return null
+        } if (item.wrap && item.wrap.permission !== 'true') {
+          return null
         } else if (item.type === 'card' || (item.type === 'table' && item.subtype === 'tablecard')) {
           item.action && item.action.forEach(btn => {
             this.checkBtn(btn)
@@ -961,10 +985,8 @@
           })
         }
 
-        return m
+        list.push(m)
       })
-
-      list = list.filter(Boolean)
 
       return list
     }
@@ -1101,15 +1123,25 @@
         config.enabled = false
       }
 
-      let roleParam = {type: 'view', key: config.uuid, title: config.MenuName, children: []}
+      let roleParam = {type: 'view', version: '1.0', key: config.uuid, title: config.MenuName, children: []}
       roleParam.children = this.getMenuMessage()
+      config.loginview = false
+      config.tabview = false
 
-      if (config.components.findIndex(item => item.type === 'login') > -1) {
-        roleParam.login = true
-        config.loginview = true
-      } else {
-        config.loginview = false
+      if (config.permission !== 'true') {
+        roleParam.pass = true
+        roleParam.children = []
       }
+
+      config.components.forEach(item => {
+        if (item.type === 'login') {
+          roleParam.login = true
+          roleParam.children = []
+          config.loginview = true
+        } else if (item.type === 'navbar') {
+          config.tabview = true
+        }
+      })
 
       if (adapters.includes('wxmini')) {
         config = this.getMiniStyle(config)
@@ -1168,17 +1200,22 @@
 
               let roles = {
                 type: 'navbar',
+                version: '1.0',
                 key: item.uuid,
                 title: item.name,
                 children: []
               }
       
-              roles.children = item.menus.map(menu => {
-                return {
-                  key: menu.MenuID,
-                  title: menu.name
-                }
-              })
+              if (item.wrap.permission === 'true') {
+                roles.children = item.menus.map(menu => {
+                  return {
+                    key: menu.MenuID,
+                    title: menu.name
+                  }
+                })
+              } else {
+                roles.pass = true
+              }
 
               let _param = {
                 func: 'sPC_TrdMenu_AddUpt',
@@ -1365,7 +1402,7 @@
   }
 
   verifyConfig = (show) => {
-    const { config, viewType } = this.state
+    const { config } = this.state
     let error = ''
     let searchSum = 0
     let swipes = []
@@ -1403,6 +1440,7 @@
           swipes.push(item.name)
         }
 
+        if (['voucher'].includes(item.subtype)) return
         if (['propcard', 'brafteditor', 'sandbox', 'tabbar', 'stepform', 'tabform'].includes(item.subtype) && item.wrap.datatype === 'static') return
         if (['balcony'].includes(item.type) && item.wrap.datatype === 'static') return
         if (['menubar'].includes(item.type) && item.wrap.datatype !== 'dynamic') return
@@ -1432,9 +1470,9 @@
 
     check(config.components)
 
-    if (!error && viewType === 'userbind' && config.components.filter(item => item.type === 'login').length === 0) {
-      error = '鐢ㄦ埛缁戝畾椤甸潰蹇呴』娣诲姞鐧诲綍銆�'
-    }
+    // if (!error && viewType === 'userbind' && config.components.filter(item => item.type === 'login').length === 0) {
+    //   error = '鐢ㄦ埛缁戝畾椤甸潰蹇呴』娣诲姞鐧诲綍銆�'
+    // }
 
     if (!error && searchSum > 1) {
       error = '鎼滅储缁勪欢涓庡鑸爮鐨勬悳绱㈠姛鑳戒笉鍙悓鏃朵娇鐢ㄣ��'
@@ -1465,13 +1503,27 @@
   insert = (item) => {
     let config = fromJS(this.state.config).toJS()
 
-    if (item.type === 'topbar' && config.components.findIndex(m => m.type === 'topbar') > -1) {
+    if (item.type === 'search') {
       notification.warning({
         top: 92,
-        message: '瀵艰埅鏍忎笉鍙噸澶嶆坊鍔狅紒',
+        message: '绉诲姩绔悳绱㈢粍浠朵笉鍙矘璐达紒',
         duration: 5
       })
       return
+    }
+    
+    if (item.type === 'topbar') {
+      if (config.components.findIndex(m => m.type === 'topbar') > -1) {
+        notification.warning({
+          top: 92,
+          message: '瀵艰埅鏍忎笉鍙噸澶嶆坊鍔狅紒',
+          duration: 5
+        })
+        return
+      }
+      if (!config.style.paddingTop) {
+        config.style.paddingTop = '50px'
+      }
     }
 
     config.components.push(item)
@@ -1713,7 +1765,7 @@
               <div className="wrap">
                 <Button type="primary" onClick={this.submitConfig} id="save-config" loading={menuloading}>{dict['mob.save']}</Button>
                 <Switch className="big" checkedChildren={dict['mob.enable']} unCheckedChildren={dict['mob.disable']} checked={config && config.enabled} onChange={this.onEnabledChange} />
-                <img title="鍚庨��" className="back-view" onClick={this.backView} src={backurl} alt=""/>
+                <ArrowLeftOutlined title="鍚庨��" className="back-view" onClick={this.backView}/>
                 <CreateView resetmenu={this.getAppMenus} />
                 <PasteController insert={this.insert} />
                 <StyleCombControlButton menu={config} />
diff --git a/src/views/mobdesign/index.scss b/src/views/mobdesign/index.scss
index d9f3125..0881850 100644
--- a/src/views/mobdesign/index.scss
+++ b/src/views/mobdesign/index.scss
@@ -12,11 +12,8 @@
     float: right;
     margin-right: 10px;
     cursor: pointer;
-    filter: opacity(0.7);
-    transition: filter 0.3s;
-  }
-  .back-view:hover {
-    filter: opacity(0.9);
+    font-size: 20px;
+    color: #757575;
   }
   .modal-form-board {
     padding-top: 0;
diff --git a/src/views/mobdesign/menuform/index.jsx b/src/views/mobdesign/menuform/index.jsx
index 95da5b8..38fb28c 100644
--- a/src/views/mobdesign/menuform/index.jsx
+++ b/src/views/mobdesign/menuform/index.jsx
@@ -25,19 +25,24 @@
   selectChange = (key, value) => {
     const { config } = this.props
 
-    if (key === 'cacheUseful') {
-      this.props.updateConfig({...config, cacheUseful: value})
-    } else if (key === 'timeUnit') {
-      this.props.updateConfig({...config, timeUnit: value})
-    } else if (key === 'advertUrl') {
-      this.props.updateConfig({...config, advertUrl: value})
-    } else if (key === 'advertTime') {
-      this.props.updateConfig({...config, advertTime: value})
-    } else if (key === 'pullRefresh') {
-      this.props.updateConfig({...config, pullRefresh: value})
-    } else if (key === 'statusBarbgColor') {
-      this.props.updateConfig({...config, statusBarbgColor: value})
-    }
+    this.props.updateConfig({...config, [key]: value})
+    // if (key === 'cacheUseful') {
+    //   this.props.updateConfig({...config, cacheUseful: value})
+    // } else if (key === 'timeUnit') {
+    //   this.props.updateConfig({...config, timeUnit: value})
+    // } else if (key === 'advertUrl') {
+    //   this.props.updateConfig({...config, advertUrl: value})
+    // } else if (key === 'advertTime') {
+    //   this.props.updateConfig({...config, advertTime: value})
+    // } else if (key === 'pullRefresh') {
+    //   this.props.updateConfig({...config, pullRefresh: value})
+    // } else if (key === 'statusBarbgColor') {
+    //   this.props.updateConfig({...config, statusBarbgColor: value})
+    // } else if (key === 'permission') {
+    //   this.props.updateConfig({...config, permission: value})
+    // } else if (key === 'share') {
+    //   this.props.updateConfig({...config, share: value})
+    // }
   }
 
   // 鑿滃崟鍚嶇О
@@ -129,7 +134,7 @@
               </Tooltip>
             }>
               {getFieldDecorator('permission', {
-                initialValue: config.permission || 'true'
+                initialValue: config.permission || 'false'
               })(
                 <Radio.Group onChange={(e) => {this.selectChange('permission', e.target.value)}}>
                   <Radio value="true">浣跨敤</Radio>
@@ -219,7 +224,12 @@
             </Form.Item>
           </Col> : null}
           {adapters.includes('app') && config.advertUrl ? <Col span={24}>
-            <Form.Item label="鍋滅暀(s)">
+            <Form.Item label={
+              <Tooltip placement="topLeft" title="骞垮憡椤电殑鍋滅暀鏃堕棿銆�">
+                <QuestionCircleOutlined className="mk-form-tip" />
+                鍋滅暀(s)
+              </Tooltip>
+            }>
               {getFieldDecorator('advertTime', {
                 initialValue: config.advertTime || 3,
                 rules: [
@@ -233,6 +243,47 @@
               )}
             </Form.Item>
           </Col> : null}
+          {adapters.includes('weixin') || adapters.includes('wxmini') ? <Col span={24}>
+            <Form.Item label="鍒嗕韩">
+              {getFieldDecorator('share', {
+                initialValue: config.share || 'default'
+              })(
+                <Radio.Group onChange={(e) => {this.selectChange('share', e.target.value)}}>
+                  <Radio value="default">榛樿</Radio>
+                  <Radio value="custom">鑷畾涔�</Radio>
+                </Radio.Group>
+              )}
+            </Form.Item>
+          </Col> : null}
+          {config.share === 'custom' && (adapters.includes('weixin') || adapters.includes('wxmini')) ? <Col span={24}>
+            <Form.Item label="鍒嗕韩鏍囬">
+              {getFieldDecorator('share_title', {
+                initialValue: config.share_title || '',
+                rules: [
+                  {
+                    required: true,
+                    message: '璇疯緭鍏ュ垎浜爣棰�!'
+                  }
+                ]
+              })(<Input placeholder="" autoComplete="off" onChange={(e) => {this.selectChange('share_title', e.target.value)}}/>)}
+            </Form.Item>
+          </Col> : null}
+          {config.share === 'custom' && (adapters.includes('weixin') || adapters.includes('wxmini')) ? <Col span={24}>
+            <Form.Item label="鍒嗕韩鎻忚堪">
+              {getFieldDecorator('share_des', {
+                initialValue: config.share_des || ''
+              })(<Input placeholder="" autoComplete="off" onChange={(e) => {this.selectChange('share_des', e.target.value)}}/>)}
+            </Form.Item>
+          </Col> : null}
+          {config.share === 'custom' && (adapters.includes('weixin') || adapters.includes('wxmini')) ? <Col span={24}>
+            <Form.Item label="鍒嗕韩鍥剧墖">
+              {getFieldDecorator('share_url', {
+                initialValue: config.share_url || ''
+              })(
+                <SourceComponent type="picture" placement="right" onChange={(val) => {this.selectChange('share_url', val)}}/>
+              )}
+            </Form.Item>
+          </Col> : null}
           <Col span={24}>
             <Form.Item label="澶囨敞">
               {getFieldDecorator('Remark', {
diff --git a/src/views/pcdesign/index.jsx b/src/views/pcdesign/index.jsx
index 7f0144d..b71d127 100644
--- a/src/views/pcdesign/index.jsx
+++ b/src/views/pcdesign/index.jsx
@@ -6,7 +6,7 @@
 import moment from 'moment'
 import HTML5Backend from 'react-dnd-html5-backend'
 import { ConfigProvider, notification, Modal, Collapse, Switch, Button, message, Spin, Typography } from 'antd'
-import { DoubleLeftOutlined, DoubleRightOutlined, HomeOutlined, LoginOutlined, RedoOutlined } from '@ant-design/icons'
+import { DoubleLeftOutlined, DoubleRightOutlined, HomeOutlined, LoginOutlined, RedoOutlined, ArrowLeftOutlined } from '@ant-design/icons'
 
 import Api from '@/api'
 import Utils, { setGLOBFuncs } from '@/utils/utils.js'
@@ -17,7 +17,6 @@
 import MKEmitter from '@/utils/events.js'
 import MenuUtils from '@/utils/utils-custom.js'
 import asyncComponent from '@/utils/asyncComponent'
-import backurl from '@/assets/img/back.jpg'
 
 import './index.scss'
 
@@ -216,6 +215,7 @@
     let param = {
       MenuID: menu.MenuID,
       copyMenuId: menu.copyMenuId || '',
+      clearMenu: menu.clearMenu !== 'false',
       type: 'view'
     }
 
@@ -246,9 +246,9 @@
         return
       }
 
-      let homeId = MenuID || ''
+      let homeId = ''
       let appViewList = []
-      if (!homeId && res.data && res.data.length > 0) {
+      if (res.data && res.data.length > 0) {
         appViewList = res.data
         appViewList.forEach(item => {
           if (item.keys_type === 'index') {
@@ -258,7 +258,7 @@
       }
 
       if (!homeId) {
-        homeId = Utils.getuuid()
+        homeId = MenuID || Utils.getuuid()
 
         let param = {
           func: 's_kei_link_keyids_addupt',
@@ -297,7 +297,7 @@
         })
       } else {
         sessionStorage.setItem('appViewList', JSON.stringify(appViewList))
-        this.props.history.replace('/pcdesign/' + window.btoa(window.encodeURIComponent(JSON.stringify({MenuID: homeId, type: 'view'}))))
+        this.props.history.replace('/pcdesign/' + window.btoa(window.encodeURIComponent(JSON.stringify({MenuID: MenuID || homeId, type: 'view'}))))
       }
     })
   }
@@ -748,7 +748,7 @@
           }
         }
       } else {
-        config.components = MenuUtils.resetConfig(config.components)
+        config.components = MenuUtils.resetConfig(config.components, {}, urlParam.clearMenu)
         config.enabled = false
         message.success('澶嶅埗鎴愬姛锛屼繚瀛樺悗鐢熸晥銆�')
       }
@@ -854,11 +854,12 @@
 
   getMenuMessage = () => {
     const { config } = this.state
-    let nodes = {type: 'view', key: config.uuid, title: config.MenuName, children: []}
+    let nodes = {type: 'view', version: '1.0', key: config.uuid, title: config.MenuName, children: []}
     let popviews = []
 
     let traversal = (components) => {
-      let list = components.map(item => {
+      let list = []
+      components.forEach(item => {
         let m = {
           key: item.uuid,
           title: item.name,
@@ -868,6 +869,7 @@
           return null
         } else if (item.type === 'tabs') {
           let tabs = []
+          let mm = []
           item.subtabs.forEach(tab => {
             let s = traversal(tab.components)
 
@@ -878,13 +880,35 @@
               title: tab.label,
               children: s
             })
+
+            mm.push(...s)
           })
 
           if (tabs.length > 0) {
             m.children = tabs
           }
+
+          if (item.setting.permission === 'true') {
+            list.push(m)
+          } else if (mm.length) {
+            list.push(...mm)
+          }
+          
+          return null
         } else if (item.type === 'group') {
           m.children = traversal(item.components)
+
+          if (item.setting.permission === 'true') {
+            list.push(m)
+          } else if (m.children.length) {
+            list.push(...m.children)
+          }
+          
+          return null
+        } if (item.plot && item.plot.permission !== 'true') {
+          return null
+        } if (item.wrap && item.wrap.permission !== 'true') {
+          return null
         } else if (item.type === 'card' || (item.type === 'table' && item.subtype === 'tablecard')) {
           item.action && item.action.forEach(btn => {
             this.checkBtn(btn)
@@ -990,10 +1014,8 @@
           })
         }
 
-        return m
+        list.push(m)
       })
-
-      list = list.filter(Boolean)
 
       return list
     }
@@ -1005,6 +1027,11 @@
 
     if (config.components.findIndex(item => item.type === 'login') > -1) {
       nodes.login = true
+      nodes.children = []
+    }
+    if (config.permission !== 'true') {
+      nodes.pass = true
+      nodes.children = []
     }
 
     return nodes
@@ -1112,34 +1139,39 @@
 
               let roles = {
                 type: 'navbar',
+                version: '1.0',
                 key: item.uuid,
                 title: item.name,
                 children: []
               }
-      
-              roles.children = item.menus.map(fst => {
-                if (fst.property === 'classify' && fst.sublist.length > 0) {
-                  return {
-                    key: fst.MenuID,
-                    title: fst.name,
-                    children: fst.sublist.map(scd => {
-                      if (scd.property === 'classify' && scd.sublist.length > 0) {
-                        return {
-                          key: scd.MenuID,
-                          title: scd.name,
-                          children: scd.sublist.map(thd => {
-                            return { key: thd.MenuID, title: thd.name }
-                          })
+
+              if (item.wrap.permission === 'true') {
+                roles.children = item.menus.map(fst => {
+                  if (fst.property === 'classify' && fst.sublist.length > 0) {
+                    return {
+                      key: fst.MenuID,
+                      title: fst.name,
+                      children: fst.sublist.map(scd => {
+                        if (scd.property === 'classify' && scd.sublist.length > 0) {
+                          return {
+                            key: scd.MenuID,
+                            title: scd.name,
+                            children: scd.sublist.map(thd => {
+                              return { key: thd.MenuID, title: thd.name }
+                            })
+                          }
+                        } else {
+                          return { key: scd.MenuID, title: scd.name }
                         }
-                      } else {
-                        return { key: scd.MenuID, title: scd.name }
-                      }
-                    })
+                      })
+                    }
+                  } else {
+                    return { key: fst.MenuID, title: fst.name }
                   }
-                } else {
-                  return { key: fst.MenuID, title: fst.name }
-                }
-              })
+                })
+              } else {
+                roles.pass = true
+              }
 
               let _param = {
                 func: 'sPC_TrdMenu_AddUpt',
@@ -1501,6 +1533,7 @@
           return
         }
         
+        if (['voucher'].includes(item.subtype)) return
         if (['propcard', 'brafteditor', 'sandbox', 'stepform', 'tabform'].includes(item.subtype) && item.wrap.datatype === 'static') return
         if (['balcony'].includes(item.type) && item.wrap.datatype === 'static') return
         
@@ -1778,7 +1811,7 @@
               <div className="wrap">
                 <Button type="primary" id="save-config" onClick={this.submitConfig} loading={menuloading}>{dict['mob.save']}</Button>
                 <Switch className="big" checkedChildren={dict['mob.enable']} unCheckedChildren={dict['mob.disable']} checked={config && config.enabled} onChange={this.onEnabledChange} />
-                <img title="鍚庨��" className="back-view" onClick={this.backView} src={backurl} alt=""/>
+                <ArrowLeftOutlined title="鍚庨��" className="back-view" onClick={this.backView}/>
                 <CreateView resetmenu={this.getAppMenus} />
                 <PasteController insert={this.insert} />
                 <StyleCombControlButton menu={config} />
diff --git a/src/views/pcdesign/index.scss b/src/views/pcdesign/index.scss
index c6a8f6a..b8689fe 100644
--- a/src/views/pcdesign/index.scss
+++ b/src/views/pcdesign/index.scss
@@ -16,11 +16,8 @@
     float: right;
     margin-right: 10px;
     cursor: pointer;
-    filter: opacity(0.7);
-    transition: filter 0.3s;
-  }
-  .back-view:hover {
-    filter: opacity(0.9);
+    font-size: 20px;
+    color: #757575;
   }
   .modal-form-board {
     padding-top: 0;
diff --git a/src/views/pcdesign/menuform/index.jsx b/src/views/pcdesign/menuform/index.jsx
index 4c05fd5..1439d02 100644
--- a/src/views/pcdesign/menuform/index.jsx
+++ b/src/views/pcdesign/menuform/index.jsx
@@ -25,6 +25,8 @@
       this.props.updateConfig({...config, cacheUseful: value})
     } else if (key === 'timeUnit') {
       this.props.updateConfig({...config, timeUnit: value})
+    } else if (key === 'permission') {
+      this.props.updateConfig({...config, permission: value})
     }
   }
 
@@ -117,7 +119,7 @@
               </Tooltip>
             }>
               {getFieldDecorator('permission', {
-                initialValue: config.permission || 'true'
+                initialValue: config.permission || 'false'
               })(
                 <Radio.Group onChange={(e) => {this.selectChange('permission', e.target.value)}}>
                   <Radio value="true">浣跨敤</Radio>
diff --git a/src/views/rolemanage/index.jsx b/src/views/rolemanage/index.jsx
index 06a4db8..e4df34d 100644
--- a/src/views/rolemanage/index.jsx
+++ b/src/views/rolemanage/index.jsx
@@ -101,7 +101,7 @@
     })
   }
 
-  getMenuList = (reset) => {
+  getMenuList = (reset, resolve) => {
     const { app } = this.state
     let param = {
       func: 's_get_app_menus',
@@ -114,9 +114,11 @@
 
     param.secretkey = Utils.encrypt(param.LText, param.timestamp)
 
-    this.setState({
-      loading: true
-    })
+    if (!resolve) {
+      this.setState({
+        loading: true
+      })
+    }
 
     Api.getCloudConfig(param).then(result => {
       if (result.status) {
@@ -130,17 +132,23 @@
             try {
               let pageParam = JSON.parse(window.decodeURIComponent(window.atob(item.menus_rolelist)))
               item.nodes = pageParam
-              if (pageParam.login) {
+              
+              if (pageParam.type) {
+                item.type = pageParam.type
+              }
+
+              if (pageParam.version !== '1.0') {
                 item.nodes = ''
-              } else if (pageParam.type === 'navbar') {
-                item.type = 'navbar'
+              } else if (pageParam.login || pageParam.pass) {
+                item.nodes = ''
               } else if (pageParam.type === 'im') {
-                item.type = 'im'
                 item.nodes = ''
               }
             } catch (e) {
               item.nodes = ''
             }
+
+            delete item.menus_rolelist
           }
 
           if (!ub && app.userbind === item.MenuID) {
@@ -163,7 +171,9 @@
         this.setState({
           menulist: menus
         }, () => {
-          if (reset && (!this.oriTrees || this.oriTrees.length === 0)) {
+          if (resolve) {
+            this.initMenutree(resolve)
+          } else if (reset && (!this.oriTrees || this.oriTrees.length === 0)) {
             this.initMenutree()
           } else if (!reset && this.oriTrees && this.oriTrees.length === 0) {
             this.initMenutree()
@@ -503,14 +513,23 @@
                   try {
                     let pageParam = JSON.parse(window.decodeURIComponent(window.atob(item.menus_rolelist)))
                     item.nodes = pageParam
-                    if (pageParam.login) {
+
+                    if (pageParam.type) {
+                      item.type = pageParam.type
+                    }
+
+                    if (pageParam.version !== '1.0') {
                       item.nodes = ''
-                    } else if (pageParam.type === 'navbar') {
-                      item.type = 'navbar'
+                    } else if (pageParam.login || pageParam.pass) {
+                      item.nodes = ''
+                    } else if (pageParam.type === 'im') {
+                      item.nodes = ''
                     }
                   } catch (e) {
                     item.nodes = ''
                   }
+
+                  delete item.menus_rolelist
                 }
 
                 if (targetKeys.includes(item.MenuID) && item.nodes && item.nodes.popviews && item.nodes.popviews.length > 0) {
@@ -645,10 +664,10 @@
   initTree = () => {
     const _this = this
     confirm({
-      content: '鍒濆鍖栦細鏍规嵁鑿滃崟閲嶇疆鏉冮檺鏍戯紝纭畾鎵ц鍚楋紵',
+      content: '鏉冮檺鏍戜細閲嶆柊鐢熸垚锛岀‘瀹氭墽琛屽悧锛�',
       onOk() {
         return new Promise(resolve => {
-          _this.initMenutree(resolve)
+          _this.getMenuList(true, resolve)
         })
       },
       onCancel() {}
@@ -889,7 +908,7 @@
             </div>
             <div className="right-view">
               <div className="app-action">
-                <Button className="mk-primary" onClick={this.initTree}>鍚屾</Button>
+                <Button className="mk-primary" onClick={this.initTree}>閲嶇疆</Button>
                 {/* <Button className="mk-purple" onClick={this.syncTree}>鍚屾</Button> */}
                 <Button className="mk-green save" onClick={this.saveTree}>淇濆瓨</Button>
               </div>
diff --git a/src/views/sso/index.jsx b/src/views/sso/index.jsx
index ee0c674..03a7c03 100644
--- a/src/views/sso/index.jsx
+++ b/src/views/sso/index.jsx
@@ -1,5 +1,5 @@
 import React, {Component} from 'react'
-import { Spin } from 'antd'
+import { Spin, notification } from 'antd'
 import { connect } from 'react-redux'
 import md5 from 'md5'
 import moment from 'moment'
@@ -16,23 +16,41 @@
       let _param = JSON.parse(window.decodeURIComponent(window.atob(this.props.match.params.param)))
 
       if (typeof(_param) === 'object') {
-        _param.UserID && sessionStorage.setItem('UserID', _param.UserID)
-        _param.LoginUID && sessionStorage.setItem('LoginUID', _param.LoginUID)
-        _param.User_Name && sessionStorage.setItem('User_Name', _param.User_Name)
-        _param.Full_Name && sessionStorage.setItem('Full_Name', _param.Full_Name)
-        _param.debug && sessionStorage.setItem('debug', _param.debug)
-        _param.dataM && sessionStorage.setItem('dataM', _param.dataM)
-        _param.dataM && sessionStorage.setItem('localDataM', _param.dataM)
-        _param.avatar && sessionStorage.setItem('avatar', _param.avatar)
-        _param.role_id && sessionStorage.setItem('role_id', _param.role_id)
-        _param.role_id && sessionStorage.setItem('localRole_id', _param.role_id)
+        this.authLogin(_param.appid, _param.openid, _param.memberId, _param.key)
       } else {
         this.props.history.replace('/login')
       }
-      this.getMessage()
     } catch (e) {
       this.props.history.replace('/login')
     }
+  }
+
+  authLogin = (appid, openid, memberid, scanId) => {
+    Api.getTouristMsg(appid, openid, memberid, scanId).then(res => {
+      if (res.status) {
+        sessionStorage.setItem('UserID', res.UserID)
+        sessionStorage.setItem('LoginUID', res.LoginUID)
+        sessionStorage.setItem('User_Name', res.UserName)
+        sessionStorage.setItem('Full_Name', res.FullName)
+        sessionStorage.setItem('avatar', res.icon || '')
+        sessionStorage.setItem('dataM', res.dataM ? 'true' : '')
+        sessionStorage.setItem('localDataM', res.dataM ? 'true' : '')
+        sessionStorage.setItem('debug', res.debug || '')
+        sessionStorage.setItem('role_id', res.role_id || '')
+        sessionStorage.setItem('departmentcode', res.departmentcode || '')
+        sessionStorage.setItem('organization', res.organization || '')
+        sessionStorage.setItem('localRole_id', res.role_id || '')
+        
+        this.getMessage()
+      } else {
+        notification.warning({
+          top: 92,
+          message: res.message,
+          duration: 5
+        })
+        this.props.history.replace('/login')
+      }
+    })
   }
 
   getMessage = () => {
@@ -47,7 +65,16 @@
 
     Api.getSystemConfig(_param).then(res => {
       if (res.status) {
-        let _url = window.location.href.split('#')[0] + 'system'
+        if (/^https/.test(window.location.protocol)) { // https杞崲
+          res.Banner = res.Banner ? res.Banner.replace(/^http:/ig, 'https:') : ''
+          res.doclogo = res.doclogo ? res.doclogo.replace(/^http:/ig, 'https:') : ''
+          res.indexlogo = res.indexlogo ? res.indexlogo.replace(/^http:/ig, 'https:') : ''
+          res.loginlogo = res.loginlogo ? res.loginlogo.replace(/^http:/ig, 'https:') : ''
+          res.titlelogo = res.titlelogo ? res.titlelogo.replace(/^http:/ig, 'https:') : ''
+        }
+
+        const _href = window.location.href.split('#')[0]
+        let _url = _href + 'system'
         let systemMsg = {
           favicon: res.titlelogo || '',
           platTitle: res.titleName || '',
@@ -59,7 +86,30 @@
           mainlogo: res.indexlogo || '',
           doclogo: res.doclogo || '',
           style: res.CSS || '',
-          webSite: res.WebSite || ''
+          showline: res.split_line_show || 'true',
+          webSite: res.WebSite || '',
+          navBar: res.menu_type,
+          app_version: res.app_version
+        }
+
+        let level = res.pwd_level || ''
+
+        if (level && !['letter_num', 'char_num', 'char_num_90'].includes(level)) {
+          level = ''
+        }
+
+        localStorage.setItem(_href + 'pwdlevel', level)
+
+        if (res.srcid) {
+          localStorage.setItem(_href + 'srcId', res.srcid)
+        } else {
+          localStorage.removeItem(_href + 'srcId')
+        }
+
+        sessionStorage.setItem('home_background', res.index_background_color || '')
+        if (res.sys_datetime) {
+          sessionStorage.setItem('sys_datetime', res.sys_datetime)
+          sessionStorage.setItem('app_datetime', new Date().getTime())
         }
 
         // url鏍囬
@@ -71,42 +121,13 @@
           localStorage.removeItem(_url)
         }
 
-        let _loginurl = window.location.href.split('#')[0] + 'loginways'
-        let login_ways = []
-        let login_types = []
-        if (res.login_ways && res.login_ways.length > 0) {
-          res.login_ways.forEach(item => {
-            // 鐭俊楠岃瘉鐮佺櫥褰曪紝蹇呴』璁剧疆鐭俊Id
-            if (item.way_no === 'sms_vcode' && !item.sms_id) return
-            if (login_types.includes(item.way_no)) return
-
-            login_types.push(item.way_no)
-
-            login_ways.push({
-              label: item.way_name,
-              type: item.way_no,
-              smsId: item.sms_id
-            }) 
-          })
-        } else {
-          login_ways.push({
-            label: '璐﹀彿瀵嗙爜鐧诲綍',
-            type: 'uname_pwd',
-            smsId: ''
-          })
-        }
-
-        try {
-          localStorage.setItem(_loginurl, window.btoa(window.encodeURIComponent(JSON.stringify(login_ways))))
-        } catch (e) {
-          localStorage.removeItem(_loginurl)
-        }
-
         window.GLOB.mainlogo = systemMsg.mainlogo
         window.GLOB.style = systemMsg.style
+        window.GLOB.navBar = systemMsg.navBar
+        window.GLOB.appVersion = systemMsg.app_version
     
         if (window.GLOB.style && styles[window.GLOB.style]) {
-          document.body.className = styles[window.GLOB.style]
+          document.body.className = styles[window.GLOB.style] + ' ' + (res.split_line_show === 'false' ? 'hidden-split-line' : '')
         }
 
         if (res.titlelogo && window.GLOB.favicon !== res.titlelogo) {
@@ -125,6 +146,11 @@
         }
         this.props.history.replace('/main')
       } else {
+        notification.warning({
+          top: 92,
+          message: res.message,
+          duration: 5
+        })
         this.props.history.replace('/login')
       }
     }, () => {

--
Gitblit v1.8.0