Commit 45c7b0e0c3f41f478c926e56d98224fd2edff62f

Authored by DESKTOP-AO0VKC8\mahua
1 parent 0c1303d1

采购添加打印

Too many changes to show.

To preserve performance only 12 of 13 files are displayed.

.env.development
1 1 NODE_ENV=development
2   -VUE_APP_API_BASE_URL=http://localhost:8080/jeecg-boot
  2 +VUE_APP_API_BASE_URL=http://172.16.43.158:8080/jeecg-boot
3 3 VUE_APP_CAS_BASE_URL=http://cas.example.org:8443/cas
4 4 VUE_APP_ONLINE_BASE_URL=http://fileview.jeecg.com/onlinePreview
5 5 \ No newline at end of file
... ...
package-lock.json
... ... @@ -13,6 +13,7 @@
13 13 "@jeecg/antd-online-mini": "2.4.22-beta",
14 14 "@tinymce/tinymce-vue": "^2.1.0",
15 15 "@toast-ui/editor": "^2.1.2",
  16 + "@xkeshi/vue-barcode": "^1.0.0",
16 17 "ant-design-vue": "^1.7.3",
17 18 "area-data": "^5.0.6",
18 19 "axios": "^0.21.1",
... ... @@ -36,6 +37,7 @@
36 37 "viser-vue": "^2.4.8",
37 38 "vue": "^2.6.10",
38 39 "vue-area-linkage": "^5.1.0",
  40 + "vue-barcode": "^1.3.0",
39 41 "vue-cropper": "^0.5.4",
40 42 "vue-i18n": "^8.7.0",
41 43 "vue-json-excel": "^0.3.0",
... ... @@ -57,6 +59,7 @@
57 59 "@vue/cli-plugin-babel": "^3.3.0",
58 60 "@vue/cli-plugin-eslint": "^3.3.0",
59 61 "@vue/cli-service": "^4.5.12",
  62 + "@vue/component-compiler-utils": "1.3.1",
60 63 "@vue/eslint-config-standard": "^4.0.0",
61 64 "babel-eslint": "7.2.3",
62 65 "eslint": "^5.16.0",
... ... @@ -64,7 +67,7 @@
64 67 "html-webpack-plugin": "^4.2.0",
65 68 "less": "^3.9.0",
66 69 "less-loader": "^4.1.0",
67   - "vue-template-compiler": "^2.6.10",
  70 + "vue-template-compiler": "^2.6.11",
68 71 "webpack": "^4.46.0",
69 72 "webpack-cli": "^4.5.0"
70 73 }
... ... @@ -3090,6 +3093,47 @@
3090 3093 "strip-ansi": "^6.0.0"
3091 3094 }
3092 3095 },
  3096 + "node_modules/@vue/cli-service/node_modules/@vue/component-compiler-utils": {
  3097 + "version": "3.2.2",
  3098 + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.2.tgz",
  3099 + "integrity": "sha512-rAYMLmgMuqJFWAOb3Awjqqv5X3Q3hVr4jH/kgrFJpiU0j3a90tnNBplqbj+snzrgZhC9W128z+dtgMifOiMfJg==",
  3100 + "dev": true,
  3101 + "dependencies": {
  3102 + "consolidate": "^0.15.1",
  3103 + "hash-sum": "^1.0.2",
  3104 + "lru-cache": "^4.1.2",
  3105 + "merge-source-map": "^1.1.0",
  3106 + "postcss": "^7.0.36",
  3107 + "postcss-selector-parser": "^6.0.2",
  3108 + "source-map": "~0.6.1",
  3109 + "vue-template-es2015-compiler": "^1.9.0"
  3110 + },
  3111 + "optionalDependencies": {
  3112 + "prettier": "^1.18.2"
  3113 + }
  3114 + },
  3115 + "node_modules/@vue/cli-service/node_modules/@vue/component-compiler-utils/node_modules/hash-sum": {
  3116 + "version": "1.0.2",
  3117 + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
  3118 + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
  3119 + "dev": true
  3120 + },
  3121 + "node_modules/@vue/cli-service/node_modules/@vue/component-compiler-utils/node_modules/lru-cache": {
  3122 + "version": "4.1.5",
  3123 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
  3124 + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
  3125 + "dev": true,
  3126 + "dependencies": {
  3127 + "pseudomap": "^1.0.2",
  3128 + "yallist": "^2.1.2"
  3129 + }
  3130 + },
  3131 + "node_modules/@vue/cli-service/node_modules/@vue/component-compiler-utils/node_modules/yallist": {
  3132 + "version": "2.1.2",
  3133 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
  3134 + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
  3135 + "dev": true
  3136 + },
3093 3137 "node_modules/@vue/cli-service/node_modules/@webassemblyjs/ast": {
3094 3138 "version": "1.9.0",
3095 3139 "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
... ... @@ -4164,19 +4208,66 @@
4164 4208 "dev": true
4165 4209 },
4166 4210 "node_modules/@vue/component-compiler-utils": {
4167   - "version": "3.2.0",
4168   - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.0.tgz",
4169   - "integrity": "sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw==",
  4211 + "version": "1.3.1",
  4212 + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-1.3.1.tgz",
  4213 + "integrity": "sha512-IyjJW6ToMitgAhp3xh22QiEW8JvHfLyzlyY/J+GjJ71miod9tNsy6xT2ckm/VirlhPMfeM43kgYZe34jhmmzpw==",
  4214 + "dev": true,
4170 4215 "dependencies": {
4171 4216 "consolidate": "^0.15.1",
4172 4217 "hash-sum": "^1.0.2",
4173 4218 "lru-cache": "^4.1.2",
4174 4219 "merge-source-map": "^1.1.0",
4175   - "postcss": "^7.0.14",
4176   - "postcss-selector-parser": "^6.0.2",
4177   - "prettier": "^1.18.2",
4178   - "source-map": "~0.6.1",
4179   - "vue-template-es2015-compiler": "^1.9.0"
  4220 + "postcss": "^6.0.20",
  4221 + "postcss-selector-parser": "^3.1.1",
  4222 + "prettier": "^1.13.0",
  4223 + "source-map": "^0.5.6",
  4224 + "vue-template-es2015-compiler": "^1.6.0"
  4225 + }
  4226 + },
  4227 + "node_modules/@vue/component-compiler-utils/node_modules/postcss": {
  4228 + "version": "6.0.23",
  4229 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
  4230 + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
  4231 + "dev": true,
  4232 + "dependencies": {
  4233 + "chalk": "^2.4.1",
  4234 + "source-map": "^0.6.1",
  4235 + "supports-color": "^5.4.0"
  4236 + },
  4237 + "engines": {
  4238 + "node": ">=4.0.0"
  4239 + }
  4240 + },
  4241 + "node_modules/@vue/component-compiler-utils/node_modules/postcss-selector-parser": {
  4242 + "version": "3.1.2",
  4243 + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
  4244 + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
  4245 + "dev": true,
  4246 + "dependencies": {
  4247 + "dot-prop": "^5.2.0",
  4248 + "indexes-of": "^1.0.1",
  4249 + "uniq": "^1.0.1"
  4250 + },
  4251 + "engines": {
  4252 + "node": ">=8"
  4253 + }
  4254 + },
  4255 + "node_modules/@vue/component-compiler-utils/node_modules/postcss/node_modules/source-map": {
  4256 + "version": "0.6.1",
  4257 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
  4258 + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
  4259 + "dev": true,
  4260 + "engines": {
  4261 + "node": ">=0.10.0"
  4262 + }
  4263 + },
  4264 + "node_modules/@vue/component-compiler-utils/node_modules/source-map": {
  4265 + "version": "0.5.7",
  4266 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
  4267 + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
  4268 + "dev": true,
  4269 + "engines": {
  4270 + "node": ">=0.10.0"
4180 4271 }
4181 4272 },
4182 4273 "node_modules/@vue/eslint-config-standard": {
... ... @@ -4471,6 +4562,18 @@
4471 4562 "integrity": "sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw==",
4472 4563 "dev": true
4473 4564 },
  4565 + "node_modules/@xkeshi/vue-barcode": {
  4566 + "version": "1.0.0",
  4567 + "resolved": "https://registry.npmjs.org/@xkeshi/vue-barcode/-/vue-barcode-1.0.0.tgz",
  4568 + "integrity": "sha512-Zgwg7n314dHs5K7OBtdXzQXLr4UC3kZmoFuggxk0tNNKEekgUKAsvomukRtrRTK3FfohsYKkSgxBa3uRsiEdig==",
  4569 + "deprecated": "No longer maintainted, please use @chenfengyuan/vue-barcode",
  4570 + "dependencies": {
  4571 + "jsbarcode": "^3.9.0"
  4572 + },
  4573 + "peerDependencies": {
  4574 + "vue": "^2.2.0"
  4575 + }
  4576 + },
