Commit 58e98b24 by wuqian

Merge branch 'master' of http://47.99.244.21:9999/qinjianhui/factory_front into wq

parents cf737d7e 2f95fa32
......@@ -19,7 +19,8 @@
"splitpanes": "^3.1.5",
"vue": "^3.4.19",
"vue-dompurify-html": "^5.1.0",
"vue-router": "^4.3.0"
"vue-router": "^4.3.0",
"vue-tsc": "^2.1.10"
},
"devDependencies": {
"@types/splitpanes": "^2.2.6",
......@@ -35,8 +36,7 @@
"unplugin-auto-import": "^0.17.5",
"unplugin-icons": "^0.18.5",
"unplugin-vue-components": "^0.26.0",
"vite": "^5.1.4",
"vue-tsc": "^1.8.27"
"vite": "^5.1.4"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
......@@ -69,10 +69,29 @@
"url": "https://github.com/sponsors/antfu"
}
},
"node_modules/@babel/helper-string-parser": {
"version": "7.25.9",
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
"integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.25.9",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
"integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
"version": "7.24.7",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.24.7.tgz",
"integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==",
"version": "7.26.2",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.26.2.tgz",
"integrity": "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==",
"dependencies": {
"@babel/types": "^7.26.0"
},
"bin": {
"parser": "bin/babel-parser.js"
},
......@@ -91,6 +110,18 @@
"node": ">=6.9.0"
}
},
"node_modules/@babel/types": {
"version": "7.26.0",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.26.0.tgz",
"integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==",
"dependencies": {
"@babel/helper-string-parser": "^7.25.9",
"@babel/helper-validator-identifier": "^7.25.9"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@ctrl/tinycolor": {
"version": "3.6.1",
"resolved": "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz",
......@@ -1340,31 +1371,26 @@
}
},
"node_modules/@volar/language-core": {
"version": "1.11.1",
"resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-1.11.1.tgz",
"integrity": "sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==",
"dev": true,
"version": "2.4.10",
"resolved": "https://registry.npmmirror.com/@volar/language-core/-/language-core-2.4.10.tgz",
"integrity": "sha512-hG3Z13+nJmGaT+fnQzAkS0hjJRa2FCeqZt6Bd+oGNhUkQ+mTFsDETg5rqUTxyzIh5pSOGY7FHCWUS8G82AzLCA==",
"dependencies": {
"@volar/source-map": "1.11.1"
"@volar/source-map": "2.4.10"
}
},
"node_modules/@volar/source-map": {
"version": "1.11.1",
"resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-1.11.1.tgz",
"integrity": "sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==",
"dev": true,
"dependencies": {
"muggle-string": "^0.3.1"
}
"version": "2.4.10",
"resolved": "https://registry.npmmirror.com/@volar/source-map/-/source-map-2.4.10.tgz",
"integrity": "sha512-OCV+b5ihV0RF3A7vEvNyHPi4G4kFa6ukPmyVocmqm5QzOd8r5yAtiNvaPEjl8dNvgC/lj4JPryeeHLdXd62rWA=="
},
"node_modules/@volar/typescript": {
"version": "1.11.1",
"resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-1.11.1.tgz",
"integrity": "sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==",
"dev": true,
"version": "2.4.10",
"resolved": "https://registry.npmmirror.com/@volar/typescript/-/typescript-2.4.10.tgz",
"integrity": "sha512-F8ZtBMhSXyYKuBfGpYwqA5rsONnOwAVvjyE7KPYJ7wgZqo2roASqNWUnianOomJX5u1cxeRooHV59N0PhvEOgw==",
"dependencies": {
"@volar/language-core": "1.11.1",
"path-browserify": "^1.0.1"
"@volar/language-core": "2.4.10",
"path-browserify": "^1.0.1",
"vscode-uri": "^3.0.8"
}
},
"node_modules/@vue/compiler-core": {
......@@ -1413,6 +1439,15 @@
"@vue/shared": "3.4.20"
}
},
"node_modules/@vue/compiler-vue2": {
"version": "2.7.16",
"resolved": "https://registry.npmmirror.com/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz",
"integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==",
"dependencies": {
"de-indent": "^1.0.2",
"he": "^1.2.0"
}
},
"node_modules/@vue/devtools-api": {
"version": "6.6.1",
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.1.tgz",
......@@ -1633,20 +1668,18 @@
}
},
"node_modules/@vue/language-core": {
"version": "1.8.27",
"resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-1.8.27.tgz",
"integrity": "sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==",
"dev": true,
"dependencies": {
"@volar/language-core": "~1.11.1",
"@volar/source-map": "~1.11.1",
"@vue/compiler-dom": "^3.3.0",
"@vue/shared": "^3.3.0",
"computeds": "^0.0.1",
"version": "2.1.10",
"resolved": "https://registry.npmmirror.com/@vue/language-core/-/language-core-2.1.10.tgz",
"integrity": "sha512-DAI289d0K3AB5TUG3xDp9OuQ71CnrujQwJrQnfuZDwo6eGNf0UoRlPuaVNO+Zrn65PC3j0oB2i7mNmVPggeGeQ==",
"dependencies": {
"@volar/language-core": "~2.4.8",
"@vue/compiler-dom": "^3.5.0",
"@vue/compiler-vue2": "^2.7.16",
"@vue/shared": "^3.5.0",
"alien-signals": "^0.2.0",
"minimatch": "^9.0.3",
"muggle-string": "^0.3.1",
"path-browserify": "^1.0.1",
"vue-template-compiler": "^2.7.14"
"muggle-string": "^0.4.1",
"path-browserify": "^1.0.1"
},
"peerDependencies": {
"typescript": "*"
......@@ -1657,6 +1690,32 @@
}
}
},
"node_modules/@vue/language-core/node_modules/@vue/compiler-core": {
"version": "3.5.13",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.13.tgz",
"integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==",
"dependencies": {
"@babel/parser": "^7.25.3",
"@vue/shared": "3.5.13",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.0"
}
},
"node_modules/@vue/language-core/node_modules/@vue/compiler-dom": {
"version": "3.5.13",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz",
"integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==",
"dependencies": {
"@vue/compiler-core": "3.5.13",
"@vue/shared": "3.5.13"
}
},
"node_modules/@vue/language-core/node_modules/@vue/shared": {
"version": "3.5.13",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.13.tgz",
"integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ=="
},
"node_modules/@vue/reactivity": {
"version": "3.4.20",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.4.20.tgz",
......@@ -1921,6 +1980,11 @@
"url": "https://github.com/sponsors/epoberezkin"
}
},
"node_modules/alien-signals": {
"version": "0.2.2",
"resolved": "https://registry.npmmirror.com/alien-signals/-/alien-signals-0.2.2.tgz",
"integrity": "sha512-cZIRkbERILsBOXTQmMrxc9hgpxglstn69zm+F1ARf4aPAzdAFYd6sBq87ErO0Fj3DV94tglcyHG5kQz9nDC/8A=="
},
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz",
......@@ -1996,8 +2060,7 @@
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/binary-extensions": {
"version": "2.3.0",
......@@ -2021,7 +2084,6 @@
"version": "2.0.1",
"resolved": "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.1.tgz",
"integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
"dev": true,
"dependencies": {
"balanced-match": "^1.0.0"
}
......@@ -2121,12 +2183,6 @@
"resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-1.0.20.tgz",
"integrity": "sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg=="
},
"node_modules/computeds": {
"version": "0.0.1",
"resolved": "https://registry.npmmirror.com/computeds/-/computeds-0.0.1.tgz",
"integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==",
"dev": true
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmmirror.com/concat-map/-/concat-map-0.0.1.tgz",
......@@ -2184,8 +2240,7 @@
"node_modules/de-indent": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/de-indent/-/de-indent-1.0.2.tgz",
"integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==",
"dev": true
"integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg=="
},
"node_modules/debug": {
"version": "4.3.4",
......@@ -2979,7 +3034,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmmirror.com/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true,
"bin": {
"he": "bin/he"
}
......@@ -3338,7 +3392,6 @@
"version": "6.0.0",
"resolved": "https://registry.npmmirror.com/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
......@@ -3457,7 +3510,6 @@
"version": "9.0.3",
"resolved": "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.3.tgz",
"integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==",
"dev": true,
"dependencies": {
"brace-expansion": "^2.0.1"
},
......@@ -3487,10 +3539,9 @@
"dev": true
},
"node_modules/muggle-string": {
"version": "0.3.1",
"resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.3.1.tgz",
"integrity": "sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==",
"dev": true
"version": "0.4.1",
"resolved": "https://registry.npmmirror.com/muggle-string/-/muggle-string-0.4.1.tgz",
"integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ=="
},
"node_modules/namespace-emitter": {
"version": "2.0.1",
......@@ -3664,8 +3715,7 @@
"node_modules/path-browserify": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/path-browserify/-/path-browserify-1.0.1.tgz",
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==",
"dev": true
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
},
"node_modules/path-exists": {
"version": "4.0.0",
......@@ -4068,7 +4118,6 @@
"version": "7.6.0",
"resolved": "https://registry.npmmirror.com/semver/-/semver-7.6.0.tgz",
"integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
},
......@@ -4320,7 +4369,6 @@
"version": "5.3.3",
"resolved": "https://registry.npmmirror.com/typescript/-/typescript-5.3.3.tgz",
"integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
"devOptional": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
......@@ -4575,6 +4623,11 @@
}
}
},
"node_modules/vscode-uri": {
"version": "3.0.8",
"resolved": "https://registry.npmmirror.com/vscode-uri/-/vscode-uri-3.0.8.tgz",
"integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw=="
},
"node_modules/vue": {
"version": "3.4.20",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.4.20.tgz",
......@@ -4674,26 +4727,27 @@
"resolved": "https://registry.npmmirror.com/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
"integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
"dev": true,
"optional": true,
"peer": true,
"dependencies": {
"de-indent": "^1.0.2",
"he": "^1.2.0"
}
},
"node_modules/vue-tsc": {
"version": "1.8.27",
"resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-1.8.27.tgz",
"integrity": "sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==",
"dev": true,
"version": "2.1.10",
"resolved": "https://registry.npmmirror.com/vue-tsc/-/vue-tsc-2.1.10.tgz",
"integrity": "sha512-RBNSfaaRHcN5uqVqJSZh++Gy/YUzryuv9u1aFWhsammDJXNtUiJMNoJ747lZcQ68wUQFx6E73y4FY3D8E7FGMA==",
"dependencies": {
"@volar/typescript": "~1.11.1",
"@vue/language-core": "1.8.27",
"@volar/typescript": "~2.4.8",
"@vue/language-core": "2.1.10",
"semver": "^7.5.4"
},
"bin": {
"vue-tsc": "bin/vue-tsc.js"
},
"peerDependencies": {
"typescript": "*"
"typescript": ">=5.0.0"
}
},
"node_modules/webpack-sources": {
......@@ -4749,8 +4803,7 @@
"node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmmirror.com/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
},
"node_modules/yocto-queue": {
"version": "0.1.0",
......
......@@ -21,7 +21,8 @@
"splitpanes": "^3.1.5",
"vue": "^3.4.19",
"vue-dompurify-html": "^5.1.0",
"vue-router": "^4.3.0"
"vue-router": "^4.3.0",
"vue-tsc": "^2.1.10"
},
"devDependencies": {
"@types/splitpanes": "^2.2.6",
......@@ -37,7 +38,6 @@
"unplugin-auto-import": "^0.17.5",
"unplugin-icons": "^0.18.5",
"unplugin-vue-components": "^0.26.0",
"vite": "^5.1.4",
"vue-tsc": "^1.8.27"
"vite": "^5.1.4"
}
}
......@@ -101,12 +101,13 @@ export function getOrderBySubOrderNumber(orderNumber: string) {
)
}
export function getQaOrderBySubOrderNumber(orderNumber: string) {
export function getQaOrderBySubOrderNumber(orderNumber: string,shipmentUid?:string) {
return axios.get<never, BaseRespData<QaData[]>>(
'factory/customJomallOrder/inspectionQuery',
{
params: {
subOrderNumber: orderNumber,
shipmentUid:shipmentUid,
},
},
)
......
......@@ -196,6 +196,8 @@ export interface LogListData {
export interface QaData {
orderNumber?: string
namespace?: string
scansNum?: number
shipmentUid?: string
billNumber?: string
subOrderNumber?: string
baseSku?: string
......
......@@ -81,22 +81,29 @@
header-align="center"
></el-table-column>
<el-table-column
label="扫描数量"
prop="scansNum"
width="80"
align="center"
header-align="center"
></el-table-column>
<el-table-column
label="质检通过"
prop="passNum"
width="90"
width="80"
align="center"
header-align="center"
></el-table-column>
<el-table-column
label="未通过"
prop="notPassNum"
width="90"
width="80"
align="center"
header-align="center"
></el-table-column>
<el-table-column
label="是否质检"
width="90"
width="80"
align="center"
header-align="center"
>
......@@ -184,7 +191,7 @@
<div class="left-qa-order-basic-info_item">
<span class="label">发货方式:</span>
<span class="value">
{{ currentRow.shippingWay == 1 ? '送货上门' : '快递' || '--' }}
{{ currentRow.shippingWay ? currentRow.shippingWay == 1 ? '送货上门' : '快递' : '--'}}
</span>
</div>
<div class="left-qa-order-basic-info_item">
......@@ -378,6 +385,7 @@ const {
onRowClick,
} = props.quarantine
const tableRowClassName = ({ row }: { row: QaData }) => {
if (row.subOrderNumber === currentRow.value.subOrderNumber) {
return 'current-row-active'
} else {
......
......@@ -10,6 +10,7 @@ export default function useQuarantine() {
const quarantineVisible = ref(false)
const qaCode = ref('')
const shipmentUid = ref('')
const qaInputRef = ref()
const isLock = ref(false)
const cloneRow = ref<QaData>({} as QaData)
......@@ -24,6 +25,8 @@ export default function useQuarantine() {
resetOrderList()
resetCurrentRow()
dzjTotal.value = 0
shipmentUid.value = ''
qaCode.value = ''
yzjTotal.value = 0
allTotal.value = 0
}
......@@ -31,7 +34,19 @@ export default function useQuarantine() {
if (sourceData.value.length == 0) return false
return sourceData.value.some((item) => item.isCheck)
})
const findAllIndex = (code: string) => {
const indexList: number[] = []
sourceData.value.forEach((el, index) => {
if (el.factorySubOrderNumber === code && el.shipmentNum !== el.scansNum) {
indexList.push(index)
}
})
return indexList
}
const searchQaByOrderNumber = () => {
const uid = shipmentUid.value
const code = qaCode.value
if (!code) {
isLock.value = false
......@@ -45,10 +60,15 @@ export default function useQuarantine() {
if (isLock.value) {
qaInputRef.value.focus()
qaCode.value = ''
shipmentUid.value = ''
return
}
isLock.value = true
const code1 = code?.split('_')[0]
const index = sourceData.value.findIndex(
(item) =>
item.factorySubOrderNumber == code1 || item.subOrderNumber == code1,
)
// 如果扫单号没有包含当前的生产单号
const isIncluned = sourceData.value.some(
(item) =>
......@@ -56,14 +76,14 @@ export default function useQuarantine() {
)
if (isQaed.value && !isIncluned) {
saveQuarantine(() => {
loadShipmentOrderByCode(code)
loadShipmentOrderByCode(code, uid)
})
} else {
// 如果质检未完成
// 查找是否已经存在
const row = sourceData.value.find(
(item) =>
item.factorySubOrderNumber == code1 || item.subOrderNumber == code1,
(uid === item.shipmentUid && (code1 === item.subOrderNumber || item.factorySubOrderNumber == code1)) || (!uid && (item.factorySubOrderNumber == code1 || item.subOrderNumber == code1)),
)
if (row) {
// 质检数量不能大于发货数量
......@@ -72,6 +92,7 @@ export default function useQuarantine() {
qaInputRef.value.focus()
isLock.value = false
qaCode.value = ''
shipmentUid.value = ''
playAudio('picking_beyond')
return ElMessage({
message: '质检数量不能大于发货数量',
......@@ -79,6 +100,23 @@ export default function useQuarantine() {
offset: window.innerHeight / 2,
})
}
const len = sourceData.value.filter(el => el.factorySubOrderNumber == code1 || code1 === el.subOrderNumber)
const scansNum = sourceData.value[index].scansNum || 0
const indexList = findAllIndex(code1)
if (len.length > 1) {
sourceData.value.forEach((el, i) => {
console.log(el)
if (indexList.length > 0 && i === indexList[0]) {
sourceData.value[i]['scansNum'] = scansNum + 1
}
})
} else {
if (row.shipmentNum !== scansNum) {
sourceData.value[index]['scansNum'] = scansNum + 1
}
}
playAudio('picking_check_success')
// row.passNum = row.shipmentNum
qaInputRef.value.focus()
......@@ -86,29 +124,34 @@ export default function useQuarantine() {
cloneRow.value = JSON.parse(JSON.stringify(currentRow.value))
isLock.value = false
qaCode.value = ''
shipmentUid.value = ''
} else {
loadShipmentOrderByCode(code)
loadShipmentOrderByCode(code, uid)
}
}
}
const loadShipmentOrderByCode = async (code: string) => {
const loadShipmentOrderByCode = async (code: string, uid: string) => {
try {
const res = await getQaOrderBySubOrderNumber(code)
const res = await getQaOrderBySubOrderNumber(code, uid)
const code1 = code?.split('_')[0]
res.data = res.data.map((item) => {
res.data = res.data.map((item: QaData) => {
return {
...item,
scansNum: item.inspectionStatus ? item.passNum : 0,
isCheck: item.inspectionStatus,
}
})
// 删除旧的inspectionStatus
res.data = res.data.map(({ inspectionStatus, ...rest }) => rest)
res.data = res.data.map(({ inspectionStatus, ...rest }) => {
console.log(inspectionStatus)
return rest
})
res.data.sort((a, b) =>
a.isCheck === b.isCheck ? 0 : a.isCheck ? 1 : -1,
) //false在前,true在后
activeTab.value = 'all'
sourceData.value = res.data
_sourceData.value = res.data
sourceData.value = sourceData.value.concat(res.data)
_sourceData.value = _sourceData.value.concat(res.data)
allTotal.value = _sourceData.value.length
dzjTotal.value = res.data.filter(
(e) =>
......@@ -120,27 +163,38 @@ export default function useQuarantine() {
Number(e.shipmentNum || 0) ===
Number(e.passNum || 0) + Number(e.notPassNum || 0),
).length
const row = sourceData.value.find(
(item) =>
item.factorySubOrderNumber == code1 || item.subOrderNumber == code1,
)
const row = sourceData.value.find(item => {
return (uid === item.shipmentUid && (code1 === item.subOrderNumber || item.factorySubOrderNumber == code1)) || (!uid && (item.factorySubOrderNumber == code1 || item.subOrderNumber == code1))
})
const index = sourceData.value.findIndex(item => {
return (uid === item.shipmentUid && (code1 === item.subOrderNumber || item.factorySubOrderNumber == code1)) || (!uid && (item.factorySubOrderNumber == code1 || item.subOrderNumber == code1))
})
if (row) {
// row.passNum += 1
currentRow.value = row
cloneRow.value = JSON.parse(JSON.stringify(currentRow.value))
if (!row.inspectionStatus && !sourceData.value[index].scansNum) sourceData.value[index].scansNum = 1
}
qaInputRef.value.focus()
isLock.value = false
qaCode.value = ''
shipmentUid.value = ''
playAudio('picking_search_success')
} catch (e) {
qaInputRef.value.focus()
isLock.value = false
qaCode.value = ''
shipmentUid.value = ''
// showError(e)
playAudio('picking_search_error')
}
}
const toSaveQuarantine = async () => {
await saveQuarantine(() => {
sourceData.value = []
_sourceData.value = []
})
}
// 质检完成
const saveQuarantine = async (callback?: () => void) => {
try {
......@@ -157,10 +211,11 @@ export default function useQuarantine() {
remark: item.remark || '',
}))
await qaFinishedApi(data)
sourceData.value = []
// sourceData.value = []
isLock.value = false
qaInputRef.value.focus()
qaCode.value = ''
shipmentUid.value = ''
currentRow.value = {}
cloneRow.value = JSON.parse(JSON.stringify(currentRow.value))
allTotal.value = 0
......@@ -316,6 +371,7 @@ export default function useQuarantine() {
return {
quarantineVisible,
qaCode,
shipmentUid,
qaInputRef,
allTotal,
dzjTotal,
......@@ -326,6 +382,7 @@ export default function useQuarantine() {
confirmCheck,
searchQaByOrderNumber,
saveQuarantine,
toSaveQuarantine,
onQaDialogOpened,
onChangeTab,
onSuccessQc,
......
import { getOrderBySubOrderNumber, saveOrder } from '@/api/order'
import {
OrderData,
ProductList,
ShipmentForm,
ShipmentOrderRes,
ICompareObjects,
} from '@/types/api/order'
import { ICompareObjects, OrderData, ProductList, ShipmentForm, ShipmentOrderRes } from '@/types/api/order'
import { useValue } from '@/utils/hooks/useValue'
import { nextTick, ref } from 'vue'
import { ShipmentType } from '../Shipment.vue'
export default function useShipment(callback?: () => void) {
const [orderList, resetOrderList] = useValue<OrderData[]>([])
const [shipmentForm, resetShipmentForm] = useValue<ShipmentForm>({
......@@ -57,14 +52,15 @@ export default function useShipment(callback?: () => void) {
(rowData.shipmentNum || 0) +
(rowData.notPassNum || 0)
if (unShipmentNum > (rowData.count || 0)) {
rowData.count = unShipmentNum
rowData.count = (rowData.count || 0) + 1
playAudio('picking_check_success')
if (+rowData.count > 1) {
ElMessageBox.confirm(`该产品未发数为${rowData.count}件`, '重要提示', {
confirmButtonText: '确定',
type: 'warning',
}).catch(() => {})
}
// if (+rowData.count > 1) {
// ElMessageBox.confirm(`该产品未发数为${rowData.count}件`, '重要提示', {
// confirmButtonText: '确定',
// type: 'warning',
// }).catch(() => {
// })
// }
} else {
playAudio('picking_beyond')
ElMessage({
......@@ -102,7 +98,8 @@ export default function useShipment(callback?: () => void) {
ElMessageBox.confirm('不能加入,地址信息不一致!', '重要提示', {
confirmButtonText: '确定',
type: 'warning',
}).catch(() => {})
}).catch(() => {
})
} else {
canJoin(res.data, code)
}
......@@ -121,20 +118,20 @@ export default function useShipment(callback?: () => void) {
shipmentLoading.value = false
}
}
const canJoin = async (data: any, code: string) => {
const canJoin = async (data: OrderData, code: string) => {
const code1 = code?.split('_')[0]
for (const item of data.productList || []) {
item.count = 0
if (item.subOrderNumber === code1) {
item.count =
(item.num || 0) - ((item.shipmentNum || 0) - (item.notPassNum || 0))
item.count = 1
if (+item.count > 1) {
ElMessageBox.confirm(`该产品未发数为${item.count}件`, '重要提示', {
confirmButtonText: '确定',
type: 'warning',
}).catch(() => {})
}
// if (+item.count > 1) {
// ElMessageBox.confirm(`该产品未发数为${item.count}件`, '重要提示', {
// confirmButtonText: '确定',
// type: 'warning',
// }).catch(() => {
// })
// }
currentRow.value = item
if (currentRow.value) {
......@@ -215,7 +212,26 @@ export default function useShipment(callback?: () => void) {
})
try {
const res = await saveOrder(data, shipmentForm.value)
ElMessage.success(res.message)
fetch(res.message || '')
.then(response => {
// 确保响应是 OK
if (!response.ok) {
throw new Error('网络响应错误')
}
// 返回图片的二进制数据(Blob)
return response.blob()
})
.then(blob => {
const a = document.createElement('a')
a.href = window.URL.createObjectURL(blob)
a.target = '_blank'
a.download = (res.message as string).split('/')[ (res.message as string).split('/').length - 1]
a.click()
})
.catch(error => {
console.error('下载图片时出错:', error)
})
ElMessage.success('发货成功')
shipmentVisible.value = false
callback && callback()
} catch (e) {
......
......@@ -503,6 +503,16 @@
}}</span>
</div>
<div
v-if="scope.row.shipmentUid"
:title="scope.row.shipmentUid"
class="order-detail_item"
>
<span class="label">提货码:</span>
<span class="value" :title="scope.row.shipmentUid">{{
scope.row.shipmentUid
}}</span>
</div>
<div
:title="scope.row.lanshouPost"
class="order-detail_item"
>
......@@ -696,6 +706,14 @@
row.lanshouRegion + row.lanshouAddress
}}</span>
</div>
<div class="order-list-expand_item_info_title">
<span class="order-list-expand_item_label"
>提货码:</span
>
<span class="order-list-expand_item_value">{{
row.shipmentUid
}}</span>
</div>
</div>
</div>
<div class="order-operate">
......@@ -864,6 +882,12 @@
>
<div class="header-search">
<el-input
v-model="shipmentUid"
style="width: 300px;"
placeholder="请输入提货码"
size="large"
clearable />
<el-input
ref="qaInputRef"
v-model="qaCode"
clearable
......@@ -881,7 +905,7 @@
<el-button size="large" @click="quarantineVisible = false"
>取消
</el-button>
<el-button size="large" type="primary" @click="() => saveQuarantine()"
<el-button size="large" type="primary" @click="() => toSaveQuarantine()"
>质检完成
</el-button>
</div>
......@@ -1187,8 +1211,10 @@ const {
quarantineVisible,
qaInputRef,
qaCode,
shipmentUid,
searchQaByOrderNumber,
saveQuarantine,
toSaveQuarantine,
confirmCheck,
onQaDialogOpened,
} = quarantine
......
......@@ -257,6 +257,7 @@ const getStatusList = async () => {
treeData.value[0].children = res.data.slice(1)
nextTick(() => {
treeRef.value.setCurrentKey(treeId.value, true)
})
} catch (e) {
console.error(e)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment