中英文翻译

This commit is contained in:
刘晓鹏 2025-04-14 16:04:52 +08:00
parent 12c297923a
commit 39937a1602
14 changed files with 733 additions and 240 deletions

315
package-lock.json generated
View File

@ -23,6 +23,8 @@
"html2canvas": "^1.4.1",
"js-cookie": "^3.0.5",
"js-table2excel": "^1.1.2",
"jsbarcode": "^3.11.6",
"jspdf": "^3.0.1",
"jsplumb": "^2.15.6",
"mitt": "^3.0.1",
"nprogress": "^0.2.0",
@ -86,11 +88,12 @@
}
},
"node_modules/@babel/runtime": {
"version": "7.21.0",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
"integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
"version": "7.27.0",
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.27.0.tgz",
"integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==",
"license": "MIT",
"dependencies": {
"regenerator-runtime": "^0.13.11"
"regenerator-runtime": "^0.14.0"
},
"engines": {
"node": ">=6.9.0"
@ -1099,6 +1102,13 @@
"integrity": "sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==",
"dev": true
},
"node_modules/@types/raf": {
"version": "3.4.3",
"resolved": "https://registry.npmmirror.com/@types/raf/-/raf-3.4.3.tgz",
"integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==",
"license": "MIT",
"optional": true
},
"node_modules/@types/semver": {
"version": "7.5.8",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
@ -1111,6 +1121,13 @@
"integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==",
"dev": true
},
"node_modules/@types/trusted-types": {
"version": "2.0.7",
"resolved": "https://registry.npmmirror.com/@types/trusted-types/-/trusted-types-2.0.7.tgz",
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
"license": "MIT",
"optional": true
},
"node_modules/@types/web-bluetooth": {
"version": "0.0.16",
"resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
@ -1787,6 +1804,18 @@
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"node_modules/atob": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz",
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
"license": "(MIT OR Apache-2.0)",
"bin": {
"atob": "bin/atob.js"
},
"engines": {
"node": ">= 4.5.0"
}
},
"node_modules/axios": {
"version": "1.6.8",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz",
@ -1853,6 +1882,18 @@
"node": ">=8"
}
},
"node_modules/btoa": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/btoa/-/btoa-1.2.1.tgz",
"integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==",
"license": "(MIT OR Apache-2.0)",
"bin": {
"btoa": "bin/btoa.js"
},
"engines": {
"node": ">= 0.4.0"
}
},
"node_modules/call-bind": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
@ -1880,6 +1921,33 @@
"node": ">=6"
}
},
"node_modules/canvg": {
"version": "3.0.11",
"resolved": "https://registry.npmmirror.com/canvg/-/canvg-3.0.11.tgz",
"integrity": "sha512-5ON+q7jCTgMp9cjpu4Jo6XbvfYwSB2Ow3kzHKfIyJfaCAOHLbdKPQqGKgfED/R5B+3TFFfe8pegYA+b423SRyA==",
"license": "MIT",
"optional": true,
"dependencies": {
"@babel/runtime": "^7.12.5",
"@types/raf": "^3.4.0",
"core-js": "^3.8.3",
"raf": "^3.4.1",
"regenerator-runtime": "^0.13.7",
"rgbcolor": "^1.0.1",
"stackblur-canvas": "^2.0.0",
"svg-pathdata": "^6.0.3"
},
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/canvg/node_modules/regenerator-runtime": {
"version": "0.13.11",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
"license": "MIT",
"optional": true
},
"node_modules/chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@ -1990,6 +2058,18 @@
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
"node_modules/core-js": {
"version": "3.41.0",
"resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.41.0.tgz",
"integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==",
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
}
},
"node_modules/countup.js": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.8.0.tgz",
@ -2153,6 +2233,16 @@
"ssr-window": "^3.0.0-alpha.1"
}
},
"node_modules/dompurify": {
"version": "3.2.5",
"resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-3.2.5.tgz",
"integrity": "sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==",
"license": "(MPL-2.0 OR Apache-2.0)",
"optional": true,
"optionalDependencies": {
"@types/trusted-types": "^2.0.7"
}
},
"node_modules/echarts": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.0.tgz",
@ -2578,6 +2668,12 @@
"reusify": "^1.0.4"
}
},
"node_modules/fflate": {
"version": "0.8.2",
"resolved": "https://registry.npmmirror.com/fflate/-/fflate-0.8.2.tgz",
"integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==",
"license": "MIT"
},
"node_modules/file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@ -3087,6 +3183,12 @@
"js-yaml": "bin/js-yaml.js"
}
},
"node_modules/jsbarcode": {
"version": "3.11.6",
"resolved": "https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.11.6.tgz",
"integrity": "sha512-G5TKGyKY1zJo0ZQKFM1IIMfy0nF2rs92BLlCz+cU4/TazIc4ZH+X1GYeDRt7TKjrYqmPfTjwTBkU/QnQlsYiuA==",
"license": "MIT"
},
"node_modules/json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@ -3111,6 +3213,24 @@
"graceful-fs": "^4.1.6"
}
},
"node_modules/jspdf": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/jspdf/-/jspdf-3.0.1.tgz",
"integrity": "sha512-qaGIxqxetdoNnFQQXxTKUD9/Z7AloLaw94fFsOiJMxbfYdBbrBuhWmbzI8TVjrw7s3jBY1PFHofBKMV/wZPapg==",
"license": "MIT",
"dependencies": {
"@babel/runtime": "^7.26.7",
"atob": "^2.1.2",
"btoa": "^1.2.1",
"fflate": "^0.8.1"
},
"optionalDependencies": {
"canvg": "^3.0.11",
"core-js": "^3.6.0",
"dompurify": "^3.2.4",
"html2canvas": "^1.0.0-rc.5"
}
},
"node_modules/jsplumb": {
"version": "2.15.6",
"resolved": "https://registry.npmjs.org/jsplumb/-/jsplumb-2.15.6.tgz",
@ -3496,6 +3616,13 @@
"node": ">=8"
}
},
"node_modules/performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
"license": "MIT",
"optional": true
},
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@ -3678,6 +3805,16 @@
}
]
},
"node_modules/raf": {
"version": "3.4.1",
"resolved": "https://registry.npmmirror.com/raf/-/raf-3.4.1.tgz",
"integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
"license": "MIT",
"optional": true,
"dependencies": {
"performance-now": "^2.1.0"
}
},
"node_modules/readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@ -3691,9 +3828,10 @@
}
},
"node_modules/regenerator-runtime": {
"version": "0.13.11",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
"version": "0.14.1",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
"license": "MIT"
},
"node_modules/resolve-from": {
"version": "4.0.0",
@ -3714,6 +3852,16 @@
"node": ">=0.10.0"
}
},
"node_modules/rgbcolor": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/rgbcolor/-/rgbcolor-1.0.1.tgz",
"integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==",
"license": "MIT OR SEE LICENSE IN FEEL-FREE.md",
"optional": true,
"engines": {
"node": ">= 0.8.15"
}
},
"node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@ -4010,6 +4158,16 @@
"resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz",
"integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
},
"node_modules/stackblur-canvas": {
"version": "2.7.0",
"resolved": "https://registry.npmmirror.com/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz",
"integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==",
"license": "MIT",
"optional": true,
"engines": {
"node": ">=0.1.14"
}
},
"node_modules/string-split-by": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/string-split-by/-/string-split-by-1.0.0.tgz",
@ -4055,6 +4213,16 @@
"node": ">=8"
}
},
"node_modules/svg-pathdata": {
"version": "6.0.3",
"resolved": "https://registry.npmmirror.com/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
"integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
"license": "MIT",
"optional": true,
"engines": {
"node": ">=12.0.0"
}
},
"node_modules/text-segmentation": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
@ -4561,11 +4729,11 @@
"integrity": "sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg=="
},
"@babel/runtime": {
"version": "7.21.0",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
"integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
"version": "7.27.0",
"resolved": "https://registry.npmmirror.com/@babel/runtime/-/runtime-7.27.0.tgz",
"integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==",
"requires": {
"regenerator-runtime": "^0.13.11"
"regenerator-runtime": "^0.14.0"
}
},
"@ctrl/tinycolor": {
@ -5169,6 +5337,12 @@
"integrity": "sha512-k7kRA033QNtC+gLc4VPlfnue58CM1iQLgn1IMAU8VPHGOj7oIHPp9UlhedEnD/Gl8evoCjwkZjlBORtZ3JByUA==",
"dev": true
},
"@types/raf": {
"version": "3.4.3",
"resolved": "https://registry.npmmirror.com/@types/raf/-/raf-3.4.3.tgz",
"integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==",
"optional": true
},
"@types/semver": {
"version": "7.5.8",
"resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz",
@ -5181,6 +5355,12 @@
"integrity": "sha512-b79830lW+RZfwaztgs1aVPgbasJ8e7AXtZYHTELNXZPsERt4ymJdjV4OccDbHQAvHrCcFpbF78jkm0R6h/pZVg==",
"dev": true
},
"@types/trusted-types": {
"version": "2.0.7",
"resolved": "https://registry.npmmirror.com/@types/trusted-types/-/trusted-types-2.0.7.tgz",
"integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
"optional": true
},
"@types/web-bluetooth": {
"version": "0.0.16",
"resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz",
@ -5652,6 +5832,11 @@
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="
},
"atob": {
"version": "2.1.2",
"resolved": "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz",
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg=="
},
"axios": {
"version": "1.6.8",
"resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz",
@ -5708,6 +5893,11 @@
"fill-range": "^7.0.1"
}
},
"btoa": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/btoa/-/btoa-1.2.1.tgz",
"integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g=="
},
"call-bind": {
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz",
@ -5726,6 +5916,30 @@
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true
},
"canvg": {
"version": "3.0.11",
"resolved": "https://registry.npmmirror.com/canvg/-/canvg-3.0.11.tgz",
"integrity": "sha512-5ON+q7jCTgMp9cjpu4Jo6XbvfYwSB2Ow3kzHKfIyJfaCAOHLbdKPQqGKgfED/R5B+3TFFfe8pegYA+b423SRyA==",
"optional": true,
"requires": {
"@babel/runtime": "^7.12.5",
"@types/raf": "^3.4.0",
"core-js": "^3.8.3",
"raf": "^3.4.1",
"regenerator-runtime": "^0.13.7",
"rgbcolor": "^1.0.1",
"stackblur-canvas": "^2.0.0",
"svg-pathdata": "^6.0.3"
},
"dependencies": {
"regenerator-runtime": {
"version": "0.13.11",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
"optional": true
}
}
},
"chalk": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@ -5812,6 +6026,12 @@
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true
},
"core-js": {
"version": "3.41.0",
"resolved": "https://registry.npmmirror.com/core-js/-/core-js-3.41.0.tgz",
"integrity": "sha512-SJ4/EHwS36QMJd6h/Rg+GyR4A5xE0FSI3eZ+iBVpfqf1x0eTSg1smWLHrA+2jQThZSh97fmSgFSU8B61nxosxA==",
"optional": true
},
"countup.js": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.8.0.tgz",
@ -5935,6 +6155,15 @@
"ssr-window": "^3.0.0-alpha.1"
}
},
"dompurify": {
"version": "3.2.5",
"resolved": "https://registry.npmmirror.com/dompurify/-/dompurify-3.2.5.tgz",
"integrity": "sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==",
"optional": true,
"requires": {
"@types/trusted-types": "^2.0.7"
}
},
"echarts": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/echarts/-/echarts-5.5.0.tgz",
@ -6276,6 +6505,11 @@
"reusify": "^1.0.4"
}
},
"fflate": {
"version": "0.8.2",
"resolved": "https://registry.npmmirror.com/fflate/-/fflate-0.8.2.tgz",
"integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A=="
},
"file-entry-cache": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
@ -6640,6 +6874,11 @@
"argparse": "^2.0.1"
}
},
"jsbarcode": {
"version": "3.11.6",
"resolved": "https://registry.npmmirror.com/jsbarcode/-/jsbarcode-3.11.6.tgz",
"integrity": "sha512-G5TKGyKY1zJo0ZQKFM1IIMfy0nF2rs92BLlCz+cU4/TazIc4ZH+X1GYeDRt7TKjrYqmPfTjwTBkU/QnQlsYiuA=="
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@ -6662,6 +6901,21 @@
"universalify": "^2.0.0"
}
},
"jspdf": {
"version": "3.0.1",
"resolved": "https://registry.npmmirror.com/jspdf/-/jspdf-3.0.1.tgz",
"integrity": "sha512-qaGIxqxetdoNnFQQXxTKUD9/Z7AloLaw94fFsOiJMxbfYdBbrBuhWmbzI8TVjrw7s3jBY1PFHofBKMV/wZPapg==",
"requires": {
"@babel/runtime": "^7.26.7",
"atob": "^2.1.2",
"btoa": "^1.2.1",
"canvg": "^3.0.11",
"core-js": "^3.6.0",
"dompurify": "^3.2.4",
"fflate": "^0.8.1",
"html2canvas": "^1.0.0-rc.5"
}
},
"jsplumb": {
"version": "2.15.6",
"resolved": "https://registry.npmjs.org/jsplumb/-/jsplumb-2.15.6.tgz",
@ -6957,6 +7211,12 @@
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"dev": true
},
"performance-now": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
"optional": true
},
"picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@ -7054,6 +7314,15 @@
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
"dev": true
},
"raf": {
"version": "3.4.1",
"resolved": "https://registry.npmmirror.com/raf/-/raf-3.4.1.tgz",
"integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
"optional": true,
"requires": {
"performance-now": "^2.1.0"
}
},
"readdirp": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
@ -7064,9 +7333,9 @@
}
},
"regenerator-runtime": {
"version": "0.13.11",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg=="
"version": "0.14.1",
"resolved": "https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
},
"resolve-from": {
"version": "4.0.0",
@ -7080,6 +7349,12 @@
"integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
"dev": true
},
"rgbcolor": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/rgbcolor/-/rgbcolor-1.0.1.tgz",
"integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==",
"optional": true
},
"rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@ -7268,6 +7543,12 @@
"resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz",
"integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
},
"stackblur-canvas": {
"version": "2.7.0",
"resolved": "https://registry.npmmirror.com/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz",
"integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==",
"optional": true
},
"string-split-by": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/string-split-by/-/string-split-by-1.0.0.tgz",
@ -7300,6 +7581,12 @@
"has-flag": "^4.0.0"
}
},
"svg-pathdata": {
"version": "6.0.3",
"resolved": "https://registry.npmmirror.com/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
"integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
"optional": true
},
"text-segmentation": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",

