From 704f82b06befe96e5f739b2dce419f76f5683a6f Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期一, 15 八月 2022 09:27:54 +0800 Subject: [PATCH] Merge branch 'develop' --- src/templates/zshare/modalform/index.jsx | 57 src/tabviews/formtab/index.jsx | 4 src/menu/components/timeline/normal-timeline/index.jsx | 24 src/mob/components/tabs/antv-tabs/options.jsx | 23 src/views/popdesign/menuform/index.scss | 0 src/templates/zshare/verifycard/customscript/index.jsx | 2 src/tabviews/custom/components/module/voucher/assistTable/index.jsx | 738 +++++++++ src/locales/zh-CN/model.js | 1 src/menu/components/chart/antv-scatter/index.jsx | 5 src/pc/menushell/index.scss | 2 src/tabviews/zshare/mutilform/mkInput/index.jsx | 73 src/views/design/sidemenu/index.jsx | 6 src/tabviews/commontable/index.jsx | 10 src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx | 4 src/menu/datasource/verifycard/index.jsx | 2 src/menu/components/form/formaction/formconfig.jsx | 13 src/mob/components/navbar/normal-navbar/menus/menuform/index.jsx | 134 src/tabviews/custom/components/card/prop-card/index.jsx | 6 src/menu/components/card/cardcellcomponent/index.jsx | 2 src/menu/components/card/data-card/options.jsx | 1 src/menu/components/form/tab-form/index.jsx | 22 src/tabviews/custom/components/table/normal-table/index.jsx | 2 src/menu/components/carousel/prop-card/index.jsx | 22 src/menu/components/tabs/antv-tabs/options.jsx | 26 src/mob/components/menubar/normal-menubar/menucomponent/options.jsx | 45 src/tabviews/custom/components/timeline/normal-timeline/index.jsx | 35 src/menu/components/chart/antv-pie/index.jsx | 5 src/tabviews/zshare/mutilform/index.jsx | 10 src/menu/components/share/actioncomponent/actionform/index.jsx | 47 src/tabviews/custom/index.jsx | 80 src/tabviews/zshare/mutilform/mkTextArea/index.jsx | 25 src/menu/components/card/prop-card/index.jsx | 49 src/templates/zshare/customscript/index.jsx | 2 src/menu/components/table/normal-table/columns/index.jsx | 16 src/menu/components/table/edit-table/columns/index.jsx | 15 src/pc/components/navbar/normal-navbar/index.jsx | 4 package-lock.json | 497 +++++ src/assets/css/viewstyle.scss | 28 src/views/design/header/index.jsx | 4 src/tabviews/verupmanage/subtabtable/index.jsx | 4 src/menu/components/form/formaction/actionform/index.jsx | 58 src/menu/components/card/prop-card/index.scss | 9 src/tabviews/custom/components/carousel/data-card/index.scss | 1 src/menu/components/chart/chart-custom/index.jsx | 4 src/tabviews/zshare/actionList/exceloutbutton/index.jsx | 2 src/menu/components/form/simple-form/index.jsx | 22 src/menu/components/chart/antv-bar/index.jsx | 5 src/tabviews/custom/components/table/edit-table/index.jsx | 2 src/api/index.js | 42 src/tabviews/subtable/index.jsx | 10 src/tabviews/custom/components/module/voucher/assistTable/index.scss | 259 +++ src/menu/components/table/edit-table/index.jsx | 22 src/menu/components/carousel/data-card/index.jsx | 22 src/menu/sysinterface/index.jsx | 1 src/mob/components/menubar/normal-menubar/menucomponent/index.jsx | 2 src/views/popdesign/index.scss | 32 src/menu/components/form/step-form/index.jsx | 22 src/pc/bgcontroller/index.jsx | 38 src/views/pcdesign/index.jsx | 175 - src/pc/components/navbar/normal-navbar/menusetting/menuform/index.jsx | 74 src/menu/components/share/actioncomponent/index.jsx | 2 src/tabviews/scriptmanage/index.jsx | 4 src/locales/en-US/mob.js | 1 src/utils/utils-datamanage.js | 23 src/menu/sysinterface/settingform/simplescript/index.jsx | 2 src/menu/components/table/edit-table/columns/tableIn/index.jsx | 4 src/menu/stylecombcontrolbutton/index.scss | 10 src/templates/sharecomponent/settingcomponent/settingform/simplescript/index.jsx | 2 src/menu/components/card/table-card/index.jsx | 16 src/mob/components/tabs/antv-tabs/index.jsx | 1 src/tabviews/custom/components/tabs/antv-tabs/index.jsx | 16 src/menu/components/form/formaction/actionform/index.scss | 5 src/templates/sharecomponent/actioncomponent/actionform/index.scss | 5 public/options.json | 14 src/tabviews/custom/components/carousel/prop-card/index.scss | 1 src/menu/components/form/formaction/index.jsx | 2 src/menu/components/card/data-card/index.scss | 9 src/menu/components/tree/antd-tree/index.jsx | 4 src/tabviews/subtabtable/index.jsx | 10 src/tabviews/zshare/actionList/normalbutton/index.jsx | 682 +++++--- src/views/mobdesign/index.jsx | 145 src/views/menudesign/index.jsx | 222 +- src/menu/datasource/verifycard/columnform/index.jsx | 4 src/views/design/index.scss | 5 src/locales/zh-CN/mob.js | 1 src/menu/components/share/actioncomponent/formconfig.jsx | 53 src/templates/sharecomponent/actioncomponent/actionform/index.jsx | 28 src/router/index.js | 2 src/menu/components/card/data-card/index.jsx | 45 src/views/popdesign/index.jsx | 320 ++- src/menu/components/chart/antv-dashboard/index.jsx | 5 src/views/imdesign/index.jsx | 2 src/menu/components/table/normal-table/index.jsx | 24 src/tabviews/verupmanage/index.jsx | 4 src/menu/components/tabs/antv-tabs/index.jsx | 1 src/menu/menushell/index.scss | 3 src/views/design/index.jsx | 25 src/components/header/index.jsx | 7 src/templates/formtabconfig/index.jsx | 2 src/pc/components/navbar/normal-navbar/menusetting/menutable/index.jsx | 6 src/tabviews/calendar/index.jsx | 4 src/menu/components/code/sandbox/index.jsx | 4 src/locales/en-US/model.js | 1 src/utils/utils.js | 9 src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx | 2 src/menu/components/card/balcony/index.jsx | 12 src/components/normalform/modalform/index.jsx | 33 src/templates/zshare/formconfig.jsx | 141 + src/templates/zshare/verifycard/index.jsx | 27 /dev/null | 9 src/views/popdesign/menuform/index.jsx | 14 src/templates/sharecomponent/actioncomponent/index.jsx | 2 src/menu/components/editor/braft-editor/index.jsx | 4 package.json | 1 src/tabviews/zshare/fileupload/index.jsx | 40 115 files changed, 3,576 insertions(+), 1,291 deletions(-) diff --git a/package-lock.json b/package-lock.json index 33515f6..c574856 100644 --- a/package-lock.json +++ b/package-lock.json @@ -623,6 +623,257 @@ } } }, + "@antv/x6": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/@antv/x6/-/x6-1.33.0.tgz", + "integrity": "sha512-B9KkOZJrhgjwDfwUBl58YAGcnD3lpebVaGPGxFMtLcBWmM7K6aDu+TK0CbcdoTS99OyqUQkzNI4O4RFwrw+SRA==", + "requires": { + "csstype": "^3.0.3", + "jquery": "^3.5.1", + "jquery-mousewheel": "^3.1.13", + "lodash-es": "^4.17.15", + "mousetrap": "^1.6.5", + "utility-types": "^3.10.0" + }, + "dependencies": { + "csstype": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.0.tgz", + "integrity": "sha512-uX1KG+x9h5hIJsaKR9xHUeUraxf8IODOwq9JLNPq6BwB04a/xgpq3rcx47l5BZu5zBPlgD342tdke3Hom/nJRA==" + } + } + }, + "@antv/x6-react-components": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@antv/x6-react-components/-/x6-react-components-1.1.15.tgz", + "integrity": "sha512-tXUak5CPuZLIA0fVBSM2vZ+TxxoEGBcokr0J69e7H0G3WIutDf6J6RkNeRGuKvcW8O1Lef1jiBGSLLjlrRXf0g==", + "requires": { + "clamp": "^1.0.1", + "classnames": "^2.2.6", + "rc-dropdown": "^3.0.0-alpha.0", + "rc-util": "^4.15.7", + "react-color": "^2.17.3", + "react-resize-detector": "^6.6.4", + "ua-parser-js": "^0.7.20" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "rc-align": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/rc-align/-/rc-align-4.0.12.tgz", + "integrity": "sha512-3DuwSJp8iC/dgHzwreOQl52soj40LchlfUHtgACOUtwGuoFIOVh6n/sCpfqCU8kO5+iz6qR0YKvjgB8iPdE3aQ==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "2.x", + "dom-align": "^1.7.0", + "lodash": "^4.17.21", + "rc-util": "^5.3.0", + "resize-observer-polyfill": "^1.5.1" + }, + "dependencies": { + "rc-util": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.23.0.tgz", + "integrity": "sha512-lgm6diJ/pLgyfoZY59Vz7sW4mSoQCgozqbBye9IJ7/mb5w5h4T7h+i2JpXAx/UBQxscBZe68q0sP7EW+qfkKUg==", + "requires": { + "@babel/runtime": "^7.18.3", + "react-is": "^16.12.0", + "shallowequal": "^1.1.0" + } + } + } + }, + "rc-dropdown": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/rc-dropdown/-/rc-dropdown-3.6.2.tgz", + "integrity": "sha512-Wsw7GkVbUXADEs8FPL0v8gd+3mWQiydPFXBlr2imMScQaf8hh79pG9KrBc1DwK+nqHmYOpQfK2gn6jG2AQw9Pw==", + "requires": { + "@babel/runtime": "^7.10.1", + "classnames": "^2.2.6", + "rc-trigger": "^5.0.4", + "rc-util": "^5.17.0" + }, + "dependencies": { + "rc-util": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.23.0.tgz", + "integrity": "sha512-lgm6diJ/pLgyfoZY59Vz7sW4mSoQCgozqbBye9IJ7/mb5w5h4T7h+i2JpXAx/UBQxscBZe68q0sP7EW+qfkKUg==", + "requires": { + "@babel/runtime": "^7.18.3", + "react-is": "^16.12.0", + "shallowequal": "^1.1.0" + } + } + } + }, + "rc-trigger": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/rc-trigger/-/rc-trigger-5.3.1.tgz", + "integrity": "sha512-5gaFbDkYSefZ14j2AdzucXzlWgU2ri5uEjkHvsf1ynRhdJbKxNOnw4PBZ9+FVULNGFiDzzlVF8RJnR9P/xrnKQ==", + "requires": { + "@babel/runtime": "^7.18.3", + "classnames": "^2.2.6", + "rc-align": "^4.0.0", + "rc-motion": "^2.0.0", + "rc-util": "^5.19.2" + }, + "dependencies": { + "rc-util": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.23.0.tgz", + "integrity": "sha512-lgm6diJ/pLgyfoZY59Vz7sW4mSoQCgozqbBye9IJ7/mb5w5h4T7h+i2JpXAx/UBQxscBZe68q0sP7EW+qfkKUg==", + "requires": { + "@babel/runtime": "^7.18.3", + "react-is": "^16.12.0", + "shallowequal": "^1.1.0" + } + } + } + }, + "rc-util": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-4.21.1.tgz", + "integrity": "sha512-Z+vlkSQVc1l8O2UjR3WQ+XdWlhj5q9BMQNLk2iOBch75CqPfrJyGtcWMcnhRlNuDu0Ndtt4kLVO8JI8BrABobg==", + "requires": { + "add-dom-event-listener": "^1.1.0", + "prop-types": "^15.5.10", + "react-is": "^16.12.0", + "react-lifecycles-compat": "^3.0.4", + "shallowequal": "^1.1.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + } + } + }, + "@antv/x6-react-shape": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@antv/x6-react-shape/-/x6-react-shape-1.6.1.tgz", + "integrity": "sha512-EkcDoIlfbQC69DGgwznFRsi78fW+apTO0OW5J6tnKpMW3r6zB5zr5QM06hzq5UEUgGheMUxNh3wrTd0jnCwR3A==" + }, + "@antv/xflow": { + "version": "1.0.50", + "resolved": "https://registry.npmjs.org/@antv/xflow/-/xflow-1.0.50.tgz", + "integrity": "sha512-LZ6vSgL13TZSykuIu5zInU7bUSKcgP35tXdsmLAxh7yVDPprBsEm0pGFQSE0QqSWT3TJy/hUZ8HIF8Lo2QJ2Wg==", + "requires": { + "@antv/layout": "^0.1.22", + "@antv/x6": "^1.31.0", + "@antv/x6-react-components": "^1.1.15", + "@antv/x6-react-shape": "^1.5.2", + "@antv/xflow-core": "1.0.50", + "@antv/xflow-extension": "1.0.50", + "@antv/xflow-hook": "1.0.50" + }, + "dependencies": { + "@antv/layout": { + "version": "0.1.31", + "resolved": "https://registry.npmjs.org/@antv/layout/-/layout-0.1.31.tgz", + "integrity": "sha512-iz9i19dOJGiZr5xBWI5sfG+2K3QVMNAGOBrbjWKH2RGLvGpf2TSFySidhz0siDrcQA46cDsjLmGstezQdgeGzA==", + "requires": { + "@antv/g-webgpu": "0.5.5", + "@dagrejs/graphlib": "2.1.4", + "d3-force": "^2.0.1", + "ml-matrix": "^6.5.0" + } + } + } + }, + "@antv/xflow-core": { + "version": "1.0.50", + "resolved": "https://registry.npmjs.org/@antv/xflow-core/-/xflow-core-1.0.50.tgz", + "integrity": "sha512-KREkPxkWkfy4FjK3N23XTHjSlPGwgrmpwlp5EGkyl0gOwlQVLuSUofNoK4rRg0CW+KLJI5AIDdqFkBMHl3udmA==", + "requires": { + "@antv/xflow-hook": "1.0.50", + "classnames": "^2.3.1", + "immer": "^9.0.7", + "mana-common": "^0.3.1", + "mana-syringe": "^0.2.2", + "reflect-metadata": "^0.1.13", + "rxjs": "^6.6.7" + }, + "dependencies": { + "classnames": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.1.tgz", + "integrity": "sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==" + }, + "immer": { + "version": "9.0.15", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.15.tgz", + "integrity": "sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ==" + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "requires": { + "tslib": "^1.9.0" + } + } + } + }, + "@antv/xflow-extension": { + "version": "1.0.50", + "resolved": "https://registry.npmjs.org/@antv/xflow-extension/-/xflow-extension-1.0.50.tgz", + "integrity": "sha512-kJ61xa38112ObRPuui7LEpz0+ZB9qoKR4Kf/A48GoG/iC4VtwmYuSeZ4ivztqnLVZHa5lh4l482FJIM7qyzGjA==", + "requires": { + "@antv/xflow-core": "1.0.50", + "@antv/xflow-hook": "1.0.50", + "mana-syringe": "^0.2.2", + "moment": "^2.29.1", + "rc-field-form": "^1.22.0", + "react-color": "2.17.1", + "reflect-metadata": "^0.1.13" + }, + "dependencies": { + "moment": { + "version": "2.29.4", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" + }, + "react-color": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.17.1.tgz", + "integrity": "sha512-S+I6TkUKJaqfALLkAIfiCZ/MANQyy7dKkf7g9ZU5GTUy2rf8c2Rx62otyvADAviWR+6HRkzdf2vL1Qvz9goCLQ==", + "requires": { + "@icons/material": "^0.2.4", + "lodash": "^4.17.11", + "material-colors": "^1.2.1", + "prop-types": "^15.5.10", + "reactcss": "^1.2.0", + "tinycolor2": "^1.4.1" + } + } + } + }, + "@antv/xflow-hook": { + "version": "1.0.50", + "resolved": "https://registry.npmjs.org/@antv/xflow-hook/-/xflow-hook-1.0.50.tgz", + "integrity": "sha512-d/Mia7LaWs1wba35PhdqQaWdM84qti7Yh73rb0gziUNQTPra04AtIaAkDgZ17gphQ85c4IgiDLJK2fXn8+F1sQ==", + "requires": { + "toposort": "^2.0.2" + } + }, "@babel/code-frame": { "version": "7.5.5", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", @@ -1802,6 +2053,14 @@ "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz", "integrity": "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ==" }, + "@dagrejs/graphlib": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@dagrejs/graphlib/-/graphlib-2.1.4.tgz", + "integrity": "sha512-QCg9sL4uhjn468FDEsb/S9hS2xUZSrv/+dApb1Ze5VKO96pTXKNJZ6MGhIpgWkc1TVhbVGH9/7rq/Mf8/jWicw==", + "requires": { + "lodash": "^4.11.1" + } + }, "@fast-csv/format": { "version": "4.3.5", "resolved": "https://registry.npmjs.org/@fast-csv/format/-/format-4.3.5.tgz", @@ -2932,6 +3191,11 @@ "reselect": "*" } }, + "@types/resize-observer-browser": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@types/resize-observer-browser/-/resize-observer-browser-0.1.7.tgz", + "integrity": "sha512-G9eN0Sn0ii9PWQ3Vl72jDPgeJwRWhv2Qk/nQkJuWmRmOB4HX3/BhD5SE1dZs/hzPZL/WKnvF0RHdTSG54QJFyg==" + }, "@types/shallowequal": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/shallowequal/-/shallowequal-1.1.1.tgz", @@ -3389,7 +3653,7 @@ "amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==" }, "anser": { "version": "1.4.10", @@ -3724,9 +3988,9 @@ } }, "are-we-there-yet": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", - "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" @@ -3782,7 +4046,7 @@ "array-find-index": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", - "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==" }, "array-flatten": { "version": "2.1.2", @@ -3905,7 +4169,7 @@ "async-foreach": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=" + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==" }, "async-limiter": { "version": "1.0.1", @@ -4652,7 +4916,7 @@ "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", "requires": { "inherits": "~2.0.0" } @@ -5115,7 +5379,7 @@ "camelcase-keys": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", - "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==", "requires": { "camelcase": "^2.0.0", "map-obj": "^1.0.0" @@ -5124,7 +5388,7 @@ "camelcase": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=" + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==" } } }, @@ -5280,6 +5544,11 @@ "safe-buffer": "^5.0.1" } }, + "clamp": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz", + "integrity": "sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA==" + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -5342,7 +5611,7 @@ "cliui": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "integrity": "sha512-0yayqDxWQbqk3ojkYqUKqaAQ6AfNKeKWRNA8kR0WXzAsdHpP4BIaOmMAG87JGuO6qcobyW4GjxHd9PmhEd+T9w==", "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1", @@ -5639,7 +5908,7 @@ "console-control-strings": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==" }, "constants-browserify": { "version": "1.0.0", @@ -5822,7 +6091,7 @@ "cross-spawn": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "integrity": "sha512-eZ+m1WNhSZutOa/uRblAc9Ut5MQfukFrFMtPSm3bZCA888NmMd5AWXWdgRZ80zd+pTk1P2JrGjg9pUPTvl2PWQ==", "requires": { "lru-cache": "^4.0.1", "which": "^1.2.9" @@ -6133,7 +6402,7 @@ "currently-unhandled": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", - "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", "requires": { "array-find-index": "^1.0.1" } @@ -6515,7 +6784,7 @@ "delegates": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==" }, "denodeify": { "version": "1.2.1", @@ -10034,7 +10303,7 @@ "gauge": { "version": "2.7.4", "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", @@ -10067,7 +10336,7 @@ "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=" + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==" }, "get-stream": { "version": "4.1.0", @@ -10220,13 +10489,20 @@ } }, "globule": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz", - "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", "requires": { "glob": "~7.1.1", - "lodash": "~4.17.10", + "lodash": "^4.17.21", "minimatch": "~3.0.2" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + } } }, "graceful-fs": { @@ -10344,7 +10620,7 @@ "has-unicode": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==" }, "has-value": { "version": "1.0.0", @@ -10811,14 +11087,14 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "in-publish": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.0.tgz", - "integrity": "sha1-4g/146KvwmkDILbcVSaCqcf631E=" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==" }, "indent-string": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==", "requires": { "repeating": "^2.0.0" } @@ -12248,10 +12524,20 @@ "resolved": "https://registry.npmjs.org/jetifier/-/jetifier-1.6.6.tgz", "integrity": "sha512-JNAkmPeB/GS2tCRqUzRPsTOHpGDah7xP18vGJfIjZC+W2sxEHbxgJxetIjIqhjQ3yYbYNEELkM/spKLtwoOSUQ==" }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "jquery-mousewheel": { + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/jquery-mousewheel/-/jquery-mousewheel-3.1.13.tgz", + "integrity": "sha512-GXhSjfOPyDemM005YCEHvzrEALhKDIswtxSHSR2e4K/suHVJKJxxRCGz3skPjNxjJjQa9AVSGGlYjv1M3VLIPg==" + }, "js-base64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", - "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==" + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==" }, "js-cookie": { "version": "2.2.1", @@ -12637,6 +12923,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, "lodash._getnative": { "version": "3.9.1", "resolved": "https://registry.npmjs.org/lodash._getnative/-/lodash._getnative-3.9.1.tgz", @@ -12962,7 +13253,7 @@ "loud-rejection": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", - "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", "requires": { "currently-unhandled": "^0.4.1", "signal-exit": "^3.0.0" @@ -13016,6 +13307,19 @@ "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==" }, + "mana-common": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/mana-common/-/mana-common-0.3.1.tgz", + "integrity": "sha512-nU4h4ES0nPP0/QHCJzd7zTfr0nvJWaQR1H7N3zQc+clEAwRcMNti9i+1NIvLBUarhQZ74+bU95xfqkQpr8jPog==" + }, + "mana-syringe": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/mana-syringe/-/mana-syringe-0.2.2.tgz", + "integrity": "sha512-Sv5r0/PrQRq4pW+9lDicGsEPzPLkd1PwjTs5zHUV1I293S3alkBNyuSjktVeBploofH8MAMLd4DS2crwct48wg==", + "requires": { + "inversify": "^5.0.1" + } + }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -13032,7 +13336,7 @@ "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" }, "map-visit": { "version": "1.0.0", @@ -13123,7 +13427,7 @@ "meow": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", - "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==", "requires": { "camelcase-keys": "^2.0.0", "decamelize": "^1.1.2", @@ -14189,6 +14493,11 @@ "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" }, + "mousetrap": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", + "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", @@ -14330,7 +14639,7 @@ "semver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", - "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=" + "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==" } } }, @@ -14455,12 +14764,12 @@ "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==" }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", "requires": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", @@ -14472,7 +14781,7 @@ "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==" } } }, @@ -14484,7 +14793,7 @@ "nopt": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", "requires": { "abbrev": "1" } @@ -14873,7 +15182,7 @@ "os-locale": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "integrity": "sha512-PRT7ZORmwu2MEFt4/fv3Q+mEfN4zetKxufQrkShY2oGvUms9r8otu5HfdyIFHkYXjO7laNsoVGmM2MANfuTA8g==", "requires": { "lcid": "^1.0.0" } @@ -16936,6 +17245,46 @@ } } }, + "rc-motion": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/rc-motion/-/rc-motion-2.6.2.tgz", + "integrity": "sha512-4w1FaX3dtV749P8GwfS4fYnFG4Rb9pxvCYPc/b2fw1cmlHJWNNgOFIz7ysiD+eOrzJSvnLJWlNQQncpNMXwwpg==", + "requires": { + "@babel/runtime": "^7.11.1", + "classnames": "^2.2.1", + "rc-util": "^5.21.0" + }, + "dependencies": { + "@babel/runtime": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "rc-util": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.23.0.tgz", + "integrity": "sha512-lgm6diJ/pLgyfoZY59Vz7sW4mSoQCgozqbBye9IJ7/mb5w5h4T7h+i2JpXAx/UBQxscBZe68q0sP7EW+qfkKUg==", + "requires": { + "@babel/runtime": "^7.18.3", + "react-is": "^16.12.0", + "shallowequal": "^1.1.0" + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" + } + } + }, "rc-notification": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/rc-notification/-/rc-notification-3.3.1.tgz", @@ -17969,6 +18318,23 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==" }, + "react-resize-detector": { + "version": "6.7.8", + "resolved": "https://registry.npmjs.org/react-resize-detector/-/react-resize-detector-6.7.8.tgz", + "integrity": "sha512-0FaEcUBAbn+pq3PT5a9hHRebUfuS1SRLGLpIw8LydU7zX429I6XJgKerKAMPsJH0qWAl6o5bVKNqFJqr6tGPYw==", + "requires": { + "@types/resize-observer-browser": "^0.1.6", + "lodash": "^4.17.21", + "resize-observer-polyfill": "^1.5.1" + }, + "dependencies": { + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + } + } + }, "react-router": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.0.1.tgz", @@ -18097,7 +18463,7 @@ "redent": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", - "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==", "requires": { "indent-string": "^2.1.0", "strip-indent": "^1.0.1" @@ -18594,9 +18960,9 @@ } }, "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.6.tgz", + "integrity": "sha512-MKuEYXFSGuRSi8FZ3A7imN1CeVn9Gpw0/SFJKdL1ejXJneI9a5rwlEZrKejhEFAA3O6yr3eIyl/WuvASvlT36g==", "requires": { "glob": "^7.0.0", "lodash": "^4.0.0", @@ -18691,7 +19057,7 @@ "scss-tokenizer": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", - "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "integrity": "sha512-dYE8LhncfBUar6POCxMTm0Ln+erjeczqEvCJib5/7XNkdw1FkUGgwMPY360FY0FgPWQxHWCx29Jl3oejyGLM9Q==", "requires": { "js-base64": "^2.1.8", "source-map": "^0.4.2" @@ -18700,7 +19066,7 @@ "source-map": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==", "requires": { "amdefine": ">=0.0.4" } @@ -19727,7 +20093,7 @@ "strip-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", - "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", "requires": { "get-stdin": "^4.0.1" } @@ -20168,6 +20534,11 @@ "commander": "2" } }, + "toposort": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==" + }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", @@ -20200,7 +20571,7 @@ "trim-newlines": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", - "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=" + "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==" }, "trim-right": { "version": "1.0.1", @@ -20806,6 +21177,11 @@ "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=" }, + "utility-types": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.10.0.tgz", + "integrity": "sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg==" + }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", @@ -21283,14 +21659,14 @@ "which-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" + "integrity": "sha512-F6+WgncZi/mJDrammbTuHe1q0R5hOXv/mBaiNA2TCNT/LTHusX0V+CJnj9XT8ki5ln2UZyyddDgHfCzyrOH7MQ==" }, "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "requires": { - "string-width": "^1.0.2 || 2" + "string-width": "^1.0.2 || 2 || 3 || 4" } }, "wolfy87-eventemitter": { @@ -21612,9 +21988,9 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=" }, "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.2.tgz", + "integrity": "sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA==", "requires": { "camelcase": "^3.0.0", "cliui": "^3.2.0", @@ -21628,28 +22004,29 @@ "string-width": "^1.0.2", "which-module": "^1.0.0", "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" + "yargs-parser": "^5.0.1" }, "dependencies": { "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==" } } }, "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.1.tgz", + "integrity": "sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA==", "requires": { - "camelcase": "^3.0.0" + "camelcase": "^3.0.0", + "object.assign": "^4.1.0" }, "dependencies": { "camelcase": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" + "integrity": "sha512-4nhGqUkc4BqbBBB4Q6zLuD7lzzrHYrjKGeYaEji/3tFR5VdJu9v+LilhGIVe8wxEJPPOeWo7eg8dwY13TZ1BNg==" } } }, diff --git a/package.json b/package.json index 6e1cd73..c177abb 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "@antv/g2": "^4.1.34", "@antv/g6": "^4.6.4", "@antv/util": "^2.0.17", + "@antv/xflow": "^1.0.50", "@babel/core": "7.5.5", "@svgr/webpack": "4.3.2", "@typescript-eslint/eslint-plugin": "1.13.0", diff --git a/public/options.json b/public/options.json index 6595475..523da64 100644 --- a/public/options.json +++ b/public/options.json @@ -1,20 +1,20 @@ { - "appId": "202108312122504607B107A83F55B40C98CCF", - "appkey": "20210831212235413F287EC3BF489424496C8", - "mainSystemApi": "https://sso.mk9h.cn/cloud/webapi/dostars", + "appId": "201912040924165801464FF1788654BC5AC73", + "appkey": "20191106103859640976D6E924E464D029CF0", + "mainSystemApi": "http://sso.mk9h.cn/cloud/webapi/dostars", "systemType": "", "externalDatabase": "false", "lineColor": "", "filter": "false", - "defaultApp": "mkindustry", + "defaultApp": "mk", "defaultLang": "zh-CN", - "WXAppID": "wx4d8a34c8d4494872", + "WXAppID": "", "WXminiAppID": "", "debugger": false, "licenseKey": "", "probation": "", "keepPassword": "true", "platforms": ["H5", "wechat", "android", "ios", "wxMiniProgram"], - "host": "http://demo.mk9h.cn", - "service": "erp_new/" + "host": "http://qingqiumarket.cn", + "service": "MKWMS/" } \ No newline at end of file diff --git a/src/api/index.js b/src/api/index.js index 74c1c5b..39c477c 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -29,7 +29,7 @@ axios.interceptors.request.use((config) => { if (config.url.includes('LoginAndRedirect') || config.url.includes('getjsonresult') || config.url.includes('wxNativePay')) { config.data = qs.stringify(config.data) - } else if (config.url.includes('doupload') || config.url.includes('dopreload')) { + } else if (/\/doupload|\/dopreload|\/upload/.test(config.url)) { config.headers = { 'Content-Type': 'multipart/form-data' } } else if (config.method === 'post' && config.data) { config.data = JSON.stringify(config.data) @@ -810,17 +810,16 @@ param.LoginUID = sessionStorage.getItem('CloudLoginUID') || param.LoginUID || '' } - // 寰呬紭鍖栵紝澧炲姞鏄惁鏀寔璺ㄥ煙璇锋眰 - // let url = '/webapi/dostars' - // if (param.rduri) { - // url = param.rduri - // delete param.rduri - // } + let url = '/webapi/dostars' + if (param.rduri && /\/dostars/.test(param.rduri)) { + url = param.rduri + delete param.rduri + } param = this.encryptParam(param) return axios({ - url: `/webapi/dostars${param.func ? '/' + param.func : ''}`, + url: `${url}${param.func ? '/' + param.func : ''}`, method: 'post', data: param }) @@ -929,6 +928,33 @@ } /** + * @description oss鏂囦欢涓婁紶 + */ + fileOssUpload (param) { + let _url = window.GLOB.location + '/file/oss/upload' + if (process.env.NODE_ENV === 'production') { + _url = document.location.origin + '/file/oss/upload' + } + if (/^http:\/\/(qingqiumarket.cn|cloud.mk9h.cn|sso.mk9h.cn)/.test(_url)) { + _url = window.GLOB.location + ':8080/file/oss/upload' + if (process.env.NODE_ENV === 'production') { + _url = document.location.origin + ':8080/file/oss/upload' + } + } else if (/^https:\/\/(qingqiumarket.cn|cloud.mk9h.cn|sso.mk9h.cn)/.test(_url)) { + _url = window.GLOB.location + ':8443/file/oss/upload' + if (process.env.NODE_ENV === 'production') { + _url = document.location.origin + ':8443/file/oss/upload' + } + } + + return axios({ + url: _url, + method: 'post', + data: param + }) + } + + /** * @description 鑾峰彇寰俊鏀粯浜岀淮鐮� */ getWxNativePay (param) { diff --git a/src/assets/css/viewstyle.scss b/src/assets/css/viewstyle.scss index ef70846..33dc189 100644 --- a/src/assets/css/viewstyle.scss +++ b/src/assets/css/viewstyle.scss @@ -227,6 +227,34 @@ } } } + .data-zoom.radio.tabs, .data-zoom.checkbox.tabs { + .mk-card { + > .card-item-box { + border-top: none!important; + border-left: none!important; + border-right: none!important; + border-radius: 0px!important; + border-bottom: 2px solid transparent!important; + transition: all 0.3s; + cursor: pointer; + } + } + .mk-card:hover { + > .card-item-box { + .ant-mk-text, .ant-mk-date { + color: $color6; + } + } + } + .mk-card.active, .mk-card.selected { + > .card-item-box { + border-bottom-color: $color6!important; + .ant-mk-text, .ant-mk-date { + color: $color6; + } + } + } + } } .normal-group-wrap { .print-button:hover, .print-button:focus, .print-button:active { diff --git a/src/components/header/index.jsx b/src/components/header/index.jsx index 240973e..afbac7f 100644 --- a/src/components/header/index.jsx +++ b/src/components/header/index.jsx @@ -14,7 +14,7 @@ initMenuPermission, logout } from '@/store/action' -import asyncComponent from '@/utils/asyncComponent' +import asyncComponent from '@/utils/asyncSpinComponent' import Api from '@/api' import MKEmitter from '@/utils/events.js' import options from '@/store/options.js' @@ -67,6 +67,8 @@ } resetPwdSubmit = () => { + if (!this.formRef) return + this.formRef.handleConfirm().then(res => { this.setState({ confirmLoading: true @@ -399,9 +401,12 @@ } loginSubmit = () => { + if (!this.loginRef) return + this.setState({ loginLoading: true }) + this.loginRef.handleConfirm().then(param => { Api.getusermsg(param.username, param.password, true).then(res => { if (res.status) { diff --git a/src/components/normalform/modalform/index.jsx b/src/components/normalform/modalform/index.jsx index 8bc59c5..ce8b71d 100644 --- a/src/components/normalform/modalform/index.jsx +++ b/src/components/normalform/modalform/index.jsx @@ -275,16 +275,29 @@ if (!content) return - fields.push( - <Col span={item.span || 12} key={index}> - <Form.Item label={label}> - {getFieldDecorator(item.field, { - initialValue: item.initval, - rules: item.rules - })(content)} - </Form.Item> - </Col> - ) + if (item.help) { + fields.push( + <Col span={item.span || 12} key={index}> + <Form.Item label={label} help={<span style={{fontSize: '12px'}}>{item.help}</span>}> + {getFieldDecorator(item.field, { + initialValue: item.initval, + rules: item.rules + })(content)} + </Form.Item> + </Col> + ) + } else { + fields.push( + <Col span={item.span || 12} key={index}> + <Form.Item label={label}> + {getFieldDecorator(item.field, { + initialValue: item.initval, + rules: item.rules + })(content)} + </Form.Item> + </Col> + ) + } }) return fields diff --git a/src/locales/en-US/mob.js b/src/locales/en-US/mob.js index a284d0c..c5f7804 100644 --- a/src/locales/en-US/mob.js +++ b/src/locales/en-US/mob.js @@ -20,7 +20,6 @@ 'mob.component': '缁勪欢', 'mob.status.open': '鍚敤', 'mob.status.change': '鍒囨崲', - 'mob.basemsg': '鍩烘湰淇℃伅', 'mob.query.delete': '纭畾鍒犻櫎鍚楋紵', 'mob.logout.hint': '鎮ㄧ‘瀹氳閫�鍑哄悧?', 'mob.required.input': '璇疯緭鍏�', diff --git a/src/locales/en-US/model.js b/src/locales/en-US/model.js index 14aaded..644baf0 100644 --- a/src/locales/en-US/model.js +++ b/src/locales/en-US/model.js @@ -148,7 +148,6 @@ 'model.form.color': 'Color', 'model.query.delete': '纭畾鍒犻櫎鍚�?', 'header.form.status.change': '鐘舵�佸垏鎹�', - 'model.status.open': '鍚敤', 'model.form.funcbutton': 'Function button', 'model.form.execMode': 'Mode', 'header.form.paste': '绮樿创', diff --git a/src/locales/zh-CN/mob.js b/src/locales/zh-CN/mob.js index b7f44ec..107ba2c 100644 --- a/src/locales/zh-CN/mob.js +++ b/src/locales/zh-CN/mob.js @@ -20,7 +20,6 @@ 'mob.component': '缁勪欢', 'mob.status.open': '鍚敤', 'mob.status.change': '鍒囨崲', - 'mob.basemsg': '鍩烘湰淇℃伅', 'mob.query.delete': '纭畾鍒犻櫎鍚楋紵', 'mob.logout.hint': '鎮ㄧ‘瀹氳閫�鍑哄悧?', 'mob.required.input': '璇疯緭鍏�', diff --git a/src/locales/zh-CN/model.js b/src/locales/zh-CN/model.js index bdb362a..518e6de 100644 --- a/src/locales/zh-CN/model.js +++ b/src/locales/zh-CN/model.js @@ -148,7 +148,6 @@ 'model.form.color': '棰滆壊', 'model.query.delete': '纭畾鍒犻櫎鍚�?', 'header.form.status.change': '鐘舵�佸垏鎹�', - 'model.status.open': '鍚敤', 'model.form.funcbutton': '鍔熻兘鎸夐挳', 'model.form.execMode': '鎵ц鏂瑰紡', 'header.form.paste': '绮樿创', diff --git a/src/menu/bgcontroller/index.jsx b/src/menu/bgcontroller/index.jsx deleted file mode 100644 index ba87f28..0000000 --- a/src/menu/bgcontroller/index.jsx +++ /dev/null @@ -1,176 +0,0 @@ -import React, {Component} from 'react' -import PropTypes from 'prop-types' -import { is, fromJS } from 'immutable' -import { Form, Select, Input } from 'antd' - -import asyncComponent from '@/utils/asyncComponent' -import './index.scss' - -const ColorSketch = asyncComponent(() => import('@/mob/colorsketch')) -const SourceComponent = asyncComponent(() => import('@/menu/components/share/sourcecomponent')) -const { Option } = Select - -class MobController extends Component { - static propTpyes = { - config: PropTypes.any, - updateConfig: PropTypes.func, - } - - state = { - background: '', - backgroundColor: '', - backgroundImage: '', - backgroundSize: '', - backgroundRepeat: '', - } - - UNSAFE_componentWillMount () { - const { config } = this.props - - let bgImg = config.style.backgroundImage || '' - - if (bgImg && /^url/.test(bgImg)) { - bgImg = bgImg.replace('url(', '') - bgImg = bgImg.replace(')', '') - } - - this.setState({ - background: config.style.background || '', - backgroundColor: config.style.backgroundColor, - backgroundImage: bgImg, - backgroundSize: config.style.backgroundSize || '100%', - backgroundRepeat: config.style.backgroundRepeat || 'repeat', - }) - } - - shouldComponentUpdate (nextProps, nextState) { - return !is(fromJS(this.state), fromJS(nextState)) - } - - /** - * @description 淇敼鑳屾櫙棰滆壊 锛岄鑹叉帶浠� - */ - changeBackgroundColor = (val) => { - let config = fromJS(this.props.config).toJS() - - this.setState({ - backgroundColor: val - }) - - config.style.backgroundColor = val - this.props.updateConfig(config) - } - - imgChange = (val) => { - this.setState({ - backgroundImage: val - }) - - let config = fromJS(this.props.config).toJS() - - if (val) { - config.style.backgroundImage = `url(${val})` - } else { - delete config.style.backgroundImage - } - this.props.updateConfig(config) - } - - backgroundSizeChange = (val) => { - this.setState({ - backgroundSize: val - }) - - let config = fromJS(this.props.config).toJS() - config.style.backgroundSize = val - - this.props.updateConfig(config) - } - - backgroundRepeatChange = (val) => { - this.setState({ - backgroundRepeat: val - }) - - let config = fromJS(this.props.config).toJS() - config.style.backgroundRepeat = val - - this.props.updateConfig(config) - } - - changeBackground = (val) => { - this.setState({ - background: val, - }) - - if (!val || /(^linear-gradient|^radial-gradient)\(.*\)$/.test(val)) { - let config = fromJS(this.props.config).toJS() - config.style.background = val - - delete config.style.backgroundColor - delete config.style.backgroundImage - - if (!val) { - delete config.style.background - } - - this.setState({ - backgroundImage: '', - backgroundColor: '' - }) - - this.props.updateConfig(config) - } - } - - render () { - const { backgroundColor, backgroundImage, backgroundSize, backgroundRepeat, background } = this.state - const formItemLayout = { - labelCol: { - xs: { span: 24 }, - sm: { span: 4 } - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 20 } - } - } - - return ( - <div className="menu-background-controller"> - <Form {...formItemLayout}> - <Form.Item className="color-control" colon={false} label="棰滆壊"> - <ColorSketch value={backgroundColor} onChange={this.changeBackgroundColor} /> - </Form.Item> - {window.develop === true ? <Form.Item colon={false} label="棰滆壊"> - <Input value={background} onChange={(e) => this.changeBackground(e.target.value)} /> - </Form.Item> : null} - <Form.Item colon={false} label="鍥剧墖"> - <SourceComponent value={backgroundImage} type="" placement="right" onChange={this.imgChange}/> - </Form.Item> - <Form.Item colon={false} label="姣斾緥"> - <Select defaultValue={backgroundSize} onChange={this.backgroundSizeChange}> - <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> - </Form.Item> - <Form.Item colon={false} label="閲嶅"> - <Select defaultValue={backgroundRepeat} onChange={this.backgroundRepeatChange}> - <Option value="repeat">repeat</Option> - <Option value="no-repeat">no-repeat</Option> - <Option value="repeat-x">repeat-x</Option> - <Option value="repeat-y">repeat-y</Option> - </Select> - </Form.Item> - </Form> - </div> - ) - } -} - -export default MobController \ No newline at end of file diff --git a/src/menu/bgcontroller/index.scss b/src/menu/bgcontroller/index.scss deleted file mode 100644 index 0d6ed73..0000000 --- a/src/menu/bgcontroller/index.scss +++ /dev/null @@ -1,43 +0,0 @@ -.menu-background-controller { - width: 100%; - height: 100%; - overflow: hidden; - .color-control .ant-form-item-control { - padding-top: 10px; - line-height: 35px; - } - .mk-source-wrap { - height: 32px; - .mk-source-item-info { - top: 5px; - } - } -} - -.margin-popover { - padding-top: 0px; - .ant-popover-inner-content { - width: 90px; - padding: 0px 5px; - .ant-menu-root.ant-menu-vertical { - border: 0; - .ant-menu-item { - height: 30px; - cursor: pointer; - line-height: 30px; - } - .ant-menu-item:not(:last-child) { - margin-bottom: 0px; - } - .ant-menu-item:first-child { - margin-top: 10px; - } - .ant-menu-item:last-child { - margin-bottom: 10px; - } - } - } - .ant-popover-arrow { - display: none; - } -} \ No newline at end of file diff --git a/src/menu/components/card/balcony/index.jsx b/src/menu/components/card/balcony/index.jsx index 6314c83..d5d1458 100644 --- a/src/menu/components/card/balcony/index.jsx +++ b/src/menu/components/card/balcony/index.jsx @@ -139,18 +139,20 @@ } }) } else { + let supModule = card.wrap.linkType === 'static' ? '' : 'has' + + let columns = card.columns.map(c => c.field) + let lowcols = card.columns.map(c => c.field.toLowerCase()) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) } else if (!card.setting.primaryKey) { card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) } - - let supModule = card.wrap.linkType === 'static' ? '' : 'has' - - let columns = card.columns.map(c => c.field) - let lowcols = card.columns.map(c => c.field.toLowerCase()) card.elements.forEach(cell => { if (cell.eleType === 'button') { diff --git a/src/menu/components/card/cardcellcomponent/index.jsx b/src/menu/components/card/cardcellcomponent/index.jsx index 380ef62..cd73458 100644 --- a/src/menu/components/card/cardcellcomponent/index.jsx +++ b/src/menu/components/card/cardcellcomponent/index.jsx @@ -731,7 +731,7 @@ <Modal title="鎸夐挳路缂栬緫" visible={actvisible} - width={850} + width={920} maskClosable={false} onCancel={this.editModalCancel} footer={[ diff --git a/src/menu/components/card/data-card/index.jsx b/src/menu/components/card/data-card/index.jsx index 67eea0f..bcdde15 100644 --- a/src/menu/components/card/data-card/index.jsx +++ b/src/menu/components/card/data-card/index.jsx @@ -197,6 +197,8 @@ } card.errors = [] + let columns = card.columns.map(c => c.field) + let lowcols = card.columns.map(c => c.field.toLowerCase()) if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) @@ -204,6 +206,8 @@ card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) } else if (!card.setting.primaryKey) { card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) } else if (card.wrap.supType !== 'multi' && !card.setting.supModule) { card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) } @@ -220,9 +224,6 @@ } } - let columns = card.columns.map(c => c.field) - let lowcols = card.columns.map(c => c.field.toLowerCase()) - card.action.forEach(cell => { if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { if (!cell.modal || cell.modal.fields.length === 0) { @@ -237,6 +238,16 @@ }) } } + // $check@鏈夋晥鎬ф娴� + // if (['prompt', 'exec', 'pop'].includes(cell.OpenType) && cell.Ot === 'required' && cell.verify && cell.verify.scripts && cell.verify.scripts.length > 0) { + // cell.verify.scripts.some(s => { + // if (s.status !== 'false' && /\$check@|@check\$/ig.test(s.sql)) { + // card.errors.push({ level: 1, detail: `鍙�夋嫨澶氳鐨勬寜閽��${cell.label}鈥濅腑 $check@ 鎴� @check$ 灏嗕笉浼氱敓鏁堬紒`}) + // return true + // } + // return false + // }) + // } }) card.subcards.forEach((item, i) => { @@ -573,7 +584,9 @@ } updateWrap = (res) => { - let _card = {...this.state.card, wrap: res} + const { card } = this.state + + let _card = {...card, wrap: res} if (res.supNodes) { _card.supNodes = res.supNodes @@ -587,11 +600,31 @@ delete _card.supNodes } + if (res.layout === 'flex') { _card.wrap.pagestyle = 'page' } + + if (res.selStyle === 'tabs' && card.wrap.selStyle !== 'tabs') { + Object.keys(_card.style).forEach(key => { + if (/^border/.test(key)) { + delete _card.style[key] + } + }) + _card.style.borderBottomColor = '#eeeeee' + _card.style.borderBottomWidth = '1px' + _card.style.paddingBottom = '0px' - this.updateComponent(_card) + _card.subcards.forEach(item => { + delete item.style.marginBottom + }) + + this.setState({card: {..._card, subcards: []}}, () => { + this.updateComponent(_card) + }) + } else { + this.updateComponent(_card) + } } pasteComponent = (res, resolve) => { @@ -760,7 +793,7 @@ <ToolOutlined /> </Popover> <ActionComponent config={card} type="datacard" setSubConfig={this.setSubConfig} updateaction={this.updateComponent}/> - <div className={'float-' + (card.wrap.cardFloat || 'left')}> + <div className={'float-' + (card.wrap.cardFloat || 'left') + ' select-' + card.wrap.selStyle}> {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> diff --git a/src/menu/components/card/data-card/index.scss b/src/menu/components/card/data-card/index.scss index bf029bb..ed54cb3 100644 --- a/src/menu/components/card/data-card/index.scss +++ b/src/menu/components/card/data-card/index.scss @@ -109,6 +109,15 @@ vertical-align: top; } } + .select-tabs { + .card-item { + border-top: none!important; + border-left: none!important; + border-right: none!important; + border-radius: 0px!important; + border-bottom: 2px solid transparent!important; + } + } } .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 64bbde6..ba3b1f6 100644 --- a/src/menu/components/card/data-card/options.jsx +++ b/src/menu/components/card/data-card/options.jsx @@ -188,6 +188,7 @@ {value: 'active', label: '澶栭槾褰�'}, {value: 'backFont', label: '鑳屾櫙+鏂囧瓧'}, {value: 'font', label: '鏂囧瓧'}, + {value: 'tabs', label: '鏍囩椤�'}, ...(subtype === 'datacard' && appType === 'mob' ? [{value: 'check', label: '鍕鹃��'}] : []) ], forbid: subtype === 'tablecard' diff --git a/src/menu/components/card/prop-card/index.jsx b/src/menu/components/card/prop-card/index.jsx index 9e382eb..3dc9f8d 100644 --- a/src/menu/components/card/prop-card/index.jsx +++ b/src/menu/components/card/prop-card/index.jsx @@ -238,22 +238,24 @@ } }) } else { - if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { - card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) - } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { - card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) - } else if (!card.setting.primaryKey) { - card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) - } else if (!card.setting.supModule) { - card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) - } - let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : '' if (supModule === 'empty') { supModule = '' } let columns = card.columns.map(c => c.field) let lowcols = card.columns.map(c => c.field.toLowerCase()) + + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { + card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) + } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { + card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) + } else if (!card.setting.primaryKey) { + card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) + } else if (!card.setting.supModule) { + card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) + } card.subcards.forEach((item, i) => { let linkbtn = item.setting.linkbtn || '' @@ -574,7 +576,9 @@ } updateWrap = (res) => { - let _card = {...this.state.card, wrap: res} + const { card } = this.state + + let _card = {...card, wrap: res} if (res.datatype === 'static') { if (res.supModule && res.supModule.length > 0) { @@ -587,7 +591,26 @@ _card.wrap.pagestyle = 'page' } - this.updateComponent(_card) + if (res.selStyle === 'tabs' && card.wrap.selStyle !== 'tabs') { + Object.keys(_card.style).forEach(key => { + if (/^border/.test(key)) { + delete _card.style[key] + } + }) + _card.style.borderBottomColor = '#eeeeee' + _card.style.borderBottomWidth = '1px' + _card.style.paddingBottom = '0px' + + _card.subcards.forEach(item => { + delete item.style.marginBottom + }) + + this.setState({card: {..._card, subcards: []}}, () => { + this.updateComponent(_card) + }) + } else { + this.updateComponent(_card) + } } clickComponent = (e) => { @@ -624,7 +647,7 @@ } trigger="hover"> <ToolOutlined /> </Popover> - <div className={(card.wrap.layout || 'grid') + '-layout float-' + (card.wrap.cardFloat || 'left')}> + <div className={(card.wrap.layout || 'grid') + '-layout float-' + (card.wrap.cardFloat || 'left') + ' select-' + card.wrap.selStyle}> {card.subcards.map(subcard => (<CardComponent key={subcard.uuid} cards={card} card={subcard} move={this.move} updateElement={this.updateCard} deleteElement={this.deleteCard}/>))} </div> <div className="component-name"> diff --git a/src/menu/components/card/prop-card/index.scss b/src/menu/components/card/prop-card/index.scss index f8633d4..92e00e6 100644 --- a/src/menu/components/card/prop-card/index.scss +++ b/src/menu/components/card/prop-card/index.scss @@ -97,6 +97,15 @@ vertical-align: top; } } + .select-tabs { + .card-item { + border-top: none!important; + border-left: none!important; + border-right: none!important; + border-radius: 0px!important; + border-bottom: 2px solid #1890ff!important; + } + } } .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 50f198d..919af41 100644 --- a/src/menu/components/card/table-card/index.jsx +++ b/src/menu/components/card/table-card/index.jsx @@ -186,6 +186,13 @@ card.errors = [] + let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : '' + if (supModule === 'empty') { + supModule = '' + } + let columns = card.columns.map(c => c.field) + let lowcols = card.columns.map(c => c.field.toLowerCase()) + if (card.subcards.length === 0) { card.errors.push({ level: 0, detail: '鍗$墖涓嶅彲涓虹┖锛�'}) } @@ -196,16 +203,11 @@ card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) } else if (!card.setting.primaryKey) { card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) } else if (!card.setting.supModule) { card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) } - - let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : '' - if (supModule === 'empty') { - supModule = '' - } - let columns = card.columns.map(c => c.field) - let lowcols = card.columns.map(c => c.field.toLowerCase()) card.subcards.forEach((item, i) => { let linkbtn = item.setting.linkbtn || '' diff --git a/src/menu/components/carousel/data-card/index.jsx b/src/menu/components/carousel/data-card/index.jsx index b9a5cf4..50d3068 100644 --- a/src/menu/components/carousel/data-card/index.jsx +++ b/src/menu/components/carousel/data-card/index.jsx @@ -145,16 +145,6 @@ card.errors = [] - if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { - card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) - } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { - card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) - } else if (!card.setting.primaryKey) { - card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) - } else if (!card.setting.supModule) { - card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) - } - let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : '' if (supModule === 'empty') { supModule = '' @@ -163,6 +153,18 @@ let columns = card.columns.map(c => c.field) let lowcols = card.columns.map(c => c.field.toLowerCase()) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { + card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) + } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { + card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) + } else if (!card.setting.primaryKey) { + card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) + } else if (!card.setting.supModule) { + card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) + } + card.subcards.forEach((item, i) => { item.elements.forEach(cell => { if (cell.eleType === 'button') { diff --git a/src/menu/components/carousel/prop-card/index.jsx b/src/menu/components/carousel/prop-card/index.jsx index 910f5e9..fa64530 100644 --- a/src/menu/components/carousel/prop-card/index.jsx +++ b/src/menu/components/carousel/prop-card/index.jsx @@ -188,16 +188,6 @@ }) }) } else { - if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { - card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) - } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { - card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) - } else if (!card.setting.primaryKey) { - card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) - } else if (!card.setting.supModule) { - card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) - } - let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : '' if (supModule === 'empty') { supModule = '' @@ -205,6 +195,18 @@ let columns = card.columns.map(c => c.field) let lowcols = card.columns.map(c => c.field.toLowerCase()) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { + card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) + } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { + card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) + } else if (!card.setting.primaryKey) { + card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) + } else if (!card.setting.supModule) { + card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) + } + card.subcards.forEach((item, i) => { item.elements.forEach(cell => { if (cell.eleType === 'button') { diff --git a/src/menu/components/chart/antv-bar/index.jsx b/src/menu/components/chart/antv-bar/index.jsx index ca919d0..c7f587b 100644 --- a/src/menu/components/chart/antv-bar/index.jsx +++ b/src/menu/components/chart/antv-bar/index.jsx @@ -1233,17 +1233,20 @@ card.btnlog = [] card.errors = [] + let columns = card.columns.map(c => c.field) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) } else if (!card.setting.primaryKey) { card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) } else if (!card.setting.supModule) { card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) } - let columns = card.columns.map(c => c.field) if (!card.plot.Xaxis) { card.errors.push({ level: 0, detail: '鍧愭爣杞村皻鏈缃紒'}) } else if (card.plot.datatype === 'query') { diff --git a/src/menu/components/chart/antv-dashboard/index.jsx b/src/menu/components/chart/antv-dashboard/index.jsx index 71c92d2..a950a8f 100644 --- a/src/menu/components/chart/antv-dashboard/index.jsx +++ b/src/menu/components/chart/antv-dashboard/index.jsx @@ -483,17 +483,20 @@ card.errors = [] + let columns = card.columns.map(c => c.field) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) } else if (!card.setting.primaryKey) { card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) } else if (!card.setting.supModule) { card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) } - let columns = card.columns.map(c => c.field) if (!card.plot.valueField) { card.errors.push({ level: 0, detail: '鏄剧ず鍊煎皻鏈缃紒'}) } else if (!columns.includes(card.plot.valueField)) { diff --git a/src/menu/components/chart/antv-pie/index.jsx b/src/menu/components/chart/antv-pie/index.jsx index c6fa78b..793dfd6 100644 --- a/src/menu/components/chart/antv-pie/index.jsx +++ b/src/menu/components/chart/antv-pie/index.jsx @@ -617,17 +617,20 @@ card.name = card.plot.name card.errors = [] + let columns = card.columns.map(c => c.field) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) } else if (!card.setting.primaryKey) { card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) } else if (!card.setting.supModule) { card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) } - let columns = card.columns.map(c => c.field) if (!card.plot.Xaxis) { card.errors.push({ level: 0, detail: '鍚嶇О瀛楁灏氭湭璁剧疆锛�'}) } else { diff --git a/src/menu/components/chart/antv-scatter/index.jsx b/src/menu/components/chart/antv-scatter/index.jsx index 7b9242f..334f7ca 100644 --- a/src/menu/components/chart/antv-scatter/index.jsx +++ b/src/menu/components/chart/antv-scatter/index.jsx @@ -265,17 +265,20 @@ card.name = card.plot.name card.errors = [] + let columns = card.columns.map(c => c.field) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) } else if (!card.setting.primaryKey) { card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) } else if (!card.setting.supModule) { card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) } - let columns = card.columns.map(c => c.field) if (!card.plot.Xaxis) { card.errors.push({ level: 0, detail: '鍧愭爣杞村皻鏈缃紒'}) } else { diff --git a/src/menu/components/chart/chart-custom/index.jsx b/src/menu/components/chart/chart-custom/index.jsx index 57d124c..d82d9bf 100644 --- a/src/menu/components/chart/chart-custom/index.jsx +++ b/src/menu/components/chart/chart-custom/index.jsx @@ -194,12 +194,16 @@ card.name = card.plot.name card.errors = [] + let columns = card.columns.map(c => c.field) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) } else if (!card.setting.primaryKey) { card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) } else if (!card.setting.supModule) { card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) } diff --git a/src/menu/components/code/sandbox/index.jsx b/src/menu/components/code/sandbox/index.jsx index 292bada..3c13f57 100644 --- a/src/menu/components/code/sandbox/index.jsx +++ b/src/menu/components/code/sandbox/index.jsx @@ -110,6 +110,8 @@ card.errors = [] + let columns = card.columns.map(c => c.field) + if (card.wrap.datatype !== 'static') { if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) @@ -117,6 +119,8 @@ card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) } else if (!card.setting.primaryKey) { card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) } else if (!card.setting.supModule) { card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) } diff --git a/src/menu/components/editor/braft-editor/index.jsx b/src/menu/components/editor/braft-editor/index.jsx index a9300dc..479ad2a 100644 --- a/src/menu/components/editor/braft-editor/index.jsx +++ b/src/menu/components/editor/braft-editor/index.jsx @@ -105,6 +105,8 @@ card.errors = [] + let columns = card.columns.map(c => c.field) + if (card.wrap.datatype !== 'static') { if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) @@ -112,6 +114,8 @@ card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) } else if (!card.setting.primaryKey) { card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) } else if (!card.setting.supModule) { card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) } diff --git a/src/menu/components/form/formaction/actionform/index.jsx b/src/menu/components/form/formaction/actionform/index.jsx index a49f945..306130a 100644 --- a/src/menu/components/form/formaction/actionform/index.jsx +++ b/src/menu/components/form/formaction/actionform/index.jsx @@ -21,7 +21,8 @@ formlist: null, // 琛ㄥ崟淇℃伅 interType: null, // 鎺ュ彛绫诲瀷锛氬唴閮ㄣ�佸閮� procMode: null, // 鍙傛暟鏂瑰紡 - linkmenu: null + linkmenu: null, + callbackType: null } @@ -30,12 +31,14 @@ let _intertype = card.intertype || 'system' // 鎺ュ彛绫诲瀷 let _procMode = card.procMode || 'system' // 鍙傛暟璇锋眰鏂瑰紡 + let _callbackType = card.callbackType || 'script' - let _options = this.getOptions(_intertype, _procMode, card.linkmenu) + let _options = this.getOptions(_intertype, _procMode, card.linkmenu, _callbackType) this.setState({ interType: _intertype, procMode: _procMode, + callbackType: _callbackType, linkmenu: card.linkmenu, formlist: this.props.formlist.map(item => { if (item.key === 'innerFunc' && _procMode === 'inner') { @@ -48,7 +51,7 @@ }) } - getOptions = (_intertype, _procMode, linkmenu) => { + getOptions = (_intertype, _procMode, linkmenu, _callbackType) => { const { card } = this.props if (card.type === 'prev') { @@ -60,14 +63,30 @@ if (_intertype === 'custom') { _options.pop() - _options.push('procMode', 'interface', 'callbackType', 'cbTable', 'proInterface', 'method', 'cross') + _options.push('procMode', 'interface', 'callbackType', 'proInterface', 'method', 'cross') if (_procMode === 'system') { _options.push('sql', 'sqlType') } else { _options.push('innerFunc') } + if (_callbackType === 'func') { + _options.push('callbackFunc') + } else if (_callbackType !== 'none') { + _options.push('cbTable') + } } else if (_intertype === 'outer') { - _options.push('innerFunc', 'sysInterface', 'interface', 'proInterface', 'outerFunc', 'callbackFunc') + _options.push('procMode', 'sysInterface', 'interface', 'proInterface', 'outerFunc', 'callbackType') + if (_procMode === 'system') { + _options.push('sql', 'sqlType') + } else if (_procMode === 'inner') { + _options.push('innerFunc') + } + if (_callbackType === 'func') { + _options.push('callbackFunc') + } else if (_callbackType !== 'none') { + _options.push('cbTable') + } + } else if (_intertype === 'inner') { _options.push('innerFunc') } else { @@ -88,10 +107,10 @@ * 3銆佸垏鎹㈡爣绛剧被鍨嬶紝閲嶇疆鍙�夋爣绛� */ optionChange = (key, value) => { - const { procMode, linkmenu } = this.state + const { procMode, linkmenu, callbackType } = this.state if (key === 'intertype') { - let _options = this.getOptions(value, procMode, linkmenu) + let _options = this.getOptions(value, procMode, linkmenu, callbackType) this.setState({ interType: value, @@ -107,25 +126,38 @@ }) }) } else if (key === 'procMode') { - let _options = this.getOptions(this.state.interType, value, linkmenu) + let _options = this.getOptions(this.state.interType, value, linkmenu, callbackType) this.setState({ procMode: value, formlist: this.state.formlist.map(item => { item.hidden = !_options.includes(item.key) - if (item.key === 'innerFunc') { - item.required = true + if (item.key === 'procMode') { + item.initVal = value } return item }) }) } else if (key === 'linkmenu') { - let _options = this.getOptions(this.state.interType, procMode, value) + let _options = this.getOptions(this.state.interType, procMode, value, callbackType) this.setState({ linkmenu: value, formlist: this.state.formlist.map(item => { + item.hidden = !_options.includes(item.key) + return item + }) + }) + } else if (key === 'callbackType') { + let _options = this.getOptions(this.state.interType, procMode, linkmenu, value) + + this.setState({ + callbackType: value, + formlist: this.state.formlist.map(item => { + if (item.key === 'callbackType') { + item.initVal = value + } item.hidden = !_options.includes(item.key) return item }) @@ -160,7 +192,7 @@ getFields() { const { getFieldDecorator } = this.props.form - const { interType } = this.state + const { interType, callbackType } = this.state const fields = [] this.state.formlist.forEach((item, index) => { @@ -187,7 +219,7 @@ message: formRule.func.maxMessage }] } else if (item.key === 'output') { - if (interType === 'system') { + if (interType === 'system' || ((interType === 'outer' || interType === 'custom') && callbackType === 'script')) { _rules = [{ pattern: /^@[0-9a-zA-Z_]+@?$/, message: '鍙橀噺浠绗﹀紑澶达紝鍙娇鐢ㄥ瓧姣嶃�佹暟瀛椾互鍙奯' diff --git a/src/menu/components/form/formaction/actionform/index.scss b/src/menu/components/form/formaction/actionform/index.scss index ca43400..96f3526 100644 --- a/src/menu/components/form/formaction/actionform/index.scss +++ b/src/menu/components/form/formaction/actionform/index.scss @@ -4,6 +4,11 @@ color: #1890ff; cursor: pointer; } + >.ant-row >.ant-col { + float: none; + display: inline-block; + vertical-align: top; + } .textarea { .ant-col-sm-7 { width: 14%; diff --git a/src/menu/components/form/formaction/formconfig.jsx b/src/menu/components/form/formaction/formconfig.jsx index e406576..7f54c4d 100644 --- a/src/menu/components/form/formaction/formconfig.jsx +++ b/src/menu/components/form/formaction/formconfig.jsx @@ -92,6 +92,9 @@ }, { value: 'inner', text: '鍐呴儴鍑芥暟' + }, { + value: 'none', + text: '鏃�' }] }, { @@ -126,7 +129,7 @@ tooltip: functip, fields: usefulFields, tooltipClass: 'middle', - required: card.intertype === 'inner', + required: true, readonly: false }, { @@ -224,6 +227,12 @@ }, { value: 'default', text: '鍚庡彴鑴氭湰' + }, { + value: 'func', + text: '鍥炶皟鍑芥暟' + }, { + value: 'none', + text: '鏃�' }] }, { @@ -238,7 +247,7 @@ key: 'callbackFunc', label: Formdict['header.form.callbackFunc'], initVal: card.callbackFunc || '', - required: false, + required: true, readonly: false }, { diff --git a/src/menu/components/form/formaction/index.jsx b/src/menu/components/form/formaction/index.jsx index 5460f4f..2227f2a 100644 --- a/src/menu/components/form/formaction/index.jsx +++ b/src/menu/components/form/formaction/index.jsx @@ -237,7 +237,7 @@ <Modal title={dict['model.edit']} visible={visible} - width={800} + width={920} maskClosable={false} onCancel={this.editModalCancel} footer={[ diff --git a/src/menu/components/form/simple-form/index.jsx b/src/menu/components/form/simple-form/index.jsx index 866a334..00d14c6 100644 --- a/src/menu/components/form/simple-form/index.jsx +++ b/src/menu/components/form/simple-form/index.jsx @@ -157,16 +157,6 @@ card.errors = [] if (card.wrap.datatype !== 'static') { - if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { - card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) - } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { - card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) - } else if (!card.setting.primaryKey) { - card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) - } else if (!card.setting.supModule) { - card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) - } - let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : '' if (supModule === 'empty') { supModule = '' @@ -174,6 +164,18 @@ let columns = card.columns.map(c => c.field) let lowcols = card.columns.map(c => c.field.toLowerCase()) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { + card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) + } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { + card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) + } else if (!card.setting.primaryKey) { + card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) + } else if (!card.setting.supModule) { + card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) + } + card.subcards.forEach(item => { item.fields.forEach(m => { if (m.type === 'linkMain' && !supModule) { diff --git a/src/menu/components/form/step-form/index.jsx b/src/menu/components/form/step-form/index.jsx index 0a05e41..fb8ea12 100644 --- a/src/menu/components/form/step-form/index.jsx +++ b/src/menu/components/form/step-form/index.jsx @@ -164,16 +164,6 @@ card.errors = [] if (card.wrap.datatype !== 'static') { - if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { - card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) - } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { - card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) - } else if (!card.setting.primaryKey) { - card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) - } else if (!card.setting.supModule) { - card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) - } - let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : '' if (supModule === 'empty') { supModule = '' @@ -181,6 +171,18 @@ let columns = card.columns.map(c => c.field) let lowcols = card.columns.map(c => c.field.toLowerCase()) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { + card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) + } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { + card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) + } else if (!card.setting.primaryKey) { + card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) + } else if (!card.setting.supModule) { + card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) + } + card.subcards.forEach(item => { item.fields.forEach(m => { if (m.type === 'linkMain' && !supModule) { diff --git a/src/menu/components/form/tab-form/index.jsx b/src/menu/components/form/tab-form/index.jsx index b8d88ec..2d8f7c6 100644 --- a/src/menu/components/form/tab-form/index.jsx +++ b/src/menu/components/form/tab-form/index.jsx @@ -176,16 +176,6 @@ card.errors = [] if (card.wrap.datatype !== 'static') { - if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { - card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) - } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { - card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) - } else if (!card.setting.primaryKey) { - card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) - } else if (!card.setting.supModule) { - card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) - } - let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : '' if (supModule === 'empty') { supModule = '' @@ -193,6 +183,18 @@ let columns = card.columns.map(c => c.field) let lowcols = card.columns.map(c => c.field.toLowerCase()) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { + card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) + } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { + card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) + } else if (!card.setting.primaryKey) { + card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) + } else if (!card.setting.supModule) { + card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) + } + card.subcards.forEach(item => { item.fields.forEach(m => { if (m.type === 'linkMain' && !supModule) { diff --git a/src/menu/components/share/actioncomponent/actionform/index.jsx b/src/menu/components/share/actioncomponent/actionform/index.jsx index 2cfa4c0..a92b985 100644 --- a/src/menu/components/share/actioncomponent/actionform/index.jsx +++ b/src/menu/components/share/actioncomponent/actionform/index.jsx @@ -61,13 +61,13 @@ }], interTypeOptions: [{ value: 'system', - text: this.props.dict['model.interface.system'] + text: '绯荤粺' }, { value: 'inner', - text: this.props.dict['model.interface.inner'] + text: '鍐呴儴' }, { value: 'outer', - text: this.props.dict['model.interface.outer'] + text: '澶栭儴' }, { value: 'custom', text: '鑷畾涔�' @@ -163,18 +163,33 @@ reOptions.intertype = this.state.interTypeOptions if (intertype === 'custom') { - shows.push('procMode', 'interface', 'callbackType', 'cbTable', 'proInterface', 'method', 'cross') + shows.push('procMode', 'interface', 'callbackType', 'proInterface', 'method', 'cross') if (this.record.procMode === 'system') { shows.push('sql', 'sqlType') - } else { + } else if (this.record.procMode === 'inner') { reRequired.innerFunc = true shows.push('innerFunc') + } + if (this.record.callbackType === 'func') { + shows.push('callbackFunc') + } else if (this.record.callbackType !== 'none') { + shows.push('cbTable') } reReadonly.interface = false reRequired.interface = true } else if (intertype === 'outer') { - shows.push('innerFunc', 'sysInterface', 'interface', 'proInterface', 'outerFunc', 'callbackFunc', 'output') - reRequired.innerFunc = false + shows.push('procMode', 'sysInterface', 'interface', 'proInterface', 'outerFunc', 'callbackType', 'output') + if (this.record.procMode === 'system') { + shows.push('sql', 'sqlType') + } else if (this.record.procMode === 'inner') { + reRequired.innerFunc = true + shows.push('innerFunc') + } + if (this.record.callbackType === 'func') { + shows.push('callbackFunc') + } else if (this.record.callbackType !== 'none') { + shows.push('cbTable') + } if (this.record.sysInterface === 'false') { reReadonly.interface = false @@ -226,8 +241,18 @@ reOptions.intertype = this.state.interTypeOptions.filter(item => item.value !== 'custom') if (intertype === 'outer') { - shows.push('innerFunc', 'sysInterface', 'interface', 'proInterface', 'outerFunc', 'callbackFunc') - reRequired.innerFunc = false + shows.push('procMode', 'sysInterface', 'interface', 'proInterface', 'outerFunc', 'callbackType') + if (this.record.procMode === 'system') { + shows.push('sql', 'sqlType') + } else if (this.record.procMode === 'inner') { + reRequired.innerFunc = true + shows.push('innerFunc') + } + if (this.record.callbackType === 'func') { + shows.push('callbackFunc') + } else if (this.record.callbackType !== 'none') { + shows.push('cbTable') + } if (this.record.sysInterface === 'false') { reReadonly.interface = false @@ -265,6 +290,7 @@ if (this.record.intertype === 'outer') { shows.push('innerFunc', 'sysInterface', 'interface', 'proInterface', 'outerFunc', 'callbackFunc') reRequired.innerFunc = false + reRequired.callbackFunc = false if (this.record.sysInterface === 'false') { reReadonly.interface = false @@ -346,6 +372,7 @@ if (this.record.intertype === 'outer') { shows.push('innerFunc', 'sysInterface', 'interface', 'proInterface', 'outerFunc', 'callbackFunc') reRequired.innerFunc = false + reRequired.callbackFunc = false if (this.record.sysInterface === 'false') { reReadonly.interface = false @@ -695,7 +722,7 @@ { max: formRule.func.max, message: formRule.func.maxMessage } ) } else if (item.key === 'output') { - if (this.record.intertype === 'system') { + if (this.record.intertype === 'system' || ((this.record.intertype === 'outer' || this.record.intertype === 'custom') && this.record.callbackType === 'script')) { rules = [{ pattern: /^@[0-9a-zA-Z_]+@?$/, message: '鍙橀噺浠绗﹀紑澶达紝鍙娇鐢ㄥ瓧姣嶃�佹暟瀛椾互鍙奯' diff --git a/src/menu/components/share/actioncomponent/formconfig.jsx b/src/menu/components/share/actioncomponent/formconfig.jsx index 6ffb4b4..25baad2 100644 --- a/src/menu/components/share/actioncomponent/formconfig.jsx +++ b/src/menu/components/share/actioncomponent/formconfig.jsx @@ -52,15 +52,28 @@ ] let getTabs = (list) => { - return list.filter(item => { - if (item.type !== 'tabs') return false + let _list = [] + list.forEach(item => { + if (item.type !== 'tabs') return - item.children = item.children.map(cell => { - cell.children = getTabs(cell.children) - return cell + _list.push({ + value: item.uuid, + label: item.name, + children: item.subtabs.map(cell => { + let children = getTabs(cell.components) + + if (children.length === 0) { + children = null + } + return { + value: cell.uuid, + label: cell.label, + children: children + } + }) }) - return item }) + return _list } // if (type === 'editable') { @@ -74,8 +87,7 @@ // } // ] // } - - let tabs = getTabs(JSON.parse(JSON.stringify(modules))) + let tabs = getTabs(JSON.parse(JSON.stringify(window.GLOB.customMenu.components))) let pageTemps = [ { value: 'billprint', text: '鍗曟嵁鎵撳嵃' }, @@ -189,6 +201,13 @@ options: opentypes }, { + type: 'text', + key: 'label', + label: '鎸夐挳鍚嶇О', + initVal: card.label, + required: true, + }, + { type: 'select', key: 'funcType', label: '鍔熻兘绫诲瀷', @@ -246,13 +265,6 @@ options: [] }, { - type: 'text', - key: 'label', - label: '鎸夐挳鍚嶇О', - initVal: card.label, - required: true, - }, - { type: 'checkbox', key: 'payType', label: '鏀粯鏂瑰紡', @@ -278,6 +290,9 @@ }, { value: 'inner', text: '鍐呴儴鍑芥暟' + }, { + value: 'none', + text: '鏃�' }] }, { @@ -424,6 +439,12 @@ }, { value: 'default', text: '鍚庡彴鑴氭湰' + }, { + value: 'func', + text: '鍥炶皟鍑芥暟' + }, { + value: 'none', + text: '鏃�' }] }, { @@ -438,7 +459,7 @@ key: 'callbackFunc', label: Formdict['header.form.callbackFunc'], initVal: card.callbackFunc || '', - required: false, + required: true }, { type: 'select', diff --git a/src/menu/components/share/actioncomponent/index.jsx b/src/menu/components/share/actioncomponent/index.jsx index 8d5a172..f7e1175 100644 --- a/src/menu/components/share/actioncomponent/index.jsx +++ b/src/menu/components/share/actioncomponent/index.jsx @@ -533,7 +533,7 @@ <Modal title="鎸夐挳路缂栬緫" visible={visible} - width={850} + width={920} maskClosable={false} onCancel={this.editModalCancel} footer={[ diff --git a/src/menu/components/table/edit-table/columns/index.jsx b/src/menu/components/table/edit-table/columns/index.jsx index 23067de..67057c7 100644 --- a/src/menu/components/table/edit-table/columns/index.jsx +++ b/src/menu/components/table/edit-table/columns/index.jsx @@ -18,6 +18,7 @@ const TableVerify = asyncComponent(() => import('./tableIn')) const MarkColumn = asyncIconComponent(() => import('@/menu/components/share/markcomponent')) const CardCellComponent = asyncComponent(() => import('@/menu/components/card/cardcellcomponent')) +const PasteComponent = asyncIconComponent(() => import('@/components/paste')) class HeaderCol extends Component { deleteCol = () => { @@ -51,7 +52,7 @@ } render() { - const { connectDragSource, connectDropTarget, moveCol, addElement, updateCol, editColumn, changeStyle, deleteCol, index, column, align, fields, children, ...restProps } = this.props + const { connectDragSource, connectDropTarget, moveCol, addElement, updateCol, editColumn, pasteCell, changeStyle, deleteCol, index, column, align, fields, children, ...restProps } = this.props if (!column) return ( <th {...restProps} index={index}> @@ -67,6 +68,7 @@ <PlusOutlined className="plus" title="娣诲姞" onClick={() => this.props.addElement(column)} /> : null } <EditOutlined className="edit" title="缂栬緫" onClick={() => this.props.editColumn(column)} /> + {column.type === 'custom' ? <PasteComponent options={['customCardElement']} updateConfig={(res, resolve) => this.props.pasteCell(column, res, resolve)} /> : null} {column.type === 'custom' ? <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={() => this.props.changeStyle(column)}/> : null} <DeleteOutlined className="close" title="鍒犻櫎" onClick={this.deleteCol} /> {['text', 'number', 'formula'].includes(column.type) ? <MarkColumn columns={fields} marks={column.marks} onSubmit={this.updateMarks} /> : null } @@ -280,6 +282,16 @@ this.setState({ card: fromJS(col).toJS() }) + } + + pasteCell = (col, cell, resolve) => { + resolve({status: true}) + + delete cell.copyType + cell.uuid = Utils.getuuid() + cell.focus = true + + MKEmitter.emit('cardAddElement', [this.props.config.uuid, col.uuid], cell) } addElement = (col) => { @@ -554,6 +566,7 @@ updateCol: this.updateCol, addElement: this.addElement, editColumn: this.editColumn, + pasteCell: this.pasteCell, changeStyle: this.changeStyle, deleteCol: this.deleteCol, }), 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 61698fb..3f1c391 100644 --- a/src/menu/components/table/edit-table/columns/tableIn/index.jsx +++ b/src/menu/components/table/edit-table/columns/tableIn/index.jsx @@ -86,7 +86,7 @@ ) : ( <div> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleTwoTone style={{marginLeft: '5px'}} twoToneColor="#52c41a" /> </div> ) @@ -139,7 +139,7 @@ ) : ( <div> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleTwoTone style={{marginLeft: '5px'}} twoToneColor="#52c41a" /> </div> ) diff --git a/src/menu/components/table/edit-table/index.jsx b/src/menu/components/table/edit-table/index.jsx index 8e5ee1d..6b858aa 100644 --- a/src/menu/components/table/edit-table/index.jsx +++ b/src/menu/components/table/edit-table/index.jsx @@ -170,16 +170,6 @@ if (!window.GLOB.styling || !card.errors) { // 鏍峰紡淇敼鏃朵笉鍋氱瓫鏌� card.errors = [] - if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { - card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) - } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { - card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) - } else if (!card.setting.primaryKey) { - card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) - } else if (!card.setting.supModule) { - card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) - } - let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : '' if (supModule === 'empty') { supModule = '' @@ -187,6 +177,18 @@ let columns = card.columns.map(c => c.field) let lowcols = card.columns.map(c => c.field.toLowerCase()) + + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { + card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) + } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { + card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) + } else if (!card.setting.primaryKey) { + card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) + } else if (!card.setting.supModule) { + card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) + } card.action.forEach(cell => { if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { diff --git a/src/menu/components/table/normal-table/columns/index.jsx b/src/menu/components/table/normal-table/columns/index.jsx index 8ae474a..d22150a 100644 --- a/src/menu/components/table/normal-table/columns/index.jsx +++ b/src/menu/components/table/normal-table/columns/index.jsx @@ -18,6 +18,7 @@ const MarkColumn = asyncIconComponent(() => import('@/menu/components/share/markcomponent')) const CardCellComponent = asyncComponent(() => import('@/menu/components/card/cardcellcomponent')) const MobPagination = asyncIconComponent(() => import('@/menu/components/share/mobPagination')) +const PasteComponent = asyncIconComponent(() => import('@/components/paste')) class HeaderCol extends Component { deleteCol = () => { @@ -51,7 +52,7 @@ } render() { - const { connectDragSource, connectDropTarget, moveCol, addElement, updateCol, editColumn, changeStyle, deleteCol, index, column, align, fields, children, ...restProps } = this.props + const { connectDragSource, connectDropTarget, moveCol, addElement, updateCol, editColumn, pasteCell, changeStyle, deleteCol, index, column, align, fields, children, ...restProps } = this.props if (index !== undefined) { return connectDragSource( @@ -62,6 +63,7 @@ <PlusOutlined className="plus" title="娣诲姞" onClick={() => this.props.addElement(column)} /> : null } <EditOutlined className="edit" title="缂栬緫" onClick={() => this.props.editColumn(column)} /> + {column && column.type === 'custom' ? <PasteComponent options={['customCardElement']} updateConfig={(res, resolve) => this.props.pasteCell(column, res, resolve)} /> : null} {column && 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 } @@ -80,6 +82,7 @@ <PlusOutlined className="plus" title="娣诲姞" onClick={() => this.props.addElement(column)} /> : null } <EditOutlined className="edit" title="缂栬緫" onClick={() => this.props.editColumn(column)} /> + {column.type === 'custom' ? <PasteComponent options={['customCardElement']} updateConfig={(res, resolve) => this.props.pasteCell(column, res, resolve)} /> : 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 } </div> @@ -303,6 +306,16 @@ }) } + pasteCell = (col, cell, resolve) => { + resolve({status: true}) + + delete cell.copyType + cell.uuid = Utils.getuuid() + cell.focus = true + + MKEmitter.emit('cardAddElement', [this.props.config.uuid, col.uuid], cell) + } + addElement = (col) => { const { config } = this.props let column = fromJS(col).toJS() @@ -482,6 +495,7 @@ updateCol: this.updateCol, addElement: this.addElement, editColumn: this.editColumn, + pasteCell: this.pasteCell, changeStyle: this.changeStyle, deleteCol: this.deleteCol, }), diff --git a/src/menu/components/table/normal-table/index.jsx b/src/menu/components/table/normal-table/index.jsx index 27556bd..0ba1305 100644 --- a/src/menu/components/table/normal-table/index.jsx +++ b/src/menu/components/table/normal-table/index.jsx @@ -207,17 +207,7 @@ if (!window.GLOB.styling || !card.errors) { // 鏍峰紡淇敼鏃朵笉鍋氱瓫鏌� card.errors = [] - - if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { - card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) - } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { - card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) - } else if (!card.setting.primaryKey) { - card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) - } else if (!card.setting.supModule) { - card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) - } - + let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : '' if (supModule === 'empty') { supModule = '' @@ -227,6 +217,18 @@ let columns = card.columns.map(c => c.field) let lowcols = card.columns.map(c => c.field.toLowerCase()) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { + card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) + } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { + card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) + } else if (!card.setting.primaryKey) { + card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) + } else if (!card.setting.supModule) { + card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) + } + card.action.forEach(cell => { if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) { if (!cell.modal || cell.modal.fields.length === 0) { diff --git a/src/menu/components/tabs/antv-tabs/index.jsx b/src/menu/components/tabs/antv-tabs/index.jsx index a6feb86..fbcfe24 100644 --- a/src/menu/components/tabs/antv-tabs/index.jsx +++ b/src/menu/components/tabs/antv-tabs/index.jsx @@ -318,6 +318,7 @@ editab.hide = res.hide || 'false' editab.backgroundColor = res.backgroundColor editab.controlVal = res.controlVal || '' + editab.selectVal = res.selectVal || '' editab.blacklist = res.blacklist if (editab.uuid) { diff --git a/src/menu/components/tabs/antv-tabs/options.jsx b/src/menu/components/tabs/antv-tabs/options.jsx index c0430ab..bc2db9d 100644 --- a/src/menu/components/tabs/antv-tabs/options.jsx +++ b/src/menu/components/tabs/antv-tabs/options.jsx @@ -52,9 +52,16 @@ field: 'controlVal', label: '闅愯棌鏍囪', initval: tab.controlVal || '', - tooltip: '褰撶鐢ㄥ瓧娈靛�间笌闅愯棌鏍囪鐩哥瓑鏃讹紝鏍囩椤典細闅愯棌銆�', + tooltip: '褰撶鐢ㄥ瓧娈靛�间笌闅愯棌鏍囪鐩哥瓑鏃讹紝鏍囩椤典細闅愯棌銆傛敞锛氬涓�艰鐢ㄩ�楀彿鍒嗛殧銆�', required: false, - // forbid: appType === 'mob', + }, + { + type: 'text', + field: 'selectVal', + label: '閫変腑鏍囪', + initval: tab.selectVal || '', + tooltip: '褰撻�変腑瀛楁鍊间笌閫変腑鏍囪鐩哥瓑鏃讹紝鏍囩椤甸粯璁ら�変腑銆�', + required: false }, { type: 'color', @@ -96,6 +103,10 @@ let roleList = sessionStorage.getItem('sysRoles') let modules = MenuUtils.getSupModules(window.GLOB.customMenu.components, uuid) || [] + modules.push({ + value: 'preview', + label: '涓婁竴椤碉紙url鍙傛暟锛�' + }) if (roleList) { try { @@ -198,13 +209,13 @@ label: '涓婄骇缁勪欢', initval: setting.supModule || [], tooltip: '鏍囩缁勫彲浠ラ�夋嫨涓婄骇缁勪欢锛屽~鍏ョ鐢ㄥ瓧娈碉紝鐢ㄤ簬鎺у埗鏍囩闅愯棌銆�', + help: '鐢ㄤ簬鎺у埗鏍囩椤甸殣钘忋��', required: false, allowClear: true, options: modules, controlFields: [ {field: 'controlField', notNull: true}, ], - // forbid: appType === 'mob', }, { type: 'text', @@ -213,7 +224,14 @@ initval: setting.controlField || '', tooltip: '鐢ㄤ簬鎺у埗鏍囩闅愯棌鐨勫瓧娈碉紝鍦ㄦ爣绛句腑濉叆闅愯棌鏍囪銆�', required: true, - // forbid: appType === 'mob', + }, + { + type: 'text', + field: 'selectField', + label: '閫変腑瀛楁', + initval: setting.selectField || '', + tooltip: '鐢ㄤ簬鎺у埗鏍囩椤靛垵濮嬪寲閫変腑锛屽湪鏍囩涓~鍏ラ�変腑鏍囪锛屾敞锛氭暟鎹簮浜巙rl鍙傛暟銆�', + required: false }, { type: 'color', diff --git a/src/menu/components/timeline/normal-timeline/index.jsx b/src/menu/components/timeline/normal-timeline/index.jsx index 1dcb7f4..d11aa93 100644 --- a/src/menu/components/timeline/normal-timeline/index.jsx +++ b/src/menu/components/timeline/normal-timeline/index.jsx @@ -117,17 +117,7 @@ card.name = card.wrap.name if (!window.GLOB.styling || !card.errors) { // 鏍峰紡淇敼鏃朵笉鍋氱瓫鏌� card.errors = [] - - if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { - card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) - } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { - card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) - } else if (!card.setting.primaryKey) { - card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) - } else if (!card.setting.supModule) { - card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) - } - + let supModule = card.setting.supModule ? card.setting.supModule[card.setting.supModule.length - 1] || '' : '' if (supModule === 'empty') { supModule = '' @@ -135,6 +125,18 @@ let columns = card.columns.map(c => c.field) let lowcols = card.columns.map(c => c.field.toLowerCase()) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { + card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) + } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { + card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) + } else if (!card.setting.primaryKey) { + card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) + } else if (!card.setting.supModule) { + card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) + } + card.subcards.forEach(col => { col.elements.forEach(cell => { if (cell.eleType === 'button') { diff --git a/src/menu/components/tree/antd-tree/index.jsx b/src/menu/components/tree/antd-tree/index.jsx index 50d2364..0619ac9 100644 --- a/src/menu/components/tree/antd-tree/index.jsx +++ b/src/menu/components/tree/antd-tree/index.jsx @@ -105,12 +105,16 @@ card.errors = [] + let columns = card.columns.map(c => c.field) + if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) { card.errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'}) } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) { card.errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'}) } else if (!card.setting.primaryKey) { card.errors.push({ level: 0, detail: '鏈缃富閿紒'}) + } else if (!columns.includes(card.setting.primaryKey)) { + card.errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'}) } else if (!card.setting.supModule) { card.errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'}) } diff --git a/src/menu/datasource/verifycard/columnform/index.jsx b/src/menu/datasource/verifycard/columnform/index.jsx index 2606571..c378989 100644 --- a/src/menu/datasource/verifycard/columnform/index.jsx +++ b/src/menu/datasource/verifycard/columnform/index.jsx @@ -53,7 +53,7 @@ message: dict['form.required.input'] + '鍚嶇О!' } ] - })(<Input placeholder="" autoComplete="off" />)} + })(<Input placeholder="" autoComplete="off" onPressEnter={this.handleConfirm}/>)} </Form.Item> </Col> <Col span={6}> @@ -70,7 +70,7 @@ message: '瀛楁鍚嶅彧鍏佽鍖呭惈鏁板瓧銆佸瓧姣嶃�佹眽瀛椾互鍙奯' } ] - })(<Input placeholder="" autoComplete="off" />)} + })(<Input placeholder="" autoComplete="off" onPressEnter={this.handleConfirm} />)} </Form.Item> </Col> <Col span={6}> diff --git a/src/menu/datasource/verifycard/index.jsx b/src/menu/datasource/verifycard/index.jsx index 26d4e9d..e692605 100644 --- a/src/menu/datasource/verifycard/index.jsx +++ b/src/menu/datasource/verifycard/index.jsx @@ -133,7 +133,7 @@ ) : ( <div style={{color: '#26C281'}}> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleOutlined style={{marginLeft: '5px'}}/> </div> ) diff --git a/src/menu/menushell/index.scss b/src/menu/menushell/index.scss index 21f8a7d..ac770fb 100644 --- a/src/menu/menushell/index.scss +++ b/src/menu/menushell/index.scss @@ -1,6 +1,7 @@ .menu-shell-inner { min-height: calc(100vh - 100px); - width: 100%; + width: auto!important; + overflow-x: hidden; background-size: 100%; .anticon { diff --git a/src/menu/padcontroller/index.jsx b/src/menu/padcontroller/index.jsx deleted file mode 100644 index 3ade9f2..0000000 --- a/src/menu/padcontroller/index.jsx +++ /dev/null @@ -1,95 +0,0 @@ -import React, {Component} from 'react' -import PropTypes from 'prop-types' -import { is, fromJS } from 'immutable' -import { Form, Col } from 'antd' -import { ArrowUpOutlined, ArrowDownOutlined, ArrowLeftOutlined, ArrowRightOutlined } from '@ant-design/icons' - -import StyleInput from '../stylecontroller/styleInput' -import './index.scss' - -class MobController extends Component { - static propTpyes = { - config: PropTypes.any, - updateConfig: PropTypes.func, - } - - state = { - paddingTop: '', - paddingBottom: '', - paddingLeft: '', - paddingRight: '' - } - - UNSAFE_componentWillMount () { - - } - - shouldComponentUpdate (nextProps, nextState) { - return !is(fromJS(this.state), fromJS(nextState)) - } - - /** - * @description 淇敼鑳屾櫙棰滆壊 锛岄鑹叉帶浠� - */ - changePadding = (val, type) => { - let config = fromJS(this.props.config).toJS() - - config.style[type] = val - this.props.updateConfig(config) - } - - render () { - const { config } = this.props - const formItemLayout = { - labelCol: { - xs: { span: 24 }, - sm: { span: 4 } - }, - wrapperCol: { - xs: { span: 24 }, - sm: { span: 20 } - } - } - - return ( - <div className="menu-padding-controller"> - <Form {...formItemLayout}> - <Col span={24}> - <Form.Item - colon={false} - label={<ArrowUpOutlined title="涓婅竟璺�"/>} - > - <StyleInput defaultValue={config.style.paddingTop || '0px'} options={['px', 'vh', 'vw']} onChange={(val) => this.changePadding(val, 'paddingTop')}/> - </Form.Item> - </Col> - <Col span={24}> - <Form.Item - colon={false} - label={<ArrowDownOutlined title="涓嬭竟璺�"/>} - > - <StyleInput defaultValue={config.style.paddingBottom || '0px'} options={['px', 'vh', 'vw']} onChange={(val) => this.changePadding(val, 'paddingBottom')}/> - </Form.Item> - </Col> - <Col span={24}> - <Form.Item - colon={false} - label={<ArrowLeftOutlined title="宸﹁竟璺�"/>} - > - <StyleInput defaultValue={config.style.paddingLeft || '0px'} options={['px', 'vh', 'vw']} onChange={(val) => this.changePadding(val, 'paddingLeft')}/> - </Form.Item> - </Col> - <Col span={24}> - <Form.Item - colon={false} - label={<ArrowRightOutlined title="鍙宠竟璺�"/>} - > - <StyleInput defaultValue={config.style.paddingRight || '0px'} options={['px', 'vh', 'vw']} onChange={(val) => this.changePadding(val, 'paddingRight')}/> - </Form.Item> - </Col> - </Form> - </div> - ) - } -} - -export default MobController \ No newline at end of file diff --git a/src/menu/padcontroller/index.scss b/src/menu/padcontroller/index.scss deleted file mode 100644 index 95c0abe..0000000 --- a/src/menu/padcontroller/index.scss +++ /dev/null @@ -1,9 +0,0 @@ -.menu-padding-controller { - width: 100%; - height: 100%; - overflow: hidden; - .ant-form-item label > .anticon { - font-size: 16px; - vertical-align: middle; - } -} diff --git a/src/menu/stylecombcontrolbutton/index.scss b/src/menu/stylecombcontrolbutton/index.scss index 3732704..003e577 100644 --- a/src/menu/stylecombcontrolbutton/index.scss +++ b/src/menu/stylecombcontrolbutton/index.scss @@ -17,6 +17,16 @@ z-index: 12; background:rgba(0, 0, 0, 0.2); } + .pc-poper-view::before { + content: ' '; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + z-index: 12; + background:rgba(0, 0, 0, 0.2); + } .menu-body .menu-view >.ant-card >.ant-card-body { position: relative; z-index: 13; diff --git a/src/menu/sysinterface/index.jsx b/src/menu/sysinterface/index.jsx index fcd9dcb..e221366 100644 --- a/src/menu/sysinterface/index.jsx +++ b/src/menu/sysinterface/index.jsx @@ -199,6 +199,7 @@ destroyOnClose > <Button key="add-interface" className="mk-border-green" onClick={this.addInterface}> 娣诲姞 </Button> + {/* <div style={{fontSize: '12px', position: 'relative', top: '20px'}}>娉細鎺ュ彛鎵ц瀹屾垚鍚庯紝浼氳Е鍙戦粯璁や笉鍔犺浇鐨勭粍浠跺埛鏂版暟鎹��</div> */} <EditTable key="manage-interface" actions={['move', 'copy']} type="interface" data={interfaces} columns={columns} onChange={this.changeScripts}/> </Modal> <Modal diff --git a/src/menu/sysinterface/settingform/simplescript/index.jsx b/src/menu/sysinterface/settingform/simplescript/index.jsx index 42a4ba4..5392bbd 100644 --- a/src/menu/sysinterface/settingform/simplescript/index.jsx +++ b/src/menu/sysinterface/settingform/simplescript/index.jsx @@ -72,7 +72,7 @@ ) : ( <div> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleTwoTone style={{marginLeft: '5px'}} twoToneColor="#52c41a" /> </div> ) diff --git a/src/mob/components/menubar/normal-menubar/menucomponent/index.jsx b/src/mob/components/menubar/normal-menubar/menucomponent/index.jsx index 863c894..3c28d9f 100644 --- a/src/mob/components/menubar/normal-menubar/menucomponent/index.jsx +++ b/src/mob/components/menubar/normal-menubar/menucomponent/index.jsx @@ -110,7 +110,7 @@ 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 || '', + // MenuNo: card.setting.MenuNo || '', MenuName: card.setting.name, }) } diff --git a/src/mob/components/menubar/normal-menubar/menucomponent/options.jsx b/src/mob/components/menubar/normal-menubar/menucomponent/options.jsx index 3e8bc87..8e189c7 100644 --- a/src/mob/components/menubar/normal-menubar/menucomponent/options.jsx +++ b/src/mob/components/menubar/normal-menubar/menucomponent/options.jsx @@ -22,24 +22,13 @@ initval: setting.name || '', required: true }, - { - type: 'text', - field: 'MenuNo', - label: '鑿滃崟鍙傛暟', - initval: setting.MenuNo || '', - required: true - }, - { - type: 'number', - field: 'width', - label: '瀹藉害', - initval: setting.width || 24, - tooltip: '鏍呮牸甯冨眬锛屾瘡琛岀瓑鍒嗕负24鍒椼��', - min: 1, - max: 24, - precision: 0, - required: true - }, + // { + // type: 'text', + // field: 'MenuNo', + // label: '鑿滃崟鍙傛暟', + // initval: setting.MenuNo || '', + // required: true + // }, { type: 'radio', field: 'type', @@ -55,6 +44,7 @@ {field: 'copyMenuId', values: ['menu']}, {field: 'linkMenuId', values: ['linkmenu']}, {field: 'linkurl', values: ['link']}, + {field: 'primaryId', values: ['menu', 'linkmenu']}, ] }, { @@ -132,6 +122,17 @@ }, { type: 'number', + field: 'width', + label: '瀹藉害', + initval: setting.width || 24, + tooltip: '鏍呮牸甯冨眬锛屾瘡琛岀瓑鍒嗕负24鍒椼��', + min: 1, + max: 24, + precision: 0, + required: true + }, + { + type: 'number', field: 'iconFont', label: '瀛椾綋澶у皬', initval: setting.iconFont || 20, @@ -198,6 +199,14 @@ required: false, options: columns }, + { + type: 'text', + field: 'primaryId', + label: '闈欐�佷富閿��', + initval: setting.primaryId || '', + tooltip: '鍙綔涓築ID浼犲埌涓嬩竴椤甸潰銆�', + required: false + } ] return menuWrapForm 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 2ffce2b..cacce83 100644 --- a/src/mob/components/navbar/normal-navbar/menus/menuform/index.jsx +++ b/src/mob/components/navbar/normal-navbar/menus/menuform/index.jsx @@ -106,44 +106,6 @@ </Form.Item> </Col> <Col span={12}> - <Form.Item label="鑿滃崟鍙傛暟"> - {getFieldDecorator('MenuNo', { - initialValue: menu.MenuNo || '', - rules: [ - { - required: true, - message: '璇疯緭鍏ヨ彍鍗曞弬鏁�!' - } - ] - })(<Input placeholder={''} autoComplete="off" onPressEnter={this.handleSubmit} />)} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label="鍥炬爣"> - {getFieldDecorator('icon', { - initialValue: menu.icon || '' - })( - <MkEditIcon options={['normal', 'data', 'direction', 'edit', 'hint']} allowClear /> - )} - </Form.Item> - </Col> - <Col span={12}> - <Form.Item label={ - <Tooltip placement="topLeft" title="缁戝畾鎻愮ず瀛楁鍚庯紝浼氬湪鑿滃崟鍙充笂瑙掓樉绀烘彁绀轰俊鎭�傛敞锛氬湪娣诲姞鍥炬爣鏃舵湁鏁堛��"> - <QuestionCircleOutlined className="mk-form-tip" /> - 鎻愮ず - </Tooltip> - }> - {getFieldDecorator('tip', { - initialValue: menu.tip || '' - })( - <Select allowClear> - {cols.map(item => <Select.Option key={item.uuid} value={item.field}>{item.label}</Select.Option>)} - </Select> - )} - </Form.Item> - </Col> - <Col span={12}> <Form.Item label="鑿滃崟灞炴��"> {getFieldDecorator('property', { initialValue: menu.property || 'menu' @@ -156,35 +118,6 @@ )} </Form.Item> </Col> - <Col span={12}> - <Form.Item label="闅愯棌"> - {getFieldDecorator('hidden', { - initialValue: menu.hidden || 'false' - })( - <Radio.Group> - <Radio value="false">鍚�</Radio> - <Radio value="true">鏄�</Radio> - </Radio.Group> - )} - </Form.Item> - </Col> - {property === 'menu' || property === 'linkmenu' ? <Col span={12}> - <Form.Item label={ - <Tooltip placement="topLeft" title="鏇挎崲褰撳墠椤甸潰鎴栨墦寮�鏂伴〉闈紝鍦℉5鎴栧皬绋嬪簭涓湁鏁堛��"> - <QuestionCircleOutlined className="mk-form-tip" /> - 鎵撳紑鏂瑰紡 - </Tooltip> - }> - {getFieldDecorator('open', { - initialValue: menu.open || 'self' - })( - <Radio.Group> - <Radio value="self">鏍囩椤�</Radio> - <Radio value="blank">鏂伴〉闈�</Radio> - </Radio.Group> - )} - </Form.Item> - </Col> : null} {property === 'link' ? <Col span={24}> <Form.Item label="閾炬帴鍦板潃" className="textarea"> {getFieldDecorator('link', { @@ -261,6 +194,73 @@ )} </Form.Item> </Col> : null} + {/* <Col span={12}> + <Form.Item label="鑿滃崟鍙傛暟"> + {getFieldDecorator('MenuNo', { + initialValue: menu.MenuNo || '', + rules: [ + { + required: true, + message: '璇疯緭鍏ヨ彍鍗曞弬鏁�!' + } + ] + })(<Input placeholder={''} autoComplete="off" onPressEnter={this.handleSubmit} />)} + </Form.Item> + </Col> */} + <Col span={12}> + <Form.Item label="鍥炬爣"> + {getFieldDecorator('icon', { + initialValue: menu.icon || '' + })( + <MkEditIcon options={['normal', 'data', 'direction', 'edit', 'hint']} allowClear /> + )} + </Form.Item> + </Col> + <Col span={12}> + <Form.Item label={ + <Tooltip placement="topLeft" title="缁戝畾鎻愮ず瀛楁鍚庯紝浼氬湪鑿滃崟鍙充笂瑙掓樉绀烘彁绀轰俊鎭�傛敞锛氬湪娣诲姞鍥炬爣鏃舵湁鏁堛��"> + <QuestionCircleOutlined className="mk-form-tip" /> + 鎻愮ず + </Tooltip> + }> + {getFieldDecorator('tip', { + initialValue: menu.tip || '' + })( + <Select allowClear> + {cols.map(item => <Select.Option key={item.uuid} value={item.field}>{item.label}</Select.Option>)} + </Select> + )} + </Form.Item> + </Col> + <Col span={12}> + <Form.Item label="闅愯棌"> + {getFieldDecorator('hidden', { + initialValue: menu.hidden || 'false' + })( + <Radio.Group> + <Radio value="false">鍚�</Radio> + <Radio value="true">鏄�</Radio> + </Radio.Group> + )} + </Form.Item> + </Col> + {property === 'menu' || property === 'linkmenu' ? <Col span={12}> + <Form.Item label={ + <Tooltip placement="topLeft" title="鏇挎崲褰撳墠椤甸潰鎴栨墦寮�鏂伴〉闈紝鍦℉5鎴栧皬绋嬪簭涓湁鏁堛��"> + <QuestionCircleOutlined className="mk-form-tip" /> + 鎵撳紑鏂瑰紡 + </Tooltip> + }> + {getFieldDecorator('open', { + initialValue: menu.open || 'self' + })( + <Radio.Group> + <Radio value="self">鏍囩椤�</Radio> + <Radio value="blank">鏂伴〉闈�</Radio> + </Radio.Group> + )} + </Form.Item> + </Col> : null} <Col span={12}> <Form.Item label={ <Tooltip placement="topLeft" title="鍦℉5鎴栧皬绋嬪簭涓湁鏁堛��"> diff --git a/src/mob/components/tabs/antv-tabs/index.jsx b/src/mob/components/tabs/antv-tabs/index.jsx index 108b32a..1ddf66c 100644 --- a/src/mob/components/tabs/antv-tabs/index.jsx +++ b/src/mob/components/tabs/antv-tabs/index.jsx @@ -341,6 +341,7 @@ editab.hide = res.hide || 'false' editab.backgroundColor = res.backgroundColor editab.controlVal = res.controlVal || '' + editab.selectVal = res.selectVal || '' editab.blacklist = res.blacklist if (editab.uuid) { diff --git a/src/mob/components/tabs/antv-tabs/options.jsx b/src/mob/components/tabs/antv-tabs/options.jsx index 74643d9..24271c3 100644 --- a/src/mob/components/tabs/antv-tabs/options.jsx +++ b/src/mob/components/tabs/antv-tabs/options.jsx @@ -52,7 +52,15 @@ field: 'controlVal', label: '闅愯棌鏍囪', initval: tab.controlVal || '', - tooltip: '褰撶鐢ㄥ瓧娈靛�间笌闅愯棌鏍囪鐩哥瓑鏃讹紝鏍囩椤典細闅愯棌銆�', + tooltip: '褰撶鐢ㄥ瓧娈靛�间笌闅愯棌鏍囪鐩哥瓑鏃讹紝鏍囩椤典細闅愯棌銆傛敞锛氬涓�艰鐢ㄩ�楀彿鍒嗛殧銆�', + required: false + }, + { + type: 'text', + field: 'selectVal', + label: '閫変腑鏍囪', + initval: tab.selectVal || '', + tooltip: '褰撻�変腑瀛楁鍊间笌閫変腑鏍囪鐩哥瓑鏃讹紝鏍囩椤甸粯璁ら�変腑銆�', required: false }, { @@ -92,6 +100,10 @@ */ export function getTabsSetForm(setting, uuid) { let modules = MenuUtils.getSupModules(window.GLOB.customMenu.components, uuid) || [] + modules.push({ + value: 'preview', + label: '涓婁竴椤碉紙url鍙傛暟锛�' + }) const tabForm = [ { @@ -146,6 +158,7 @@ label: '涓婄骇缁勪欢', initval: setting.supModule || [], tooltip: '鏍囩缁勫彲浠ラ�夋嫨涓婄骇缁勪欢锛屽~鍏ョ鐢ㄥ瓧娈碉紝鐢ㄤ簬鎺у埗鏍囩闅愯棌銆�', + help: '鐢ㄤ簬鎺у埗鏍囩椤甸殣钘忋��', required: false, allowClear: true, options: modules, @@ -162,6 +175,14 @@ required: true }, { + type: 'text', + field: 'selectField', + label: '閫変腑瀛楁', + initval: setting.selectField || '', + tooltip: '鐢ㄤ簬鎺у埗鏍囩椤靛垵濮嬪寲閫変腑锛屽湪鏍囩涓~鍏ラ�変腑鏍囪锛屾敞锛氭暟鎹簮浜巙rl鍙傛暟銆�', + required: false + }, + { type: 'color', field: 'backgroundColor', label: '鑳屾櫙(鏍囬鏍�)', diff --git a/src/pc/bgcontroller/index.jsx b/src/pc/bgcontroller/index.jsx index 88fdafa..23ee485 100644 --- a/src/pc/bgcontroller/index.jsx +++ b/src/pc/bgcontroller/index.jsx @@ -1,7 +1,7 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' -import { Form, Select } from 'antd' +import { Form, Select, Input } from 'antd' import { ArrowUpOutlined, ArrowDownOutlined, ArrowLeftOutlined, ArrowRightOutlined } from '@ant-design/icons' import asyncComponent from '@/utils/asyncComponent' @@ -19,6 +19,7 @@ } state = { + background: '', backgroundColor: '', backgroundImage: '', backgroundSize: '', @@ -38,6 +39,7 @@ } this.setState({ + background: config.style.background || '', backgroundColor: config.style.backgroundColor, backgroundImage: bgImg, backgroundSize: config.style.backgroundSize || '100%', @@ -123,9 +125,34 @@ this.props.updateConfig(config) } + changeBackground = (val) => { + this.setState({ + background: val, + }) + + if (!val || /(^linear-gradient|^radial-gradient)\(.*\)$/.test(val)) { + let config = fromJS(this.props.config).toJS() + config.style.background = val + + delete config.style.backgroundColor + delete config.style.backgroundImage + + if (!val) { + delete config.style.background + } + + this.setState({ + backgroundImage: '', + backgroundColor: '' + }) + + this.props.updateConfig(config) + } + } + render () { const { config } = this.props - const { backgroundColor, backgroundImage, backgroundSize, backgroundRepeat, backgroundPosition } = this.state + const { backgroundColor, backgroundImage, backgroundSize, backgroundRepeat, backgroundPosition, background } = this.state const formItemLayout = { labelCol: { xs: { span: 24 }, @@ -140,16 +167,19 @@ return ( <div className="pc-style-controller"> <Form {...formItemLayout}> - <Form.Item + {/* <Form.Item colon={false} label="瀹藉害" className="normal-view" > <StyleInput defaultValue={config.style.width || '100%'} options={['px', '%', 'vw']} onChange={(val) => this.changePadding(val, 'width')}/> - </Form.Item> + </Form.Item> */} <Form.Item className="color-control" colon={false} label="鑳屾櫙鑹�"> <ColorSketch value={backgroundColor} onChange={this.changeBackgroundColor} /> </Form.Item> + {window.develop === true ? <Form.Item colon={false} label="棰滆壊"> + <Input value={background} onChange={(e) => this.changeBackground(e.target.value)} /> + </Form.Item> : null} <Form.Item colon={false} label="鑳屾櫙鍥�"> <SourceComponent value={backgroundImage} type="" placement="right" onChange={this.imgChange}/> </Form.Item> diff --git a/src/pc/components/navbar/normal-navbar/index.jsx b/src/pc/components/navbar/normal-navbar/index.jsx index 0c8d24e..7a3868e 100644 --- a/src/pc/components/navbar/normal-navbar/index.jsx +++ b/src/pc/components/navbar/normal-navbar/index.jsx @@ -141,7 +141,7 @@ MenuID: menu.property === 'linkmenu' ? menu.linkMenuId : menu.MenuID, copyMenuId: menu.property === 'menu' ? menu.copyMenuId : '', clearMenu: menu.clearMenu || 'true', - MenuNo: menu.MenuNo, + // MenuNo: menu.MenuNo, MenuName: menu.name, }) } @@ -153,7 +153,7 @@ MKEmitter.emit('changeEditMenu', { MenuID: card.wrap.linkmenu, copyMenuId: '', - MenuNo: '', + // MenuNo: '', MenuName: '' }) } 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 b57fb2b..f8ea138 100644 --- a/src/pc/components/navbar/normal-navbar/menusetting/menuform/index.jsx +++ b/src/pc/components/navbar/normal-navbar/menusetting/menuform/index.jsx @@ -102,7 +102,7 @@ })(<Input placeholder={''} autoComplete="off" onPressEnter={this.handleSubmit} />)} </Form.Item> </Col> - <Col span={22}> + {/* <Col span={22}> <Form.Item label="鑿滃崟鍙傛暟"> {getFieldDecorator('MenuNo', { initialValue: menu.MenuNo || '', @@ -114,7 +114,7 @@ ] })(<Input placeholder={''} autoComplete="off" onPressEnter={this.handleSubmit} />)} </Form.Item> - </Col> + </Col> */} <Col span={22}> <Form.Item label="鑿滃崟灞炴��"> {getFieldDecorator('property', { @@ -129,41 +129,6 @@ )} </Form.Item> </Col> - <Col span={22}> - <Form.Item label="闅愯棌"> - {getFieldDecorator('hidden', { - initialValue: menu.hidden || 'false' - })( - <Radio.Group> - <Radio value="false">鍚�</Radio> - <Radio value="true">鏄�</Radio> - </Radio.Group> - )} - </Form.Item> - </Col> - {property !== 'classify' ? <Col span={22}> - <Form.Item label="鎵撳紑鏂瑰紡"> - {getFieldDecorator('open', { - initialValue: menu.open || 'blank' - })( - <Radio.Group> - <Radio value="blank">鏂扮獥鍙�</Radio> - <Radio value="self">褰撳墠绐楀彛</Radio> - </Radio.Group> - )} - </Form.Item> - </Col> : null} - {property === 'link' ? <Col span={22}> - <Form.Item label="閾炬帴鍦板潃"> - {getFieldDecorator('link', { - initialValue: menu.link || '', - rules: [{ - required: true, - message: '璇疯緭鍏ラ摼鎺ュ湴鍧�!' - }] - })(<TextArea rows={2} />)} - </Form.Item> - </Col> : null} {property === 'linkmenu' ? <Col span={22}> <Form.Item label={ <Tooltip placement="topLeft" title="鍏宠仈褰撳墠app涓凡鏈夌殑鑿滃崟銆�"> @@ -217,6 +182,41 @@ )} </Form.Item> </Col> : null} + <Col span={22}> + <Form.Item label="闅愯棌"> + {getFieldDecorator('hidden', { + initialValue: menu.hidden || 'false' + })( + <Radio.Group> + <Radio value="false">鍚�</Radio> + <Radio value="true">鏄�</Radio> + </Radio.Group> + )} + </Form.Item> + </Col> + {property !== 'classify' ? <Col span={22}> + <Form.Item label="鎵撳紑鏂瑰紡"> + {getFieldDecorator('open', { + initialValue: menu.open || 'blank' + })( + <Radio.Group> + <Radio value="blank">鏂扮獥鍙�</Radio> + <Radio value="self">褰撳墠绐楀彛</Radio> + </Radio.Group> + )} + </Form.Item> + </Col> : null} + {property === 'link' ? <Col span={22}> + <Form.Item label="閾炬帴鍦板潃"> + {getFieldDecorator('link', { + initialValue: menu.link || '', + rules: [{ + required: true, + message: '璇疯緭鍏ラ摼鎺ュ湴鍧�!' + }] + })(<TextArea rows={2} />)} + </Form.Item> + </Col> : null} </Row> </Form> ) diff --git a/src/pc/components/navbar/normal-navbar/menusetting/menutable/index.jsx b/src/pc/components/navbar/normal-navbar/menusetting/menutable/index.jsx index 8891018..3ee2c9c 100644 --- a/src/pc/components/navbar/normal-navbar/menusetting/menutable/index.jsx +++ b/src/pc/components/navbar/normal-navbar/menusetting/menutable/index.jsx @@ -21,7 +21,7 @@ editMenu: null, columns: [ { title: '鑿滃崟鍚嶇О', dataIndex: 'name', key: 'name' }, - { title: '鑿滃崟鍙傛暟', dataIndex: 'MenuNo', key: 'MenuNo' }, + // { title: '鑿滃崟鍙傛暟', dataIndex: 'MenuNo', key: 'MenuNo' }, { title: '鑿滃崟灞炴��', dataIndex: 'property', key: 'property', render: text => { const trans = {menu: '鑿滃崟', link: '閾炬帴', linkmenu: '鍏宠仈鑿滃崟', classify: '鍒嗙被'} @@ -203,7 +203,7 @@ editMenu: null, columns: [ { title: '鑿滃崟鍚嶇О', dataIndex: 'name', key: 'name' }, - { title: '鑿滃崟鍙傛暟', dataIndex: 'MenuNo', key: 'MenuNo' }, + // { title: '鑿滃崟鍙傛暟', dataIndex: 'MenuNo', key: 'MenuNo' }, { title: '鑿滃崟灞炴��', dataIndex: 'property', key: 'property', render: text => { const trans = {menu: '鑿滃崟', link: '閾炬帴', linkmenu: '鍏宠仈鑿滃崟', classify: '鍒嗙被'} @@ -402,7 +402,7 @@ editMenu: null, columns: [ { title: '鑿滃崟鍚嶇О', dataIndex: 'name', key: 'name' }, - { title: '鑿滃崟鍙傛暟', dataIndex: 'MenuNo', key: 'MenuNo' }, + // { title: '鑿滃崟鍙傛暟', dataIndex: 'MenuNo', key: 'MenuNo' }, { title: '鑿滃崟灞炴��', dataIndex: 'property', key: 'property', render: text => { const trans = {menu: '鑿滃崟', link: '閾炬帴', linkmenu: '鍏宠仈鑿滃崟', classify: '鍒嗙被'} diff --git a/src/pc/menushell/index.scss b/src/pc/menushell/index.scss index 21f8a7d..752a286 100644 --- a/src/pc/menushell/index.scss +++ b/src/pc/menushell/index.scss @@ -1,6 +1,6 @@ .menu-shell-inner { min-height: calc(100vh - 100px); - width: 100%; + width: auto!important; background-size: 100%; .anticon { diff --git a/src/router/index.js b/src/router/index.js index 434fcd4..2f4d669 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -16,6 +16,7 @@ const AppCheck = asyncLoadComponent(() => import('@/views/appcheck')) const PCDesign = asyncLoadComponent(() => import('@/views/pcdesign')) const MobDesign = asyncLoadComponent(() => import('@/views/mobdesign')) +const PopDesign = asyncLoadComponent(() => import('@/views/popdesign')) const ImDesign = asyncLoadComponent(() => import('@/views/imdesign')) const MenuDesign = asyncLoadComponent(() => import('@/views/menudesign')) const BaseDesign = asyncLoadComponent(() => import('@/views/basedesign')) @@ -39,6 +40,7 @@ {path: '/imdesign/:param', name: 'imdesign', component: ImDesign, auth: true}, {path: '/menudesign/:param', name: 'menudesign', component: MenuDesign, auth: true}, {path: '/basedesign/:param', name: 'basedesign', component: BaseDesign, auth: true}, + {path: '/popdesign/:param', name: 'popdesign', component: PopDesign, 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}, diff --git a/src/tabviews/calendar/index.jsx b/src/tabviews/calendar/index.jsx index 76671e6..735d55a 100644 --- a/src/tabviews/calendar/index.jsx +++ b/src/tabviews/calendar/index.jsx @@ -40,7 +40,7 @@ config: {}, // 椤甸潰閰嶇疆淇℃伅锛屽寘鎷寜閽�佹悳绱€�佹樉绀哄垪銆佹爣绛剧瓑 userConfig: null, // 鐢ㄦ埛鑷畾涔夎缃� searchlist: null, // 鎼滅储鏉′欢 - arr_field: '', // 浣跨敤 sPC_Get_TableData 鏃剁殑鏌ヨ瀛楁闆� + arr_field: '', // 鏌ヨ瀛楁闆� setting: null, // 椤甸潰鍏ㄥ眬璁剧疆锛氭暟鎹簮銆佹寜閽強鏄剧ず鍒楀浐瀹氥�佷富閿瓑 data: null, // 鍒楄〃鏁版嵁闆� loading: false, // 鍒楄〃鏁版嵁鍔犺浇涓� @@ -321,7 +321,7 @@ } /** - * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼ sPC_Get_TableData 鐨勫弬鏁� + * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼鐨勫弬鏁� */ getDefaultParam = () => { const { arr_field, search, setting, config, calendarYear } = this.state diff --git a/src/tabviews/commontable/index.jsx b/src/tabviews/commontable/index.jsx index 255c26d..99900ea 100644 --- a/src/tabviews/commontable/index.jsx +++ b/src/tabviews/commontable/index.jsx @@ -51,7 +51,7 @@ searchlist: null, // 鎼滅储鏉′欢 actions: null, // 鎸夐挳闆� columns: null, // 鏄剧ず鍒� - arr_field: '', // 浣跨敤 sPC_Get_TableData 鏃剁殑鏌ヨ瀛楁闆� + arr_field: '', // 鏌ヨ瀛楁闆� setting: null, // 椤甸潰鍏ㄥ眬璁剧疆锛氭暟鎹簮銆佹寜閽強鏄剧ず鍒楀浐瀹氥�佷富閿瓑 data: [], // 鍒楄〃鏁版嵁闆� selectedData: [], // 宸查�夎〃鏍兼暟鎹� @@ -653,14 +653,6 @@ sql = sql.join('') param = UtilsDM.getCallBackQueryParams(setting, sql, errSql, BID) - - if (BID) { - param.BID = BID - } - - if (window.GLOB.mkHS) { // 鍑芥暟 sPC_TableData_InUpDe 浜戠楠岃瘉 - param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) - } } else { param.func = 's_ex_result_back' param.s_ex_result = lines.map((item, index) => ({ diff --git a/src/tabviews/custom/components/card/prop-card/index.jsx b/src/tabviews/custom/components/card/prop-card/index.jsx index 03898a1..2c72190 100644 --- a/src/tabviews/custom/components/card/prop-card/index.jsx +++ b/src/tabviews/custom/components/card/prop-card/index.jsx @@ -117,7 +117,7 @@ setTimeout(() => { this.loadData() }, _config.setting.delay || 0) - } else if ((!_sync || _config.wrap.priKeyType === 'static') && selected !== 'false') { + } else if (!_sync && selected !== 'false') { setTimeout(() => { this.checkTopLine() }, 200) @@ -168,7 +168,7 @@ _data.$$uuid = _data[config.setting.primaryKey] || '' this.setState({sync: false, data: _data}, () => { - if (config.wrap.priKeyType !== 'static' && selected !== 'false') { + if (selected !== 'false') { setTimeout(() => { this.checkTopLine() }, 200) @@ -368,7 +368,7 @@ data: _data, loading: false }, () => { - if (config.wrap.priKeyType !== 'static' && selected !== 'false') { + if (selected !== 'false') { this.checkTopLine() } }) diff --git a/src/tabviews/custom/components/carousel/data-card/index.scss b/src/tabviews/custom/components/carousel/data-card/index.scss index eabde18..570aed6 100644 --- a/src/tabviews/custom/components/carousel/data-card/index.scss +++ b/src/tabviews/custom/components/carousel/data-card/index.scss @@ -10,6 +10,7 @@ background-position: center center; background-repeat: no-repeat; background-size: cover; + overflow: hidden; } .ant-empty { diff --git a/src/tabviews/custom/components/carousel/prop-card/index.scss b/src/tabviews/custom/components/carousel/prop-card/index.scss index 68b6eb3..b397692 100644 --- a/src/tabviews/custom/components/carousel/prop-card/index.scss +++ b/src/tabviews/custom/components/carousel/prop-card/index.scss @@ -12,6 +12,7 @@ background-position: center center; background-repeat: no-repeat; background-size: cover; + overflow: hidden; } .loading-mask { diff --git a/src/tabviews/custom/components/module/voucher/assistTable/index.jsx b/src/tabviews/custom/components/module/voucher/assistTable/index.jsx new file mode 100644 index 0000000..9c56276 --- /dev/null +++ b/src/tabviews/custom/components/module/voucher/assistTable/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 AssistTable 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 AssistTable \ No newline at end of file diff --git a/src/tabviews/custom/components/module/voucher/assistTable/index.scss b/src/tabviews/custom/components/module/voucher/assistTable/index.scss new file mode 100644 index 0000000..e8175c8 --- /dev/null +++ b/src/tabviews/custom/components/module/voucher/assistTable/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/table/edit-table/index.jsx b/src/tabviews/custom/components/table/edit-table/index.jsx index f130dc6..36170d3 100644 --- a/src/tabviews/custom/components/table/edit-table/index.jsx +++ b/src/tabviews/custom/components/table/edit-table/index.jsx @@ -29,7 +29,7 @@ config: {}, // 椤甸潰閰嶇疆淇℃伅锛屽寘鎷寜閽�佹悳绱€�佹樉绀哄垪銆佹爣绛剧瓑 actions: null, // 鎸夐挳闆� columns: null, // 鏄剧ず鍒� - arr_field: '', // 浣跨敤 sPC_Get_TableData 鏃剁殑鏌ヨ瀛楁闆� + arr_field: '', // 鏌ヨ瀛楁闆� setting: null, // 椤甸潰鍏ㄥ眬璁剧疆锛氭暟鎹簮銆佹寜閽強鏄剧ず鍒楀浐瀹氥�佷富閿瓑 data: [], // 鍒楄〃鏁版嵁闆� selectedData: [], // 宸查�夎〃鏍兼暟鎹� diff --git a/src/tabviews/custom/components/table/normal-table/index.jsx b/src/tabviews/custom/components/table/normal-table/index.jsx index 29532d5..62cefcd 100644 --- a/src/tabviews/custom/components/table/normal-table/index.jsx +++ b/src/tabviews/custom/components/table/normal-table/index.jsx @@ -32,7 +32,7 @@ config: {}, // 椤甸潰閰嶇疆淇℃伅锛屽寘鎷寜閽�佹悳绱€�佹樉绀哄垪銆佹爣绛剧瓑 actions: null, // 鎸夐挳闆� columns: null, // 鏄剧ず鍒� - arr_field: '', // 浣跨敤 sPC_Get_TableData 鏃剁殑鏌ヨ瀛楁闆� + arr_field: '', // 鏌ヨ瀛楁闆� setting: null, // 椤甸潰鍏ㄥ眬璁剧疆锛氭暟鎹簮銆佹寜閽強鏄剧ず鍒楀浐瀹氥�佷富閿瓑 data: [], // 鍒楄〃鏁版嵁闆� selectedData: [], // 宸查�夎〃鏍兼暟鎹� diff --git a/src/tabviews/custom/components/tabs/antv-tabs/index.jsx b/src/tabviews/custom/components/tabs/antv-tabs/index.jsx index 064a1d0..a5159a1 100644 --- a/src/tabviews/custom/components/tabs/antv-tabs/index.jsx +++ b/src/tabviews/custom/components/tabs/antv-tabs/index.jsx @@ -52,8 +52,13 @@ if (config.setting.autoSwitch === 'true' && config.subtabs.length > 1 && config.setting.interval) { this.autoSwitch(config.setting.interval) } - MKEmitter.addListener('resetSelectLine', this.resetParentParam) + if (config.activeKey) { + let node = document.getElementById('tab' + config.activeKey) + node && node.click() + } + + MKEmitter.addListener('resetSelectLine', this.resetParentParam) } /** @@ -81,13 +86,18 @@ tabs: {...tabs, subtabs: []} }) } else { - let val = data[tabs.setting.controlField] === undefined ? '' : data[tabs.setting.controlField] + '' + let val = '' + Object.keys(data).forEach(key => { + if (key.toLowerCase() === tabs.setting.controlField) { + val = data[key] + } + }) this.setState({ tabs: {...tabs, subtabs: this.props.config.subtabs.filter(tab => { if (tab.controlVal === val) { return false } else if (/,/ig.test(tab.controlVal)) { - return tab.controlVal.split(',').includes(val) + return !tab.controlVal.split(',').includes(val) } return true })} diff --git a/src/tabviews/custom/components/timeline/normal-timeline/index.jsx b/src/tabviews/custom/components/timeline/normal-timeline/index.jsx index 13127d8..c4a13c7 100644 --- a/src/tabviews/custom/components/timeline/normal-timeline/index.jsx +++ b/src/tabviews/custom/components/timeline/normal-timeline/index.jsx @@ -240,6 +240,11 @@ return } + // if (config.setting.interType === 'inner' && config.setting.innerFunc === 'z_mk_express') { + // this.getExpress() + // return + // } + this.setState({ loading: true }) @@ -272,6 +277,36 @@ } } + getExpress = () => { + this.setState({ + loading: true + }) + Api.wxNginxRequest(`express/yuantong/YT6590674317601`, 'get').then(res => { + if (!res || typeof(res) !== 'string') { + notification.error({ + top: 92, + message: '鏈幏鍙栧埌蹇�掍俊鎭�', + duration: 10 + }) + } else { + let data = res.split(/\n/).filter(Boolean) + + data = data.map((item, i) => { + return { + $Index: i, + date: item.substr(0, 19), + content: item.substr(20) + } + }) + + this.setState({ + data: data, + loading: false + }) + } + }) + } + getnodes = (data) => { const { config, card } = this.state diff --git a/src/tabviews/custom/index.jsx b/src/tabviews/custom/index.jsx index 29a1d27..5b729ce 100644 --- a/src/tabviews/custom/index.jsx +++ b/src/tabviews/custom/index.jsx @@ -73,7 +73,7 @@ * @description 鑾峰彇椤甸潰閰嶇疆淇℃伅 */ async loadconfig () { - const { permAction, param } = this.props + const { permAction } = this.props let _param = { func: 'sPC_Get_LongParam', @@ -138,7 +138,9 @@ let roleId = sessionStorage.getItem('role_id') || '' // 瑙掕壊ID let balMap = new Map() let skip = config.permission === 'false' || window.GLOB.mkHS - config.components = this.filterComponent(config.components, roleId, permAction, balMap, skip) + let param = this.props.param || {} // url鍙傛暟 + + config.components = this.filterComponent(config.components, roleId, permAction, balMap, skip, param) // 鑾峰彇涓绘悳绱㈡潯浠� let mainSearch = [] @@ -147,7 +149,7 @@ component.search = component.search.map(item => { item.oriInitval = item.initval - if (['text', 'select', 'link'].includes(item.type) && param && param.$searchkey === item.field) { + if (['text', 'select', 'link'].includes(item.type) && param.$searchkey === item.field) { item.initval = param.$searchval } @@ -158,7 +160,7 @@ }) let params = [] - let BID = param && param.$BID ? param.$BID : '' + let BID = param.$BID || '' let inherit = {} if (config.cacheUseful === 'true') { // 缂撳瓨缁ф壙 @@ -188,7 +190,7 @@ } if (config.urlFields) { config.urlFields.forEach(field => { - let val = `'${param ? (param[field] || '') : ''}'` + let val = `'${param[field] || ''}'` regs.push({ reg: new RegExp('@' + field + '@', 'ig'), value: val @@ -405,14 +407,6 @@ sql = sql.join('') param = UtilsDM.getCallBackQueryParams(setting, sql, errSql, this.state.BID) - - if (this.state.BID) { - param.BID = this.state.BID - } - - if (window.GLOB.mkHS) { // 鍑芥暟 sPC_TableData_InUpDe 浜戠楠岃瘉 - param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) - } } else { param.func = 's_ex_result_back' param.s_ex_result = lines.map((item, index) => ({ @@ -449,7 +443,7 @@ }) } - filterComponent = (components, roleId, permAction, balMap, skip) => { + filterComponent = (components, roleId, permAction, balMap, skip, urlparam) => { return components.filter(item => { if (item.style && item.style.boxShadow) { @@ -481,8 +475,58 @@ return true }) + if (item.setting.supModule) { + let pid = item.setting.supModule.pop() + item.setting.supModule = pid || '' + + if (item.setting.supModule) { + item.setting.controlField = item.setting.controlField.toLowerCase() + + if (item.setting.supModule === 'preview') { + item.setting.supModule = '' + let val = '' + Object.keys(urlparam).forEach(key => { + if (key.toLowerCase() === item.setting.controlField) { + val = urlparam[key] + } + }) + + item.subtabs = item.subtabs.filter(tab => { + if (tab.controlVal === val) { + return false + } else if (/,/ig.test(tab.controlVal)) { + return !tab.controlVal.split(',').includes(val) + } + + return true + }) + } + } + } + + if (item.setting.selectField) { + item.setting.selectField = item.setting.selectField.toLowerCase() + + let val = '' + Object.keys(urlparam).forEach(key => { + if (key.toLowerCase() === item.setting.selectField) { + val = urlparam[key] + } + }) + + let activeKey = '' + + item.subtabs.forEach(tab => { + if (!activeKey && tab.selectVal === val) { + activeKey = tab.uuid + } + }) + + item.activeKey = activeKey + } + item.subtabs = item.subtabs.map(tab => { - tab.components = this.filterComponent(tab.components, roleId, permAction, balMap, skip) + tab.components = this.filterComponent(tab.components, roleId, permAction, balMap, skip, urlparam) return tab }) @@ -497,6 +541,8 @@ }) }) item.parentIds = supIds + + return true } else if (item.type === 'group') { if ( item.setting.blacklist && item.setting.blacklist.length > 0 && @@ -505,7 +551,9 @@ return false } - item.components = this.filterComponent(item.components, roleId, permAction, balMap, skip) + item.components = this.filterComponent(item.components, roleId, permAction, balMap, skip, urlparam) + + return true } else if (['pie', 'bar', 'line', 'dashboard', 'scatter', 'chart'].includes(item.type)) { if ( item.plot.blacklist && item.plot.blacklist.length > 0 && diff --git a/src/tabviews/formtab/index.jsx b/src/tabviews/formtab/index.jsx index 9c15dfd..f4b1eea 100644 --- a/src/tabviews/formtab/index.jsx +++ b/src/tabviews/formtab/index.jsx @@ -37,7 +37,7 @@ config: {}, // 椤甸潰閰嶇疆淇℃伅锛屽寘鎷寜閽�佽〃鍗曘�佹爣绛剧瓑 groups: null, // 琛ㄥ崟缁� actions: null, // 鎸夐挳闆� - arr_field: '', // 浣跨敤 sPC_Get_TableData 鏃剁殑鏌ヨ瀛楁闆� + arr_field: '', // 鏌ヨ瀛楁闆� setting: null, // 椤甸潰鍏ㄥ眬璁剧疆锛氭暟鎹簮銆佹寜閽強鏄剧ず鍒楀浐瀹氥�佷富閿瓑 data: null, // 鍒楄〃鏁版嵁闆� BIDs: {}, // 涓婄骇琛╥d @@ -390,7 +390,7 @@ } /** - * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼ sPC_Get_TableData 鐨勫弬鏁� + * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼鐨勫弬鏁� */ getDefaultParam = () => { const { arr_field, setting, primaryId } = this.state diff --git a/src/tabviews/scriptmanage/index.jsx b/src/tabviews/scriptmanage/index.jsx index 63947a9..df5e94b 100644 --- a/src/tabviews/scriptmanage/index.jsx +++ b/src/tabviews/scriptmanage/index.jsx @@ -34,7 +34,7 @@ searchlist: [], // 鎼滅储鏉′欢 actions: [], // 鎸夐挳闆� columns: [], // 鏄剧ず鍒� - arr_field: '', // 浣跨敤 sPC_Get_TableData 鏃剁殑鏌ヨ瀛楁闆� + arr_field: '', // 鏌ヨ瀛楁闆� setting: {}, // 椤甸潰鍏ㄥ眬璁剧疆锛氭暟鎹簮銆佹寜閽強鏄剧ず鍒楀浐瀹氥�佷富閿瓑 data: [], // 鍒楄〃鏁版嵁闆� selectedData: [], // 宸查�夎〃鏍兼暟鎹� @@ -155,7 +155,7 @@ } /** - * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼ sPC_Get_TableData 鐨勫弬鏁� + * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼鐨勫弬鏁� */ getDefaultParam = () => { const { arr_field, pageIndex, pageSize, orderBy, search, setting } = this.state diff --git a/src/tabviews/subtable/index.jsx b/src/tabviews/subtable/index.jsx index 8d8fc3f..d58628f 100644 --- a/src/tabviews/subtable/index.jsx +++ b/src/tabviews/subtable/index.jsx @@ -46,7 +46,7 @@ searchlist: null, // 鎼滅储鏉′欢 actions: null, // 鎸夐挳闆� columns: null, // 鏄剧ず鍒� - arr_field: '', // 浣跨敤 sPC_Get_TableData 鏃剁殑鏌ヨ瀛楁闆� + arr_field: '', // 鏌ヨ瀛楁闆� setting: null, // 椤甸潰鍏ㄥ眬璁剧疆锛氭暟鎹簮銆佹寜閽強鏄剧ず鍒楀浐瀹氥�佷富閿瓑 data: [], // 鍒楄〃鏁版嵁闆� selectedData: [], // 宸查�夎〃鏍兼暟鎹� @@ -545,14 +545,6 @@ sql = sql.join('') param = UtilsDM.getCallBackQueryParams(setting, sql, errSql, BID) - - if (BID) { - param.BID = BID - } - - if (window.GLOB.mkHS) { // 鍑芥暟 sPC_TableData_InUpDe 浜戠楠岃瘉 - param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) - } } else { param.func = 's_ex_result_back' param.s_ex_result = lines.map((item, index) => ({ diff --git a/src/tabviews/subtabtable/index.jsx b/src/tabviews/subtabtable/index.jsx index 4c89fbe..ff72754 100644 --- a/src/tabviews/subtabtable/index.jsx +++ b/src/tabviews/subtabtable/index.jsx @@ -40,7 +40,7 @@ searchlist: null, // 鎼滅储鏉′欢 actions: null, // 鎸夐挳闆� columns: null, // 鏄剧ず鍒� - arr_field: '', // 浣跨敤 sPC_Get_TableData 鏃剁殑鏌ヨ瀛楁闆� + arr_field: '', // 鏌ヨ瀛楁闆� setting: null, // 椤甸潰鍏ㄥ眬璁剧疆锛氭暟鎹簮銆佹寜閽強鏄剧ず鍒楀浐瀹氥�佷富閿瓑 data: [], // 鍒楄〃鏁版嵁闆� selectedData: [], // 宸查�夎〃鏍兼暟鎹� @@ -484,14 +484,6 @@ sql = sql.join('') param = UtilsDM.getCallBackQueryParams(setting, sql, errSql, this.props.BID) - - if (this.props.BID) { - param.BID = this.props.BID - } - - if (window.GLOB.mkHS) { // 鍑芥暟 sPC_TableData_InUpDe 浜戠楠岃瘉 - param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) - } } else { let name = this.props.Tab ? (this.props.Tab.label || '') : '' param.func = 's_ex_result_back' diff --git a/src/tabviews/verupmanage/index.jsx b/src/tabviews/verupmanage/index.jsx index 9c1f4b3..d982822 100644 --- a/src/tabviews/verupmanage/index.jsx +++ b/src/tabviews/verupmanage/index.jsx @@ -37,7 +37,7 @@ searchlist: [], // 鎼滅储鏉′欢 actions: [], // 鎸夐挳闆� columns: [], // 鏄剧ず鍒� - arr_field: '', // 浣跨敤 sPC_Get_TableData 鏃剁殑鏌ヨ瀛楁闆� + arr_field: '', // 鏌ヨ瀛楁闆� setting: {}, // 椤甸潰鍏ㄥ眬璁剧疆锛氭暟鎹簮銆佹寜閽強鏄剧ず鍒楀浐瀹氥�佷富閿瓑 data: [], // 鍒楄〃鏁版嵁闆� selectedData: [], // 宸查�夎〃鏍兼暟鎹� @@ -206,7 +206,7 @@ } /** - * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼ sPC_Get_TableData 鐨勫弬鏁� + * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼鐨勫弬鏁� */ getDefaultParam = () => { const { arr_field, pageIndex, pageSize, orderBy, search, setting } = this.state diff --git a/src/tabviews/verupmanage/subtabtable/index.jsx b/src/tabviews/verupmanage/subtabtable/index.jsx index 0d69d00..fd00229 100644 --- a/src/tabviews/verupmanage/subtabtable/index.jsx +++ b/src/tabviews/verupmanage/subtabtable/index.jsx @@ -39,7 +39,7 @@ searchlist: null, // 鎼滅储鏉′欢 actions: null, // 鎸夐挳闆� columns: null, // 鏄剧ず鍒� - arr_field: '', // 浣跨敤 sPC_Get_TableData 鏃剁殑鏌ヨ瀛楁闆� + arr_field: '', // 鏌ヨ瀛楁闆� setting: null, // 椤甸潰鍏ㄥ眬璁剧疆锛氭暟鎹簮銆佹寜閽強鏄剧ず鍒楀浐瀹氥�佷富閿瓑 data: null, // 鍒楄〃鏁版嵁闆� selectedData: [], // 宸查�夎〃鏍兼暟鎹� @@ -228,7 +228,7 @@ } /** - * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼ sPC_Get_TableData 鐨勫弬鏁� + * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼鐨勫弬鏁� */ getDefaultParam = (BID) => { const { arr_field, pageIndex, pageSize, orderBy, search, setting } = this.state diff --git a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx index 437bf21..5c7df9c 100644 --- a/src/tabviews/zshare/actionList/exceloutbutton/index.jsx +++ b/src/tabviews/zshare/actionList/exceloutbutton/index.jsx @@ -670,7 +670,7 @@ param.secretkey = Utils.encrypt('', param.timestamp) param.LText = Utils.formatOptions(script) - if (window.GLOB.mkHS) { // 鍑芥暟 sPC_TableData_InUpDe 浜戠楠岃瘉 + if (window.GLOB.mkHS) { // 绯荤粺鍑芥暟浜戠楠岃瘉 param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) } diff --git a/src/tabviews/zshare/actionList/normalbutton/index.jsx b/src/tabviews/zshare/actionList/normalbutton/index.jsx index 473d3e1..d58c19e 100644 --- a/src/tabviews/zshare/actionList/normalbutton/index.jsx +++ b/src/tabviews/zshare/actionList/normalbutton/index.jsx @@ -267,12 +267,20 @@ return } else if (!['requiredSgl', 'notRequired', 'requiredOnce', 'required'].includes(btn.Ot)) { // 鏁版嵁閫夋嫨绫诲瀷鏍¢獙 - this.actionSettingError() + notification.warning({ + top: 92, + message: '鎸夐挳琛岃缃敊璇紒', + duration: 5 + }) return } else if (btn.intertype === 'system') { // 浣跨敤鍐呴儴鎺ュ彛鏃讹紝鎿嶄綔绫诲瀷鍜屾暟鎹簮涓嶅彲涓虹┖ if (!btn.sql || !btn.sqlType) { - this.actionSettingError() + notification.warning({ + top: 92, + message: '鎸夐挳鎿嶄綔绫诲瀷閿欒锛�', + duration: 5 + }) return } else if (data.length === 0 && btn.verify && btn.verify.voucher && btn.verify.voucher.enabled) { notification.warning({ @@ -285,12 +293,20 @@ } else if (btn.intertype === 'inner') { // 浣跨敤鍐呴儴鎺ュ彛鏃讹紝鍐呴儴鍑芥暟涓嶅彲涓虹┖ if (!btn.innerFunc) { - this.actionSettingError() + notification.warning({ + top: 92, + message: '鎸夐挳鍐呴儴鍑芥暟涓嶅彲涓虹┖锛�', + duration: 5 + }) return } - } else if (btn.intertype === 'custom') { + } else if (btn.intertype === 'custom' || btn.intertype === 'outer') { if (btn.callbackType === 'script' && (!btn.verify || !btn.verify.cbScripts || !btn.verify.cbScripts.filter(item => item.status !== 'false').length === 0)) { - this.actionSettingError() + notification.warning({ + top: 92, + message: '浣跨敤鑷畾涔夎剼鏈洖璋冩椂锛屽洖璋冭剼鏈笉鍙负绌猴紒', + duration: 5 + }) return } else if (btn.procMode === 'system' && data.length === 0 && btn.verify && btn.verify.voucher && btn.verify.voucher.enabled) { notification.warning({ @@ -299,7 +315,7 @@ duration: 5 }) return - } else if (window.GLOB.systemType === 'production' && !btn.proInterface) { + } else if (btn.intertype === 'custom' && window.GLOB.systemType === 'production' && !btn.proInterface) { notification.warning({ top: 92, message: '灏氭湭璁剧疆姝e紡绯荤粺鎺ュ彛鍦板潃锛�', @@ -307,15 +323,13 @@ }) return } - } else if (btn.intertype === 'outer') { - // 鎺ュ彛鍦板潃涓嶅瓨鍦ㄦ椂鎶ラ敊 - if (!btn.interface && btn.sysInterface !== 'true') { - this.actionSettingError() - return - } } else if (!['inner', 'outer', 'system', 'custom'].includes(btn.intertype)) { // 鎺ュ彛绫诲瀷閿欒 - this.actionSettingError() + notification.warning({ + top: 92, + message: '鎸夐挳鎺ュ彛绫诲瀷閿欒锛�', + duration: 5 + }) return } @@ -659,11 +673,9 @@ param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) } - if (param.func === 'sPC_TableData_InUpDe') { - param.menuname = btn.logLabel - if (window.GLOB.probation) { - param.s_debug_type = 'Y' - } + param.menuname = btn.logLabel + if (window.GLOB.probation) { + param.s_debug_type = 'Y' } return param @@ -673,13 +685,13 @@ return _params } - getInnerParam = (data, formdata) => { - const { setting, btn } = this.props + getInnerParam = (data, formdata, retmsg) => { + const { setting, btn, columns } = this.props let _params = [] if ( btn.Ot === 'notRequired' || btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce' ) { let param = { - func: btn.innerFunc + func: btn.innerFunc || '' } if (this.props.BID) { @@ -708,6 +720,10 @@ param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') param.secretkey = Utils.encrypt(param.LTextOut, param.timestamp) param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) + } + + if (retmsg) { + param.$callbacksql = this.getSysDeclareSql(btn, formdata, data[0], columns) } _params.push(param) @@ -747,11 +763,188 @@ param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) } + if (retmsg) { + param.$callbacksql = this.getSysDeclareSql(btn, formdata, cell, columns) + } + return param }) } return _params + } + + /** + * @description 鑾峰彇鍥炶皟鑴氭湰鐨勫瓧娈靛畾涔� + */ + getSysDeclareSql = (btn, formdata, data, columns) => { + let datavars = {} // 澹版槑鐨勫彉閲忥紝琛ㄥ崟鍙婃樉绀哄垪 + // 闇�瑕佸0鏄庣殑鍙橀噺闆� + let _vars = ['tbid', 'errorcode', 'retmsg', 'billcode', 'bvoucher', 'fibvoucherdate', 'fiyear', 'username', 'fullname', 'modulardetailcode', 'roleid', 'mk_departmentcode', 'mk_organization', 'mk_user_type', 'mk_nation', 'mk_province', 'mk_city', 'mk_district', 'mk_address', 'bid'] + + // sql璇彞 + let _sql = '' + + let _initvars = [] // 宸茶祴鍊煎瓧娈甸泦 + let _initFormfields = [] + let _initColfields = [] + let _declarefields = [] + + // 鑾峰彇瀛楁閿�煎 + formdata && formdata.forEach(form => { + let _key = form.key.toLowerCase() + datavars[_key] = form.value + + if (!_initvars.includes(_key)) { + _initvars.push(_key) + + if (form.type === 'number' || form.type === 'rate') { + let val = form.value + if (typeof(val) !== 'number') { + val = parseFloat(val) + if (isNaN(val)) { + val = 0 + } + } + _initFormfields.push(`@${_key}=${val}`) + } else if (['date', 'datemonth', 'datetime'].includes(form.type)) { + _initFormfields.push(`@${_key}='${form.value || '1949-10-01'}'`) + } else { + _initFormfields.push(`@${_key}='${form.value}'`) + } + } + + if (!_vars.includes(_key)) { + _vars.push(_key) + + if (form.fieldlen && form.fieldlen > 2048) { + form.fieldlen = 'max' + } + + let _type = `nvarchar(${form.fieldlen})` + + if (form.type.match(/date/ig)) { + _type = 'datetime' + } else if (form.type === 'number') { + _type = `decimal(18,${form.fieldlen})` + } else if (form.type === 'rate') { + _type = `decimal(18,2)` + } + + _declarefields.push(`@${_key} ${_type}`) + } + }) + + if (data) { + Object.keys(data).forEach(key => { + data[key.toLowerCase()] = data[key] + }) + } + + // 娣诲姞鏁版嵁涓瓧娈碉紝琛ㄥ崟鍊间紭鍏�(鎸夐挳涓嶉�夎鎴栧琛屾嫾鎺ユ椂璺宠繃) + if (data && btn.Ot !== 'notRequired' && btn.Ot !== 'requiredOnce') { + datavars = {...data, ...datavars} + + const setField = (col) => { + if (!col.field) return + let _key = col.field.toLowerCase() + + if (!_initvars.includes(_key)) { + let _val = datavars.hasOwnProperty(_key) ? datavars[_key] : '' + + if (col.datatype && /^date/ig.test(col.datatype) && !_val) { + _val = '1949-10-01' + } + + _initvars.push(_key) + _initColfields.push(`@${_key}='${_val}'`) + } + + if (!_vars.includes(_key)) { + _vars.push(_key) + + if (col.datatype) { + _declarefields.push(`@${_key} ${col.datatype}`) + } else { + if (col.fieldlength && col.fieldlength > 2048) { + col.fieldlength = 'max' + } + + let _type = `nvarchar(${col.fieldlength || 50})` + + if (col.type === 'number') { + let _length = col.decimal ? col.decimal : 0 + _type = `decimal(18,${_length})` + } else if (col.type === 'picture' || col.type === 'textarea') { + _type = `nvarchar(${col.fieldlength || 512})` + } + + _declarefields.push(`@${_key} ${_type}`) + } + } + } + + if (columns && columns.length > 0) { + columns.forEach(col => { + if (col.type === 'colspan' || col.type === 'old_colspan') { + col.subcols.forEach(cell => { + setField(cell) + }) + } else { + setField(col) + } + }) + } + } + + // 鍙橀噺澹版槑 + _declarefields = _declarefields.join(',') + if (_declarefields) { + _declarefields = ',' + _declarefields + } + _sql = `/* 绯荤粺鐢熸垚 */ + Declare @tbid nvarchar(50),@ErrorCode nvarchar(50),@retmsg nvarchar(4000),@BillCode nvarchar(50),@BVoucher nvarchar(50),@FIBVoucherDate nvarchar(50), @FiYear nvarchar(50),@ModularDetailCode nvarchar(50), @UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(50),@mk_organization nvarchar(50),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100),@bid 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 mk_user_type = sessionStorage.getItem('mk_user_type') || '' + let nation = sessionStorage.getItem('nation') || '' + let province = sessionStorage.getItem('province') || '' + let city = sessionStorage.getItem('city') || '' + let district = sessionStorage.getItem('district') || '' + let address = sessionStorage.getItem('address') || '' + + 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}', @mk_user_type='${mk_user_type}', @mk_nation='${nation}', @mk_province='${province}', @mk_city='${city}', @mk_district='${district}', @mk_address='${address}', @BillCode='', @ModularDetailCode='' + ` + + // 琛ㄥ崟鍙橀噺璧嬪�� + if (_initFormfields.length > 0) { + _sql += ` + /* 琛ㄥ崟鍙橀噺璧嬪�� */ + select ${_initFormfields.join(',')} + ` + } + // 鏄剧ず鍒楀彉閲忚祴鍊� + if (_initColfields.length > 0) { + _sql += ` + /* 鏄剧ず鍒楀彉閲忚祴鍊� */ + select ${_initColfields.join(',')} + ` + } + + return _sql } /** @@ -875,58 +1068,14 @@ /** *********************璋冪敤澶栭儴鎺ュ彛************************* */ let _params = [] // 璇锋眰鍙傛暟鏁扮粍 - if (btn.Ot === 'notRequired' || btn.Ot === 'requiredSgl' || btn.Ot === 'requiredOnce') { - let param = {} - - if (this.props.BID) { - param.BID = this.props.BID - } - - if ((btn.OpenType === 'pop' || btn.OpenType === 'formSubmit' || btn.OpenType === 'form') && formdata) { // 琛ㄥ崟 - formdata.forEach(_data => { - param[_data.key] = _data.value - }) - } - - // 鑾峰彇id - if (btn.Ot === 'notRequired') { - - } else if (btn.Ot === 'requiredSgl' && setting.primaryKey) { - param[setting.primaryKey] = data[0][setting.primaryKey] - } else if (btn.Ot === 'requiredOnce' && setting.primaryKey) { - let ids = data.map(d => { return d[setting.primaryKey]}) - param[setting.primaryKey] = ids.join(',') - } - - _params.push(param) - } else if (btn.Ot === 'required') { - // 閫夋嫨澶氳锛屽惊鐜皟鐢� - _params = data.map((cell, index) => { - let _cell = {} - - if (this.props.BID) { - _cell.BID = this.props.BID - } - - let _formparam = {} - if (btn.OpenType === 'pop' && formdata) { // 琛ㄥ崟 - formdata.forEach(_data => { - if (index !== 0 && _data.readin && cell.hasOwnProperty(_data.key)) { - _formparam[_data.key] = cell[_data.key] - } else { - _formparam[_data.key] = _data.value - } - }) - } - - if (setting.primaryKey) { - _cell[setting.primaryKey] = cell[setting.primaryKey] - } - - _cell = {..._formparam, ..._cell} - - return _cell + if (btn.procMode === 'system') { + _params = this.getSystemParam(data, formdata, true) + _params = _params.map(item => { + item.script_type = 'Y' + return item }) + } else { + _params = this.getInnerParam(data, formdata, btn.callbackType === 'script') } if (_params.length > 1 && btn.progress === 'progressbar' && btn.$toolbtn) { @@ -936,7 +1085,7 @@ } // 寰幆璋冪敤澶栭儴鎺ュ彛锛堝寘鎷唴閮ㄥ強鍥炶皟鍑芥暟锛� - this.outerLoopRequest(_params, btn, _resolve) + this.outerLoopRequest(_params, _resolve) } else if (btn.intertype === 'custom') { // 绯荤粺鎺ュ彛 let params = [] @@ -947,7 +1096,7 @@ return item }) } else { - params = this.getInnerParam(data, formdata) + params = this.getInnerParam(data, formdata, btn.callbackType === 'script') } if (params.length > 1 && btn.progress === 'progressbar' && btn.$toolbtn) { @@ -978,6 +1127,11 @@ delete param.$callbacksql + if (!param.func) { + this.customOuterRequest(params, param, record, _resolve) + return + } + Api.genericInterface(param).then(res => { if (res.status) { if ((res.mk_ex_invoke === 'false' || res.mk_ex_invoke === false) && params.length === 0) { @@ -988,41 +1142,6 @@ } else { this.customOuterRequest(params, res, record, _resolve) } - } else if (res.ErrCode === 'C' && this.state.checkParam) { - const _this = this - confirm({ - title: res.message || res.ErrMesg, - content: '缁х画鎵ц锛�', - onOk() { - return new Promise(resolve => { - Api.genericInterface(_this.state.checkParam).then((result) => { - if (result.status) { - if ((result.mk_ex_invoke === 'false' || result.mk_ex_invoke === false) && params.length === 0) { - _this.execSuccess(result) - _resolve() - } else if ((result.mk_ex_invoke === 'false' || result.mk_ex_invoke === false) && params.length > 0) { - _this.customLoopRequest(params, _resolve) - } else { - _this.customOuterRequest(params, result, record, _resolve) - } - } else { - _this.execError(result) - _resolve() - } - resolve() - }, () => { - _this.updateStatus() - resolve() - _resolve() - }) - }) - }, - onCancel() { - _this.execError({...res, ErrCode: 'P'}) - _resolve() - } - }) - this.setState({checkParam: null}) } else { this.execError(res) _resolve() @@ -1105,6 +1224,68 @@ * @description 鍥炶皟璇锋眰寰幆鎵ц */ customCallbackRequest = (params, result, record, _resolve) => { + const { btn } = this.props + + let param = null + + if (btn.callbackType === 'script' || btn.callbackType === 'default') { + param = this.getCallBackSql(result, record) + } else if (btn.callbackType === 'func') { + param = { + ...result, + func: btn.callbackFunc + } + if (result.$ErrCode === 'E') { + delete param.$ErrCode + delete param.$ErrMesg + + param.ErrCode = 'E' + } + } else { + if (result.$ErrCode === 'E') { + result.status = false + result.message = result.$ErrMesg + result.ErrCode = 'E' + result.ErrMesg = result.$ErrMesg + } else { + result.status = result.status !== false + result.ErrCode = result.ErrCode || '-1' + } + + if (result.status) { + if (params.length === 0) { + this.execSuccess(result) + _resolve() + } else { + this.customLoopRequest(params, _resolve) + } + } else { + this.execError(result) + _resolve() + } + + return + } + + Api.genericInterface(param).then(res => { + if (res.status) { + if (params.length === 0) { + this.execSuccess(res) + _resolve() + } else { + this.customLoopRequest(params, _resolve) + } + } else { + this.execError(res) + _resolve() + } + }, () => { + this.updateStatus() + _resolve() + }) + } + + getCallBackSql = (result, record) => { const { btn } = this.props let lines = [] let pre = btn.callbackType === 'script' ? '@' : '' @@ -1213,8 +1394,13 @@ } }) - _backCustomScript += ` - aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` + if (btn.output) { + _backCustomScript += ` + aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg,${btn.output} as mk_b_id` + } else { + _backCustomScript += ` + aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` + } let sql = [...lineMap.values()].map(item => (` ${item.insert} @@ -1273,22 +1459,7 @@ } } - Api.genericInterface(param).then(res => { - if (res.status) { - if (params.length === 0) { - this.execSuccess(res) - _resolve() - } else { - this.customLoopRequest(params, _resolve) - } - } else { - this.execError(res) - _resolve() - } - }, () => { - this.updateStatus() - _resolve() - }) + return param } /** @@ -1352,137 +1523,153 @@ /** * @description 澶栭儴璇锋眰寰幆鎵ц */ - outerLoopRequest = (params, btn, _resolve) => { + outerLoopRequest = (params, _resolve) => { if (!params && params.length === 0) return let param = params.shift() - let _outParam = null this.setState({ loadingNumber: params.length }) - new Promise(resolve => { - // 鍐呴儴璇锋眰 - if (btn.innerFunc) { - param.func = btn.innerFunc + let record = { + BID: param.BID || '', + ID: param.ID || '', + callbacksql: param.$callbacksql || '' + } - // 鍑芥暟 s_sDataDictb_TBBack 浜戠楠岃瘉 - if (window.GLOB.mkHS && param.func === 's_sDataDictb_TBBack' && param.LTextOut) { - param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') - param.secretkey = Utils.encrypt(param.LTextOut, param.timestamp) - param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) - } + delete param.$callbacksql - // 瀛樺湪鍐呴儴鍑芥暟鏃讹紝鏁版嵁棰勫鐞� - Api.genericInterface(param).then(res => { - if (res.status) { - delete res.ErrCode - delete res.ErrMesg - delete res.message - delete res.status + if (!param.func) { + this.outerOuterRequest(params, param, record, _resolve) + return + } - // 浣跨敤澶勭悊鍚庣殑鏁版嵁璋冪敤澶栭儴鎺ュ彛 - let keys = Object.keys(res) // 鎻愪氦澶栭儴鎺ュ彛鍓嶏紝娣诲姞BID - if (this.props.BID && keys.filter(key => key.toLowerCase() === 'bid').length === 0) { - res.BID = this.props.BID - } - - resolve(res) - } else { - this.execError(res, btn) - resolve(false) - _resolve() - } - }, () => { - this.updateStatus() - _resolve() - }) - } else { - resolve(param) - } - }).then(res => { - if (!res) return - // 澶栭儴璇锋眰 - _outParam = JSON.parse(JSON.stringify(res)) - - if (btn.outerFunc) { - res.func = btn.outerFunc - } - if (window.GLOB.mkHS) { - if (btn.sysInterface === 'true' && options.cloudServiceApi) { - res.rduri = options.cloudServiceApi - } else if (btn.sysInterface !== 'true') { - if (window.GLOB.systemType === 'production' && btn.proInterface) { - res.rduri = btn.proInterface - } else { - res.rduri = btn.interface - } - } - - // 鍑芥暟 s_sDataDictb_TBBack 浜戠楠岃瘉 - if (res.func === 's_sDataDictb_TBBack' && res.LTextOut) { - res.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') - res.secretkey = Utils.encrypt(res.LTextOut, res.timestamp) - res.open_key = Utils.encryptOpenKey(res.secretkey, res.timestamp) - } - } else { - if (btn.sysInterface === 'true' && window.GLOB.mainSystemApi) { - res.rduri = window.GLOB.mainSystemApi - } else if (btn.sysInterface !== 'true') { - if (window.GLOB.systemType === 'production' && btn.proInterface) { - res.rduri = btn.proInterface - } else { - res.rduri = btn.interface - } - } - } - - return Api.genericInterface(res) - }).then(response => { - if (!response) return - // 鍥炶皟璇锋眰 - if (btn.callbackFunc) { - // 瀛樺湪鍥炶皟鍑芥暟鏃讹紝璋冪敤 - delete response.message - delete response.status - - response.func = btn.callbackFunc - - let _callbackparam = {..._outParam, ...response} - - // 鍑芥暟 s_sDataDictb_TBBack 浜戠楠岃瘉 - if (window.GLOB.mkHS && _callbackparam.func === 's_sDataDictb_TBBack' && _callbackparam.LTextOut) { - _callbackparam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') - _callbackparam.secretkey = Utils.encrypt(_callbackparam.LTextOut, _callbackparam.timestamp) - _callbackparam.open_key = Utils.encryptOpenKey(_callbackparam.secretkey, _callbackparam.timestamp) - } - - return Api.genericInterface(_callbackparam) - } else { - if (response.status) { - // 涓�娆¤姹傛垚鍔燂紝杩涜涓嬩竴椤硅姹� - - if (params.length === 0) { - this.execSuccess(response) - _resolve() - } else { - this.outerLoopRequest(params, btn, _resolve) - } - } else { - this.execError(response) - _resolve() - } - } - }).then(res => { - if (!res) return - + Api.genericInterface(param).then(res => { if (res.status) { + if ((res.mk_ex_invoke === 'false' || res.mk_ex_invoke === false) && params.length === 0) { + this.execSuccess(res) + _resolve() + } else if ((res.mk_ex_invoke === 'false' || res.mk_ex_invoke === false) && params.length > 0) { + this.outerLoopRequest(params, _resolve) + } else { + delete res.mk_ex_invoke + delete res.ErrCode + delete res.ErrMesg + delete res.message + delete res.status + + // 浣跨敤澶勭悊鍚庣殑鏁版嵁璋冪敤澶栭儴鎺ュ彛 + let keys = Object.keys(res) // 鎻愪氦澶栭儴鎺ュ彛鍓嶏紝娣诲姞BID + if (this.props.BID && keys.filter(key => key.toLowerCase() === 'bid').length === 0) { + res.BID = this.props.BID + } + + this.outerOuterRequest(params, res, record, _resolve) + } + } else { + this.execError(res) + _resolve() + } + }, () => { + this.updateStatus() + _resolve() + }) + } + + outerOuterRequest = (params, result, record, _resolve) => { + const { btn } = this.props + let outParam = JSON.parse(JSON.stringify(result)) + + if (btn.outerFunc) { + result.func = btn.outerFunc + } + if (window.GLOB.mkHS) { + if (btn.sysInterface === 'true' && options.cloudServiceApi) { + result.rduri = options.cloudServiceApi + } else if (btn.sysInterface !== 'true') { + if (window.GLOB.systemType === 'production' && btn.proInterface) { + result.rduri = btn.proInterface + } else { + result.rduri = btn.interface + } + } + + // 鍑芥暟 s_sDataDictb_TBBack 浜戠楠岃瘉 + if (result.func === 's_sDataDictb_TBBack' && result.LTextOut) { + result.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + result.secretkey = Utils.encrypt(result.LTextOut, result.timestamp) + result.open_key = Utils.encryptOpenKey(result.secretkey, result.timestamp) + } + } else { + if (btn.sysInterface === 'true' && window.GLOB.mainSystemApi) { + result.rduri = window.GLOB.mainSystemApi + } else if (btn.sysInterface !== 'true') { + if (window.GLOB.systemType === 'production' && btn.proInterface) { + result.rduri = btn.proInterface + } else { + result.rduri = btn.interface + } + } + } + + Api.genericInterface(result).then(res => { + this.outerCallbackRequest(params, res, record, outParam, _resolve) + }, () => { + this.outerCallbackRequest(params, {status: false, message: 500, ErrCode: 'E', ErrMesg: 500}, record, outParam, _resolve) + }) + } + + /** + * @description 鍥炶皟璇锋眰寰幆鎵ц + */ + outerCallbackRequest = (params, result, record, outParam, _resolve) => { + const { btn } = this.props + + let param = null + + if (btn.callbackType === 'script' || btn.callbackType === 'default') { + param = this.getCallBackSql(result, record) + } else if (btn.callbackType === 'func' || btn.callbackFunc) { + delete result.message + delete result.status + + param = { + ...outParam, + ...result, + func: btn.callbackFunc + } + + // 鍑芥暟 s_sDataDictb_TBBack 浜戠楠岃瘉 + if (window.GLOB.mkHS && param.func === 's_sDataDictb_TBBack' && param.LTextOut) { + param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + param.secretkey = Utils.encrypt(param.LTextOut, param.timestamp) + param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) + } + } else { + if (result.status) { + if (params.length === 0) { + this.execSuccess(result) + _resolve() + } else { + this.outerLoopRequest(params, _resolve) + } + } else { + this.execError(result) + _resolve() + } + + return + } + + Api.genericInterface(param).then(res => { + if (res.status) { + // 涓�娆¤姹傛垚鍔燂紝杩涜涓嬩竴椤硅姹� if (params.length === 0) { this.execSuccess(res) _resolve() } else { - this.outerLoopRequest(params, btn, _resolve) + this.outerLoopRequest(params, _resolve) } } else { this.execError(res) @@ -1935,17 +2122,6 @@ let data = this.props.selectedData && this.props.selectedData[0] ? this.props.selectedData[0] : null this.setState({check: data && data[btn.field] === btn.openVal}) } - } - - /** - * @description 鎸夐挳閰嶇疆淇℃伅閿欒鎻愮ず - */ - actionSettingError = () => { - notification.warning({ - top: 92, - message: this.state.dict['main.action.settingerror'], - duration: 5 - }) } handleModelConfig = (config) => { diff --git a/src/tabviews/zshare/fileupload/index.jsx b/src/tabviews/zshare/fileupload/index.jsx index 637a480..20d0e56 100644 --- a/src/tabviews/zshare/fileupload/index.jsx +++ b/src/tabviews/zshare/fileupload/index.jsx @@ -28,7 +28,7 @@ maxFile: null, rduri: '', limit: 2, - compress: false, + compress: 'false', fileType: 'text', showprogress: false, filelist: [] @@ -66,13 +66,12 @@ let accept = '' let accepts = null - let compress = false + let compress = config.compress || 'false' let maxFile = config.maxfile && config.maxfile > 0 ? config.maxfile : null - if (config.compress === 'true' || config.compress === 'base64') { - compress = true + if (compress === 'true' || compress === 'base64') { accepts = ['.jpg', '.png', '.gif', '.jpeg'] accept = accepts.join(',') - if (config.compress === 'base64') { + if (compress === 'base64') { maxFile = 1 } } else if (config.suffix) { @@ -249,7 +248,7 @@ percent: 0 }) - if (compress) { + if (compress === 'true' || compress === 'base64') { let reader = new FileReader() let fileSize = file.size / 1024 / 1024 let compressRate = 0.9 @@ -345,6 +344,35 @@ reader.readAsDataURL(file) return false + } else if (compress === 'oss') { + let _param = new FormData() + _param.append('multipartFile', file) + _param.append('userId', sessionStorage.getItem('UserID') || '') + + Api.fileOssUpload(_param).then(res => { + if (res.status) { + if (res.urlPath) { + let path = (/^\/\//.test(res.urlPath) ? 'https:' : '') + res.urlPath + this.onUpdate(path) + this.setState({ + percent: 100 + }, () => { + setTimeout(() => { + this.setState({ + showprogress: false, + percent: 0 + }) + }, 200) + }) + } else { + this.onFail('鏂囦欢涓婁紶澶辫触锛�') + } + } else { + this.onFail(res.message || '鏂囦欢涓婁紶澶辫触锛�') + } + }) + + return false } // 鍏煎鎬х殑澶勭悊 diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx index 1496a1f..ffb77bc 100644 --- a/src/tabviews/zshare/mutilform/index.jsx +++ b/src/tabviews/zshare/mutilform/index.jsx @@ -306,10 +306,8 @@ { max: item.fieldlength, message: formRule.input.formMessage.replace('@max', item.fieldlength) - } - ] - if (item.encryption !== 'true') { - _rules.push({ + }, + { pattern: /^[^']*$/ig, message: '涓嶅彲浣跨敤鑻辨枃鐘舵�佺殑鍗曞紩鍙凤紒' }, { @@ -320,8 +318,8 @@ callback() } } - }) - } + } + ] item.rules = _rules } else if (item.type === 'brafteditor') { item.rules = [ diff --git a/src/tabviews/zshare/mutilform/mkInput/index.jsx b/src/tabviews/zshare/mutilform/mkInput/index.jsx index fd313ea..f147110 100644 --- a/src/tabviews/zshare/mutilform/mkInput/index.jsx +++ b/src/tabviews/zshare/mutilform/mkInput/index.jsx @@ -1,6 +1,7 @@ import React, { Component } from 'react' import { is, fromJS } from 'immutable' import { Input } from 'antd' +import md5 from 'md5' import MKEmitter from '@/utils/events.js' @@ -14,9 +15,25 @@ super(props) const config = props.config + let _value = config.initval + let encryption = 'false' + + if (config.encryption === 'true') { + encryption = 'true' + if (_value) { + try { + _value = window.decodeURIComponent(window.atob(_value)) + } catch (e) { + _value = config.initval + } + } + } else if (config.encryption === 'md5') { + encryption = 'md5' + } this.state = { - value: config.initval + value: _value, + encryption } } @@ -43,27 +60,55 @@ this.inputRef.current.select() } else if (type === 'input') { this.setState({value}) - this.props.onChange(value, true) + let _val = value + + if (this.state.encryption === 'true') { + try { + _val = window.btoa(window.encodeURIComponent(_val)) + } catch (e) { + _val = value + } + this.props.onChange(_val) + } else if (this.state.encryption === 'md5') { + _val = _val + '' + _val = md5(_val.toLowerCase()) + _val = _val.toUpperCase() + + this.props.onChange(_val) + } else { + this.props.onChange(_val, true) + } } } handleChange = (e) => { let val = e.target.value + let submit = /\n/ig.test(val) - if (!/\n/ig.test(val)) { - this.props.onChange(val) - this.setState({value: val}) - if (!val) { + val = val.replace(/\n/ig, '') + + let _val = val + + if (this.state.encryption === 'true') { + try { + _val = window.btoa(window.encodeURIComponent(_val)) + } catch (e) { + _val = val + } + } else if (this.state.encryption === 'md5') { + _val = md5(_val.toLowerCase()) + _val = _val.toUpperCase() + } + + this.props.onChange(_val) + + this.setState({value: val}, () => { + if (submit) { + this.handleInputSubmit() + } else if (!val) { this.inputRef.current.focus() } - } else { - val = val.replace(/\n/ig, '') - - this.props.onChange(val) - this.setState({value: val}, () => { - this.handleInputSubmit() - }) - } + }) } handleInputSubmit = () => { diff --git a/src/tabviews/zshare/mutilform/mkTextArea/index.jsx b/src/tabviews/zshare/mutilform/mkTextArea/index.jsx index 444d185..90668e5 100644 --- a/src/tabviews/zshare/mutilform/mkTextArea/index.jsx +++ b/src/tabviews/zshare/mutilform/mkTextArea/index.jsx @@ -1,6 +1,7 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { Input } from 'antd' +import md5 from 'md5' import MKEmitter from '@/utils/events.js' @@ -33,6 +34,8 @@ _value = config.initval } } + } else if (config.encryption === 'md5') { + encryption = 'md5' } this.setState({ @@ -58,7 +61,23 @@ this.inputRef.current.focus() } else if (type === 'input') { this.setState({value}) - this.props.onChange(value, true) + let _val = value + + if (this.state.encryption === 'true') { + try { + _val = window.btoa(window.encodeURIComponent(_val)) + } catch (e) { + _val = value + } + this.props.onChange(_val) + } else if (this.state.encryption === 'md5') { + _val = _val + '' + _val = md5(_val.toLowerCase()) + _val = _val.toUpperCase() + this.props.onChange(_val) + } else { + this.props.onChange(_val, true) + } } } @@ -75,7 +94,11 @@ } catch (e) { _val = val } + } else if (encryption === 'md5') { + _val = md5(_val.toLowerCase()) + _val = _val.toUpperCase() } + this.props.onChange(_val) } diff --git a/src/templates/formtabconfig/index.jsx b/src/templates/formtabconfig/index.jsx index c37b457..aef7eda 100644 --- a/src/templates/formtabconfig/index.jsx +++ b/src/templates/formtabconfig/index.jsx @@ -1955,7 +1955,7 @@ <Modal title={this.state.dict['model.action'] + '-' + this.state.dict['model.edit']} visible={modaltype === 'actionEdit'} - width={900} + width={920} maskClosable={false} onCancel={this.editModalCancel} footer={[ diff --git a/src/templates/sharecomponent/actioncomponent/actionform/index.jsx b/src/templates/sharecomponent/actioncomponent/actionform/index.jsx index e244c74..0a94c8d 100644 --- a/src/templates/sharecomponent/actioncomponent/actionform/index.jsx +++ b/src/templates/sharecomponent/actioncomponent/actionform/index.jsx @@ -149,18 +149,34 @@ reOptions.intertype = this.state.interTypeOptions if (intertype === 'custom') { - shows.push('procMode', 'interface', 'callbackType', 'cbTable', 'proInterface', 'method', 'cross') + shows.push('procMode', 'interface', 'callbackType', 'proInterface', 'method', 'cross') if (this.record.procMode === 'system') { shows.push('sql', 'sqlType') - } else { + } else if (this.record.procMode === 'inner') { reRequired.innerFunc = true shows.push('innerFunc') + } + if (this.record.callbackType === 'func') { + shows.push('callbackFunc') + } else if (this.record.callbackType !== 'none') { + shows.push('cbTable') } reReadonly.interface = false reRequired.interface = true } else if (intertype === 'outer') { - shows.push('innerFunc', 'sysInterface', 'interface', 'proInterface', 'outerFunc', 'callbackFunc', 'output') - reRequired.innerFunc = false + shows.push('procMode', 'sysInterface', 'interface', 'proInterface', 'outerFunc', 'callbackType', 'output') + // reRequired.innerFunc = false + if (this.record.procMode === 'system') { + shows.push('sql', 'sqlType') + } else if (this.record.procMode === 'inner') { + reRequired.innerFunc = true + shows.push('innerFunc') + } + if (this.record.callbackType === 'func') { + shows.push('callbackFunc') + } else if (this.record.callbackType !== 'none') { + shows.push('cbTable') + } if (this.record.sysInterface === 'false') { reReadonly.interface = false @@ -198,6 +214,7 @@ if (this.record.intertype === 'outer') { shows.push('innerFunc', 'sysInterface', 'interface', 'proInterface', 'outerFunc', 'callbackFunc') reRequired.innerFunc = false + reRequired.callbackFunc = false if (this.record.sysInterface === 'false') { reReadonly.interface = false @@ -260,6 +277,7 @@ if (this.record.intertype === 'outer') { shows.push('innerFunc', 'sysInterface', 'interface', 'proInterface', 'outerFunc', 'callbackFunc') reRequired.innerFunc = false + reRequired.callbackFunc = false if (this.record.sysInterface === 'false') { reReadonly.interface = false @@ -531,7 +549,7 @@ { max: formRule.func.max, message: formRule.func.maxMessage } ) } else if (item.key === 'output') { - if (this.record.intertype === 'system') { + if (this.record.intertype === 'system' || ((this.record.intertype === 'outer' || this.record.intertype === 'custom') && this.record.callbackType === 'script')) { rules = [{ pattern: /^@[0-9a-zA-Z_]+@?$/, message: '鍙橀噺浠绗﹀紑澶达紝鍙娇鐢ㄥ瓧姣嶃�佹暟瀛椾互鍙奯' diff --git a/src/templates/sharecomponent/actioncomponent/actionform/index.scss b/src/templates/sharecomponent/actioncomponent/actionform/index.scss index fab019a..5e09b99 100644 --- a/src/templates/sharecomponent/actioncomponent/actionform/index.scss +++ b/src/templates/sharecomponent/actioncomponent/actionform/index.scss @@ -4,6 +4,11 @@ color: #1890ff; cursor: pointer; } + >.ant-row >.ant-col { + float: none; + display: inline-block; + vertical-align: top; + } .textarea { .ant-col-sm-7 { width: 14%; diff --git a/src/templates/sharecomponent/actioncomponent/index.jsx b/src/templates/sharecomponent/actioncomponent/index.jsx index 9e10a8f..2e82251 100644 --- a/src/templates/sharecomponent/actioncomponent/index.jsx +++ b/src/templates/sharecomponent/actioncomponent/index.jsx @@ -932,7 +932,7 @@ title={dict['model.action'] + '-' + (card && card.copyType === 'action' ? dict['model.copy'] : dict['model.edit'])} wrapClassName="model-table-action-edit-modal" visible={visible} - width={850} + width={920} maskClosable={false} onCancel={this.editModalCancel} footer={[ diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx index 50df4a3..5dc137d 100644 --- a/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx +++ b/src/templates/sharecomponent/actioncomponent/verifyexcelin/index.jsx @@ -161,7 +161,7 @@ ) : ( <div style={{color: '#26C281'}}> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleOutlined style={{marginLeft: '5px'}}/> </div> ) @@ -212,7 +212,7 @@ ) : ( <div style={{color: '#26C281'}}> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleOutlined style={{marginLeft: '5px'}}/> </div> ) diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx index fa8b86d..489a1b5 100644 --- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx +++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx @@ -161,7 +161,7 @@ ) : ( <div style={{color: '#26C281'}}> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleOutlined style={{marginLeft: '5px'}}/> </div> ) diff --git a/src/templates/sharecomponent/settingcomponent/settingform/simplescript/index.jsx b/src/templates/sharecomponent/settingcomponent/settingform/simplescript/index.jsx index 4dad8fb..0f40714 100644 --- a/src/templates/sharecomponent/settingcomponent/settingform/simplescript/index.jsx +++ b/src/templates/sharecomponent/settingcomponent/settingform/simplescript/index.jsx @@ -76,7 +76,7 @@ ) : ( <div style={{color: '#26C281'}}> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleOutlined style={{marginLeft: '5px'}}/> </div> ) diff --git a/src/templates/zshare/customscript/index.jsx b/src/templates/zshare/customscript/index.jsx index f68cca2..524e97a 100644 --- a/src/templates/zshare/customscript/index.jsx +++ b/src/templates/zshare/customscript/index.jsx @@ -64,7 +64,7 @@ ) : ( <div style={{color: '#26C281'}}> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleOutlined style={{marginLeft: '5px'}}/> </div> ) diff --git a/src/templates/zshare/formconfig.jsx b/src/templates/zshare/formconfig.jsx index 3ad7d6b..0e784c6 100644 --- a/src/templates/zshare/formconfig.jsx +++ b/src/templates/zshare/formconfig.jsx @@ -938,6 +938,8 @@ value: 'equaltab', text: '鍒锋柊鍚岀骇鏍囩' }) + } else if (card.execSuccess === 'maingrid') { + card.execSuccess = 'grid' } if (card.OpenType === 'blank') { @@ -945,6 +947,10 @@ } if (!card.control && card.controlField) { card.control = 'disabled' + } + + if (card.intertype === 'outer' && !card.procMode && !card.innerFunc) { // 鍏煎澶栭儴鍑芥暟鐩翠紶绫诲瀷 + card.procMode = 'none' } return [ @@ -955,6 +961,14 @@ initVal: card.OpenType, required: true, options: opentypes + }, + { + type: 'text', + key: 'label', + label: '鎸夐挳鍚嶇О', + initVal: card.label, + required: true, + readonly: false }, { type: 'select', @@ -1018,7 +1032,8 @@ type: 'radio', key: 'procMode', label: '鍙傛暟澶勭悊', - initVal: card.procMode || 'system', + initVal: card.procMode || (card.innerFunc ? 'inner' : 'system'), + tooltip: '褰撹繑鍥炲�煎瓨鍦� mk_ex_invoke 涓斿�间负 false 鏃讹紝涓嶄細璋冪敤澶栭儴鎺ュ彛銆�', required: true, options: [{ value: 'system', @@ -1026,6 +1041,9 @@ }, { value: 'inner', text: '鍐呴儴鍑芥暟' + }, { + value: 'none', + text: '鏃�' }] }, { @@ -1035,14 +1053,6 @@ initVal: card.sqlType || '', required: true, options: [] - }, - { - type: 'text', - key: 'label', - label: '鎸夐挳鍚嶇О', - initVal: card.label, - required: true, - readonly: false }, { type: 'text', @@ -1193,7 +1203,7 @@ type: 'radio', key: 'callbackType', label: '鍥炶皟鏂瑰紡', - initVal: card.callbackType || 'script', + initVal: card.callbackType || (card.callbackFunc ? 'func' : 'script'), tooltip: '浣跨敤鍚庡彴鑴氭湰鎵ц鏃讹紝闇�瑕侀厤鍚堣鍒掍换鍔°��', required: true, options: [{ @@ -1202,6 +1212,12 @@ }, { value: 'default', text: '鍚庡彴鑴氭湰' + }, { + value: 'func', + text: '鍥炶皟鍑芥暟' + }, { + value: 'none', + text: '鏃�' }] }, { @@ -1216,7 +1232,7 @@ key: 'callbackFunc', label: Formdict['header.form.callbackFunc'], initVal: card.callbackFunc || '', - required: false, + required: true, readonly: false }, { @@ -2931,7 +2947,7 @@ type: 'text', key: 'separator', label: '杩炴帴绗�', - initVal: card.separator || card.separator === undefined ? '/' : '', + initVal: card.separator === undefined ? '/' : card.separator, tooltip: '琛ㄥ崟鎻愪氦鏃朵俊鎭箣闂寸殑杩炴帴绗︺�傛敞锛氳繛鎺ョ涓虹┖鏃讹紝鍒濆鍖栨椂濉厖鍏朵粬琛ㄥ崟鏃犳晥銆�', required: false, readonly: false @@ -3267,12 +3283,16 @@ key: 'encryption', label: '鍔犲瘑浼犺緭', initVal: card.type === 'brafteditor' ? (card.encryption || 'true') : (card.encryption || 'false'), + tooltip: '浣跨敤md5鍔犲瘑鏃讹紝鍔犲瘑鍓嶅唴瀹逛細杞负灏忓啓锛屽姞瀵嗗悗鐨刴d5鍊间负32浣嶅ぇ鍐欍��', options: [{ - value: 'true', - text: Formdict['model.true'] - }, { value: 'false', - text: Formdict['model.false'] + text: '鏃�' + }, { + value: 'true', + text: 'base64鍔犲瘑' + }, { + value: 'md5', + text: 'md5鍔犲瘑' }] }, { @@ -3372,13 +3392,16 @@ tooltip: '鏂囦欢鍘嬬缉鎴朾ase64蹇呴』涓哄浘鐗囷紝鍥剧墖鏍煎紡涓簀pg銆乸ng銆乬if 鎴� jpeg銆傛敞锛歜ase64鍙彲涓婁紶涓�寮犲浘鐗囥��', options: [{ value: 'false', - text: '鏃�' + text: '榛樿' }, { value: 'true', text: '鍘嬬缉' }, { value: 'base64', text: 'base64' + }, { + value: 'oss', + text: 'oss涓婁紶' }] }, { @@ -3393,6 +3416,90 @@ required: true }, { + type: 'radio', + key: 'miniSet', + label: '灏忕▼搴忚缃�', + initVal: card.miniSet || 'default', + options: [{ + value: 'default', + text: '榛樿' + }, { + value: 'custom', + text: '鑷畾涔�' + }], + forbid: appType !== 'mob' + }, + { + type: 'checkbox', + key: 'mediaType', + label: '鏂囦欢绫诲瀷', + initVal: card.mediaType || ['image', 'video'], + options: [{ + value: 'image', + text: '鍥剧墖' + }, { + value: 'video', + text: '瑙嗛' + }], + required: true, + forbid: appType !== 'mob' + }, + { + type: 'checkbox', + key: 'sourceType', + label: '鏂囦欢鏉ユ簮', + initVal: card.sourceType || ['album', 'camera'], + options: [{ + value: 'album', + text: '鐩稿唽閫夋嫨' + }, { + value: 'camera', + text: '鐩告満鎷嶆憚' + }], + required: true, + forbid: appType !== 'mob' + }, + { + type: 'radio', + key: 'sizeType', + label: '鍥剧墖鍘嬬缉', + initVal: card.sizeType || 'compressed', + options: [{ + value: 'compressed', + text: '鏄�' + }, { + value: 'original', + text: '鍚�' + }], + forbid: appType !== 'mob' + }, + { + type: 'number', + key: 'maxDuration', + label: '鎷嶆憚鏃堕暱', + initVal: card.maxDuration || 10, + tooltip: '鎷嶆憚瑙嗛鏈�闀挎媿鎽勬椂闂达紝鍗曚綅绉掋�傛椂闂磋寖鍥翠负 3s 鑷� 60s 涔嬮棿銆備笉闄愬埗鐩稿唽銆�', + min: 3, + max: 60, + precision: 0, + required: true, + forbid: appType !== 'mob' + }, + { + type: 'radio', + key: 'camera', + label: '鎽勫儚澶�', + initVal: card.camera || 'back', + options: [{ + value: 'back', + text: '鍚庣疆' + }, { + value: 'front', + text: '鍓嶇疆' + }], + forbid: appType !== 'mob' + }, + { type: 'number', key: 'span', min: 1, diff --git a/src/templates/zshare/modalform/index.jsx b/src/templates/zshare/modalform/index.jsx index da963fa..08bcdb9 100644 --- a/src/templates/zshare/modalform/index.jsx +++ b/src/templates/zshare/modalform/index.jsx @@ -1,7 +1,7 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { fromJS } from 'immutable' -import { Form, Row, Col, Input, Select, Radio, notification, InputNumber, Tooltip } from 'antd' +import { Form, Row, Col, Input, Select, Radio, notification, InputNumber, Tooltip, Checkbox } from 'antd' import { QuestionCircleOutlined } from '@ant-design/icons' import { formRule } from '@/utils/option.js' @@ -19,7 +19,7 @@ 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', 'lenControl'], + text: ['initval', 'readonly', 'required', 'hidden', 'readin', 'fieldlength', 'regular', 'interception', 'span', 'labelwidth', 'encryption', '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', 'declare', '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'], @@ -27,12 +27,12 @@ checkcard: ['initval', 'readonly', 'required', 'hidden', 'readin', 'resourceType', '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', 'declare', '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'], + fileupload: ['readonly', 'required', 'readin', 'fieldlength', 'maxfile', 'fileType', 'span', 'labelwidth', 'tooltip', 'extra', 'compress', 'miniSet', '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', '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', 'enterReplace'], + textarea: ['initval', 'readonly', 'required', 'hidden', 'readin', 'fieldlength', 'span', 'labelwidth', 'maxRows', 'encryption', 'interception', 'tooltip', 'extra', 'count', 'placeholder', 'marginTop', 'marginBottom'], cascader: ['readonly', 'required', 'hidden', 'readin', 'resourceType', 'fieldlength', 'span', 'labelwidth', 'tooltip', 'extra', 'splitline', 'marginTop', 'marginBottom', 'separator'], 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'], @@ -230,8 +230,25 @@ } else if (type === 'fileupload') { if (this.record.compress === 'true') { shows.push('limit', 'rduri', 'proRduri') - } else { + } else if (this.record.compress !== 'base64') { shows.push('suffix') + } + if (this.record.miniSet === 'custom') { + shows.push('mediaType', 'sourceType') + + if (this.record.sourceType.includes('camera') && this.record.mediaType.includes('video')) { + shows.push('maxDuration') + } + if (this.record.mediaType.includes('image')) { + shows.push('sizeType') + } + if (this.record.sourceType.includes('camera')) { + shows.push('camera') + } + } + } else if (type === 'textarea') { + if (this.record.encryption === 'false') { + shows.push('enterReplace') } } @@ -262,6 +279,27 @@ }, { value: '1', text: '鏁版嵁婧�' + }] + } + + if (type === 'brafteditor') { + reOptions.encryption = [{ + value: 'false', + text: '鏃�' + }, { + value: 'true', + text: 'base64鍔犲瘑' + }] + } else { + reOptions.encryption = [{ + value: 'false', + text: '鏃�' + }, { + value: 'true', + text: 'base64鍔犲瘑' + }, { + value: 'md5', + text: 'md5鍔犲瘑' }] } @@ -613,6 +651,15 @@ ) })} </Radio.Group> + } else if (item.type === 'checkbox') { + rules = [ + { required: item.required, message: dict['form.required.select'] + item.label + '!' } + ] + initVal = item.initVal + + content = <Checkbox.Group onChange={(values) => {this.optionChange(item.key, values)}}> + {item.options.map(option => <Checkbox key={option.value} value={option.value}>{option.text}</Checkbox>)} + </Checkbox.Group> } else if (item.type === 'codemirror') { rules = [ { required: item.required, message: dict['form.required.input'] + item.label + '!' } diff --git a/src/templates/zshare/verifycard/customscript/index.jsx b/src/templates/zshare/verifycard/customscript/index.jsx index 9deb26b..2211b58 100644 --- a/src/templates/zshare/verifycard/customscript/index.jsx +++ b/src/templates/zshare/verifycard/customscript/index.jsx @@ -325,7 +325,7 @@ </Col> <Col span={24} className="sql"> <Form.Item label={ - <Tooltip placement="topLeft" title={'鏁版嵁妫�鏌ユ浛鎹㈢ $check@ -> \'\'銆� @check$ -> \'\'锛孍rrorCode绛変簬C鏃� $check@ -> /*銆� @check$ -> */'}> + <Tooltip placement="topLeft" title={'鏁版嵁妫�鏌ユ浛鎹㈢ $check@ -> \'\'銆� @check$ -> \'\'锛孍rrorCode绛変簬C鏃� $check@ -> /*銆� @check$ -> */銆傛敞锛�1銆侀渶浣跨敤绯荤粺鎺ュ彛 2銆佽璁剧疆涓衡�滈�夋嫨澶氳鈥濇椂鏃犳晥銆�'}> <QuestionCircleOutlined className="mk-form-tip" /> sql </Tooltip> diff --git a/src/templates/zshare/verifycard/index.jsx b/src/templates/zshare/verifycard/index.jsx index 0ae5a3a..9b40df1 100644 --- a/src/templates/zshare/verifycard/index.jsx +++ b/src/templates/zshare/verifycard/index.jsx @@ -114,7 +114,7 @@ ) : ( <div style={{color: '#26C281'}}> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleOutlined style={{marginLeft: '5px'}}/> </div> ) @@ -150,7 +150,7 @@ ) : ( <div style={{color: '#26C281'}}> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleOutlined style={{marginLeft: '5px'}}/> </div> ) @@ -224,7 +224,7 @@ ) : ( <div style={{color: '#26C281'}}> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleOutlined style={{marginLeft: '5px'}}/> </div> ) @@ -276,7 +276,7 @@ ) : ( <div style={{color: '#26C281'}}> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleOutlined style={{marginLeft: '5px'}}/> </div> ) @@ -345,7 +345,7 @@ ) : ( <div style={{color: '#26C281'}}> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleOutlined style={{marginLeft: '5px'}}/> </div> ) @@ -412,7 +412,7 @@ ) : ( <div style={{color: '#26C281'}}> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleOutlined style={{marginLeft: '5px'}}/> </div> ) @@ -513,7 +513,7 @@ ) : ( <div style={{color: '#26C281'}}> - {this.props.dict['model.status.open']} + 鍚敤 <CheckCircleOutlined style={{marginLeft: '5px'}}/> </div> ) @@ -594,17 +594,22 @@ item.$index = i + 1 }) - let verifyInter = card.intertype === 'system' || (card.intertype === 'custom' && card.procMode === 'system') ? 'system' : 'inner' + let verifyInter = card.intertype === 'system' || card.procMode === 'system' ? 'system' : 'inner' + let activeKey = verifyInter === 'system' || card.intertype === 'inner' ? 'base' : 'tip' + + if (card.callbackType === 'script') { + activeKey = 'cbScripts' + } this.setState({ - activeKey: verifyInter === 'system' || card.intertype === 'inner' ? 'base' : 'tip', + activeKey: activeKey, verifyInter: verifyInter, setting: config.setting || {}, verify: _verify, oriVerify: fromJS(_verify).toJS() }) - if (config.Template !== 'FormTab' && (card.intertype === 'inner' || card.intertype === 'outer')) { // 鍐呴儴鎴栧閮ㄦ帴鍙� + if (config.Template !== 'FormTab' && card.intertype === 'inner') { return } @@ -1613,7 +1618,7 @@ /> <EditTable actions={['move']} data={verify.scripts} columns={scriptsColumns} onChange={(scripts) => {this.setState({verify: {...verify, scripts}})}}/> </TabPane> : null} - {card.callbackType === 'script' && card.intertype === 'custom' ? <TabPane tab={ + {card.callbackType === 'script' ? <TabPane tab={ <span> 鍥炶皟鑴氭湰 {verify.cbScripts.length ? <span className="count-tip">{verify.cbScripts.length}</span> : null} diff --git a/src/utils/utils-datamanage.js b/src/utils/utils-datamanage.js index a7411ae..0b94159 100644 --- a/src/utils/utils-datamanage.js +++ b/src/utils/utils-datamanage.js @@ -78,7 +78,7 @@ } /** - * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼ sPC_Get_TableData 鐨勫弬鏁� + * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼鐨勫弬鏁� */ static getDefaultQueryParam (setting, arrFields, search, orderBy, pageIndex, pageSize, id, BID) { let param = { @@ -127,7 +127,6 @@ _customScript = _customScript.replace(/\$sum@/ig, '/*') _customScript = _customScript.replace(/@sum\$/ig, '*/') - let time_id = Utils.getguid().substring(0, 32) || '' _dataresource = _dataresource.replace(/@ID@/ig, `''`) _customScript = _customScript.replace(/@ID@/ig, `''`) _dataresource = _dataresource.replace(/@BID@/ig, `'${BID || ''}'`) @@ -140,8 +139,6 @@ _customScript = _customScript.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`) _dataresource = _dataresource.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`) _customScript = _customScript.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`) - _dataresource = _dataresource.replace(/@time_id@/ig, `'${time_id}'`) - _customScript = _customScript.replace(/@time_id@/ig, `'${time_id}'`) let regoptions = null if (setting.queryType === 'statistics' || _customScript) { @@ -270,7 +267,7 @@ } /** - * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼ sPC_Get_TableData 鍚堣鍊肩殑鍙傛暟 + * @description 鑾峰彇绯荤粺瀛樺偍杩囩▼鍚堣鍊肩殑鍙傛暟 */ static getStatQueryDataParams (setting, statFields, search, orderBy, BID) { let param = { @@ -318,7 +315,6 @@ _customScript = _customScript.replace(/\$select@/ig, '/*') _customScript = _customScript.replace(/@select\$/ig, '*/') - let time_id = Utils.getguid().substring(0, 32) || '' _dataresource = _dataresource.replace(/@ID@/ig, `''`) _customScript = _customScript.replace(/@ID@/ig, `''`) _dataresource = _dataresource.replace(/@BID@/ig, `'${BID || ''}'`) @@ -331,8 +327,6 @@ _customScript = _customScript.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`) _dataresource = _dataresource.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`) _customScript = _customScript.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`) - _dataresource = _dataresource.replace(/@time_id@/ig, `'${time_id}'`) - _customScript = _customScript.replace(/@time_id@/ig, `'${time_id}'`) let regoptions = null if (setting.queryType === 'statistics' || _customScript) { @@ -515,7 +509,6 @@ sql = sql.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`) sql = sql.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`) sql = sql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`) - sql = sql.replace(/@time_id@/ig, `'${Utils.getguid().substring(0, 32) || ''}'`) // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞 if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) { @@ -604,7 +597,6 @@ sql = sql.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`) sql = sql.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`) sql = sql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`) - sql = sql.replace(/@time_id@/ig, `'${Utils.getguid().substring(0, 32) || ''}'`) if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) { console.info(sql.replace(/\n\s{8}/ig, '\n')) @@ -616,6 +608,14 @@ param.secretkey = Utils.encrypt('', param.timestamp) param.LText = Utils.formatOptions(param.LText) param.menuname = setting.MenuName || '' + + if (BID) { + param.BID = BID + } + + if (window.GLOB.mkHS) { // 绯荤粺鍑芥暟浜戠楠岃瘉 + param.open_key = Utils.encryptOpenKey(param.secretkey, param.timestamp) + } return param } @@ -783,7 +783,6 @@ let LText_field = [] let diffUser = false let transaction = false - let time_id = Utils.getguid().substring(0, 32) || '' let loginId = `'${sessionStorage.getItem('LoginUID') || ''}'` let sessionId = `'${localStorage.getItem('SessionUid') || ''}'` let userId = `'${sessionStorage.getItem('UserID') || ''}'` @@ -811,8 +810,6 @@ _script = _script.replace(/@UserID@/ig, userId) _sql = _sql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`) _script = _script.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`) - _sql = _sql.replace(/@time_id@/ig, `'${time_id}'`) - _script = _script.replace(/@time_id@/ig, `'${time_id}'`) // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞 if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) { diff --git a/src/utils/utils.js b/src/utils/utils.js index a15f80a..3ceef58 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -2082,21 +2082,12 @@ aaa: select @ErrorCode as ErrorCode,@retmsg as retmsg` } - let time_id = [] - let options = '0123456789abcdefghigklmnopqrstuv' - for (let i = 0; i < 15; i++) { - time_id.push(options.substr(Math.floor(Math.random() * 0x20), 1)) - } - time_id = moment().format('YYYYMMDDHHmmssSSS') + time_id.join('') - time_id = time_id.toUpperCase() - _sql = _sql.replace(/@ID@/ig, `'${primaryId || ''}'`) _sql = _sql.replace(/@BID@/ig, `'${BID || ''}'`) _sql = _sql.replace(/@LoginUID@/ig, `'${sessionStorage.getItem('LoginUID') || ''}'`) _sql = _sql.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`) _sql = _sql.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`) _sql = _sql.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`) - _sql = _sql.replace(/@time_id@/ig, `'${time_id}'`) if (window.GLOB.debugger === true || (window.debugger === true && options.sysType !== 'cloud')) { // _sql = _sql.replace(/\n\s{8}/ig, '\n') diff --git a/src/views/design/header/index.jsx b/src/views/design/header/index.jsx index eac3170..cef0467 100644 --- a/src/views/design/header/index.jsx +++ b/src/views/design/header/index.jsx @@ -2,7 +2,7 @@ import { withRouter } from 'react-router-dom' import {connect} from 'react-redux' import { Dropdown, Menu, Modal, notification, Switch, Button, Popover } from 'antd' -import { MenuFoldOutlined, SettingOutlined, AppstoreOutlined, DownOutlined, HomeOutlined, ApiOutlined, PlusOutlined, SwapOutlined, MenuOutlined } from '@ant-design/icons' +import { MenuFoldOutlined, SettingOutlined, AppstoreOutlined, DownOutlined, HomeOutlined, ApiOutlined, PlusOutlined, EditOutlined, MenuOutlined } from '@ant-design/icons' import asyncComponent from '@/utils/asyncComponent' import { @@ -340,7 +340,7 @@ {!editLevel && window.GLOB.systemType !== 'production' && menulist ? <Popover overlayClassName="mk-popover-control-wrap mk-menu-control" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ <div className="mk-popover-control"> <PlusOutlined onClick={() => this.setState({visible: true, loading: false})}/> - <SwapOutlined onClick={this.enterEdit}/> + <EditOutlined onClick={this.enterEdit}/> <div style={{display: 'inline-block', minWidth: '32px'}}><ThawMenu ParentId="0" Type="10"/></div> </div> } trigger="hover"> diff --git a/src/views/design/index.jsx b/src/views/design/index.jsx index d596e2f..2356a2a 100644 --- a/src/views/design/index.jsx +++ b/src/views/design/index.jsx @@ -22,8 +22,7 @@ if (window.GLOB.systemType !== 'production' && window.GLOB.WXAppID && !sessionStorage.getItem('wxTemplates')) { Api.wxAccessToken().then(res => { let wxtoken = res.oa_access_token || '' - wxtoken = '59_DH0hrAp0B8jtdJvU-7BV_-nG01qh2rUU1L8ihj-2pMWlUFLE2eEtVv4zZYAUIKcxCit4SgOTwxvUGdYHltaha3RmgnZqkQSgkxXRm9hz18kGbGhMc5r11W5Iv9Xr50Pz-Sz7FUVHCM-6GZLXJPIjAIAVBU' - let minitoken = res.mini_access_token || '' + // let minitoken = res.mini_access_token || '' if (wxtoken) { Api.wxNginxRequest(`cgi-bin/template/get_all_private_template?access_token=${wxtoken}`, 'get').then(res => { @@ -37,17 +36,17 @@ } else { sessionStorage.setItem('wxTemplates', JSON.stringify([])) } - if (minitoken) { - Api.wxNginxRequest(`wxaapi/newtmpl/gettemplate?access_token=${minitoken}`, 'get').then(res => { - if (res.errmsg === 'ok' && res.data) { - sessionStorage.setItem('wxMiniTemplates', JSON.stringify(res.data)) - } else { - sessionStorage.setItem('wxMiniTemplates', JSON.stringify([])) - } - }) - } else { - sessionStorage.setItem('wxMiniTemplates', JSON.stringify([])) - } + // if (minitoken) { + // Api.wxNginxRequest(`wxaapi/newtmpl/gettemplate?access_token=${minitoken}`, 'get').then(res => { + // if (res.errmsg === 'ok' && res.data) { + // sessionStorage.setItem('wxMiniTemplates', JSON.stringify(res.data)) + // } else { + // sessionStorage.setItem('wxMiniTemplates', JSON.stringify([])) + // } + // }) + // } else { + // sessionStorage.setItem('wxMiniTemplates', JSON.stringify([])) + // } }) } } diff --git a/src/views/design/index.scss b/src/views/design/index.scss index 1c544d6..037cdcb 100644 --- a/src/views/design/index.scss +++ b/src/views/design/index.scss @@ -25,13 +25,10 @@ .anticon-plus { color: #26C281; } - .anticon-swap { + .anticon-edit { position: relative; z-index: 2; color: #1890ff; - } - .mk-swap { - transform: rotate(90deg); } .mk-swap.disabled { cursor: not-allowed!important; diff --git a/src/views/design/sidemenu/index.jsx b/src/views/design/sidemenu/index.jsx index f46de51..4c68f48 100644 --- a/src/views/design/sidemenu/index.jsx +++ b/src/views/design/sidemenu/index.jsx @@ -2,7 +2,7 @@ import { connect } from 'react-redux' import { is, fromJS } from 'immutable' import { Menu, Popover, Modal, notification } from 'antd' -import { SwapOutlined, PlusOutlined, SettingOutlined } from '@ant-design/icons' +import { EditOutlined, PlusOutlined, SettingOutlined } from '@ant-design/icons' import moment from 'moment' import asyncComponent from '@/utils/asyncComponent' @@ -282,7 +282,7 @@ <Popover overlayClassName="mk-popover-control-wrap mk-menu-control" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ <div className="mk-popover-control"> <PlusOutlined onClick={this.addSecMenu}/> - <SwapOutlined onClick={this.enterSubEdit} className={'mk-swap' + (mainMenu.children.length === 0 ? ' disabled' : '')}/> + <EditOutlined onClick={this.enterSubEdit} className={'mk-swap' + (mainMenu.children.length === 0 ? ' disabled' : '')}/> <div style={{display: 'inline-block', minWidth: '32px'}}><ThawMenu ParentId={mainMenu.MenuID} Type="20"/></div> </div> } trigger="hover" placement="top"> @@ -304,7 +304,7 @@ <Popover overlayClassName="mk-popover-control-wrap mk-menu-control" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={ <div className="mk-popover-control"> <div style={{display: 'inline-block', minWidth: '32px'}}><AddThdMenu mainMenu={mainMenu} supMenu={item} menuTree={this.props.menuTree}/></div> - <SwapOutlined onClick={(e) => {this.enterThrEdit(e, item)}} className="mk-swap"/> + <EditOutlined onClick={(e) => {this.enterThrEdit(e, item)}} className="mk-swap"/> <div style={{display: 'inline-block', minWidth: '32px'}}><ThawMenu ParentId={item.MenuID} Type="30"/></div> </div> } trigger="hover" placement="top"> diff --git a/src/views/imdesign/index.jsx b/src/views/imdesign/index.jsx index d0ee0c7..15ee914 100644 --- a/src/views/imdesign/index.jsx +++ b/src/views/imdesign/index.jsx @@ -485,7 +485,7 @@ <div className="pc-setting-tools"> <Collapse accordion defaultActiveKey="basedata" bordered={false}> {/* 鍩烘湰淇℃伅 */} - <Panel header={dict['mob.basemsg']} forceRender key="basedata"> + <Panel header="鍩烘湰淇℃伅" forceRender key="basedata"> {/* 鑿滃崟淇℃伅 */} {config ? <MenuForm dict={dict} diff --git a/src/views/menudesign/index.jsx b/src/views/menudesign/index.jsx index 0f24503..4d65fa0 100644 --- a/src/views/menudesign/index.jsx +++ b/src/views/menudesign/index.jsx @@ -1,5 +1,6 @@ import React, { Component } from 'react' import { DndProvider } from 'react-dnd' +import { withRouter } from 'react-router' import { is, fromJS } from 'immutable' import moment from 'moment' import HTML5Backend from 'react-dnd-html5-backend' @@ -12,7 +13,7 @@ import Utils, { setGLOBFuncs } from '@/utils/utils.js' import zhCN from '@/locales/zh-CN/mob.js' import enUS from '@/locales/en-US/mob.js' -import antdEnUS from 'antd/es/locale/en_US' +// import antdEnUS from 'antd/es/locale/en_US' import antdZhCN from 'antd/es/locale/zh_CN' import MKEmitter from '@/utils/events.js' import MenuUtils from '@/utils/utils-custom.js' @@ -23,7 +24,7 @@ const { Panel } = Collapse const { confirm } = Modal const { Paragraph } = Typography -const _locale = sessionStorage.getItem('lang') !== 'en-US' ? antdZhCN : antdEnUS +const _locale = antdZhCN const MenuForm = asyncComponent(() => import('./menuform')) const HomeForm = asyncComponent(() => import('./homeform')) @@ -31,10 +32,8 @@ const MenuShell = asyncComponent(() => import('@/menu/menushell')) const PrintMenuForm = asyncComponent(() => import('./printmenuform')) const SourceWrap = asyncComponent(() => import('@/menu/modulesource')) -const PopviewController = asyncComponent(() => import('@/menu/popview')) -const BgController = asyncComponent(() => import('@/menu/bgcontroller')) +const BgController = asyncComponent(() => import('@/pc/bgcontroller')) const PasteController = asyncComponent(() => import('@/menu/pastecontroller')) -const PaddingController = asyncComponent(() => import('@/menu/padcontroller')) const StyleController = asyncComponent(() => import('@/menu/stylecontroller')) const ReplaceField = asyncComponent(() => import('@/menu/replaceField')) const Versions = asyncComponent(() => import('@/menu/versions')) @@ -47,13 +46,8 @@ const TableComponent = asyncComponent(() => import('@/templates/sharecomponent/tablecomponent')) sessionStorage.setItem('isEditState', 'true') -sessionStorage.setItem('editMenuType', 'menu') // 缂栬緫鑿滃崟绫诲瀷 sessionStorage.setItem('appType', '') // 搴旂敤绫诲瀷 document.body.className = '' -window.GLOB.UserComponentMap = new Map() // 缂撳瓨鐢ㄦ埛鑷畾涔夌粍浠� -window.GLOB.TabsMap = new Map() // 缂撳瓨鐢ㄦ埛鎿嶄綔鐨勬爣绛鹃〉 -window.GLOB.urlFields = [] // url鍙橀噺 -window.GLOB.customMenu = null // 淇濆瓨鑿滃崟淇℃伅 class MenuDesign extends Component { state = { @@ -65,13 +59,10 @@ MenuNo: '', delButtons: [], copyButtons: [], - thawButtons: [], activeKey: 'basedata', menuloading: false, oriConfig: null, config: null, - popBtn: null, // 寮圭獥鏍囩椤� - visible: false, customComponents: [], comloading: false, settingshow: true, @@ -80,6 +71,13 @@ } UNSAFE_componentWillMount() { + sessionStorage.setItem('editMenuType', 'menu') // 缂栬緫鑿滃崟绫诲瀷 + + window.GLOB.UserComponentMap = new Map() // 缂撳瓨鐢ㄦ埛鑷畾涔夌粍浠� + window.GLOB.TabsMap = new Map() // 缂撳瓨鐢ㄦ埛鎿嶄綔鐨勬爣绛鹃〉 + window.GLOB.urlFields = [] // url鍙橀噺 + window.GLOB.customMenu = null // 淇濆瓨鑿滃崟淇℃伅 + try { let param = JSON.parse(window.decodeURIComponent(window.atob(this.props.match.params.param))) @@ -108,16 +106,24 @@ componentDidMount () { MKEmitter.addListener('delButtons', this.delButtons) MKEmitter.addListener('modalStatus', this.modalStatus) - MKEmitter.addListener('thawButtons', this.thawButtons) + // MKEmitter.addListener('thawButtons', this.thawButtons) MKEmitter.addListener('copyButtons', this.copyButtons) MKEmitter.addListener('changePopview', this.initPopview) MKEmitter.addListener('triggerMenuSave', this.triggerMenuSave) MKEmitter.addListener('submitComponentStyle', this.updateComponentStyle) MKEmitter.addListener('updateCustomComponent', this.updateCustomComponent) setTimeout(() => { - this.updateCustomComponent() + if (sessionStorage.getItem('app_custom_components')) { + let list = sessionStorage.getItem('app_custom_components') + list = JSON.parse(list) + + this.setCustomComponent(list) + } else { + this.updateCustomComponent() + } this.getAppPictures() this.getPrintTemp() + this.getRoleFields() setGLOBFuncs() }, 1000) @@ -151,9 +157,6 @@ let node = document.getElementById('save-modal-config') if (!node) { - node = document.getElementById('save-pop-config') - } - if (!node) { node = document.getElementById('save-config') } @@ -174,7 +177,7 @@ } MKEmitter.removeListener('delButtons', this.delButtons) MKEmitter.removeListener('modalStatus', this.modalStatus) - MKEmitter.removeListener('thawButtons', this.thawButtons) + // MKEmitter.removeListener('thawButtons', this.thawButtons) MKEmitter.removeListener('copyButtons', this.copyButtons) MKEmitter.removeListener('changePopview', this.initPopview) MKEmitter.removeListener('triggerMenuSave', this.triggerMenuSave) @@ -187,8 +190,6 @@ } triggerMenuSave = () => { - if (this.state.visible) return - this.submitConfig() } @@ -281,36 +282,46 @@ typename: '', typecharone: '' }).then(res => { - let coms = [] - if (res.cus_list && res.cus_list.length > 0) { - res.cus_list.forEach(item => { - let config = '' - - try { - config = JSON.parse(window.decodeURIComponent(window.atob(item.long_param))) - } catch (e) { - console.warn('Parse Failure') - config = '' - } - - if (!config || !item.c_name) return - - window.GLOB.UserComponentMap.set(item.c_id, item.c_name) - coms.push({ - uuid: item.c_id, - type: 'menu', - title: item.c_name, - url: item.images, - component: config.type, - subtype: config.subtype, - width: config.width || 24, - config - }) + if (!res.status) { + notification.warning({ + top: 92, + message: res.message, + duration: 5 }) + } else if (res.cus_list) { + sessionStorage.setItem('app_custom_components', JSON.stringify(res.cus_list)) + this.setCustomComponent(res.cus_list) } - this.setState({customComponents: coms}) - this.getRoleFields() }) + } + + setCustomComponent = (cus_list) => { + let coms = [] + + cus_list.forEach(item => { + let config = '' + + try { + config = JSON.parse(window.decodeURIComponent(window.atob(item.long_param))) + } catch (e) { + console.warn('Parse Failure') + config = '' + } + + if (!config || !item.c_name) return + + window.GLOB.UserComponentMap.set(item.c_id, item.c_name) + coms.push({ + uuid: item.c_id, + type: 'menu', + title: item.c_name, + url: item.images, + component: config.type, + subtype: config.subtype, + config + }) + }) + this.setState({customComponents: coms}) } updateComponentStyle = (parentId, keys, style) => { @@ -343,9 +354,9 @@ this.setState({copyButtons: [...this.state.copyButtons, ...items]}) } - thawButtons = (item) => { - this.setState({thawButtons: [...this.state.thawButtons, item]}) - } + // thawButtons = (item) => { + // this.setState({thawButtons: [...this.state.thawButtons, item]}) + // } initPopview = (card, btn) => { const { oriConfig, config } = this.state @@ -359,20 +370,11 @@ return } - btn.config = fromJS(config).toJS() - btn.component = card + let _btn = fromJS(btn).toJS() + _btn.MenuName = config.MenuName + '-' + card.name + '-' + btn.label + _btn.ParentMenuID = config.uuid - sessionStorage.setItem('editMenuType', 'popview') // 缂栬緫寮圭獥鏍囩 - - this.setState({popBtn: btn, visible: true}) - } - - handleBack = () => { - this.setState({popBtn: null, delButtons: [], copyButtons: []}, () => { - sessionStorage.setItem('editMenuType', 'menu') - window.GLOB.customMenu = this.state.config - this.setState({visible: false}) - }) + this.props.history.push('/popdesign/' + window.btoa(window.encodeURIComponent((JSON.stringify(_btn))))) } closeView = () => { @@ -498,7 +500,6 @@ delButtons.push(btn.uuid) return } - this.checkBtn(btn) buttons.push(`select '${btn.uuid}' as menuid, '${item.name + '-' + btn.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -509,7 +510,6 @@ delButtons.push(cell.uuid) return } - this.checkBtn(cell) buttons.push(`select '${cell.uuid}' as menuid, '${item.name + '-' + cell.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -519,7 +519,6 @@ delButtons.push(cell.uuid) return } - this.checkBtn(cell) buttons.push(`select '${cell.uuid}' as menuid, '${item.name + '-' + cell.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -532,7 +531,6 @@ delButtons.push(cell.uuid) return } - this.checkBtn(cell) buttons.push(`select '${cell.uuid}' as menuid, '${item.name + '-' + cell.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -544,7 +542,6 @@ delButtons.push(cell.uuid) return } - this.checkBtn(cell) buttons.push(`select '${cell.uuid}' as menuid, '${item.name + '-' + cell.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -554,7 +551,6 @@ delButtons.push(btn.uuid) return } - this.checkBtn(btn) buttons.push(`select '${btn.uuid}' as menuid, '${item.name + '-' + btn.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -564,7 +560,6 @@ delButtons.push(btn.uuid) return } - this.checkBtn(btn) buttons.push(`select '${btn.uuid}' as menuid, '${item.name + '-' + btn.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -575,7 +570,6 @@ delButtons.push(btn.uuid) return } - this.checkBtn(btn) buttons.push(`select '${btn.uuid}' as menuid, '${item.name + '-' + btn.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -589,28 +583,8 @@ return buttons } - 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 - btn.verify.scripts.forEach(item => { - if (item.status === 'false') return - - if (/\$check@|@check\$/ig.test(item.sql)) { - hascheck = true - } - }) - if (hascheck) { - notification.warning({ - top: 92, - message: `鍙�夋嫨澶氳鐨勬寜閽��${btn.label}銆嬩腑 $check@ 鎴� @check$ 灏嗕笉浼氱敓鏁堬紒`, - duration: 5 - }) - } - } - } - submitConfig = () => { - const { MenuType, copyButtons, thawButtons } = this.state + const { MenuType, copyButtons } = this.state let config = fromJS(this.state.config).toJS() if (MenuType === 'billPrint' && config.printPage === 'page' && !config.everyPCount) { @@ -752,28 +726,28 @@ } return Api.getSystemConfig(_param) } - }).then(res => { // 鎸夐挳瑙i櫎鍐荤粨 - if (!res) return - if (!res.status) { - notification.warning({ - top: 92, - message: res.message, - duration: 5 - }) - return false - } + // }).then(res => { // 鎸夐挳瑙i櫎鍐荤粨 + // if (!res) return + // if (!res.status) { + // notification.warning({ + // top: 92, + // message: res.message, + // duration: 5 + // }) + // return false + // } - let ids = thawButtons.filter(item => btnIds.indexOf(item) !== -1) - if (ids.length === 0) { - return { - status: true - } - } else { - return Api.getSystemConfig({ - func: 'sPC_MainMenu_ReDel', - MenuID: ids.join(',') - }) - } + // let ids = thawButtons.filter(item => btnIds.indexOf(item) !== -1) + // if (ids.length === 0) { + // return { + // status: true + // } + // } else { + // return Api.getSystemConfig({ + // func: 'sPC_MainMenu_ReDel', + // MenuID: ids.join(',') + // }) + // } }).then(res => { // 椤甸潰淇濆瓨 if (!res) return @@ -917,7 +891,6 @@ this.setState({ delButtons: [], copyButtons: [], - thawButtons: [], menuloading: false }) notification.success({ @@ -936,6 +909,7 @@ } getRoleFields = () => { + if (sessionStorage.getItem('sysRoles') || sessionStorage.getItem('permFuncField')) return Api.getSystemConfig({func: 'sPC_Get_Roles_sModular'}).then(res => { if (res.status) { let _permFuncField = [] @@ -1095,13 +1069,13 @@ } render () { - const { activeKey, comloading, MenuType, popBtn, visible, dict, MenuId, config, settingshow, ParentId, menuloading, customComponents, eyeopen } = this.state + const { activeKey, comloading, MenuType, dict, MenuId, config, settingshow, ParentId, menuloading, customComponents, eyeopen } = this.state return ( <ConfigProvider locale={_locale}> <div className={'pc-menu-view ' + (MenuType || '')} id="mk-menu-design-view"> <Header /> - {!popBtn && !visible ? <DndProvider backend={HTML5Backend}> + <DndProvider backend={HTML5Backend}> <div className="menu-body"> <div className={'menu-setting ' + (!settingshow ? 'hidden' : '')}> <div className="draw"> @@ -1109,7 +1083,7 @@ </div> <Collapse accordion activeKey={activeKey} bordered={false} onChange={(key) => this.setState({activeKey: key})}> {/* 鍩烘湰淇℃伅 */} - <Panel header={dict['mob.basemsg']} key="basedata"> + <Panel header="鍩烘湰淇℃伅" key="basedata"> {/* 鑿滃崟淇℃伅 */} {config && MenuType === 'custom' ? <MenuForm dict={dict} @@ -1139,17 +1113,14 @@ {config ? <Paragraph style={{padding: '15px 0px 0px 18px'}} copyable={{ text: MenuId }}>鑿滃崟ID</Paragraph> : null} </Panel> {/* 缁勪欢娣诲姞 */} - <Panel header={dict['mob.component']} key="component"> + <Panel header="缁勪欢" key="component"> <SourceWrap MenuType={MenuType} /> </Panel> {customComponents && customComponents.length ? <Panel header="鑷畾涔夌粍浠�" key="cuscomponent"> <SourceWrap components={customComponents} MenuType={MenuType} /> </Panel> : null} - <Panel header={'椤甸潰鑳屾櫙'} key="background"> + <Panel header="椤甸潰鏍峰紡" key="background"> {config ? <BgController config={config} updateConfig={this.updateConfig} /> : null} - </Panel> - <Panel header={'椤甸潰鍐呰竟璺�'} key="padding"> - {config ? <PaddingController config={config} updateConfig={this.updateConfig} /> : null} </Panel> </Collapse> </div> @@ -1174,8 +1145,7 @@ </Card> </div> </div> - </DndProvider> : null} - {popBtn && visible ? <PopviewController btn={popBtn} handleBack={this.handleBack}/> : null} + </DndProvider> <StyleController /> <StyleCombController /> <ModalController /> @@ -1185,4 +1155,4 @@ } } -export default MenuDesign \ No newline at end of file +export default withRouter(MenuDesign) \ No newline at end of file diff --git a/src/views/mobdesign/index.jsx b/src/views/mobdesign/index.jsx index f22b547..5b6484a 100644 --- a/src/views/mobdesign/index.jsx +++ b/src/views/mobdesign/index.jsx @@ -161,9 +161,17 @@ MKEmitter.addListener('submitComponentStyle', this.updateComponentStyle) MKEmitter.addListener('updateCustomComponent', this.updateCustomComponent) setTimeout(() => { - this.updateCustomComponent() + if (sessionStorage.getItem('app_custom_components')) { + let list = sessionStorage.getItem('app_custom_components') + list = JSON.parse(list) + + this.setCustomComponent(list) + } else { + this.updateCustomComponent() + } this.getAppPictures() this.getSmStemp() + this.getRoleFields() setGLOBFuncs() }, 1000) @@ -413,36 +421,46 @@ typename: sessionStorage.getItem('typename'), typecharone: '' }).then(res => { - let coms = [] - if (res.cus_list && res.cus_list.length > 0) { - res.cus_list.forEach(item => { - let config = '' - - try { - config = JSON.parse(window.decodeURIComponent(window.atob(item.long_param))) - } catch (e) { - console.warn('Parse Failure') - config = '' - } - - if (!config || !item.c_name) return - - window.GLOB.UserComponentMap.set(item.c_id, item.c_name) - coms.push({ - uuid: item.c_id, - type: 'menu', - title: item.c_name, - url: item.images, - component: config.type, - subtype: config.subtype, - width: config.width || 24, - config - }) + if (!res.status) { + notification.warning({ + top: 92, + message: res.message, + duration: 5 }) + } else if (res.cus_list) { + sessionStorage.setItem('app_custom_components', JSON.stringify(res.cus_list)) + this.setCustomComponent(res.cus_list) } - this.setState({customComponents: coms}) - this.getRoleFields() }) + } + + setCustomComponent = (cus_list) => { + let coms = [] + + cus_list.forEach(item => { + let config = '' + + try { + config = JSON.parse(window.decodeURIComponent(window.atob(item.long_param))) + } catch (e) { + console.warn('Parse Failure') + config = '' + } + + if (!config || !item.c_name) return + + window.GLOB.UserComponentMap.set(item.c_id, item.c_name) + coms.push({ + uuid: item.c_id, + type: 'menu', + title: item.c_name, + url: item.images, + component: config.type, + subtype: config.subtype, + config + }) + }) + this.setState({customComponents: coms}) } updateComponentStyle = (parentId, keys, style) => { @@ -551,7 +569,8 @@ Template: 'webPage', enabled: false, MenuName: urlParam.MenuName || '', - MenuNo: urlParam.MenuNo || '', + // MenuNo: urlParam.MenuNo || '', + MenuNo: '', tables: [], components: [], viewType: 'menu', @@ -801,7 +820,8 @@ config.MenuID = MenuId config.open_edition = '' config.MenuName = urlParam.MenuName || '' - config.MenuNo = urlParam.MenuNo || '' + // config.MenuNo = urlParam.MenuNo || '' + config.MenuNo = '' let indeComs = [] config.components.forEach(item => { @@ -957,7 +977,6 @@ item.action && item.action.forEach(btn => { if (btn.hidden === 'true') return - this.checkBtn(btn) m.children.push({ key: btn.uuid, title: btn.label, @@ -968,7 +987,6 @@ if (cell.eleType !== 'button') return if (cell.hidden === 'true') return - this.checkBtn(cell) m.children.push({ key: cell.uuid, title: cell.label, @@ -981,7 +999,6 @@ if (cell.eleType !== 'button') return if (cell.hidden === 'true') return - this.checkBtn(cell) m.children.push({ key: cell.uuid, title: cell.label, @@ -993,7 +1010,6 @@ if (cell.eleType !== 'button') return if (cell.hidden === 'true') return - this.checkBtn(cell) m.children.push({ key: cell.uuid, title: cell.label, @@ -1023,7 +1039,6 @@ item.action && item.action.forEach(btn => { if (btn.hidden === 'true') return - this.checkBtn(btn) m.children.push({ key: btn.uuid, title: btn.label, @@ -1034,7 +1049,6 @@ col.elements.forEach(btn => { if (btn.hidden === 'true') return - this.checkBtn(btn) m.children.push({ key: btn.uuid, title: btn.label, @@ -1090,7 +1104,8 @@ menus.push({ MenuID: m.uuid, MenuName: m.setting.name, - MenuNo: m.setting.MenuNo + // MenuNo: m.setting.MenuNo + MenuNo: '' }) } } else if (m.setting.type === 'linkmenu' && menuObj[m.setting.linkMenuId]) { @@ -1194,26 +1209,6 @@ }) 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 - btn.verify.scripts.forEach(item => { - if (item.status === 'false') return - - if (/\$check@|@check\$/ig.test(item.sql)) { - hascheck = true - } - }) - if (hascheck) { - notification.warning({ - top: 92, - message: `鍙�夋嫨澶氳鐨勬寜閽��${btn.label}銆嬩腑 $check@ 鎴� @check$ 灏嗕笉浼氱敓鏁堬紒`, - duration: 5 - }) - } - } } getMiniStyle = (config) => { @@ -1625,16 +1620,16 @@ let searchSum = 0 let swipes = [] - let check = (components) => { + let check = (components, level, sign) => { components.forEach(item => { if (error) return if (item.type === 'tabs') { item.subtabs.forEach(tab => { - check(tab.components) + check(tab.components, level + 1, tab.uuid) }) return } else if (item.type === 'group') { - check(item.components) + check(item.components, level, sign) return } else if (item.type === 'navbar' && !item.wrap.MenuNo) { error = `瀵艰埅鏍忋��${item.name}銆嬫湭璁剧疆鑿滃崟鍙傛暟锛乣 @@ -1649,7 +1644,8 @@ } } if (item.wrap && item.wrap.pagestyle === 'slide' && item.pageable && item.setting.laypage !== 'false') { - swipes.push(item.name) + // swipes.push(item.name) + swipes.push({level, name: item.name, sign}) } item.errors && item.errors.forEach(err => { @@ -1659,7 +1655,7 @@ }) } - check(config.components) + check(config.components, 1, 'view') // if (!error && viewType === 'userbind' && config.components.filter(item => item.type === 'login').length === 0) { // error = '鐢ㄦ埛缁戝畾椤甸潰蹇呴』娣诲姞鐧诲綍銆�' @@ -1667,8 +1663,27 @@ if (!error && searchSum > 1) { error = '鎼滅储缁勪欢涓庡鑸爮鐨勬悳绱㈠姛鑳戒笉鍙悓鏃朵娇鐢ㄣ��' - } else if (!error && swipes.length > 1) { - error = `椤甸潰涓笉鍙悓鏃朵娇鐢ㄥ涓粦鍔ㄥ姞杞界粍浠躲�傦紙${swipes.join('銆�')}锛塦 + } else if (!error && swipes.length > 0) { + swipes.forEach(cell => { + if (!error && cell.level > 2) { + error = `涓嶅彲鍦ㄥ灞傛爣绛鹃〉涓娇鐢ㄦ粦鍔ㄥ姞杞界粍浠躲�傦紙${cell.name}锛塦 + } + }) + if (!error) { + let levels = swipes.map(s => s.level) + levels = Array.from(new Set(levels)) + if (levels.length > 1) { + error = `涓嶅彲鍦ㄩ〉闈笌鏍囩椤典腑鍚屾椂浣跨敤婊戝姩鍔犺浇缁勪欢銆傦紙${swipes.map(s => s.name).join('銆�')}锛塦 + } + } + + if (!error) { + let signs = swipes.map(s => s.sign) + signs = Array.from(new Set(signs)) + if (signs.length !== swipes.length) { + error = `椤甸潰涓紙鎴栧悓涓�鏍囩椤典腑锛変笉鍙悓鏃朵娇鐢ㄥ涓粦鍔ㄥ姞杞界粍浠躲�傦紙${swipes.map(s => s.name).join('銆�')}锛塦 + } + } } if (show && error) { @@ -1921,7 +1936,7 @@ <div className="pc-setting-tools"> <Collapse accordion activeKey={activeKey} bordered={false} onChange={(key) => this.setState({activeKey: key})}> {/* 鍩烘湰淇℃伅 */} - <Panel header={dict['mob.basemsg']} forceRender className="basedata" key="basedata"> + <Panel header="鍩烘湰淇℃伅" forceRender className="basedata" key="basedata"> {/* 鑿滃崟淇℃伅 */} {config ? <MenuForm dict={dict} diff --git a/src/views/pcdesign/index.jsx b/src/views/pcdesign/index.jsx index b26500d..c0f43de 100644 --- a/src/views/pcdesign/index.jsx +++ b/src/views/pcdesign/index.jsx @@ -25,7 +25,6 @@ const MenuForm = asyncComponent(() => import('./menuform')) const Transfer = asyncComponent(() => import('@/pc/transfer')) -const PopviewController = asyncComponent(() => import('@/menu/popview')) const Versions = asyncComponent(() => import('@/menu/versions')) const MenuShell = asyncComponent(() => import('@/pc/menushell')) const ViewNodes = asyncComponent(() => import('@/menu/viewnodes')) @@ -45,15 +44,10 @@ const TableComponent = asyncComponent(() => import('@/templates/sharecomponent/tablecomponent')) sessionStorage.setItem('isEditState', 'true') -sessionStorage.setItem('editMenuType', 'menu') // 缂栬緫鑿滃崟绫诲瀷 + sessionStorage.setItem('appType', 'pc') // 搴旂敤绫诲瀷 sessionStorage.setItem('typename', 'pc') document.body.className = '' -window.GLOB.UserComponentMap = new Map() // 缂撳瓨鐢ㄦ埛鑷畾涔夌粍浠� -window.GLOB.TabsMap = new Map() // 缂撳瓨鐢ㄦ埛鎿嶄綔鐨勬爣绛鹃〉 -window.GLOB.CacheIndependent = new Map() -window.GLOB.urlFields = [] // url鍙橀噺 -window.GLOB.customMenu = null // 淇濆瓨鑿滃崟淇℃伅 const memberLevel = Utils.getMemberLevel() @@ -67,13 +61,10 @@ MenuNo: '', delButtons: [], copyButtons: [], - thawButtons: [], activeKey: 'basedata', menuloading: false, oriConfig: null, config: null, - popBtn: null, // 寮圭獥鏍囩椤� - visible: false, customComponents: [], settingshow: sessionStorage.getItem('settingshow') !== 'false', controlshow: sessionStorage.getItem('controlshow') !== 'false', @@ -84,6 +75,15 @@ UNSAFE_componentWillMount() { if (memberLevel < 30) return + + sessionStorage.setItem('editMenuType', 'menu') // 缂栬緫鑿滃崟绫诲瀷 + + window.GLOB.UserComponentMap = new Map() // 缂撳瓨鐢ㄦ埛鑷畾涔夌粍浠� + window.GLOB.TabsMap = new Map() // 缂撳瓨鐢ㄦ埛鎿嶄綔鐨勬爣绛鹃〉 + window.GLOB.CacheIndependent = new Map() + window.GLOB.urlFields = [] // url鍙橀噺 + window.GLOB.customMenu = null // 淇濆瓨鑿滃崟淇℃伅 + try { let param = JSON.parse(window.decodeURIComponent(window.atob(this.props.match.params.param))) @@ -133,7 +133,6 @@ } MKEmitter.addListener('delButtons', this.delButtons) MKEmitter.addListener('modalStatus', this.modalStatus) - MKEmitter.addListener('thawButtons', this.thawButtons) MKEmitter.addListener('copyButtons', this.copyButtons) MKEmitter.addListener('changePopview', this.initPopview) MKEmitter.addListener('changeEditMenu', this.changeEditMenu) @@ -141,9 +140,17 @@ MKEmitter.addListener('submitComponentStyle', this.updateComponentStyle) MKEmitter.addListener('updateCustomComponent', this.updateCustomComponent) setTimeout(() => { - this.updateCustomComponent() + if (sessionStorage.getItem('app_custom_components')) { + let list = sessionStorage.getItem('app_custom_components') + list = JSON.parse(list) + + this.setCustomComponent(list) + } else { + this.updateCustomComponent() + } this.getAppPictures() this.getSmStemp() + this.getRoleFields() setGLOBFuncs() }, 1000) @@ -200,7 +207,6 @@ } MKEmitter.removeListener('delButtons', this.delButtons) MKEmitter.removeListener('modalStatus', this.modalStatus) - MKEmitter.removeListener('thawButtons', this.thawButtons) MKEmitter.removeListener('copyButtons', this.copyButtons) MKEmitter.removeListener('changePopview', this.initPopview) MKEmitter.removeListener('changeEditMenu', this.changeEditMenu) @@ -214,8 +220,6 @@ } triggerMenuSave = () => { - if (this.state.visible) return - this.submitConfig() } @@ -238,7 +242,7 @@ type: 'view' } - param.MenuNo = menu.MenuNo || '' + // param.MenuNo = menu.MenuNo || '' param.MenuName = menu.MenuName || '' param = window.btoa(window.encodeURIComponent(JSON.stringify(param))) @@ -461,50 +465,46 @@ typename: 'pc', typecharone: '' }).then(res => { - let coms = [] if (!res.status) { notification.warning({ top: 92, message: res.message, duration: 5 }) - } else if (res.cus_list && res.cus_list.length > 0) { - res.cus_list.forEach(item => { - let config = '' - - try { - config = JSON.parse(window.decodeURIComponent(window.atob(item.long_param))) - } catch (e) { - console.warn('Parse Failure') - config = '' - } - - if (!config || !item.c_name) return - - window.GLOB.UserComponentMap.set(item.c_id, item.c_name) - coms.push({ - uuid: item.c_id, - type: 'menu', - title: item.c_name, - url: item.images, - component: config.type, - subtype: config.subtype, - width: config.width || 24, - config - }) - }) + } else if (res.cus_list) { + sessionStorage.setItem('app_custom_components', JSON.stringify(res.cus_list)) + this.setCustomComponent(res.cus_list) } - this.setState({customComponents: coms}) - this.getRoleFields() }) } - handleBack = () => { - this.setState({popBtn: null, delButtons: [], copyButtons: [], thawButtons: []}, () => { - sessionStorage.setItem('editMenuType', 'menu') - window.GLOB.customMenu = this.state.config - this.setState({visible: false}) + setCustomComponent = (cus_list) => { + let coms = [] + + cus_list.forEach(item => { + let config = '' + + try { + config = JSON.parse(window.decodeURIComponent(window.atob(item.long_param))) + } catch (e) { + console.warn('Parse Failure') + config = '' + } + + if (!config || !item.c_name) return + + window.GLOB.UserComponentMap.set(item.c_id, item.c_name) + coms.push({ + uuid: item.c_id, + type: 'menu', + title: item.c_name, + url: item.images, + component: config.type, + subtype: config.subtype, + config + }) }) + this.setState({customComponents: coms}) } updateComponentStyle = (parentId, keys, style) => { @@ -536,10 +536,6 @@ copyButtons = (items) => { this.setState({copyButtons: [...this.state.copyButtons, ...items]}) } - - thawButtons = (item) => { - this.setState({thawButtons: [...this.state.thawButtons, item]}) - } initPopview = (card, btn) => { const { oriConfig, config } = this.state @@ -553,12 +549,11 @@ return } - btn.config = fromJS(config).toJS() - btn.component = card + let _btn = fromJS(btn).toJS() + _btn.MenuName = config.MenuName + '-' + card.name + '-' + btn.label + _btn.ParentMenuID = config.uuid - sessionStorage.setItem('editMenuType', 'popview') // 缂栬緫寮圭獥鏍囩 - - this.setState({popBtn: btn, visible: true}) + this.props.history.push('/popdesign/' + window.btoa(window.encodeURIComponent((JSON.stringify(_btn))))) } closeView = () => { @@ -640,7 +635,7 @@ Template: 'webPage', enabled: false, MenuName: urlParam.MenuName || '', - MenuNo: urlParam.MenuNo || '', + MenuNo: '', tables: [], components: [], viewType: 'menu', @@ -777,7 +772,7 @@ config.MenuID = MenuId config.open_edition = '' config.MenuName = urlParam.MenuName || '' - config.MenuNo = urlParam.MenuNo || '' + config.MenuNo = '' let indeComs = [] config.components.forEach(item => { @@ -933,7 +928,6 @@ item.action && item.action.forEach(btn => { if (btn.hidden === 'true') return - this.checkBtn(btn) m.children.push({ key: btn.uuid, title: btn.label, @@ -947,7 +941,6 @@ if (cell.eleType !== 'button') return if (cell.hidden === 'true') return - this.checkBtn(cell) m.children.push({ key: cell.uuid, title: cell.label, @@ -960,7 +953,6 @@ if (cell.eleType !== 'button') return if (cell.hidden === 'true') return - this.checkBtn(cell) m.children.push({ key: cell.uuid, title: cell.label, @@ -976,7 +968,6 @@ if (cell.eleType !== 'button') return if (cell.hidden === 'true') return - this.checkBtn(cell) m.children.push({ key: cell.uuid, title: cell.label, @@ -991,7 +982,6 @@ if (cell.eleType !== 'button') return if (cell.hidden === 'true') return - this.checkBtn(cell) m.children.push({ key: cell.uuid, title: cell.label, @@ -1024,7 +1014,6 @@ item.action && item.action.forEach(btn => { if (btn.hidden === 'true') return - this.checkBtn(btn) m.children.push({ key: btn.uuid, title: btn.label, @@ -1038,7 +1027,6 @@ col.elements.forEach(btn => { if (btn.hidden === 'true') return - this.checkBtn(btn) m.children.push({ key: btn.uuid, title: btn.label, @@ -1071,26 +1059,6 @@ } return nodes - } - - 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 - btn.verify.scripts.forEach(item => { - if (item.status === 'false') return - - if (/\$check@|@check\$/ig.test(item.sql)) { - hascheck = true - } - }) - if (hascheck) { - notification.warning({ - top: 92, - message: `鍙�夋嫨澶氳鐨勬寜閽��${btn.label}銆嬩腑 $check@ 鎴� @check$ 灏嗕笉浼氱敓鏁堬紒`, - duration: 5 - }) - } - } } getSubMenus = () => { @@ -1209,7 +1177,7 @@ } submitConfig = () => { - const { delButtons, copyButtons, thawButtons } = this.state + const { delButtons, copyButtons } = this.state let config = fromJS(this.state.config).toJS() if (!config.MenuName || !config.MenuNo || (config.cacheUseful === 'true' && !config.cacheTime)) { @@ -1445,27 +1413,6 @@ } return Api.getSystemConfig(_param) } - }).then(res => { // 鎸夐挳瑙i櫎鍐荤粨 - if (!res) return - if (!res.status) { - notification.warning({ - top: 92, - message: res.message, - duration: 5 - }) - return false - } else if (!res.nonexec) { // 鎵ц鍒犻櫎鍚庡埛鏂拌彍鍗曞垪琛� - this.getAppMenus() - } - - if (thawButtons.length === 0) { - return { status: true } - } else { - return Api.getSystemConfig({ - func: 'sPC_MainMenu_ReDel', - MenuID: thawButtons.join(',') - }) - } }).then(res => { // 椤甸潰淇濆瓨 if (!res) return @@ -1604,7 +1551,6 @@ this.setState({ delButtons: [], copyButtons: [], - thawButtons: [], menuloading: false }) notification.success({ @@ -1883,13 +1829,13 @@ } render () { - const { localedict, loading, visible, popBtn, comloading, activeKey, settingshow, controlshow, dict, MenuId, config, menuloading, customComponents, eyeopen } = this.state + const { localedict, loading, comloading, activeKey, settingshow, controlshow, dict, MenuId, config, menuloading, customComponents, eyeopen } = this.state return ( <ConfigProvider locale={localedict}> <div className={'mk-pc-view '} id="mk-pc-design-view"> {loading ? <Spin className="view-spin" size="large" /> : null} - {!popBtn && !visible ? <DndProvider backend={HTML5Backend}> + <DndProvider backend={HTML5Backend}> <div className={'menu-setting ' + (!settingshow ? 'hidden' : '')}> <div className="draw"> {settingshow ? <DoubleLeftOutlined onClick={() => {sessionStorage.setItem('settingshow', 'false'); this.setState({settingshow: false})}}/> : null} @@ -1898,7 +1844,7 @@ <div className="pc-setting-tools"> <Collapse accordion activeKey={activeKey} bordered={false} onChange={(key) => this.setState({activeKey: key})}> {/* 鍩烘湰淇℃伅 */} - <Panel header={dict['mob.basemsg']} key="basedata"> + <Panel header="鍩烘湰淇℃伅" key="basedata"> {/* 鑿滃崟淇℃伅 */} {config ? <MenuForm dict={dict} @@ -1953,8 +1899,7 @@ <div className={'menu-body menu-view' + (menuloading ? ' saving' : '') + (eyeopen ? ' eye-open' : '')}> {config && !comloading ? <MenuShell menu={config} handleList={this.updateConfig} /> : null} </div> - </DndProvider> : null} - {popBtn && visible ? <PopviewController btn={popBtn} handleBack={this.handleBack}/> : null} + </DndProvider> <StyleController /> <StyleCombController /> <ModalController /> diff --git a/src/menu/popview/index.jsx b/src/views/popdesign/index.jsx similarity index 69% rename from src/menu/popview/index.jsx rename to src/views/popdesign/index.jsx index 8b4293f..e95fc0f 100644 --- a/src/menu/popview/index.jsx +++ b/src/views/popdesign/index.jsx @@ -1,21 +1,21 @@ import React, { Component } from 'react' -import PropTypes from 'prop-types' import { DndProvider } from 'react-dnd' import { is, fromJS } from 'immutable' import moment from 'moment' import HTML5Backend from 'react-dnd-html5-backend' -import { notification, Modal, Collapse, Card, Switch, Button } from 'antd' +import { ConfigProvider, notification, Modal, Collapse, Card, Switch, Button } from 'antd' import { EyeOutlined, EyeInvisibleOutlined } from '@ant-design/icons' import Api from '@/api' -import Utils from '@/utils/utils.js' -import zhCN from '@/locales/zh-CN/mob.js' -import enUS from '@/locales/en-US/mob.js' +import Utils, { setGLOBFuncs } from '@/utils/utils.js' import MKEmitter from '@/utils/events.js' import asyncComponent from '@/utils/asyncComponent' +// import antdEnUS from 'antd/es/locale/en_US' +import antdZhCN from 'antd/es/locale/zh_CN' import './index.scss' +const _locale = antdZhCN const { Panel } = Collapse const { confirm } = Modal @@ -25,22 +25,22 @@ const SourceWrap = asyncComponent(() => import('@/menu/modulesource')) const MenuShell = asyncComponent(() => import('@/menu/menushell')) const ReplaceField = asyncComponent(() => import('@/menu/replaceField')) -const BgController = asyncComponent(() => import('@/menu/bgcontroller')) +const BgController = asyncComponent(() => import('@/pc/bgcontroller')) const PasteController = asyncComponent(() => import('@/menu/pastecontroller')) -const PaddingController = asyncComponent(() => import('@/menu/padcontroller')) const StyleCombControlButton = asyncComponent(() => import('@/menu/stylecombcontrolbutton')) const TableComponent = asyncComponent(() => import('@/templates/sharecomponent/tablecomponent')) +const StyleController = asyncComponent(() => import('@/menu/stylecontroller')) +const ModalController = asyncComponent(() => import('@/menu/modalconfig/controller')) +const StyleCombController = asyncComponent(() => import('@/menu/stylecombcontroller')) + sessionStorage.setItem('isEditState', 'true') -class MenuDesign extends Component { - static propTpyes = { - btn: PropTypes.object, - handleBack: PropTypes.func - } +document.body.className = '' +class PopViewDesign extends Component { state = { - dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS, + btn: null, MenuId: '', delButtons: [], activeKey: 'basedata', @@ -53,13 +53,29 @@ } UNSAFE_componentWillMount() { - const { btn } = this.props + sessionStorage.setItem('editMenuType', 'popview') - this.setState({ - MenuId: btn.uuid, - }, () => { - this.getMenuParam() - }) + window.GLOB.UserComponentMap = new Map() // 缂撳瓨鐢ㄦ埛鑷畾涔夌粍浠� + window.GLOB.TabsMap = new Map() // 缂撳瓨鐢ㄦ埛鎿嶄綔鐨勬爣绛鹃〉 + window.GLOB.urlFields = [] // url鍙橀噺 + window.GLOB.customMenu = null // 淇濆瓨鑿滃崟淇℃伅 + + try { + let param = JSON.parse(window.decodeURIComponent(window.atob(this.props.match.params.param))) + + this.setState({ + btn: param, + MenuId: param.uuid, + }, () => { + this.getMenuParam() + }) + } catch (e) { + notification.warning({ + top: 92, + message: '鑿滃崟淇℃伅瑙f瀽閿欒锛�', + duration: 5 + }) + } } componentDidMount () { @@ -67,7 +83,57 @@ MKEmitter.addListener('triggerMenuSave', this.submitConfig) MKEmitter.addListener('submitComponentStyle', this.updateComponentStyle) MKEmitter.addListener('updateCustomComponent', this.updateCustomComponent) - this.updateCustomComponent() + setTimeout(() => { + if (sessionStorage.getItem('app_custom_components')) { + let list = sessionStorage.getItem('app_custom_components') + list = JSON.parse(list) + + this.setCustomComponent(list) + } else { + this.updateCustomComponent() + } + setGLOBFuncs() + }, 1000) + + document.onkeydown = (event) => { + let e = event || window.event + let keyCode = e.keyCode || e.which || e.charCode + let preKey = '' + + if (e.ctrlKey) { + preKey = 'ctrl' + } + if (e.shiftKey) { + preKey = 'shift' + } else if (e.altKey) { + preKey = 'alt' + } + + if (!preKey || !keyCode) return + + let _shortcut = `${preKey}+${keyCode}` + + if (_shortcut === 'ctrl+83') { + if (this.state.modalStatus) { + notification.warning({ + top: 92, + message: '璇蜂繚瀛�' + this.state.modalStatus, + duration: 5 + }) + return false + } + + let node = document.getElementById('save-modal-config') + if (!node) { + node = document.getElementById('save-pop-config') + } + + if (node) { + node.click() + } + return false + } + } } shouldComponentUpdate (nextProps, nextState) { @@ -93,34 +159,46 @@ typename: sessionStorage.getItem('appType'), typecharone: '' }).then(res => { - let coms = [] - if (res.cus_list && res.cus_list.length > 0) { - res.cus_list.forEach(item => { - let config = '' - - try { - config = JSON.parse(window.decodeURIComponent(window.atob(item.long_param))) - } catch (e) { - console.warn('Parse Failure') - config = '' - } - - if (!config || !item.c_name) return - - window.GLOB.UserComponentMap.set(item.c_id, item.c_name) - coms.push({ - uuid: item.c_id, - type: 'menu', - title: item.c_name, - url: item.images, - component: config.type, - subtype: config.subtype, - config - }) + if (!res.status) { + notification.warning({ + top: 92, + message: res.message, + duration: 5 }) + } else if (res.cus_list) { + sessionStorage.setItem('app_custom_components', JSON.stringify(res.cus_list)) + this.setCustomComponent(res.cus_list) } - this.setState({customComponents: coms}) }) + } + + setCustomComponent = (cus_list) => { + let coms = [] + + cus_list.forEach(item => { + let config = '' + + try { + config = JSON.parse(window.decodeURIComponent(window.atob(item.long_param))) + } catch (e) { + console.warn('Parse Failure') + config = '' + } + + if (!config || !item.c_name) return + + window.GLOB.UserComponentMap.set(item.c_id, item.c_name) + coms.push({ + uuid: item.c_id, + type: 'menu', + title: item.c_name, + url: item.images, + component: config.type, + subtype: config.subtype, + config + }) + }) + this.setState({customComponents: coms}) } updateComponentStyle = (parentId, keys, style) => { @@ -153,29 +231,26 @@ const { oriConfig, config } = this.state if (!config) { - this.props.handleBack() + window.history.back() return } - - const _this = this if (!is(fromJS(oriConfig), fromJS(config))) { confirm({ title: '閰嶇疆宸蹭慨鏀癸紝鏀惧純淇濆瓨鍚楋紵', content: '', onOk() { - _this.props.handleBack() + window.history.back() }, onCancel() {} }) } else { - this.props.handleBack() + window.history.back() } } getMenuParam = () => { - const { btn } = this.props - const { MenuId } = this.state + const { MenuId, btn } = this.state let param = { func: 'sPC_Get_LongParam', @@ -205,7 +280,7 @@ MenuID: MenuId, Template: 'CustomPage', enabled: false, - MenuName: btn.config.MenuName + '-' + btn.label, + MenuName: btn.MenuName, MenuNo: '', tables: [], components: [], @@ -258,7 +333,6 @@ delButtons.push(btn.uuid) return } - this.checkBtn(btn) buttons.push(`select '${btn.uuid}' as menuid, '${item.name + '-' + btn.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -269,7 +343,6 @@ delButtons.push(cell.uuid) return } - this.checkBtn(cell) buttons.push(`select '${cell.uuid}' as menuid, '${item.name + '-' + cell.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -279,7 +352,6 @@ delButtons.push(cell.uuid) return } - this.checkBtn(cell) buttons.push(`select '${cell.uuid}' as menuid, '${item.name + '-' + cell.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -292,7 +364,6 @@ delButtons.push(cell.uuid) return } - this.checkBtn(cell) buttons.push(`select '${cell.uuid}' as menuid, '${item.name + '-' + cell.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -304,7 +375,6 @@ delButtons.push(cell.uuid) return } - this.checkBtn(cell) buttons.push(`select '${cell.uuid}' as menuid, '${item.name + '-' + cell.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -314,7 +384,6 @@ delButtons.push(btn.uuid) return } - this.checkBtn(btn) buttons.push(`select '${btn.uuid}' as menuid, '${item.name + '-' + btn.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -324,7 +393,6 @@ delButtons.push(btn.uuid) return } - this.checkBtn(btn) buttons.push(`select '${btn.uuid}' as menuid, '${item.name + '-' + btn.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -335,7 +403,6 @@ delButtons.push(btn.uuid) return } - this.checkBtn(btn) buttons.push(`select '${btn.uuid}' as menuid, '${item.name + '-' + btn.label}' as menuname, '${_sort * 10}' as Sort`) _sort++ }) @@ -347,26 +414,6 @@ traversal(config.components) return buttons - } - - 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 - btn.verify.scripts.forEach(item => { - if (item.status === 'false') return - - if (/\$check@|@check\$/ig.test(item.sql)) { - hascheck = true - } - }) - if (hascheck) { - notification.warning({ - top: 92, - message: `鍙�夋嫨澶氳鐨勬寜閽��${btn.label}銆嬩腑 $check@ 鎴� @check$ 灏嗕笉浼氱敓鏁堬紒`, - duration: 5 - }) - } - } } filterConfig = (components) => { @@ -387,7 +434,7 @@ } submitConfig = () => { - const { btn } = this.props + const { btn } = this.state let config = fromJS(this.state.config).toJS() if ((config.cacheUseful === 'true' && !config.cacheTime) || !config.MenuNo || !config.MenuName) { @@ -410,15 +457,13 @@ config.enabled = false } - let _name = (btn.component.name ? btn.component.name + '-' : '') + btn.label - let param = { func: 'sPC_ButtonParam_AddUpt', - ParentID: btn.config.uuid, + ParentID: btn.ParentMenuID, MenuID: config.uuid, MenuNo: config.MenuNo || '', Template: 'CustomPage', - MenuName: _name, + MenuName: config.MenuName, PageParam: JSON.stringify({Template: 'CustomPage'}), LongParam: window.btoa(window.encodeURIComponent(JSON.stringify(config))), open_edition: config.open_edition @@ -643,61 +688,62 @@ } render () { - const { btn } = this.props - const { activeKey, comloading, dict, config, menuloading, customComponents, MenuId, eyeopen } = this.state + const { activeKey, comloading, config, menuloading, customComponents, MenuId, eyeopen } = this.state return ( - <div className="pc-poper-view"> - <Header /> - <DndProvider backend={HTML5Backend}> - <div className="menu-body"> - <div className="menu-setting"> - <Collapse accordion activeKey={activeKey} bordered={false} onChange={(key) => this.setState({activeKey: key})}> - {/* 鍩烘湰淇℃伅 */} - <Panel header={dict['mob.basemsg']} key="basedata"> - {/* 鑿滃崟淇℃伅 */} - {config ? <MenuForm dict={dict} config={config} btn={btn} updateConfig={this.updateConfig}/> : null} - {/* 琛ㄥ悕娣诲姞 */} - {config ? <TableComponent config={config} updatetable={this.updatetable}/> : null} - </Panel> - {/* 缁勪欢娣诲姞 */} - <Panel header={dict['mob.component']} key="component"> - <SourceWrap MenuType="" /> - </Panel> - {customComponents && customComponents.length ? <Panel header="鑷畾涔夌粍浠�" key="cuscomponent"> - <SourceWrap components={customComponents} MenuType="" /> - </Panel> : null} - <Panel header={'椤甸潰鑳屾櫙'} key="background"> - {config ? <BgController config={config} updateConfig={this.updateConfig} /> : null} - </Panel> - <Panel header={'椤甸潰鍐呰竟璺�'} key="padding"> - {config ? <PaddingController config={config} updateConfig={this.updateConfig} /> : null} - </Panel> - </Collapse> + <ConfigProvider locale={_locale}> + <div className="pc-poper-view"> + <Header /> + <DndProvider backend={HTML5Backend}> + <div className="menu-body"> + <div className="menu-setting"> + <Collapse accordion activeKey={activeKey} bordered={false} onChange={(key) => this.setState({activeKey: key})}> + {/* 鍩烘湰淇℃伅 */} + <Panel header="鍩烘湰淇℃伅" key="basedata"> + {/* 鑿滃崟淇℃伅 */} + {config ? <MenuForm config={config} updateConfig={this.updateConfig}/> : null} + {/* 琛ㄥ悕娣诲姞 */} + {config ? <TableComponent config={config} updatetable={this.updatetable}/> : null} + </Panel> + {/* 缁勪欢娣诲姞 */} + <Panel header="缁勪欢" key="component"> + <SourceWrap MenuType="" /> + </Panel> + {customComponents && customComponents.length ? <Panel header="鑷畾涔夌粍浠�" key="cuscomponent"> + <SourceWrap components={customComponents} MenuType="" /> + </Panel> : null} + <Panel header="椤甸潰鏍峰紡" key="background"> + {config ? <BgController config={config} updateConfig={this.updateConfig} /> : null} + </Panel> + </Collapse> + </div> + <div className={'menu-view' + (menuloading ? ' saving' : '') + (eyeopen ? ' eye-open' : '')}> + <Card title={ + <div> {config && config.MenuName} </div> + } bordered={false} extra={ + <div> + <Button className="mk-border-purple" onClick={() => this.setState({eyeopen: !eyeopen})}>{!eyeopen ? <EyeOutlined /> : <EyeInvisibleOutlined />} 缁勪欢鍚�</Button> + <Versions MenuId={MenuId} open_edition={config ? config.open_edition : ''} updateConfig={this.refreshConfig}/> + <ReplaceField type="custom" config={config} updateConfig={this.resetConfig}/> + <StyleCombControlButton menu={config} /> + <PasteController insert={this.insert} /> + {config ? <Switch className="big" checkedChildren="鍚�" unCheckedChildren="鍋�" checked={config.enabled} onChange={this.onEnabledChange} /> : null} + <Button type="primary" id="save-pop-config" onClick={this.submitConfig} loading={menuloading}>淇濆瓨</Button> + <Button type="default" onClick={this.closeView}>杩斿洖</Button> + </div> + } style={{ width: '100%' }}> + {config && !comloading ? <MenuShell menu={config} handleList={this.updateConfig} /> : null} + </Card> + </div> </div> - <div className={'menu-view' + (menuloading ? ' saving' : '') + (eyeopen ? ' eye-open' : '')}> - <Card title={ - <div> {config && config.MenuName} </div> - } bordered={false} extra={ - <div> - <Button className="mk-border-purple" onClick={() => this.setState({eyeopen: !eyeopen})}>{!eyeopen ? <EyeOutlined /> : <EyeInvisibleOutlined />} 缁勪欢鍚�</Button> - <Versions MenuId={MenuId} open_edition={config ? config.open_edition : ''} updateConfig={this.refreshConfig}/> - <ReplaceField type="custom" config={config} updateConfig={this.resetConfig}/> - <StyleCombControlButton menu={config} /> - <PasteController insert={this.insert} /> - {config ? <Switch className="big" checkedChildren={dict['mob.enable']} unCheckedChildren={dict['mob.disable']} checked={config.enabled} onChange={this.onEnabledChange} /> : null} - <Button type="primary" id="save-pop-config" onClick={this.submitConfig} loading={menuloading}>{dict['mob.save']}</Button> - <Button type="default" onClick={this.closeView}>{dict['mob.return']}</Button> - </div> - } style={{ width: '100%' }}> - {config && !comloading ? <MenuShell menu={config} handleList={this.updateConfig} /> : null} - </Card> - </div> - </div> - </DndProvider> - </div> + </DndProvider> + <StyleController /> + <StyleCombController /> + <ModalController /> + </div> + </ConfigProvider> ) } } -export default MenuDesign \ No newline at end of file +export default PopViewDesign \ No newline at end of file diff --git a/src/menu/popview/index.scss b/src/views/popdesign/index.scss similarity index 87% rename from src/menu/popview/index.scss rename to src/views/popdesign/index.scss index 7194ad4..416bbb5 100644 --- a/src/menu/popview/index.scss +++ b/src/views/popdesign/index.scss @@ -10,6 +10,38 @@ display: none; } } + + .component-name { + position: absolute; + z-index: 9; + display: none; + left: 0; + right: 0; + top: 0; + bottom: 0; + background: rgba(255, 255, 255, 0.9); + border: 1px solid #1890ff; + .center { + position: absolute; + font-size: 16px; + left: 50%; + top: 50%; + color: #1890ff; + transform: translate(-50%, -50%); + max-width: 70%; + .title { + text-align: center; + } + } + .error { + text-align: center; + color: red; + display: block; + } + .waring { + color: orange; + } + } >.menu-body { width: 100vw; diff --git a/src/menu/popview/menuform/index.jsx b/src/views/popdesign/menuform/index.jsx similarity index 88% rename from src/menu/popview/menuform/index.jsx rename to src/views/popdesign/menuform/index.jsx index 4de1e6f..6906e4d 100644 --- a/src/menu/popview/menuform/index.jsx +++ b/src/views/popdesign/menuform/index.jsx @@ -7,8 +7,6 @@ class CustomMenuForm extends Component { static propTpyes = { - dict: PropTypes.object, // 瀛楀吀椤� - btn: PropTypes.object, config: PropTypes.object, updateConfig: PropTypes.func } @@ -41,7 +39,7 @@ } render() { - const { dict, config } = this.props + const { config } = this.props const { getFieldDecorator } = this.props.form const formItemLayout = { labelCol: { @@ -58,26 +56,26 @@ <Form {...formItemLayout}> <Row> <Col span={24}> - <Form.Item label={dict['mob.menu'] + dict['mob.name']}> + <Form.Item label="鑿滃崟鍚嶇О"> {getFieldDecorator('MenuName', { initialValue: config.MenuName, rules: [ { required: true, - message: dict['mob.required.input'] + dict['mob.menu'] + dict['mob.name'] + '!' + message: '璇疯緭鍏ヨ彍鍗曞悕绉�!' } ] })(<Input placeholder="" autoComplete="off" onChange={this.changeName}/>)} </Form.Item> </Col> <Col span={24}> - <Form.Item label={dict['mob.menu'] + dict['mob.param']}> + <Form.Item label="鑿滃崟鍙傛暟"> {getFieldDecorator('MenuNo', { initialValue: config.MenuNo, rules: [ { required: true, - message: dict['mob.required.input'] + dict['mob.menu'] + dict['mob.param'] + '!' + message: '璇疯緭鍏ヨ彍鍗曞弬鏁�!' } ] })(<Input placeholder="" autoComplete="off" onChange={this.changeNo}/>)} @@ -119,7 +117,7 @@ rules: [ { required: true, - message: dict['mob.required.input'] + '鏃堕暱!' + message: '璇疯緭鍏ユ椂闀�!' } ] })( diff --git a/src/menu/popview/menuform/index.scss b/src/views/popdesign/menuform/index.scss similarity index 100% rename from src/menu/popview/menuform/index.scss rename to src/views/popdesign/menuform/index.scss -- Gitblit v1.8.0