king
2022-04-29 eec619b6e3339e9999a7a1c2c5454cef5d763b24
2022-04-29
15个文件已修改
2个文件已添加
1093 ■■■■■ 已修改文件
package-lock.json 361 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/form/normal-form/index.jsx 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/components/form/tab-form/index.jsx 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/modalconfig/index.jsx 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/viewnodes/index.jsx 344 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/menu/viewnodes/index.scss 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mob/modalconfig/index.jsx 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/custom/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/normalbutton/index.jsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/actionList/popupbutton/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/tabviews/zshare/automatic/index.jsx 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/modalconfig/index.jsx 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/templates/zshare/unattended/settingform/index.jsx 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/utils.js 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/mobdesign/index.jsx 178 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json
@@ -108,6 +108,22 @@
        "tslib": "^1.10.0"
      }
    },
    "@antv/algorithm": {
      "version": "0.1.23",
      "resolved": "https://registry.npmjs.org/@antv/algorithm/-/algorithm-0.1.23.tgz",
      "integrity": "sha512-ncAfXwpO9angkGlZ/4LYsFk+T2hvQI6A+mEEGMslj8wF7ddPdtZ+DK3KFbhfJvQ4iz9Z44sJfdJ/fybwt0g0kA==",
      "requires": {
        "@antv/util": "^2.0.13",
        "tslib": "^2.0.0"
      },
      "dependencies": {
        "tslib": {
          "version": "2.4.0",
          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
        }
      }
    },
    "@antv/attr": {
      "version": "0.3.2",
      "resolved": "https://registry.npmjs.org/@antv/attr/-/attr-0.3.2.tgz",
@@ -309,6 +325,55 @@
        }
      }
    },
    "@antv/g-webgpu": {
      "version": "0.5.5",
      "resolved": "https://registry.npmjs.org/@antv/g-webgpu/-/g-webgpu-0.5.5.tgz",
      "integrity": "sha512-TxtBniINFq1jFGEPo46xjJfrbJbUqkFd5wmsRs3tcg/7J7xoldOP1kEadpI3AJG9knMYdE92VpILw1VPd6DgzQ==",
      "requires": {
        "@antv/g-webgpu-core": "^0.5.5",
        "@antv/g-webgpu-engine": "^0.5.5",
        "@webgpu/types": "^0.0.31",
        "gl-matrix": "^3.1.0",
        "gl-vec2": "^1.3.0",
        "hammerjs": "^2.0.8",
        "inversify": "^5.0.1",
        "inversify-inject-decorators": "^3.1.0",
        "polyline-miter-util": "^1.0.1",
        "polyline-normals": "^2.0.2",
        "probe.gl": "^3.1.1",
        "reflect-metadata": "^0.1.13"
      }
    },
    "@antv/g-webgpu-core": {
      "version": "0.5.6",
      "resolved": "https://registry.npmjs.org/@antv/g-webgpu-core/-/g-webgpu-core-0.5.6.tgz",
      "integrity": "sha512-DPiH3GkAUiT0Q+LAKeImpI+IOQ/gP2w6HstYKivpFIpBPIvZ/9equM3icVrn1iDfDkZANVXQ1PppcO3xBv1ZTw==",
      "requires": {
        "eventemitter3": "^4.0.0",
        "gl-matrix": "^3.1.0",
        "inversify": "^5.0.1",
        "inversify-inject-decorators": "^3.1.0",
        "probe.gl": "^3.1.1",
        "reflect-metadata": "^0.1.13"
      }
    },
    "@antv/g-webgpu-engine": {
      "version": "0.5.6",
      "resolved": "https://registry.npmjs.org/@antv/g-webgpu-engine/-/g-webgpu-engine-0.5.6.tgz",
      "integrity": "sha512-D311qYUefdEFwLayutIHqucrAY3cAGH3BdnXS37nq+0nsglrHcNP0Ab1YTinn9RihLoY3yXFTLzrYkJHJbZXDg==",
      "requires": {
        "@antv/g-webgpu-core": "^0.5.6",
        "@webgpu/glslang": "^0.0.15",
        "@webgpu/types": "^0.0.31",
        "gl-matrix": "^3.1.0",
        "hammerjs": "^2.0.8",
        "inversify": "^5.0.1",
        "inversify-inject-decorators": "^3.1.0",
        "probe.gl": "^3.1.1",
        "reflect-metadata": "^0.1.13",
        "regl": "^1.3.11"
      }
    },
    "@antv/g2": {
      "version": "4.1.34",
      "resolved": "https://registry.npmjs.org/@antv/g2/-/g2-4.1.34.tgz",
@@ -338,12 +403,151 @@
        }
      }
    },
    "@antv/g6": {
      "version": "4.6.4",
      "resolved": "https://registry.npmjs.org/@antv/g6/-/g6-4.6.4.tgz",
      "integrity": "sha512-8xU96NISJ7G3Gwo6m1BTtqzfBeRd23BWcLDIpwX4v1KoE3NMHZlJkUaNvnKsoeoEoLNCDYBvTfBfEwV4C5gWfw==",
      "requires": {
        "@antv/g6-pc": "0.6.4"
      }
    },
    "@antv/g6-core": {
      "version": "0.6.4",
      "resolved": "https://registry.npmjs.org/@antv/g6-core/-/g6-core-0.6.4.tgz",
      "integrity": "sha512-8JYIZME7zaQJImlPOatmlTe/tKPxRaq8/wV2f61/7mfKON3LF9kEVvTrpJexMnXoCBuM+puxx3DbiPb64gL4LQ==",
      "requires": {
        "@antv/algorithm": "^0.1.8",
        "@antv/dom-util": "^2.0.1",
        "@antv/event-emitter": "~0.1.0",
        "@antv/g-base": "^0.5.1",
        "@antv/g-math": "^0.1.1",
        "@antv/matrix-util": "^3.1.0-beta.3",
        "@antv/path-util": "^2.0.3",
        "@antv/util": "~2.0.5",
        "ml-matrix": "^6.5.0",
        "tslib": "^2.1.0"
      },
      "dependencies": {
        "tslib": {
          "version": "2.4.0",
          "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz",
          "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ=="
        }
      }
    },
    "@antv/g6-element": {
      "version": "0.6.4",
      "resolved": "https://registry.npmjs.org/@antv/g6-element/-/g6-element-0.6.4.tgz",
      "integrity": "sha512-9wKogi6LnA4IoiVEWv8HmvHgHOXzbT73jDi4QrdSWjrttu7cyR2wQeKRYDp2lL2OPkHzzuNcI+ULQxbLKl3Oqg==",
      "requires": {
        "@antv/g-base": "^0.5.1",
        "@antv/g6-core": "0.6.4",
        "@antv/util": "~2.0.5"
      }
    },
    "@antv/g6-pc": {
      "version": "0.6.4",
      "resolved": "https://registry.npmjs.org/@antv/g6-pc/-/g6-pc-0.6.4.tgz",
      "integrity": "sha512-bEQ3pqHzkqDvk2aWRghj9cB73qXx0n4NRJFmL4cSJnB1SQyk7akfBHgLBzw5aqsYviL9WK7VR6uCCZRPK3PoXA==",
      "requires": {
        "@ant-design/colors": "^4.0.5",
        "@antv/algorithm": "^0.1.8",
        "@antv/dom-util": "^2.0.1",
        "@antv/event-emitter": "~0.1.0",
        "@antv/g-base": "^0.5.1",
        "@antv/g-canvas": "^0.5.2",
        "@antv/g-math": "^0.1.1",
        "@antv/g-svg": "^0.5.1",
        "@antv/g6-core": "0.6.4",
        "@antv/g6-element": "0.6.4",
        "@antv/g6-plugin": "0.6.4",
        "@antv/hierarchy": "^0.6.7",
        "@antv/layout": "^0.2.1",
        "@antv/matrix-util": "^3.1.0-beta.3",
        "@antv/path-util": "^2.0.3",
        "@antv/util": "~2.0.5",
        "color": "^3.1.3",
        "d3-force": "^2.0.1",
        "dagre": "^0.8.5",
        "insert-css": "^2.0.0",
        "ml-matrix": "^6.5.0"
      },
      "dependencies": {
        "@ant-design/colors": {
          "version": "4.0.5",
          "resolved": "https://registry.npmjs.org/@ant-design/colors/-/colors-4.0.5.tgz",
          "integrity": "sha512-3mnuX2prnWOWvpFTS2WH2LoouWlOgtnIpc6IarWN6GOzzLF8dW/U8UctuvIPhoboETehZfJ61XP+CGakBEPJ3Q==",
          "requires": {
            "tinycolor2": "^1.4.1"
          }
        },
        "@antv/hierarchy": {
          "version": "0.6.8",
          "resolved": "https://registry.npmjs.org/@antv/hierarchy/-/hierarchy-0.6.8.tgz",
          "integrity": "sha512-wVzUl+pxny5gyGJ2mkWx8IiEypX6bnMHgr/NILgbxY6shoy0Vf4FhZpI3CY8Ez7bQT6js8fMkB2NymPW7d7i8A==",
          "requires": {
            "@antv/util": "^2.0.7"
          }
        },
        "color": {
          "version": "3.2.1",
          "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
          "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
          "requires": {
            "color-convert": "^1.9.3",
            "color-string": "^1.6.0"
          }
        },
        "color-string": {
          "version": "1.9.1",
          "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
          "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
          "requires": {
            "color-name": "^1.0.0",
            "simple-swizzle": "^0.2.2"
          }
        }
      }
    },
    "@antv/g6-plugin": {
      "version": "0.6.4",
      "resolved": "https://registry.npmjs.org/@antv/g6-plugin/-/g6-plugin-0.6.4.tgz",
      "integrity": "sha512-eStD6j3nB54owXdYcA6/vxVCxJfBiMUfc33p4cKnRJnomSvEHYG/7i21SbyzMQQq7dRc0RDIPubYVwSilKzLCA==",
      "requires": {
        "@antv/dom-util": "^2.0.2",
        "@antv/g-base": "^0.5.1",
        "@antv/g-canvas": "^0.5.2",
        "@antv/g-svg": "^0.5.2",
        "@antv/g6-core": "0.6.4",
        "@antv/matrix-util": "^3.1.0-beta.3",
        "@antv/scale": "^0.3.4",
        "@antv/util": "^2.0.9",
        "insert-css": "^2.0.0"
      }
    },
    "@antv/graphlib": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/@antv/graphlib/-/graphlib-1.2.0.tgz",
      "integrity": "sha512-hhJOMThec51nU4Fe5p/viLlNIL71uDEgYFzKPajWjr2715SFG1HAgiP6AVylIeqBcAZ04u3Lw7usjl/TuI5RuQ=="
    },
    "@antv/hierarchy": {
      "version": "0.6.3",
      "resolved": "https://registry.npmjs.org/@antv/hierarchy/-/hierarchy-0.6.3.tgz",
      "integrity": "sha512-91YZUiZFXK8zp2nC2C+4FEc1LDIPZ5Q4YQbzMnKhH+7nei4QCfIdXPrPh0EKRws78CVt2hxR5gHD7zq6UlokAQ==",
      "requires": {
        "@antv/util": "^2.0.7"
      }
    },
    "@antv/layout": {
      "version": "0.2.2",
      "resolved": "https://registry.npmjs.org/@antv/layout/-/layout-0.2.2.tgz",
      "integrity": "sha512-J2qRZwhA6NbR3gPrbw8Vw+6TpXtMmpW86q8LnwtCnNvdRNQQ7wSfvWAiphtFRfHqwL9ky44J51v4ysCENgTGDQ==",
      "requires": {
        "@antv/g-webgpu": "0.5.5",
        "@antv/graphlib": "^1.0.0",
        "d3-force": "^2.0.1",
        "dagre-compound": "^0.0.11",
        "ml-matrix": "^6.5.0"
      }
    },
    "@antv/matrix-util": {
@@ -1910,6 +2114,31 @@
      "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
      "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw=="
    },
    "@probe.gl/env": {
      "version": "3.5.0",
      "resolved": "https://registry.npmjs.org/@probe.gl/env/-/env-3.5.0.tgz",
      "integrity": "sha512-YdlpZZshhyYxvWDBmZ5RIW2pTR14Pw4p9czMlt/v7F6HbFzWfAdmH7q6xVwFRYxUpQLwhWensWyv4aFysiWl4g==",
      "requires": {
        "@babel/runtime": "^7.0.0"
      }
    },
    "@probe.gl/log": {
      "version": "3.5.0",
      "resolved": "https://registry.npmjs.org/@probe.gl/log/-/log-3.5.0.tgz",
      "integrity": "sha512-nW/qz2X1xY08WU/TsmJP6/6IPNcaY5fS/vLjpC4ahJuE2Mezga4hGM/R2X5JWE/nkPc+BsC5GnAnD13rwAxS7g==",
      "requires": {
        "@babel/runtime": "^7.0.0",
        "@probe.gl/env": "3.5.0"
      }
    },
    "@probe.gl/stats": {
      "version": "3.5.0",
      "resolved": "https://registry.npmjs.org/@probe.gl/stats/-/stats-3.5.0.tgz",
      "integrity": "sha512-IH2M+F3c8HR1DTroBARePUFG7wIewumtKA0UFqx51Z7S4hKrD60wFbpMmg0AcF4FvHAXMBoC+kYi1UKW9XbAOw==",
      "requires": {
        "@babel/runtime": "^7.0.0"
      }
    },
    "@react-native-community/cli-debugger-ui": {
      "version": "4.9.0",
      "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-4.9.0.tgz",
@@ -2954,6 +3183,16 @@
        "@webassemblyjs/wast-parser": "1.8.5",
        "@xtuc/long": "4.2.2"
      }
    },
    "@webgpu/glslang": {
      "version": "0.0.15",
      "resolved": "https://registry.npmjs.org/@webgpu/glslang/-/glslang-0.0.15.tgz",
      "integrity": "sha512-niT+Prh3Aff8Uf1MVBVUsaNjFj9rJAKDXuoHIKiQbB+6IUP/3J3JIhBNyZ7lDhytvXxw6ppgnwKZdDJ08UMj4Q=="
    },
    "@webgpu/types": {
      "version": "0.0.31",
      "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.0.31.tgz",
      "integrity": "sha512-cvvCMSZBT4VsRNtt0lI6XQqvOIIWw6+NRUtnPUMDVDgsI4pCZColz3qzF5QcP9wIYOHEc3jssIBse8UWONKhlQ=="
    },
    "@xmldom/xmldom": {
      "version": "0.7.5",
@@ -5979,6 +6218,11 @@
        }
      }
    },
    "d3-dispatch": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-2.0.0.tgz",
      "integrity": "sha512-S/m2VsXI7gAti2pBoLClFFTMOO1HTtT0j99AuXLoGFKO6deHDdnv6ZGTxSTTUTgO1zVcv82fCOtDjYK4EECmWA=="
    },
    "d3-dsv": {
      "version": "1.2.0",
      "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-1.2.0.tgz",
@@ -5993,6 +6237,16 @@
      "version": "1.0.7",
      "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-1.0.7.tgz",
      "integrity": "sha512-lx14ZPYkhNx0s/2HX5sLFUI3mbasHjSSpwO/KaaNACweVwxUruKyWVcb293wMv1RqTPZyZ8kSZ2NogUZNcLOFQ=="
    },
    "d3-force": {
      "version": "2.1.1",
      "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-2.1.1.tgz",
      "integrity": "sha512-nAuHEzBqMvpFVMf9OX75d00OxvOXdxY+xECIXjW6Gv8BRrXu6gAWbv/9XKrvfJ5i5DCokDW7RYE50LRoK092ew==",
      "requires": {
        "d3-dispatch": "1 - 2",
        "d3-quadtree": "1 - 2",
        "d3-timer": "1 - 2"
      }
    },
    "d3-geo": {
      "version": "1.6.4",
@@ -6038,6 +6292,11 @@
      "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz",
      "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg=="
    },
    "d3-quadtree": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-2.0.0.tgz",
      "integrity": "sha512-b0Ed2t1UUalJpc3qXzKi+cPGxeXRr4KU9YSlocN74aTzp6R/Ud43t79yLLqxHRWZfsvWXmbDWPpoENK1K539xw=="
    },
    "d3-sankey": {
      "version": "0.9.1",
      "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.9.1.tgz",
@@ -6074,6 +6333,11 @@
        "graphlib": "^2.1.8",
        "lodash": "^4.17.15"
      }
    },
    "dagre-compound": {
      "version": "0.0.11",
      "resolved": "https://registry.npmjs.org/dagre-compound/-/dagre-compound-0.0.11.tgz",
      "integrity": "sha512-UrSgRP9LtOZCYb9e5doolZXpc7xayyszgyOs7uakTK4n4KsLegLVTRRtq01GpQd/iZjYw5fWMapx9ed+c80MAQ=="
    },
    "damerau-levenshtein": {
      "version": "1.0.5",
@@ -9858,6 +10122,11 @@
      "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz",
      "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA=="
    },
    "gl-vec2": {
      "version": "1.3.0",
      "resolved": "https://registry.npmjs.org/gl-vec2/-/gl-vec2-1.3.0.tgz",
      "integrity": "sha512-YiqaAuNsheWmUV0Sa8k94kBB0D6RWjwZztyO+trEYS8KzJ6OQB/4686gdrf59wld4hHFIvaxynO3nRxpk1Ij/A=="
    },
    "glob": {
      "version": "7.1.4",
      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
@@ -10681,6 +10950,11 @@
        }
      }
    },
    "insert-css": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/insert-css/-/insert-css-2.0.0.tgz",
      "integrity": "sha1-610Ql7dUL0x56jBg067gfQU4gPQ="
    },
    "internal-ip": {
      "version": "4.3.0",
      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
@@ -10702,6 +10976,16 @@
      "requires": {
        "loose-envify": "^1.0.0"
      }
    },
    "inversify": {
      "version": "5.1.1",
      "resolved": "https://registry.npmjs.org/inversify/-/inversify-5.1.1.tgz",
      "integrity": "sha512-j8grHGDzv1v+8T1sAQ+3boTCntFPfvxLCkNcxB1J8qA0lUN+fAlSyYd+RXKvaPRL4AGyPxViutBEJHNXOyUdFQ=="
    },
    "inversify-inject-decorators": {
      "version": "3.1.0",
      "resolved": "https://registry.npmjs.org/inversify-inject-decorators/-/inversify-inject-decorators-3.1.0.tgz",
      "integrity": "sha512-/seBlVp5bXrLQS3DpKEmlgeZL6C7Tf/QITd+IMQrbBBGuCbxb7k3hRAWu9XSreNpFzLgSboz3sClLSEmGwHphw=="
    },
    "invert-kv": {
      "version": "1.0.0",
@@ -10735,6 +11019,11 @@
      "requires": {
        "kind-of": "^3.0.2"
      }
    },
    "is-any-array": {
      "version": "2.0.0",
      "resolved": "https://registry.npmjs.org/is-any-array/-/is-any-array-2.0.0.tgz",
      "integrity": "sha512-WdPV58rT3aOWXvvyuBydnCq4S2BM1Yz8shKxlEpk/6x+GX202XRvXOycEFtNgnHVLoc46hpexPFx8Pz1/sMS0w=="
    },
    "is-arguments": {
      "version": "1.0.4",
@@ -13887,6 +14176,41 @@
        }
      }
    },
    "ml-array-max": {
      "version": "1.2.4",
      "resolved": "https://registry.npmjs.org/ml-array-max/-/ml-array-max-1.2.4.tgz",
      "integrity": "sha512-BlEeg80jI0tW6WaPyGxf5Sa4sqvcyY6lbSn5Vcv44lp1I2GR6AWojfUvLnGTNsIXrZ8uqWmo8VcG1WpkI2ONMQ==",
      "requires": {
        "is-any-array": "^2.0.0"
      }
    },
    "ml-array-min": {
      "version": "1.2.3",
      "resolved": "https://registry.npmjs.org/ml-array-min/-/ml-array-min-1.2.3.tgz",
      "integrity": "sha512-VcZ5f3VZ1iihtrGvgfh/q0XlMobG6GQ8FsNyQXD3T+IlstDv85g8kfV0xUG1QPRO/t21aukaJowDzMTc7j5V6Q==",
      "requires": {
        "is-any-array": "^2.0.0"
      }
    },
    "ml-array-rescale": {
      "version": "1.3.7",
      "resolved": "https://registry.npmjs.org/ml-array-rescale/-/ml-array-rescale-1.3.7.tgz",
      "integrity": "sha512-48NGChTouvEo9KBctDfHC3udWnQKNKEWN0ziELvY3KG25GR5cA8K8wNVzracsqSW1QEkAXjTNx+ycgAv06/1mQ==",
      "requires": {
        "is-any-array": "^2.0.0",
        "ml-array-max": "^1.2.4",
        "ml-array-min": "^1.2.3"
      }
    },
    "ml-matrix": {
      "version": "6.10.0",
      "resolved": "https://registry.npmjs.org/ml-matrix/-/ml-matrix-6.10.0.tgz",
      "integrity": "sha512-wU+jacx1dcP1QArV1/Kv49Ah6y2fq+BiQl2BnNVBC+hoCW7KgBZ4YZrowPopeoY164TB6Kes5wMeDjY8ODHYDg==",
      "requires": {
        "is-any-array": "^2.0.0",
        "ml-array-rescale": "^1.3.7"
      }
    },
    "moment": {
      "version": "2.24.0",
      "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz",
@@ -15009,6 +15333,22 @@
        "parse-svg-path": "~0.1.1"
      }
    },
    "polyline-miter-util": {
      "version": "1.0.1",
      "resolved": "https://registry.npmjs.org/polyline-miter-util/-/polyline-miter-util-1.0.1.tgz",
      "integrity": "sha1-tpPyOJ6g3tNqa89ezS7OS2kX2Vc=",
      "requires": {
        "gl-vec2": "^1.0.0"
      }
    },
    "polyline-normals": {
      "version": "2.0.2",
      "resolved": "https://registry.npmjs.org/polyline-normals/-/polyline-normals-2.0.2.tgz",
      "integrity": "sha1-oXN+ddjA3MsaWR+csn8J7vS30TU=",
      "requires": {
        "polyline-miter-util": "^1.0.1"
      }
    },
    "portfinder": {
      "version": "1.0.24",
      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.24.tgz",
@@ -16028,6 +16368,17 @@
      "version": "0.1.8",
      "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
      "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
    },
    "probe.gl": {
      "version": "3.5.0",
      "resolved": "https://registry.npmjs.org/probe.gl/-/probe.gl-3.5.0.tgz",
      "integrity": "sha512-KWj8u0PNytr/rVwcQFcN7O8SK7n/ITOsUZ91l4fSX95oHhKvVCI7eadrzFUzFRlXkFfBWpMWZXFHITsHHHUctw==",
      "requires": {
        "@babel/runtime": "^7.0.0",
        "@probe.gl/env": "3.5.0",
        "@probe.gl/log": "3.5.0",
        "@probe.gl/stats": "3.5.0"
      }
    },
    "process": {
      "version": "0.11.10",
@@ -17833,6 +18184,11 @@
      "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-2.3.0.tgz",
      "integrity": "sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw=="
    },
    "reflect-metadata": {
      "version": "0.1.13",
      "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
      "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
    },
    "regenerate": {
      "version": "1.4.0",
      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
@@ -17932,6 +18288,11 @@
        }
      }
    },
    "regl": {
      "version": "1.7.0",
      "resolved": "https://registry.npmjs.org/regl/-/regl-1.7.0.tgz",
      "integrity": "sha512-bEAtp/qrtKucxXSJkD4ebopFZYP0q1+3Vb2WECWv/T8yQEgKxDxJ7ztO285tAMaYZVR6mM1GgI6CCn8FROtL1w=="
    },
    "regression": {
      "version": "2.0.1",
      "resolved": "https://registry.npmjs.org/regression/-/regression-2.0.1.tgz",
package.json
@@ -6,6 +6,7 @@
    "@ant-design/icons": "^4.6.2",
    "@antv/data-set": "^0.11.4",
    "@antv/g2": "^4.1.34",
    "@antv/g6": "^4.6.4",
    "@antv/util": "^2.0.17",
    "@babel/core": "7.5.5",
    "@svgr/webpack": "4.3.2",
src/menu/components/form/normal-form/index.jsx
@@ -461,35 +461,31 @@
        index = i
      }
      let label = item.label || ''
      if (item.field && item.field.toLowerCase() !== label.toLowerCase()) {
        label = label + ' (' + item.field + ')'
      }
      if (['text', 'number', 'textarea', 'color'].includes(item.type) && _item.field !== item.field) {
        _inputfields.push({
          field: item.field,
          label: _inputIndex + '、' + item.label
          label: _inputIndex + '、' + label
        })
        _inputIndex++
      }
      if (appType === 'mob') {
        if (_form.field !== item.field && item.hidden !== 'true' && ['text', 'number'].includes(item.type)) {
          _tabfields.push({
            field: item.field,
            label: _tabIndex + '、' + item.label
          })
          _tabIndex++
        }
      } else {
        if (_form.field !== item.field && item.hidden !== 'true' && ['text', 'number', 'select', 'link'].includes(item.type)) {
          _tabfields.push({
            field: item.field,
            label: _tabIndex + '、' + item.label
          })
          _tabIndex++
        }
      if (_item.field !== item.field && item.hidden !== 'true' && ['text', 'number', 'select', 'link'].includes(item.type)) {
        _tabfields.push({
          field: item.field,
          label: _tabIndex + '、' + label
        })
        _tabIndex++
      }
      if (item.type === 'switch') {
        _linksupFields.push({
          field: item.field,
          label: _linkIndex + '、' + item.label
          label: _linkIndex + '、' + label
        })
      }
      
@@ -504,7 +500,7 @@
        })
        _linksupFields.push({
          field: item.field,
          label: _linkIndex + '、' + item.label
          label: _linkIndex + '、' + label
        })
        _linkIndex++
      }
