初次对接

This commit is contained in:
刘晓鹏 2025-04-11 18:00:39 +08:00
parent 5465099c77
commit 0d3bf51c2b
11 changed files with 792 additions and 413 deletions

350
package-lock.json generated
View File

@ -20,6 +20,7 @@
"echarts-gl": "^2.0.9", "echarts-gl": "^2.0.9",
"echarts-wordcloud": "^2.1.0", "echarts-wordcloud": "^2.1.0",
"element-plus": "^2.6.1", "element-plus": "^2.6.1",
"html2canvas": "^1.4.1",
"js-cookie": "^3.0.5", "js-cookie": "^3.0.5",
"js-table2excel": "^1.1.2", "js-table2excel": "^1.1.2",
"jsplumb": "^2.15.6", "jsplumb": "^2.15.6",
@ -37,6 +38,7 @@
"vue-demi": "^0.14.7", "vue-demi": "^0.14.7",
"vue-grid-layout": "^3.0.0-beta1", "vue-grid-layout": "^3.0.0-beta1",
"vue-i18n": "^9.10.2", "vue-i18n": "^9.10.2",
"vue-qr": "^4.0.9",
"vue-router": "^4.3.0" "vue-router": "^4.3.0"
}, },
"devDependencies": { "devDependencies": {
@ -1798,8 +1800,16 @@
"node_modules/balanced-match": { "node_modules/balanced-match": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
"dev": true },
"node_modules/base64-arraybuffer": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
"integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
"license": "MIT",
"engines": {
"node": ">= 0.6.0"
}
}, },
"node_modules/batch-processor": { "node_modules/batch-processor": {
"version": "1.0.0", "version": "1.0.0",
@ -2004,6 +2014,15 @@
"node": ">= 8" "node": ">= 8"
} }
}, },
"node_modules/css-line-break": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz",
"integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
"license": "MIT",
"dependencies": {
"utrie": "^1.0.2"
}
},
"node_modules/cssesc": { "node_modules/cssesc": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@ -2052,6 +2071,21 @@
} }
} }
}, },
"node_modules/decompress-response": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz",
"integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
"license": "MIT",
"dependencies": {
"mimic-response": "^3.1.0"
},
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/deep-is": { "node_modules/deep-is": {
"version": "0.1.4", "version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@ -2652,8 +2686,7 @@
"node_modules/fs.realpath": { "node_modules/fs.realpath": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
"dev": true
}, },
"node_modules/fsevents": { "node_modules/fsevents": {
"version": "2.3.3", "version": "2.3.3",
@ -2855,6 +2888,19 @@
"url": "https://github.com/sponsors/wooorm" "url": "https://github.com/sponsors/wooorm"
} }
}, },
"node_modules/html2canvas": {
"version": "1.4.1",
"resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
"integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
"license": "MIT",
"dependencies": {
"css-line-break": "^2.1.0",
"text-segmentation": "^1.0.3"
},
"engines": {
"node": ">=8.0.0"
}
},
"node_modules/i18next": { "node_modules/i18next": {
"version": "20.6.1", "version": "20.6.1",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz", "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz",
@ -2916,7 +2962,6 @@
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dev": true,
"dependencies": { "dependencies": {
"once": "^1.3.0", "once": "^1.3.0",
"wrappy": "1" "wrappy": "1"
@ -2925,8 +2970,7 @@
"node_modules/inherits": { "node_modules/inherits": {
"version": "2.0.4", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
"dev": true
}, },
"node_modules/is-binary-path": { "node_modules/is-binary-path": {
"version": "2.1.0", "version": "2.1.0",
@ -3012,6 +3056,12 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true "dev": true
}, },
"node_modules/js-binary-schema-parser": {
"version": "2.0.3",
"resolved": "https://registry.npmmirror.com/js-binary-schema-parser/-/js-binary-schema-parser-2.0.3.tgz",
"integrity": "sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg==",
"license": "MIT"
},
"node_modules/js-cookie": { "node_modules/js-cookie": {
"version": "3.0.5", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
@ -3230,6 +3280,18 @@
"node": ">= 0.6" "node": ">= 0.6"
} }
}, },
"node_modules/mimic-response": {
"version": "3.1.0",
"resolved": "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz",
"integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
"license": "MIT",
"engines": {
"node": ">=10"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/minimatch": { "node_modules/minimatch": {
"version": "3.1.2", "version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@ -3329,7 +3391,6 @@
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
"dependencies": { "dependencies": {
"wrappy": "1" "wrappy": "1"
} }
@ -3393,6 +3454,12 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/parenthesis": {
"version": "3.1.8",
"resolved": "https://registry.npmmirror.com/parenthesis/-/parenthesis-3.1.8.tgz",
"integrity": "sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw==",
"license": "MIT"
},
"node_modules/path-exists": { "node_modules/path-exists": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@ -3827,6 +3894,51 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/simple-concat": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz",
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
],
"license": "MIT"
},
"node_modules/simple-get": {
"version": "4.0.1",
"resolved": "https://registry.npmmirror.com/simple-get/-/simple-get-4.0.1.tgz",
"integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
],
"license": "MIT",
"dependencies": {
"decompress-response": "^6.0.0",
"once": "^1.3.1",
"simple-concat": "^1.0.0"
}
},
"node_modules/slash": { "node_modules/slash": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
@ -3898,6 +4010,15 @@
"resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz", "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz",
"integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==" "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
}, },
"node_modules/string-split-by": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/string-split-by/-/string-split-by-1.0.0.tgz",
"integrity": "sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==",
"license": "MIT",
"dependencies": {
"parenthesis": "^3.1.5"
}
},
"node_modules/strip-ansi": { "node_modules/strip-ansi": {
"version": "6.0.1", "version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@ -3934,6 +4055,15 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/text-segmentation": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
"integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
"license": "MIT",
"dependencies": {
"utrie": "^1.0.2"
}
},
"node_modules/text-table": { "node_modules/text-table": {
"version": "0.2.0", "version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@ -4051,6 +4181,15 @@
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true "dev": true
}, },
"node_modules/utrie": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
"integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
"license": "MIT",
"dependencies": {
"base64-arraybuffer": "^1.0.2"
}
},
"node_modules/vite": { "node_modules/vite": {
"version": "5.1.6", "version": "5.1.6",
"resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz",
@ -4281,6 +4420,59 @@
"vue": "^3.0.0" "vue": "^3.0.0"
} }
}, },
"node_modules/vue-qr": {
"version": "4.0.9",
"resolved": "https://registry.npmmirror.com/vue-qr/-/vue-qr-4.0.9.tgz",
"integrity": "sha512-pAISV94T0MNEYA3NGjykUpsXRE2QfaNxlu9ZhEL6CERgqNc21hJYuP3hRVzAWfBQlgO18DPmZTbrFerJC3+Ikw==",
"license": "MIT",
"dependencies": {
"glob": "^8.0.1",
"js-binary-schema-parser": "^2.0.2",
"simple-get": "^4.0.1",
"string-split-by": "^1.0.0"
}
},
"node_modules/vue-qr/node_modules/brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/vue-qr/node_modules/glob": {
"version": "8.1.0",
"resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"deprecated": "Glob versions prior to v9 are no longer supported",
"license": "ISC",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^5.0.1",
"once": "^1.3.0"
},
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/vue-qr/node_modules/minimatch": {
"version": "5.1.6",
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"license": "ISC",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=10"
}
},
"node_modules/vue-router": { "node_modules/vue-router": {
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.0.tgz", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.0.tgz",
@ -4318,8 +4510,7 @@
"node_modules/wrappy": { "node_modules/wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
"dev": true
}, },
"node_modules/xml-name-validator": { "node_modules/xml-name-validator": {
"version": "4.0.0", "version": "4.0.0",
@ -5474,8 +5665,12 @@
"balanced-match": { "balanced-match": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
"dev": true },
"base64-arraybuffer": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
"integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ=="
}, },
"batch-processor": { "batch-processor": {
"version": "1.0.0", "version": "1.0.0",
@ -5638,6 +5833,14 @@
"which": "^2.0.1" "which": "^2.0.1"
} }
}, },
"css-line-break": {
"version": "2.1.0",
"resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz",
"integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
"requires": {
"utrie": "^1.0.2"
}
},
"cssesc": { "cssesc": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
@ -5672,6 +5875,14 @@
"ms": "2.1.2" "ms": "2.1.2"
} }
}, },
"decompress-response": {
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz",
"integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
"requires": {
"mimic-response": "^3.1.0"
}
},
"deep-is": { "deep-is": {
"version": "0.1.4", "version": "0.1.4",
"resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
@ -6138,8 +6349,7 @@
"fs.realpath": { "fs.realpath": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
"dev": true
}, },
"fsevents": { "fsevents": {
"version": "2.3.3", "version": "2.3.3",
@ -6276,6 +6486,15 @@
"resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-2.0.1.tgz",
"integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==" "integrity": "sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A=="
}, },
"html2canvas": {
"version": "1.4.1",
"resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz",
"integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
"requires": {
"css-line-break": "^2.1.0",
"text-segmentation": "^1.0.3"
}
},
"i18next": { "i18next": {
"version": "20.6.1", "version": "20.6.1",
"resolved": "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz", "resolved": "https://registry.npmjs.org/i18next/-/i18next-20.6.1.tgz",
@ -6321,7 +6540,6 @@
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dev": true,
"requires": { "requires": {
"once": "^1.3.0", "once": "^1.3.0",
"wrappy": "1" "wrappy": "1"
@ -6330,8 +6548,7 @@
"inherits": { "inherits": {
"version": "2.0.4", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
"dev": true
}, },
"is-binary-path": { "is-binary-path": {
"version": "2.1.0", "version": "2.1.0",
@ -6399,6 +6616,11 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true "dev": true
}, },
"js-binary-schema-parser": {
"version": "2.0.3",
"resolved": "https://registry.npmmirror.com/js-binary-schema-parser/-/js-binary-schema-parser-2.0.3.tgz",
"integrity": "sha512-xezGJmOb4lk/M1ZZLTR/jaBHQ4gG/lqQnJqdIv4721DMggsa1bDVlHXNeHYogaIEHD9vCRv0fcL4hMA+Coarkg=="
},
"js-cookie": { "js-cookie": {
"version": "3.0.5", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
@ -6581,6 +6803,11 @@
"mime-db": "1.52.0" "mime-db": "1.52.0"
} }
}, },
"mimic-response": {
"version": "3.1.0",
"resolved": "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz",
"integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="
},
"minimatch": { "minimatch": {
"version": "3.1.2", "version": "3.1.2",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
@ -6656,7 +6883,6 @@
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
"requires": { "requires": {
"wrappy": "1" "wrappy": "1"
} }
@ -6702,6 +6928,11 @@
"callsites": "^3.0.0" "callsites": "^3.0.0"
} }
}, },
"parenthesis": {
"version": "3.1.8",
"resolved": "https://registry.npmmirror.com/parenthesis/-/parenthesis-3.1.8.tgz",
"integrity": "sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw=="
},
"path-exists": { "path-exists": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@ -6967,6 +7198,21 @@
"object-inspect": "^1.13.1" "object-inspect": "^1.13.1"
} }
}, },
"simple-concat": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz",
"integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="
},
"simple-get": {
"version": "4.0.1",
"resolved": "https://registry.npmmirror.com/simple-get/-/simple-get-4.0.1.tgz",
"integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
"requires": {
"decompress-response": "^6.0.0",
"once": "^1.3.1",
"simple-concat": "^1.0.0"
}
},
"slash": { "slash": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
@ -7022,6 +7268,14 @@
"resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz", "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-3.0.0.tgz",
"integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA==" "integrity": "sha512-q+8UfWDg9Itrg0yWK7oe5p/XRCJpJF9OBtXfOPgSJl+u3Xd5KI328RUEvUqSMVM9CiQUEf1QdBzJMkYGErj9QA=="
}, },
"string-split-by": {
"version": "1.0.0",
"resolved": "https://registry.npmmirror.com/string-split-by/-/string-split-by-1.0.0.tgz",
"integrity": "sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==",
"requires": {
"parenthesis": "^3.1.5"
}
},
"strip-ansi": { "strip-ansi": {
"version": "6.0.1", "version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
@ -7046,6 +7300,14 @@
"has-flag": "^4.0.0" "has-flag": "^4.0.0"
} }
}, },
"text-segmentation": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz",
"integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
"requires": {
"utrie": "^1.0.2"
}
},
"text-table": { "text-table": {
"version": "0.2.0", "version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@ -7136,6 +7398,14 @@
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true "dev": true
}, },
"utrie": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz",
"integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
"requires": {
"base64-arraybuffer": "^1.0.2"
}
},
"vite": { "vite": {
"version": "5.1.6", "version": "5.1.6",
"resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz", "resolved": "https://registry.npmjs.org/vite/-/vite-5.1.6.tgz",
@ -7270,6 +7540,47 @@
"@vue/devtools-api": "^6.5.0" "@vue/devtools-api": "^6.5.0"
} }
}, },
"vue-qr": {
"version": "4.0.9",
"resolved": "https://registry.npmmirror.com/vue-qr/-/vue-qr-4.0.9.tgz",
"integrity": "sha512-pAISV94T0MNEYA3NGjykUpsXRE2QfaNxlu9ZhEL6CERgqNc21hJYuP3hRVzAWfBQlgO18DPmZTbrFerJC3+Ikw==",
"requires": {
"glob": "^8.0.1",
"js-binary-schema-parser": "^2.0.2",
"simple-get": "^4.0.1",
"string-split-by": "^1.0.0"
},
"dependencies": {
"brace-expansion": {
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"requires": {
"balanced-match": "^1.0.0"
}
},
"glob": {
"version": "8.1.0",
"resolved": "https://registry.npmmirror.com/glob/-/glob-8.1.0.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^5.0.1",
"once": "^1.3.0"
}
},
"minimatch": {
"version": "5.1.6",
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-5.1.6.tgz",
"integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
"requires": {
"brace-expansion": "^2.0.1"
}
}
}
},
"vue-router": { "vue-router": {
"version": "4.3.0", "version": "4.3.0",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.0.tgz", "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.3.0.tgz",
@ -7295,8 +7606,7 @@
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
"dev": true
}, },
"xml-name-validator": { "xml-name-validator": {
"version": "4.0.0", "version": "4.0.0",

View File

@ -21,6 +21,7 @@
"echarts-gl": "^2.0.9", "echarts-gl": "^2.0.9",
"echarts-wordcloud": "^2.1.0", "echarts-wordcloud": "^2.1.0",
"element-plus": "^2.6.1", "element-plus": "^2.6.1",
"html2canvas": "^1.4.1",
"js-cookie": "^3.0.5", "js-cookie": "^3.0.5",
"js-table2excel": "^1.1.2", "js-table2excel": "^1.1.2",
"jsplumb": "^2.15.6", "jsplumb": "^2.15.6",
@ -38,6 +39,7 @@
"vue-demi": "^0.14.7", "vue-demi": "^0.14.7",
"vue-grid-layout": "^3.0.0-beta1", "vue-grid-layout": "^3.0.0-beta1",
"vue-i18n": "^9.10.2", "vue-i18n": "^9.10.2",
"vue-qr": "^4.0.9",
"vue-router": "^4.3.0" "vue-router": "^4.3.0"
}, },
"devDependencies": { "devDependencies": {

View File

@ -35,16 +35,16 @@ service.interceptors.response.use(
(response) => { (response) => {
// 对响应数据做点什么 // 对响应数据做点什么
const res = response.data; const res = response.data;
if (res.code && res.code !== 0) { if(res.resultCode != 0){
// `token` 过期或者账号已在别处登录 ElMessage.error(res.errorMessage);
if (res.code === 401 || res.code === 4001) { if(res.resultCode === -2){
Session.clear(); // 清除浏览器全部临时缓存 Session.clear(); // 清除浏览器全部临时缓存
window.location.href = '/'; // 去登录页 window.location.href = '/'; // 去登录页
ElMessageBox.alert('你已被登出,请重新登录', '提示', {}) ElMessageBox.alert('你已被登出,请重新登录', '提示', {})
.then(() => {}) .then(() => {})
.catch(() => {}); .catch(() => {});
} }
return Promise.reject(service.interceptors.response); // return Promise.reject(service.interceptors.response);
} else { } else {
return res; return res;
} }

View File

@ -78,6 +78,7 @@ const onSignIn = () => {
userName: state.ruleForm.userName, userName: state.ruleForm.userName,
passWord: state.ruleForm.password, passWord: state.ruleForm.password,
}).then( async (res:any) => { }).then( async (res:any) => {
state.loading.signIn = false;
console.log(res) console.log(res)
if(res.data !== null){ if(res.data !== null){
// token // token

View File

@ -2,35 +2,69 @@
<div class="orderPrinting" ref="orderPrintingRef"> <div class="orderPrinting" ref="orderPrintingRef">
<div class="title">采购送货单</div> <div class="title">采购送货单</div>
<div class="orderPrintingTop"> <div class="orderPrintingTop">
<div class="item item1"></div> <div class="item item1">
<VueQr style="width: 150px; height: 150px" :text="state.pageData.fBillNo" :size="150"></VueQr>
</div>
<div class="item item2"> <div class="item item2">
<div class="dataText"> <div class="dataText">
<span class="span1">收料通知单编号送货单号</span> <span class="span1">收料通知单编号送货单号</span>
<span class="span2">123465</span> <span class="span2">{{ state.pageData.fBillNo }}</span>
</div> </div>
<div class="dataText"> <div class="dataText">
<span class="span1">供应商名称</span> <span class="span1">供应商名称</span>
<span class="span2">123465</span> <span class="span2">{{ state.pageData.supplierName }}</span>
</div> </div>
<div class="dataText"> <div class="dataText">
<span class="span1">送货日期</span> <span class="span1">送货日期</span>
<span class="span2">123465</span> <span class="span2">{{ state.pageData.deliveryDate }}</span>
</div> </div>
<div class="dataText"> <div class="dataText">
<span class="span1">发票号</span> <span class="span1">发票号</span>
<span class="span2">123465</span> <span class="span2">{{ state.pageData.f_VHUB_Text }}</span>
</div> </div>
</div> </div>
<div class="item item3"></div> <div class="item item3">
<VueQr style="width: 150px; height: 150px" :text="state.pageData.f_VHUB_Text" :size="150"></VueQr>
</div>
</div> </div>
<avue-crud ref="crudRef" :data="state.data" :option="state.option"> </avue-crud> <avue-crud ref="crudRef" :data="props.data" :option="state.option"></avue-crud>
</div> </div>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { reactive,ref } from 'vue'; import { reactive, ref, defineProps, watch } from 'vue';
const orderPrintingRef = ref() import VueQr from 'vue-qr/src/packages/vue-qr.vue';
const orderPrintingRef = ref();
const props = defineProps({
data: {
type: Array,
default: () => [],
},
});
watch(
() => props.data,
(newData) => {
// console.log(JSON.parse(JSON.stringify(newData)))
let arr = []
arr = JSON.parse(JSON.stringify(newData))
// console.log(arr.length)
// debugger
if(arr.length !== 0){
state.pageData.fBillNo = arr[0].fBillNo
state.pageData.supplierName = arr[0].supplierName
state.pageData.deliveryDate = arr[0].deliveryDate
state.pageData.f_VHUB_Text = arr[0].f_VHUB_Text
}
}
);
const state = reactive({ const state = reactive({
pageData: {
fBillNo: '',
supplierName: '',
deliveryDate: '',
f_VHUB_Text: '',
},
option: { option: {
tip: false, tip: false,
index: false, index: false,
@ -46,34 +80,43 @@ const state = reactive({
menu: false, menu: false,
column: [ column: [
{ label: 'PO号', prop: 'purchaseOrderFBillNo' }, { label: 'PO号', prop: 'purchaseOrderFBillNo' },
{ label: '物料代码', prop: 'sheet' }, { label: '物料代码', prop: 'materialCode' },
{ label: '物料名称', prop: 'fBillNo' }, { label: '物料名称', prop: 'materialName' },
{ label: '单位', prop: 'mssSupplierLot' }, { label: '单位', prop: 'unitName' },
{ label: 'PO数量', prop: 'fSupplierLot' }, { label: 'PO数量', prop: 'purchaseQty' },
{ label: '实收数量', prop: 'materialCode' }, { label: '送货数量', prop: 'qty' },
{ label: '美金单价', prop: 'materialName' }, { label: '美塞斯批号', prop: 'mssSupplierLot' },
{ label: '供应商批号', prop: 'sendedQty' }, { label: '供应商批号', prop: 'fSupplierLot' },
], ],
}, },
data: [
{
purchaseOrderFBillNo: 1,
sheet: 1,
fBillNo: 1,
mssSupplierLot: 1,
fSupplierLot: 1,
materialCode: 1,
materialName: 1,
sendedQty: 1,
}
],
}); });
defineExpose({ defineExpose({
orderPrintingRef orderPrintingRef,
}); });
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
:deep(.el-table__inner-wrapper) {
box-sizing: border-box;
//border: 1px solid black;
}
:deep(.is-leaf) {
border-color: black;
}
:deep(.el-table__cell) {
border-color: black;
}
:deep(.el-table__cell) {
border-color: black !important;
}
:deep(.el-card) {
border: 1px solid black !important;
}
:deep(.avue-crud__header) { :deep(.avue-crud__header) {
display: none; display: none;
} }
@ -97,35 +140,47 @@ defineExpose({
} }
.orderPrintingTop { .orderPrintingTop {
height: 200px; height: 161px;
border: 1px solid #c2c4ca; border: 1px solid #000000;
box-sizing: border-box; box-sizing: border-box;
display: flex; display: flex;
.item1 { .item1 {
width: 33.33%; width: 33.33%;
height: 199px; height: 160px;
border-right: 1px solid #c2c4ca; border-right: 1px solid #000000;
display: flex;
justify-content: center;
align-items: center;
} }
.item2 { .item2 {
width: 33.33%; width: 33.33%;
height: 199px; height: 160px;
border-right: 1px solid #c2c4ca; border-right: 1px solid #000000;
box-sizing: border-box; box-sizing: border-box;
padding: 16px; padding: 16px;
.dataText { .dataText {
font-size: 16px; font-size: 16px;
margin-bottom: 16px; margin-bottom: 16px;
color: #000000;
} }
} }
.item2 { .item2 {
width: 33.33%; width: 33.33%;
height: 199px; height: 160px;
//border-right: 1px solid black; //border-right: 1px solid black;
} }
.item3 {
width: 33.33%;
height: 160px;
display: flex;
justify-content: center;
align-items: center;
}
} }
} }
</style> </style>

View File

@ -27,7 +27,7 @@
<template #menu-left> <template #menu-left>
<div class="selectBoxes"> <div class="selectBoxes">
<div class="selectItem"> <div class="selectItem">
<el-input v-model="state.formData.fBillNo" style="width: 240px" placeholder="单据编号" size="default" /> <el-input v-model="state.formData.purchaseOrderFBillNo" style="width: 240px" placeholder="采购单号" size="default" />
</div> </div>
<div class="selectItem"> <div class="selectItem">
<el-date-picker <el-date-picker
@ -52,24 +52,25 @@
</template> </template>
<template #menu> <template #menu>
<div class="btnList"> <div class="btnList">
<el-button type="text" @click="state.selectedDataShow = true">打印单据</el-button> <el-button type="text" @click="state.selectedDataShow = true">打印条码</el-button>
</div> </div>
</template> </template>
</avue-crud> </avue-crud>
</el-card> </el-card>
<selectedData :showes="state.selectedDataShow"/> <selectedData :listData="state.selectedData" :showes="state.selectedDataShow" @close="() => {state.selectedDataShow = false}"/>
</div> </div>
</template> </template>
<script lang="ts" setup> <script lang="ts" setup>
import { reactive, onMounted, computed, nextTick, ref } from 'vue'; import { reactive, onMounted, computed, nextTick } from 'vue';
import { useRouter } from 'vue-router'; // import { useRouter } from 'vue-router';
import { listApi } from '../../api/list/index'; import { listApi } from '../../api/list/index';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import SelectedData from '/@/views/materialReceiptNotice/selectedData.vue'; import SelectedData from '/@/views/materialReceiptNotice/selectedData.vue';
import { ElMessage } from 'element-plus'; // import { ElMessage } from 'element-plus';
const { t } = useI18n(); const { t } = useI18n();
const router = useRouter(); // const router = useRouter();
// //
const state = reactive({ const state = reactive({
page: { page: {
@ -78,7 +79,7 @@ const state = reactive({
pageSize: 30, pageSize: 30,
}, },
option: { option: {
height: '720', height: computed(() => window.innerHeight - (window.innerHeight * 0.25) + '') ,
tip: false, tip: false,
index: false, index: false,
menuWidth: 120, menuWidth: 120,
@ -86,7 +87,6 @@ const state = reactive({
delBtn: false, delBtn: false,
editBtn: false, editBtn: false,
align: 'center', align: 'center',
// searchLabelWidth:100,
selection: true, selection: true,
searchMenuSpan: 3, searchMenuSpan: 3,
addBtn: false, addBtn: false,
@ -99,14 +99,14 @@ const state = reactive({
searchRange: true, searchRange: true,
width:'160' width:'160'
}, },
{ label: '采购单号', prop: 'purchaseOrderFBillNo',width:'120' }, { label: '采购单号', prop: 'purchaseOrderFBillNo',width:'120' },
{ label: '发货单号', prop: 'sheet',width:'135' }, { label: '发货单号', prop: 'sheet',width:'135' },
{ label: '收料单号', prop: 'fBillNo',width:'120' }, { label: '收料单号', prop: 'fBillNo',width:'110' },
{ label: '美塞斯批号', prop: 'mssSupplierLot',width:'90' }, { label: '美塞斯批号', prop: 'mssSupplierLot',width:'90' },
{ label: '供应商批号', prop: 'fSupplierLot',width:'90' }, { label: '供应商批号', prop: 'fSupplierLot',width:'90' },
{ label: '物料编码', prop: 'materialCode',width:'120' }, { label: '物料编码', prop: 'materialCode',width:'120' },
{ label: '物料名称', prop: 'materialName' }, { label: '物料名称', prop: 'materialName' },
{ label: computed(() => t('message.list.PONumber2')), prop: 'purchaseOrderFBillNo',width:'110' },
{ label: computed(() => t('message.list.SupplierCode2')), prop: 'supplierId',width:'90' }, { label: computed(() => t('message.list.SupplierCode2')), prop: 'supplierId',width:'90' },
{ label: computed(() => t('message.list.SupplierName2')), prop: 'supplierName',width:'120' }, { label: computed(() => t('message.list.SupplierName2')), prop: 'supplierName',width:'120' },
{ label: '累计收料数量', prop: 'sendedQty',width:'110' }, { label: '累计收料数量', prop: 'sendedQty',width:'110' },
@ -118,7 +118,7 @@ const state = reactive({
data: [], data: [],
elDatePicker: '', elDatePicker: '',
formData: { formData: {
fBillNo: '', purchaseOrderFBillNo: '',
fDateBegin: '', fDateBegin: '',
fDateEmd: '', fDateEmd: '',
fmrpCloseStatus: '', fmrpCloseStatus: '',
@ -126,7 +126,7 @@ const state = reactive({
selectedData: [], selectedData: [],
chengNuoJiaoQiP: '', chengNuoJiaoQiP: '',
newChengNuoJiaoQiP: '', newChengNuoJiaoQiP: '',
selectedDataShow: true, selectedDataShow: false,
loading: false, loading: false,
}); });
const selectionChange = (list: any) => { const selectionChange = (list: any) => {
@ -134,66 +134,7 @@ const selectionChange = (list: any) => {
state.selectedData = JSON.parse(JSON.stringify(list)); state.selectedData = JSON.parse(JSON.stringify(list));
}); });
}; };
const chengNuoJiaoQiPFun = (e: string) => {
if (state.selectedData.length != 0) {
let arr: any = [];
if (e === '0') {
state.selectedData.forEach((item: any) => {
arr.push({ id: item.id, newTime: state.chengNuoJiaoQiP });
});
batchSetChengNuoJiaoQiFun(arr);
}
if (e === '1') {
state.selectedData.forEach((item: any) => {
arr.push({ id: item.id, newTime: state.newChengNuoJiaoQiP });
});
batchSetNewChengNuoJiaoQiFun(arr);
}
} else {
ElMessage.warning('请先选中数据');
}
};
const batchSetChengNuoJiaoQiFun = (arr: any) => {
listApi()
.batchSetChengNuoJiaoQi(arr)
.then((res: any) => {
if (res.resultCode === 0) {
ElMessage.success('操作成功');
getList();
state.chengNuoJiaoQiP = '';
}
if (res.resultCode === -1) {
ElMessage.success(res.errorMessage);
state.newChengNuoJiaoQiP = '';
}
});
};
const batchSetNewChengNuoJiaoQiFun = (arr: any) => {
listApi()
.batchSetNewChengNuoJiaoQi(arr)
.then((res: any) => {
if (res.resultCode === 0) {
ElMessage.success('操作成功');
getList();
}
if (res.resultCode === -1) {
ElMessage.success(res.errorMessage);
}
});
};
const generateDocumentsFun = () => {
state.selectedDataShow = false;
getList();
};
//
const toPurchaseDetails = (item: any) => {
router.push({
path: '/purchaseDetails',
query: {
topId: item.fiD,
},
});
};
const elDatePickerFun = (val: any) => { const elDatePickerFun = (val: any) => {
state.formData.fDateBegin = val[0]; state.formData.fDateBegin = val[0];
state.formData.fDateEmd = val[1]; state.formData.fDateEmd = val[1];
@ -206,10 +147,10 @@ const selectFun = () => {
}; };
const resetFun = () => { const resetFun = () => {
state.page.currentPage = 1; state.page.currentPage = 1;
state.page.pageSize = 20; state.page.pageSize = 30;
state.elDatePicker = ''; state.elDatePicker = '';
state.formData = { state.formData = {
fBillNo: '', purchaseOrderFBillNo: '',
fDateBegin: '', fDateBegin: '',
fDateEmd: '', fDateEmd: '',
fmrpCloseStatus: '', fmrpCloseStatus: '',
@ -238,7 +179,9 @@ const getList = () => {
}); });
}; };
// //
onMounted(() => {}); onMounted(() => {
// console.log(window.innerHeight - 400)
});
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@ -249,7 +192,10 @@ onMounted(() => {});
:deep(.avue-crud__left) { :deep(.avue-crud__left) {
flex: 1; flex: 1;
} }
:deep(.el-button--text){
padding: 0 !important;
height: auto !important;
}
:deep(.avue-crud__refreshBtn) { :deep(.avue-crud__refreshBtn) {
display: none; display: none;
} }

View File

@ -1,17 +1,21 @@
<template> <template>
<el-dialog :model-value="props.showes" width="70%"> <el-dialog :model-value="props.showes" @close="closeFun" width="70%">
<ceshi ref="ceshiRef"></ceshi> <div ref="ceshiRef">
<ceshi id="ceshi" :data="props.listData"></ceshi>
</div>
<div class="btnList"> <div class="btnList">
<el-button type="primary" @click="printElement">打印</el-button> <el-button type="primary" @click="printElement">打印</el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { defineProps, reactive, ref, nextTick } from 'vue'; import { defineProps, reactive, ref, nextTick, defineEmits } from 'vue';
import ceshi from './ceshi.vue'; import ceshi from './ceshi.vue';
import printJS from 'print-js'; import printJS from 'print-js';
import html2canvas from 'html2canvas';
const ceshiRef = ref(null); const ceshiRef = ref();
const emits = defineEmits(['close']);
const props = defineProps({ const props = defineProps({
listData: { listData: {
type: Array, type: Array,
@ -23,29 +27,43 @@ const props = defineProps({
}, },
}); });
const state = reactive({ const state = reactive({
dialogVisible: true, snapshotUrl: '',
}); });
const closeFun = () => {
emits('close');
};
const printElement = () => { const printElement = () => {
captureSnapshot();
// DOM HTML // DOM HTML
nextTick(() => { nextTick(() => {
console.log(ceshiRef.value.orderPrintingRef);
// // 使 print-js
printJS({ printJS({
printable: ceshiRef.value.orderPrintingRef, printable: state.snapshotUrl,
type: 'html', // HTML type: 'image',
style: ` style: `
@page { @page {
margin: 0; size: auto;
size: auto; margin: 0mm;
} }
@page :header, @page :footer { body {
display: none; margin: 0;
} padding: 36px;
}
`, `,
}); });
}); });
}; };
//
const captureSnapshot = async () => {
// 使 html2canvas div Canvas
const canvas = await html2canvas(ceshiRef.value, {
allowTaint: true, //
useCORS: true, // 使 CORS
scale: 2, //
width: ceshiRef.value.clientWidth,
height: ceshiRef.value.clientHeight,
});
state.snapshotUrl = canvas.toDataURL('image/png');
};
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.btnList { .btnList {

View File

@ -137,11 +137,11 @@ const state = reactive({
pageSize: 30, pageSize: 30,
}, },
option: { option: {
height: '730', height: computed(() => window.innerHeight - (window.innerHeight * 0.23) + ''),
tip: false, tip: false,
index: true, index: true,
menu: true, menu: true,
menuWidth: 120, menuWidth: 85,
border: true, border: true,
delBtn: false, delBtn: false,
editBtn: false, editBtn: false,
@ -152,7 +152,7 @@ const state = reactive({
searchMenuSpan: 3, searchMenuSpan: 3,
addBtn: false, addBtn: false,
column: [ column: [
{ label: '据编号', prop: 'fBillNo', /*search: true,*/ searchSpan: 3, width: '125' }, { label: '采购单号', prop: 'fBillNo', /*search: true,*/ searchSpan: 3, width: '125' },
{ label: '采购日期', prop: 'fDate', /*search: true,*/ type: 'datetime', searchSpan: 6, searchRange: true }, { label: '采购日期', prop: 'fDate', /*search: true,*/ type: 'datetime', searchSpan: 6, searchRange: true },
{ {
label: '关闭状态', label: '关闭状态',
@ -180,8 +180,8 @@ const state = reactive({
}, },
{ label: '累计收料数量', prop: 'sendedQty', width: '110' }, { label: '累计收料数量', prop: 'sendedQty', width: '110' },
{ label: '剩余收料数量', prop: 'notSendQty', width: '110' }, { label: '剩余收料数量', prop: 'notSendQty', width: '110' },
{ label: '供应商承诺交期', prop: 'chengNuoJiaoQi', width: '220' }, { label: '供应商承诺交期', prop: 'chengNuoJiaoQi', width: '160' },
{ label: '供应商承诺最新交期', prop: 'newChengNuoJiaoQi', width: '220' }, { label: '供应商承诺最新交期', prop: 'newChengNuoJiaoQi', width: '160' },
], ],
}, },
data: [], data: [],
@ -259,7 +259,7 @@ const toPurchaseDetails = (item: any) => {
router.push({ router.push({
path: '/purchaseDetails', path: '/purchaseDetails',
query: { query: {
topId: item.fiD, fBillNo: item.fBillNo ,
}, },
}); });
}; };
@ -275,7 +275,7 @@ const selectFun = () => {
}; };
const resetFun = () => { const resetFun = () => {
state.page.currentPage = 1; state.page.currentPage = 1;
state.page.pageSize = 20; state.page.pageSize = 30;
state.elDatePicker = ''; state.elDatePicker = '';
state.formData = { state.formData = {
fBillNo: '', fBillNo: '',
@ -300,20 +300,16 @@ const getList = () => {
}) })
.then((res: any) => { .then((res: any) => {
state.loading = false; state.loading = false;
if (res.resultCode === 0) { if (res.resultCode === 0) {
state.data = res.data.dataList; state.data = res.data.dataList;
state.page.total = res.data.total; state.page.total = res.data.total;
setTimeout(() => {
console.log(document.querySelector('.avue-crud__body').scrollHeight)
},1000)
} }
}); });
}; };
// //
onMounted(() => { onMounted(() => {
console.log(window.innerHeight - window.innerHeight * 0.25 + '')
}); });
</script> </script>

View File

@ -1,6 +1,32 @@
<template> <template>
<div class="system-user-container layout-padding"> <div class="system-user-container layout-padding">
<el-card class="layout-padding-auto" shadow="hover"> <el-card class="layout-padding-auto" shadow="hover">
<div class="selectBoxes">
<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>
</el-button>
<el-date-picker
v-model="state.chengNuoJiaoQiP"
type="date"
placeholder="批量修改选中承诺日期"
size="small"
style="width: 45%; margin-left: 12px"
@change="chengNuoJiaoQiPFun('0')"
/>
<el-date-picker
v-model="state.newChengNuoJiaoQiP"
type="date"
placeholder="批量修改选中承诺最新交期"
size="small"
style="width: 45%; margin-left: 12px"
@change="chengNuoJiaoQiPFun('1')"
/>
</div>
</div>
</div>
<avue-crud <avue-crud
ref="crudRef" ref="crudRef"
:data="state.data" :data="state.data"
@ -65,7 +91,7 @@ const state = reactive({
pageSize: 25, pageSize: 25,
}, },
option: { option: {
height: '790', height: computed(() => window.innerHeight - (window.innerHeight * 0.18) + ''),
tip: false, tip: false,
index: true, index: true,
menuWidth: 120, menuWidth: 120,
@ -129,6 +155,7 @@ const state = reactive({
const selectionChange = (list: any) => { const selectionChange = (list: any) => {
state.selectedData = list; state.selectedData = list;
}; };
const chengNuoJiaoQiPFun = (e: string) => { const chengNuoJiaoQiPFun = (e: string) => {
if (state.selectedData.length != 0) { if (state.selectedData.length != 0) {
let arr: any = []; let arr: any = [];
@ -136,13 +163,13 @@ const chengNuoJiaoQiPFun = (e: string) => {
state.selectedData.forEach((item: any) => { state.selectedData.forEach((item: any) => {
arr.push({ id: item.id, newTime: state.chengNuoJiaoQiP }); arr.push({ id: item.id, newTime: state.chengNuoJiaoQiP });
}); });
batchSetChengNuoJiaoQiFun(arr) batchSetChengNuoJiaoQiFun(arr);
} }
if (e === '1') { if (e === '1') {
state.selectedData.forEach((item: any) => { state.selectedData.forEach((item: any) => {
arr.push({ id: item.id, newTime: state.newChengNuoJiaoQiP }); arr.push({ id: item.id, newTime: state.newChengNuoJiaoQiP });
}); });
batchSetNewChengNuoJiaoQiFun(arr) batchSetNewChengNuoJiaoQiFun(arr);
} }
} else { } else {
ElMessage.warning('请先选中数据'); ElMessage.warning('请先选中数据');
@ -176,52 +203,28 @@ const generateDocumentsFun = () => {
state.selectedDataShow = false state.selectedDataShow = false
getList() getList()
} }
//
const toPurchaseDetails = (item: any) => {
router.push({
path: '/purchaseDetails',
query: {
topId: item.fiD,
},
});
};
const elDatePickerFun = (val: any) => {
state.formData.fDateBegin = val[0];
state.formData.fDateEmd = val[1];
};
//
const selectFun = () => {
state.page.currentPage = 1;
state.page.pageSize = 20;
getList();
};
const resetFun = () => {
state.page.currentPage = 1;
state.page.pageSize = 20;
state.elDatePicker = '';
state.formData = {
fBillNo: '',
fDateBegin: '',
fDateEmd: '',
fmrpCloseStatus: '',
};
getList();
};
const getList = () => { const getList = () => {
state.loading = true state.loading = true;
listApi().getPurchaseOrderItemList({ listApi()
fid:state.topId .getPageList({
}).then((res:any) => { condition: {
state.loading = false fBillNo:state.formData.fBillNo
if(res.resultCode === 0){ },
state.data = res.data pageSize: state.page.pageSize,
} page: state.page.currentPage,
}) })
.then((res: any) => {
state.loading = false;
if (res.resultCode === 0) {
state.data = res.data.dataList;
state.page.total = res.data.total;
}
});
}; };
// //
onMounted(() => { onMounted(() => {
state.topId = route.query.topId as string state.formData.fBillNo = route.query.fBillNo as string
getList() getList()
}); });
</script> </script>
@ -281,6 +284,7 @@ onMounted(() => {
.selectBoxes { .selectBoxes {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
width: 650px;
.selectItem { .selectItem {
margin-right: 16px; margin-right: 16px;
display: flex; display: flex;

View File

@ -1,63 +1,80 @@
<template> <template>
<el-dialog :model-value="props.showes" @close="closeFun" width="80%"> <el-dialog :model-value="props.showes" @close="closeFun" width="80%">
<avue-crud <div style="display: flex; align-items: center; margin-bottom: 16px">
ref="crudRef" <div>发票号</div>
:data="state.data" <el-input style="width: 300px" v-model="state.f_VHUB_Text" placeholder="请填写发票号" size="default" />
:option="state.option" </div>
> <avue-crud ref="crudRef" :data="state.data" :option="state.option">
<template #fSupplierLot="{row}"> <template #fSupplierLot="{ row }">
<div style="display: flex;align-items: center;justify-content: center"> <div style="display: flex; align-items: center; justify-content: center">
<el-input v-model="row.fSupplierLot" placeholder="批号" size="small"/> <el-input v-model="row.fSupplierLot" placeholder="批号" size="small" />
</div> </div>
</template> </template>
<template #notSendQty="{row}"> <template #notSendQtyText="{ row }">
<div style="display: flex;align-items: center;justify-content: center"> <div>{{row.notSendQty}}</div>
<el-input-number v-model="row.notSendQty" size="small"/> </template>
</div> <template #notSendQty="{ row }">
</template> <div style="display: flex; align-items: center; justify-content: center">
<template #chengNuoJiaoQi="{row}"> <el-input-number v-model="row.notSendQty" size="small" />
<div style="display: flex;align-items: center;justify-content: center"> </div>
<el-date-picker v-model="row.chengNuoJiaoQi" type="date" size="small" style="width: 100%" format="YYYY/MM/DD" </template>
@change="batchSetChengNuoJiaoQiFun([{id:row.id,newTime:row.chengNuoJiaoQi}])"/> <template #chengNuoJiaoQi="{ row }">
</div> <div style="display: flex; align-items: center; justify-content: center">
</template> <el-date-picker
<template #newChengNuoJiaoQi="{row}"> v-model="row.chengNuoJiaoQi"
<div style="display: flex;align-items: center;justify-content: center"> type="date"
<el-date-picker v-model="row.newChengNuoJiaoQi" type="date" size="small" style="width: 100%" format="YYYY/MM/DD" size="small"
@change="batchSetNewChengNuoJiaoQiFun([{id:row.id,newTime:row.newChengNuoJiaoQi}])"/> style="width: 100%"
</div> format="YYYY/MM/DD"
</template> @change="batchSetChengNuoJiaoQiFun([{ id: row.id, newTime: row.chengNuoJiaoQi }])"
<template #menu-left> />
<div class="selectBoxes"> </div>
<el-date-picker </template>
v-model="state.chengNuoJiaoQiP" <template #newChengNuoJiaoQi="{ row }">
type="date" <div style="display: flex; align-items: center; justify-content: center">
placeholder="批量修改选中承诺日期" <el-date-picker
style="width: 190px;" v-model="row.newChengNuoJiaoQi"
@change="chengNuoJiaoQiPFun('0')" type="date"
/> size="small"
<el-date-picker style="width: 100%"
v-model="state.newChengNuoJiaoQiP" format="YYYY/MM/DD"
type="date" @change="batchSetNewChengNuoJiaoQiFun([{ id: row.id, newTime: row.newChengNuoJiaoQi }])"
placeholder="批量修改选中承诺最新交期" />
style="width: 190px; margin-left: 12px" </div>
@change="chengNuoJiaoQiPFun('1')" </template>
/> <template #menu-left>
<el-input v-model="state.fSupplierLot" style="width: 190px;margin-left: 12px" placeholder="批号" @input="fSupplierLotFun"/> <div class="selectBoxes">
</div> <el-date-picker
</template> v-model="state.chengNuoJiaoQiP"
</avue-crud> type="date"
placeholder="批量修改选中承诺日期"
style="width: 190px"
@change="chengNuoJiaoQiPFun('0')"
/>
<el-date-picker
v-model="state.newChengNuoJiaoQiP"
type="date"
placeholder="批量修改选中承诺最新交期"
style="width: 190px; margin-left: 12px"
@change="chengNuoJiaoQiPFun('1')"
/>
<el-input v-model="state.fSupplierLot" style="width: 190px; margin-left: 12px" placeholder="批号" @input="fSupplierLotFun" />
</div>
</template>
</avue-crud>
<div class="btnList"> <div class="btnList">
<el-button type="primary" @click="batchAddInvoiceOrderFun">确定</el-button> <el-button type="primary" :loading="state.loading" @click="batchAddInvoiceOrderFun">确定</el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { defineProps, reactive, defineEmits, watch } from 'vue'; import { defineProps, reactive, defineEmits, watch } from 'vue';
import { listApi } from '../../api/list/index' import { listApi } from '../../api/list/index';
const emits = defineEmits(['generateDocuments','close']);
const emits = defineEmits(['generateDocuments', 'close']);
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import {ElMessage} from "element-plus"; import { ElMessage } from 'element-plus';
const { t } = useI18n(); const { t } = useI18n();
const props = defineProps({ const props = defineProps({
listData: { listData: {
@ -71,10 +88,12 @@ const props = defineProps({
}); });
const state = reactive({ const state = reactive({
fSupplierLot:'', loading:false,
f_VHUB_Text: '',
fSupplierLot: '',
dialogVisible: true, dialogVisible: true,
data: [], data: [],
show:true, show: true,
formData: {}, formData: {},
option: { option: {
tip: false, tip: false,
@ -92,204 +111,227 @@ const state = reactive({
column: [ column: [
{ label: 'PO号', prop: 'fBillNo' }, { label: 'PO号', prop: 'fBillNo' },
{ label: '物料编码', prop: 'materialCode' }, { label: '物料编码', prop: 'materialCode' },
{ label: '物料名称', prop: 'materialName',width:'180' }, { label: '物料名称', prop: 'materialName', width: '180' },
{ label: '采购单位', prop: 'unitName' }, { label: '采购单位', prop: 'unitName' },
{ label: '采购数量', prop: 'qty' }, { label: '采购数量', prop: 'qty' },
{ label: '已发货数量', prop: 'sendedQty' }, { label: '已发货数量', prop: 'sendedQty' },
{ label: '剩余收料数量', prop: 'notSendQtyText' },
{ label: '批号', prop: 'fSupplierLot' }, { label: '批号', prop: 'fSupplierLot' },
{ label: '本次发货数量', prop: 'notSendQty',width:'180' }, { label: '本次发货数量', prop: 'notSendQty', width: '180' },
{ label: '供应商承诺交期', prop: 'chengNuoJiaoQi',width:'180' }, { label: '供应商承诺交期', prop: 'chengNuoJiaoQi', width: '180' },
{ label: '供应商承诺最新交期', prop: 'newChengNuoJiaoQi',width:'180' }, { label: '供应商承诺最新交期', prop: 'newChengNuoJiaoQi', width: '180' },
], ],
}, },
topId: '', topId: '',
chengNuoJiaoQiP:'', chengNuoJiaoQiP: '',
newChengNuoJiaoQiP:'', newChengNuoJiaoQiP: '',
}); });
watch(() => props.listData,() => { watch(
state.data = props.listData () => props.listData,
}) () => {
state.data = props.listData;
}
);
const fSupplierLotFun = () => { const fSupplierLotFun = () => {
state.data.forEach((item:any) => { state.data.forEach((item: any) => {
item.fSupplierLot = state.fSupplierLot item.fSupplierLot = state.fSupplierLot;
}) });
console.log(state.data) console.log(state.data);
// state.fSupplierLot = ''; // state.fSupplierLot = '';
}
const chengNuoJiaoQiPFun = (e: string) => {
let arr: any = [];
if (e === '0') {
state.data.forEach((item: any) => {
arr.push({ id: item.id, newTime: state.chengNuoJiaoQiP });
});
batchSetChengNuoJiaoQiFun(arr)
}
if (e === '1') {
state.data.forEach((item: any) => {
arr.push({ id: item.id, newTime: state.newChengNuoJiaoQiP });
});
batchSetNewChengNuoJiaoQiFun(arr)
}
}; };
const batchSetChengNuoJiaoQiFun = (arr:any) => { const chengNuoJiaoQiPFun = (e: string) => {
listApi().batchSetChengNuoJiaoQi(arr).then((res: any) => { let arr: any = [];
if (res.resultCode === 0) { if (e === '0') {
ElMessage.success('操作成功'); state.data.forEach((item: any) => {
state.data.forEach((item:any) => { arr.push({ id: item.id, newTime: state.chengNuoJiaoQiP });
item.chengNuoJiaoQi = state.chengNuoJiaoQiP });
}) batchSetChengNuoJiaoQiFun(arr);
// state.chengNuoJiaoQiP = ''; }
} if (e === '1') {
if (res.resultCode === -1) { state.data.forEach((item: any) => {
ElMessage.success(res.errorMessage); arr.push({ id: item.id, newTime: state.newChengNuoJiaoQiP });
// state.newChengNuoJiaoQiP = ''; });
} batchSetNewChengNuoJiaoQiFun(arr);
}); }
} };
const batchSetNewChengNuoJiaoQiFun = (arr:any) => { const batchSetChengNuoJiaoQiFun = (arr: any) => {
listApi().batchSetNewChengNuoJiaoQi(arr).then((res: any) => { listApi()
if (res.resultCode === 0) { .batchSetChengNuoJiaoQi(arr)
ElMessage.success('操作成功'); .then((res: any) => {
if (res.resultCode === 0) {
ElMessage.success('操作成功');
state.data.forEach((item: any) => {
item.chengNuoJiaoQi = state.chengNuoJiaoQiP;
});
// state.chengNuoJiaoQiP = '';
}
if (res.resultCode === -1) {
ElMessage.success(res.errorMessage);
// state.newChengNuoJiaoQiP = '';
}
});
};
const batchSetNewChengNuoJiaoQiFun = (arr: any) => {
listApi()
.batchSetNewChengNuoJiaoQi(arr)
.then((res: any) => {
if (res.resultCode === 0) {
ElMessage.success('操作成功');
state.data.forEach((item:any) => { state.data.forEach((item: any) => {
item.newChengNuoJiaoQi = state.newChengNuoJiaoQiP item.newChengNuoJiaoQi = state.newChengNuoJiaoQiP;
}) });
// state.chengNuoJiaoQiP = ''; // state.chengNuoJiaoQiP = '';
} }
if (res.resultCode === -1) { if (res.resultCode === -1) {
ElMessage.success(res.errorMessage); ElMessage.success(res.errorMessage);
// state.newChengNuoJiaoQiP = ''; // state.newChengNuoJiaoQiP = '';
} }
}); });
} };
const batchAddInvoiceOrderFun = () => { const batchAddInvoiceOrderFun = () => {
console.log(props.listData) if(props.listData.length != 0){
let arr:any = [] state.loading = true
props.listData.forEach((item:any) => { console.log(props.listData);
arr.push({ let arr: any = [];
id:item.id, props.listData.forEach((item: any) => {
qty:item.notSendQty arr.push({
}) id: item.id,
}) qty: item.notSendQty,
listApi().batchAddInvoiceOrder(arr).then((res:any) => { });
if(res.resultCode === 0){ });
ElMessage.success('操作成功'); listApi()
emits('generateDocuments') .batchAddInvoiceOrder({ f_VHUB_Text: state.f_VHUB_Text, upDateList: arr })
} .then((res: any) => {
if(res.resultCode === -1){ state.loading = false
ElMessage.error(res.errorMessage); if (res.resultCode === 0) {
} ElMessage.success('操作成功');
}) emits('generateDocuments');
} }
if (res.resultCode === -1) {
ElMessage.error(res.errorMessage);
}
});
} else {
ElMessage.error('没有数据')
}
};
const closeFun = () => { const closeFun = () => {
emits('close') emits('close');
} };
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
:deep(.el-card) {
padding: 0 !important;
//height: 56px !important;
}
.btnList { .btnList {
margin-top: 26px; margin-top: 26px;
display: flex; display: flex;
justify-content: center; justify-content: center;
} }
:deep(.avue-crud__left) { :deep(.avue-crud__left) {
flex: 1; flex: 1;
} }
:deep(.avue-crud__refreshBtn) { :deep(.avue-crud__refreshBtn) {
display: none; display: none;
} }
:deep(.avue-crud__gridBtn) { :deep(.avue-crud__gridBtn) {
display: none; display: none;
} }
.piliang { .piliang {
margin-left: 12px; margin-left: 12px;
border: 1px solid #d5d5d5; border: 1px solid #d5d5d5;
border-radius: 8px; border-radius: 8px;
flex: 1; flex: 1;
display: flex; display: flex;
align-items: center; align-items: center;
box-sizing: border-box; box-sizing: border-box;
padding: 4px; padding: 4px;
} }
.system-user-container { .system-user-container {
//padding: 0 !important; //padding: 0 !important;
} }
.multi-line-omit { .multi-line-omit {
word-break: break-all; // word-break: break-all; //
text-overflow: ellipsis; // text-overflow: ellipsis; //
overflow: hidden; // overflow: hidden; //
display: -webkit-box; // display: -webkit-box; //
-webkit-line-clamp: 1; // -webkit-line-clamp: 1; //
-webkit-box-orient: vertical; // -- -webkit-box-orient: vertical; // --
} }
.selectBoxes { .selectBoxes {
display: flex; display: flex;
flex: 1; flex: 1;
.selectItem { .selectItem {
margin-right: 16px; margin-right: 16px;
display: flex; display: flex;
} }
} }
:deep(.avue-crud) { :deep(.avue-crud) {
height: 100%; height: 100%;
width: 100%; width: 100%;
} }
:deep(.avue-crud--card) { :deep(.avue-crud--card) {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex: 1; flex: 1;
} }
:deep(.avue-crud__body) { :deep(.avue-crud__body) {
flex: 1; flex: 1;
} }
:deep(.el-table__header) { :deep(.el-table__header) {
height: 40px; height: 40px;
} }
:deep(.el-card__body) { :deep(.el-card__body) {
width: 100% !important; width: 100% !important;
height: 100% !important; height: 100% !important;
overflow: hidden !important; overflow: hidden !important;
padding: 0 !important; padding: 0 !important;
} }
:deep(.el-table__cell) { :deep(.el-table__cell) {
//padding: 0 !important; //padding: 0 !important;
//height: 56px !important; //height: 56px !important;
} }
:deep(.el-card) { :deep(.el-card) {
padding: 12px; padding: 12px;
} }
:deep(.el-form) { :deep(.el-form) {
flex: 1; flex: 1;
} }
.system-user-container { .system-user-container {
:deep(.el-card__body) { :deep(.el-card__body) {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
flex: 1; flex: 1;
overflow: auto; overflow: auto;
.el-table { .el-table {
flex: 1; flex: 1;
} }
} }
} }
:deep(.el-col) { :deep(.el-col) {
margin-bottom: 16px; margin-bottom: 16px;
} }
</style> </style>

View File

@ -1,20 +1,20 @@
<template> <template>
<div class="system-user-dialog-container"> <div class="system-user-dialog-container">
<el-dialog :title="state.dialog.title" v-model="state.dialog.isShowDialog" width="769px"> <el-dialog :title="state.dialog.title" v-model="state.dialog.isShowDialog" width="769px" @close="closeDialog">
<el-form ref="userDialogFormRef" :model="state.ruleForm" size="default" label-width="90px"> <el-form ref="userDialogFormRef" :model="state.ruleForm" size="default" label-width="90px">
<el-row :gutter="35"> <el-row :gutter="35">
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="账号"> <el-form-item label="账号" prop="login">
<el-input v-model="state.ruleForm.login" placeholder="请输入账号" clearable></el-input> <el-input v-model="state.ruleForm.login" placeholder="请输入账号" clearable></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="名称"> <el-form-item label="名称" prop="name">
<el-input v-model="state.ruleForm.name" placeholder="请输入名称" clearable></el-input> <el-input v-model="state.ruleForm.name" placeholder="请输入名称" clearable></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="国外账号"> <el-form-item label="国外账号" prop="ifForeign">
<el-select placeholder="业务状态" size="default" style="width: 240px" v-model="state.ruleForm.ifForeign"> <el-select placeholder="业务状态" size="default" style="width: 240px" v-model="state.ruleForm.ifForeign">
<el-option label="是" value="1" /> <el-option label="是" value="1" />
<el-option label="否" value="0" /> <el-option label="否" value="0" />
@ -22,25 +22,25 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="手机号"> <el-form-item label="手机号" prop="mobile">
<el-input v-model="state.ruleForm.mobile" placeholder="请输入手机号" clearable></el-input> <el-input v-model="state.ruleForm.mobile" placeholder="请输入手机号" clearable></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="账号类型"> <el-form-item label="账号类型" prop="systemType">
<el-select placeholder="账号类型" size="default" style="width: 240px" v-model="state.ruleForm.systemType"> <el-select placeholder="账号类型" size="default" style="width: 240px" v-model="state.ruleForm.systemType">
<el-option label="管理员" value="1" /> <el-option label="管理员" value="1" />
<el-option label="供应商" value="0" /> <el-option label="供应商" value="0" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20" v-if="state.ruleForm.systemType === '0'">
<el-form-item label="供应商"> <el-form-item label="供应商" prop="supplierId">
<el-select <el-select
placeholder="请选择供应商" placeholder="请选择供应商"
size="default" size="default"
style="width: 240px" style="width: 240px"
v-model="state.BDSupplierListItem" v-model="state.ruleForm.supplierId"
@change="BDSupplierListItemChange" @change="BDSupplierListItemChange"
> >
<el-option :label="item.text" :value="item.value" v-for="(item, index) of state.BDSupplierList" :key="index" /> <el-option :label="item.text" :value="item.value" v-for="(item, index) of state.BDSupplierList" :key="index" />
@ -48,7 +48,7 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20">
<el-form-item label="账户密码"> <el-form-item label="账户密码" prop="password">
<el-input v-model="state.ruleForm.password" placeholder="请输入" type="password" clearable></el-input> <el-input v-model="state.ruleForm.password" placeholder="请输入" type="password" clearable></el-input>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -75,10 +75,10 @@ const emit = defineEmits(['refresh']);
const userDialogFormRef = ref(); const userDialogFormRef = ref();
const state = reactive({ const state = reactive({
BDSupplierList:[], BDSupplierList:[],
BDSupplierListItem:{}, BDSupplierListItem:null,
ruleForm: { ruleForm: {
ifForeign:'', ifForeign:'0',
systemType:0, systemType:'0',
login: '', // login: '', //
name: '', // name: '', //
mobile: '', // mobile: '', //
@ -103,6 +103,7 @@ const openDialog = (type: string, row: any) => {
state.ruleForm.login = row.login state.ruleForm.login = row.login
state.ruleForm.name = row.name state.ruleForm.name = row.name
state.ruleForm.mobile = row.mobile state.ruleForm.mobile = row.mobile
state.ruleForm.password = '******'
state.BDSupplierListItem = row.supplierId state.BDSupplierListItem = row.supplierId
state.dialog.title = '修改用户'; state.dialog.title = '修改用户';
state.dialog.submitTxt = '修 改'; state.dialog.submitTxt = '修 改';
@ -110,9 +111,7 @@ const openDialog = (type: string, row: any) => {
state.dialog.title = '新增用户'; state.dialog.title = '新增用户';
state.dialog.submitTxt = '新 增'; state.dialog.submitTxt = '新 增';
// 使 // 使
nextTick(() => {
userDialogFormRef.value.resetFields();
});
} }
state.dialog.isShowDialog = true; state.dialog.isShowDialog = true;
getMenuData(); getMenuData();
@ -120,6 +119,9 @@ const openDialog = (type: string, row: any) => {
// //
const closeDialog = () => { const closeDialog = () => {
state.dialog.isShowDialog = false; state.dialog.isShowDialog = false;
nextTick(() => {
userDialogFormRef.value.resetFields();
});
}; };
// //
const onCancel = () => { const onCancel = () => {
@ -127,14 +129,17 @@ const onCancel = () => {
}; };
// //
const onSubmit = () => { const onSubmit = () => {
closeDialog();
closeDialog();
emit('refresh', {...state.ruleForm,dataState:state.dialog.title === '新增用户' ? '0':'1'}); emit('refresh', {...state.ruleForm,dataState:state.dialog.title === '新增用户' ? '0':'1'});
}; };
const BDSupplierListItemChange = (item:any) => { const BDSupplierListItemChange = (val:any) => {
state.ruleForm.supplierId = item.value
state.ruleForm.supplierName = item.text let dbsObj:any = state.BDSupplierList.find(item => item.value === val);
console.log(dbsObj)
state.ruleForm.supplierId = dbsObj.value
state.ruleForm.supplierName = dbsObj.text
} }
// //