View File

@ -24,6 +24,8 @@
"html2canvas": "^1.4.1",
"js-cookie": "^3.0.5",
"js-table2excel": "^1.1.2",
"jsbarcode": "^3.11.6",
"jspdf": "^3.0.1",
"jsplumb": "^2.15.6",
"mitt": "^3.0.1",
"nprogress": "^0.2.0",

View File

@ -104,7 +104,7 @@ export default {
newDesc: 'No notice',
logOutTitle: 'Tips',
logOutMessage: 'This operation will log out. Do you want to continue?',
logOutConfirm: 'determine',
logOutConfirm: 'Confirm',
logOutCancel: 'cancel',
logOutExit: 'Exiting',
},

View File

@ -1,7 +1,7 @@
// 定义内容
export default {
label: {
one1: 'User name login',
one1: 'Login',
two2: 'Mobile number',
},
link: {
@ -9,8 +9,8 @@ export default {
two4: 'Links',
},
account: {
accountPlaceholder1: 'The user name admin or not is common',
accountPlaceholder2: 'Password: 123456',
accountPlaceholder1: 'User name',
accountPlaceholder2: 'Password',
accountPlaceholder3: 'Please enter the verification code',
accountBtnText: 'Sign in',
},

View File

@ -1,73 +1,49 @@
export default {
list:{
PONumber: "PO Number",
SupplierCode: "Supplier Code",
SupplierName: "Supplier Name",
Buyer: "Buyer",
SettlementMode: "Settlement Mode",
Currency: "Currency",
PaymentTerms: "Payment Terms",
ExchangeRateType: "Exchange Rate Type",
ExchangeRate: "Exchange Rate",
OrderCreater: "Order Creater",
DocStatus: "Doc Status",
PurchaseDate: "Purchase Date",
Comments: "Comments",
MaterialCode: "Material Code",
MaterialName: "Material Name",
Specification: "Specification",
PurchaseUnit: "Purchase Unit",
QTY: "QTY",
UP: "U/P",
TaxInclusiveUP: "Tax Inclusive U/P",
TotalAmount: "Total Amount (Tax-exclusive)",
TotalAmountTaxInclusive: "Total Amount (Tax-inclusive)",
AccumulatedReceiptQTY: "Accumulated Receipt QTY",
DemondDate: "Demond Date",
TaxAmount: "Tax Amount",
CommittedDeliveryDate: "Committed Delivery Date",
LatestCommittedDeliveryDate: "Latest Committed Delivery Date",
Comments2: "Comments",
index:{
POList:'PO List',
PODetails :'PO Details ',
DeliveryNoteList:'Delivery Note List',
// -- Part 2 --
PONumber2: "PO Number",
SupplierCode2: "Supplier Code",
SupplierName2: "Supplier Name",
Buyer2: "Buyer",
ReceiveOrg: "Receive Org",
BusinessType: "Business Type",
OrderCreator: "Order Creator",
DocStatus2: "Doc Status",
ReceivingDate: "Receiving Date",
Comments3: "Comments",
MaterialCode2: "Material Code",
MaterialName2: "Material Name",
Specification2: "Specification",
PurchaseUnit2: "Purchase Unit",
ActualReceiptQTY: "Actual Receipt QTY",
DeliveryQTY: "Delivery QTY",
SupplierLotNumber: "Supplier Lot Number",
QualifiedQTY: "Qualified QTY",
MaxcesLotNumber: "Maxces Lot Number",
Comments4: "Comments",
DocNumber:'PO Number',
DocStatus:'PO Status',
// -- Part 3 --
SourceDocNo: "Source Doc No.",
GoodReceivingNoticeNo: "Good Receiving Notice No.",
SupplierName3: "Supplier Name",
DeliveryDate2: "Delivery Date",
InvoiceNumber: "Invoice Number",
SN: "S/N",
normal:'Normal',
closed:'Closed',
// -- Other info --
SupplierName4: "Supplier Name",
UserName: "User Name",
MobileNumber: "Mobile Number",
AccountStatus: "Account Status",
Description: "Description",
CreatedDate: "Created Date",
Operation: "Operation",
PurchaseOrder: "Purchase Order",
DeliveryNote: "Delivery Note"
StartDate:'Start Date',
EndDate:'End Date',
search:'Search',
reset:'Reset',
selected:'Selected',
items:'items',
proceed:'proceed',
date:'Date',
status:'Status',
unclosed:'Unclosed',
partNumber:'Part Number',
materialName:'Material Name',
unit:'Unit',
qty:'QTY',
deliveryDate:'Delivery Date',
receivedQTY:'Received QTY',
unreceivedQTY:'Unreceived QTY',
earliestDeliveryDate:'Earliest Delivery Date',
latestDeliveryDate:'Latest Delivery Date',
view:'view',
batchUpdateEarliestDeliveryDate:'Batch update Earliest Delivery Date',
batchUpdateLatestDeliveryDate:'Batch update Latest Delivery Date',
}
};

View File

@ -1,73 +1,49 @@
export default {
list:{
PONumber: "单据编号",
SupplierCode: "供应商代码",
SupplierName: "供应商名称",
Buyer: "采购员",
SettlementMode: "结算方式",
Currency: "结算币别",
PaymentTerms: "付款条件",
ExchangeRateType: "汇率类型",
ExchangeRate: "汇率",
OrderCreater: "制单人",
DocStatus: "单据状态",
PurchaseDate: "采购日期",
Comments: "备注",
MaterialCode: "物料编码",
MaterialName: "物料名称",
Specification: "规格型号",
PurchaseUnit: "采购单位",
QTY: "数量",
UP: "单价",
TaxInclusiveUP: "含税单价",
TotalAmount: "金额(不含税)",
TotalAmountTaxInclusive: "价税合计(含税金额)",
AccumulatedReceiptQTY: "累计收料数量",
DemondDate: "交货日期",
TaxAmount: "税额",
CommittedDeliveryDate: "供应商承诺交期",
LatestCommittedDeliveryDate: "供应商承诺最新交期",
Comments2: "备注",
index:{
POList:'采购管理列表',
PODetails :'采购订单明细',
DeliveryNoteList:'送货管理列表',
// -- 第二部分 --
PONumber2: "单据编号",
SupplierCode2: "供应商代码",
SupplierName2: "供应商名称",
Buyer2: "采购员",
ReceiveOrg: "收料组织",
BusinessType: "单据类型",
OrderCreator: "制单人",
DocStatus2: "单据状态",
ReceivingDate: "发货日期",
Comments3: "备注",
MaterialCode2: "物料编码",
MaterialName2: "物料名称",
Specification2: "规格型号",
PurchaseUnit2: "收料单位",
ActualReceiptQTY: "实到数量",
DeliveryQTY: "交货数量",
SupplierLotNumber: "供应商批号",
QualifiedQTY: "合格数量",
MaxcesLotNumber: "批号",
Comments4: "备注",
DocNumber:'单据编号',
DocStatus:'业务状态',
// -- 第三部分 --
SourceDocNo: "源单单号",
GoodReceivingNoticeNo: "收料通知单编号(送货单号)",
SupplierName3: "供应商名称",
DeliveryDate2: "送货日期",
InvoiceNumber: "发票号",
SN: "序号",
normal:'正常',
closed:'关闭',
// -- 其他信息 --
SupplierName4: "公司名称",
UserName: "用户姓名",
MobileNumber: "手机号",
AccountStatus: "账号状态",
Description: "用户描述",
CreatedDate: "创建时间",
Operation: "操作",
PurchaseOrder: "采购管理",
DeliveryNote: "送货管理"
StartDate:'开始采购日期',
EndDate:'采购结束日期',
search:'搜索',
reset:'重置',
selected:'已选中',
items:'条数据',
proceed:'去查看',
date:'采购日期',
status:'关闭状态',
unclosed:'未关闭',
PartNumber:'物料编码',
materialName:'物料名称',
unit:'采购单位',
qty:'采购数量',
deliveryDate:'交货日期',
receivedQTY:'累计收料数量',
unreceivedQTY:'剩余收料数量',
earliestDeliveryDate:'供应商承诺交期',
latestDeliveryDate:'供应商承诺交期',
view:'查看',
batchUpdateEarliestDeliveryDate:'批量修改选中承诺日期',
batchUpdateLatestDeliveryDate:'批量修改选中承诺最新交期',
}
};

View File

@ -52,7 +52,7 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
name: 'mssPurchaseOrderIndex',
component: () => import('/@/views/mssPurchaseOrder/index.vue'),
meta: {
title: '采购管理列表',
title: 'message.index.POList',
isLink: '',
isHide: false,
isKeepAlive: true,
@ -67,7 +67,7 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
name: 'purchaseDetails',
component: () => import('/@/views/mssPurchaseOrder/purchaseDetails.vue'),
meta: {
title: '采购订单明细',
title: 'message.index.PODetails',
isLink: '',
isHide: true,
isKeepAlive: true,
@ -82,7 +82,7 @@ export const dynamicRoutes: Array<RouteRecordRaw> = [
name: 'materialReceiptNotice',
component: () => import('/@/views/materialReceiptNotice/index.vue'),
meta: {
title: '送货管理列表',
title: 'message.index.DeliveryNoteList',
isLink: '',
isHide: false,
isKeepAlive: true,

View File

@ -58,9 +58,9 @@ const router = useRouter();
const state = reactive({
isShowPassword: false,
ruleForm: {
userName: 'abc',
password: '123',
code: '1234',
userName: '',
password: '',
code: '',
},
loading: {
signIn: false,

View File

@ -1,6 +1,9 @@
<template>
<div class="login-container flex">
<div class="login-left">
<div class="logoBox">
<img src="./logo.png" alt="">
</div>
<img :src="loginBg" class="login-left-waves" />
</div>
<div class="login-right flex">
@ -69,6 +72,16 @@ onMounted(() => {
position: relative;
background-color: rgba(211, 239, 255, 1);
margin-right: 100px;
.logoBox{
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
img{
width: 70%;
}
}
.login-left-logo {
display: flex;
align-items: center;

BIN
src/views/login/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -0,0 +1,81 @@
<template>
<el-dialog :model-value="props.showes" @close="closeFun" width="600">
<div id="printTemplate" class="print-hide">
<div class="typefaceBox" ref="typefaceBoxRef">
<VueQr :text="props.data.tiaoMa" :size="200"></VueQr>
<div class="titleList">
<div class="itemText">供应商{{ props.data.supplierName }}</div>
<div class="itemText">物料编码{{ props.data.materialCode }}</div>
<div class="itemText">包装数量{{ props.data.qty }}</div>
<div class="itemText">美塞斯批号{{ props.data.mssSupplierLot }}</div>
<div class="itemText">供应商批号{{ props.data.fSupplierLot }}</div>
<div class="itemText">采购订单号</div>
<div class="itemText">送货日期{{ props.data.deliveryDate }}</div>
<div class="itemText">收料通知单单号{{ props.data.fBillNo }}</div>
</div>
</div>
</div>
<div class="btnList">
<el-button type="primary" @click="handlePrint">打印</el-button>
</div>
</el-dialog>
</template>
<script setup lang="ts">
import { defineProps, reactive, ref, nextTick, defineEmits } from 'vue';
import VueQr from 'vue-qr/src/packages/vue-qr.vue';
import printJS from 'print-js';
const typefaceBoxRef = ref();
const emits = defineEmits(['close']);
const props = defineProps({
showes: {
type: Boolean,
default: true,
},
data: {
type: Object,
default: () => {
return {};
},
},
});
const state = reactive({
snapshotUrl: '',
});
const handlePrint = () => {
// DOM
const printElement = document.getElementById('printTemplate');
if (printElement) {
printJS({
printable: printElement,
type: 'html',
targetStyles: ['*'],
style: `
@page { size: 100mm 52mm landscapes; margin: 0; }
`,
});
}
};
const closeFun = () => {
emits('close');
};
</script>
<style scoped lang="scss">
.typefaceBox {
display: flex;
align-items: center;
justify-content: center;
margin: 64px 0;
.titleList {
flex: 1;
}
}
.btnList {
margin-top: 26px;
display: flex;
justify-content: center;
}
</style>

View File

@ -10,10 +10,11 @@
:table-loading="state.loading"
>
<template #checkboxBox="{ row }">
<div style="width: 100%;height: 100%;display: flex;align-items: center;justify-content: center">
<el-checkbox v-if="row.ifHidden === 0" v-model="row.checkboxBox" true-value="1" false-value="0" @change="selectionChange"/>
</div>
</template>
<div style="width: 100%; height: 100%; display: flex; align-items: center; justify-content: center">
<el-checkbox v-if="row.ifHidden === 0" v-model="row.checkboxBox" true-value="1" false-value="0" @change="selectionChange(row)" />
</div>
</template>
<template #deliveryDate="{ row }">{{ row.ifHidden === 0 ? row.deliveryDate : '' }}</template>
<template #sheet="{ row }">{{ row.ifHidden === 0 ? row.sheet : '' }}</template>
<template #materialName="{ row }">
<el-tooltip :content="row.materialName" placement="top">
@ -30,6 +31,20 @@
<div class="selectItem">
<el-input v-model="state.formData.sheet" style="width: 240px" placeholder="发货单号" size="default" />
</div>
<div class="selectItem">
<el-date-picker
v-model="state.elDatePicker"
style="width: 25vw"
type="daterange"
range-separator="-"
start-placeholder="开始送货日期"
end-placeholder="送货结束日期"
size="default"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
@change="elDatePickerFun"
/>
</div>
<el-button type="primary" size="default" @click="selectFun">搜索</el-button>
<el-button size="default" @click="resetFun">重置</el-button>
<el-button type="primary" size="default" @click="state.selectedDataShow = true">
@ -37,9 +52,9 @@
</el-button>
</div>
</template>
<template #menu>
<template #menu="{ row }">
<div class="btnList">
<el-button type="text" @click="state.selectedDataShow = true">打印条码</el-button>
<el-button type="text" @click="barCodeFunDataRow(row)">打印条码</el-button>
</div>
</template>
</avue-crud>
@ -53,6 +68,7 @@
}
"
/>
<barCode :showes="state.barCodeShow" :data="state.barCodeItem" @close="() => { state.barCodeShow = false }"/>
</div>
</template>
@ -62,7 +78,7 @@ import { listApi } from '../../api/list/index';
import { ElMessage } from 'element-plus';
import { useI18n } from 'vue-i18n';
import SelectedData from '/@/views/materialReceiptNotice/selectedData.vue';
import barCode from './barCode.vue'
const { t } = useI18n();
const crudRef = ref();
//
@ -85,7 +101,8 @@ const state = reactive({
searchMenuSpan: 3,
addBtn: false,
column: [
{ label: '', prop: 'checkboxBox',width: 35 },
{ label: '', prop: 'checkboxBox', width: 35 },
{ label: '送货日期', prop: 'deliveryDate' },
{ label: '发货单号', prop: 'sheet', width: '135' },
{ label: '美塞斯批号', prop: 'mssSupplierLot' },
{ label: '供应商批号', prop: 'fSupplierLot' },
@ -112,18 +129,45 @@ const state = reactive({
newChengNuoJiaoQiP: '',
selectedDataShow: false,
loading: false,
barCodeShow:false,
barCodeItem: {}
});
const selectionChange = () => {
let ids: any = [];
let arr: any = []
state.data.forEach((item:any) => {
if(item.checkboxBox === '1'){
arr.push(item)
}
})
state.selectedData = arr
const elDatePickerFun = (val: any) => {
state.formData.fDateBegin = val[0];
state.formData.fDateEmd = val[1];
};
const selectionChange = (row: any) => {
if (row.checkboxBox == '1') {
state.data.forEach((item: any) => {
if (item.id !== row.id) {
item.checkboxBox = '0';
}
});
listApi()
.invoiceOrderGetPageList({
condition: {
sheet: row.sheet,
fDateBegin: '',
fDateEmd: '',
fmrpCloseStatus: '',
},
pageSize: 1000000,
page: 1,
})
.then((res: any) => {
state.loading = false;
if (res.resultCode === 0) {
state.selectedData = res.data.dataList;
}
});
} else {
state.selectedData = [];
}
};
const barCodeFunDataRow = (row) => {
state.barCodeItem = row
state.barCodeShow = true
}
//
const selectFun = () => {
state.page.currentPage = 1;
@ -159,9 +203,9 @@ const getList = () => {
state.loading = false;
if (res.resultCode === 0) {
state.data = res.data.dataList;
state.data.forEach((item:any) => {
item.checkboxBox = '0'
})
state.data.forEach((item: any) => {
item.checkboxBox = '0';
});
state.page.total = res.data.total;
}
});
@ -177,9 +221,11 @@ onMounted(() => {});
:deep(.el-checkbox--default):nth-child(0) {
display: none !important;
}
:deep(.el-checkbox){
height: 15px !important;
:deep(.el-checkbox) {
height: 15px !important;
}
:deep(.cell) {
padding: 0 8px !important;
}

View File

@ -3,10 +3,10 @@
<el-card class="layout-padding-auto" shadow="hover">
<div class="selectBoxes">
<div class="selectItem">
<el-input v-model="state.formData.fBillNo" style="width: 12vw" placeholder="单据编号" size="default" />
<el-input v-model="state.formData.fBillNo" style="width: 12vw" :placeholder="t('message.index.DocNumber')" size="default" />
</div>
<div class="selectItem">
<el-select placeholder="业务状态" size="default" style="width: 12vw" v-model="state.formData.fmrpCloseStatus">
<el-select :placeholder="t('message.index.DocStatus')" size="default" style="width: 12vw" v-model="state.formData.fmrpCloseStatus">
<el-option v-for="item in state.option.column[2].dicData" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
@ -16,8 +16,8 @@
style="width: 25vw"
type="daterange"
range-separator="-"
start-placeholder="开始采购日期"
end-placeholder="采购结束日期"
:start-placeholder="t('message.index.StartDate')"
:end-placeholder="t('message.index.EndDate')"
size="default"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
@ -25,18 +25,18 @@
/>
</div>
<div class="selectItem" style="margin-right: 0">
<el-button type="primary" size="default" @click="selectFun">搜索</el-button>
<el-button size="default" @click="resetFun">重置</el-button>
<el-button type="primary" size="default" @click="selectFun">{{ t('message.index.search') }}</el-button>
<el-button size="default" @click="resetFun">{{ t('message.index.reset') }}</el-button>
</div>
<div class="selectItem" style="flex: 1; margin-right: 0">
<div class="piliang">
<el-button type="primary" size="small" @click="state.selectedDataShow = true">
<span>已选中 {{ state.selectedData.length }} 条数据去查看</span>
<span>{{ t('message.index.selected') }} {{ state.selectedData.length }} {{ t('message.index.items') }}{{ t('message.index.proceed') }}</span>
</el-button>
<el-date-picker
v-model="state.chengNuoJiaoQiP"
type="date"
placeholder="批量修改选中承诺日期"
:placeholder="t('message.index.batchUpdateEarliestDeliveryDate')"
size="small"
style="width: 45%; margin-left: 12px"
@change="chengNuoJiaoQiPFun('0')"
@ -44,7 +44,7 @@
<el-date-picker
v-model="state.newChengNuoJiaoQiP"
type="date"
placeholder="批量修改选中承诺最新交期"
:placeholder="t('message.index.batchUpdateLatestDeliveryDate')"
size="small"
style="width: 45%; margin-left: 12px"
@change="chengNuoJiaoQiPFun('1')"
@ -62,12 +62,11 @@
:table-loading="state.loading"
>
<template #fBillNo="{ row }">
<span v-if="row.ifHidden === 0" @click="toPurchaseDetails(row)" style="cursor: pointer">{{ row.fBillNo }}</span>
<!-- {{ row.ifHidden === 0 ? row.fBillNo : '' }}-->
</template>
<span v-if="row.ifHidden === 0" @click="toPurchaseDetails(row)" style="cursor: pointer; color: #409eff">{{ row.fBillNo }}</span>
</template>
<template #fDate="{ row }">{{ row.ifHidden === 0 ? row.fDate : '' }}</template>
<template #fCancelStatus="{ row }">
{{ row.ifHidden === 0 ? (row.fCancelStatus === 'A' ? '未关闭' : '已关闭') : '' }}
{{ row.ifHidden === 0 ? (row.fCancelStatus === 'A' ? t('message.index.closed') : t('message.index.unclosed')) : '' }}
</template>
<template #materialName="{ row }">
<el-tooltip :content="row.materialName" placement="top">
@ -78,7 +77,7 @@
<el-date-picker
v-model="row.chengNuoJiaoQi"
type="date"
placeholder="日期"
:placeholder="t('message.index.date')"
size="small"
style="width: 220px"
format="YYYY-MM-DD"
@ -90,7 +89,7 @@
<el-date-picker
v-model="row.newChengNuoJiaoQi"
type="date"
placeholder="日期"
:placeholder="t('message.index.date')"
size="small"
style="width: 220px"
format="YYYY-MM-DD"
@ -100,7 +99,7 @@
</template>
<template #menu-left></template>
<template #menu="{ row }">
<el-button type="text" icon="el-icon-pie-chart" @click="toPurchaseDetails(row)">查看</el-button>
<el-button type="text" icon="el-icon-pie-chart" @click="toPurchaseDetails(row)">{{ t('message.index.view') }}</el-button>
</template>
</avue-crud>
</el-card>
@ -123,13 +122,13 @@
import { reactive, onMounted, computed, nextTick, ref } from 'vue';
import { useRouter } from 'vue-router';
import { listApi } from '../../api/list/index';
// import { useI18n } from 'vue-i18n';
import { useI18n } from 'vue-i18n';
import SelectedData from '/@/views/mssPurchaseOrder/selectedData.vue';
import { ElMessage, ElMessageBox } from 'element-plus';
import { Session } from '/@/utils/storage';
// import { Session } from '/@/utils/storage';
const selectedDataRef = ref();
// const { t } = useI18n();
const { t } = useI18n();
const router = useRouter();
//
const state = reactive({
@ -142,7 +141,7 @@ const state = reactive({
height: computed(() => window.innerHeight - window.innerHeight * 0.23 + ''),
tip: false,
index: true,
menu: false,
menu: true,
menuWidth: 85,
border: true,
delBtn: false,
@ -154,36 +153,36 @@ const state = reactive({
searchMenuSpan: 3,
addBtn: false,
column: [
{ label: '采购单号', prop: 'fBillNo', /*search: true,*/ searchSpan: 3, width: '125' },
{ label: '采购日期', prop: 'fDate', /*search: true,*/ type: 'datetime', searchSpan: 6, searchRange: true },
{ label: computed(() => t('message.index.DocNumber')), prop: 'fBillNo', searchSpan: 3, width: '125' },
{ label: computed(() => t('message.index.date')), prop: 'fDate', type: 'datetime', searchSpan: 6, searchRange: true },
{
label: '关闭状态',
label: computed(() => t('message.index.status')),
prop: 'fCancelStatus',
dicData: [
{ label: '未关闭', value: 'A' },
{ label: '已关闭', value: 'B' },
{ label: computed(() => t('message.index.closed')), value: 'A' },
{ label: computed(() => t('message.index.unclosed')), value: 'B' },
],
width: '90',
},
{ label: '物料编码', prop: 'materialCode', width: '120' },
{ label: '物料名称', prop: 'materialName', width: '240' },
{ label: '采购单位', prop: 'unitName', width: '90' },
{ label: '采购数量', prop: 'qty', width: '90' },
{ label: '交货日期', prop: 'fDeliveryDate', width: '165' },
{ label: computed(() => t('message.index.partNumber')), prop: 'materialCode', width: '120' },
{ label: computed(() => t('message.index.materialName')), prop: 'materialName', width: '240' },
{ label: computed(() => t('message.index.unit')), prop: 'unitName', width: '90' },
{ label: computed(() => t('message.index.qty')), prop: 'qty', width: '90' },
{ label: computed(() => t('message.index.deliveryDate')), prop: 'fDeliveryDate', width: '165' },
{
label: '业务状态',
prop: 'fmrpCloseStatus' /*search: true,*/,
label: computed(() => t('message.index.DocStatus')),
prop: 'fmrpCloseStatus',
searchSpan: 3,
dicData: [
{ label: '正常', value: 'A' },
{ label: '业务关闭', value: 'B' },
{ label: computed(() => t('message.index.normal')), value: 'A' },
{ label: computed(() => t('message.index.closed')), value: 'B' },
],
width: '90',
},
{ label: '累计收料数量', prop: 'sendedQty', width: '110' },
{ label: '剩余收料数量', prop: 'notSendQty', width: '110' },
{ label: '供应商承诺交期', prop: 'chengNuoJiaoQi', width: '160' },
{ label: '供应商承诺最新交期', prop: 'newChengNuoJiaoQi', width: '160' },
{ label: computed(() => t('message.index.receivedQTY')), prop: 'sendedQty', width: '110' },
{ label: computed(() => t('message.index.unreceivedQTY')), prop: 'notSendQty', width: '110' },
{ label: computed(() => t('message.index.earliestDeliveryDate')), prop: 'chengNuoJiaoQi', width: '160' },
{ label: computed(() => t('message.index.latestDeliveryDate')), prop: 'newChengNuoJiaoQi', width: '160' },
],
},
data: [],
@ -212,13 +211,69 @@ const chengNuoJiaoQiPFun = (e: string) => {
state.selectedData.forEach((item: any) => {
arr.push({ id: item.id, newTime: state.chengNuoJiaoQiP });
});
batchSetChengNuoJiaoQiFun(arr);
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: '提示',
message: '是否要修正此项日期',
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
instance.confirmButtonText = '1';
listApi()
.batchSetChengNuoJiaoQi(arr)
.then((res: any) => {
done();
if (res.resultCode === 0) {
getList();
ElMessage.success('操作成功');
}
if (res.resultCode === -1) {
getList();
ElMessage.success(res.errorMessage);
}
});
} else {
done();
}
},
});
}
if (e === '1') {
state.selectedData.forEach((item: any) => {
arr.push({ id: item.id, newTime: state.newChengNuoJiaoQiP });
});
batchSetNewChengNuoJiaoQiFun(arr);
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: '提示',
message: '是否要修正此项日期',
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
instance.confirmButtonText = '1';
listApi()
.batchSetNewChengNuoJiaoQi(arr)
.then((res: any) => {
done();
if (res.resultCode === 0) {
getList();
ElMessage.success('操作成功');
}
if (res.resultCode === -1) {
getList();
ElMessage.success(res.errorMessage);
}
});
} else {
done();
}
},
});
}
} else {
ElMessage.warning('请先选中数据');
@ -234,18 +289,19 @@ const batchSetChengNuoJiaoQiFun = (arr: any) => {
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
instance.confirmButtonText = '1';
listApi()
.batchSetChengNuoJiaoQi(arr)
.then((res: any) => {
done();
done();
if (res.resultCode === 0) {
ElMessage.success('操作成功');
getList();
state.chengNuoJiaoQiP = '';
ElMessage.success('操作成功');
}
if (res.resultCode === -1) {
getList();
ElMessage.success(res.errorMessage);
state.chengNuoJiaoQiP = '';
}
});
} else {
@ -264,18 +320,19 @@ const batchSetNewChengNuoJiaoQiFun = (arr: any) => {
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
instance.confirmButtonText = '1';
listApi()
.batchSetNewChengNuoJiaoQi(arr)
.then((res: any) => {
done();
done();
if (res.resultCode === 0) {
ElMessage.success('操作成功');
getList();
state.newChengNuoJiaoQiP = ''
ElMessage.success('操作成功');
}
if (res.resultCode === -1) {
getList();
ElMessage.success(res.errorMessage);
state.newChengNuoJiaoQiP = ''
}
});
} else {

View File

@ -76,12 +76,9 @@
import {reactive, onMounted, computed, nextTick, ref} from 'vue';
import { useRouter,useRoute } from 'vue-router';
import { listApi } from '../../api/list/index';
// import { useI18n } from 'vue-i18n';
import SelectedData from '/@/views/mssPurchaseOrder/selectedData.vue';
import {ElMessage, ElMessageBox} from 'element-plus';
const selectedDataRef = ref()
// const { t } = useI18n();
const router = useRouter();
const route = useRoute()
//
const state = reactive({
@ -163,13 +160,69 @@ const chengNuoJiaoQiPFun = (e: string) => {
state.selectedData.forEach((item: any) => {
arr.push({ id: item.id, newTime: state.chengNuoJiaoQiP });
});
batchSetChengNuoJiaoQiFun(arr);
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: '提示',
message: '是否要修正此项日期',
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
instance.confirmButtonText ='1';
listApi()
.batchSetChengNuoJiaoQi(arr)
.then((res: any) => {
done();
if (res.resultCode === 0) {
getList();
ElMessage.success('操作成功');
}
if (res.resultCode === -1) {
getList();
ElMessage.success(res.errorMessage);
}
});
} else {
done();
}
},
});
}
if (e === '1') {
state.selectedData.forEach((item: any) => {
arr.push({ id: item.id, newTime: state.newChengNuoJiaoQiP });
});
batchSetNewChengNuoJiaoQiFun(arr);
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: '提示',
message: '是否要修正此项日期',
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
instance.confirmButtonText = '1';
listApi()
.batchSetNewChengNuoJiaoQi(arr)
.then((res: any) => {
done();
if (res.resultCode === 0) {
getList();
ElMessage.success('操作成功');
}
if (res.resultCode === -1) {
getList();
ElMessage.success(res.errorMessage);
}
});
} else {
done();
}
},
});
}
} else {
ElMessage.warning('请先选中数据');
@ -185,18 +238,19 @@ const batchSetChengNuoJiaoQiFun = (arr: any) => {
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
instance.confirmButtonText ='1';
listApi()
.batchSetChengNuoJiaoQi(arr)
.then((res: any) => {
done();
if (res.resultCode === 0) {
ElMessage.success('操作成功');
getList();
state.chengNuoJiaoQiP = '';
ElMessage.success('操作成功');
}
if (res.resultCode === -1) {
getList();
ElMessage.success(res.errorMessage);
state.chengNuoJiaoQiP = '';
}
});
} else {
@ -215,18 +269,19 @@ const batchSetNewChengNuoJiaoQiFun = (arr: any) => {
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
instance.confirmButtonText = '1';
listApi()
.batchSetNewChengNuoJiaoQi(arr)
.then((res: any) => {
done();
if (res.resultCode === 0) {
ElMessage.success('操作成功');
getList();
state.newChengNuoJiaoQiP = ''
ElMessage.success('操作成功');
}
if (res.resultCode === -1) {
getList();
ElMessage.success(res.errorMessage);
state.newChengNuoJiaoQiP = ''
}
});
} else {