4474 4577 "node_modules/@xtuc/ieee754": {
4475 4578 "version": "1.2.0",
4476 4579 "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
... ... @@ -13191,6 +13294,66 @@
13191 13294 "js-yaml": "bin/js-yaml.js"
13192 13295 }
13193 13296 },
  13297 + "node_modules/jsbarcode": {
  13298 + "version": "3.11.4",
  13299 + "resolved": "https://registry.npmjs.org/jsbarcode/-/jsbarcode-3.11.4.tgz",
  13300 + "integrity": "sha512-PHtad17lOl6LOLGK20k5I6P7MabiyHaJY5u5N5TlzC6ZunOR+yFnFnRUoqqOefrYPqO2nuJ1weHzG8B7YYEnHg==",
  13301 + "bin": {
  13302 + "auto.js": "bin/barcodes/CODE128/auto.js",
  13303 + "Barcode.js": "bin/barcodes/Barcode.js",
  13304 + "barcodes": "bin/barcodes",
  13305 + "canvas.js": "bin/renderers/canvas.js",
  13306 + "checksums.js": "bin/barcodes/MSI/checksums.js",
  13307 + "codabar": "bin/barcodes/codabar",
  13308 + "CODE128": "bin/barcodes/CODE128",
  13309 + "CODE128_AUTO.js": "bin/barcodes/CODE128/CODE128_AUTO.js",
  13310 + "CODE128.js": "bin/barcodes/CODE128/CODE128.js",
  13311 + "CODE128A.js": "bin/barcodes/CODE128/CODE128A.js",
  13312 + "CODE128B.js": "bin/barcodes/CODE128/CODE128B.js",
  13313 + "CODE128C.js": "bin/barcodes/CODE128/CODE128C.js",
  13314 + "CODE39": "bin/barcodes/CODE39",
  13315 + "constants.js": "bin/barcodes/ITF/constants.js",
  13316 + "defaults.js": "bin/options/defaults.js",
  13317 + "EAN_UPC": "bin/barcodes/EAN_UPC",
  13318 + "EAN.js": "bin/barcodes/EAN_UPC/EAN.js",
  13319 + "EAN13.js": "bin/barcodes/EAN_UPC/EAN13.js",
  13320 + "EAN2.js": "bin/barcodes/EAN_UPC/EAN2.js",
  13321 + "EAN5.js": "bin/barcodes/EAN_UPC/EAN5.js",
  13322 + "EAN8.js": "bin/barcodes/EAN_UPC/EAN8.js",
  13323 + "encoder.js": "bin/barcodes/EAN_UPC/encoder.js",
  13324 + "ErrorHandler.js": "bin/exceptions/ErrorHandler.js",
  13325 + "exceptions": "bin/exceptions",
  13326 + "exceptions.js": "bin/exceptions/exceptions.js",
  13327 + "fixOptions.js": "bin/help/fixOptions.js",
  13328 + "GenericBarcode": "bin/barcodes/GenericBarcode",
  13329 + "getOptionsFromElement.js": "bin/help/getOptionsFromElement.js",
  13330 + "getRenderProperties.js": "bin/help/getRenderProperties.js",
  13331 + "help": "bin/help",
  13332 + "index.js": "bin/renderers/index.js",
  13333 + "index.tmp.js": "bin/barcodes/index.tmp.js",
  13334 + "ITF": "bin/barcodes/ITF",
  13335 + "ITF.js": "bin/barcodes/ITF/ITF.js",
  13336 + "ITF14.js": "bin/barcodes/ITF/ITF14.js",
  13337 + "JsBarcode.js": "bin/JsBarcode.js",
  13338 + "linearizeEncodings.js": "bin/help/linearizeEncodings.js",
  13339 + "merge.js": "bin/help/merge.js",
  13340 + "MSI": "bin/barcodes/MSI",
  13341 + "MSI.js": "bin/barcodes/MSI/MSI.js",
  13342 + "MSI10.js": "bin/barcodes/MSI/MSI10.js",
  13343 + "MSI1010.js": "bin/barcodes/MSI/MSI1010.js",
  13344 + "MSI11.js": "bin/barcodes/MSI/MSI11.js",
  13345 + "MSI1110.js": "bin/barcodes/MSI/MSI1110.js",
  13346 + "object.js": "bin/renderers/object.js",
  13347 + "options": "bin/options",
  13348 + "optionsFromStrings.js": "bin/help/optionsFromStrings.js",
  13349 + "pharmacode": "bin/barcodes/pharmacode",
  13350 + "renderers": "bin/renderers",
  13351 + "shared.js": "bin/renderers/shared.js",
  13352 + "svg.js": "bin/renderers/svg.js",
  13353 + "UPC.js": "bin/barcodes/EAN_UPC/UPC.js",
  13354 + "UPCE.js": "bin/barcodes/EAN_UPC/UPCE.js"
  13355 + }
  13356 + },
13194 13357 "node_modules/jsbn": {
13195 13358 "version": "0.1.1",
13196 13359 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
... ... @@ -15370,9 +15533,9 @@
15370 15533 }
15371 15534 },
15372 15535 "node_modules/postcss": {
15373   - "version": "7.0.35",
15374   - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
15375   - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
  15536 + "version": "7.0.36",
  15537 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz",
  15538 + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
15376 15539 "dependencies": {
15377 15540 "chalk": "^2.4.2",
15378 15541 "source-map": "^0.6.1",
... ... @@ -15380,6 +15543,10 @@
15380 15543 },
15381 15544 "engines": {
15382 15545 "node": ">=6.0.0"
  15546 + },
  15547 + "funding": {
  15548 + "type": "opencollective",
  15549 + "url": "https://opencollective.com/postcss/"
15383 15550 }
15384 15551 },
15385 15552 "node_modules/postcss-calc": {
... ... @@ -21095,9 +21262,9 @@
21095 21262 "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
21096 21263 },
21097 21264 "node_modules/vue": {
21098   - "version": "2.6.12",
21099   - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz",
21100   - "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg=="
  21265 + "version": "2.6.14",
  21266 + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz",
  21267 + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ=="
21101 21268 },
21102 21269 "node_modules/vue-area-linkage": {
21103 21270 "version": "5.1.0",
... ... @@ -21111,6 +21278,14 @@
21111 21278 "npm": ">= 5.2.0"
21112 21279 }
21113 21280 },
  21281 + "node_modules/vue-barcode": {
  21282 + "version": "1.3.0",
  21283 + "resolved": "https://registry.npmjs.org/vue-barcode/-/vue-barcode-1.3.0.tgz",
  21284 + "integrity": "sha512-DxQ0hxes/dP6GajsJumpW6jV14VwlnTwStZbtE6G0wkewuJVDoDOdxUr5seGuxsMT9fJ0aty4X47Z5TG0M/gxg==",
  21285 + "dependencies": {
  21286 + "jsbarcode": "^3.5.8"
  21287 + }
  21288 + },