src/menu/components/form/tab-form/index.jsx
@@ -467,35 +467,30 @@
        index = i
      }
      let label = item.label || ''
      if (item.field && item.field.toLowerCase() !== label.toLowerCase()) {
        label = label + ' (' + item.field + ')'
      }
      if (['text', 'number', 'textarea', 'color'].includes(item.type) && _item.field !== item.field) {
        _inputfields.push({
          field: item.field,
          label: _inputIndex + '、' + item.label
          label: _inputIndex + '、' + label
        })
        _inputIndex++
      }
      if (appType === 'mob') {
        if (_form.field !== item.field && item.hidden !== 'true' && ['text', 'number'].includes(item.type)) {
          _tabfields.push({
            field: item.field,
            label: _tabIndex + '、' + item.label
          })
          _tabIndex++
        }
      } else {
        if (_form.field !== item.field && item.hidden !== 'true' && ['text', 'number', 'select', 'link'].includes(item.type)) {
          _tabfields.push({
            field: item.field,
            label: _tabIndex + '、' + item.label
          })
          _tabIndex++
        }
      if (_form.field !== item.field && item.hidden !== 'true' && ['text', 'number', 'select', 'link'].includes(item.type)) {
        _tabfields.push({
          field: item.field,
          label: _tabIndex + '、' + label
        })
        _tabIndex++
      }
      if (item.type === 'switch') {
        _linksupFields.push({
          field: item.field,
          label: _linkIndex + '、' + item.label
          label: _linkIndex + '、' + label
        })
      }
      
@@ -510,7 +505,7 @@
        })
        _linksupFields.push({
          value: item.field,
          text: _linkIndex + '、' + item.label
          text: _linkIndex + '、' + label
        })
        _linkIndex++
src/menu/modalconfig/index.jsx
@@ -131,17 +131,22 @@
        index = i
      }
      let label = item.label || ''
      if (item.field && item.field.toLowerCase() !== label.toLowerCase()) {
        label = label + ' (' + item.field + ')'
      }
      if (['text', 'number', 'textarea', 'color'].includes(item.type) && card.field !== item.field) {
        _inputfields.push({
          field: item.field,
          label: _inputIndex + '、' + item.label
          label: _inputIndex + '、' + label
        })
        _inputIndex++
      }
      if (card.field !== item.field && item.hidden !== 'true' && ['text', 'number', 'select', 'link'].includes(item.type)) {
        _tabfields.push({
          field: item.field,
          label: _tabIndex + '、' + item.label
          label: _tabIndex + '、' + label
        })
        _tabIndex++
      }
@@ -149,7 +154,7 @@
      if (item.type === 'switch') {
        _linksupFields.push({
          field: item.field,
          label: _linkIndex + '、' + item.label
          label: _linkIndex + '、' + label
        })
      }
@@ -164,7 +169,7 @@
        })
        _linksupFields.push({
          field: item.field,
          label: _linkIndex + '、' + item.label
          label: _linkIndex + '、' + label
        })
        _linkIndex++
      }
src/menu/viewnodes/index.jsx
New file
@@ -0,0 +1,344 @@
import React, {Component} from 'react'
import PropTypes from 'prop-types'
import { is, fromJS } from 'immutable'
import { Modal, Button, notification, Spin } from 'antd'
import { ForkOutlined } from '@ant-design/icons'
import Api from '@/api'
import G6 from "@antv/g6"
import MKEmitter from '@/utils/events.js'
import './index.scss'
class Versions extends Component {
  static propTpyes = {
    config: PropTypes.object,
    MenuId: PropTypes.string
  }
  state = {
    visible: false,
    loading: false,
    empty: false
  }
  shouldComponentUpdate (nextProps, nextState) {
    return !is(fromJS(this.state), fromJS(nextState))
  }
  trigger = () => {
    const { MenuId, config } = this.props
    this.setState({visible: true, loading: true, empty: false}, () => {
      let param = {
        func: 's_get_menu_used_list',
        TypeCharOne: sessionStorage.getItem('kei_no'),
        typename: sessionStorage.getItem('typename'),
        par_menuid: MenuId
      }
      Api.getSystemConfig(param).then(result => {
        if (!result.status) {
          notification.warning({
            top: 92,
            message: result.message,
            duration: 5
          })
          this.setState({empty: true, loading: false})
          return
        }
        let data = {
          label: config.MenuName || '空',
          id: MenuId,
          MenuID: config.MenuID,
          MenuName: config.MenuName,
          MenuNo: config.MenuNo,
          children: []
        }
        let allMenus = JSON.parse(sessionStorage.getItem('allMenus'))
        let menuObj = {}
        allMenus.forEach(item => {
          menuObj[item.MenuID] = item
        })
        if (result.par_data) {
          result.par_data.forEach((item, i) => {
            let cell = {
              label: item.par_menuname,
              id: 'par' + i,
              MenuID: item.par_menuid,
              MenuName: item.par_menuname,
              MenuNo: item.par_menuno,
              deleted: false,
              direction: 'left'
            }
            if (menuObj[item.par_menuid]) {
              cell.color = '#5AD8A6'
              cell.label = menuObj[item.par_menuid].MenuName || item.par_menuname
              cell.MenuName = menuObj[item.par_menuid].MenuName || item.par_menuname
              cell.MenuNo = menuObj[item.par_menuid].MenuNo || item.par_menuno
            } else {
              cell.color = '#dddddd'
              cell.deleted = true
            }
            data.children.push(cell)
          })
        }
        if (result.used_data) {
          result.used_data.forEach((item, i) => {
            let cell = {
              label: item.used_menuname,
              id: 'sub' + i,
              MenuID: item.used_menuid,
              MenuName: item.used_menuname,
              MenuNo: '',
              deleted: false,
              direction: 'right'
            }
            if (menuObj[item.used_menuid]) {
              cell.color = '#5AD8A6'
              cell.label = menuObj[item.used_menuid].MenuName || item.used_menuname
              cell.MenuName = menuObj[item.used_menuid].MenuName || item.used_menuname
              cell.MenuNo = menuObj[item.used_menuid].MenuNo
            } else {
              cell.color = '#dddddd'
              cell.deleted = true
            }
            data.children.push(cell)
          })
        }
        if (data.children.length === 0) {
          this.setState({empty: true, loading: false})
        } else {
          this.setState({loading: false})
          this.getForks(data)
        }
      })
    })
  }
  changeMenu = (menu) => {
    if (menu.depth === 0) return
    MKEmitter.emit('changeEditMenu', menu)
  }
  getForks = (data) => {
    const { Util } = G6
    const that = this
    G6.registerNode(
      'dice-mind-map-root', {
        jsx: (cfg) => {
          const width = Util.getTextSize(cfg.label, 16)[0] + 24;
          const stroke = cfg.style.stroke || '#096dd9';
          return `
          <group>
            <rect draggable="true" style={{width: ${width}, height: 42, stroke: ${stroke}, radius: 4}} keyshape>
              <text style={{ fontSize: 16, marginLeft: 12, marginTop: 12 }}>${cfg.label}</text>
            </rect>
          </group>
        `;
        },
        getAnchorPoints() {
          return [
            [0, 0.5],
            [1, 0.5],
          ];
        },
      },
      'single-node',
    );
    G6.registerNode(
      'dice-mind-map-leaf', {
        jsx: (cfg) => {
          const width = Util.getTextSize(cfg.label, 12)[0] + 24;
          const color = cfg.color;
          return `
          <group>
            <rect draggable="true" style={{width: ${width}, height: 26, cursor: 'pointer', fill: 'transparent' }}>
              <text style={{ fontSize: 12, fill: ${cfg.deleted ? '#959595' : 'black'}, marginLeft: 12, marginTop: 6 }}>${cfg.label}</text>
            </rect>
            <rect style={{ fill: ${color}, width: ${width}, cursor: 'pointer', height: 2, x: 0, y: 32 }} />
          </group>
        `;
        },
        getAnchorPoints() {
          return [
            [0, 0.965],
            [1, 0.965],
          ];
        },
      },
      'single-node',
    );
    G6.registerBehavior('dice-mindmap', {
      getEvents() {
        return {
          'node:dblclick': 'editNode',
        };
      },
      editNode(evt) {
        const item = evt.item;
        const model = item.get('model');
        that.changeMenu(model)
      }
    });
    G6.registerBehavior('scroll-canvas', {
      getEvents: function getEvents() {
        return {
          wheel: 'onWheel',
        };
      },
      onWheel: function onWheel(ev) {
        const {
          graph
        } = this;
        if (!graph) {
          return;
        }
        if (ev.ctrlKey) {
          const canvas = graph.get('canvas');
          const point = canvas.getPointByClient(ev.clientX, ev.clientY);
          let ratio = graph.getZoom();
          if (ev.wheelDelta > 0) {
            ratio += ratio * 0.05;
          } else {
            ratio *= ratio * 0.05;
          }
          graph.zoomTo(ratio, {
            x: point.x,
            y: point.y,
          });
        } else {
          const x = ev.deltaX || ev.movementX;
          const y = ev.deltaY || ev.movementY || (-ev.wheelDelta * 125) / 3;
          graph.translate(-x, -y);
        }
        ev.preventDefault();
      },
    });
    const dataTransform = (data) => {
      const changeData = (d, level = 0, color) => {
        const data = {
          ...d,
        };
        switch (level) {
          case 0:
            data.type = 'dice-mind-map-root';
            break;
          default:
            data.type = 'dice-mind-map-leaf';
            break;
        }
        data.hover = false;
        if (color) {
          data.color = color;
        }
        if (d.children) {
          data.children = d.children.map((child) => changeData(child, level + 1, data.color));
        }
        return data;
      };
      return changeData(data);
    };
    const tree = new G6.TreeGraph({
      container: 'mountNode',
      width: 750,
      height: 500,
      fitView: true,
      fitViewPadding: [10, 20],
      layout: {
        type: 'mindmap',
        direction: 'H',
        getHeight: () => {
          return 16;
        },
        getWidth: (node) => {
          return node.level === 0 ?
            Util.getTextSize(node.label, 16)[0] + 12 :
            Util.getTextSize(node.label, 12)[0];
        },
        getVGap: () => {
          return 10;
        },
        getHGap: () => {
          return 60;
        },
        getSide: (node) => {
          return node.data.direction;
        },
      },
      defaultEdge: {
        type: 'cubic-horizontal',
        style: {
          lineWidth: 2,
        },
      },
      minZoom: 0.5,
      modes: {
        default: ['drag-canvas', 'zoom-canvas', 'dice-mindmap'],
      },
    });
    tree.data(dataTransform(data));
    tree.render();
  }
  render() {
    const { visible, loading, empty } = this.state
    return (
      <div style={{display: 'inline-block'}}>
        <Button style={{borderColor: 'orange', color: 'orange'}} onClick={this.trigger}><ForkOutlined /> 页面关系图</Button>
        <Modal
          title=""
          wrapClassName="view-nodes-modal"
          visible={visible}
          width={850}
          closable={false}
          maskClosable={false}
          footer={[]}
          destroyOnClose
        >
          <div className="header">页面关系图</div>
          <div className="wrap">
            {loading ? <Spin size="large" /> : null}
            {empty ? <div className="empty">未查询到页面关联菜单。</div> : null}
            <div className="mountNode" id="mountNode"></div>
          </div>
          <div className="footer">
            <Button key="cancel" onClick={() => { this.setState({ visible: false })}}>关闭</Button>
          </div>
        </Modal>
      </div>
    )
  }
}
export default Versions
src/menu/viewnodes/index.scss
New file
@@ -0,0 +1,40 @@
.view-nodes-modal {
  .ant-modal-body {
    padding: 20px 50px 20px;
    user-select: none;
  }
  .ant-modal-footer {
    display: none;
  }
  .wrap {
    position: relative;
    height: 505px;
    margin: 10px 0px;
    overflow: hidden;
    .ant-spin {
      position: absolute;
      top: calc(50% - 16px);
      left: calc(50% - 16px);
    }
    .empty {
      position: relative;
      text-align: center;
      color: #959595;
      padding-top: 200px;
    }
    .empty + .mountNode {
      opacity: 0;
    }
  }
  .header {
    color: #1890ff;
    font-weight: 500;
    text-align: center;
    font-size: 18px;
  }
  .footer {
    text-align: center;
  }
}
src/mob/modalconfig/index.jsx
@@ -152,17 +152,22 @@
        index = i
      }
      let label = item.label || ''
      if (item.field && item.field.toLowerCase() !== label.toLowerCase()) {
        label = label + ' (' + item.field + ')'
      }
      if (['text', 'number', 'textarea', 'color'].includes(item.type) && card.field !== item.field) {
        _inputfields.push({
          field: item.field,
          label: _inputIndex + '、' + item.label
          label: _inputIndex + '、' + label
        })
        _inputIndex++
      }
      if (card.field !== item.field && item.hidden !== 'true' && ['text', 'number', 'select', 'link'].includes(item.type)) {
        _tabfields.push({
          field: item.field,
          label: _tabIndex + '、' + item.label
          label: _tabIndex + '、' + label
        })
        _tabIndex++
      }