21114 21289 "node_modules/vue-class-component": {
21115 21290 "version": "7.2.6",
21116 21291 "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-7.2.6.tgz",
... ... @@ -21200,6 +21375,24 @@
21200 21375 "vue-style-loader": "^4.1.0"
21201 21376 }
21202 21377 },
  21378 + "node_modules/vue-loader/node_modules/@vue/component-compiler-utils": {
  21379 + "version": "3.2.2",
  21380 + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.2.tgz",
  21381 + "integrity": "sha512-rAYMLmgMuqJFWAOb3Awjqqv5X3Q3hVr4jH/kgrFJpiU0j3a90tnNBplqbj+snzrgZhC9W128z+dtgMifOiMfJg==",
  21382 + "dependencies": {
  21383 + "consolidate": "^0.15.1",
  21384 + "hash-sum": "^1.0.2",
  21385 + "lru-cache": "^4.1.2",
  21386 + "merge-source-map": "^1.1.0",
  21387 + "postcss": "^7.0.36",
  21388 + "postcss-selector-parser": "^6.0.2",
  21389 + "source-map": "~0.6.1",
  21390 + "vue-template-es2015-compiler": "^1.9.0"
  21391 + },
  21392 + "optionalDependencies": {
  21393 + "prettier": "^1.18.2"
  21394 + }
  21395 + },
21203 21396 "node_modules/vue-ls": {
21204 21397 "version": "3.2.2",
21205 21398 "resolved": "https://registry.npmjs.org/vue-ls/-/vue-ls-3.2.2.tgz",
... ... @@ -26029,6 +26222,47 @@
26029 26222 "strip-ansi": "^6.0.0"
26030 26223 }
26031 26224 },
  26225 + "@vue/component-compiler-utils": {
  26226 + "version": "3.2.2",
  26227 + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.2.tgz",
  26228 + "integrity": "sha512-rAYMLmgMuqJFWAOb3Awjqqv5X3Q3hVr4jH/kgrFJpiU0j3a90tnNBplqbj+snzrgZhC9W128z+dtgMifOiMfJg==",
  26229 + "dev": true,
  26230 + "requires": {
  26231 + "consolidate": "^0.15.1",
  26232 + "hash-sum": "^1.0.2",
  26233 + "lru-cache": "^4.1.2",
  26234 + "merge-source-map": "^1.1.0",
  26235 + "postcss": "^7.0.36",
  26236 + "postcss-selector-parser": "^6.0.2",
  26237 + "prettier": "^1.18.2",
  26238 + "source-map": "~0.6.1",
  26239 + "vue-template-es2015-compiler": "^1.9.0"
  26240 + },
  26241 + "dependencies": {
  26242 + "hash-sum": {
  26243 + "version": "1.0.2",
  26244 + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
  26245 + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
  26246 + "dev": true
  26247 + },
  26248 + "lru-cache": {
  26249 + "version": "4.1.5",
  26250 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
  26251 + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
  26252 + "dev": true,
  26253 + "requires": {
  26254 + "pseudomap": "^1.0.2",
  26255 + "yallist": "^2.1.2"
  26256 + }
  26257 + },
  26258 + "yallist": {
  26259 + "version": "2.1.2",
  26260 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
  26261 + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
  26262 + "dev": true
  26263 + }
  26264 + }
  26265 + },
26032 26266 "@webassemblyjs/ast": {
26033 26267 "version": "1.9.0",
26034 26268 "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
... ... @@ -26925,19 +27159,58 @@
26925 27159 }
26926 27160 },
26927 27161 "@vue/component-compiler-utils": {
26928   - "version": "3.2.0",
26929   - "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.0.tgz",
26930   - "integrity": "sha512-lejBLa7xAMsfiZfNp7Kv51zOzifnb29FwdnMLa96z26kXErPFioSf9BMcePVIQ6/Gc6/mC0UrPpxAWIHyae0vw==",
  27162 + "version": "1.3.1",
  27163 + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-1.3.1.tgz",
  27164 + "integrity": "sha512-IyjJW6ToMitgAhp3xh22QiEW8JvHfLyzlyY/J+GjJ71miod9tNsy6xT2ckm/VirlhPMfeM43kgYZe34jhmmzpw==",
  27165 + "dev": true,
26931 27166 "requires": {
26932 27167 "consolidate": "^0.15.1",
26933 27168 "hash-sum": "^1.0.2",
26934 27169 "lru-cache": "^4.1.2",
26935 27170 "merge-source-map": "^1.1.0",
26936   - "postcss": "^7.0.14",
26937   - "postcss-selector-parser": "^6.0.2",
26938   - "prettier": "^1.18.2",
26939   - "source-map": "~0.6.1",
26940   - "vue-template-es2015-compiler": "^1.9.0"
  27171 + "postcss": "^6.0.20",
  27172 + "postcss-selector-parser": "^3.1.1",
  27173 + "prettier": "^1.13.0",
  27174 + "source-map": "^0.5.6",
  27175 + "vue-template-es2015-compiler": "^1.6.0"
  27176 + },
  27177 + "dependencies": {
  27178 + "postcss": {
  27179 + "version": "6.0.23",
  27180 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz",
  27181 + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==",
  27182 + "dev": true,
  27183 + "requires": {
  27184 + "chalk": "^2.4.1",
  27185 + "source-map": "^0.6.1",
  27186 + "supports-color": "^5.4.0"
  27187 + },
  27188 + "dependencies": {
  27189 + "source-map": {
  27190 + "version": "0.6.1",
  27191 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
  27192 + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
  27193 + "dev": true
  27194 + }
  27195 + }
  27196 + },
  27197 + "postcss-selector-parser": {
  27198 + "version": "3.1.2",
  27199 + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz",
  27200 + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==",
  27201 + "dev": true,
  27202 + "requires": {
  27203 + "dot-prop": "^5.2.0",
  27204 + "indexes-of": "^1.0.1",
  27205 + "uniq": "^1.0.1"
  27206 + }
  27207 + },
  27208 + "source-map": {
  27209 + "version": "0.5.7",
  27210 + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
  27211 + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
  27212 + "dev": true
  27213 + }
26941 27214 }
26942 27215 },
26943 27216 "@vue/eslint-config-standard": {
... ... @@ -27235,6 +27508,14 @@
27235 27508 "integrity": "sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw==",
27236 27509 "dev": true
27237 27510 },
  27511 + "@xkeshi/vue-barcode": {
  27512 + "version": "1.0.0",
  27513 + "resolved": "https://registry.npmjs.org/@xkeshi/vue-barcode/-/vue-barcode-1.0.0.tgz",
  27514 + "integrity": "sha512-Zgwg7n314dHs5K7OBtdXzQXLr4UC3kZmoFuggxk0tNNKEekgUKAsvomukRtrRTK3FfohsYKkSgxBa3uRsiEdig==",
  27515 + "requires": {
  27516 + "jsbarcode": "^3.9.0"
  27517 + }
  27518 + },
27238 27519 "@xtuc/ieee754": {
27239 27520 "version": "1.2.0",
27240 27521 "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
... ... @@ -34653,6 +34934,11 @@
34653 34934 "esprima": "^4.0.0"
34654 34935 }
34655 34936 },
  34937 + "jsbarcode": {
  34938 + "version": "3.11.4",
  34939 + "resolved": "https://registry.npmjs.org/jsbarcode/-/jsbarcode-3.11.4.tgz",
  34940 + "integrity": "sha512-PHtad17lOl6LOLGK20k5I6P7MabiyHaJY5u5N5TlzC6ZunOR+yFnFnRUoqqOefrYPqO2nuJ1weHzG8B7YYEnHg=="
  34941 + },
34656 34942 "jsbn": {
34657 34943 "version": "0.1.1",
34658 34944 "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
... ... @@ -36475,9 +36761,9 @@
36475 36761 "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
36476 36762 },
36477 36763 "postcss": {
36478   - "version": "7.0.35",
36479   - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.35.tgz",
36480   - "integrity": "sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg==",
  36764 + "version": "7.0.36",
  36765 + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz",
  36766 + "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
36481 36767 "requires": {
36482 36768 "chalk": "^2.4.2",
36483 36769 "source-map": "^0.6.1",
... ... @@ -41195,9 +41481,9 @@
41195 41481 "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
41196 41482 },
41197 41483 "vue": {
41198   - "version": "2.6.12",
41199   - "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.12.tgz",
41200   - "integrity": "sha512-uhmLFETqPPNyuLLbsKz6ioJ4q7AZHzD8ZVFNATNyICSZouqP2Sz0rotWQC8UNBF6VGSCs5abnKJoStA6JbCbfg=="
  41484 + "version": "2.6.14",
  41485 + "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz",
  41486 + "integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ=="
41201 41487 },
41202 41488 "vue-area-linkage": {
41203 41489 "version": "5.1.0",
... ... @@ -41207,6 +41493,14 @@
41207 41493 "lodash.find": "^4.6.0"
41208 41494 }
41209 41495 },
  41496 + "vue-barcode": {
  41497 + "version": "1.3.0",
  41498 + "resolved": "https://registry.npmjs.org/vue-barcode/-/vue-barcode-1.3.0.tgz",
  41499 + "integrity": "sha512-DxQ0hxes/dP6GajsJumpW6jV14VwlnTwStZbtE6G0wkewuJVDoDOdxUr5seGuxsMT9fJ0aty4X47Z5TG0M/gxg==",
  41500 + "requires": {
  41501 + "jsbarcode": "^3.5.8"
  41502 + }
  41503 + },
41210 41504 "vue-class-component": {
41211 41505 "version": "7.2.6",
41212 41506 "resolved": "https://registry.npmjs.org/vue-class-component/-/vue-class-component-7.2.6.tgz",
... ... @@ -41290,6 +41584,24 @@
41290 41584 "loader-utils": "^1.1.0",
41291 41585 "vue-hot-reload-api": "^2.3.0",
41292 41586 "vue-style-loader": "^4.1.0"
  41587 + },
  41588 + "dependencies": {
  41589 + "@vue/component-compiler-utils": {
  41590 + "version": "3.2.2",
  41591 + "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-3.2.2.tgz",
  41592 + "integrity": "sha512-rAYMLmgMuqJFWAOb3Awjqqv5X3Q3hVr4jH/kgrFJpiU0j3a90tnNBplqbj+snzrgZhC9W128z+dtgMifOiMfJg==",
  41593 + "requires": {
  41594 + "consolidate": "^0.15.1",
  41595 + "hash-sum": "^1.0.2",
  41596 + "lru-cache": "^4.1.2",
  41597 + "merge-source-map": "^1.1.0",
  41598 + "postcss": "^7.0.36",
  41599 + "postcss-selector-parser": "^6.0.2",
  41600 + "prettier": "^1.18.2",
  41601 + "source-map": "~0.6.1",
  41602 + "vue-template-es2015-compiler": "^1.9.0"
  41603 + }
  41604 + }
41293 41605 }
41294 41606 },
41295 41607 "vue-ls": {
... ...
package.json
... ... @@ -14,6 +14,7 @@
14 14 "@jeecg/antd-online-mini": "2.4.22-beta",
15 15 "@tinymce/tinymce-vue": "^2.1.0",
16 16 "@toast-ui/editor": "^2.1.2",
  17 + "@xkeshi/vue-barcode": "^1.0.0",
17 18 "ant-design-vue": "^1.7.3",
18 19 "area-data": "^5.0.6",
19 20 "axios": "^0.21.1",
... ... @@ -35,8 +36,9 @@
35 36 "qrcodejs2": "0.0.2",
36 37 "tinymce": "^5.3.2",
37 38 "viser-vue": "^2.4.8",
38   - "vue": "^2.6.10",
  39 + "vue": "^2.6.14",
39 40 "vue-area-linkage": "^5.1.0",
  41 + "vue-barcode": "^1.3.0",
40 42 "vue-cropper": "^0.5.4",
41 43 "vue-i18n": "^8.7.0",
42 44 "vue-json-excel": "^0.3.0",
... ... @@ -58,6 +60,7 @@
58 60 "@vue/cli-plugin-babel": "^3.3.0",
59 61 "@vue/cli-plugin-eslint": "^3.3.0",
60 62 "@vue/cli-service": "^4.5.12",
  63 + "@vue/component-compiler-utils": "1.3.1",
61 64 "@vue/eslint-config-standard": "^4.0.0",
62 65 "babel-eslint": "7.2.3",
63 66 "eslint": "^5.16.0",
... ... @@ -65,7 +68,7 @@
65 68 "html-webpack-plugin": "^4.2.0",
66 69 "less": "^3.9.0",
67 70 "less-loader": "^4.1.0",
68   - "vue-template-compiler": "^2.6.10",
  71 + "vue-template-compiler": "last",
69 72 "webpack": "^4.46.0",
70 73 "webpack-cli": "^4.5.0"
71 74 },
... ...
src/main.js
... ... @@ -61,6 +61,7 @@ Vue.use(vueBus);
61 61 Vue.use(JeecgComponents);
62 62 Vue.use(VueAreaLinkage);
63 63  
  64 +
64 65 SSO.init(() => {
65 66 main()
66 67 })
... ...
src/permission.js
... ... @@ -9,7 +9,7 @@ import { generateIndexRouter } from "@/utils/util"
9 9  
10 10 NProgress.configure({ showSpinner: false }) // NProgress Configuration
11 11  
12   -const whiteList = ['/user/login', '/user/register', '/user/register-result','/user/alteration'] // no redirect whitelist
  12 +const whiteList = ['/user/login', '/user/register', '/user/register-result','/user/alteration', '/imaterial/PurchaseInfo'] // no redirect whitelist