@@ -170,7 +175,7 @@
      if (item.type === 'switch') {
        _linksupFields.push({
          field: item.field,
          label: _linkIndex + '、' + item.label
          label: _linkIndex + '、' + label
        })
      }
@@ -185,7 +190,7 @@
        })
        _linksupFields.push({
          field: item.field,
          label: _linkIndex + '、' + item.label
          label: _linkIndex + '、' + label
        })
        _linkIndex++
      }
src/tabviews/custom/index.jsx
@@ -460,7 +460,7 @@
        delete item.style.shadowColor
      }
      item.$menuname = this.props.MenuName + '-' + (item.name || '')
      item.$menuname = (this.props.MenuName || '') + '-' + (item.name || '')
      if (item.type === 'tabs') {
        if (
src/tabviews/zshare/actionList/normalbutton/index.jsx
@@ -1823,10 +1823,10 @@
   */
  improveAction = () => {
    const { btn } = this.props
    const { btnconfig, autoMatic } = this.state
    const { btnconfig } = this.state
    if (btnconfig) {
      if (!autoMatic && (btnconfig.setting.display === 'prompt' || btnconfig.setting.display === 'exec')) { // 如果表单以是否框展示
      if (btnconfig.setting.display === 'prompt' || btnconfig.setting.display === 'exec') { // 如果表单以是否框展示
        this.modelconfirm()
      } else {
        this.setState({
@@ -1870,7 +1870,7 @@
          this.setState({
            btnconfig: _LongParam
          }, () => {
            if (!autoMatic && (_LongParam.setting.display === 'prompt' || _LongParam.setting.display === 'exec')) { // 如果表单以是否框展示
            if (_LongParam.setting.display === 'prompt' || _LongParam.setting.display === 'exec') { // 如果表单以是否框展示
              this.modelconfirm()
            } else {
              this.setState({
@@ -1888,6 +1888,7 @@
   */
  handleOk = () => {
    if (!this.formRef) return
    this.formRef.handleConfirm().then(res => {
      this.setState({ confirmLoading: true })
src/tabviews/zshare/actionList/popupbutton/index.jsx
@@ -270,7 +270,7 @@
          BID={popData ? primaryId : this.props.BID}
          BData={popData || this.props.BData}
        /> : null}
        {btn.$view === 'CustomPage' ? <CustomPage Tab={btn} MenuID={btn.uuid} param={{$BID: (popData ? primaryId : this.props.BID), ...(popData || this.props.BData || {})}} /> : null}
        {btn.$view === 'CustomPage' ? <CustomPage Tab={btn} MenuID={btn.uuid} MenuName={btn.label} param={{$BID: (popData ? primaryId : this.props.BID), ...(popData || this.props.BData || {})}} /> : null}
      </Modal>
    } else {
      let height = '100vh'
src/tabviews/zshare/automatic/index.jsx
@@ -129,7 +129,13 @@
            let node = document.querySelector('.ant-modal-confirm-btns >.ant-btn-primary')
            node && node.click()
          } else if (autoMatic.OpenType === 'pop') {
            MKEmitter.emit('triggerBtnPopSubmit', autoMatic.action)
            let node = document.querySelector('.ant-modal-confirm-btns >.ant-btn-primary')
            if (node) {
              node.click()
            } else {
              MKEmitter.emit('triggerBtnPopSubmit', autoMatic.action)
            }
          }
        }, delay)
      }
src/templates/modalconfig/index.jsx
@@ -262,17 +262,22 @@
        index = i
      }
      let label = item.label || ''
      if (item.field && item.field.toLowerCase() !== label.toLowerCase()) {
        label = label + ' (' + item.field + ')'
      }
      if (['text', 'number', 'textarea', 'color'].includes(item.type) && card.field !== item.field) {
        _inputfields.push({
          field: item.field,
          label: _inputIndex + '、' + item.label
          label: _inputIndex + '、' + label
        })
        _inputIndex++
      }
      if (card.field !== item.field && item.hidden !== 'true' && ['text', 'number', 'select', 'link'].includes(item.type)) {
        _tabfields.push({
          field: item.field,
          label: _tabIndex + '、' + item.label
          label: _tabIndex + '、' + label
        })
        _tabIndex++
      }
@@ -280,7 +285,7 @@
      if (item.type === 'switch') {
        _linksupFields.push({
          field: item.field,
          label: _linkIndex + '、' + item.label
          label: _linkIndex + '、' + label
        })
      }
@@ -295,7 +300,7 @@
        })
        _linksupFields.push({
          field: item.field,
          label: _linkIndex + '、' + item.label
          label: _linkIndex + '、' + label
        })
        _linkIndex++
      }
src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
@@ -506,7 +506,7 @@
          </TabPane>
          {card.intertype === 'system' ? <TabPane tab={
            <span>
              自定义脚本
              回调脚本
              {verify.enable === 'true' ? <span className="count-tip">1</span> : null}
            </span>
          } key="6">
src/templates/zshare/unattended/settingform/index.jsx
@@ -13,7 +13,7 @@
  state = {
    enable: this.props.autoMatic.enable,
    onFinish: this.props.autoMatic.onFinish || 'over'
    onFinish: this.props.autoMatic.onFinish || 'restart'
  }
  handleConfirm = () => {
@@ -134,11 +134,11 @@
          {enable === 'true' ? <Col span={12}>
            <Form.Item label="完成后">
              {getFieldDecorator('onFinish', {
                initialValue: autoMatic.onFinish || 'over',
                initialValue: autoMatic.onFinish || 'restart',
              })(
                <Radio.Group onChange={(e) => this.setState({onFinish: e.target.value})}>
                  <Radio value="over">结束</Radio>
                  <Radio value="restart">重新启动</Radio>
                  <Radio value="over">结束</Radio>
                </Radio.Group>
              )}
            </Form.Item>
src/utils/utils.js
@@ -1571,6 +1571,24 @@
      Declare @tbid nvarchar(50),@ErrorCode nvarchar(50),@retmsg nvarchar(4000),@BillCode nvarchar(50),@BVoucher nvarchar(50),@FIBVoucherDate nvarchar(50), @FiYear nvarchar(50), @UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(50),@mk_organization nvarchar(50),@login_city nvarchar(50),@bid nvarchar(50),@ModularDetailCode nvarchar(50)${_declarefields}
    `
  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') || ''
  }
  // 初始化凭证及用户信息字段
  _sql += `
      /* 凭证及用户信息初始化赋值 */
      select @BVoucher='',@FIBVoucherDate='',@FiYear='',@ErrorCode='',@retmsg='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @login_city='${city}', @BillCode='', @ModularDetailCode=''
      `
  // 表单变量赋值
  if (_initFormfields.length > 0) {
    _sql += `
@@ -1599,24 +1617,6 @@
  if (verify.billcodes) {
    verify.billcodes = verify.billcodes.filter(item => item.status !== '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') || ''
  }
  // 初始化凭证及用户信息字段
  _sql += `
      /* 凭证及用户信息初始化赋值 */
      select @BVoucher='',@FIBVoucherDate='',@FiYear='',@ErrorCode='',@retmsg='',@UserName='${userName}', @FullName='${fullName}', @RoleID='${RoleID}', @mk_departmentcode='${departmentcode}', @mk_organization='${organization}', @login_city='${city}', @BillCode='', @ModularDetailCode=''
      `
  if (retmsg) {
    _callbacksql = _sql
src/views/mobdesign/index.jsx
@@ -30,6 +30,7 @@
const CreateView = asyncComponent(() => import('@/pc/createview'))
const Transfer = asyncComponent(() => import('@/pc/transfer'))
const Versions = asyncComponent(() => import('@/menu/versions'))
const ViewNodes = asyncComponent(() => import('@/menu/viewnodes'))
const SourceWrap = asyncComponent(() => import('@/mob/modulesource'))
const BgController = asyncComponent(() => import('@/pc/bgcontroller'))
const ReplaceField = asyncComponent(() => import('@/menu/replaceField'))
@@ -124,6 +125,7 @@
          viewType: /^userbind/.test(param.MenuID) ? 'userbind' : 'menu'
        }, () => {
          this.getMenuParam(param)
          this.getRelationMenus()
        })
      }
    } catch (e) {
@@ -570,6 +572,29 @@
    this.getAppMenus()
  }
  getRelationMenus = () => {
    const { MenuId } = this.state
    let param = {
      func: 's_get_menu_used_list',
      TypeCharOne: sessionStorage.getItem('kei_no'),
      typename: sessionStorage.getItem('typename'),
      par_menuid: MenuId,
      // used_menuid: MenuId
    }
    Api.getSystemConfig(param).then(result => {
      if (!result.status) {
        notification.warning({
          top: 92,
          message: result.message,
          duration: 5
        })
        return
      }
    })
  }
  setUserBindMenu = (config, result) => {
    const { MenuId } = this.state
    let isCreate = !config
@@ -691,6 +716,7 @@
        return item
      })
      sessionStorage.setItem('appMenus', JSON.stringify(menus))
      sessionStorage.setItem('allMenus', JSON.stringify(res.menus || []))
    })
  }
@@ -996,6 +1022,148 @@
    return trees
  }
  getSubMenus = () => {
    const { config } = this.state
    let menus = []
    let menuObj = {}
    let allMenus = JSON.parse(sessionStorage.getItem('allMenus'))
    allMenus.forEach(item => {
      menuObj[item.MenuID] = item
    })
    let traversal = (components) => {
      components.forEach(item => {
        if (item.type === 'topbar') {
          if (item.wrap.linkmenu && menuObj[item.wrap.linkmenu]) {
            menus.push(menuObj[item.wrap.linkmenu])
          }
          if (item.wrap.menus) {
            item.wrap.menus.forEach(m => {
              if (!menuObj[m.menu]) return
              menus.push(menuObj[m.menu])
            })
          }
        } else if (item.type === 'login') {
          if (item.wrap.linkmenu && menuObj[item.wrap.linkmenu]) {
            menus.push(menuObj[item.wrap.linkmenu])
          }
        } else if (item.type === 'menubar' && item.subtype !== 'commonbar') {
          item.subMenus.forEach(m => {
            if (m.setting.type === 'menu') {
              if (menuObj[m.uuid]) {
                menus.push(menuObj[m.uuid])
              } else {
                menus.push({
                  MenuID: m.uuid,
                  MenuName: m.setting.name,
                  MenuNo: m.setting.MenuNo
                })
              }
            } else if (m.setting.type === 'linkmenu' && menuObj[m.setting.linkMenuId]) {
              menus.push(menuObj[m.setting.linkMenuId])
            }
          })
        } else if (item.type === 'tabs') {
          item.subtabs.forEach(tab => {
            traversal(tab.components)
          })
        } else if (item.type === 'group') {
          traversal(item.components)
        } else if (item.type === 'card' || (item.type === 'table' && item.subtype === 'tablecard')) {
          item.action && item.action.forEach(btn => {
            if (btn.linkmenu && menuObj[btn.linkmenu]) {
              menus.push(menuObj[btn.linkmenu])
            } else if (btn.openmenu && menuObj[btn.openmenu]) {
              menus.push(menuObj[btn.openmenu])
            }
          })
          item.subcards.forEach(card => {
            if (card.setting.click === 'menu' && menuObj[card.setting.menu]) {
              menus.push(menuObj[card.setting.menu])
            } else if (card.setting.click === 'menus' && card.menus) {
              card.menus.forEach(m => {
                if (menuObj[m.menu]) {
                  menus.push(menuObj[m.menu])
                }
              })
            }
            card.elements && card.elements.forEach(cell => {
              if (cell.eleType !== 'button') return
              if (cell.linkmenu && menuObj[cell.linkmenu]) {
                menus.push(menuObj[cell.linkmenu])
              } else if (cell.openmenu && menuObj[cell.openmenu]) {
                menus.push(menuObj[cell.openmenu])
              }
            })
          })
        } else if (item.type === 'carousel' || item.type === 'timeline') {
          item.subcards.forEach(card => {
            if (card.setting.click === 'menu' && menuObj[card.setting.menu]) {
              menus.push(menuObj[card.setting.menu])
            }
            card.elements && card.elements.forEach(cell => {
              if (cell.eleType !== 'button') return
              if (cell.linkmenu && menuObj[cell.linkmenu]) {
                menus.push(menuObj[cell.linkmenu])
              } else if (cell.openmenu && menuObj[cell.openmenu]) {
                menus.push(menuObj[cell.openmenu])
              }
            })
          })
        } else if (item.type === 'balcony') {
          item.elements && item.elements.forEach(cell => {
            if (cell.eleType !== 'button') return
            if (cell.linkmenu && menuObj[cell.linkmenu]) {
                menus.push(menuObj[cell.linkmenu])
              } else if (cell.openmenu && menuObj[cell.openmenu]) {
                menus.push(menuObj[cell.openmenu])
              }
          })
        } else if (item.type === 'form') {
          item.subcards.forEach(m => {
            if (m.subButton && m.subButton.linkmenu && menuObj[m.subButton.linkmenu]) {
              menus.push(menuObj[m.subButton.linkmenu])
            }
          })
        } else if (item.type === 'table' && item.subtype === 'normaltable') {
          item.action && item.action.forEach(btn => {
            if (btn.linkmenu && menuObj[btn.linkmenu]) {
              menus.push(menuObj[btn.linkmenu])
            } else if (btn.openmenu && menuObj[btn.openmenu]) {
              menus.push(menuObj[btn.openmenu])
            }
          })
          item.cols && item.cols.forEach(col => {
            if (col.type !== 'action') return
            col.elements.forEach(btn => {
              if (btn.linkmenu && menuObj[btn.linkmenu]) {
                menus.push(menuObj[btn.linkmenu])
              } else if (btn.openmenu && menuObj[btn.openmenu]) {
                menus.push(menuObj[btn.openmenu])
              }
            })
          })
        }
      })
    }
    traversal(config.components)
    let map = new Map()
    menus = menus.filter(m => {
      if (map.has(m.MenuID)) return false
      map.set(m.MenuID, true)
      return true
    })
    return menus
  }
  checkBtn = (btn) => {
    if (['prompt', 'exec', 'pop'].includes(btn.OpenType) && btn.Ot === 'required' && btn.verify && btn.verify.scripts && btn.verify.scripts.length > 0) {
      let hascheck = false
@@ -1147,6 +1315,10 @@
        config = this.getMiniStyle(config)
      }
      let subMenus = this.getSubMenus()
      let menus_used_list = subMenus.map(m => `'${config.uuid}','${config.MenuName || ''}','${config.MenuNo || ''}','${m.MenuID}','${m.MenuName}'`).join(';')
      menus_used_list = window.btoa(window.encodeURIComponent(menus_used_list || 'del'))
      let param = {
        func: 'sPC_TrdMenu_AddUpt',
        FstID: 'mk_app',
@@ -1163,7 +1335,8 @@
        open_edition: config.open_edition,
        menus_rolelist: window.btoa(window.encodeURIComponent(JSON.stringify(roleParam))),
        LText: '',
        LTexttb: ''
        LTexttb: '',
        menus_used_list
      }
      param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
@@ -1768,7 +1941,7 @@
                <ArrowLeftOutlined title="后退" className="back-view" onClick={this.backView}/>
                <CreateView resetmenu={this.getAppMenus} />
                <PasteController insert={this.insert} />
                <StyleCombControlButton menu={config} />
                <ViewNodes config={config} MenuId={MenuId}/>
                <SysInterface config={config} updateConfig={this.updateConfig}/>
                <PictureController/>
                <Quotecomponent config={config} updateConfig={this.updateConfig}/>
@@ -1777,6 +1950,7 @@
                <ReplaceField type="custom" config={config} updateConfig={this.resetConfig}/>
                <Transfer MenuID={MenuId} />
                <Versions MenuId={MenuId} open_edition={config ? config.open_edition : ''}/>
                <StyleCombControlButton menu={config} />
                <Button className="mk-border-danger" onClick={this.refreshView}><RedoOutlined /> 强制刷新</Button>
                <Button type="default" onClick={this.closeView}>关闭</Button>
              </div>