13 13  
14 14 router.beforeEach((to, from, next) => {
15 15 NProgress.start() // start progress bar
... ...
src/views/material/OutsourcingIn.vue
... ... @@ -11,7 +11,6 @@
11 11 placeholder="请输入项目名称"
12 12 option-filter-prop="children"
13 13 :filter-option="filterOption"
14   - @change="handleChange"
15 14 v-model="queryParam.projectName"
16 15 >
17 16 <a-select-option v-for="item in projectNameList" :key="item" :value="item">{{ item }}</a-select-option>
... ... @@ -25,7 +24,6 @@
25 24 placeholder="请输入项目编码"
26 25 option-filter-prop="children"
27 26 :filter-option="filterOption"
28   - @change="handleChange"
29 27 v-model="queryParam.projectNo"
30 28 >
31 29 <a-select-option v-for="item in projectNoList" :key="item" :value="item">{{ item }}</a-select-option>
... ... @@ -39,7 +37,6 @@
39 37 placeholder="请输入工作令号"
40 38 option-filter-prop="children"
41 39 :filter-option="filterOption"
42   - @change="handleChange"
43 40 v-model="queryParam.workNo"
44 41 >
45 42 <a-select-option v-for="item in workNoList" :key="item" :value="item">{{ item }}</a-select-option>
... ... @@ -73,17 +70,10 @@
73 70  
74 71 <!-- 操作按钮区域 -->
75 72 <div class="table-operator">
76   - <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
  73 +
77 74 <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
78 75 <a-button type="primary" icon="import">导入</a-button>
79 76 </a-upload>
80   - <a-button
81   - @click="batchDel"
82   - v-if="selectedRowKeys.length > 0"
83   - ghost
84   - type="primary"
85   - icon="delete">批量删除
86   - </a-button>
87 77 </div>
88 78  
89 79 <!-- table区域-begin -->
... ... @@ -100,26 +90,19 @@
100 90 :scroll="{x: 1500}"
101 91 size="middle"
102 92 :pagination="false"
103   - :dataSource="dataSource"
104   - :loading="loading"
  93 + :dataSource="treeDataSource"
  94 + :loading="planLoading"
105 95 :expandedRowKeys="expandedRowKeys"
106   - :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
107 96 @expandedRowsChange="handleExpandedRowsChange">
108 97  
109 98 <span slot="action" slot-scope="text, record">
110 99 <a @click="handleEdit(record)">编辑</a>
  100 + </span>
111 101  
112   - <a-divider type="vertical"/>
113   - <a-dropdown>
114   - <a-menu slot="overlay">
115   - <a-menu-item>
116   - <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
117   - <a>删除</a>
118   - </a-popconfirm>
119   - </a-menu-item>
120   - </a-menu>
121   - </a-dropdown>
  102 + <span slot="action" slot-scope="text, record">
  103 + <a @click="handleEdit(record)">编辑</a>
122 104 </span>
  105 +
123 106 <!-- 字符串超长截取省略号显示 -->
124 107 <span slot="url" slot-scope="text">
125 108 <j-ellipsis :value="text" :length="25"/>
... ... @@ -130,31 +113,69 @@
130 113 </span>
131 114 </a-table>
132 115  
  116 + <div class="table-page-search-wrapper" style="margin-top: 20px">
  117 + <a-form layout="inline" @keyup.enter.native="searchQuery">
  118 + <a-row :gutter="24">
  119 + <a-input v-model="queryParam.bomId" v-show="false"></a-input>
  120 + <a-col :md="6" :sm="8">
  121 + <a-form-item label="工作令号">
  122 + <a-input placeholder="请输入工作令号" v-model="queryParam.workNo"></a-input>
  123 + </a-form-item>
  124 + </a-col>
  125 + <a-col :md="6" :sm="8">
  126 + <a-form-item label="物料编码">
  127 + <a-input placeholder="请输入物料编码" v-model="queryParam.materialCode"></a-input>
  128 + </a-form-item>
  129 + </a-col>
  130 + <a-col :md="6" :sm="8">
  131 + <a-form-item label="物料名称">
  132 + <a-input placeholder="请输入物料名称" v-model="queryParam.materialName"></a-input>
  133 + </a-form-item>
  134 + </a-col>
  135 + <a-col :md="6" :sm="8">
  136 + <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
  137 + <a-button type="primary" @click="queryPurchaseIn" icon="search">查询</a-button>
  138 + <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
  139 + </span>
  140 + </a-col>
  141 + </a-row>
  142 + </a-form>
  143 + </div>
  144 + <div class="table-operator">
  145 + <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
  146 + <a-button type="primary" @click="print()" icon="printer">打印</a-button>
  147 + </span>
  148 + <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
  149 + <a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader"
  150 + :action="importExcelUrl" @change="handleImportExcel">
  151 + <a-button type="primary" icon="import">导入</a-button>
  152 + </a-upload>
  153 + </span>
  154 + <span>
  155 + <a-button type="primary" @click="batchEditOpen()" icon="edit" style="margin-left: 8px">批量编辑</a-button>
  156 + </span>
  157 + </div>
  158 +
133 159 <a-table
134 160 ref="table"
135 161 bordered
136 162 size="middle"
137 163 rowKey="id"
138 164 :columns="planColumns"
139   - :dataSource="planDataSource"
  165 + :dataSource="dataSource"
140 166 :pagination="ipagination"
141 167 :loading="loading"
142 168 :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
143 169 @change="handleTableChange">
144 170  
  171 + <span slot="status" slot-scope="status">
  172 + <a-tag :key="status" :color="solutionColor(status)">
  173 + {{ solutionStatus(status) }}
  174 + </a-tag>
  175 + </span>
  176 +
145 177 <span slot="action" slot-scope="text, record">
146 178 <a @click="handleEdit(record)">编辑</a>
147   -
148   - <a-divider type="vertical"/>
149   - <a-dropdown>
150   - <a-menu slot="overlay">
151   - <a-menu-item>
152   - <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
153   - <a>删除</a>
154   - </a-popconfirm>
155   - </a-menu-item>
156   - </a-menu>
157   - </a-dropdown>
158 179 </span>
159 180 </a-table>
160 181  
... ... @@ -174,7 +195,7 @@ import {
174 195 getBomTree,
175 196 getOutsourcing,
176 197 getBomIdList,
177   - getBomId
  198 + getBomId, getPurchase
178 199 } from '../../api/api'
179 200 import OutsourcingInModal from './modules/OutsourcingInModal'
180 201 const columns = [
... ... @@ -227,13 +248,6 @@ const columns = [
227 248 title: '分类',
228 249 dataIndex: 'categories',
229 250 key: 'categories'
230   - },{
231   - title: '操作',
232   - dataIndex: 'action',
233   - fixed: 'right',
234   - scopedSlots: { customRender: 'action' },
235   - align: 'center',
236   - width: 150
237 251 }
238 252 ]
239 253 export default {
... ... @@ -241,28 +255,44 @@ export default {
241 255 mixins: [JeecgListMixin],
242 256 components: {
243 257 OutsourcingInModal
244   -
245 258 },
246 259 data() {
247 260 return {
  261 + disableMixinCreated: true,
248 262 description: '这是外协入库页面',
  263 + ids: '',
  264 + printVisible: false,
  265 + confirmLoading: false,
  266 + planLoading: false,
  267 + defaultValue: '',
  268 + purchasedStatusList: [],
  269 + treeDataSource: [],
249 270 // 表头
250 271 columns: columns,
251 272 loading: false,
252 273 // 展开的行,受控属性
253 274 expandedRowKeys: [],
  275 + printDataSource: [],
  276 + printLoading: false,
254 277 url: {
255 278 list: '/config/bom/list',
256 279 delete: '/config/bom/delete',
257 280 deleteBatch: '/config/bom/deleteBatch',
258 281 importExcelUrl: '/config/bom/importExcel'
259 282 },
  283 + pagination: {
  284 + defaultPageSize: 5,
  285 + showTotal: total => `共 ${total} 条数据`,
  286 + showSizeChanger: true,
  287 + pageSizeOptions: ['5', '10', '15', '20'],
  288 + onShowSizeChange: (current, pageSize) => this.pageSize = pageSize
  289 + },
  290 + bomIdList: [],
260 291 planDataSource: [],
261 292 queryParam: [],
262 293 projectNameList: [],
263 294 workNoList: [],
264 295 projectNoList: [],
265   - bomIdList: [],
266 296 planColumns: [
267 297 {
268 298 title: '物料编码',
... ... @@ -288,6 +318,12 @@ export default {
288 318 title: '联系方式',
289 319 dataIndex: 'phone',
290 320 key: 'phone'
  321 + }, {
  322 + title: '状态',
  323 + dataIndex: 'status',
  324 + key: 'status',
  325 + align: 'center',
  326 + scopedSlots: { customRender: 'status' }
291 327 },{
292 328 title: '计划开始时间',
293 329 dataIndex: 'planStartTime',
... ... @@ -341,16 +377,14 @@ export default {
341 377 }
342 378 })
343 379 },
344   - handleChange(value) {
345   - console.log(`selected ${value}`);
346   - },
347 380 filterOption(input, option) {
348 381 return (
349 382 option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
350 383 );
351 384 },
352   - loadData(tree) {
353   - this.dataSource = tree;
  385 + loadTreeData(tree) {
  386 + this.planLoading = false
  387 + this.treeDataSource = tree
354 388 },
355 389  
356 390 handleExpandedRowsChange(expandedRows) {
... ... @@ -360,6 +394,8 @@ export default {
360 394 this.initBomTree(value);
361 395 },
362 396 query() {
  397 + this.planLoading = true
  398 + this.loading = true
363 399 let params = {
364 400 "bomId": this.queryParam.bomId,
365 401 "projectName": this.queryParam.projectName,
... ... @@ -367,20 +403,16 @@ export default {
367 403 "workNo": this.queryParam.workNo
368 404 }
369 405 getBomId(params).then((res) => {
  406 + this.bomIdList = []
370 407 if (res.success) {
371   - this.bomIdList.push(res.result)
372   - this.initBomTree(this.bomIdList[0])
373   - }
374   - })
375   - getOutsourcing(params).then((res) => {
376   - if (res.success) {
377   - this.planDataSource = res.result.records||res.result;
378   - if(res.result.total)
379   - {
380   - this.ipagination.total = res.result.total;
381   - }else{
382   - this.ipagination.total = 0;
  408 + for (let i = 0; i < res.result.length; i++) {
  409 + this.bomIdList.push(res.result[i])
383 410 }
  411 + this.initBomTree(this.bomIdList[0])
  412 + } else {
  413 + this.$message.warning(res.message)
  414 + this.loading = false
  415 + this.planLoading = false
384 416 }
385 417 })
386 418 },
... ... @@ -388,23 +420,47 @@ export default {
388 420 let params = {
389 421 "bomId": bomId
390 422 }
  423 + this.queryParam.bomId = bomId
391 424 getBomTree(params).then((res) => {
392 425 if (res.success) {
393   - this.loadData(res.result)
  426 + this.loadTreeData(res.result)
  427 + } else {
  428 + this.$message.warning(res.message)
394 429 }
395 430 })
  431 + this.getOutsourcingList(params)
  432 + },
  433 + getOutsourcingList(params) {
396 434 getOutsourcing(params).then((res) => {
397 435 if (res.success) {
398   - console.log(res)
399   - this.planDataSource = res.result.records;
400   - if(res.result.total)
401   - {
402   - this.ipagination.total = res.result.total;
403   - }else{
404   - this.ipagination.total = 0;
  436 + this.loading = false
  437 + this.dataSource = res.result.records
  438 + if (res.result.total) {
  439 + this.ipagination.total = res.result.total
  440 + } else {
  441 + this.ipagination.total = 0
405 442 }
406 443 }
407 444 })
  445 + },
  446 + solutionStatus(value) {
  447 + var actions = []
  448 + Object.keys(this.outsourcingInStatusList).some((key) => {
  449 + if (this.outsourcingInStatusList[key].value == ('' + value)) {
  450 + actions.push(this.outsourcingInStatusList[key].text)
  451 + return true
  452 + }
  453 + })
  454 + return actions.join('')
  455 + },
  456 + solutionColor(value) {
  457 + var actions = ''
  458 + Object.keys(this.outsourcingInStatusList).some((key) => {
  459 + if (this.outsourcingInStatusList[key].value == ('' + value)) {
  460 + actions = this.outsourcingInStatusList[key].color
  461 + }
  462 + })
  463 + return actions
408 464 }
409 465 },
410 466 computed: {
... ...
src/views/material/PurchaseIn.vue
... ... @@ -128,7 +128,7 @@
128 128 </a-form>
129 129 </div>
130 130 <div class="table-operator">
131   - <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
  131 + <span style="float: left;" class="table-page-search-submitButtons">
132 132 <a-button type="primary" @click="print()" icon="printer">打印</a-button>
133 133 </span>
134 134 <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
... ... @@ -181,40 +181,6 @@
181 181 <purchase-in-modal ref="modalForm" @ok="modalFormOk"></purchase-in-modal>
182 182 <purchase-in-batch-modal ref="batchModalForm"></purchase-in-batch-modal>
183 183 <merge-modal ref="mergeModal"></merge-modal>
184   -<!-- <a-modal-->
185   -<!-- title="送货单"-->
186   -<!-- :visible="printVisible"-->
187   -<!-- :confirm-loading="confirmLoading"-->
188   -<!-- @cancel="handleCancel"-->
189   -<!-- width="70%"-->
190   -<!-- >-->
191   -<!-- <a-row>-->
192   -<!-- <h2 class="center">送货单</h2>-->
193   -<!-- <div class="noprint container" style="text-align:right; padding: 20px;float: right">-->
194   -<!-- <a-button v-print="'#printContent'" ghost type="primary">打印</a-button>-->
195   -<!-- </div>-->
196   -<!-- </a-row>-->
197   -<!-- <a-row>-->
198   -<!-- <a-table-->
199   -<!-- ref="table"-->
200   -<!-- bordered-->
201   -<!-- size="middle"-->
202   -<!-- rowKey="id"-->
203   -<!-- :pagination="false"-->
204   -<!-- :dataSource="printDataSource"-->
205   -<!-- :loading="printLoading">-->
206   -<!-- <a-table-column key="workNo" data-index="workNo" title="工作令" />-->
207   -<!-- <a-table-column key="supplier" data-index="supplier" title="供应商" />-->
208   -<!-- <a-table-column key="materialCode" data-index="materialCode" title="物料编码" />-->
209   -<!-- <a-table-column key="materialName" data-index="materialName" title="物料名称" />-->
210   -<!-- <a-table-column key="unit" data-index="unit" title="单位" />-->
211   -<!-- <a-table-column key="qty" data-index="qty" title="数量" />-->
212   -<!-- <a-table-column key="spec" data-index="spec" title="规格" />-->
213   -<!-- <a-table-column key="spec" data-index="spec" title="规格" />-->
214   -<!-- </a-table>-->
215   -<!-- </a-row>-->
216   -
217   -<!-- </a-modal>-->
218 184 <purchase-in-print-modal ref="purchaseInPrintModal"></purchase-in-print-modal>
219 185 </a-card>
220 186  
... ... @@ -231,7 +197,7 @@ import {
231 197 getPurchase,
232 198 getBomIdList,
233 199 getBomId,
234   - getPurchaseByIds, ajaxGetDictItems
  200 + ajaxGetDictItems
235 201 } from '../../api/api'
236 202 import PurchaseInModal from './modules/PurchaseInModal'
237 203 import PurchaseInBatchModal from './modules/PurchaseInBatchModal'
... ...
src/views/material/PurchaseInfo.vue 0 → 100644
  1 +<template>
  2 + <div>
  3 + <div>
  4 + <div id="content">
  5 + <a-row type="flex">
  6 + <a-col :span="21">
  7 + <h2 class="center">送货单</h2>
  8 + <span>供应商</span>
  9 + </a-col>
  10 + <a-col :span="3">
  11 + <vue-qr :text="dataSource.toString()" :size="80" :margin="0"></vue-qr>
  12 + </a-col>
  13 + </a-row>
  14 + <a-row>
  15 + <a-table
  16 + ref="table"
  17 + bordered
  18 + size="middle"
  19 + rowKey="id"
  20 + :pagination="false"
  21 + :dataSource="dataSource"
  22 + :loading="loading"
  23 + :columns="columns">
  24 + <span slot="flag" slot-scope="text, record">
  25 + <vue-qr :text="qrText(record)" :size="80" :margin="0"></vue-qr>
  26 + </span>
  27 + <span slot="barcode" slot-scope="text, record">
  28 + <barcode :value="record.materialCode" :height="30" :displayValue="false" width="1"></barcode>
  29 + </span>
  30 + </a-table>
  31 + </a-row>
  32 + </div>
  33 +
  34 +
  35 + </div>
  36 +<!-- <template slot="footer">-->
  37 +<!-- <a-button @click="handleCancel" v-show="false"></a-button>-->
  38 +<!-- </template>-->
  39 + </div>
  40 +
  41 +</template>
  42 +
  43 +<script>
  44 +import VueQr from 'vue-qr'
  45 +import VueBarcode from 'vue-barcode'
  46 +import { getPurchaseByIds } from '@api/api'
  47 +
  48 +export default {
  49 + name: 'PurchaseInfo',
  50 + components: {
  51 + VueQr,
  52 + 'barcode': VueBarcode
  53 + },
  54 + data() {
  55 + return {
  56 + confirmLoading: false,
  57 + loading: false,
  58 + dataSource: [],
  59 + columns: [
  60 + {
  61 + title: '工作令号',
  62 + dataIndex: 'workNo',
  63 + key: 'workNo'
  64 + },
  65 + {
  66 + title: '物料编码',
  67 + dataIndex: 'materialCode',
  68 + key: 'materialCode'
  69 + }, {
  70 + title: '物料名称',
  71 + dataIndex: 'materialName',
  72 + key: 'materialName'
  73 + }, {
  74 + title: '物料单位',
  75 + dataIndex: 'unit',
  76 + key: 'unit'
  77 + }, {
  78 + title: '规格',
  79 + dataIndex: 'spec',
  80 + key: 'spec'
  81 + }, {
  82 + title: '数量',
  83 + dataIndex: 'qty',
  84 + key: 'qty'
  85 + }, {
  86 + title: '二维码',
  87 + dataIndex: 'qr',
  88 + scopedSlots: { customRender: 'barcode' },
  89 + align: 'center',
  90 + }
  91 + ]
  92 + }
  93 + },
  94 + created() {
  95 + this.open();
  96 + },
  97 + methods: {
  98 + handleCancel(e) {
  99 + this.visible = false
  100 + },
  101 + open() {
  102 + let url = window.location.href;
  103 + console.log(url)
  104 + let cs = url.split('?')[1];
  105 + let cs_arr = cs.split('&');
  106 + this.loading = true
  107 + this.visible = true
  108 + let params = {
  109 + 'ids': cs_arr
  110 + }
  111 + getPurchaseByIds(params).then(res => {
  112 + if (res.success) {
  113 + this.dataSource = res.result
  114 + this.loading = false
  115 + } else {
  116 + this.$message.warning('不是同一供应商!')
  117 + }
  118 + })
  119 + },
  120 + print() {
  121 + window.print()
  122 + },
  123 + doPrint() { //方法
  124 +
  125 + },
  126 + qrText(record) {
  127 + return "物料编码:"+record.materialCode+"\r\n物料名称:"+record.materialName+"\r\n规格:"
  128 + +record.spec+"\r\n工作令号:"+record.workNo+"\r\n数量:"+record.qty
  129 + }
  130 + }
  131 +}
  132 +</script>
  133 +
  134 +<style scoped>
  135 +
  136 +</style>
0 137 \ No newline at end of file
... ...
src/views/material/modules/PurchaseInModal.vue
... ... @@ -217,6 +217,7 @@ export default {
217 217 this.categories=this.model.categories
218 218 this.remark = this.model.remark
219 219 this.status = this.model.status
  220 + this.supplier = this.model.supplier
220 221 },
221 222 close () {
222 223 this.$emit('close');
... ...
src/views/material/modules/PurchaseInPrintModal.vue
... ... @@ -3,19 +3,28 @@
3 3 :visible="visible"
4 4 :confirm-loading="confirmLoading"
5 5 @cancel="handleCancel"
6   - width="70%"
7   -
  6 + width="50%"
8 7 >
9 8 <div>
10 9 <a-row>
11   -
12 10 <div class="noprint container" style="text-align:right; padding: 20px;float: right">
13 11 <a-button v-print="'#content'" ghost type="primary" >打印</a-button>
14 12 </div>
  13 +
15 14 </a-row>
16 15 <div id="content">
17   - <h2 class="center">送货单</h2>
18   - <span>供应商:XXX</span>
  16 + <a-row type="flex">
  17 + <a-col :span="21">
  18 + <h2 class="center">送货单</h2>
  19 + <span>采购单号:{{dataSource[0].code}}</span>
  20 + <span>供应商:{{dataSource[0].supplier}}</span>
  21 + <span>联系人:{{dataSource[0].contact}}</span>
  22 + <span>电话:{{dataSource[0].phone}}</span>
  23 + </a-col>
  24 + <a-col :span="3">
  25 + <vue-qr :text="qrText()" :size="80" :margin="0"></vue-qr>
  26 + </a-col>
  27 + </a-row>
19 28 <a-row>
20 29 <a-table
21 30 ref="table"
... ... @@ -26,9 +35,9 @@
26 35 :dataSource="dataSource"
27 36 :loading="loading"
28 37 :columns="columns">
29   - <span slot="flag" slot-scope="text, record">
30   - <vue-qr :text="qrText(record)" :size="80" :margin="0"></vue-qr>
31   - </span>
  38 + <span slot="barcode" slot-scope="text, record">
  39 + <barcode :value="record.materialCode+';'+record.qty" :height="30" :displayValue="false" width="1"></barcode>
  40 + </span>
32 41 </a-table>
33 42 </a-row>
34 43 </div>
... ... @@ -43,11 +52,13 @@
43 52 <script>
44 53 import { getPurchaseByIds } from '../../../api/api'
45 54 import VueQr from 'vue-qr'
  55 +import VueBarcode from 'vue-barcode';
46 56  
47 57 export default {
48 58 name: 'PurchaseInPrintModal',
49 59 components: {
50   - VueQr
  60 + VueQr,
  61 + 'barcode': VueBarcode
51 62 },
52 63 data() {
53 64 return {
... ... @@ -55,6 +66,7 @@ export default {
55 66 visible: false,
56 67 loading: false,
57 68 dataSource: [],
  69 + ids: [],
58 70 columns: [
59 71 {
60 72 title: '工作令号',
... ... @@ -82,9 +94,9 @@ export default {
82 94 dataIndex: 'qty',
83 95 key: 'qty'
84 96 }, {
85   - title: '二维码',
  97 + title: '码',
86 98 dataIndex: 'qr',
87   - scopedSlots: { customRender: 'flag' },
  99 + scopedSlots: { customRender: 'barcode' },
88 100 align: 'center',
89 101 }
90 102 ]
... ... @@ -95,10 +107,9 @@ export default {
95 107 this.visible = false
96 108 },
97 109 open(ids) {
98   - console.log("打印")
99 110 this.loading = true
100 111 this.visible = true
101   -
  112 + this.ids = ids
102 113 let params = {
103 114 'ids': ids
104 115 }
... ... @@ -106,6 +117,8 @@ export default {
106 117 if (res.success) {
107 118 this.dataSource = res.result
108 119 this.loading = false
  120 + } else {
  121 + this.$message.warning('不是同一供应商!')
109 122 }
110 123 })
111 124 },
... ... @@ -115,14 +128,12 @@ export default {
115 128 doPrint() { //方法
116 129  
117 130 },
118   - qrText(record) {
119   - return "物料编码:"+record.materialCode+"\r\n物料名称:"+record.materialName+"\r\n规格:"
120   - +record.spec+"\r\n工作令号:"+record.workNo+"\r\n数量:"+record.qty
  131 + qrText() {
  132 + return "http://localhost:8080/jeecg-boot/material/purchase/qrInfo?ids="+this.ids
121 133 }
122 134 }
123 135 }
124 136 </script>
125 137  
126 138 <style scoped>
127   -
128 139 </style>
129 140 \ No newline at end of file
... ...
src/views/material/supplierPurchase.vue
... ... @@ -27,7 +27,7 @@
27 27 </div>
28 28  
29 29 <div class="table-operator">
30   - <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
  30 + <span style="float: left;" class="table-page-search-submitButtons">
31 31 <a-button type="primary" @click="print()" icon="printer">打印</a-button>
32 32 </span>
33 33 </div>
... ... @@ -56,7 +56,10 @@
56 56  
57 57 <span slot="tradeTime" slot-scope="time">{{ timeFormat(time) }}</span>
58 58 </a-table>
  59 + <purchase-in-print-modal ref="purchaseInPrintModal"></purchase-in-print-modal>
  60 +
59 61 </a-card>
  62 +
60 63 </template>
61 64  
62 65 <script>
... ... @@ -64,10 +67,14 @@
64 67 import { JeecgListMixin } from '../../mixins/JeecgListMixin'
65 68 import { ajaxGetDictItems, getPurchase, mergePurchase } from '../../api/api'
66 69 import moment from 'moment'
  70 +import PurchaseInPrintModal from './modules/PurchaseInPrintModal'
67 71  
68 72 export default {
69 73 name: 'supplierPurchase',
70 74 mixins: [JeecgListMixin],
  75 + components: {
  76 + PurchaseInPrintModal
  77 + },
71 78 data() {
72 79 return {
73 80 loading: false,
... ... @@ -220,7 +227,14 @@ export default {
220 227 },
221 228 timeFormat(val) {
222 229 return moment(val).format('YYYY-MM-DD')
223   - }
  230 + },
  231 + print() {
  232 + if (this.selectedRowKeys.length <= 0) {
  233 + this.$message.warning('请选择一条记录!')
  234 + return "";
  235 + }
  236 + this.$refs.purchaseInPrintModal.open(this.selectedRowKeys)
  237 + },
224 238 }
225 239 }
226 240 </script>
... ...
src/views/system/BomList.vue
... ... @@ -101,8 +101,8 @@
101 101 @expandedRowsChange="handleExpandedRowsChange">
102 102  
103 103 <span slot="status" slot-scope="status, record">
104   - <a-tag :key="status" :color="solutionPurchaseColor(status)">
105   - {{ solutionPurchaseStatus(status) }}
  104 + <a-tag :key="status" :color="solutionStatusColor(record)">
  105 + {{ solutionStatus(record) }}
106 106 </a-tag>
107 107 </span>
108 108  
... ... @@ -237,12 +237,17 @@ export default {
237 237 projectNameList: [],
238 238 workNoList: [],
239 239 projectNoList: [],
240   - bomIdList: []
  240 + bomIdList: [],
  241 + purchasedStatusList: [],
  242 + outsourcingInStatusList: [],
  243 + selfMadeStatusList: []
241 244 }
242 245 },
243 246 created() {
244 247 this.loadFrom()
245 248 this.getPurchaseStatus()
  249 + this.getOutsourcingInStatus()
  250 + this.getSelfMadeStatusList()
246 251 },
247 252 methods: {
248 253 loadFrom() {
... ... @@ -287,6 +292,7 @@ export default {
287 292 "projectNo": this.queryParam.projectNo,
288 293 "workNo": this.queryParam.workNo
289 294 }
  295 + this.loading = true
290 296 getBomId(params).then((res) => {
291 297 if (res.success) {
292 298 this.bomIdList = [];
... ... @@ -328,7 +334,7 @@ export default {
328 334 },
329 335 onSelectAll(selected) {
330 336 if (selected) {
331   - const tabData = this.selectedRowKeys;
  337 + const tabData = this.dataSource;
332 338 const arr = [];
333 339 setVal(tabData, arr);
334 340 this.selectedRowKeys = arr;
... ... @@ -462,36 +468,90 @@ export default {
462 468 })
463 469 }
464 470 },
465   - solutionPurchaseStatus(value) {
466   - var actions = []
467   - Object.keys(this.purchasedStatusList).some((key) => {
468   - if (this.purchasedStatusList[key].value == ('' + value)) {
469   - actions.push(this.purchasedStatusList[key].text)
470   - return true
  471 + solutionStatus(record) {
  472 + let actions = []
  473 + if (record.method == "外购") {
  474 + Object.keys(this.purchasedStatusList).some((key) => {
  475 + if (this.purchasedStatusList[key].value == ('' + record.status)) {
  476 + actions.push(this.purchasedStatusList[key].text)
  477 + return true
  478 + }
  479 + })
  480 + return actions.join('')
  481 + } else if (record.method == "外协") {
  482 + Object.keys(this.outsourcingInStatusList).some((key) => {
  483 + if (this.outsourcingInStatusList[key].value == ('' + record.status)) {
  484 + actions.push(this.outsourcingInStatusList[key].text)
  485 + return true
  486 + }
  487 + })
  488 + return actions.join('')
  489 + } else if (record.method == "自制") {
  490 + Object.keys(this.selfMadeStatusList).some((key) => {
  491 + if (this.selfMadeStatusList[key].value == ('' + record.status)) {
  492 + actions.push(this.selfMadeStatusList[key].text)
  493 + return true
  494 + }
  495 + })
  496 + return actions.join('')
  497 + } else {
  498 + actions.push("未知")
  499 + return actions.join('')
  500 + }
  501 + },
  502 + solutionStatusColor(record) {
  503 + let actions = ''
  504 + if (record.method == "外购") {
  505 + Object.keys(this.purchasedStatusList).some((key) => {
  506 + if (this.purchasedStatusList[key].value == ('' + record.status)) {
  507 + actions = this.purchasedStatusList[key].color
  508 + }
  509 + })
  510 + return actions
  511 + } else if (record.method == "外协") {
  512 + Object.keys(this.outsourcingInStatusList).some((key) => {
  513 + if (this.outsourcingInStatusList[key].value == ('' + record.status)) {
  514 + actions = this.outsourcingInStatusList[key].color
  515 + }
  516 + })
  517 + return actions
  518 + } else if (record.method == "自制") {
  519 + Object.keys(this.selfMadeStatusList).some((key) => {
  520 + if (this.selfMadeStatusList[key].value == ('' + record.status)) {
  521 + actions = this.selfMadeStatusList[key].color
  522 + }
  523 + })
  524 + return actions
  525 + } else {
  526 + actions = "#f50"
  527 + return actions
  528 + }
  529 +
  530 + },
  531 + getPurchaseStatus() {
  532 + ajaxGetDictItems('purchased_status').then((res) => {
  533 + if (res.success) {
  534 + this.purchasedStatusList = res.result
471 535 }
472 536 })
473   - return actions.join('')
474 537 },
475   - solutionPurchaseColor(value) {
476   - var actions = ''
477   - Object.keys(this.purchasedStatusList).some((key) => {
478   - if (this.purchasedStatusList[key].value == ('' + value)) {
479   - actions = this.purchasedStatusList[key].color
  538 + getOutsourcingInStatus() {
  539 + ajaxGetDictItems('outsourcing_status').then((res) => {
  540 + if (res.success) {
  541 + this.outsourcingInStatusList = res.result
480 542 }
481 543 })
482   - return actions
483 544 },
484   - getPurchaseStatus() {
485   - ajaxGetDictItems('purchased_status').then((res) => {
  545 + getSelfMadeStatusList() {
  546 + ajaxGetDictItems('self_made_status').then((res) => {
486 547 if (res.success) {
487   - this.purchasedStatusList = res.result
  548 + this.selfMadeStatusList = res.result
488 549 }
489 550 })
490 551 },
491 552 confirmHandle(confirm) {
492 553 return confirm ? '是' : '否'
493 554 }
494   -
495 555 },
496 556 computed: {
497 557 importExcelUrl: function(){
... ...