From df485888ecb9f69c0051fc192b87aec700cc4f89 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周日, 08 12月 2024 11:01:40 +0800 Subject: [PATCH] 增加pda功能 --- LA24030_LuLiPackageLine_Pda/components/cascader.vue | 538 LA24030_LuLiPackageLine_Pda/api/putIn/three.js | 40 LA24030_LuLiPackageLine_Pda/mixins/blueproduct.js | 394 LA24030_LuLiPackageLine_Pda/api/wareTool/index.js | 62 LA24030_LuLiPackageLine_Pda/components/BottomModal.vue | 88 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/checksums.js | 29 LA24030_LuLiPackageLine_Pda/mock/callHistory.js | 63 LA24030_LuLiPackageLine_Pda/pages/login/login.vue | 523 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128C.js | 42 LA24030_LuLiPackageLine_Pda/static/index/takeMaterial.png | 0 LA24030_LuLiPackageLine_Pda/mixins/sortBlue.js | 463 LA24030_LuLiPackageLine_Pda/pages/index/index copy.vue | 691 LA24030_LuLiPackageLine_Pda/pages/untie/outbound.vue | 263 LA24030_LuLiPackageLine_Pda/utils/md5.js | 261 LA24030_LuLiPackageLine_Pda/components/print/util.js | 66 LA24030_LuLiPackageLine_Pda/styles/iconfont/svg.js | 1 LA24030_LuLiPackageLine_Pda/pages/sort/kittingSort.vue | 641 LA24030_LuLiPackageLine_Pda/static/index/artificial.png | 0 LA24030_LuLiPackageLine_Pda/pages/sort/pickorder.vue | 555 LA24030_LuLiPackageLine_Pda/styles/index.css | 784 LA24030_LuLiPackageLine_Pda/pages/wareTool/borrow.vue | 278 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN2.js | 58 LA24030_LuLiPackageLine_Pda/pages/deliver/deliver.vue | 595 LA24030_LuLiPackageLine_Pda/pages/sort/pickRecord.vue | 300 LA24030_LuLiPackageLine_Pda/.gitignore | 5 LA24030_LuLiPackageLine_Pda/pages/check/square.vue | 192 LA24030_LuLiPackageLine_Pda/pages/putOut/putOut.vue | 70 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE39/index.js | 104 LA24030_LuLiPackageLine_Pda/pages/crossDock/crossDock.vue | 938 LA24030_LuLiPackageLine_Pda/pages/untie/untie.vue | 524 LA24030_LuLiPackageLine_Pda/api/putaway/putaway.js | 26 LA24030_LuLiPackageLine_Pda/pages/takeMaterial/former/former.vue | 514 LA24030_LuLiPackageLine_Pda/mixins/checkbox.js | 33 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/ITF.js | 69 LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/android/libDevice_v1.7.8_2022-04-29.aar | 0 LA24030_LuLiPackageLine_Pda/pages/takeMaterial/takeMaterial.vue | 70 LA24030_LuLiPackageLine_Pda/utils/print/gbk.js | 201 LA24030_LuLiPackageLine_Pda/components/LeftModal.vue | 34 LA24030_LuLiPackageLine_Pda/manifest.json | 131 LA24030_LuLiPackageLine_Pda/static/index/material.png | 0 LA24030_LuLiPackageLine_Pda/pages/print/wms copy.vue | 647 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN.js | 92 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN8.js | 81 LA24030_LuLiPackageLine_Pda/pages/index/index.vue | 827 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/UPCE.js | 185 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN13.js | 119 LA24030_LuLiPackageLine_Pda/pages/wareTool/index.vue | 278 LA24030_LuLiPackageLine_Pda/api/sort.js | 236 LA24030_LuLiPackageLine_Pda/components/print/bluetooth.js | 268 LA24030_LuLiPackageLine_Pda/pages/untie/localUnBind.vue | 368 LA24030_LuLiPackageLine_Pda/pages/borrow/borrow.vue | 443 LA24030_LuLiPackageLine_Pda/store/modules/print.js | 26 LA24030_LuLiPackageLine_Pda/components/print/weapp.qrcode.esm.js | 5 LA24030_LuLiPackageLine_Pda/static/index/tou.png | 0 LA24030_LuLiPackageLine_Pda/static/index/ware.png | 0 LA24030_LuLiPackageLine_Pda/api/putIn/localBind.js | 40 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/encoder.js | 27 LA24030_LuLiPackageLine_Pda/package.json | 6 LA24030_LuLiPackageLine_Pda/pages/recommend/recommend.vue | 642 LA24030_LuLiPackageLine_Pda/colorui/main.css | 3917 +++ LA24030_LuLiPackageLine_Pda/api/putIn/emptySearch.js | 17 LA24030_LuLiPackageLine_Pda/App.vue | 89 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/pharmacode/index.js | 73 LA24030_LuLiPackageLine_Pda/store/index.js | 16 LA24030_LuLiPackageLine_Pda/pages/old/putIn.vue | 245 LA24030_LuLiPackageLine_Pda/pages/artificial/itemsMertial.vue | 356 LA24030_LuLiPackageLine_Pda/pages/check/return.vue | 196 LA24030_LuLiPackageLine_Pda/utils/utf8ByteToUnicodeStr.js | 51 LA24030_LuLiPackageLine_Pda/components/noclick.js | 24 LA24030_LuLiPackageLine_Pda/static/lanya.png | 0 LA24030_LuLiPackageLine_Pda/pages/putIn/untie/untie.vue | 392 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/constants.js | 9 LA24030_LuLiPackageLine_Pda/pages/receive/receive.vue | 468 LA24030_LuLiPackageLine_Pda/styles/iconfont/iconfont.json | 121 LA24030_LuLiPackageLine_Pda/api/putIn/material.js | 17 LA24030_LuLiPackageLine_Pda/components/ScanCode.vue | 96 LA24030_LuLiPackageLine_Pda/static/index/borrow.png | 0 LA24030_LuLiPackageLine_Pda/components/tki-qrcode/tki-qrcode.vue | 206 LA24030_LuLiPackageLine_Pda/pages/callTray/callTray2.vue | 288 LA24030_LuLiPackageLine_Pda/README.md | 0 LA24030_LuLiPackageLine_Pda/pages/resume/yukuResume.vue | 786 LA24030_LuLiPackageLine_Pda/utils/print/util.js | 66 LA24030_LuLiPackageLine_Pda/static/modal/error.png | 0 LA24030_LuLiPackageLine_Pda/mixins/printPoLabel.js | 126 LA24030_LuLiPackageLine_Pda/mixins/playSound.js | 31 LA24030_LuLiPackageLine_Pda/static/index/callTray.png | 0 LA24030_LuLiPackageLine_Pda/api/scrap.js | 35 LA24030_LuLiPackageLine_Pda/pages/putIn/artificial/artificial.vue | 450 LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/orderpiece.vue | 1260 + LA24030_LuLiPackageLine_Pda/colorui/icon.css | 1226 + LA24030_LuLiPackageLine_Pda/mixins/Blue.js | 427 LA24030_LuLiPackageLine_Pda/components/CuModal.vue | 45 LA24030_LuLiPackageLine_Pda/styles/iconfont/iconfont.js | 1 LA24030_LuLiPackageLine_Pda/static/index/putIn.png | 0 LA24030_LuLiPackageLine_Pda/colorui/components/cu-custom.vue | 147 LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/android/libPrinter_v1.3.4_2023-06-26.aar | 0 LA24030_LuLiPackageLine_Pda/static/index/ping.png | 0 LA24030_LuLiPackageLine_Pda/pages/sort/propComp.vue | 249 LA24030_LuLiPackageLine_Pda/api/putIn/empty.js | 25 LA24030_LuLiPackageLine_Pda/static/index/cancel.png | 0 LA24030_LuLiPackageLine_Pda/pages/artificial/artificial.vue2 | 407 LA24030_LuLiPackageLine_Pda/pages/scrap/scrap.vue | 711 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI11.js | 33 LA24030_LuLiPackageLine_Pda/utils/print/weapp.qrcode.esm.js | 5 LA24030_LuLiPackageLine_Pda/pages/untie/localBind.vue | 322 LA24030_LuLiPackageLine_Pda/api/takeMaterial/order.js | 9 LA24030_LuLiPackageLine_Pda/styles/main.css | 4135 ++++ LA24030_LuLiPackageLine_Pda/components/tki-barcode/tki-barcode.vue | 201 LA24030_LuLiPackageLine_Pda/pages/artificial/artificial.vue | 799 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/GenericBarcode/index.js | 55 LA24030_LuLiPackageLine_Pda/pages/check/check/check.vue | 423 LA24030_LuLiPackageLine_Pda/pages/scrap/photo.vue | 443 LA24030_LuLiPackageLine_Pda/static/modal/iconCk.png | 0 LA24030_LuLiPackageLine_Pda/api/old/index.js | 37 LA24030_LuLiPackageLine_Pda/api/borrow/borrow.js | 17 LA24030_LuLiPackageLine_Pda/pages/old/index.vue | 54 LA24030_LuLiPackageLine_Pda/static/index/free.png | 0 LA24030_LuLiPackageLine_Pda/mixins/printShengChanLabel.js | 121 LA24030_LuLiPackageLine_Pda/static/index/receive.png | 0 LA24030_LuLiPackageLine_Pda/utils/print/Blue.js | 554 LA24030_LuLiPackageLine_Pda/pages/putIn/material/material.vue | 377 LA24030_LuLiPackageLine_Pda/mixins/printBanma.js | 128 LA24030_LuLiPackageLine_Pda/api/mark/index.js | 17 LA24030_LuLiPackageLine_Pda/pages/takeMaterial/give/give.vue | 515 LA24030_LuLiPackageLine_Pda/pages/print/gauge.vue | 138 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/Barcode.js | 17 LA24030_LuLiPackageLine_Pda/pages/sort/squareSort2.vue | 797 LA24030_LuLiPackageLine_Pda/api/putIn/plane.js | 25 LA24030_LuLiPackageLine_Pda/utils/print/printerutil.js | 91 LA24030_LuLiPackageLine_Pda/pages/putIn/empty/empty.vue | 153 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcode.js | 190 LA24030_LuLiPackageLine_Pda/utils/compress.js | 102 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/index.js | 39 LA24030_LuLiPackageLine_Pda/pages/resume/pickResume.vue | 925 LA24030_LuLiPackageLine_Pda/components/tki-qrcode/qrcode.js | 1201 + LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN5.js | 65 LA24030_LuLiPackageLine_Pda/pages/hander/handerIn.vue | 452 LA24030_LuLiPackageLine_Pda/pages/check/check/index.vue | 426 LA24030_LuLiPackageLine_Pda/styles/iconfont/iconfont.css | 79 LA24030_LuLiPackageLine_Pda/pages.json | 558 LA24030_LuLiPackageLine_Pda/pages/takeMaterial/return/return.vue | 463 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI10.js | 33 LA24030_LuLiPackageLine_Pda/utils/print/printerjobs.js | 460 LA24030_LuLiPackageLine_Pda/components/cascader2.vue | 551 LA24030_LuLiPackageLine_Pda/pages/check/out.vue | 730 LA24030_LuLiPackageLine_Pda/pages/print/wms.vue | 278 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/index.js | 34 LA24030_LuLiPackageLine_Pda/static/logo.jpg | 0 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/auto.js | 73 LA24030_LuLiPackageLine_Pda/pages/untie/untieForMove.vue | 501 LA24030_LuLiPackageLine_Pda/static/index/1.png | 0 LA24030_LuLiPackageLine_Pda/pages/callTray/callTray.vue | 471 LA24030_LuLiPackageLine_Pda/utils/print/bluetooth.js | 267 LA24030_LuLiPackageLine_Pda/api/login.js | 46 LA24030_LuLiPackageLine_Pda/components/print/commands.js | 193 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/index.js | 34 LA24030_LuLiPackageLine_Pda/api/putIn/callTray.js | 52 LA24030_LuLiPackageLine_Pda/static/index/untie.png | 0 LA24030_LuLiPackageLine_Pda/pages/sort/index.vue | 55 LA24030_LuLiPackageLine_Pda/pages/check/index.vue | 382 LA24030_LuLiPackageLine_Pda/utils/print/bluetoothPrinter/bluetoothPrinter.vue | 22 LA24030_LuLiPackageLine_Pda/mixins/checkboxYueKu.js | 61 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128A.js | 42 LA24030_LuLiPackageLine_Pda/pages/print/bluetoothConnection.vue | 105 LA24030_LuLiPackageLine_Pda/components/ModalCode.vue | 85 LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/android/print-release.aar | 0 LA24030_LuLiPackageLine_Pda/pages/deliver/deliverDo.vue | 568 LA24030_LuLiPackageLine_Pda/pages/unpack/plane/plane.vue | 301 LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/poYueku.vue | 295 LA24030_LuLiPackageLine_Pda/pages/untie/checkAllMove.vue | 562 LA24030_LuLiPackageLine_Pda/api/check/check.js | 150 LA24030_LuLiPackageLine_Pda/api/deliver.js | 143 LA24030_LuLiPackageLine_Pda/api/hander/hander.js | 91 LA24030_LuLiPackageLine_Pda/components/print/bluetoothPrinter/bluetoothPrinter.vue | 22 LA24030_LuLiPackageLine_Pda/api/print.js | 92 LA24030_LuLiPackageLine_Pda/pages/sort/search.vue | 165 LA24030_LuLiPackageLine_Pda/pages/putIn/putIn.vue | 66 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/index.js | 29 LA24030_LuLiPackageLine_Pda/utils/dateTime.js | 16 LA24030_LuLiPackageLine_Pda/components/blue.vue | 84 LA24030_LuLiPackageLine_Pda/mock/theCleaning.js | 50 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/codabar/index.js | 92 LA24030_LuLiPackageLine_Pda/uni.scss | 103 LA24030_LuLiPackageLine_Pda/utils/mixin.js | 82 LA24030_LuLiPackageLine_Pda/api/container/index.js | 10 LA24030_LuLiPackageLine_Pda/pages/untie/untie2.vue | 418 LA24030_LuLiPackageLine_Pda/components/print/printerutil.js | 91 LA24030_LuLiPackageLine_Pda/.hbuilderx/launch.json | 20 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI1110.js | 35 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI1010.js | 35 LA24030_LuLiPackageLine_Pda/components/print/printerjobs.js | 456 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128.js | 167 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/ITF14.js | 55 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/index.js | 19 LA24030_LuLiPackageLine_Pda/mixins/printLabelSingle.js | 120 LA24030_LuLiPackageLine_Pda/pages/print/bluePrint.js | 341 LA24030_LuLiPackageLine_Pda/store/node_modules.rar | 0 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/constants.js | 30 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128_AUTO.js | 41 LA24030_LuLiPackageLine_Pda/pages/sort/sort.vue | 775 LA24030_LuLiPackageLine_Pda/pages/check/index2.vue | 377 LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/package.json | 38 LA24030_LuLiPackageLine_Pda/pages/old/putOut.vue | 226 LA24030_LuLiPackageLine_Pda/components/MsiUpload.vue | 32 LA24030_LuLiPackageLine_Pda/main.js | 29 LA24030_LuLiPackageLine_Pda/pages/print/materialInfo.vue | 315 LA24030_LuLiPackageLine_Pda/api/receive/receive.js | 27 LA24030_LuLiPackageLine_Pda/store/modules/system.js | 15 LA24030_LuLiPackageLine_Pda/pages/expressmail/expressmail.vue | 99 LA24030_LuLiPackageLine_Pda/pages/print/material.vue | 291 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/constants.js | 54 LA24030_LuLiPackageLine_Pda/api/expressmail.js | 10 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128B.js | 42 LA24030_LuLiPackageLine_Pda/pages/hander/handerOut.vue | 354 LA24030_LuLiPackageLine_Pda/colorui/animation.css | 184 LA24030_LuLiPackageLine_Pda/pages/mark/mark.vue | 315 LA24030_LuLiPackageLine_Pda/api/putIn/untie.js | 104 LA24030_LuLiPackageLine_Pda/pages/putIn/plane/plane.vue | 324 LA24030_LuLiPackageLine_Pda/pages/takeMaterial/order/order.vue | 444 LA24030_LuLiPackageLine_Pda/api/unpack/plan.js | 17 LA24030_LuLiPackageLine_Pda/pages/takeMaterial/noOrder/noOrder.vue | 469 LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/doYueku.vue | 297 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI.js | 74 LA24030_LuLiPackageLine_Pda/utils/request.js | 92 LA24030_LuLiPackageLine_Pda/store/modules/user.js | 15 LA24030_LuLiPackageLine_Pda/static/modal/success.png | 0 LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/orderpiecePo.vue | 1190 + LA24030_LuLiPackageLine_Pda/pages/putaway/putaway.vue | 665 LA24030_LuLiPackageLine_Pda/mixins/printDoLabel.js | 154 LA24030_LuLiPackageLine_Pda/components/buttonModal.vue | 115 LA24030_LuLiPackageLine_Pda/utils/print/commands.js | 193 LA24030_LuLiPackageLine_Pda/api/takeMaterial/orderpiece.js | 131 LA24030_LuLiPackageLine_Pda/pages/sort/sort2.vue | 611 LA24030_LuLiPackageLine_Pda/pages/print/deliver.vue | 170 LA24030_LuLiPackageLine_Pda/pages/sort/return.vue | 216 LA24030_LuLiPackageLine_Pda/.keep | 0 LA24030_LuLiPackageLine_Pda/utils/tool.js | 51 LA24030_LuLiPackageLine_Pda/pages/putIn/three/three.vue | 243 LA24030_LuLiPackageLine_Pda/api/putIn/artificial.js | 214 LA24030_LuLiPackageLine_Pda/components/Loding.vue | 27 LA24030_LuLiPackageLine_Pda/pages/unpack/unpack.vue | 52 LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/UPC.js | 165 LA24030_LuLiPackageLine_Pda/pages/resume/sortResume.vue | 927 LA24030_LuLiPackageLine_Pda/components/print/gbk.js | 201 LA24030_LuLiPackageLine_Pda/components/SelectList.vue | 39 LA24030_LuLiPackageLine_Pda/package-lock.json | 231 LA24030_LuLiPackageLine_Pda/static/index/sort.png | 0 247 files changed, 60,313 insertions(+), 0 deletions(-) diff --git a/LA24030_LuLiPackageLine_Pda/.gitignore b/LA24030_LuLiPackageLine_Pda/.gitignore new file mode 100644 index 0000000..9457f2e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/.gitignore @@ -0,0 +1,5 @@ +node_modules/ +uni_modules/ +.project +unpackage/ +.DS_Store \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/.hbuilderx/launch.json b/LA24030_LuLiPackageLine_Pda/.hbuilderx/launch.json new file mode 100644 index 0000000..a97fd25 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/.hbuilderx/launch.json @@ -0,0 +1,20 @@ +{ // launch.json 閰嶇疆浜嗗惎鍔ㄨ皟璇曟椂鐩稿叧璁剧疆锛宑onfigurations涓嬭妭鐐瑰悕绉板彲涓� app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ + // launchtype椤瑰彲閰嶇疆鍊间负local鎴杛emote, local浠h〃鍓嶇杩炴湰鍦颁簯鍑芥暟锛宺emote浠h〃鍓嶇杩炰簯绔簯鍑芥暟 + "version": "0.0", + "configurations": [{ + "app-plus" : + { + "launchtype" : "local" + }, + "default" : + { + "launchtype" : "local" + }, + "h5" : + { + "launchtype" : "local" + }, + "type" : "uniCloud" + } + ] +} diff --git a/LA24030_LuLiPackageLine_Pda/.keep b/LA24030_LuLiPackageLine_Pda/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/.keep diff --git a/LA24030_LuLiPackageLine_Pda/App.vue b/LA24030_LuLiPackageLine_Pda/App.vue new file mode 100644 index 0000000..7d49bd7 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/App.vue @@ -0,0 +1,89 @@ +<script> + import Vue from 'vue' + export default { + onLaunch: function() { + if (!uni.getStorageSync('switchs')) { + uni.setStorageSync('switchs', JSON.stringify(true)) + } + //鑾峰彇澶撮儴楂樺害 + uni.getSystemInfo({ + success: function(e) { + // console.log('鎵嬫満鐗屽瓙'+e.brand) //鎵嬫満鐗屽瓙 + // console.log('鎵嬫満鍨嬪彿'+e.model) //鎵嬫満鍨嬪彿 + Vue.prototype.PhoneModel = e.model + // #ifndef MP + Vue.prototype.StatusBar = e.statusBarHeight; + Vue.prototype.CustomBar = e.statusBarHeight + 45; + console.log(e.platform) + // if (e.platform == 'android') { + // Vue.prototype.CustomBar = e.statusBarHeight + 50; + // } else { + // Vue.prototype.CustomBar = e.statusBarHeight + 45; + // }; + // #endif + + // #ifdef MP-WEIXIN || MP-QQ + Vue.prototype.StatusBar = e.statusBarHeight; + let capsule = wx.getMenuButtonBoundingClientRect(); + if (capsule) { + Vue.prototype.Custom = capsule; + // Vue.prototype.capsuleSafe = uni.upx2px(750) - capsule.left + uni.upx2px(750) - capsule.right; + Vue.prototype.CustomBar = capsule.bottom + capsule.top - e.statusBarHeight; + } else { + Vue.prototype.CustomBar = e.statusBarHeight + 50; + } + // #endif + + + // #ifdef MP-ALIPAY + Vue.prototype.StatusBar = e.statusBarHeight; + Vue.prototype.CustomBar = e.statusBarHeight + e.titleBarHeight; + // #endif + + } + }) + + + + }, + onShow: function() { + console.log('App Show') + }, + onError:function(error,msg){ + console.log(error.toString()) + if(error.toString().indexOf('SyntaxError') != -1 ){ //瀛愰〉闈oken澶辨晥鎶ラ敊 + if(!uni.getStorageSync('userInfo')){ + uni.showToast({ + title: 'token澶辨晥锛岃閲嶆柊鐧婚檰', + icon: 'none', + duration: 2000 + }); + // 璺宠浆鍒扮櫥褰� + uni.redirectTo({ + url: '/pages/login/login' + }) + } + + } + }, + methods: { + + } + } +</script> + +<style lang="scss"> + /* 瑕佸啓鍦ㄧ涓�琛岋紝鍚屾椂缁檚tyle鏍囩鍔犲叆lang="scss"灞炴�� */ + @import "uview-ui/index.scss"; + /*姣忎釜椤甸潰鍏叡css */ + @import "styles/iconfont/iconfont.css"; + @import "styles/main.css"; + @import "styles/index.css"; + + page { + width: 100%; + min-height: 100vh; + background-color: #F2F2F2; + box-sizing: border-box; + } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/README.md b/LA24030_LuLiPackageLine_Pda/README.md new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/README.md diff --git a/LA24030_LuLiPackageLine_Pda/api/borrow/borrow.js b/LA24030_LuLiPackageLine_Pda/api/borrow/borrow.js new file mode 100644 index 0000000..d6d90a1 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/borrow/borrow.js @@ -0,0 +1,17 @@ +import {request} from '../../utils/request.js' +export function query(data){ //鏌ヨ鐗╂枡 + return request({ + url: `/delivery/order/detail/query?OrderNo=${data}`, + method: 'get', + contentType:'application/json', + // data: data + }) +} +export function updateHead(data){ //纭鎻愪氦 + return request({ + url: `/delivery/order/updateHead`, + method: 'post', + contentType:'application/json', + data: data + }) +} diff --git a/LA24030_LuLiPackageLine_Pda/api/check/check.js b/LA24030_LuLiPackageLine_Pda/api/check/check.js new file mode 100644 index 0000000..80a69a6 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/check/check.js @@ -0,0 +1,150 @@ +import {request} from '../../utils/request.js' +import qs from 'qs' + +export function query(){ //鍗曟嵁鐘舵�佺粺璁� + return request({ + url: `/check/order/status/query`, + method: 'get', + contentType:'application/json' + }) +} +export function Status(data){ //鍗曟嵁鏌ヨ + return request({ + url: `/api/wmsInventoryCheckOrder/page`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function OrderSearch(data){ // 鐩樼偣涓嬪彂-鏍规嵁瀹瑰櫒缂栧彿鍒嗙粍鏌ヨ + return request({ + url: `/api/wmsInventoryCheckOrderDetails/pageForPda`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function material(data){ //鍗曟嵁瀹瑰櫒鏌ヨ + return request({ + url: `/api/wmsInventoryCheckOrderDetails/Page`, + method: 'post', + contentType:'application/json', + data: data + }) +} + +export function materialSNcode(data){ + return request({ + url: `/api/WmsInventoryCheckOrderDetails/PDAInventoryQueryAndInsert?${qs.stringify(data)}`, + method: 'get', + contentType:'application/json', + data: data + }) +} + +export function submit(data){ //纭鍑哄簱 + return request({ + url: `/api/WmsInventoryCheckOrder/Out`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function checkTask(data){ //鏌ヨ鐩樼偣浠诲姟 + return request({ + url: `/check/order/out/material/query?${qs.stringify(data)}`, + method: 'get', + contentType:'application/json', + data: data + }) +} +export function issueSubmit(data){ //闂鏍囪 + return request({ + url: `/check/order/problem/submit`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function finish(data){ //鐩樼偣瀹屾垚 + return request({ + url: `/api/WmsInventoryCheckOrderDetails/OutFinish`, + method: 'post', + contentType:'application/json', + data + }) +} +export function finishOrderSubmit(data){ //鏁翠釜鍗曟嵁瀹屾垚 + return request({ + url: `/api/WmsInventoryCheckOrder/FinishedOrder`, + method: 'post', + contentType:'application/json', + data + }) +} +// pda鍗曟嵁瀹屾垚楠岃瘉锛氬崟鎹槸鍚︽湁鏈洏鐐圭殑鏄庣粏 +export function finishOrderSubmitValid(data){ + return request({ + url: `/api/WmsInventoryCheckOrder/ValidDetail`, + method: 'get', + contentType:'application/json', + data + }) +} + + +export function stocktakingWhours(data){ //瀹瑰櫒鍥炲簱 + return request({ + url: `/OrderReceipt/stocktakingWhours`, + method: 'post', + contentType:'application/json', + data: data + }) +} + + +export function getContainerData(data){ //鑾峰彇骞冲簱闇�瑕佺洏鐐圭殑瀹瑰櫒 + return request({ + // url: `/check/order/out/containerCode/query?PageNo=${pageNo}&PageSize=10&WareContainerCode=${containerCode}`, + url: `/check/order/out/containerCode/query?${qs.stringify(data)}`, + method: 'get' + }) +} + +export function getSquareMaterial(data){ //骞冲簱鏌ユ寚瀹氱洏鐐瑰崟涓嬮渶瑕佺洏鐐圭殑鐗╂枡 + return request({ + url: `/check/order/out/material/query?${qs.stringify(data)}`, + method: 'get' + }) +} +// 鎷肩洏鍑哄簱 +export function getPinpanCkData(data){ + return request({ + url: `/WareContainer/groupOutboundPage?${qs.stringify(data)}`, + method: 'get' + }) +} +//鎷肩洏鍑哄簱 +export function PinpanCkConfirm(data){ + return request({ + url: `/task/callDesignatedTray?${qs.stringify(data)}`, + method: 'post', + data: data + }) +} +//鎷肩洏鍑哄簱 - 鎵归噺涓婁紶 +export function PinpanCkConfirmNew(data){ + return request({ + url: `/task/callDesignatedTrayForBatch`, + method: 'post', + data: data + }) +} +//鐩樼偣鍗曞彿 - 鍒楄〃 +export function getPandianOrder(data) { + return request({ + url: `/check/plan/query`, + method: 'get', + data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/container/index.js b/LA24030_LuLiPackageLine_Pda/api/container/index.js new file mode 100644 index 0000000..a7ce335 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/container/index.js @@ -0,0 +1,10 @@ +import {request} from '../../utils/request.js' + +//绌哄鍣ㄥ叆搴� +export function trayPutStorage(data) { + return request({ + url: `/task/trayPutStorage`, + method: 'post', + data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/deliver.js b/LA24030_LuLiPackageLine_Pda/api/deliver.js new file mode 100644 index 0000000..44b8f58 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/deliver.js @@ -0,0 +1,143 @@ +import {request} from '../utils/request.js' +import qs from 'qs' +//鏌ヨ鍑哄簱鍗曚笅鐨勫彂璐х墿鏂欎俊鎭� +export function getOutMaterial(data) { + return request({ + // url: `/delivery/detail/query?MaterialCode=${data.MaterialCode}&OrderNo=${data.OrderNo}`, + url: `/delivery/detail/query?${qs.stringify(data)}`, + method: 'get' + }) +} + + +export function getOrderMaterial(data) { + return request({ + url: `/delivery/detail/query`, + method: 'get', + data + }) +} + +// 鏌ヨ鍙彂璐х墿鏂欎俊鎭垪琛�,Kitting鍗曚笓鐢� +export function getOrderKtting(data) { + return request({ + url: `/delivery/detail/queryForKitting?${qs.stringify(data)}`, + method: 'get', + data + }) +} + +export function getOrderMaterialDo(data) { + return request({ + url: `/delivery/detail/query`, + method: 'get', + data + }) +} +export function getAllOrder(data) { + return request({ + url: `/delivery/orderno/query`, + method: 'get', + data + }) +} +// 鍒嗘嫞 +export function getAllOrderDo(data) { + return request({ + url: `/api/wmsOrderMovement/page`, + method: 'post', + data + }) +} +// 鍙戣揣 4.26 +export function getAllOrderDelivery(data) { + return request({ + url: `/delivery/orderno/queryDo`, + method: 'get', + data + }) +} +//娣诲姞鍙戣揣璁板綍 +export function addDeliverRecord(data) { + return request({ + url: '/delivery/record/add', + method: 'post', + data + }) +} + +//鍒犻櫎鍥剧墖 +export function deletePicture(data) { + return request({ + url: `/api/sysFile/delete?${qs.stringify(data)}`, + method: 'post' + }) +} + +//鍙栬揣 澧炲姞鍙栬揣娉㈡鍙风殑閫夋嫨 +export function getQuhuoOrderDo(data) { + return request({ + url: `/Sorting/getPickUpDoListByPO`, + method: 'post', + data + }) +} + + +//鍙栬揣 澧炲姞宸ュ簭銆佷骇鍝佺被鍨嬬殑閫夋嫨 +export function getPickUpDoListByPOForProductType(data) { + return request({ + url: `/Sorting/getPickUpDoListByPOForProductType`, + method: 'post', + data + }) +} + + +//鍒嗘嫞 澧炲姞宸ュ簭銆佷骇鍝佺被鍨嬬殑閫夋嫨 +export function getDoListByPOForProductType(data) { + return request({ + url: `/Sorting/getDoListByPOForProductType`, + method: 'post', + data + }) +} + +//鍙栬揣鎾ら攢 澧炲姞宸ュ簭銆佷骇鍝佺被鍨嬬殑閫夋嫨 +export function getSortNoListForCancelPickForProductType(data) { + return request({ + url: `/Sorting/getSortNoListForCancelPickForProductType`, + method: 'post', + data + }) +} + + +//鍙栬揣鎾ら攢 澧炲姞鍙栬揣娉㈡鍙风殑閫夋嫨 +export function getSortNoListForCancelPick(data) { + return request({ + url: `/Sorting/getSortNoListForCancelPick`, + method: 'post', + data + }) +} + + +//鍒嗘嫞鎾ら攢 澧炲姞宸ュ簭銆佷骇鍝佺被鍨嬬殑閫夋嫨 +export function getSortNoListForCancelSortForProductType(data) { + return request({ + url: `/Sorting/getSortNoListForCancelSortForProductType`, + method: 'post', + data + }) +} + + +//鍒嗘嫞鎾ら攢 澧炲姞鍙栬揣娉㈡鍙风殑閫夋嫨 +export function getSortNoListForCancelSort(data) { + return request({ + url: `/Sorting/getSortNoListForCancelSort`, + method: 'post', + data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/expressmail.js b/LA24030_LuLiPackageLine_Pda/api/expressmail.js new file mode 100644 index 0000000..11d15d3 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/expressmail.js @@ -0,0 +1,10 @@ +import {request} from '../utils/request.js' + +//鍑哄簱鍗曞拰蹇�掑崟缁戝畾 +export function addBindRecord(data) { + return request({ + url: '/delivery/record/update', + method: 'post', + data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/hander/hander.js b/LA24030_LuLiPackageLine_Pda/api/hander/hander.js new file mode 100644 index 0000000..e9393cc --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/hander/hander.js @@ -0,0 +1,91 @@ +import {request} from '@/utils/request.js' +import qs from 'qs' +// 鎵嬪伐浠� 鍑哄叆搴撴帴鍙� +export function getWarehouseMaterialHander(data){ //鏌ヨ鐗╂枡 + return request({ + url: `/Sorting/FindContainerAtMaterial`, + method: 'post', + data + }) +} +//鐗╂枡鎷嗗垎 +export function addWarehouseEstablishmentHander(data){ + return request({ + url: `/api/wmsMaterialSplit/materialSplit`, + method: 'post', + data + }) +} + +//鐗╂枡鍚堝苟 +export function addWarehouseHbHander(data){ + return request({ + url: `/api/wmsMaterialSplit/materialMerge`, + method: 'post', + data + }) +} + +//鎵撳嵃 +export function outBoundOrderHander(data) { + return request({ + url: `/api/wmsRecordSncodePrint/add`, + method: 'post', + data + }) +} + +//鐗╂枡鍚堝苟 +export function getSGjRuKuMaterialHander(data){ + return request({ + url: `/api/wmsStockQuan/pageView`, + method: 'post', + data + }) +} + +//瀹瑰櫒淇℃伅 +export function getWmsContainerPage(data){ + return request({ + url: `/api/wmsContainer/page`, + method: 'post', + data + }) +} + +//鐐瑰埌鐐� +export function handlePostToPost(data){ + return request({ + url: `/api/WmsOrderMovement/PointToPoint`, + method: 'post', + data + }) +} + + +//寮傚父澶勭悊 +export function unAbnormalOrder(data) { + return request({ + url: `/api/WmsStockQuan/Frozen`, + method: 'post', + data + }) +} + +// 銆愮湅鏉垮崱鍙枡銆� +export function addKbcardOrderMovement(data) { + return request({ + url: `/api/wmsConfigKbcard/addKbcardOrderMovement`, + method: 'post', + data + }) +} + +// 銆愮湅鏉垮崱鍙枡銆� +export function getWmsConfigKbcard(data){ + return request({ + url: `/api/wmsConfigKbcard/Page`, + method: 'get', + data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/login.js b/LA24030_LuLiPackageLine_Pda/api/login.js new file mode 100644 index 0000000..a7ac033 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/login.js @@ -0,0 +1,46 @@ +import { + request +} from '../utils/request.js' +export function login(data) { //鐧婚檰 + return request({ + // url: `/login`, + url: `/api/sysAuth/login`, + method: 'post', + contentType: 'application/json', + data: data + }) +} +export function getLoginUser(data) { //鏉冮檺 + return request({ + // url: `/getLoginUser`, + url: `/api/sysAuth/userInfo`, + method: 'get', + contentType: 'application/json', + data: data + }) +} +export function getWgt() { //PDA绋嬪簭鏇存柊wgt + return request({ + // url: "/pdaupdate/get", + url: "/api/wmsGroupDisk/PDAUpdate", + method: 'get', + contentType: 'application/json' + }) +} +export function loginOut(data) { //鐧婚檰 + return request({ + url: `/api/sysAuth/logout`, + method: 'post', + contentType: 'application/json' + }) +} + +export function getLoginMenu(data) { //鏉冮檺 + return request({ + // url: `/getLoginUser`, + url: `/api/WmsSysPdaMenu/getPdaLoginUser`, + method: 'get', + contentType: 'application/json', + data: data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/mark/index.js b/LA24030_LuLiPackageLine_Pda/api/mark/index.js new file mode 100644 index 0000000..18bce58 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/mark/index.js @@ -0,0 +1,17 @@ +import {request} from '../../utils/request.js' + +//鑾峰彇褰撳墠瀹瑰櫒涓嬬殑鎵�鏈夌墿鏂� +export function getContainerMateral(containerCode){ //鏌ヨ鐗╂枡 + return request({ + url: `/Scrap/Material?containerCode=${containerCode}`, + method: 'get', + }) +} + +export function scrapMaterial(data){ //纭鎻愪氦 + return request({ + url: `/ScrapMaterial/add`, + method: 'post', + data + }) +} diff --git a/LA24030_LuLiPackageLine_Pda/api/old/index.js b/LA24030_LuLiPackageLine_Pda/api/old/index.js new file mode 100644 index 0000000..67ee943 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/old/index.js @@ -0,0 +1,37 @@ +import {request} from '@/utils/request.js' + +//鏃т欢鍏ュ簱 +export function putInOfOld(data) { + return request({ + url: `/WareOldMaterial/add`, + method: 'post', + data + }) +} + +//鏃т欢搴撳瓨鏌ヨ +export function getExitOfOld(data) { + return request({ + url: `/WareOldMaterial/page?MaterialCode=${data.materialCode}&PageNo=1&PageSize=10`, + method: 'get' + }) +} + +//鍑哄簱鎿嶄綔 +//鏃т欢鍏ュ簱 +export function putOutOfOld(data) { + return request({ + url: `/WareOldMaterial/update`, + method: 'post', + data + }) +} + + +//鑾峰彇鏃т欢搴撳垪琛� +export function getOldWarehouseList() { + return request({ + url: '/WareStoreHouse/page?OrgId=&PartsCenter=&Factory=&StorTypeId=344334449700933&PageNo=1&PageSize=100', + method: 'get' + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/print.js b/LA24030_LuLiPackageLine_Pda/api/print.js new file mode 100644 index 0000000..c14ba7a --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/print.js @@ -0,0 +1,92 @@ +import {request} from '@/utils/request.js' +import qs from 'qs' +export function getCollectionPage(data) { + let param = { + PurchaseNo:data.PurchaseNo, + WarematerialCode:data.WarematerialCode + } + return request({ + url: `/ConfirmDelivery/page?${qs.stringify(param)}`, + method: 'get' + }) +} +//鐗╂枡鏍囩---鏌ヨ +export function getMaterialContent(data) { + return request({ + url: `/PurchaseOrder/pageDetails?WareMaterialCode=${data.materialCode}&PurchaseNo=${data.purchase}`, + method: 'get' + }) +} + +export function getMaterialData() { + return request({ + url: `/WareMaterial/page?PageNo=1&PageSize=1000000`, + method: 'get' + }) +} + +//鑾峰彇鐗╂枡淇℃伅 +export function getMaterialInfo(data) { + let param = { + Code:data.materialCode, + PageNo:1, + PageSize:10 + } + return request({ + // url: `/WareMaterial/page?Code=${data.materialCode}&PageNo=1&PageSize=10`, + url: `/WareMaterial/page?${qs.stringify(param)}`, + method: 'get' + }) +} + +//鑾峰彇宸ラ噺鍏蜂俊鎭� +export function getWareToolInfo(data) { + return request({ + url: `/WareTool/page?Code=${data.materialCode}&PageNo=1&PageSize=10`, + method: 'get' + }) +} + +//娣诲姞鎵撳嵃璁板綍 +export function addPrintRecord(data) { + return request({ + url: `/WareMaterialPrintHistory/add`, + method: 'post', + data + }) +} + +//鑾峰彇鐗╂枡鐨勬爣绛句俊鎭� +//鑾峰彇宸ラ噺鍏蜂俊鎭� +export function getMaterialCount(data) { + return request({ + url: `/WareQrcode/update?PageNo=${data.PageNo}&PageSize=${data.PageSize}`, + method: 'get' + }) +} + +//琛ユ墦鏍囩 鏍规嵁搴撲綅缂栧彿 +export function getMerterialBaseKuwei(data) { + return request({ + url: `/inventory/container/queryall?${qs.stringify(data)}`, + method: 'get' + }) +} + +//璋冪敤鏂戦┈鎵撳嵃鏈� +export function addBanmaRecord(data) { + return request({ + url: `/WareMaterialPrintHistory/add`, + method: 'post', + data + }) +} + +//璋冪敤鏂戦┈鎵撳嵃鏈� -- 鎵归噺鎵撳嵃 +export function addBanmaRecordArr(data) { + return request({ + url: `/WareMaterialPrintHistory/addBatch`, + method: 'post', + data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/putIn/artificial.js b/LA24030_LuLiPackageLine_Pda/api/putIn/artificial.js new file mode 100644 index 0000000..22cf08f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/putIn/artificial.js @@ -0,0 +1,214 @@ +import {request} from '../../utils/request.js' +import qs from 'qs' +//鑾峰彇褰撳墠瀹瑰櫒涓嬬殑缁勭洏璇︽儏 +export function getContainerRecord(containerCode){ //鐗ч噹鐗╂枡鏌ヨ + let data = { + containerCode:containerCode + } + return request({ + // url: `/WarehousOrder/getMaterialList?ContainerCode=${containerCode}`, + url: `/WarehousOrder/getMaterialList?${qs.stringify(containerCode)}`, + method: 'get' + }) +} + +export function getMaterialList(data){ //鐗╂枡鏌ヨ 甯﹀簱瀛� + return request({ + // url: `/WareMaterial/page?Code=${materialCode}&PageNo=1&PageSize=10`, + url: `/WarehousOrder/getInventoryQuantity?${qs.stringify(data)}`, + method: 'get', + }) +} + +//鑾峰彇瀹瑰櫒淇℃伅 +export function getContainDetail(code) { + let data = { + Code:code, + PageNo:1, + PageSize:10 + } + return request({ + // url: `/WareContainer/page?Code=${code}&PageNo=1&PageSize: 10`, + url: `/WareContainer/page?${qs.stringify(data)}`, + method: 'get' + }) + +} + +export function getOrderNo(data){ //鑷姩鐢熸垚鍗曞彿 + return request({ + url: `/CriterionEnterWare/getOrderNo`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function getContainerDetails(data){ //绌烘墭鏌ヨ + return request({ + url: `/CriterionEnterWare/getContainerDetails`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function getMaterialDetails(data){ //鐗╂枡鏌ヨ + return request({ + url: `/CriterionEnterWare/getMaterialDetails?materialCode=${data.materialCode}`, + method: 'post' + }) +} +export function WarematerialCode(data){ //鐗ч噹鐗╂枡鏌ヨ + return request({ + url: `/CollectDelivery/page?WarematerialCode=${data.WarematerialCode}`, + method: 'get', + contentType:'application/json', + data: data + }) +} +export function addGroupDisk(data){ //缁勭洏 + return request({ + url: `/api/wmsGroupDisk/PdaBindUpdate`, + method: 'post', + data + }) +} +export function onlyUpdateDutyCycle(data){ //浠呮洿鏂扮┖闂村崰姣旀暟鎹� 銆怑ditby shaocx,2023-05-23銆� + return request({ + url: `/WarehousOrder/onlyUpdateDutyCycle`, + method: 'post', + data + }) +} +export function add(data){ //鐗ч噹浜哄伐缁勭洏 + return request({ + url: `/OrderReceipt/add`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function getBhbMaterialList(data){ //瀹瑰櫒鏌ヨ + return request({ + url: `/api/WmsGroupDisk/PdaContainerWithMaterial?${qs.stringify(data)}`, + // url: `/api/wmsContainerMaterial/list?${qs.stringify(data)}`, + method: 'get', + }) +} +export function PdaBindListForSNCode(data){ //鐗╂枡鏌ヨ + return request({ + url: `/api/WmsGroupDisk/PdaBindListForSNCode?${qs.stringify(data)}`, + method: 'get', + }) +} + +// 璋冩暣搴撻緞 +export function addAdjustAge(data){ + return request({ + url: `/WareAge/addAdjustAge`, + method: 'post', + data + }) +} +// 璋冩暣搴撻緞 +export function getMaterialListForAdjustAge(data){ //鐗╂枡鏌ヨ + return request({ + url: `/WareAge/GetMaterialListForAdjustAge?${qs.stringify(data)}`, + method: 'get', + }) +} + + +export function getareaTypesList(data){ //杞藉叿绫诲瀷 + var data1 = { + isVirtually:false + } + return request({ + url: `/api/wmsArea/page`, + method: 'post', + data:data1 + }) +} + +// 鎺ㄨ崘搴撲綅 +export function getRecommendList(data) { + return request({ + // url: `/WareMaterial/getlocation?${qs.stringify(data)}`, + //url: `/api/wmsPlace/page?${qs.stringify(data)}`, + url: `/api/WmsPlace/RecommendPlaceList?${qs.stringify(data)}`, + method: 'post' + }) +} + + +//瀹瑰櫒涓婃灦 - 鏌ヨ鐗╂枡 +export function getWmsContainer(data){ + return request({ + url: `/api/wmsPutaway/getContainerInfoQuan`, + method: 'post', + data + }) +} + +//缁勭┖鐩� +export function addGroupContainer(data){ + return request({ + url: `/api/wmsPutaway/putawayConfirm`, + method: 'post', + data + }) +} + +//瀹瑰櫒涓婃灦纭 +export function putContainerConfirm(data){ + return request({ + url: `/api/WmsPutaway/PutawayConfirmxxxxxx`, + method: 'post', + data + }) +} + +//瀹瑰櫒绫诲瀷 +export function getContainerTypeList(data){ + return request({ + url: `/api/wmsContainerType/page`, + method: 'post', + data, + }) +} + + +//搴撲綅淇℃伅 +export function getwmsPlace(data){ + return request({ + url: `/api/wmsPlace/page`, + method: 'post', + data + }) +} + +//搴撲綅淇℃伅-瀹瑰櫒涓嬫灦 +export function getwmsPlaceForContainerOff(data){ + return request({ + url: `/api/wmsUnshelve/getPlaceInfo`, + method: 'post', + data + }) +} + +//鏌ョ墿鏂欏拰搴撳瓨 +export function getwmsContainerType(data){ + return request({ + // url: `/api/WmsContainer/ContainerTypeForPda?${qs.stringify(data)}`, + url: `/api/wmsUnshelve/getMaterialCodeByInfo?${qs.stringify(data)}`, + method: 'get' + }) +} + +//瀹瑰櫒涓嬫灦 +export function addGroupContainerXiajia(data){ + return request({ + url: `/api/wmsUnshelve/containerUnshelveExecute`, + method: 'post', + data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/putIn/callTray.js b/LA24030_LuLiPackageLine_Pda/api/putIn/callTray.js new file mode 100644 index 0000000..daa7b1f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/putIn/callTray.js @@ -0,0 +1,52 @@ +import {request} from '../../utils/request.js' +import qs from 'qs' +export function getCallTray(data){ //鍛煎彨绌烘墭 + return request({ + url: `/OrderReceipt/getCallTray`, + method: 'post', + contentType:'application/json', + data: data + }) +} +// export function getVehicleType(data){ //杞藉叿绫诲瀷 +// return request({ +// url: `/OrderReceipt/getVehicleType`, +// method: 'post', +// contentType:'application/json', +// data: data +// }) +// } +export function getContainerTypes(data){ //杞藉叿绫诲瀷 + return request({ + url: `/CriterionEnterWare/getContainerTypes`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function getCollect(data){ //鑾峰彇鐩爣浣嶇疆 + return request({ + url: `/OrderReceipt/getStorehouseMouth`, + method: 'post', + contentType:'application/json', + data: data + }) +} + +//鑾峰彇瀹瑰櫒绫诲瀷鍒楄〃 +export function getContainerTypesList(data){ //杞藉叿绫诲瀷 + return request({ + url: `/WareContainerType/page?PageNo=1&PageSize=10000`, + method: 'get', + }) +} + + +//鍛煎彨绌烘墭 +export function callEmptyContainer(data){ + return request({ + url: `/task/callTray`, + method: 'post', + data + }) +} diff --git a/LA24030_LuLiPackageLine_Pda/api/putIn/empty.js b/LA24030_LuLiPackageLine_Pda/api/putIn/empty.js new file mode 100644 index 0000000..a60cf82 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/putIn/empty.js @@ -0,0 +1,25 @@ +import {request} from '../../utils/request.js' +export function getWareVehicle(data){ //鍛煎彨瀹瑰櫒-鏌ヨ鐗╂枡 + return request({ + url: `/OrderReceipt/getWareVehicle?materialCode=${data}`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function getRecommend(data){ //鎺ㄨ崘搴撲綅 + return request({ + url: `/OrderReceipt/getRecommend?materialCode=${data.materialCode}&quantity=${data.quantity}`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function callContainer(data){ //鍛煎彨瀹瑰櫒 + return request({ + url: `/OrderReceipt/callContainer`, + method: 'post', + contentType:'application/json', + data: data + }) +} diff --git a/LA24030_LuLiPackageLine_Pda/api/putIn/emptySearch.js b/LA24030_LuLiPackageLine_Pda/api/putIn/emptySearch.js new file mode 100644 index 0000000..20683c3 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/putIn/emptySearch.js @@ -0,0 +1,17 @@ +import {request} from '../../utils/request.js' +export function getWareRegion(data){ //鑾峰彇璐у尯 + return request({ + url: `/OrderReceipt/getWareRegion`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function getGoodsshelves(data){ //鑾峰彇璐ф灦+搴撲綅淇℃伅 + return request({ + url: `/OrderReceipt/getGoodsshelves`, + method: 'post', + contentType:'application/json', + data: data + }) +} diff --git a/LA24030_LuLiPackageLine_Pda/api/putIn/localBind.js b/LA24030_LuLiPackageLine_Pda/api/putIn/localBind.js new file mode 100644 index 0000000..f80fe72 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/putIn/localBind.js @@ -0,0 +1,40 @@ +import {request} from '../../utils/request.js' + +//瀹瑰櫒瑙g粦鏌ヨ +export function getContainerMaterial(data) { + return request({ + url: `/api/wmsContainerPlace/containerStock?ContainerCode=${data.containerCode}`, + method: 'get' + }) +} +//搴撲綅瑙g粦鏌ヨ +export function getplaceStock(data) { + return request({ + url: `/api/wmsContainerPlace/placeStock?PlaceCode=${data.placeCode}`, + method: 'get' + }) +} +//瀹瑰櫒缁戝畾鏌ヨ +export function bindContainerStock(data) { + return request({ + url: `/api/wmsContainerPlace/bindContainerStock?ContainerCode=${data.containerCode}`, + method: 'get' + }) +} +//缁戝畾 +export function placeBind(data) { + return request({ + url: `/api/wmsContainerPlace/placeBind`, + method: 'post', + data + }) +} + +// 瑙g粦 +export function Unfreezeing(data) { + return request({ + url: `/api/wmsContainerPlace/placeUnbind`, + method: 'post', + data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/putIn/material.js b/LA24030_LuLiPackageLine_Pda/api/putIn/material.js new file mode 100644 index 0000000..2c48a4f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/putIn/material.js @@ -0,0 +1,17 @@ +import {request} from '../../utils/request.js' +export function addEnterWare(data){ //纭鍏ュ簱 + return request({ + url: `/CriterionEnterWare/addEnterWare`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function addEnter(data){ //鐗ч噹纭鍏ュ簱 + return request({ + url: `/OrderReceipt/addEnterWare`, + method: 'post', + contentType:'application/json', + data: data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/putIn/plane.js b/LA24030_LuLiPackageLine_Pda/api/putIn/plane.js new file mode 100644 index 0000000..401160b --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/putIn/plane.js @@ -0,0 +1,25 @@ +import {request} from '../../utils/request.js' + +export function getLocationDetails(data){ //鏌ヨ搴撲綅 + return request({ + url: `/CriterionEnterWare/getLocationDetails?locationCode=${data}`, + method: 'post', + contentType:'application/json' + }) +} +//纭鍏ュ簱 +export function entryConfirm(data){ + return request({ + url: `/CriterionEnterWare/updateFlatWarehouseWarehousing`, + method: 'post', + data + }) +} + +//鑾峰彇搴撲綅璇︽儏 +export function getLocationDetail(code){ //鏌ヨ搴撲綅 + return request({ + url: `/WareLocation/page?Code=${code}&PageNo=1&PageSize=10`, + method: 'get' + }) +} diff --git a/LA24030_LuLiPackageLine_Pda/api/putIn/three.js b/LA24030_LuLiPackageLine_Pda/api/putIn/three.js new file mode 100644 index 0000000..6bf19e5 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/putIn/three.js @@ -0,0 +1,40 @@ +import {request} from '../../utils/request.js' +export function getWarehouseMaterial(data){ //鏌ヨ鐗╂枡 + return request({ + url: `/CriterionEnterWare/getWarehouseMaterial?containerCode=${data}`, + method: 'post', + contentType:'application/json' + }) +} +export function addWarehouseEstablishment(data){ //鍏ュ簱 + return request({ + url: `/CriterionEnterWare/addWarehouseEstablishment`, + method: 'post', + data + }) +} +export function list(data){ //鍏ュ簱鍙� + return request({ + url: `/WareSite/pageWarehousing`, + method: 'get', + contentType:'application/json', + data: data + }) +} +export function outlist(data){ //鍑哄簱鍙� + return request({ + url: `/WareSite/page`, + method: 'get', + contentType:'application/json', + data: data + }) +} + +//纭鍑哄簱 +export function outBoundOrder(data) { + return request({ + url: `/Sorting/UnbindLocation`, + method: 'post', + data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/putIn/untie.js b/LA24030_LuLiPackageLine_Pda/api/putIn/untie.js new file mode 100644 index 0000000..dd70bcc --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/putIn/untie.js @@ -0,0 +1,104 @@ +import {request} from '../../utils/request.js' +export function getUnboundMaterial(data){ //鏌ヨ鐗╂枡 + return request({ + url: `/CriterionEnterWare/getUnboundMaterial`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function UpdateunboundContainer(data){ //瀹瑰櫒瑙g粦 + return request({ + url: `/CriterionEnterWare/UpdateunboundContainer`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function updateunbound(data){ //鐗ч噹瀹瑰櫒瑙g粦 + return request({ + url: `/OrderReceipt/UpdateunboundContainer`, + method: 'post', + contentType:'application/json', + data: data + }) +} + + +export function getContainerContent(data) { + return request({ + url: `/WarehousOrder/getOrderDetails`, + method: 'post', + data + }) +} + + + +export function deleteEnterOrder(data) { + return request({ + url: `/WarehousOrder/delete`, + method: 'post', + data + }) +} + +export function unBindLocation(data) { + return request({ + url: `/Sorting/UnbindLocation?containerCode`, + method: 'post', + data + }) +} + +//鍗曟嵁瑙g粦 +export function unbindOrder(data) { + return request({ + url: `/api/wmsGroupDisk/PdaUnBindUpdate`, + method: 'post', + data + }) +} + +//绉诲簱 +export function inventoryTransfer(data) { + return request({ + url: `/WarehousOrder/inventoryTransfer`, + method: 'post', + data + }) +} + +//鐗╂枡涓庡鍣ㄨВ缁� +export function getContainerMaterial(data) { + return request({ + url: `/WarehousOrder/getMaterialList?ContainerCode=${data.containerCode}&materialCode=${data.materialCode}&IsUseForMove=${data.isUseForMove}`, + method: 'get' + }) +} + +export function getCheckAllMaterial(data) { + return request({ + url: `/WarehousOrder/getMaterialList?ContainerCode=${data.containerCode}&materialCode=${data.materialCode}&IsUseForMove=${data.isUseForMove}&IsCheckAll=${data.IsCheckAll}`, + method: 'get' + }) +} + + +//鍐荤粨 +export function inventoryFrozen(data) { + return request({ + url: `/api/WmsStockQuan/Frozen`, + method: 'post', + data + }) +} + +// 瑙e喕 +export function inventoryUnFrozen(data) { + return request({ + url: `/api/WmsStockQuan/Unfreezeing`, + method: 'post', + data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/putaway/putaway.js b/LA24030_LuLiPackageLine_Pda/api/putaway/putaway.js new file mode 100644 index 0000000..abe9cce --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/putaway/putaway.js @@ -0,0 +1,26 @@ +import {request} from '../../utils/request.js' +import qs from 'qs' + +export function getPutawayStockQuan(data){ //鑾峰彇褰撳墠瀹瑰櫒涓嬬殑缁勭洏璇︽儏 + return request({ + url: `/api/WmsPutaway/GetPutawayStockQuan?${qs.stringify(data)}`, + method: 'get', + }) +} + +export function putawayConfirm(data){ //涓婃灦纭 + return request({ + url: `/api/WmsPutaway/PutawayConfirm`, + method: 'post', + data + }) +} + + +export function bindputawayConfirm(data){ //涓婃灦纭 + return request({ + url: `/api/WmsPutaway/BindPutawayConfirm`, + method: 'post', + data + }) +} diff --git a/LA24030_LuLiPackageLine_Pda/api/receive/receive.js b/LA24030_LuLiPackageLine_Pda/api/receive/receive.js new file mode 100644 index 0000000..6bf2f2f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/receive/receive.js @@ -0,0 +1,27 @@ +import { + request +} from '@/utils/request.js' +export function selectpeople(data) { //鏌ヨ鍊熺敤浜� + return request({ + url: `/delivery/order/selectpeople?input=${data}`, + method: 'post', + contentType: 'application/json', + data: data + }) +} +export function query(data) { //鏌ヨ鐗╂枡 + return request({ + url: `/delivery/order/detail/query?OrderNo=${data}`, + method: 'get', + contentType: 'application/json', + // data: data + }) +} +export function borrowAdd(data) { //褰掕繕 + return request({ + url: `/BorrowOrder/borrowAdd`, + method: 'post', + contentType: 'application/json', + data: data + }) +} diff --git a/LA24030_LuLiPackageLine_Pda/api/scrap.js b/LA24030_LuLiPackageLine_Pda/api/scrap.js new file mode 100644 index 0000000..0d417b9 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/scrap.js @@ -0,0 +1,35 @@ +import { + request +} from '../utils/request.js' +export function scrapQuery(data) { //鏌ヨ浜岀淮鐮� + return request({ + url: `/Scrap/scrapQuery`, + method: 'get', + contentType: 'application/json', + data: data + }) +} +export function confirm(data) { //鎶ュ簾 + return request({ + url: `/Scrap/issueconfirm`, + method: 'post', + contentType: 'application/json', + data: data + }) +} +export function queryDetail(data) { //鏌ヨ鎶ュ簾鍗� + return request({ + url: `/Scrap/queryDetail?OrderNo=${data}`, + method: 'get', + contentType: 'application/json', + data: data + }) +} +export function imagesUpdate(data) { //鎶ュ簾鍗曟媿鐓� + return request({ + url: `/Scrap/imagesUpdate`, + method: 'post', + contentType: 'application/json', + data: data + }) +} diff --git a/LA24030_LuLiPackageLine_Pda/api/sort.js b/LA24030_LuLiPackageLine_Pda/api/sort.js new file mode 100644 index 0000000..4a37c3a --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/sort.js @@ -0,0 +1,236 @@ +import qs from 'qs' + +import { + request +} from '../utils/request.js' +export function getOutWarehouseDetails(data) { //鏌ヨ鐗╂枡 + return request({ + url: `/CriterionSorting/getOutWarehouseDetails?WareContainerCode=${data.WareContainerCode}&OrderNo=${data.OrderNo}`, + method: 'post', + contentType: 'application/json', + data: data + }) +} +export function getOutWarehouse(data) { //鐗ч噹鏌ヨ鐗╂枡 + return request({ + // url: `/Sorting/getOutWarehouse?WareContainerCode=${data.WareContainerCode}`, + url: `/Sorting/getOutWarehouse`, + method: 'post', + contentType: 'application/json', + data: data + }) +} +export function getOutKittingGroup(data) { //鍒嗘嫞鍒楄〃 + return request({ + url: `/Sorting/getOutWarehouseForGroupBySort`, + method: 'post', + contentType: 'application/json', + data: data + }) +} +export function getOutWarehouseGroup(data) { //鐗ч噹鏌ヨ鐗╂枡 --鍒嗙粍 + return request({ + // url: `/Sorting/getOutWarehouse?WareContainerCode=${data.WareContainerCode}`, + url: `/Sorting/getOutWarehouseForGroup`, + method: 'post', + contentType: 'application/json', + data: data + }) +} +export function addWarehouseDetails(data) { //鐗ч噹纭鍒嗘嫞 + return request({ + url: `/Sorting/addWarehouseDetails`, + method: 'post', + contentType: 'application/json', + data: data + }) +} +export function addWarehouseDetailsGroup(data) { //鐗ч噹纭鍒嗘嫞 --鍒嗙粍 + return request({ + // url: `/Sorting/addWarehouseDetailsForKitting`, + url: `/Sorting/ConfirmSort`, + method: 'post', + contentType: 'application/json', + data: data + }) +} +//鍥炲簱 +export function containerReturn(data) { + return request({ + url: `/Sorting/ContainerReturn`, + method: 'post', + data + }) +} + +//鍥炲簱鐗╂枡璇︽儏 +export function getContainerDetail(data) { + return request({ + url: `/task/getMaterial`, + method: 'post', + data + }) +} + +//鑾峰彇褰撳墠鍖哄煙闇�瑕佸垎鎷g殑瀹瑰櫒鍒楄〃 +/** + * @param {Object} type A3鍖哄煙 1 A1,A2鍖哄煙2 + */ +export function getContainerQuery(type) { + return request({ + url: `/Sorting/getContainerList?Type=${type}`, + method: 'post' + }) +} + +// 鍒嗘嫞璁板綍 +export function getPickPrintQuery(data) { + return request({ + url: `/Sorting/print/detail/query`, + method: 'post', + data + }) +} + +// 鍒嗘嫞璁板綍 -鏂戦┈鎵撳嵃 +export function getPickPrintQueryBanMa(data) { + return request({ + url: `/Sorting/print/detail/queryForKitting`, + method: 'post', + data + }) +} + +// 宸ュ簭-涓�绾� +export function selectOneQuery(data) { + return request({ + url: `/Sorting/getProcessList`, + method: 'post', + data + }) +} +// 鏈哄簥鍙� -2绾� +export function selectTwoQuery(data) { + return request({ + url: `/Sorting/getEquipmentList`, + method: 'post', + data + }) +} +//鐢熶骇璁㈠崟 - 鍙戣揣椤甸潰 - 鏈哄簥鍙� -2绾� - 鍙彂璐х殑鏈哄簥鍙峰垪琛� +export function selectTwoQueryDelivery(data) { + return request({ + url: `/delivery/orderno/queryForKitting`, + method: 'get', + data + }) +} +// 鏈哄簥鍙蜂笅鐨勭紪鍙� -3绾� +export function selectThereQuery(data) { + return request({ + url: `/Sorting/getContainerList`, + method: 'post', + data + }) +} +//涓嬫灦鍗曟槑缁� +export function getwmsOrderMovementDetails(data) { + return request({ + url: `/api/wmsOrderMovementDetails/page`, + method: 'post', + data + }) +} +export function getOutWarehousePO(data) { + return request({ + url: `/api/wmsSort/getSortList`, + method: 'post', + contentType: 'application/json', + data: data + }) +} + +export function addWarehouseDetailsPO(data) { + return request({ + url: `/api/WmsSort/SortConfirm`, + method: 'post', + contentType: 'application/json', + data: data + }) +} + +//寮傚父姹囨姤 +export function addSortExceptionFlagConfirm(data) { + return request({ + url: `/api/WmsSort/SortExceptionFlagConfirm`, + method: 'post', + contentType: 'application/json', + data: data + }) +} + + +export function addconfirmPick(data) { + return request({ + url: `/Sorting/confirmPick`, + method: 'post', + contentType: 'application/json', + data: data + }) +} +// 鍙栬揣-鎾ら攢 +export function getOutResumeGroup(data) { + return request({ + url: `/WarePicking/page`, + method: 'get', + contentType: 'application/json', + data: data + }) +} +// 鍙栬揣-纭鎾ら攢 +export function reSumeconfirmPick(data) { + return request({ + url: `/Sorting/cancelConfirmPick`, + method: 'post', + contentType: 'application/json', + data: data + }) +} + +// 鍒嗘嫞-鎾ら攢 +export function getOutResumeSortGroup(data) { + return request({ + url: `/record/sorting/query`, + method: 'post', + contentType: 'application/json', + data: data + }) +} +// 鍒嗘嫞-纭鎾ら攢 +export function reSumeconfirmSort(data) { + return request({ + url: `/Sorting/cancelconfirmSort`, + method: 'post', + contentType: 'application/json', + data: data + }) +} + +// 瓒婂簱-鎾ら攢 +export function getOutYekuGroup(data) { + return request({ + url: `/ConfirmDeliveryAndDeliver/page`, + method: 'get', + contentType: 'application/json', + data: data + }) +} +// 瓒婂簱-纭鎾ら攢 +export function reSumeconfirmYeku(data) { + return request({ + url: `/ReceivingProcess/cancelYuekuForSHQY`, + method: 'post', + contentType: 'application/json', + data: data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/takeMaterial/order.js b/LA24030_LuLiPackageLine_Pda/api/takeMaterial/order.js new file mode 100644 index 0000000..027d4b4 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/takeMaterial/order.js @@ -0,0 +1,9 @@ +import {request} from '../../utils/request.js' +export function addConfirmReceipt(data){ //纭鏀惰揣 + return request({ + url: `/CriterionReceiving/addConfirmReceipt`, + method: 'post', + contentType:'application/json', + data: data + }) +} diff --git a/LA24030_LuLiPackageLine_Pda/api/takeMaterial/orderpiece.js b/LA24030_LuLiPackageLine_Pda/api/takeMaterial/orderpiece.js new file mode 100644 index 0000000..a79d6eb --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/takeMaterial/orderpiece.js @@ -0,0 +1,131 @@ +import {request} from '../../utils/request.js' +export function getMaterial(data){ //鏌ヨPO鍗� + return request({ + url: `/PurchaseOrder/pageDetails`, + method: 'get', + data + }) +} +//鏍规嵁閲囪喘鍗曞彿鍜岀墿鏂欑紪鐮佽幏鍙栭噰璐槑缁� +export function getPurchaseOrderDetail(data){ //鏌ヨPO鍗� + return request({ + url: `/api/wmsOrderPurchase/QueryDetailsPda`, + method: 'get', + data + }) +} +//鍙栬揣鍗曞垪琛� +export function getQhdOrderDetail(data){ //鏌ヨPO鍗� + return request({ + url: `/sorting/order/detail/list`, + method: 'get', + data + }) +} +export function addDelivery(data){ //纭鏀惰揣 + return request({ + url: `/api/receivingProcess/add`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function getCollect(data){ //鏈鏀惰揣 + return request({ + url: `/ReceivingProcess/getCollect`, + method: 'post', + contentType:'application/json', + data: data + }) +} +export function getShortageMaterial(data){ //缂烘枡 + return request({ + url: `/ReceivingProcess/getShortageMaterial`, + method: 'post', + contentType:'application/json', + data: data + }) +} + +// 2.29 +//鏍规嵁閲囪喘鍗曞彿鍜岀墿鏂欑紪鐮佽幏鍙栭噰璐槑缁� +export function getPurchaseOrderDetail2(data){ //鏌ヨPO鍗� + return request({ + url: `/ReceivingProcess/QueryDetails`, + method: 'get', + data + }) +} +export function addDeliveryNew(data){ //纭鏀惰揣 + return request({ + url: `/ReceivingProcess/AddPODeliveryForGoods`, + method: 'post', + contentType:'application/json', + data: data + }) +} + +export function createBatchNo(data){ //鑷姩鐢熸垚鏀惰揣鎵规鍙� 銆怑ditby shaocx,2022-12-30銆� + return request({ + url: `/PurchaseOrder/createBatchNo`, + method: 'post', + contentType:'application/json', + data: data + }) +} + +export function query(data){ //鍗曟嵁鐘舵�佺粺璁� + return request({ + // url: `/check/order/status/query`, // + url: `/ReceivingProcess/AddPODeliveryForGoodsCheck`, + method: 'post', + contentType:'application/json', + data + }) +} + +//SAP-涓嬫媺 +export function getSapSelect(data) { + return request({ + url: `/ReceivingProcess/getsaplocation`, + method: 'get', + data + }) +} + + +//瓒婂簱 - 涓婚〉鍒楄〃 +export function getMoveWarehouseGroup(data) { + return request({ + url: `/PurchaseOrder/queryAllowYKDetails`, + method: 'get', + data + }) +} +//瓒婂簱 - 纭 +export function addconfirmMove(data) { + return request({ + url: `/ReceivingProcess/yuekuForSHQY`, + method: 'post', + contentType:'application/json', + data: data + }) +} +//瓒婂簱 -瀛愰〉鍒楄〃 +export function getMoveOrderDetail(data){ + return request({ + url: `/sorting/order/detail/list`, + method: 'get', + data + }) +} + +// 鏀惰揣鏍¢獙 +export function addShouhuoJiaoYan(data){ + return request({ + url: `/ReceivingProcess/ValidateBeforeAddPODeliveryForGoods`, + method: 'post', + contentType:'application/json', + data: data + }) +} diff --git a/LA24030_LuLiPackageLine_Pda/api/unpack/plan.js b/LA24030_LuLiPackageLine_Pda/api/unpack/plan.js new file mode 100644 index 0000000..186a780 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/unpack/plan.js @@ -0,0 +1,17 @@ +import {request} from '../../utils/request.js' +export function query(data){ //鏌ヨ鐗╂枡 + return request({ + url: `/delivery/order/query?OrderNo=${data.OrderNo}`, + method: 'get', + contentType:'application/json', + // data: data + }) +} +export function issue(data){ //纭涓嬪彂 + return request({ + url: `/task/issue`, + method: 'post', + contentType:'application/json', + data: data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/api/wareTool/index.js b/LA24030_LuLiPackageLine_Pda/api/wareTool/index.js new file mode 100644 index 0000000..136bf60 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/api/wareTool/index.js @@ -0,0 +1,62 @@ +import {request} from '../../utils/request.js' + +export function WareToolReturn(data){ //鏌ヨ宸ラ噺鍏� + return request({ + url: `/WareToolReturn/page?Code=${data}`, + method: 'get', + contentType:'application/json', + // data: data + }) +} +export function returnTool(data){ //鍘熶欢褰掕繕 + return request({ + url: `/WareToolReturn/returnTool`, + method: 'post', + contentType:'application/json', + data: data + }) +} + +//鑾峰彇宸ラ噺鍏蜂汉鍛橈紙鍊熺敤锛屽綊杩橈級 +export function getWarePersonList(){ //鏌ヨ宸ラ噺鍏� + return request({ + url: "/WareToolUsers/page?PageNo=1&PageSize=1000000", + method: 'get', + contentType:'application/json', + }) +} + +//鑾峰彇宸ラ噺鍏峰綋鍓嶅簱瀛� +export function getWareCount(data) { + return request({ + url: `/WareToolStock/page?Code=${data.code}&Unit=&PageNo=1&PageSize=10`, + method: 'get' + }) +} + + +//宸ラ噺鍏峰�熺敤 +export function wareBorrow(data) { + return request({ + url: `/WareToolStock/borrow`, + method: 'post', + data + }) +} + +//鑾峰彇褰撳墠鍊熺敤浜轰笅鐨勬湭褰掕繕宸ラ噺鍏峰垪琛� +export function getUnReturnList(data) { + return request({ + url: `/WareToolReturn/page?BorrowUserName=${data.name}&PageNo=1&PageSize=100000`, + method: 'get' + }) +} + +//宸ラ噺鍏峰綊杩� +export function wareReturn(data) { + return request({ + url: `/WareToolReturnDetails/add`, + method: 'post', + data + }) +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/colorui/animation.css b/LA24030_LuLiPackageLine_Pda/colorui/animation.css new file mode 100644 index 0000000..931bb51 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/colorui/animation.css @@ -0,0 +1,184 @@ +/* + Animation 寰姩鐢� + 鍩轰簬ColorUI缁勫缓搴撶殑鍔ㄧ敾妯″潡 by 鏂囨檽娓� 2019骞�3鏈�26鏃�19:52:28 + */ + +/* css 婊ら暅 鎺у埗榛戠櫧搴曡壊gif鐨� */ +.gif-black{ + mix-blend-mode: screen; +} +.gif-white{ + mix-blend-mode: multiply; +} + + +/* Animation css */ +[class*=animation-] { + animation-duration: .5s; + animation-timing-function: ease-out; + animation-fill-mode: both +} + +.animation-fade { + animation-name: fade; + animation-duration: .8s; + animation-timing-function: linear +} + +.animation-scale-up { + animation-name: scale-up +} + +.animation-scale-down { + animation-name: scale-down +} + +.animation-slide-top { + animation-name: slide-top +} + +.animation-slide-bottom { + animation-name: slide-bottom +} + +.animation-slide-left { + animation-name: slide-left +} + +.animation-slide-right { + animation-name: slide-right +} + +.animation-shake { + animation-name: shake +} + +.animation-reverse { + animation-direction: reverse +} + +@keyframes fade { + 0% { + opacity: 0 + } + + 100% { + opacity: 1 + } +} + +@keyframes scale-up { + 0% { + opacity: 0; + transform: scale(.2) + } + + 100% { + opacity: 1; + transform: scale(1) + } +} + +@keyframes scale-down { + 0% { + opacity: 0; + transform: scale(1.8) + } + + 100% { + opacity: 1; + transform: scale(1) + } +} + +@keyframes slide-top { + 0% { + opacity: 0; + transform: translateY(-100%) + } + + 100% { + opacity: 1; + transform: translateY(0) + } +} + +@keyframes slide-bottom { + 0% { + opacity: 0; + transform: translateY(100%) + } + + 100% { + opacity: 1; + transform: translateY(0) + } +} + +@keyframes shake { + + 0%, + 100% { + transform: translateX(0) + } + + 10% { + transform: translateX(-9px) + } + + 20% { + transform: translateX(8px) + } + + 30% { + transform: translateX(-7px) + } + + 40% { + transform: translateX(6px) + } + + 50% { + transform: translateX(-5px) + } + + 60% { + transform: translateX(4px) + } + + 70% { + transform: translateX(-3px) + } + + 80% { + transform: translateX(2px) + } + + 90% { + transform: translateX(-1px) + } +} + +@keyframes slide-left { + 0% { + opacity: 0; + transform: translateX(-100%) + } + + 100% { + opacity: 1; + transform: translateX(0) + } +} + +@keyframes slide-right { + 0% { + opacity: 0; + transform: translateX(100%) + } + + 100% { + opacity: 1; + transform: translateX(0) + } +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/colorui/components/cu-custom.vue b/LA24030_LuLiPackageLine_Pda/colorui/components/cu-custom.vue new file mode 100644 index 0000000..a560a2c --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/colorui/components/cu-custom.vue @@ -0,0 +1,147 @@ +<template> + <view> + <view class="cu-custom flex align-center zindex" :style="[{height:CustomBar + 'px'}]"> + <view class="cu-bar fixed" :style="style" :class="[bgImage!=''?'none-bg text-white bg-img':'',bgColor]"> + <view class="action" @tap="BackPage" v-if="isBack"> + <text class="iconfont icon-fanhui"></text> + <slot name="backText"></slot> + </view> + <view class="action" @tap="$emit('account')" v-if="isHead"> + <text class="iconfont icon-touxiang"></text> + + </view> + <view class="content" :style="[{top:StatusBar + 'px'}]"> + <slot name="content"></slot> + </view> + <slot name="right"> + <!-- <image class="ingLany" src="/static/lanya.png" mode="aspectFit" @click="getLanya"></image> --> + </slot> + </view> + </view> + </view> +</template> + +<script> + export default { + data() { + return { + StatusBar: this.StatusBar, + CustomBar: this.CustomBar + }; + }, + name: 'cu-custom', + computed: { + style() { + var StatusBar = this.StatusBar; + var CustomBar = this.CustomBar; + var bgImage = this.bgImage; + var style = `height:${CustomBar}px;padding-top:${StatusBar}px;`; + if (this.bgImage) { + style = `${style}background-image:url(${bgImage});`; + } + return style + } + }, + props: { + bgColor: { + type: String, + default: '' + }, + isBack: { + type: [Boolean, String], + default: false + }, + isHead: { + type: [Boolean, String], + default: false + }, + bgImage: { + type: String, + default: '' + }, + }, + mounted() { + + }, + methods: { + BackPage() { + + // if (getCurrentPages().length < 2 && 'undefined' !== typeof __wxConfig) { + // let url = '/' + __wxConfig.pages[0] + // return uni.redirectTo({ + // url + // }) + // } + let pages = getCurrentPages();//鑾峰彇鎵撳紑鐨勬墍鏈夐〉闈� + console.log("鎵撳紑鐨勬墍鏈夐〉闈�") + console.log(pages) + let route = pages[pages.length - 1].route; //褰撳墠椤甸潰 + console.log("褰撳墠椤甸潰" + route) + if(route == 'pages/sort/pickorder' || route == 'pages/sort/kittingSort'){ + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭杩斿洖锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + uni.redirectTo({ + url: '/pages/index/index' + }) + } else if (res.cancel) { + return + } + }) + }); + return + } + + if (route == 'pages/takeMaterial/orderpiece/orderpiecePo' || route == 'pages/recommend/recommend' || route == 'pages/check/check/index' || route == 'pages/check/square' || route == 'pages/hander/handerIn' || route == 'pages/hander/handerOut' || route == 'pages/sort/pickorder'|| route == 'pages/sort/kittingSort' || route == 'pages/artificial/artificial' || route == 'pages/deliver/deliver' || route == 'pages/deliver/deliverDo') { + uni.redirectTo({ + url: '/pages/index/index' + }) + return + } + + if(route == 'pages/takeMaterial/orderpiece/poYueku'){ + uni.redirectTo({ + url: '/pages/takeMaterial/orderpiece/orderpiecePo' + }) + return + } + uni.navigateBack({ + delta: 1 + }); + }, + getLanya() { + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁閲嶆柊杩炴帴钃濈墮锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + uni.navigateTo({ + url: '../print/bluetoothConnection' + }) + } else if (res.cancel) {} + }) + }); + }, + } + } +</script> + +<style> + .zindex { + /* z-index: 10; */ + } + + .ingLany{ + width: 28px; + height: 28px; + border-radius: 100%; + margin-right: 1%; + } +</style> + diff --git a/LA24030_LuLiPackageLine_Pda/colorui/icon.css b/LA24030_LuLiPackageLine_Pda/colorui/icon.css new file mode 100644 index 0000000..16ed121 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/colorui/icon.css @@ -0,0 +1,1226 @@ +@keyframes cuIcon-spin { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +.cuIconfont-spin { + -webkit-animation: cuIcon-spin 2s infinite linear; + animation: cuIcon-spin 2s infinite linear; + display: inline-block; +} + +.cuIconfont-pulse { + -webkit-animation: cuIcon-spin 1s infinite steps(8); + animation: cuIcon-spin 1s infinite steps(8); + display: inline-block; +} + +[class*="cuIcon-"] { + font-family: "cuIcon"; + font-size: inherit; + font-style: normal; +} + +@font-face { + font-family: "cuIcon"; + src: url('//at.alicdn.com/t/font_533566_yfq2d9wdij.eot?t=1545239985831'); + /* IE9*/ + src: url('//at.alicdn.com/t/font_533566_yfq2d9wdij.eot?t=1545239985831#iefix') format('embedded-opentype'), + /* IE6-IE8 */ + url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAKQcAAsAAAABNKAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFY8dkoiY21hcAAAAYAAAAiaAAATkilZPq9nbHlmAAAKHAAAjqoAAQkUOjYlCmhlYWQAAJjIAAAALwAAADYUMoFgaGhlYQAAmPgAAAAfAAAAJAhwBcpobXR4AACZGAAAABkAAAScnSIAAGxvY2EAAJk0AAACUAAAAlAhX2C+bWF4cAAAm4QAAAAfAAAAIAJAAOpuYW1lAACbpAAAAUUAAAJtPlT+fXBvc3QAAJzsAAAHLQAADMYi8KXJeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2BkYWScwMDKwMHUyXSGgYGhH0IzvmYwYuRgYGBiYGVmwAoC0lxTGByeMbzQZ27438AQw9zA0AAUZgTJAQDhHQwVeJzN1/nf1mMaxvHP9ZQiSUKWbCXZ1+w7Q0NqImNJhSSSZSyTlMQYs9hlLGPKMoRBMyU1tlIiIrKUfeycZyOpkCVLc1zPYbz8BzPdr7fb8/yQ2/29zuM6TmA5oIlsIU31460U6r+O1m9L4++b0KLx902bnq6fL+ICmtE0GqJltIl20TE6R5foHj3jmDgtzoohMSyGx4i4MC6KS+LquD5uiFvizhgb42NCTIwpMS1mxOx4IyJLtsiNc8vcN7vnodkr+2a/HJCD8oK8MkfmdTk6b8oxeUeOzUk5M1/IuTk/F+Ti/CqXztt62TIIfvIp9osDo0ccHv3ijBgcQ3/8FBfHVY2fYlTcFvfEuMZPcX9MjenxVLwYb8ZH2SRb5aa5TXbNHnlY9s5js38OzMF5qT7FNTnqh09xV47LyTkr5zR+ioW55L+f4n/+p+ip/PEnr8u4hr8wlid4mtk8/+PrRV5ufL3DPD7i48bXVywtlBZlnbJV6VMGldFlTJlZZpeXy1vlvfJBmVc+bmhoaKFXq4bWP7zaNnRo2LWhS8MBja9uDT0beupDtC+dSseyHpNKB+aVVfWpGnR2muqENaN52ZDlWUEnaUVashKtWJnWrEIbVmU1Vqcta7Ama7E27ViHdVmP9dmA9nRgQzqyEZ3YmE3YlM34ls11JrdkK7ZmG7Zlu7IandmeHdiRndiZXdiV3didPdizbFDashd7sw/78jP2Y3+68HMO4EC6chDd6M4v6MHBHEJPDuWXHMbhHMGR9OIoetOHvhzNMRxLP46jP8czgBM4kYGcxN8YxMmcwqmcxq84nTM4k7P4NYM5myGcw1CGcS7DOY8RnK+J+YbfcCG/1XP6Hb/nD3pGF3MJl+pJXc4VXMlVjORq/qTndi3XcT1/5gY9wVGM5kZu4mZu4a/cym2M4Xbu4E7u4m7u0RP+O/9gHOO5lwncx0T+yf08wIM8xMNMZgqPMJVpPMp0HuNxZuhEPMlMntK5mMUzPKvT8ZzOxQs6GXOYq9Pwkk7HK7zKa7zOG/yLN3mLt3Vexum/8y7v8T4f8KHGLvm3TtB8PmEhi1jMp3zG5yzhC77UifqapXzH9yzTySqloTQpTctypVlpXpYvK+isrVhalpVKq7JyaV1WKW3K6mWNsmZZq2xU1i7tdBLXLeuzQCeq2f96sP4P/rSs/1hpkX8om9TMs9Je78VKJ703WOmo95amaSTaGJP03s40oURHUxYQnU1TS+xnNf1jf6P+3V2s3hZxoNUbI7pavUniINPEE92M5nrvbkoBoocpD4iDTclAHGL1tomeprQgDrf6TcQRpgQhjjRlCdHLlCrEUaZ8IXqbkoboY9Tvo69R/3+PNuUQcYwpkYh+pmwijjOlFNHflFfE8abkIgaYMow4wajf94mmXCMGmhKOOMmoz2iQKfWIk035R5xi1Gd9qlGf3WlG/T7PMOrzPNOUmMRZRj0bg00pSpxt1LM0xJSsxFBTxhLDTGlLDDflLjHCaluIC01ZTFxkSmXiYlM+E5eYkpq4ypTZxEhjO71fbaV+/9cb9TzeYMp2YpQp5YnRprwnbjQlP3GT6Q4gbjbdBsQtpnuBuM10QxBjTHcFcbvp1iDuMPbU+51W6rO4x0o9D2NNtwsxznTPEONNNw4xwXT3EBNNtxBxv1Hn7AGjztmDRp2zh0y3FfGw6d4iJht1/qYYdf6mGnX+phl1/qYbdf4eM915xONGncUZRp3Fp4w6i08bdRZnmW5J4hnTfUk8a7o5idlGndcXjTqvc4w6r3ONOq8vGXVeXzbqvL5i1Hl91ajz+ppR5/V1o87rG6Z7mnjTqLP7llFn922jzu47Rp3dd406u+8ZdXbfN+rsfmDU2f3QqLMbpi5AfGTUOZ5v1Dn+2KhzvMCoc/yJUed4oalHEItMjYJYbNT5/tSo8/2ZUef7c1PzIJYYdda/MOqsf2nUWf/K1FCIr40690uNOvffmPoL8a1RM+A7U6chvjdqHiwz9RzVAlPjIYup+5BNTC2IbGrqQ+RypmZENjN1JLK5qS2Ry5t6E7mCqUGRLUxdimxlalXkyqZ+RbY2NS1yFVPnItuY2he5qqmHkauZGhm5uqmbkW1NLY1cw9TXyDVNzY1cy9ThyLVNbY5sZ+p15Dqmhkeua+p65Hqm1keub+p/5AamJki2N3VCsoOpHZIbmnoi2dHUGMmNTN2R7GRqkeTGpj5JbmpqluRmpo5Jbm5qm+QWpt5JbmlqoOQ2pi5KbmtqpeR2pn5KdjY1VXJ7U2cldzC1SnJHU8ckdzI1WnJnU7cldzG1XHJXU98ldzM1X3J3Uwcm9zC1YXJPUy8m9zI1ZHJvU1cm9zG1ZnJfU38mu5qaNHmQqVOT3Uztmuxu6tlkD1PjJg82dW/yEFMLJ3ua+jh5qKmZk4eZOjp5uKmtk0eYejt5pKnBk71MXZ7sbWr1ZB9Tvyf7mpo+eayp85P9TO2f7G/aA8jjTRsBOcC0G5ADTVsCeZJpXyAHmTYHcrBphyDPNm0T5BDTXkGeY9owyKGmXYMcZto6yHNN+wc53LSJkOeZdhJyhGk7Ic837SnkBaaNhbzUGs/VZdZ43i437TPkFabNhrzStOOQI03bDnmNae8hr7VawPM6q4GXo0xbETnatB+RN5k2JXKMaWci7zBtT+Rdpj2KvNu0UZH3mHYrcqxpyyLHmfYtcrxp8yLvNe1g5ATTNkbeZ9rLyImmDY2cZNrVyMmmrY2cYtrfyEcM5XtOtRrpOc1KzfhHrWhHyOlWat4/ZqXm/eNWat7PsLrd5RNWat4/aaXm/UwrNe9nWal5/4wV7QX5rBXtBTnbivaCfM5KvROet1LvhBes1DthjpV6J8y1Uu+E+VZq9i+wUvN+oZWa94us1LxfbKVm7RIrNfu/sFKz/0srNfu/slKzf6lp12Xe1saC/wB/IDDcAAB4nLy9CZgcxXkw3FXV93T3TE/PTM+xMzvHzsze1+zO7EraS7u67wMJSSBWiFMgzGGDESCtwICQAQMO2A4YLRK2Hx/gA4MdbGBB+CAE25+dL4njfGFt57Jx8j8h32/HCdP66+ienV20Aiff/4G2u7qnu7rqrar3ft/iEMedeRPNoCYuwy3nNnEcyA2DYicoFkTJAH5AjlIuK4bNUKSUKQf7OwHK5MzSMKgMo8owsFPAjoiSGLEjdqk3YosQsId7y/1mXwEdeEH1i0JPMdlvWraiS0pivXah3zT9MLf3ItB/tzM6viE0mdUChqnBsF9PimIOQcD7/P8sWEA8rzqAH06ZJpjN7h/oHPUrSiC0oliK+psL0PQ7o34zCi5oaS87E+A2vq/fqgwv8UHIw1TTppuQbEp+EDSWO78DT7OHTT+Y8Zsc7ib+49Ad8CLOxhe4s7jHWTFkC5FGEOkdAeUKKPehD6txxTnvV2rcUgFAPBI1kUc8eFmBOxSgOkv+QQnF1CoCCCIIEXhTjXG1usfgi1yC4xRcTyErKYBWrwARg6ai4G+U+4qwA6iKFVed3zm/V2MhFUjO71R8DRSg4G8q4AiQFXx2/h2frZjq/Lvz72oM35ed/5e8hz/D4/GbQafRCJfjurll3GqOEzJ4+Ew8QJneSEjMZbzBoyNS7o2ETQOgbKEP9xA/IAGxDeCr8lJAHrczpFyir6J0daalDEC5BcwYwaDhjJIjJMeGICj/vY5bMkza6byiPkifIIevOVOkCMhxFL8Lp3Ad+IWgUaU/QI7WxeG7Z0hfhykEXlHIIw3BGXbiBNqvl9Ao58Mj1M4Ncitxz3DHcL/wlMM9wPMSF/BlJ+lNsTAMIngy9pbxpEwBiXax2D+MO2WHDZCpvwBnXqwKQvVFdjz1U57/6Sl6PDnxoVYZheNyZs+BCzJyPIzk1hv/PJQAINFMDkCbK4/WKnixipZ6NeBj9chgvy8eQGpre0erDwXivvISABPh0VAiERoNJ+ZK7lw58208fqNcmszDYh4Vij2ihAQDNAIkRkbw8lpKetVXRJUyekG0nH/9sGqFlEPOv1qa/moXTJtvvy3JQA8C2PEdHfwmiFoBMgEwHaeFbzL+1PklXnh33sUHDVEA9mvG3DfHMFQ5IdsFJLFQsYqFMp72KSD68Sf9oFJuxEtiBP91EWh2gopVrvREbEtIYbRgRSQRnpGlt98207DrVV0LPqaHecO46LMqLH7fH/heAfqe/LkpXXKJGI0qwu1KyFI/DPxBXf9OJwzIo/xddyq2BZJ/ajTxcWgkwijwBS3w1jWycs1vAr7PZ5H/f/65pmhRDQRpV6qtKG+8hruiiRwHafufR1sx/LrICsOD2wnLlXITxUYGBiNBYDxuNrluqrhzguIyET3qXLr62LLVu+Jt5RvBxY8Nn2chPRFBgTXlO53/cWlXPrJh+E7QdWlvEEXiBgwvqXxiVwbMVKsd7ZVPPPOF1Y/0XtN1dL0eEXV97APNe9umhh/61O1de9unxjcbuhDRL9q4erfOk7GFdA5P4rENcA0Y7PjrEY4O5wgIkmlbN50h9/D3eAtEU4oBDOXgXwP+ew9P7IZw9wQ9olF8/ajzeEz13Qa0ex/+nsN7P+EjQTe1b5H1gscVLL5W+ipl8vkivhuKMHhB91mRw+PKbTkI4cEt7FheA8CaMjtqIWX9rA+dOnToFLpyv4LCMYU2lDTd+aeUCtK117YcBMO198prqvuCcXUj6LwGv4nfH3zhZl/cRCrtCu91jXP78W1Mj4YwPVrHXcdx+bBEBnMYVkq9dqRMpmOh2FeulBjhMUAxQoYXj3jOAGF8M0xIEcUAGCkUaTfx3e6eSq+dxZeYZEVKFBL1/e8E/R6wwHVmeRUEwVxHnG/Odu6JqzJqhCvLfMe4T9d3736kGJjavtGnihm7IQdUURR5aJk9ubFum+dFS0/mYC6BhE/u2aapvqi2amMNwaSSkmjH5EzOQx3LAQAry7GuQghEA4eykopyHeW1CJTb408dvX50Qui+8roHAtEG2JQwQiLAH+IDe1Z1pIACkSADmO/PAvDdnBCNKXyqhoIql3dqMUPQ+m8e9RAUm4svY3w6gudHjs1Fb0ZYIIzXvIjxAIFtXxlTwEq5N4Wn5AvvCMI7L9Bj/AyHKR+mf5gKHiFU7/JfY0oE0LD3AD46DzpVQIghoYa3Y8IAlAO/wdidq83PGXd+di2Oy61C1k9GUwxhQjxHiwuQWwRp96kx9deXY/KpHJmj0JwKFkXQzn8qym8OKACTndshI9wI8ErcXa+sjcX5MEKYHFJEiVcPwYmYjlIoRUJ+MK9lEqFm9xwnHMPx43VlVN+c6rcItT9+D/n92PG68kI4lc5B8yqEr/AztqWRTHcCKpvxFYvB6sbjhL3AH8NE+9g9CsDjeJy0T1kcWHccI7/fcw/hP+45Rtp67F6X96iHV+MCeM2HVMTuiYjzWtU8TcCCK8RNOMEj/F99E5yOx8kPx2hDp3lRsd49h9rPAZvuHjKVGWAIwzWCl/2iQMFT+gTtFxkv5QkJLQ6Mj4n8NHmIAeJxyaK09AVKS0l7cGv6GWLBTenFaKkTfz9Xa2UIM8qhRhTpHQbo+U919gpvfeWrb/H8W1/dvVVTfFF9xfpHvsvz330E48RSl6Ii+Fn8GaCdGrh7LXvuK28JeRGvdiGNcSZ7dsVtvXgBQP6rapAsNEwez7xIYSRzJpfk9nJXcCc5zhqm3F22kCccIClU6hi9Sn9fF+gjuDKHC+REWP9QGPP9figmycASzFoKMwD3zxXIoRNg6BLusRHkQIhwk/QVwnH1Fd51VRgCuAnl/iKGTimTwlxOOJSC4VnQVG7C/8BMU6UJ/0vXcZFfxXQluDKfA5bUkXo61SGGmppWB0EaYPyLGcw0ozNT7JQmHGuu+h9AlZ+WfSDwW/CfQQOzrKR+QDlUt4TvWQkLNCp5C8yYBV+KMLVcgny8qYGdHmPM6DIBzxAe4XFEaDieASAdG+FRS5swjXje150+3dwPIKN00DuD/ubT6W6wAsqyUKr+rW4GjSyuNJElvfJKpn4aN8Jo+FQoDKLmJ5OYhwsa89dVw4J1lXMBGEmCEhm6ebO68SXdwu09gb8xfzkJln6GfPhNwlovWEfNC75Qv6ZyeMyY+EB40L7FkTCaphz+zMIvv/OduuUDbp0ljTjDUQHCk5M+Akc4cjEnJBEsRsWvQ3hmO990vk7lr30QC2Ngrwr7FcV5FqwhCMI5CRUFXIzFLtKnWbwOG+msL2C+Ac/jLBbrCPXHs3wYFAATfsjk77fJ5KcyzpedL5pd/V2m86UASvRl4clsXwI5GTbyacypNycSR+C+VCaTqp5IDXbFYl2D4E0qwtDezCZaEvgf6YpAZWnWhhTXhjFCP5HGsp2EglHhA7cFMxi4VVhezmCmBRQwO+ZJZRg75LxlirZU95KGBMB22jpwHmmdc1+QtDNEWhkKOF8MBCkkg0Y3EUrwv0y8c0mq1tglnXHEgWT18SRmE7JJeHHSyeIllfYaf22ItDxBYIfHYQal8WzIETwGMgwHSOTPxFMBt7Vi4nVeNzesTuBCcNKZxqtwFK+7SSYtQiY1OjfV8ZFvMkhCT6Ast1AJkDyNz9Wfz2ccWW84hs/ctpG5Os5NcBu4C/HoLoL5gSf70sXRBubJvoWci/Pw00QGrkE7Tx8t9PcwKTi8KAcMWqujrNWTBIj0AJlsPE3RFYPALm88nDeDBsVj+DC9GG/sZFwoMCnZ4WpSMpGyKZxgFwPf35GfyB+V+2fRNB66MJ5rRSz741FzR6tkE4pXqo0ZGyf7XQU0Wp1ivfnJDjWu7vgJvaj+I/vWl+ad8ERyh2ynoux0G+wcdfsJFpy5uvb1c8PcKm4zkzQ9xomgE3dEPPRCx8vTXLARknJYXFu8/ZDT1UnCi6xZo+p0MTINAxsbd3bN9fCFs/UrrUwS/mbtWmVOM+FBHroz1O02mF60t0ymnkWzuL+YCuNp53clEjIzAVVLADpB4Wzv7qburqY9vQcfQKA7AYastt42C4wk2wF6AHFN2e6ubB49cHD4ggbnJSsSCYHl2a2jBx9wv/Em/cYAhqZYdJdjr02wSrGQY/IMIMiTCThZytcTPgzTWrpWMOaBXFu78zL93MEty31CIKb1DOGJmUqCZXaTDYbCTQBP0qbxxF2E+7o7v6ubNLWrwTndngatYJw2B3XJsQgv5fCT7ctyzst2FIyGV3bieuLRuwiTeXcm5/Zips3l3X6J13ESz9duPB/obCCcEZG7SpUy0R3iEa8QEY00t48wcMNEAqDtxv2wMR6tsH65uh7SHxEajYXntrGB2vZcPh1sBCD1MVXx8bIWz6WjpsxHYkog0YpXQkLzXegLAbl3NYSre2UQjqn92yHc3u9ryH8Dv0+Q0zfyiUx1NJN4RZRjvmB6xf6xlO2LBXhfOLN9fGxX1tQPmnG1fOfOnXeW1XgQqksevfzyR5f4XF2c18cit5zbtVgvKU9EJ30jNHHXcuD/TLedE3Tm6+qMosyoOnjgvw8G2ECpujKjwCfxwfnsHw4Wws/gCfAE/AVncS1U2+oHjCuv6YkBEWVMj9nAEjoR+/rAesWSZqgUhVekDy7HWOpKUlJEUVenFfi3CEkzZP0er/4zxZqTasAZUpQD0KLoYFoN8FDBooaLj57AdARxMdyKJbgdpXAOzOfYyxUqQIF+RgiSjJ0tCKGajrSf0mowOTUFKw+1dde4m1WHSw/ihlSnGBNE+czJoEGpwhRuMkxPOTc9WDq8qsY0dbc9hHsGbqgpTrdSvEMxGFfXXj+GWhPBn8Dl/byWFUv9OXKv1ixyE1AkW5kvhxCt3gI5xKb4s/btp6emAFdrLGZDdfVzitLZjZ49duxZhI9LK7qtqvryufZ3teP2kz56lYxOObNeB3BVzqzyOTxenTeMsRrwMcyrsagQqwFtxZE+AjSPd/pbSucDXCuWe5dxB1iP5/VOIDSh1jGypjzCL3hEoVawCDkM+zFqDJspRm5GYJkssn4s71DJx7NTYCo5ySgH7fzmrhW+W30rugbWArB2oHNCO6xNdNILZ2OyUBgsFMDeBnzO5+90urMd4DSfSIJgIpj4MY8gDyFQJPAjl4iAUXyadFmAPWCgvX2AVEpq629r62fl7wBS6WABAFLpYAET247sBRfD0GDOeZHyFcsLoSsRhAISkXCtpFhG9Qk63y9qqXCurvw4Gsd8Z45by13OfZBgHoxSpB4CwEqZarlKDJNgDBIScz0FPCOKOfJQkd7Gs8rGT1Z6ykRcp5OM6dfwY0sJPcHsKn6F6NSo1g2fCDJq9CQ6pll/xFBXPCDjpunaU9sVEHpds4Cy40s+HTdWemCluvIygd96Z0cpkuX9qrpn4+Aqng/4+VUDm/aqqp/Phvs67tzKX7ob7jgQa7HD56/S4mLP4JJuMa6tPC9st8QO7OjCtSeCAASbfOMpRIp8fpsaN4Mx37YmnowDSk2op4Bvz/rdr29X1OzlfQhKCl+6sklVtr++Z90eHxjVzu9a9cQEKkqyvr+nd1JTpDyaeGJV1/namaDxEm6t/pIR9Oblf6IZeMbl51dwa+otLETfSDhIItzWW1qGKL9PBF+U8yRu+la/95YB8uFMP2qsHnUZldsJA5ggEmD1MB3bIxiFkBvlZxqDCdPEJdWZSTQB0JQAo/TsfAaM8uTd5ayOveQ9eqjSaXMxPeDfjuIexYPB6/CrU6wGfHppasrjr1/G5NnHJbgsxozdxNLirTzS8hpf6UoBUjjXjwlZvmQWC35AERJGpBksx5TCIYa67Ui50l8yQ6BxmDSBHODKajzdDkBzCr6dagag3Xrzx4LsjJxcpWnjzsuy8PYZ+PuqIZ0xZFUU91/ubwBvgikmhmHZvj1d/XiqCEAxBQ+m29ff8YAsO59s4PkGsEeQH3ACQABf+H5AFVFzs2gFvu/sEBgOfZPilAZuFEsOV1DOjOARIgjgWVsgV27H8ABaeFJnKM8Utqm+o4yRJTW+kBN+ZggU8hk7I+TwMmAv44VALpiYTC7IEGdwCU36TU2qflbSzJQJurNwd7YbmBsPKKHqlBqA23kAtw+1rilaYy0tLWNWaKCpdWg7BFUD7hivdsNPtAaHEX6TXxNoMVfzwaQJe9JFXAVBDSBi+k9LmiadJgbN0/gu/gAug443/EBXfiTK2ubhbRC0R2yM5iNw2/A2Qz05NQsj7eQFPW9BaOVVMjJNSQC6cps3ZLtd/uU0ehEt55q59Zh7uczj2amqEa99WgZUoUc0WSmiAcVlYkMsujJ7F+Zmsp2w0lch6AcQKxYGH5JCRcqHMo2paNdfgKdzsQlFjbQNRXwxdcKOgW/FJ/AdoJBbmITgW86K2GS3GBDBt0QBA6Kh1BwCYXLDmRCA2J3Bd4phkNMt9WuEHXhG3aaTYwwflKHYSlxJeLg9jKtcGVsRBc/Y0VVqTI0MtYOwQm7FnI3RD/eKIvgarrI3FGnubWjO9OKanY3khgVAuLnUUPxfVhzXZ8XUZ5RJzJR8TaUHypf/P/BHKIDxL8G7oGZbVQAhs9OWH4uHWDj0F5KG8woYNpIBeuUHk0ay4HdecV7BP3GyKzMRmt/IdXEj3CbuIu4D3BGyHj0mkuEOVOMgy2Qe58z3+H3h+8UFv/fnPLnZlY3ntD5UTANTruDOTr/y+AZjkdtg5g98frp2k55G5tiKKrfoT86Mq3hgp5eoUo8epoiOwf3FIW/h3xz2pVGK2GVXB7aJ6knjmG42cR2Ybh6llrMsYU/LRQ9zY3pHrvsKkqc2Emq6A8JP9BWYu0SKUMkSpZo5QnYJs+GalnrtyDAxSLlCGn7CjlQoZiFyOmGAi5TGViLEGJgG5a1l/O8Iw3/XZjs6Jjo6spKiGIoC1ox6ytJKKusTU3uafZIe0/JFETz25S+9lYs0QQglKDQ0YB5r12YtqsnahVe8WBWSCVCKxsx4akPbwOEJfCPvXHrF+Zc8EZk4XOoC/E8hFprJh1uYWukhQL460XER+aqhYNpDPgv+pXN9woyIsURUikYlKaSnf/Hlz52QByoIyXJI6by0H3N3RVGJRsVOofri4DW9YMO+WABkGgpFfL38luppUFrz8cj4/eM7Ljn1U65u3vuoBmpu5nOgTkst1bsmLHL/v7tO0BTT6s0pyd6jXH37D5vo0CVp0+x0hpt3CSb/K8vAtY3gwxSYdeczZy2uN5llo/y7eSfgzTmw4Mx4oFlXB9eIefPVRANXPzLI4xbKnm7aAAKFtMu4u/odRKhuvXKO0GKXFHsCFuOo0PQ7tHeILOhramIK4airv5v2VGVEYPkXg6hqpl2hIwjfnjcCRAijkHWmam8Y0wyKtXeIdMbu1j3jKYGmGXx5ald5BdNGAt8Pct+leILBs8jQBWYgMLUUi4w7JvJ8ocgYZuJZUaAUkboiEJKI71UIY47LNmHKCS/tx4w35dUx4+0nZNV2nRZwrRL1spLEPHkEo44yq4TU4ZX6iLsG+ST5oleSRPYyedcrhYh/B6sHXxItV92ivzKgrgmF1oiW2tcpYw7er9+qmkLcD0X5UgAulUXojwumeqvuDwFF7uxTLbH2vCK/9/OC8xdhe6XPamy0fCvtsAWNmKUFb1LlfRjvQWDsk9WbgpoVM6D1Pp8DC7Clk9YvhfDsLVVD6tmb+p4v1MMC7KTN4Pl3N9ef9r+7ve9+UAviB4Pa3IML7ZshrrLALuORHouItYTyDDGprELtHNSqMedMUm+mYYrOFZEsmd6gsyHcSJc2uWI+JKBtvnVaYCYNsCrcGioTWahcHImHCoGWSn8LuZzYBeGeidwSTz5ibeY4hQtzGSwhcfkadbQXs9B2gsWbL7EeQs5To3ctYnU6ZSzSnwTprGveeHRRR61fgEW61jQYZ11nY+LgdZ/mClwvdz4ek75+YiIlwh6eOGGqrOqhhJxRc2L17e+rp0kWpitZqccAzBkFC4uYPcCCeRcWsubkD/QncJ3am63+a6Zb3QyU3ramruYVsdiKTfiwsrm7qa37tMORJlIt9Q1BQ+CDrWZhKNEwvn6iIbGiEMliUkgAkoO7Me6FGCrCt5KZdPJFIZHo3Rq1MqlUOo3/QvbWngbBoz9GEEoSgJZtx8N21FYkFDS+iN8HXVkyvirF/VMuT9qGZ+UAN8Yt59ZhCeG8BZIw02zOM7jU02k7QxCmR6drdujaXJkrzTkeQsbDVT9R8zw0TjAtJ9iHj5udMVp+SbcsZ6KbzdszeNrML6TrDAHE5AHP1JwR8dE5YiWCwYT1EpG2icD9NJs44XknNtepLYqjc51oEc9j/rIuJ7gQFvPF5iJV8lbYJKecIvlHXTTZlBeptxK7AKMejwfXVg/0jAMw3gMfoefqYCQFQCoCH2Hn6sOCoGkI7r4g3hFO9DX6g6q26gLSuUqHoTR3tE40WPkQ6BpRkQk5xsM5CVJfhNVb/XXPOHyJ1PRrt+YIPldfAkJENx9XgIrZTh5ms737eQwoMFDKTyiipooyEPZnfRqzS8ygOzBcCkT+KRRNLNxl7EjYpJYJLDX2m4h4XuGxJ5pIZOLFPakHgfKj6hs/lksqCsZ8w9rvRST7VfiKGpCg9PvgKB7XWU156y1Fc95sUWJhhJ/0gyZgS8GgqgaDkvMrp51QZ0KbH0On0QbXPngRxkAFo6YrzxaYkksi0EdYFsWkMAUo+e1EBiS+y2X6LOPF8dSfm5LukLkWFvwiutEXM6EvmAGg0hptNfjRht6Dwv7rfWLX5snLdg7HRMEvSdGYFBblzMarbrvxsmFFv+82cVcuOSTY44UVeyDoeudf8OhSN4cfmYaf19G9d4XCcjq0+0Lo/wuFOKAGhqOtFRCxpJ3pLhNG7trWMtEd9Heu2NTS2KBFDUkrtFWu3DUYjAzvqRz8cgPQG9M7xFQG7lnRfD6YYoP8YZ+RD2g7LT7dHOH1shSY80mconaqAvGdLEhFYiafp4+nSnCrnsFb4syqOpI0wakSofcHGHX8BgvayepozQQKzgMZFeMc8kgspP6g+mf0p/5/xi+AD7luvQt8D7rfww/MtQi4Pk7UF6xvUR+EkGsduJJoAKaxfD+tLu7Jc0hRrgAlgk+d168irgRPqNROML99vedoH54ZfrDQkkEht2gLrcclS4E88yG6gjY1Flq8jc9PS5hzgMw76XLnhxTVlQ6oxKOOrLkzxO2ci+ALPJULRUDnvAIMagHEoIK/B0DkNeeEv9iA2zrkvGqAZMEP9uI6wdUAGikf2Iil1oLf+Z+49kJKB1shEFxb5quojxtyrTV17rSExLG1AyhDyte53hZJC/A4LSUwwg0ooC9qUT4WGW9/yPn6B3pbotsnBqeWX/yVkYqFjHgEBbr2Ov9wy5JVoVzrXhC/tW04eI0eVVTtpCgCXg3wS3gfnOJ9+oqe7ZnLuj46/vhn7+ttbTlvy5rz9YigG2uHPtS8o+2m++4cxOf0eb1tvBqzxREIgE99QreZTAQvRpwnEwFvXUvvKoCToLylUtlCaMS8M5w+m7Tk+t2TeRKmnMEwoQTE5kKtDjkiERAi2FeQMj1kCnt0AEv6lNdhPh9WXRlNT4Nys/MSJlPTNdHn/uqMblEHfCKdOA/Nc5KH057ug11PYck07fpXYAmVueuDyXr3BGpcgtTW8guUwfjyw1SO8YPyPCtYmcopxHmNyh91liMJT3sDNEI2zL2VElVy5IdpJe74s+4vnTuTtTFE5g0R8/q9M/prOaYN+vnffPWrbwnCW1+tXNklCIkoJlNxnxVGqOWC7oe/z/Pff/iR76NohxCNqcJqnhehIAqIBzz6lI93bqNunJs3UWfT3Uz7w44YHvWXoNfHyy3lwa/+hmcfbEgAFAhhsgJlvw5ALMZ/75FHiC/yI+NDBzXVZ+tPSQLxDIXwoBL7pYI/oG7YoOLPKTuJk1Ua/42TqsfdC8PFHcSXv4dbgmGL1w5hE8lMoB7JiCieMSgRpfPkBxIy0wgsd3JY5QJ1FSBIT/AK6KlYsfpvNGJGV0W84LsDqhPHhLCcFEr5AvmhoAZQsiT25MA/5HrEElSqazHzkM+Xm8A7HhexP0n00AJSZOcrkgaCKrjh09kOYMUsYGiPOffmuwFoSYNtVr76RUY+EuxEeR2GD4jt1MJYsYj5wKXcasz9XIz7aGbM/AILgbDgHrXwnuU5q975yV70Apw6g3HSGc61fbAz+M6Cm/m8I5zluc/gMUqa1gM0jMh6hF3BWfIkJsKJ+qdHznbTAWe9+4TpBxwB/hlOs8CiF5yEYfc36Ak0wmmYYyR2zSFukruaWCI8bxiMf/L1+nCBOfYWspJL98RwikWA1NSPRVDzYMfQpNFXxOxCHyNFYqwDNXEKi1tTrqcMPrzzv3ULnzGNnFThGnJzymq3qBfMPpUKUuoOpgqwQBeuiH8LLxcejAz0yKJPVky1vf+2e4/0daoBVfYJUnWCBQDQI/w0c6chB8g+Rw43k3tHVXUfvbQiGIe2RKw1mOfGDGXa+dvBPzrvKwQFfGXHwwNrtZgsGOPFtvbmcYM4G4CrvNrxsU7eJPDs4gYJD56vny25eVPnrDg5z/iaJMgwnt19ekGMFJxkYPgBO4G3z4Kfqw9hrDqmB50pMO2MehokEi5FWOXy1NnwLynD9HzUzZBUNe2iboLI6QvM0TDTUvZk7ZeonjSGaU4Z45iVLM6DTQMiQhCMQlB3pUSRsjsBMP4WMkzTyYyTmCzl+kuSi4mzmB1GHDp5yy0nEdg4ccGRMNT9SDNR9Es3irecdBA8PDl5GMLb9ip7D8HDZ+jspnO8a2ZmKk2u8AFYkMMV4Gq23pHPP3yZZiNdv/4BHt8gLx+evPCwIBz+pemfIS9gsjYzNUki+1Kmx5eyOMQI8Q6yRKIgwyuCuUwWyWogrpPUBaITikQ/wLzF3LGzS254VylSN4STfp+CVHBzw/IYuFlFoajq3CNHZOcuQYGv/wi3ua2zGQSNP23qBAQ7PAU3Tm6BX5FljCNQO5gGhpqQQRnLlm/IiRCuqIPnnT/joTNq+h8JxkEs9AixumVBN+mS8yM/uLFn6dKeG4FogA52q6mNq6MLhA/p4rjMu7C8hSnFOagCWojPv4SJwn32ogRgHgaHq5PXnh3V1/Q3p9FyroHLc53UV48DfVTWIXyfa68wqMha5irlYE3tWfEKeSa/9tRsGTUHwydQdCDhy8dKHyKhKJlULsNDXbgJrG8/9sPqJ5hV4ypX//zJvoc2J35wQ/+t4/jRnPNz1njU4sNoRxei/nQWs8jDN/T2b4oLPDBBpOtOoDpjro3iTYB5NcyxXbXu8xsbvrk2V8APj97otLrwcn3nvovXTpFKPVnmGbwUUIdJz2Bvhz2bF2Vy0TPO8fh43LlbFeSAmgadTW/g8W7ubMNz5kf5tjQGuwj+GpTwBHlNCFmq8/F8B0b/Hw/G48GP+832IjioKyE6/i/R8ScyxdYFVo06S3u+tpapsahO8vADamCSykSdTIbEXe0M1+N/cIq6VRuAHNedJkVyANcx6QLs2qbF/IJvxTpQkzAELcSLfU0aL/gsLIwLKKjxvKTokpi+Ofet34NZj6ukp0n20vmPDUpCJCZ3T62uufUA6PMZxXBrWvADENQVyV9JKZakIH1Fm/RX9fYDjRvAEvpm7l68wucc2YmLQb2xoM5dl1oIXFWnp1apAxiqK9vUz5oFJPT3lVJMjZhyZXeqAcCfIA+U8YKzieKOVE41L0zbH4Rfq9aCVeFUzaGUOYMy/VG1Muf5Wztc5zMFXZeuHOjtnPngJgQ3dFeukHRDDBvi4bIeAHrLKgiGjg2BYrtu6uUjIg/Sc3YGYsVspnqsMd39sE8kXi5GF+6Sp7IacZXbrqVonxGNIBiRQq137JtBN628/CNNISkMScgigjEemvpYQE18YM/E0NDE+QczSgDXDfgYBLWYYUJDG7kRbh23k3AjVCHJXA8rRTd6h1n6iQuVlCVKT+pH2kOQUyRE9DqSXfEM+otIyTALdFvJKyAUV/JP966mvrZWf7A3CIJfUewfxEKlILCeUWwdP9ZK2IOWZ0rrCHOyzrprESkacAG1zUf48eZnKuuIKL0uaPWHStafKP4brJ5gv/UtNRBQOtQElglanu2mPM4a643F5GwXHtOUp2jg2gkGzNfPzvdQcrKgFrZ05xTzzI7lunEHQa/nau3No51GbZLhKcTfuHrN9Qg/yX/y4slPC0SU82YXsXF7nvUOMVK9OZ+duH3blRDs3307LX/4TgCPX3/7nM2K9GvM7deKP6xfufxcV9wgSUyepPfbqyrmY/jpyzZ8JCfK0aiUuHTpxpvRuzrmvu+Q8xncMfoqifrBC2Ts5jsB2DyhRTVJ6xu+dDdeIy4ufdnFpZXF9TMgizGlWcMPYbPilVM0AGNRJY1TlSQTjLqN/CfizGbsU01JlJ0Ti8fJVU8iJQSWMw/+X7yIz5plSc6bMh4HieqNvw//iUtyLdwYdz53CXeQu5HyboRTp6idaHBoIVzrAbEdMuc9kcjiPdTBoJyCUg/VX/aUC5i1Z24HPXO3ywWhwBIykDIN3SbRzxWvAH+qmrwP+Oz9EzCCfEKg+OTOkRXi337sGz+BcJnzzHXTKn/vtfQI9nbdPGIEJNvfvnPM1AW9ISaEYndHljZquhDS/ckwFsV90TCvas7nBi6P2cXK0mvika5rtWKTYhea1DzvN5BsGDz4GFS0RMlMKQ2Q92f7zNzI9pHDgwcPAeGxnb1LnB8q29asuVanR9jfldNQpAG/GRvf3mzYss8Y/FDWDoqYgdMgUuwGQwtLqtaw9JTe3t1zvmV29pV2fszUApmMZmRaJQFjY/znrYFZNIlpTw5LXgzXdaKiAamQwLTx1Nma0IWIbYYwwPLuLcwCmET5gcjKxuvEyriMJSXcmTraA3/Ysza0riW/Np30KcJFlYFdAoJLWloGQCAN/HCN893yhQIPl7XEW3Wzze5dba1uSQ2F7MFrKT6nngTO10bIVCMHwMGEzwYgbFgmID7MKAlhCkEQhdCGCn520lRR+jBMIgijUBfBBaLCXjEk55SkObjDdA2mGbWgqlc3bn4KJbkEt5xY6fqZE9tZ1DQScQgiUdaYKFfYCpsnZxA1YKZYQJOjmG+meTW8wpfTJLgtbfoxjl++GbhSxeblF0yFeFUwJNgq8pNDpHFD+I1x8uo4LtyRo2F5SatBMqNS8+2bmSix7XYiSvgJ/yW7seGk/UT+Wf6+ZR9wjo6i9AK5R9SCkMg9Nz+xQO4ZfldXQZU1cstHPHlHu+FjAnry5snbyKt7D/PSYefFea/Qgjcvn0evubLcam6y1hvKbZ+rN4UuWMj6IXGto8t8hCplybNdBJ1IYtgudtIQlEoZ3+ktE3/MRoBU1tNNExceCUHdkKiA9yHJ6+htCN12oXrhIfi8ENpWVPD/20KqbyiAZCkQWrOWlwRFlWSoD0nCEVVMY05REtKS4E8WJYMPBMRQ4f3If87vgry+2bI263xeH9qtmoIitrZCYjcw1d1DktmvWoUAvoaBguFPipqUThuCSHnIM5iH5jC88lhK2cJd+v7GH4u+WTJdl9ZiYiTKExKRhqW5EV3jD3ki76owazcwJOGn0YNXkxCYiYEtHwpBTSOQi5+4HF19vzNeC+raejVw/Ljhloa2HIDwyk1GEIGARoK81n5RbktqMVmSVDMpIFMT/brzRUuPGbwWahvWyR3d4M21kLv6QYQ/tvK6XPYjuykALzsK0QMH6sLRNoX8mildt3XLB5SAjr8hbigPbvjr9PIQrl2LSb7OkGag8J26JERjspbe06/ryNYmPuD6F7yEXkVLaCQdyfXTV6AeqzTUryCGkStyEut10SqFKTHCzEBfod5nau5eySL+zWxR0cX0WUu/J3zH+dau28PH/WZSXNkDj/esQLdVD0UyyL6Mxt7mTT+8YoO18TLoXe6PgzRz9yGqATipBcC2KyC8YhsM+Ks/KY0AMNZTSkWhepecMgl2MVPyvZsuw09seEDy7kjHq7+NpuCUq1JgupLr0EbuSu567hT3Ze5bGOOV6Yogk6SfJJKolGmiEKK4Jp4y5EzFAbKw/IBICI3uVQqSRURCKTBXTIolXItdLLA4L7IUiSxGfxnG0rNAjUOViF2hmrwiJsQkbQVdokRDR2ohk2wEv4bnXyOgTDY+ScXFGOl/FEUfQL0BOYyxvN4al8XQcIvu77FE//6LA6LV49dbhkOijCkMwK2QAr0I+LQdItBDvk29vgDiQ2KLKOTzii4M9eNZYssJQbDjPiEshRAK+Ho3+8K66CyJybYW6kjn7lSjaud4Pw/8+kgS9PsEMZPqH9YiQnT58qgQ0Yb7UxlR8PWD5IjuB3z/+MRessz3suP4Lgh3jdPj01jA9JdkpLfs7jQDSrJT93duSim8v9vPNzTQk5La1OnXO5NKwOzc3aIjueT3KfeqYVNEkUENI4fQPVDIZhXgS60RMOZJG7pPtfWlFg+ANhhBYjCsCElF4oU1Qe1iRWnzt43qFlSHJ/Ky7Rscard4n7YsEFim+XirfWjQZ8v5iWEVWvpom39TrdF7D4NDXqvx0fPJIXHFae4Q9xHuY3gOoU5i0R5yw+Qll5h4YTku62Dlil4Yfc4apoJTpX/uGdvTvOFFVKuHCVoIzzWCeEZcR7lG9vgwFDC/MQJKhD+h0UhdoGRH0EwrFuEFC/Q3Z5oHiORqGRndhB1h3oyj9OuqMNh8W8OQpL4eQglTTxdASE8bJujMXkvW27UIT5b+ljR+NRTQ0x1CHGmxbOh4cYlgIVu8zR+BlrCkeF8oG/NV9x/XDAhfw1InXC1p9xk2QK/zYBw8kV+mAr6dKjQ7st26Zendgi9ojC7rQkBImc7pS4p9AK+KS8CoVVQkczRPmZOhVtrgoDnEZIB0MCeL5ljeudBqSvpBX/OMHgYh/0xzH/AnmwIBI5s0wrIcNpJNmsvXvYx6sVRzHrcbc9TUEwOv6Jov7gjN9SJR5ZSfaA1cNwCRsi82db7BuL9mjxgm+oFCnmkKCpTvbgQ5IZyR+ol+ot/MmESltc6wRaMRwg0n2328P+ZDiQ/3KbzUpLe1B4VdAIKG7f5dn+xDMGWItrFVDwHVxugG3lXsB7YKzOpzZnuHlpN4ue9wXgh3HYbhKs/D09VDmglnMPqDzaHOFgQHBnNyzBZkiAUyjOhTfEAFgIfx9b6hYDtELZ2hZmgZ01isd77XtgSApa1gEAT1acMCAHP4SUvXs90NfLBtdBLscziCUJY43/VHGB/o+ZkX6+KGXasMWiQfzFy4sCvtPbRITpi0q7PwHnW+uHhemPq2NL4Pf6KFbaiXOM/t5uOt5Wka516k/nWL5Jqx3qMV8C8XyTkzeY7Wgd+dPe1M9d/eo9nz8kHYi0u8i0q0iwqtbt2v4LqHuQCN/MeMowFDKYgRDqbnOVefMT8Oj7rvoqHRU18/dWRi4gg7PUaM0oyIuwX4rdHx8SMnv37yCDs5fzfvZ1qgY/Ky+/0M8TcQsp2wbxj2pmDIgGiuMZ3QOgcbD7nddW05cmr3xo8eXLLk4EcfvZeeHnpX44brW3ZkHC1bcvD4Hx8nD9OTc/IsbWX5KkbhDMnrBzKuc4pr4XUdQDJMqKB+3Z5GliYWIWLdND0ZC3+st39kuCCJMLO8lCvERRezDUNAoaGqfQXKbmD8hUdGKpYr9AZFaGF8bdJIBDcpkE2TDM609mMU37rtG5msovpN5wvwzwYbm4YG8eRFanc5Eb3QD7IZOabFrHgDEA6ZfqsjcuC4Gg2pcFZuCMJRjIlP40peyGL0I8fNWbDWiVQqt4ztPDmBKWhMXXL/uv79bbv6+ytXdGq8Goo17WhPRW8ALaGEIPmjB+5SQ1G1OoqPNXpK9PCruG3UU4vSU3GOECYBDaD4w4hjvk4YrxfM0ekeAdNH3odh0NzUjEGBJKD6NvOaR/dsSvcS0BfPhqYp3Qvwk5i2hTDlPBXKxn3VP6YGOXKAwVrRJXvATHt0T1AaVSiF/KMtJQBKmJrllfnUzAjNUbPumlzujj+bW0fhFIkhUsgASvWpItFNzgmS/8Q5SXyVwGqwnqBRG+yFiuqcoDkh1znPuTiVxfT9A/w7bj13BeV/b+Bu5bhKNuc5szF9XqFYUxRR37xIzS2xRig9r3xXDeW6KeIhOddinHP/nUto8oYgbt2jGjdvy5eCMm/H5Gysa5cuj3U3rwoj0wfafSaKrG6JNBumT8vEIl12slEN0KDuv+no23rElPRQeLx1+PLGdxouGiBqDcpDeAXwY89fcswrZHxvfOJTz/N8Z1yLBQS1B8BHjh49KaLdm3267tuyi4fthfZrbj7QnMtBvsPAFQ0Kwp98YuK20uAoL1560e5LwOPzvkELo8wsdannHMG7/nSjnMWluCXcQaJLL+Zd92Y3PlQS8kLeixA9l8kZMbZwfmqvc3vTQB4h5zGf33OW9fucJ53nwARYhqkIxl1wkvrSMpvGqGvN+BVxfOtbr+LVu2EN8S5bW1rgOkMeGIVpMApNzVU+T2L+ZPTQkiUryEPvzC40VbtlGprSECS1KmvWkGC5ta6DTK3ytKv/eAEdxfLZGLeBm+Q+hOH2/kUyGnhM40ypPceT6eopI/X8LNKstCwetVzM02hn+jYV4ag0h6bevzhV2NMr6Eo+r/l79xQ8acx5YN1+CPevo8cvF3f3iEKDFBKxQLXXFxJ13TmEUOnC4lZNlyzfha4k1gh+Krx/USjbLgMlm/UhuT1bE6We8r6Jjw82tirggCVoS2wkyRam0Upb9saQJUvIHtQBH76cY3roMy+iz6BULc5qKcbC1y+eK/IPvj8vm0Kpd54Rk5ra8PBBmmGhxJq+9hIIL1nbjUX8ke6uUQBGwUF2i/3cNQLhSBf92elZdwkAl8x/g/wMly0Phd0fdq7gtSAK6O2DgL0XCatIFkS0gSRSe6EOYkQ+6Ga1dI84P1/sl2pjrZH0l9Eur63Oz1bYS9Lsp4l9qj8ehuJwG+1DV6LDlOOqiIRNNCnbnG9Dhut8PxmW839ICuV3/uL9ZUgG8zIgo7p8kDbNPVsfnVHnllicy7ZTlw7y0/PyY83LAlm93KgFyk3WMuQI874XZZBYjJOdIxvzPMTmteCFk3/F8391kh1rgSLMLlXfHFSpPXXyr77A2utM1Efyuf7rL6PlBA4KIAwWzXmHpyu1qBCxiCUloVnJvulMSZblu/a5sd4igHIwJPM/fpakJDEUMKWAh8ApmZcC6s+l6y7bflRULcwVKLcEnL8juUhU8Gkl6uULIt8cpjYsgpj6TcNNtFug9NiLDKBBAnhBA5cX7yNZYFjQNUyLouJ79sdIxksdgmLvyu/eQnr11W80Dn33I0YQ9Dl/RtKlWJYEpmTFmVJGIREjG81bFQnhlolHt19zHX5Cfm1vcSUMGv8C1oJNbaSK29QAllCdSTWqOPvV+TLI6ILZwqL5FogK3plkrel1JUg/CLuhf+F5wsoQoTb7cDsuIp++iB1vVAEmHldfShgd9cZ99JEFWe1qbxDqgv9CNxL78tVX4VWn3uonNxf4c68/R647l54Sx2ZGe4lC7j1cWRcVuWiav303EWlPuewq1oWLSBcuYkdqwSePnCtbHn7If6saD6pXXU1M2DeG3G7O9ZnSURKTAmdr8Tlc/j2k1/nxsnW88p7q2rZBAAbb4HP0XG0MhMMB+Bw5Lq3O1EJwnGDN8yGNnwa/ZW85atsgPBIOOCp5Afw2EHb9lJ2ZOT7Xy1M8wulYippgmdxMNggmwwImGx6SlaXfy7IgUecNL19DvS9fGwmvhtzWqyG8eutZErbh77KExaTwzHHaC5bOfOb4My/ip4H77hmS9I3kZTvDlUlipDLgymucU1QQn7rlSYSevIWV73s14DpjjARerc/zTPpUxj1y431YV/Lvvw91Wn7w1T+o3bPv2Ure1f2nXdvZzvfvOZjFgmXBfTIcKdEIAJpGh7p80/B2ojwpUwfWcEREyTmT2lSImtSYK2GdpenWvcTStDTU5Ncb0h14+gRVAC9XIqptXeY3wbLA/v2SCOwGJaeGZUvJh6G0iHXpyZtr1iXp1tO6rvoBGGiNZzQAJxXV2u9vCrUO3DqJy5I/BARbQhg3h/yy7q2dV+A0F6IZoUaIVxIVkUjuG4zOqBlNEknqinfdBNQjxr1N9GVFG2OU/03y3Sz9xOceXkpWbM/h+470qid0S9n1i/94cxeJnNn02uzrm1XwoKZMKkC2h1eN2DJUL1aWdvfaWDLEGG9oZGgJQWO9pf6Segrf2LX3gp3EI2bj1u2bFec+5Xwl5osnG5NqTDlP/nBHmzHn03MU47lOjANGiQ4BcxFSvtzfV8x7gU1kECO2UEtMV64IYs3dAKWoq1VfuRYlMefHBxJdpvOnfhH0mG0xd3mthkByfhzsjLPrYiMYE8DqCl07AwnirdhU/Znnfj7GbsyEgl+Kpy3zBX+wlgAxYn3bDLlXoWcCQbb4KqvhmPuyc9QNWnvUDZryfGHPoFmEMC/RgSWIa7h7SNQXC9eiCRlYsrQwZTszWcrGUG8lmsyBjKREdOjkNtH6sRRZ7m8sfXiG+UB59bm5w2t10tSEEjMASQakuoilbBkUEKcqKi8lk/mMirDA3tJRaIK6o+lKe09XJxHXs82FJiU4JmhC95LRsWURn6bFLaTawf6BSiloq0iFOhw0gmrRlNvaSt12g4rwXMhGK8tK3XprQL7f32Q1R+Px2PqM34SaNoknOoo0+yej8inclYSa397ZvSePv4XUzuuXDRxoEwS17QM3X9NOZLL8zgt2NmGe+BQPu1d97ptfmLA1EhEdU4P20oemHxiyg2pMFeRQVG0OqoN3rt7wsSUNUTUaQkoyOXFq19ZHlpvtfhX8WtOgmEynG+W4nivmzZsCFgyZN2U2143PELeDu4r7KPcl6n3UBQqVYWRTnXKlzKLeDepaRl0bvcSJWeIIQ0O+vNT9wv/dsQVVjJsmbQADSQbnaLPV5E/K0Q45agGpVUFKQJV0uHalYEh+nyApk2pBlaIhvLDawf//wz8TNG9KtodyMTYASRFqesPmdLeKzIRa0ht8ApCFXbsEWeVJ+240DBXiX7KYs/2/NDk8e/MMGsMUZy1eo0S3CypWjiXEZZuPYH7Q77p0utGhQMyTABk8UXJFiar9/GQjDMJ+49EseeENFRuMKkGJv/ZtzKkiCczSjUh2/CRgCZvAR37CZBD6U3VWhQdvQ1BEvMAjfOSRAOEkr+qCiHnywK22YsmipjyfKo76wj7Q7wtifnmWbkuyMxH4K3AH4aHxveqs0gk4+jYg/9Eqz3C6LUCf2tYZRFJ076ZNHq09Rfvdi+nK8vfd83rmlMRalYkba1/FJrn7/oDugu8MbYFwy9DQVgC2WuKVhpntOCFcphvZjvfsIUh7Lw4Nbbnf9F8pgY6soV8mgI45ueV2LCslKAdBlFUkEtD1pkYiDYHHqwkdxpLGv1egbIVlJy0Siejta3kpqOgqTEsIaorv9z5LRZKTlqygz3kdN0yFjXKwxtNiXoXwsztINjvgatndEI8MEwuZ10HbgkDrfC2sIRSxqJanwDAEFbv9tKU25mDwz8ANE2a6CY+xYfFwWPKerPezrHougXO5ZVmQevUbjOPCh72yHFRFUcs1N+c0URRD6uOGIQR9CC1tGAQBLaaLWlNLc86HfzPxg49qqhrV24JL4Exwsdy/Xo5kNyV19VU+oEXl8MqtK8NyVFMllEaRmA6A1vPB/WC3KNkxKbxy24qIFNNkFY2INl6rwZbOpZfUxm6MxWm/vxn5/mfde04tMqx6nS844URLmFfZwO2mOQuPcvdzj3KfI1xYnf4jU39RWvBLErjmd/LL3MW8X/Ls5Ma//Hcv7Mwc3+66jYOvsfPb7FR1L6/3nGTn375/3ukHZ7u5sS75DcmwOZe5avHy7DkOM3O5gv7ww2hNeGM85go6do1UezjfnxgUSKRVIwupIGuxUpbIcLHk2mZfF8gU650mPS/iTsWqzlhB9RY3tdEtyksC/bRwEXjtzlpjZudch8EPAwBkAt901rrhrl9/PvBlWXGWMylJle930/648uZHqG93D4nSXdBiUUL1TSwi5s1T14WCUP9GrdGX+2LKyxJtmfiiEosg6Ztu878lI4eFDdQ3Gdoy8p3hFNVrpE8GnA8FYr5/d9a5vXjmd774x+YCA7hazonTcIaLcFnM29OYr/w8PWst5K8+4q+4WJREfVT/8/fkW9EDB5nT2YqB4z6/qvhQ1aHubEyevr0G/o01LPfjOrS49etNeysHH0CsGpB+VhOVGPhwnTj+Yy/TCDvPzukCeDeerYkL4H5dyd1CItk7qULUVbdEyhWWNMVPdXJsRROmzVUpk2Bjb5nPKRMjkqe2O7tHJQWe7WWIqPn5oXFBiUYFfdcE0ZKqY7dd3Kq/+rEHX/VZgkyiwwSZybW60oovdefg+isguGzThssh4KGesBFCAB0/cOVH4VDpvBuCri9p+NFrMX9u/b2a8EMtN86c/fwwsBWU9KiqaMQBxQS57wfufR6hFz+mY3btbsM0jQ9qgl9hEq8aQIGrSZvukv3/A162CX8XXrbRCmm2oPu1hHb5vQgePzB2IJuc2qXbyNAu+SAApuE3l0kwkpDj24d1HYWNDVewWF48n6axzMtsACTrXaeb1QVTWYLVWMyykKmPYZ8rzyXHsM9SAlN1SdRhPT2rL1d7PSPdyLsK0MU30/OmC5hmMuB35p1q/iMkPw3NZwEWZo0g8YPEL29BPouYGleIavTXdNu9RkGTTOWMMlyfzuKPVfV12EMp/xtvEdHdeVMQgOGoMWfz3Bwm+61Mo1E0SfVvzVw7t4zoR9/Tj6UWydvdE6647IzH3uQzZgbOOqPe3ntsNwV7TgM068b3zdRtkuI8BEadGZI/DrlMQxWf0RHcfAp4hI/vzDIBejQ9hXvJPMQxeRgFsy5uT2M8Cbkg5u0aMZbp77EWugZ5za6QJnK4jW5INMtL+5+sXZ9xpsBUOo04/EvVDZpG+PzOy+zzMzBN4cbspn6aU86NQ3ov3WVtEOuMpmBejqGz5wWE0+cA51SdBZOwXc5f1sXS9S5CcEfnshO1EAsrfInZW5mO9B3Gz0HGOU7jn4/Mm9bT3gySXDiQ3HoZvBYHuRXML6JeM2u7BuGa4oaGWeY9moRnz7x8va6dgCaYkMRctrazn11PfUdr+Pzvmwi7lum7e0NNg93i3OOhbWb6Jiuil936o2kFEwoZqdO+mIlur/0O3bX6fI5wiZmewZoye+yDH/UeMjxlMMuhyAB/95SkYXI6JaNw7IH59GEONmuozvI9oeLpjPE8cuUAfNslEszrjxAWAyBqjfQY/veCxmu4SR/8tJ4iD6X0T39w/qU8rSJZ9fsUfDZj54KDs1gV7BL86ZQS82nSFEl3RHmXaXQHXiPEVjvAdOVEiUw1kGE3a5RLxDzS5nIqRP6RrGyhGOmt4M4ekq+Q4N5xGt4/vhdKV8iyqIu37zNXXbDKnLwDl529hFFXI6ovbaZ8ySVJX+oh+bmLbzse9ZNwfX/0+G0XPydpDZIwaPcuW9ZrD/JSA9xNxw+AKrACCAWsujYTu/6Od7eZxhEvBZ4PvsSodp+bTyZ8th5lJdfxjOLNs/RIlpAQ0ROpyM5JgNY3dnx274Wf7UyvQzlRjEbltrP19gbVR/vrO1tnTdFSdR9SwK3XbT/VFemDsD/SeWr73mUk9ZJv3QfOBggIGSiqnAsJz9eJ5Asr4XU9QmYvUcey5HG4ryEyG4n+tXI2e0CFzWehFLE7gVCulHCnp/djHiOoVb+jBwFC+zEjfOUOoXjtxNQcipqauLaZ33ElCL7z56t9odYyvD/kWy2V4WQm25DTAwE915DNBI1Lb4ZgyyW+o2yqHvVdsgXAmy/FtGB8qbx87dLxvjEvdspr/zjRKf/XewAKsNhXydgirPyX+wJuuuohBIAD0ENf+sN75fybAOALur/hBcd5kfWQ6ZFfQGN4vrIsPixCrFAsV6jvmWeml5gXms3IIeljxSzUI6NKXbnoFYhQkZ+XJ1VW8RSpNH9Azvl9jaqeFG/AFMQIxwBY1gaeaV2GOzdVM671eoJA8Ad1os9UHdGHY7IQaSA+NzAV0oAeTCLiSJ2IGB0NTkfbMlzpT1qd4WB9ILcrtD49h2fnYLCMW0+jE69dCIOsBwOa6LS81BU1Siztfy7j7RTlQgYxHQ2h5JSpEepUMnZdwIhUHzxSDxw17QGH0tEbwsWA2Rb5gE7y/uvOlBBtG5gD2YgdcDaYEYBxEPhGwHYuqkHw6RoEN9buzYOZTw+mIHBzn4JE0GwAlCgBsKR9DoAoYNsB8BMzYgc+ycA2Og+kC3x0JxZYmb10t8ShGuY8EzibL6brUku2finObU9FoD3PuNxBA8JHRQEKvHDjprRHrahTGklR1eLxLGxTWH5+Ss878VMQQF74mpdSn9YwOT9xJrcwP9vmxe3lFsmrwhY81Z95W8XVjSjJ9dToJgRj18XSOfZhHMKN8DpBOjTt+d2xfm66EfccCiLFDF3n8RO7z2E7/xvcG8rL4e7RkXe8bAZfE3gMCFKCu2vyw/dQhrOI7RYw3OYngQFk10qiG5MybM84M8OGjBoLiP2C7pXMnKFnruADavVpS7lTABJ4Qg34VfC473N1nr6vT6swGPO98ZovFoTqp79PZqL9W0UN/JtsydV/0wDQoOLPO7S1gPT9GElOpTz9tALDMeVYHU/ktTeCuaL2s7e5KBUl28XHpgJMFylX7EVa+vNf/GjlzA8Y7J3Pg08wR+XTP950ljb+7Lnn7M8TDu528GVnJSCM4uefn/Pln0GI4lLOQ52dntqVcPIjoCZO2BG29U89gvz8L40o1LaNVPYEhbBvVtVt/yEvTPyQ39adf65jweFLo8hvDK8EwuU5VcFCmOk7w/ktFHU+5/L6g1Fk+UHaZ1afdFfqXBtX0+ydbhvJBuKuPoDQrTC+XadoLvhBf4XphRfthUf5CGVk3fDtXGYXTS1miL7IQG7dddEv4R6wEPeoceg1XZNs/d09rN5XL2ywLi5dAwI+snewZGAst22i++ekX64WZor0+OVB3o5r5wbBqwzxM5n1FHoCy6xMB0s4tauI3+rcDuBihpq3h2k0kzhPZyYxhEAIvqsk6/cS+dYrmiySiInumOvuHz7irhqCD0Q0aVhAzZCdopSMUu3T8BEGMdutAguwjZCCxrFnET8k2WliJZ4i5uG0LQ3x6NnVNV59mSCoJgosVePq0gCGgI9Pi1l9zRo9K6ZJ7kC8cFIKDMXUpCwnsagP8WUsPOXKHfgQQc8e234ZH9+eG2B254Hc9jh/2fZjz1YHXUSZhZratUxRlnXpPtnWJ01ZW7tWk81J3XZ9Khks41w/ltwmuYPcIe4uTFRzjOutD+ijGUlqrm5ng6B1DphJovX+RsiaL+bVQe5YHUhvJFq7br6xBXi7wrQ08t0IPWCdA6S68LP3Hrje2vhcWA9RVA9rJMAHDy7fBHMHugaYhmCg60AObh47+KDzyUUBjlH36HuOqRf0Xrf/ehPdH7GmMT2r13obddme55I4ydKOoa/fw3oUdHe3mrrn684ptpM5PYJZlqLsvlf8VH2V9gjzKPS/8nHvKXxkufReQS/TvZpINoh+uvp2cZeSvc5BnUM9U2rW50+uj3Hw2IeFrGdpkTgIa7GYISyFT9ZorJsxkmBY5+2aXP90rfTQWUrO12rFry1C2El2faqPJ1/x5H+XDznLhWvn+iXveMTdQcvqo5bmYsY66E73hT663XMX6O5xecylhOrUawWKngqgD9VkzhRAJwCJxEKCKFFtxEc/2XFgWS3bXG/747gdM3XDhyT8ODH/IuKVdXc2X0t9t+JQ10dvpppy3llWNzNquXbGqO00QXaEzRct2rJGsCCHE1n/EmMUqdqmtv6JCwS449JfkERO52/diYIamkvU9O8YRMmjigkC6gWrVEuSNFncpzSpk5eS8MHrW+BnSNqmRwdW+cvJuaxMT5z6qfPUtw3j/o+aSIpqLwSg/+GHNd4f47y94l9Fy7kl3Pb6deNmpaolaq/PSkVSw7wrK1Xe3Q2KOuETCZ84VhLkFUGna4mpfHG/4Fu5brG8VDwM6vXdrX5Kkix11QW0x0clEkty6aSal/eJMniF1bDr0UF6v3tq9d3P8vyzd5MkVUDV9OYQSVIVNGSSokoNSgo0MDD+EiHz3vsNYLzgiwUE38N/5IeBb+vR978XOwiVaPgg2f4oQzj5XMbVTS3MxV+fZ+YITe0bt5QrAFUzOz84QLwvzrkB+YeBIJwgyujLSbJymun4hBR8F99+jrZadXuju/z7e2+RvgSdJQmxOi3x771VupfmmO6WXtunBJ/YHkdEozdvqyFhwfXC30G6Rl1A8GxFOMm02kzDPVOfLInYUudU/G6cFGuLxeVoTOhSjsvkat4FVB1fLJl0n8X3dW+uddeMjoKpxa8WKOCrs/XpIUdB2pn2thYmLR6FU54+9Ek3VnYLySBUIU5NJRKb1UttWDT1TwqQ5WeT8AtiASszBwiS+aKHbSkaFoPUnYbeTtGNzoapbEZOWcYJY36DCP4scp0FjblOEnhCHSGJyoTLhmks78Y74P9SHt1BI1tXHJIMC5odofHssgZekDf//bV77sjLQR9QBeXin6g+/Kt60bWJLT/czZtqNMSH1+1CujaTzaqmgiQfH5z8yUjFArwl5D/Yf+Hp1clBg9caxmKhylEy42HDsBqMqRuzgpDcSlyjx23eTFhvdm5Ot0+oIWl0E1gyoOTTQnMrCjvTr8mRmHLeU+s2X6EDo7C2EQSBEDMQUCxL1gaaQod3b1sLfC0KKOUAGC71JeWMLzZeQKK7P9SsuydRiVuF5YUt3IXczYtLxPYiXilUuTFvt0kmOM/tIVXvsXKuZDVgdpF9qVudmnrDc06hSUo3UkmCuZJQo1aqtjP1RXMLhhrL2btuAabrNqt2XqnbrPqJd7mnEO3BqLurO5XcyZ3NLNDiVZeWT8+rnRbm5aEj+50sozH89VEgtfySuTnPaRYrQwBDQ+siLHNjhYHnfar+IVcHurK7q9WdwP/nj+F2PfbnGGuTnsy7dK4n+sSvGG6Kpq8cnX8JuToQveRaMi86e1XepXN0kcrYZU2n9ApqxHzDKLHHDYNaRKxIFW9SKMK8mjC2Z7IG5nAYJ0FzBbtiR5idoDTagMA1l4iTlwCUWXvhMf7Jz/zoXkF8COwygvxN67SA1tIP0PZeEqKw9wAAS7rXPiSCoP621PvgSmP/QQCuurTymaWitmbp1i0AXbJ0eCWmQ3p4XANBbdyvZm8e3VyBdHfOKy5Yc19HzL9j0DCBp2N8nK6nFN3fdYTbc7Z95jFOIsgmwjZlna9umtv+Zi5O6Bzx6aO13eG8FXHSsBB/8np/7Ox70zcwzRk98u+KMF24c304oV9zR5S3AqBtsf3rnapXHT5+e15ttEDgIrv7/Gbe155/kiswLraX2bzf82ff6+xc78/7Hdwx01whCll3DzOmfKUkadEfwAvz9z0jyUDYG2e/DaZr1bSQSsmuZrXqqtw5fpz6r77I1tWreC5ejKG9nmq6qdsAi5gn7GrITX/B4oD8YG7zCRJp2mv3uK6C7Looki0fMS4nUVloFiSce5Ibk8caGsBNDZuSubgqT6ox9ffJDSllWImrjzc0XIfLjyvKPpXcN5qChYbJhobEQOJWLHQ7L9Ic82BcAR8tJsFNicQx/LRzTyLRlFBj8lZV/X1DgzqsKCeSG5LXNzScwFXuU/Bdw0hsxU/GKw10j0BMmlXnG2rMxbMncX9HueV0dl31fvrc3SMt7Hb/vG7TJ2gSc/x6XqJAoDlDCRgACZ9iCQiKC0CyueFdIIkcOxtMLkoSmFQ/OoHvXKcoxx4H/3Q3AdBxVSVncKPqTNG0/GA54YPBlecEl33Mg1cCf0RRwX/MAcz5l3FVvQ5/5tiJN4/hn24iRUVxjilxcCXmdBUSWh9TuRr/OkN5xijhsxdmTxFqYRQhMSdkC+/e8Cdso3UL9/R50k3VvBSze68ELB6cv6ehKxwvpwxL9ZHdfCDi3K16gLt1zwkvPGIMo9hYIPBptX6nnqBxxM0pMAZn6d4XZ/OM6S3TiMYKBuevMEL6FYVjWtA0TQBpBdykKL+GNDK8+savqUvnLC8IPEircQ+n/wP6YxTnwhirF7luKo17+Jk41rNwIhYxvCBp9Lu3JYTc0/8oCP/4dLKYBaCY3LxvCgn/6JyfLBaXFApXJQuFJcXi9+ZdoTh+HL+En07kE8kCgEf3/fEPnAOA/Lik8Kx7Bu75G+55To9OeI8AF+OyXJvXcjbl5zf6bG3FUg86fWJMTatjJ04joepcfDYPJTSKpaF732jco+t7Gt+4F8tFE97enQvONVpA2kT28W6n8BziVnJr2T6889JBi65MxwIp5jeX+BQJ9RdS/QXkAm6TX/T6EMBSG3rqXl3u6pL1e59CWDi9zXUxAu6unwnP5yjtdoT3OobS6NljNz1lQ9/YmA/aT9107FnnDs+rK50+S8mLA/w57muJm+DO4/a9Z/Ymmj+tLnkTcwcs1Rae6+rrJm0q5NwsTsy4UKEmKjS93m+Legqi9afafELATd0kSDm9vS0ong/RyhY3c5Mu2v6tlD71FeGdzWXCt1XjpSN5IdR9GKFge7uWkwQ45aXp0YnYqaWDXc0IDgw0ybGIIMFIX0Y3rKRA8jYhNFbwLSN5m5q7gmmN5mkK0rxNcLANDAZJHqeDGZquyc3eZDgn2Tbnibr8IKMsfzlVbc3fFYmubpeW1+QMuES8+VOQSd9kPyQqj8MPXSjuupqy7Q+gNHzwBmcbk+YxSaEyPvjizoMQXL3LESkE/uODD9RyitTvfTZE99Oek2EW7u2BL+uduSo1Y+Fc+5DrwtIJiyTWmsV4VEja0bpcJNQ0SnfgYP6Baj0SxGd+4c5l66rP0lFZh8tEThn/2d4BJPj0WDTc1HjhCvxVnUe+IGwtQzOkmJ3FrkbENw7gMfQm+89w7Y6LoQHG0NXfsurB/1fbe8BJVpV5w/ecc3PdWLdy6gpdVZ1TdVVN6OnumelJPREGZ5hIzwzDBMlRkNCAKCC4AyiLCNKElWUBBVSMSCMKKIuifvIu/kTHsLvvuosJdX+Gunwn3FtdPUF593s/6Ln33FD33pOe88T/46Vc+z15bCbiXkIb6IODy91ZtL49bkFeNHF9bjCMMAJGQNohymJAE9WFiba815GA+rxei/sxSfMRnQBWNUIxMODNc+ipNJCSV5Emw1lTDfDh64BYet+m1nhIU5VEYKjmWR/x426u8WI9F7zzSM/jXWLfKToqeJLAy2sLVuswSP1bza3vBA30BYpSWTo4SjArjbVX+3qsGZTigtxi7gDx12ZmDoZSQ4O36oTlL/f5LtCYc/FD48eYXwIxiVCAa8LdioWyWPafUPNx+8JNAYo6E+L23pMIxnULhfSlN4ekWEwR09f/3Ah2KxrT5eok6Y/uqF+/7e++pvUoWtD9bTinRqJbHT2ZFTuS9f1xAC7cH9p/Pmpbsfdq6BjwYiMOLjsKIXSSFpCCWV3WYlollwsa51rICjA1sa0YF5NhdIOl6ke+zPNfuNXkLfUGI3hEtQoRHgDId9WzSFDUSKTjwEUIXXxg+aMjqjlZNUIhozrZ9KN+Ca3jItw53H3c637edoLfXi/7WWbIojEwWKsOLARMXU7+RBP5RCTKFJiUAxyDBAZUpAnO6MRksB34KsW/rNG8T7QAmJ6aZbolXRT18QtobF+0CRxUyJclWijTnqT5Pfxuxb8uDHq8ZJ7hhNCQIg8R208zjwZ19TXCic3mniW07DVF2aj+EpIkTTxCCG59cjmED6jqXszjLZggzMwONaEsqH4QwrbJDtHQQDosYX5RgTxcSS5PYHbGiul9I1AQIMn2BN3/p6dsCoHTc6drWSke7i4dHP6lFS+lVpQ7S6YY2JbbpuWkRLg7uaLclnnTjpVTK3qTQ6EUFqB5CQQkRy1uTIccuFrVdXWDoqxKDAbTho0vur/DF9s3pB2HpKPHlzqV1wi9fTb3LOHVv4+/dKOCOvECRz4FjxqQLyzD1cH88V6FVAfT6B24UL0ZL1AFXlA1mG7HK0mnw/NoJWmV5aqipKNaSQDE1QPw/F++GpSz2um5rZpoLri4uxS3fjV8oJxM21JO25bbHhCNhZf0YPb4l8MHO5LpceA4mQ0lxZFxPRBvG6nQUHINbmL8BaucYGYduYRrgXgLXxpIrFSUDbgmPk/8HOYz09wwRYfAc6ybGinp4k1ccfFU8xOalD27OmKOvHQ0YXpfbHE+R89hAe6LpFN4XjclXrXdUzppimqGlDfOEPKymPp+qtAvqYj/Ryzf/eVtlpmHKsMYoh6ZPlpfxhACJF+ju5fKhGVoBB0TfNwI5ttKRoAJ48E5fAIyl9Zi/r7OHSLWmvkSICgNUgtGc9IsBp5IxKYGriAFXhdodHzdN43gIS2VPAXqWDNlEx37da+A7vw+XqQ3qnhYkPHh3gdOf3L5w4qyFx8umFB0oCt41EwgXpD1UHQkp1oCr4AzpVxgOx6VolnqKq9IlmO0j7vCMdzHW3On4z7u6Kbn7Tcz2dLKZHdox2us48jsUZLw+6BQWPYJ1RtlZEYl1OVyQNbtWDSJQEDRYxcYYmB7/nQ88u10snxg+JdmvNR98QK8Gmyl88RJJzsOVt9U08meS7i5uPqfejqNFRzn2F6cOcuXIAotx4QcH3vstCQEyVX9nOLjTMumq9/EvT3vYCkNGcct9LJu725gXpXyN6RfQTt80T0q11cBsKoOulXd0N2fKLVVEK6qgR7cqkA/7kRjPWhPMk0l2ybbfV//Z9Bn4BOYzhJff+ITuR6P9qFoM85EYimAiRKrzPii4Voza9fcMkzSdGFmvkiNu9Ru2yzBu00z+tjF130KLV3UdnZqOGWYKrqjFgyH25PJrwdTqUI4DG9Af3/2+XdAeMf5sb7oadGBxe7DmuNodjh8lxYMasFQCLwM918D0T2XTZzXvXehqIJc+7m374yUIvjvVLZz/3TmByD8wJn7PwBVcfDU4tSeUDzU/GP6R9yPR/G8LnKDLCsQHuXtZZGnK0NFCoWjg8TwxVP0fBLCPVibZ3c6SqJkV7zNfeQjb3MryGQkqbsBXAHImRWQnnCzLXo3MK1AURA//EkIP3kHJoJyACETIZ6euB3xQAb837do1byxxr5xAc3++g6/sxwaDFNTcD/wswAUT6R8fkd1WDr64+uu+zGJwGJ7d6qlThNegqN3UDUJgGs/CuFd1/E82X/0WuH+lsq6Xp7zOTpF7Moyll6XUd8BLwn9yY3LZED2AykSDhmQeDwNs3XaS+ICfpQolbAMJZ3AzJz/MjEzx4kOoFy1nWLfcF+wVAr2JYqZG8lC2gG+UKqUitUi+IBnbbaqx1ibP0swLDqG0/lEX9FxnPJZHUHHuZHAGXbMq88ibge1BLwjq3OZwAQca3VGFHSbUF0xRPzIR2F1uFz32Jt6bRiJ3oxEs3NGaGL5bTFCi4EWI7TDQ2eeyf3nmEbemCkmWCMM4wrZ1TJthw7l+85wqYQbYvZ/mjAJbFTVGx0n2HFWGbdTsS+RTw93EHano0ONu/87SBt6zt/uOdx0MZqzxsOd8QWxCklOXomMAZrgjdkouwFLqZQmuHqeQYSY52sUY5Q9AFLtbrWr8QbbF3RFNQPXg5+RHG9xx9Gzpo0mhcCDJCTt7osUVeSRpBGY0fqDREF+L/uZu6+8AMyotgCMT4Ojdjpom+6DZLUlHhRLFvEk49p2AU8fwVDPAYNlsKuj7vvMszotouvvyWqFO98L2mwGTkk5qQuIBRPkw1IVC43/V+p9B+LFcd0hcGtk6z6IAA8R7sNNOjznf94kSyDA3Mu99JH7NAfQ6MGLdmkm+Mf/s7YisdS2j51b8OGUhIyfg5zGTwksCWfBofHeRWZKx1w3PWK3SmAWQvenBCMVf3Ge7t2nDRt/ZY5s7yfIegbAvJNtNPQQsnSACDtV7chmYa0DEisLKdBop7fxsG5gZiyL9yQIqtFuJUIgTSKi8GqdAlYSH5HIqZmOGvSxCVkOJhaXuMbzpZsXkxhtKTstNtOi7zOFZbpc9WS4AMj358yVWwO6c60HuImpHfO4wMVXmp7k4F6WmwuzlI3xoM4Sd3W0oD732Yw7hbOeq737SbYHHiCTn7536ZwvuW1SToNaVVsxpBs5qmI4OnNsyjGymVsHnkfLqS+Z53ledmg0TYBC2UUdqYXvoMlCjkdxFCgyS5PEomDttPDq34hSLC7+8GUsDcvCT04Jv2sBw0isvSty8X5n22J61PgwwzykuIjgN6l+yxSbh1mwoPcIeFGLa5Lm7gX3akQCdhf+/cBiwDAeF/a/8Up1GaAgi+5PfUhH8ut4pM0K+kecZ49/zsv7yWI1Jrkt3HmE//I6kFi/HLZjp5ymaowMGF9dVhsuA1/UxQuE0OKxLswfVASCNwPqoBJmWLyAPpWOCqqa69WZgi74OV3dTNZGvMmSZeAMsml8j+VUjTsKfI2oCHWiLfzLU9QBhQCswt6ndNW9k6Cwgr03uP9EINTBGQoWXTx/PLxpzOJ76Q+MIPizupk8DW9C7uVk5TyDLAvgu0T4o7lV/52NKE+emVHce5mBZNv73XvwL1VwjqJ/2gjO6RPhPzHbgEmUKZJnDqrX6tUo3dkl1G9b3wI5y502DDAtByULfItuAXxAVm+5wAmq7p/VvOL+SUCqc+GtZAtVp/n8/yCIDwpZsW3ipELNDYMuZ2UBsCRbhpwJPgYmlGCw8Z6gygtgQs0zvhPOwmna1/Ozu+bmZXedMuZBLEz7EZ0tjoy0zNbKH6IHUBu1VTQzQEbDYoQGswCqZWwyfTe4f8xszrhf6MwAfvLi941s7Qd5wzQbTzJeDkvXXDLpzpZGqkf27QJLhkCnUewsupd6WSh9+8IDmDaTnJ9lQp2LTS18k1UriKV6dS7RaYgqPRzR/7I6hbwBZMCWwHL2ahaqEtz4vosnEWjrBKsym9NAwt9muD/qP32HpbpfaLcB6t78vtJ4fxJIquL+Ea8Z7LuuIYM1GXR/B3bvu7W6uAzGE4m3OaO9q6i7rw8uwWRbcWfz7YVbNw3B3oEE0NQ2FdCYccZn/wzOUl/a02je8GO1l03Fom/vwlzbvEQ8fT5ALFUFZ3xM2JCndCSW52LN5/UoqT9B9P5QDZ5TGQNM+wiWVCd2BT2MOeeKzZuvcFDY0E1o73Y/BbetWEFSeZDt1erIQCKFy2SFxgtzR14zeEOrTqhEYWlajSRv6G1lNNxp2o6+YgtMxvpGVe/B6kRVM0A6fWCM6S7HDqST562hofanEFDaU/ALUdhcc96Pmu+D224bmIzElpZX7YIkwH9hT7kqo4iuWUBd3KdhKTN0uxER5Gq5ZyFZ3cHONeWlscjkAH1q32LVZmPobeqf5mOlcPOGf6X1oH7yWTLNhsxbbPcdtmt4c6bVy4yUiWmelGe8ELOWlHyszNacN9BPUIEzMPUgeRREjrDaEc5zisKyV63d89toAbL2/AznGHE4+ln3qZAkhcCGzz75Js+/+eTl7q/WrgX25XeSxO8FNa4ePkg9JA8S7dch6u94+LCC8lH3sXY5ohTcx6L4V0++2eACf9iz5w8B/qU773wJ/ErBvyBEEf8uHlIOUr/Kw4eUBOflgZ3GcsYklTGYqrEP+LD6tAiJHhwzEyEKlb6YJd8mvjUl4i3HNJZ09DKYCaI9/r2EKSFJcrHyc6bsWApAYk5NWaUzwraMJH4AAXHHOlkGxKEVIahYOTOQlGO8vOoDCKrBkFRdyF8OPy8ixVYzi2IH7lUEoNiK9osLQkUtYgICobP/Eh6dfl8fHzRkUS/ofG82kNJlXuu4ttb7vjVKkHjQVa5Y/cpLnp3h8+ghNMV9gNB3plONYhpfMmA0Inm2tJYQYprwtuRhGmLSH4oQRjtSpz5EGejNa/yb2rzfhjz4eO9yOBQm/6JhPKnDWCJrA0PhSoSJn/A1NSRLEq/wqz4WkCwdC1XvV6JyUIkDlHbsjBx7962CxMu6IAkaunkyJMdNR0W6GjIfUTsPtSPVtkQnBLsnoHpLfPd5ePkwAaplU90izYSFCtFk1do6MIyILhiz6BA4gvDe6wX0D/BpvLZJYbxkfvgAgLxqSdc+XeqSJSjE2le0ty1vv/CpdRDIghaX+A23bmhb2JZK48erFuKNbz4Ynb5c1gResHtjlbvedfOha/+8gQd4kVu2q5xb06uFEAzqbQtSuS0Lt/zuEGHjdQjYNwCI5QTAL//UgX/4d9+f63kazz3QihFBoX5z86AOfGwDAj3pwTOJKNvwnZBaVrkmqLv7Od1RwAPU8WO3Ou7zo9Tx3jNUevwsSWFOeI2PU5s+gfc9Bg+68FdwclujB04KyNyi/pgHDv2Xb7SgMcNEqybnWB/m3r/iw+zl3aL8HPVIIXzeSb2Xw0Rav5FZQXWRZKuZOXkiT/fLKlA+eBP1Zp1R8RjiH1ATrXlq4qTvCEp0gaqBCUXzDJqUsDlEkMhVm9hRnniB6u5PPJQRZw56ZAwzeDSUlMJzBMHvQc7DGAmpLzeorzWsEPAR9/uYG5z2RRAPHIjhit+PaVkIy3+clzRCQiLNVFakvh3MqWeYhBFEQujOPxAHmqoElyBN0REP2lUR/FBxNUxpnyaoyU+rcMVvFcXtlBT3s5YuA7AUieCXasLNqcqjCpbhlMcIGfXe/QB9d3b+uyveu0tNuu+AKLrrv5WkQl49ijRV4xEoKhJ+NXDt9xKe9oLvVMAnv9HycltTwFIo4XfH3XHK7J7XD2zwha/78Qn+WD3pSJ0/Ok82IhsPzxuEIq3XjOf324fljM3cTualfqKgZeCHu3vpqr34Vydn50jKVpbOPRJ2cg4hkoyhQczRsU7M49V6LhpqAZ+Y27hPjbNZnmXLLvEaPJdAvMAsKEeBYVs6TDYmkwBpVtBIFbCs1ZGBX4wXwfLGWigC+BUAp+dF19BgVJ9ykOJRdwqYPSUswdiQN90K+DamyTaWbHryjZ+194PO3ghQJUMzm74pX/V8z7M0j+027hCT0E8iZ3uKGTSHDkRgOhnAUzjkK+zKVBL1PctbFHmYeZxPE0uoYFfgJ92HCBpiXwHspHtbld2HZFWVwU5ZnW36N38qk6IxILn2QkG1FTkgSpkMbMgJzHQliRU/jVcZGa+2+QIABfenLZAvfbOzKItf0DiTvQjeU+hrOOQV8B6ybTzAHEZBoWd7J1UcDpxbHb+iZgpyPNB3CKjUuaRze0/9UF8gLgtm7Yrx6rkfbxVL3HEw7clI04BgMc3LCY+mGsuJvAif0SkAnGedQtT+QHAlI15Em+T7gMwlrxouiShfEHkpyEVrnFNqRyUOsSkBOfjSf9CsVVc383YBgOnRK4Kwzf2OZYHBnTtBzTbcH14w4v7K4l/+0JFvCbb7nzD5X4eJlHodW1bxusaTfAogpU1tc/+Xe5GsgNtA+2l7/vJKAOzF3Oz6RHJ92v2V+3F/zduLx007y7gleUp3JjkQ9VSGGu0R1c3jXgY5u4/C/hjNmFp0imXBBZ2diwAvbKsv2C0qAZDKThY71zmTQ/XVyHCPujNEENftoA7uI9a/v8gKjEIYwytwBsI04rFgNGU7RhjASCAJYRZzE2Am2GCE12hwVI5v5uLB3/xj/M2Lj/GdyJeOyYRbbs2Ni4e044cQ1+rOKEA/ohoNAPpLhcl4bHN/vgOA1dXaKgg685UNTn5jG+a42D3ZRATq8HMvvfg5zH2GEm1wKcs00bFYWbEPXj9tLinXiA2rVl5i3ngxQPtGlMUd7JZsxXCXWYq0hOdHRcUGz5gVL//lUZTBdZjgTuV20Jl6XF2qfXMIaeU+MO/M/LqUmeyaZ7BDRHLrIg7Kgm/l8gDOCXEbcoLkZ+jHgOXu6C/l18Zjpw7kO2nlcd2HNgbzm9pKA+yGbDICdPj5F/2q35fsTOI/94ZCtQDa4khE8Tb3W3jOdSYS8PuJh26//aGEmdnQu2f/wf0dkxk4Tpp4rL9zkTqxD10/bS0pV4k1r9oxYt14MUR7R9TFHeyWbMV0l9uKOIpbSlIs8BVzyEthcVGyUEjG8gjlY4yANF40ypD4JfX1TgCguf8F4KpBP2bhLtSN+YACV6OYKBTpwM9URcKV/DyqwHeuzuGmIZmUPUsmhRkWjj+FrtPlaX56KnjGNJqWdZsf6Yabu0b4xiPw4Prg+oPQnQ4H45qiOZoaiIG7grGAisuKFofdsq5MXYPQNVOKpjT+u4v4Z3fB8oYDJEuq8p8gFgyEhJ1qIKDuFEKBYAwcd4bz8ivPoiU0x+4gW1kJxt7xpqTWSO96K84W4cG2n3YacgKIl1RtLkTxiufJPCOb/hZSi5ZQE8mi4eDSnBKU5DlzUXk+wgb7NpYnMEmRJ3PzGSyp5Ysk6tVeP3ayev5V+Oun3+ZoJhS8dW7NkiLeOK+A9mQF5cvz0lZfE+YDUJfACzx8hiWoNTH9vpelmV1OcM9QzGjmq55zxpJMbw76uep78Ir5rpPztIiBzBM0ajwiGCatWGZw9OxkpHmSpoX3QKvZuZPyvmfqjtrV09NFyPdwrTasnE0Q6hOpVJJoGwulYkE5h4J5hYBDwKsC4Wg0rCzFD3m2wfONZ33u+F8E4V9ImvsbCJz1gQsPdJJlZOiaW68eUpZivjG5auOqJI0GK+4+uKtdPZXgeVl9FsGxku2+4T5b8vn752g89nISvVb04XUIofHzc5bz3okci0OggzBaYRqiSLRcGoXUtyhKaZVE+9sDVZmLB+kDLAkJ23suUJ6dEz3W/b86nVxAEUQUMQpnLorWEoVV7amoaZptT5xFgJxUd+s9r/IK7NtUjlScsSqviKmumCSH9ixs7+Bf7aEKWaaWdZJeYiu6rUzSjFfriLJ13ceDp6nQtIy0IWccI6IOpToWgZBWG9jyGYN4gKoW/AT/6j1dHWC8JzagREU11NsZxXMr0nfh2D2vukTJnCUblo2LrFBZspkkapDJSdKBk9w8uanCXcbdTen8/Oxh0UrY3zPdOHWqJPgsbE9QtvBKNLeSRcmiXC612Fxbu0r0u0qc31VSTiJ0kIxOr78yoE69qSkEGKGE8C4loa4j0QnKGhpnND5XuaWktJRuK2sV4gdb3tI/BHAT3fsqZjtCSQuzH49de+2jPBjsB7mhQEsnLozhTlxZTEVMw27/xkHwI9yJVXcZ2PBYVgJAhHYtnhnLj19QzgadoBYIl6XIA6fAOxWgsiRla5qNzQw6zcZejWWfoGTlK9Mr7v02z3/73lhMN1HIcELXPobw14xf0IN0CyLL0jO63BYEZlitJDsWkUzgw707vyiznr47m5UeWBsi4cyVRG6REbMAhHzeiA9qQBjNvdv3p38W89icZ+GgyOGewYJB488TN4u+KYyQwFZS0kQOrzHkcKQSedL9V8UJWOjPvvw5Pxh243zEcNPK980AnkKGAwqIB9IW0NQ/Ee3Cy43v0p8NvOrZt4wTQYZr+wlkuEzp9o/gn7gRbhN3kJvm7uUe4Z7ivki0hhkquDN9Esv4RgaUn0iB+k6x9Bv9JL6G5nukHgu4alFRIt6g0Vp1TndXpDBVVJtMlFnDXl6A4aIH7uLj+zPaUSt5CQIIsIuXHoC8uhKhLz7GGaSM2zIv1stUHSbCLRIIxaSumNhmzk8P4KdhkICqRmXVkWxhSkEhU9LhqpVCQDKxSPUwyCtWKCilAabLJGNAvujqWALv6+/rEbBwLKhqrlhqV+CiVE5NmkBJxQYqpm1E5ViMX9goVuoLqiUVhWJqLLZofHzRAI+fG1CQGoNB1o2jpwBwyijuOiAckMzlh40gKYNNBPBfGc5uSunz0wZcZgdhyMafIAHFwPLZpXoqxNIHhFK6uHoMES+XsdVjF/XRjJ+du55QlL7zLj+vT8D/qTG1ePqe09vV+L58jCJzRFOLPrS2e2NJS9iVsxdsfajxnyO3zdy+uETROkLxiU98/uGJAR4CQ03KzpHm9y455Uegp2CqZ6HKYYHk1PSwambRz/GcGMGr5zncB7h/5L7MNJonHBh0jvzVUTXqB6c0E6lS5iZaH64V6XA5fhQJzYCW1pEUweODMXEsk4SvFg2TcURVp2QYtei//egpuFKNSaojW8cPjU4pFJM7Y0LWKDrleCIeL4fwsJJiU/iYDCsL/DiW7O0kaZalfPtCGWqqkpUbn8WjBfdLz2DLAIIvCBIfiY7UySCykZqKDlRATnMafdUFC6oO5vuQgns8FhtZioeQrtARFIUfw+duJqu7Oi5ogqHMKECfNyq2b6ejooK/AaqV3KaUpkMxk81mRKhrqU25S+lY0uLVzq0DZMCQBBilXZWdG9SELIKsIH5+kIyVkNpz3nsv6KEDKK62b/+IoAgDB6vbHpzIxfBvkjIdRFvWC4HDi2/bsOn2xaGAhG80kByKrXxk9048gvAYISMIr4fqTZ0kyew4ftaMGpvDDn226U9QP0ZPRPP2hA2SZLbYUhbo1ssvMsQ8zsHbLbzVLqJfAHTjHp0rg4e6Lr3xki4ZReJKdsfhnTk5EUbzs5U9hQWN0Hg4mQyPN0tfrS1aWA0kLIR5tN6uALISx377AJbeDs7/dkA8BUmYxFCEOE1SxgdfjjJUGOrgni+dqCL1ubsosh/zOWRPinpPmldZd7kipfK48xXQEZdkWYoVBQK2Kcl8ISYp4OcnqLRI7lFEhC/Tm9gTdLyclxOiosxvkwdEtZAWVVVM5SC5B+ZjWGpQJT6RBcp/Htc4/zLvuqEU0vT59LdNneQVWEaYpAi6wx7oKEkHU6ZKBSww0H7GU5ldy7DQAf/YBCGKeuDRiyhz1RwlVIXA6I6RQGM8gyMU9g1dCrLdOVzXAGAFTYG0AIAcwMVcdxaTzUSxaDqFcnJiIJMLX7hm88e6M9YX3y8oiA+A6DLMv1ynYLK9TFXA2D33JpLJxHdUFYSJYTaRuGpwbQDP07WHJsmFjZ/YoCqqump6VTQaifzkssPl0TYNgEUd+1eW+traweKJ2nuUZyUgGucE5a8EVP0cj34yfOwgF+bKHtKyhxnXqrcbLkcpujJT24WJgpPYDlscIk6GCI4umxU00cdXppjIsxddNNXwAnyDxkyw8VsWBEx03BtOAqgMt87yQqv7C6efdRGBxSBZ0KnKzAhCbp5U2JJXTvCwMcbxbK9j6WIHzRpC8pP4Iea4t325nAYmOZUW+IA5MIGKY4C5WhO5hNBv8gRK1Ydqx6Q+o4sPCxmsUL0IuhVzfrdKl51ubbtMOoKlLUdc1ge39i0TL288Fkkj5xxi7t2y3BrfCoNp+xwLpd0pJlcSb7IvdxMlBE0kmj8/FNfC2kW6A8bN88/HMyoZUm0hgRfchBSUQkkgwXHdYTZp22y82b8EgCX9vfg28Osp8sQjk3sg3DN5BylPuU4kAbNMcJ1NI5TG93bnz44DVTvfKKT6l9xyzjmyLYXiohRR1YgkYgnP8PVhb6D3IYHEdxYx51kmPJFA5ogYtkuFPFXkURsitR0uAbWyXTzuArqGeNKGdTdrGJj5zZRzSwbtYEDWVwxksz0jAZJWZ6atnB2dOzuy9CoI4BQSdBNugmGD5wX3VDOUj8SrifZu1aznJUXQdfDHFW547nToVEZD38CypsBpXIJmGeGKzSQv9VodVIt21KsIHhjhE9eiCmhUM4tpFuEhWfK/zNTdq8DMuFchXRYz8z6cVQdymtrIErsKPKo6/yDL7PsEEV6prHDbR+ESr2aq+5dXj6/Wv7nvVeAsEbQb43jr5YJ4Cv6cUziHI+hXi6j2ifpGhnPhnAfAWm1FCivUW0IgCwwfjIx3fICebIs2VFxjtPcvHwepMHTD6cb3/0UzTY1u6u5vyA6YAdMMvFIj5VrAsgLw8WgbAG3Rs2vu2nA6HT7fwqJz1DrHjJoAmKTM9s24Rfg18D3cD5hrIwKLp6uGs7zs3iXL4qcFjf+MCF6WLem7PP9dqfmbt6lenMVfRMjEhV9h98oyOIj/dXxXEL4rkXfNx19tO2atZ27PhFdkOQpD5nykI+qEfB9PjLbSDBFwbpoPnvoM8Vye4XmoONLHyb03MnvI79AtSKNx4DmuyC3FK/UO7vDx9hDJV5EW/AI1DxXywzSdVagbSJU65WULJFwGVurRgkDsQxWS/KKK7yrQGBJMoEjONEJlCDwYXrTQhsaZCWK+SMB76H4C91TENE8LkD4wb2lcCm9u/LcQM+PvkVBKhO9GgqkKfeadjuwgdMrB+DnAiI/EgpOID8l8WymkCMPbwhnVDKa1WEBfUsTrtYaf3vqWlayD2R9+geNeaEbL5WBI04CR+PVbaSxua7/5wHnDXdvw4oREzZrhwdnjsfh7CuGEIE7sNoyUH1sAX4NbOY6OjDLxHxki7HYpD+Gdo6NLH1k2OrrsEXDdnV5p6SjXjEmYhbNcCre577lWbm3ypu9aMwYafcqyziNLy1FvaSHov+dT/wHQWOqF3l8pKyu62HV/LSsvE3g1CGadTzeDtFHz/UNcjWJ6l0xIs5SFJXue4Yt6qp7os1C5StxzyQ15ET1hWTMIQeIs0IpbRcrHf+zY1FSjGQiLP3gK0xiBpDTzMK5mm8g8x9Qg6J618I2F5WbajGbM1oyHQjg3aitsiRvyEhqyMTzPV7RVg3l2gwBEg/7Ci4lOdRFvhyx+kdoZf7F9AICBxoOtvqHntWTzhveB/nZ3dXs/SMVuIzro22IpfAZ8vr3fvc7PBd7fkhecOIGKLd+8ENO+5V68x1/9ckQYXurXQhUoUqHFMjmXZ7rYLP31Gpma8mJAWKQNjAxoiwT9RTmgyvB1RfvUJtA70dc30es+Tkq9+O+vVLHxeyUAArelcrnUbQGgyeDzshZQvpQnP+vNsx3XyruZdLT30TqfzN7K6lT24SeaBQKy0zQs+qFIc64kXg6Lf8S82H10DO0xgg+Eif0l+aUQ3YGvuVQnBp7VHSfNzqHsMY7K7hS+mAwG38LiUCrFxCKyd3OA+RyCa1LErpI6zs/jqr/i50HMVLj3ylIGYpkbc+KoH2LBHRJvg0IVz6ayAUmPlqO1yiisV8IF0Q9arRbClWqhRijmGJ6bleoY5uUr9RqT3Yew9H5ypXmA1yUeyWYIybFsWMHcvBlUSCguQHxmwYA9aPMXVYYyC865cJGVqMZ10w4PLUiLQjEjK44sKHBqijcjlpbKicIK09Q1LRA3HRERfyB4cs+TNB5LUG3D0jsinJIQactbbbqsmJkED2G7Isir7aiJeFChYUgVWUEQX+BB19FbJEHA4jx4C7g0IkkiNmhBCRYMz7f+bdzegMbuq5h3yHlSwAnGP8hFaTRFlEEwSX5mLKJGZ9ZaNs9w24uI4YhQDSV81R/47qeaU+AWFy4HX1LUugL63MgiQXtJ1jRJqQbDYKDwEplfgtYf+jPRlmMOiTgo3zFvEoD+cU1xt1WtEJ42A+5VR7QAmSz6UKAYdVcX6NTShF4TPE+U4Y1xsm3lBcokLoZw6Z5Vs8BQQUNU3A8z6a7CsuMOlwSqS8xL1Qg9LldoZoOhepi5oUbRdCYPLz29e236c+n1PadfCvMZeqJnffoz3gl3yCJ3FIvd+MjaY7ccgNKT6XW9uASyqWN/5j/nG+zWKfaQcs+2S6C1ix348Yd+vZgc927usndeP+T74ZLIw5ZyKzZs/a+3QVvrOvAO2uOTnlaZbN1dvoq4eYopja8/aZvNttz7TtoP/K5FES20lBuw5WD05K083nLbXI5h4OmQllKckqjXRMRZlOYpZU0EWuZCkUYVEuoEmhGINPxwiMyaufhEKUrU9MQxVvIjE8uDNbhrVIDbJ6LhJenObvxPZIfuPQTvEB5ViH/fOTTasG9dX9dEnMUkAoFEJFbPGhiaBLf5IYuH9wxNbpy7NcaiFcFHFjvOxHYoLRbKL+N/aXYIo3OTqJPGIO6Z6C3tqvmxisYdj8N4dLANZP1ARtA30EaCFBG9scpiGBl9Z+2W4BbQ6F9cdVJzgsoyPK9VosVjGiMaam0K1Cp+lUgFD++dCUfxxwqfn6s5enauvh+P+Fe9yk5TEcyJUxEMTOE6gP6PSrhBneATpZ3NygXn6nQXuRoKPolrxCOIa+TeNE8M83inn8CjXIjGoGCZGFPMkMgQtOgMGcKdSq1nQ7hW+J9foROFptaHw/VaZDjKGql1gq0JjXRqylmarZ0l6wB0joQi97TD5ZXOtmxHKhYPet15XHwqzU4LSHNtPfWRFse3HzodbXY0cEDXD0iJYFuHE7mo3FeZALGY1t7J6ho8PkaV50lYFACk6bL3z3fZpHPkKI2/ZdzJDhKRUyxhrmewPFyt53G12+sRnirEqarN8/zBK3SE9zIzt9a5bAAWGwGaEUk0pQF1tyZsNl7x21geaAbHj2+CHKk6T91taVgu4FaQFZQG6fiRuauAcLse5k29vXiC2FzBCMtntYHFPV2Zts6exSAYOCiHt9gRoJNE9NFcIKIklWggCz/5YdVEKCBLd5A2+jBuLKhg5kgXWLwuEm6/OwzNZBiKsyeI3HWhrhzIkReAVArg1yVz2iFF/xWI5Iwzz1Q0Bb8RvwqoEdXTu9wNL0FnkRgaP5jNi1XkBpdBuGyQbtF+sGywkRlcBvAe/nRwWTO+h8QOJPH8Y61LNZ1zsWBEOdAHphkHUlhUQLedzTJBpguF9IOvg2nGmJAjdh5v8W38676O+scUtzCF5/i7KHo5lurJgwdx59SJZqXsOUoSv39hkGhfPZ9d2smVKM0PROI0yU+GSbpn8mlYzK0MEk0cdactm9QmPUjkq6jEmA/PYo0FxWt09ZskgtYgUwHvf0K64q5v4YluGMFvkCn79SN60DZ+BKEeBMHGBD36MaBH9BYs2fee6BHE/xccpT8nZ70HpOhDjwaNv6c30Jcn534Ijs4/Zt+SUN8+4WNaZFmTeDsfx9c3ZUkgkrlgACrYEMw2LGmiHY3J7oUALOyGT7N9Y9IKhy34uPvPgYz+ezVhQ/W3ZqncjiXkMJzFN7hd7EbwWvfCxv1hC7xmhd3/jQWQb8skxcgrpmkaII55mLBvi57xMIR8rfE7xBGaSwCTF1vz5c5L94PmQQsZhqjbMP7opeJlDx4DLfQl25whCswZzXl2zm/HNhtUSjZt5yRIQw9d3kQakq7+uknUnvbZdjoYTNvTbNfUG8+gCbzCt3E9mF/cfHK9MaiwAmrNtiAQFllsSdhQr1ECRXwfWjLxoZuBox2Wbt4fOvOD0mGiFuaX9sHT+paJ7pbQmrMkd1o661b6kQ44sl0I8aZ6/rgYjSvCVmhJjnr+ciGmG8oI09/C5VTvy19D9L6/HiTIA4PwVRp65D5gm+OkfcY159xZPBPuuFVT1Jj+jKQgYNx5RJN5FJ2mN5BN095EYm+J19cGYm+isQmYbPjZBvwWmPP7imLhbF5iWc/0xBJl0Xo3FesiOkH7UFuthHobj/cvE3FzaPSbphyUicDNkTSK7CPH07ilIvz4H5n9AHc2yaZ6cF1o3UESVoVuORA6dDOy/8HCjUWgpPityJRCyvnLxVhMEbar5jhY0g8juoM73LUimOYS3ThpQ9pscC8eBfjSdNDwVOVHyHuO7H8/hO/ff0Rz3C+z9gtEW9pPjeqzeAzSsTODptAezB92cTVuGW47DvjCK54pRRJJOVyulWi2tDTwfOkyXlIC1JLAsTWZYytDDqZbkIXBoc0CULSvu8skHaoA7uobBvwLd975Aj/2HBsX7lFPv98Cbwta4Y5fPSKqdxskYZ4gG3fzkvCJvitX4gfgx2x6P/5mXPtnSLs/47W3beLZOIdtS2XJe9BeXOcM5oi7m3G4HKj7PkAnqGsNi/DlakUQpWolTDK0E+iNMjiJ2D/Pif/NzRDkYo0vCJowr8ZwLLs+su9tbtno0diA+9IUlNFmkGWEgGwfupx9M8tEzJK70BaA4hFB4u+OqqDZBAPvXe01wU0/uF7/t1kQ/8Ergjz7ByTAI40B74FkC944GS62xwthev41zAsRH/luikdyPD4omzCkq6lkLbR4T4KTJo7b11hC0ASqXfB5um/U5voJ7mrQjoJkPrvfwXOGThzTBtkWcgmPgnqHy3lP4TrqDzT72hszIMto5Hns0McVm4KNZu7pudoM1Sr1KJMsvaXK/9byScqIcxHTFwkKfPPXgijQb7nZpR8PKDE6SRk2CCzD9fh+dMcdkFbgqq6qy7MPnZ63a/pRse/uob2w6eRfHhKJFFegeUTLTcXgSUyd88yeJ66Pamh/wGVVfEs1CcIDXqCm/8dVbLRrNroTAf5OZGvwKtJju05caWne2Oufy6j7t6IzgJfd3kPIiBAlWrG1ynMG4EqrBfi4IalikrqEjsPnTbsx1aQifVddBdMtA/HvvNFJDlsG7nHjs3E/vUZ/iMkao0j4qc9cNevRuHk77q/bgATiLVQule0aQTIWiKF2nvqPpmbH/UasSVJQwl8KxPm+CsV7iQYQs5bjjioIDyuOPLd2knc63iwh8erzXyQJohOunyyIDszMf60ivc2JkQf3nUQ3OXvMNyD8WeV/3ucuP5la0Y9du5/myF7FLGrHZf+Aw5VaSWIgKa3jw0+6fqyNBQ+AO2fUWEg95L5C+7JySA2m5BmAJEBNz42jtPsYTSFj+6jXtVm8twH+cSimHsbXDpOnPAigHP2Vx5LAOe5knP2oMc32+Jynz3wOXYuGOYsb4VbgVXcrd4C7guPqJKhILLDYc6KxKkpiqRoRJVyF+uBQlXpkUY41UqsTrOoxWKvWSHogUSr6CtB6s+BHPBBnMMzPkTh9ql8rknBnYvUnQn0QP7RQOoqlzz4e7ajVh5bnY6VesD5b7rGDWmnzZAEBE4l4JVu/OBJIy0SShgLmfRZVVqxzd4NUTzrdkzoDRAuxWCF6kxky8Z/7dKk9vkVXohAsaV9XevA1eHnZ/VzU0pJKaoGlVF8LC5qmTilFudjBx1L5CwYcMHxGpR2gylJNxRwS0GNyMNa1AEvEMQJrCKGJQHVs443V9394TwS/MZ2+Jxgl79ytkhfiGbb0koEeB3YsAuATeOn4wdu97oq26KKgaOtp5yxwV49p817bE7lgOeYUN3HbuL3c33F3co80Y6nDIampgxQl6kDBYgb8pvfihYn75SjwYZ0gg3jyAk9oMLLjW8jqTB+QxzwijR3DtzDQAC9XcChSxcdV0csbzDD1amUFX6yWiUaBvZzFNePhgbbLyRAvLUortrJsG+TRwlEsuTla35ZOieR3gpjpGu5wHC0ix2Iw1xjRJMlx+OduCxbjUcHU7e7QY//Gh2OCJfNStxdudgbzRHkFdMqBcpfpXoHHMw9RbqUmqiJCuoPJjSTH13e1LUmUZZi5Gky5f+DhJpRZlcHT35JEAUGx09gGNHiRyptJ9dT3rB6FAG5arEaUOAEZAjAcQQFBMgTHyfYAIPKy1rNnYOUV7rQcU0uTpduf4zGdM+NRAiUk/Ovj/Vt7JQXTFRbgcqXnq3sq7A11xgTHtfBA1JIaFCDs7M+VA/hXvKVi+Vy1hWAWJFLDhxX1bPC8q/IADryZBYagCLGiIkUsLGUOhEcoXXkCPYT2cinuFIYHQZBrpULJQ2kmTjN8PdJe94zg3cBPfnpM3gZ/P99RPwyfyAwCkMseGFsysjubA7A/9e5p3D/ZCy8EOR2870uURDBCgbn4Fj/88W2EvGzaRPwMp+DyzCl91VxGJxXOLRzYlF744kUvbVWUrS9d8vVXsASQxf+Wk6csx0/J4n/OFvLD9euJsX+n3vRjQDPwDUznuSIoFQYG81IAEKRqTCZHwTC6050J5fOhzzyiAhMLaGRZmoHZdNp9033LzJM1Kt+0X99PdYdRGsVCIJiSxHtoYJCCgEiiAnJoqjFO5Bv18U/LKTMfAlMqHvfuFe4MnMUXMLeiA8e005jK5s08PKNx1Fv/Pofp4kHMkV9zov7wkNTKdEZGKzStoIfBQedORCyLhOzVqUu0AcKs9/DCwFB0vIUj7KemOWEWvaq/h0dS/ZD03vjIol249/gNmQBRSnQOAKCg4Jr+5ZXTggIPBnskAfHmrtt5+NBXvvIQXDpCnYxXrtdBjnX09R8jHYF7E68U21p7GffbeMsYgJNp3NH5jA6hmsktXHYgqqBQUiqua4s50BABkKyAEkmvbRctyQzkH7/64n0A7Lt4zY016hg9NnM6GxWXfm0fiUlev5441W51vEHBRog3XPSmHXMar/1Brr3Ja5HIViFSLxJxiISqS0KRJBNt+tkJ72QmEM/NlogVZq01A+BMUQQ7Ayao9Wim+wn3E2bUN+G6R1uiKQiq1LygFODE1DXraVQKIsgAU5oNxyH+s7Wpzpr7AwWNjpKUolkPX+Co+SsPR8hraHYwqcYcmQRMJNQ1jPdx8VrAUbtinsgH9YJPtp08hXGv1yo854QkCpWBpWHIgeYFqu1nF6p94C3fargzX9BN5OhtbXit3CpBYCcdTKsk933uz9oLuiGEjHTmxs9i4cxIhpHIv76JGQvhhxByEjbmQNxHXLcjbDjI1i0nC9LgSvffJRROGFBAn70xndbDgmHkC4Q3YvP6ecq/cSzIJRTxZgP1nEWzgR/cZUUdoz68ZCoR4UE4HQHPffR1DYQzYcBHEmeMVuqGE23Gjd6DnzWOD2oEnFCiXqZ0ZYvmyRysG17YKIldyhOFHqyHIwaM5mp9kHrl0sAHdHo0zq/cgieAdmEObFnJx2PiqJ346EqYAWAJZi/xBvHlaCi5fwyIGSSDc2WUEQFqgys/mrCXwIerUzxf5Q1JMvCOn6pecsUFmxHoKsOwHqxAYciIOIXsojbjEkCSYdDNC+UugDZfcMUlTb0Y4WtjmL/awX2Ee4K1T95D/mDWReplgdfbEMsWJtLQXkxAqEPxKOoHc4s/8cWnfBk5ifueNBAu4CbA1Akxu4AnhhFrCfOqr9WjQ5FKlKSa9xguEn5h0ojEKKVRxeE6w2TxA45IUlUCN42ZfgLvOHLBQPuC0ILFuGikTXFoY9tZl4/19cS3W1p7BC/3hyAvt2miZQdUJYaEkXjnYkFsw6RGnhwYVxUkhC7TM+aDr7v/LUFBtgQ9VXfKuX8VkJyrJlRJ0M2iaSga4mHWCsUyNTwsewuWJFysRNRJOykFwqXeCczg20U7abjfSxv9WS2qGB1GshwNLCtAxdbCGtG2Y+a9LekMxkY/upnkZUC5yOJvXr3y6iG9SxFEskwfkCwYsyVBUMx1WaSX9GhvSh1aJCFpU7Yg2GpIjAsC/3rj19mFIUEW9UQs5gDMqWq1MQHy1r7xEJ5WmBNM6LquZJHqqJZkCZMSr6zX4rKqRWLVAiazfCC0cP2GseouQ0CCtjDWPQhgSLfQ5i4ImO6frDPfRg+gQeo7REYFiQgr4NVDEgkIDGGWK6VatF5rgj55Ys/9gyFo/LDvRuHsJ0Y1GDx85ZrAP4/eLJz36OIAtPe535vYDsD2iQkCnwTTpxZRQLvPfjJ/IMSjR296jw4ftZ/InxlE/BeeIXexe7fPYZnNUiwzlnqRYplVaMgFzcpIRdZs483/IHyB+zPiYpEm8Q1B5RfQMm0HzPyCrC7uURVfPioI+K5fEKmS6RJIzr0sN8xNcKtpRkxviftb6nBPwvK04scFrFYrUoujMeKuJwvMTbGPHmqGnkJTp4j7j14svvcBqhZfd1HUfZx64+yCV+zWdl8Br26RrftnZ6f9cFbgQA7XYO+VsKkaN8KtIPzg9FX4OsXh/xl1PsYb3ZmdnvIFara+3YjG6Pq2EVN3ys/XmiEFfsJBiuw2Opf0hUFe4ymdJ1SO+ORIRMRiDLrvdo2baYZ8pSbfNiFoqi5gjv20T8LPBh7booCAklRW/p2sO3Z/1ckrTmVH58IJACVDRgK/esHmPY6SD1f6rj81jb80feoN1xMGGaWXk/Q0alzdXEB8+2ZcUJTlWQRsQ7cf2/HyaY7lHBwGxNkOiMP784APnvbyjrU7VGZeUHc0/eJ+Rv0LxykO7QljiCMM9qn4/xeiGa8KhgQ5M8BDezfo/78PXmapgow5el1ec578/xWojM2/a+E/cWEP64/kTye6gjGyTFDMvwvdaSsHvoX/gRwFFATTBrgbiGrQueAWvGn8wQkyOEEgKnnf9+1reN71YBl/CbfG0zJTDosNKZoUdNiPUcUNX/GKmLVizkueipUsQHiISk6hRTcvtB6gKXcg2w9eIIo3EDT2IS8mDe5jBcz6oVrjaaq3Eg63qybuZOf8Vg/F/zof79nRwBjKgt789n0Alte4zxhBXhKYI4sg8RYrWbYJ93XU3WtJjw6M6zwUAqa7yX/AMVtPz3QfXY8zeC4u4pZi2QGvtF6eGy/QRZTKc14ozOwE6GKdQf6UreMTIFIX8+UIenobllIPyHD3clA9rQq687sICYRH5VTQJaTDfQNf5SGedddP2at2rrKLK9KNBh43KJ2OTcTSta0AKk/vufqDUaurWu2yjPwWQl0b43gLP0P1dt/b87SCl0hVXRCpjIxUpLAKfhGruX2Az+d53458K1qI1nk+NutxvYZxbeh8G6o5LWWBlWkEc52hjxl0tTcAFaJsEg8/RDwKbC8jEo3eOtdKZVMmAPlKDrQUj5CyRYpLQDYpP75lcjFoz4THNo9F2gqFtgguhDPt/YNbzwCldNua02uClbLwXzyfh//eLNbtpGUlbVyK52rWQ1eGw13ddnjNpoGBTWvCkPNL7jfDRmz97ujG07rMpR425DSmq8PcKm4vReYoz5nLif9qgTirFjCfV6hTI5wHZ4tlYkp+RgGJIyRa937iQs5wIisSiVwJ+8nDfUA3loYYT8MoyZlEsouW0VUVuZLXSQ/pmEL03i0ZQm2mFjDv7kW2xs7nK3JtAN8F3sKlLLzG1fFC1HUzvul5cvfNCWS7g8vpurFEtQUoKl+UQvLzmio6r2xR9GldAV3/kS8DLCsZ2guysGmTCV7QDEJBuvJvam8WO/D+11B2/4gvbzKALGx+RdGhFwmjK5idmeb5aTHk6JcuRJY6O4u/lNGF19HDqIz50kFuBc3JeoggH9N0TzT3JUVPiEZCFNoO5emOIfmxwI5heuuxuSOpDdPDC2BYAnOREtI8hIstG9deks3lspes3fjYhnWsuG7DlrUTS89KptPJs5ZOfGRi2f5UOp3av2zigsVmzFxs4P8exf9++YhmWRrZqM1S0r2EFMEH8bZEH/XYsS9AoVRq/mM/gl+WSn33q7ZlW1/VQhr+OwVYMQv/XY7/AVL+EDtmcsnt6NfoYppvWWTYfcTvhnrelPz/66U6dZclK3lTBIqgXwGeT4ROWdw/tGPn0mV9O3pXD5YsTZTwIgpkKdxxQaU2Nj1eGTpt44JVwaAYANeNjW3dPHJKxJIMiBdbw4gs6F/U2b14cX//+nXLxy/sdmSFx7yklIlsWlCpn8GZTWw1k9rgF3IrPfTnq7hbuXu5x7lnuFe4N3Avnzhj5WIP7rcAWu3yldaDcuuBdNKD+Yb9AjvyzXXO33i7dMz9f+trj70fTM9PkulHzBk+zO2FbGew3Yfm7byT7nd9sODg0EmeNt68A/z2b96SbV6luzHvBhKOd3QOmHgOkrrl5PgcmNnMXBFwQYMlQKWnm9DG4yd9UQsA8vQ7ucnHin6KyvQhPJ56MR+3n7uSeJpT/RrBj68z4pgn0dz1DKL6fBKegaVw76xDrIIS9S8v96FyyUMKKPfBQr6JmukZEmssnryMaBgZvtDyQFgGvyt2SbxjSVrA4PX1qyQzKgbtzq6JPktBQVvU8elAeOnuhZIZkYIW5jGUbFENajImiqWVSwZsKEpLYzkzqqkxJxBJ2WdLfNf2+uWTpcnC0rVCe0rLjfAreEQea40fXh3Tvaeitk8/DH4uj5esFA8k1Vp9sQ2CbSl0tdy/8pROO4lPKtai8/aOa8DOJnn3XFVsV8KENzpt974hSUdJtf2UNSnHETT+jMOJ79+++T3dsQjqlfJt0ZKW64bwDPo8Y9W5Vy21Ugizc9Y/AbPsyYhv0fgomyKVDWVguDU+xlvSMJ/WEmG6GNgsS3MFjVjpiNaTa9zQ3tPdDh6xTNOqgwWWrls/tDTNwr+3DMNCmhZO243353v7C/A9bf2NXWbcggg8a0Ut/OcuFay4SfGLOXQIATweipibXM/t4c7mLuFu4m7GXxaiK8MoHCa0ME8pYygD6QlIDx1yWGNLBz7FqGe05R5YD3nZfGoMI8BAntGCprvyNWLl+XfR/BRhUHKy0fBAT97y9rL0sJkulosp00yVyu1pSdluxHLFrCGqSNRjeVqC4m8C4XRbOhygu5D2z6ocSupxxVEVvI8F1d35/ny+31ZkCcSIZSn2LpIxStR4xd/DD8a687ISzHX3s3049qdQ87WGkXYs981gLq7pWMSQrPZ8TDdIyT7bSkUCeBji15PmXzf3WjUIgBqM3RPL5wfywFLCdwSj0fZY7IzW9/KCZDK+74/87Sjo8X1kZSplJdGibqGQ8HS+55RD1mkClOqXvfP8rt2NvqlKZQq+OjUMGu8HTjoUSoWfSnenAcCb20P4OB2CP6pUTm387tRhUN0MNfcWkjbtdbJxfx9JpyNgCdm6vzcdx3ydbLj/F1knyIsAAHicY2BkYGAAYrv7dnrx/DZfGbhZGEDghsO8jQj6fy/LJOYSIJeDgQkkCgAjQAqrAHicY2BkYGBu+N/AEMOqxAAELJMYGBlQAKM6AFVxA0YAeJxjYWBgYBnFo3gUj+JBhFmVGBgArlwEwAAAAAAAAAAAfACqAOABTAHAAfoCWgKuAuQDSAP0BDQEhgTIBR4FVgWgBegGygb6Bz4HZAemCAIIUAjcCSwJpAnWCjQKpgsyC3QLzAxEDOINkA4ADm4PBg+iD8YQfBFCEeQSEhKUE8YUIBSQFRAVlhYiFmIW+Bc4F4gX3BgKGG4YnBj6GaYaEhqwG1gb1hxEHLIdAB10HbIeMh76H4If7iBYILIhcCH2IlYivCNUI/YkbCWQJlwm+idAJ3Yn0igAKEAolijEKTgpxCnqKqArPCv2LLIs/C00LYItvC4ULnAu4C84L6Iv9DB+MOQxXDIsMy4zqjQYNEo09jU4NhY2cDbQNz43+DhgOKA5BDk8OcA6TjrOOyg7rjwOPIA9Aj2kPgg+gD7YPyY/eD/6QKBBbkG4QlpCsEMKQ45D5EQ4RH5E1kWMRj5Gzkc0R8BIekjySZhJ7koeSnxKxks8S9RMFEy4TOpNSE3iTyJPiFAqUJZRDlFgUdxSRFLeU0hT3lREVOBVVFX8VixWSlZ0VqxXFFfOWBpYeFjsWbZaBFpGWpRa3lscW1pbiFwUXL5c1l0wXYpd7F6YXwZfVF+uYDZg4mHGYjBjUGRsZMplZmXwZmRnEmdsZ9ZoMGhKaGRonGk8aVhpmGn8alZqzms6a/JsamzWbY5uKm6abyBvzm/scBxwvnEMcYByAnKecxhzpnQOdGp05HVmdaB18nZadxh4HniUeLh45nmeeh56gHqmewx8GnxifJB9Dn2IfiJ+TH7Uf0B/uoBYgPKBQoJqgyyDcoQ8hIp4nGNgZGBgVGe4x8DPAAJMQMwFhAwM/8F8BgAjigIsAHicZY9NTsMwEIVf+gekEqqoYIfkBWIBKP0Rq25YVGr3XXTfpk6bKokjx63UA3AejsAJOALcgDvwSCebNpbH37x5Y08A3OAHHo7fLfeRPVwyO3INF7gXrlN/EG6QX4SbaONVuEX9TdjHM6bCbXRheYPXuGL2hHdhDx18CNdwjU/hOvUv4Qb5W7iJO/wKt9Dx6sI+5l5XuI1HL/bHVi+cXqnlQcWhySKTOb+CmV7vkoWt0uqca1vEJlODoF9JU51pW91T7NdD5yIVWZOqCas6SYzKrdnq0AUb5/JRrxeJHoQm5Vhj/rbGAo5xBYUlDowxQhhkiMro6DtVZvSvsUPCXntWPc3ndFsU1P9zhQEC9M9cU7qy0nk6T4E9XxtSdXQrbsuelDSRXs1JErJCXta2VELqATZlV44RelzRiT8oZ0j/AAlabsgAAAB4nG1WBZTruBWdqxiTzMyH3b/MWNi2u2VmZuZOZVtJtLEtjyQnM1tmZmZmZmZmZmZm5grsyd+ezjkT3SfJ0tN99z1pjaz5v+Ha//3DWSAYIECICDESpBhihDHWsYFN7MN+HMBBHIEjcQhH4Wgcg2NxHI7HCTgRJ+FknIJTcRpOxxk406x1Ni6Ci+JiuDjOwSVwSVwK5+I8XBqXwWVxOVweV8AVcSVcGVfBVXE1XB3XwDVxLVwb18F1cT1cHzfADXEj3Bg3wU1xM9wct8AtcSvcGrfBbXE73B53wB1xJ9wZd8FdcTds4e6gyJCjAMMEU8zAcT7mKFGhhkCDbUgoaLRYYIkd7OIC3AP3xL1wb9wH98X9cH88AA/Eg/BgPAQPxcPwcDwCj8Sj8Gg8Bo/F4/B4PAFPxJPwZDwFT8XT8HQ8A8/Es/BsPAfPxfPwfLwAL8SL8GK8BC/Fy/ByvAKvxKvwarwGr8Xr8Hq8AW/Em/BmvAVvxdvwdrwD78S78G68B+/F+/B+fAAfxIfwYXwEH8XH8HF8Ap/Ep/BpfAafxefweXwBX8SX8GV8BV/F1/B1fAPfxLfwbXwH38X38H38AD/Ej/Bj/AQ/xc/wc/wCv8Sv8Gv8Br/F7/B7/AF/xJ/wZ/wFf8Xf8Hf8A//Ev/Bv/IesERBCBiQgIYlITBKSkiEZkTFZJxtkk+wj+8kBcpAcQY4kh8hR5GhyDDmWHEeOJyeQE8lJ5GRyCjmVnEZOJ2eQM8lZ5Oy1IW0ayXJONQvzGcvnYV4KxQJWcB2ySpzP0wldCDnhZRk6FJeCFryejkuRU81FbYeS3gibmajZhhRtXbj17OhwZXYjdo/DRqzpRySfzvRqxJmRYlTms0DTHZ5oXrkvAwuitp6IskiWVDo3AguGOa2YpNaOPBzloqpY7daNO5yUfO4XsmBfLTSf8NWBxod3hEIWTCaKdltbEBes5AvTyxa0bA19g4buBorVRaBmook0z+dMBxnN50lOVU4LppKCq1yYj8yeSgeVkCwwI3WimNaGUjXebpna47Q3Erug23giZDVoeB4ZSzOZToTQjeS1HmjRJE1bloVY1pEFbRM68mLJJpKp2cjuRg2jghdD4zvT7iyRGTY8BzmVOtqWuSiY6ap4XUR+UtxIYSayYCYqlthpjp7+JM5RO+S4rZhSdMpGtCjMnioTYm6OWpsfkc9NsGwzWPAmXDKeiYTmmi+43l2fSG6IM1/ZVdI9a+zRhFaiVZE3wqkQhUqVcS635MRspynN0YyfzLCvN9V2S42ie+1F3h4d1h06aY3db7dn0hsD83/oQmIQMuNuzqjbqYtEWQRTo4NUsqKhNtbrez45LhSveEnlxirB3EbcrOhWsGBkVjeSdcvHHR5bL6mc+um9ERvWDPlFuBA8Z6n7dU71FJnMDJbG61CZ+SxaulGyZGlpVUBbLUYO+fP4XhdJnyJSaFsCXHecUSeEzUlJ1cx1+Qxd2aJh9dCnpZVyrJhcGI8CJaQOnAYrkRnVDH3jDpyLZnc9NzxrO8FFes8aWsr9iSIPR22jNPUsxB1OMprturUsSDNp9OwKk0Mb+cyyUhvhuQKyMkfGfT1jyue/x+PcpIORn6e5N6IJq2jJkjnbzYShO7BWXLOlnTUwrUsycyCdWuAyLDGbO6kFFgwyWqSeUyOlcCLyVg27IJk563tD7gsjDpU2lPvaFDoUmwR3kekyl0oploYqo72S1SqpqPTbWTDqZN/lcsNoGdIya6thw0TjmY88HHVB6qdSLgOb2UOPXUA0FTuciqY1AuI7vF6nWpvVO02ne5arqB37cYfXbdvWJp+72HZWYLgtTOUobVLLQd7qsKJTno9tbezVnzQl9aFVRlyxibZj3LTh1ORmM6AmovaDrirNhDvywLRBI5QNQsFFJnZSl8lOgm1jr6p0KbnPvdChcT/TM97W+czmzJyZerwwCqYTNu4Lkz+I7OQaOpS6AuRyryt3Dndl0s1T1oWRakSt/M0Zd9gIObM1MF4y16ZL1tYeubvWzt3wyKaaU4FDWevJ0WxHD70DNuPTqlVeLJse7RUrW9CLfVpyWk9L1ifcRt/RuvvkgOPKqtla59gENYWt1qHm2ukiFz46kYfrdlGXF56Y3krsvdTlOK83V7OcO8Ocy7xTooebK1W5GQf/x3a+rfr698fGhbsi56VKed69SIJJ67KCl534bWkaO7a6DE56I61YQUsXLIcS0+djakEnrrjDgW3TBS+Yq9yhQwHb4TpRc+4fHhaMK/P02c28dEeteeEYf3z98jjpJ2zsXRpbLsaqzVQueeNu++4050ZTrmdtFk1LkVEzp3sjuA9sJmz1t7m5l+xta3JwvX+MuGWHLnMc3G/Ta6u7Yfye3fvFGQd8zd3y9G/1b415YErR3FzW9QU8ZmXJG8XibbllL4e4MEqatTTg+crn8waZrtfW/gthnmJTAAAA') format('woff'), + url('//at.alicdn.com/t/font_533566_yfq2d9wdij.ttf?t=1545239985831') format('truetype'), + /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ + url('//at.alicdn.com/t/font_533566_yfq2d9wdij.svg?t=1545239985831#cuIconfont') format('svg'); + /* iOS 4.1- */ +} + +.cuIcon-appreciate:before { + content: "\e644"; +} + +.cuIcon-check:before { + content: "\e645"; +} + +.cuIcon-close:before { + content: "\e646"; +} + +.cuIcon-edit:before { + content: "\e649"; +} + +.cuIcon-emoji:before { + content: "\e64a"; +} + +.cuIcon-favorfill:before { + content: "\e64b"; +} + +.cuIcon-favor:before { + content: "\e64c"; +} + +.cuIcon-loading:before { + content: "\e64f"; +} + +.cuIcon-locationfill:before { + content: "\e650"; +} + +.cuIcon-location:before { + content: "\e651"; +} + +.cuIcon-phone:before { + content: "\e652"; +} + +.cuIcon-roundcheckfill:before { + content: "\e656"; +} + +.cuIcon-roundcheck:before { + content: "\e657"; +} + +.cuIcon-roundclosefill:before { + content: "\e658"; +} + +.cuIcon-roundclose:before { + content: "\e659"; +} + +.cuIcon-roundrightfill:before { + content: "\e65a"; +} + +.cuIcon-roundright:before { + content: "\e65b"; +} + +.cuIcon-search:before { + content: "\e65c"; +} + +.cuIcon-taxi:before { + content: "\e65d"; +} + +.cuIcon-timefill:before { + content: "\e65e"; +} + +.cuIcon-time:before { + content: "\e65f"; +} + +.cuIcon-unfold:before { + content: "\e661"; +} + +.cuIcon-warnfill:before { + content: "\e662"; +} + +.cuIcon-warn:before { + content: "\e663"; +} + +.cuIcon-camerafill:before { + content: "\e664"; +} + +.cuIcon-camera:before { + content: "\e665"; +} + +.cuIcon-commentfill:before { + content: "\e666"; +} + +.cuIcon-comment:before { + content: "\e667"; +} + +.cuIcon-likefill:before { + content: "\e668"; +} + +.cuIcon-like:before { + content: "\e669"; +} + +.cuIcon-notificationfill:before { + content: "\e66a"; +} + +.cuIcon-notification:before { + content: "\e66b"; +} + +.cuIcon-order:before { + content: "\e66c"; +} + +.cuIcon-samefill:before { + content: "\e66d"; +} + +.cuIcon-same:before { + content: "\e66e"; +} + +.cuIcon-deliver:before { + content: "\e671"; +} + +.cuIcon-evaluate:before { + content: "\e672"; +} + +.cuIcon-pay:before { + content: "\e673"; +} + +.cuIcon-send:before { + content: "\e675"; +} + +.cuIcon-shop:before { + content: "\e676"; +} + +.cuIcon-ticket:before { + content: "\e677"; +} + +.cuIcon-back:before { + content: "\e679"; +} + +.cuIcon-cascades:before { + content: "\e67c"; +} + +.cuIcon-discover:before { + content: "\e67e"; +} + +.cuIcon-list:before { + content: "\e682"; +} + +.cuIcon-more:before { + content: "\e684"; +} + +.cuIcon-scan:before { + content: "\e689"; +} + +.cuIcon-settings:before { + content: "\e68a"; +} + +.cuIcon-questionfill:before { + content: "\e690"; +} + +.cuIcon-question:before { + content: "\e691"; +} + +.cuIcon-shopfill:before { + content: "\e697"; +} + +.cuIcon-form:before { + content: "\e699"; +} + +.cuIcon-pic:before { + content: "\e69b"; +} + +.cuIcon-filter:before { + content: "\e69c"; +} + +.cuIcon-footprint:before { + content: "\e69d"; +} + +.cuIcon-top:before { + content: "\e69e"; +} + +.cuIcon-pulldown:before { + content: "\e69f"; +} + +.cuIcon-pullup:before { + content: "\e6a0"; +} + +.cuIcon-right:before { + content: "\e6a3"; +} + +.cuIcon-refresh:before { + content: "\e6a4"; +} + +.cuIcon-moreandroid:before { + content: "\e6a5"; +} + +.cuIcon-deletefill:before { + content: "\e6a6"; +} + +.cuIcon-refund:before { + content: "\e6ac"; +} + +.cuIcon-cart:before { + content: "\e6af"; +} + +.cuIcon-qrcode:before { + content: "\e6b0"; +} + +.cuIcon-remind:before { + content: "\e6b2"; +} + +.cuIcon-delete:before { + content: "\e6b4"; +} + +.cuIcon-profile:before { + content: "\e6b7"; +} + +.cuIcon-home:before { + content: "\e6b8"; +} + +.cuIcon-cartfill:before { + content: "\e6b9"; +} + +.cuIcon-discoverfill:before { + content: "\e6ba"; +} + +.cuIcon-homefill:before { + content: "\e6bb"; +} + +.cuIcon-message:before { + content: "\e6bc"; +} + +.cuIcon-addressbook:before { + content: "\e6bd"; +} + +.cuIcon-link:before { + content: "\e6bf"; +} + +.cuIcon-lock:before { + content: "\e6c0"; +} + +.cuIcon-unlock:before { + content: "\e6c2"; +} + +.cuIcon-vip:before { + content: "\e6c3"; +} + +.cuIcon-weibo:before { + content: "\e6c4"; +} + +.cuIcon-activity:before { + content: "\e6c5"; +} + +.cuIcon-friendaddfill:before { + content: "\e6c9"; +} + +.cuIcon-friendadd:before { + content: "\e6ca"; +} + +.cuIcon-friendfamous:before { + content: "\e6cb"; +} + +.cuIcon-friend:before { + content: "\e6cc"; +} + +.cuIcon-goods:before { + content: "\e6cd"; +} + +.cuIcon-selection:before { + content: "\e6ce"; +} + +.cuIcon-explore:before { + content: "\e6d2"; +} + +.cuIcon-present:before { + content: "\e6d3"; +} + +.cuIcon-squarecheckfill:before { + content: "\e6d4"; +} + +.cuIcon-square:before { + content: "\e6d5"; +} + +.cuIcon-squarecheck:before { + content: "\e6d6"; +} + +.cuIcon-round:before { + content: "\e6d7"; +} + +.cuIcon-roundaddfill:before { + content: "\e6d8"; +} + +.cuIcon-roundadd:before { + content: "\e6d9"; +} + +.cuIcon-add:before { + content: "\e6da"; +} + +.cuIcon-notificationforbidfill:before { + content: "\e6db"; +} + +.cuIcon-explorefill:before { + content: "\e6dd"; +} + +.cuIcon-fold:before { + content: "\e6de"; +} + +.cuIcon-game:before { + content: "\e6df"; +} + +.cuIcon-redpacket:before { + content: "\e6e0"; +} + +.cuIcon-selectionfill:before { + content: "\e6e1"; +} + +.cuIcon-similar:before { + content: "\e6e2"; +} + +.cuIcon-appreciatefill:before { + content: "\e6e3"; +} + +.cuIcon-infofill:before { + content: "\e6e4"; +} + +.cuIcon-info:before { + content: "\e6e5"; +} + +.cuIcon-forwardfill:before { + content: "\e6ea"; +} + +.cuIcon-forward:before { + content: "\e6eb"; +} + +.cuIcon-rechargefill:before { + content: "\e6ec"; +} + +.cuIcon-recharge:before { + content: "\e6ed"; +} + +.cuIcon-vipcard:before { + content: "\e6ee"; +} + +.cuIcon-voice:before { + content: "\e6ef"; +} + +.cuIcon-voicefill:before { + content: "\e6f0"; +} + +.cuIcon-friendfavor:before { + content: "\e6f1"; +} + +.cuIcon-wifi:before { + content: "\e6f2"; +} + +.cuIcon-share:before { + content: "\e6f3"; +} + +.cuIcon-wefill:before { + content: "\e6f4"; +} + +.cuIcon-we:before { + content: "\e6f5"; +} + +.cuIcon-lightauto:before { + content: "\e6f6"; +} + +.cuIcon-lightforbid:before { + content: "\e6f7"; +} + +.cuIcon-lightfill:before { + content: "\e6f8"; +} + +.cuIcon-camerarotate:before { + content: "\e6f9"; +} + +.cuIcon-light:before { + content: "\e6fa"; +} + +.cuIcon-barcode:before { + content: "\e6fb"; +} + +.cuIcon-flashlightclose:before { + content: "\e6fc"; +} + +.cuIcon-flashlightopen:before { + content: "\e6fd"; +} + +.cuIcon-searchlist:before { + content: "\e6fe"; +} + +.cuIcon-service:before { + content: "\e6ff"; +} + +.cuIcon-sort:before { + content: "\e700"; +} + +.cuIcon-down:before { + content: "\e703"; +} + +.cuIcon-mobile:before { + content: "\e704"; +} + +.cuIcon-mobilefill:before { + content: "\e705"; +} + +.cuIcon-copy:before { + content: "\e706"; +} + +.cuIcon-countdownfill:before { + content: "\e707"; +} + +.cuIcon-countdown:before { + content: "\e708"; +} + +.cuIcon-noticefill:before { + content: "\e709"; +} + +.cuIcon-notice:before { + content: "\e70a"; +} + +.cuIcon-upstagefill:before { + content: "\e70e"; +} + +.cuIcon-upstage:before { + content: "\e70f"; +} + +.cuIcon-babyfill:before { + content: "\e710"; +} + +.cuIcon-baby:before { + content: "\e711"; +} + +.cuIcon-brandfill:before { + content: "\e712"; +} + +.cuIcon-brand:before { + content: "\e713"; +} + +.cuIcon-choicenessfill:before { + content: "\e714"; +} + +.cuIcon-choiceness:before { + content: "\e715"; +} + +.cuIcon-clothesfill:before { + content: "\e716"; +} + +.cuIcon-clothes:before { + content: "\e717"; +} + +.cuIcon-creativefill:before { + content: "\e718"; +} + +.cuIcon-creative:before { + content: "\e719"; +} + +.cuIcon-female:before { + content: "\e71a"; +} + +.cuIcon-keyboard:before { + content: "\e71b"; +} + +.cuIcon-male:before { + content: "\e71c"; +} + +.cuIcon-newfill:before { + content: "\e71d"; +} + +.cuIcon-new:before { + content: "\e71e"; +} + +.cuIcon-pullleft:before { + content: "\e71f"; +} + +.cuIcon-pullright:before { + content: "\e720"; +} + +.cuIcon-rankfill:before { + content: "\e721"; +} + +.cuIcon-rank:before { + content: "\e722"; +} + +.cuIcon-bad:before { + content: "\e723"; +} + +.cuIcon-cameraadd:before { + content: "\e724"; +} + +.cuIcon-focus:before { + content: "\e725"; +} + +.cuIcon-friendfill:before { + content: "\e726"; +} + +.cuIcon-cameraaddfill:before { + content: "\e727"; +} + +.cuIcon-apps:before { + content: "\e729"; +} + +.cuIcon-paintfill:before { + content: "\e72a"; +} + +.cuIcon-paint:before { + content: "\e72b"; +} + +.cuIcon-picfill:before { + content: "\e72c"; +} + +.cuIcon-refresharrow:before { + content: "\e72d"; +} + +.cuIcon-colorlens:before { + content: "\e6e6"; +} + +.cuIcon-markfill:before { + content: "\e730"; +} + +.cuIcon-mark:before { + content: "\e731"; +} + +.cuIcon-presentfill:before { + content: "\e732"; +} + +.cuIcon-repeal:before { + content: "\e733"; +} + +.cuIcon-album:before { + content: "\e734"; +} + +.cuIcon-peoplefill:before { + content: "\e735"; +} + +.cuIcon-people:before { + content: "\e736"; +} + +.cuIcon-servicefill:before { + content: "\e737"; +} + +.cuIcon-repair:before { + content: "\e738"; +} + +.cuIcon-file:before { + content: "\e739"; +} + +.cuIcon-repairfill:before { + content: "\e73a"; +} + +.cuIcon-taoxiaopu:before { + content: "\e73b"; +} + +.cuIcon-weixin:before { + content: "\e612"; +} + +.cuIcon-attentionfill:before { + content: "\e73c"; +} + +.cuIcon-attention:before { + content: "\e73d"; +} + +.cuIcon-commandfill:before { + content: "\e73e"; +} + +.cuIcon-command:before { + content: "\e73f"; +} + +.cuIcon-communityfill:before { + content: "\e740"; +} + +.cuIcon-community:before { + content: "\e741"; +} + +.cuIcon-read:before { + content: "\e742"; +} + +.cuIcon-calendar:before { + content: "\e74a"; +} + +.cuIcon-cut:before { + content: "\e74b"; +} + +.cuIcon-magic:before { + content: "\e74c"; +} + +.cuIcon-backwardfill:before { + content: "\e74d"; +} + +.cuIcon-playfill:before { + content: "\e74f"; +} + +.cuIcon-stop:before { + content: "\e750"; +} + +.cuIcon-tagfill:before { + content: "\e751"; +} + +.cuIcon-tag:before { + content: "\e752"; +} + +.cuIcon-group:before { + content: "\e753"; +} + +.cuIcon-all:before { + content: "\e755"; +} + +.cuIcon-backdelete:before { + content: "\e756"; +} + +.cuIcon-hotfill:before { + content: "\e757"; +} + +.cuIcon-hot:before { + content: "\e758"; +} + +.cuIcon-post:before { + content: "\e759"; +} + +.cuIcon-radiobox:before { + content: "\e75b"; +} + +.cuIcon-rounddown:before { + content: "\e75c"; +} + +.cuIcon-upload:before { + content: "\e75d"; +} + +.cuIcon-writefill:before { + content: "\e760"; +} + +.cuIcon-write:before { + content: "\e761"; +} + +.cuIcon-radioboxfill:before { + content: "\e763"; +} + +.cuIcon-punch:before { + content: "\e764"; +} + +.cuIcon-shake:before { + content: "\e765"; +} + +.cuIcon-move:before { + content: "\e768"; +} + +.cuIcon-safe:before { + content: "\e769"; +} + +.cuIcon-activityfill:before { + content: "\e775"; +} + +.cuIcon-crownfill:before { + content: "\e776"; +} + +.cuIcon-crown:before { + content: "\e777"; +} + +.cuIcon-goodsfill:before { + content: "\e778"; +} + +.cuIcon-messagefill:before { + content: "\e779"; +} + +.cuIcon-profilefill:before { + content: "\e77a"; +} + +.cuIcon-sound:before { + content: "\e77b"; +} + +.cuIcon-sponsorfill:before { + content: "\e77c"; +} + +.cuIcon-sponsor:before { + content: "\e77d"; +} + +.cuIcon-upblock:before { + content: "\e77e"; +} + +.cuIcon-weblock:before { + content: "\e77f"; +} + +.cuIcon-weunblock:before { + content: "\e780"; +} + +.cuIcon-my:before { + content: "\e78b"; +} + +.cuIcon-myfill:before { + content: "\e78c"; +} + +.cuIcon-emojifill:before { + content: "\e78d"; +} + +.cuIcon-emojiflashfill:before { + content: "\e78e"; +} + +.cuIcon-flashbuyfill:before { + content: "\e78f"; +} + +.cuIcon-text:before { + content: "\e791"; +} + +.cuIcon-goodsfavor:before { + content: "\e794"; +} + +.cuIcon-musicfill:before { + content: "\e795"; +} + +.cuIcon-musicforbidfill:before { + content: "\e796"; +} + +.cuIcon-card:before { + content: "\e624"; +} + +.cuIcon-triangledownfill:before { + content: "\e79b"; +} + +.cuIcon-triangleupfill:before { + content: "\e79c"; +} + +.cuIcon-roundleftfill-copy:before { + content: "\e79e"; +} + +.cuIcon-font:before { + content: "\e76a"; +} + +.cuIcon-title:before { + content: "\e82f"; +} + +.cuIcon-recordfill:before { + content: "\e7a4"; +} + +.cuIcon-record:before { + content: "\e7a6"; +} + +.cuIcon-cardboardfill:before { + content: "\e7a9"; +} + +.cuIcon-cardboard:before { + content: "\e7aa"; +} + +.cuIcon-formfill:before { + content: "\e7ab"; +} + +.cuIcon-coin:before { + content: "\e7ac"; +} + +.cuIcon-cardboardforbid:before { + content: "\e7af"; +} + +.cuIcon-circlefill:before { + content: "\e7b0"; +} + +.cuIcon-circle:before { + content: "\e7b1"; +} + +.cuIcon-attentionforbid:before { + content: "\e7b2"; +} + +.cuIcon-attentionforbidfill:before { + content: "\e7b3"; +} + +.cuIcon-attentionfavorfill:before { + content: "\e7b4"; +} + +.cuIcon-attentionfavor:before { + content: "\e7b5"; +} + +.cuIcon-titles:before { + content: "\e701"; +} + +.cuIcon-icloading:before { + content: "\e67a"; +} + +.cuIcon-full:before { + content: "\e7bc"; +} + +.cuIcon-mail:before { + content: "\e7bd"; +} + +.cuIcon-peoplelist:before { + content: "\e7be"; +} + +.cuIcon-goodsnewfill:before { + content: "\e7bf"; +} + +.cuIcon-goodsnew:before { + content: "\e7c0"; +} + +.cuIcon-medalfill:before { + content: "\e7c1"; +} + +.cuIcon-medal:before { + content: "\e7c2"; +} + +.cuIcon-newsfill:before { + content: "\e7c3"; +} + +.cuIcon-newshotfill:before { + content: "\e7c4"; +} + +.cuIcon-newshot:before { + content: "\e7c5"; +} + +.cuIcon-news:before { + content: "\e7c6"; +} + +.cuIcon-videofill:before { + content: "\e7c7"; +} + +.cuIcon-video:before { + content: "\e7c8"; +} + +.cuIcon-exit:before { + content: "\e7cb"; +} + +.cuIcon-skinfill:before { + content: "\e7cc"; +} + +.cuIcon-skin:before { + content: "\e7cd"; +} + +.cuIcon-moneybagfill:before { + content: "\e7ce"; +} + +.cuIcon-usefullfill:before { + content: "\e7cf"; +} + +.cuIcon-usefull:before { + content: "\e7d0"; +} + +.cuIcon-moneybag:before { + content: "\e7d1"; +} + +.cuIcon-redpacket_fill:before { + content: "\e7d3"; +} + +.cuIcon-subscription:before { + content: "\e7d4"; +} + +.cuIcon-loading1:before { + content: "\e633"; +} + +.cuIcon-github:before { + content: "\e692"; +} + +.cuIcon-global:before { + content: "\e7eb"; +} + +.cuIcon-settingsfill:before { + content: "\e6ab"; +} + +.cuIcon-back_android:before { + content: "\e7ed"; +} + +.cuIcon-expressman:before { + content: "\e7ef"; +} + +.cuIcon-evaluate_fill:before { + content: "\e7f0"; +} + +.cuIcon-group_fill:before { + content: "\e7f5"; +} + +.cuIcon-play_forward_fill:before { + content: "\e7f6"; +} + +.cuIcon-deliver_fill:before { + content: "\e7f7"; +} + +.cuIcon-notice_forbid_fill:before { + content: "\e7f8"; +} + +.cuIcon-fork:before { + content: "\e60c"; +} + +.cuIcon-pick:before { + content: "\e7fa"; +} + +.cuIcon-wenzi:before { + content: "\e6a7"; +} + +.cuIcon-ellipse:before { + content: "\e600"; +} + +.cuIcon-qr_code:before { + content: "\e61b"; +} + +.cuIcon-dianhua:before { + content: "\e64d"; +} + +.cuIcon-cuIcon:before { + content: "\e602"; +} + +.cuIcon-loading2:before { + content: "\e7f1"; +} + +.cuIcon-btn:before { + content: "\e601"; +} diff --git a/LA24030_LuLiPackageLine_Pda/colorui/main.css b/LA24030_LuLiPackageLine_Pda/colorui/main.css new file mode 100644 index 0000000..4685ef6 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/colorui/main.css @@ -0,0 +1,3917 @@ +/* + ColorUi for uniApp v2.1.6 | by 鏂囨檽娓� 2019-05-31 10:44:24 + 浠呬緵瀛︿範浜ゆ祦锛屽浣滃畠鐢ㄦ墍鎵垮彈鐨勬硶寰嬭矗浠讳竴姒備笌浣滆�呮棤鍏� + + *浣跨敤ColorUi寮�鍙戞墿灞曚笌鎻掍欢鏃讹紝璇锋敞鏄庡熀浜嶤olorUi寮�鍙� + + 锛圦Q浜ゆ祦缇わ細240787041锛� +*/ + +/* ================== + 鍒濆鍖� + ==================== */ +body { + background-color: #f1f1f1; + font-size: 14px; + color: #333333; + font-family: Helvetica Neue, Helvetica, sans-serif; +} + +view, +scroll-view, +swiper, +button, +input, +textarea, +label, +navigator, +image { + box-sizing: border-box; +} + +.round { + border-radius: 5000upx; +} + +.radius { + border-radius: 6upx; +} + +/* ================== + 鍥剧墖 + ==================== */ + +image { + max-width: 100%; + display: inline-block; + position: relative; + z-index: 0; +} + +image.loading::before { + content: ""; + background-color: #f5f5f5; + display: block; + position: absolute; + width: 100%; + height: 100%; + z-index: -2; +} + +image.loading::after { + content: "\e7f1"; + font-family: "cuIcon"; + position: absolute; + top: 0; + left: 0; + width: 32upx; + height: 32upx; + line-height: 32upx; + right: 0; + bottom: 0; + z-index: -1; + font-size: 32upx; + margin: auto; + color: #ccc; + -webkit-animation: cuIcon-spin 2s infinite linear; + animation: cuIcon-spin 2s infinite linear; + display: block; +} + +.response { + width: 100%; +} + +/* ================== + 寮�鍏� + ==================== */ + +switch, +checkbox, +radio { + position: relative; +} + +switch::after, +switch::before { + font-family: "cuIcon"; + content: "\e645"; + position: absolute; + color: #ffffff !important; + top: 0%; + left: 0upx; + font-size: 26upx; + line-height: 26px; + width: 50%; + text-align: center; + pointer-events: none; + transform: scale(0, 0); + transition: all 0.3s ease-in-out 0s; + z-index: 9; + bottom: 0; + height: 26px; + margin: auto; +} + +switch::before { + content: "\e646"; + right: 0; + transform: scale(1, 1); + left: auto; +} + +switch[checked]::after, +switch.checked::after { + transform: scale(1, 1); +} + +switch[checked]::before, +switch.checked::before { + transform: scale(0, 0); +} + +/* #ifndef MP-ALIPAY */ +radio::before, +checkbox::before { + font-family: "cuIcon"; + content: "\e645"; + position: absolute; + color: #ffffff !important; + top: 50%; + margin-top: -8px; + right: 5px; + font-size: 32upx; + line-height: 16px; + pointer-events: none; + transform: scale(1, 1); + transition: all 0.3s ease-in-out 0s; + z-index: 9; +} + +radio .wx-radio-input, +checkbox .wx-checkbox-input, +radio .uni-radio-input, +checkbox .uni-checkbox-input { + margin: 0; + width: 24px; + height: 24px; +} + +checkbox.round .wx-checkbox-input, +checkbox.round .uni-checkbox-input { + border-radius: 100upx; +} + +/* #endif */ + +switch[checked]::before { + transform: scale(0, 0); +} + +switch .wx-switch-input, +switch .uni-switch-input { + border: none; + padding: 0 24px; + width: 48px; + height: 26px; + margin: 0; + border-radius: 100upx; +} + +switch .wx-switch-input:not([class*="bg-"]), +switch .uni-switch-input:not([class*="bg-"]) { + background: #8799a3 !important; +} + +switch .wx-switch-input::after, +switch .uni-switch-input::after { + margin: auto; + width: 26px; + height: 26px; + border-radius: 100upx; + left: 0upx; + top: 0upx; + bottom: 0upx; + position: absolute; + transform: scale(0.9, 0.9); + transition: all 0.1s ease-in-out 0s; +} + +switch .wx-switch-input.wx-switch-input-checked::after, +switch .uni-switch-input.uni-switch-input-checked::after { + margin: auto; + left: 22px; + box-shadow: none; + transform: scale(0.9, 0.9); +} + +radio-group { + display: inline-block; +} + + + +switch.radius .wx-switch-input::after, +switch.radius .wx-switch-input, +switch.radius .wx-switch-input::before, +switch.radius .uni-switch-input::after, +switch.radius .uni-switch-input, +switch.radius .uni-switch-input::before { + border-radius: 10upx; +} + +/* switch .wx-switch-input::before, +radio.radio::before, +checkbox .wx-checkbox-input::before, +radio .wx-radio-input::before, +switch .uni-switch-input::before, +radio.radio::before, +checkbox .uni-checkbox-input::before, +radio .uni-radio-input::before { + display: none; +} */ + +radio.radio[checked]::after, +radio.radio .uni-radio-input-checked::after { + content: ""; + background-color: transparent; + display: block; + position: absolute; + width: 8px; + height: 8px; + z-index: 999; + top: 0upx; + left: 0upx; + right: 0; + bottom: 0; + margin: auto; + border-radius: 200upx; + /* #ifndef MP */ + border: 7px solid #ffffff !important; + /* #endif */ + + /* #ifdef MP */ + border: 8px solid #ffffff !important; + /* #endif */ +} + +.switch-sex::after { + content: "\e71c"; +} + +.switch-sex::before { + content: "\e71a"; +} + +.switch-sex .wx-switch-input, +.switch-sex .uni-switch-input { + background: #e54d42 !important; + border-color: #e54d42 !important; +} + +.switch-sex[checked] .wx-switch-input, +.switch-sex.checked .uni-switch-input { + background: #0081ff !important; + border-color: #0081ff !important; +} + +switch.red[checked] .wx-switch-input.wx-switch-input-checked, +checkbox.red[checked] .wx-checkbox-input, +radio.red[checked] .wx-radio-input, +switch.red.checked .uni-switch-input.uni-switch-input-checked, +checkbox.red.checked .uni-checkbox-input, +radio.red.checked .uni-radio-input { + background-color: #e54d42 !important; + border-color: #e54d42 !important; + color: #ffffff !important; +} + +switch.orange[checked] .wx-switch-input, +checkbox.orange[checked] .wx-checkbox-input, +radio.orange[checked] .wx-radio-input, +switch.orange.checked .uni-switch-input, +checkbox.orange.checked .uni-checkbox-input, +radio.orange.checked .uni-radio-input { + background-color: #f37b1d !important; + border-color: #f37b1d !important; + color: #ffffff !important; +} + +switch.yellow[checked] .wx-switch-input, +checkbox.yellow[checked] .wx-checkbox-input, +radio.yellow[checked] .wx-radio-input, +switch.yellow.checked .uni-switch-input, +checkbox.yellow.checked .uni-checkbox-input, +radio.yellow.checked .uni-radio-input { + background-color: #fbbd08 !important; + border-color: #fbbd08 !important; + color: #333333 !important; +} + +switch.olive[checked] .wx-switch-input, +checkbox.olive[checked] .wx-checkbox-input, +radio.olive[checked] .wx-radio-input, +switch.olive.checked .uni-switch-input, +checkbox.olive.checked .uni-checkbox-input, +radio.olive.checked .uni-radio-input { + background-color: #8dc63f !important; + border-color: #8dc63f !important; + color: #ffffff !important; +} + +switch.green[checked] .wx-switch-input, +switch[checked] .wx-switch-input, +checkbox.green[checked] .wx-checkbox-input, +checkbox[checked] .wx-checkbox-input, +radio.green[checked] .wx-radio-input, +radio[checked] .wx-radio-input, +switch.green.checked .uni-switch-input, +switch.checked .uni-switch-input, +checkbox.green.checked .uni-checkbox-input, +checkbox.checked .uni-checkbox-input, +radio.green.checked .uni-radio-input, +radio.checked .uni-radio-input { + background-color: #39b54a !important; + border-color: #39b54a !important; + color: #ffffff !important; + border-color: #39B54A !important; +} + +switch.cyan[checked] .wx-switch-input, +checkbox.cyan[checked] .wx-checkbox-input, +radio.cyan[checked] .wx-radio-input, +switch.cyan.checked .uni-switch-input, +checkbox.cyan.checked .uni-checkbox-input, +radio.cyan.checked .uni-radio-input { + background-color: #1cbbb4 !important; + border-color: #1cbbb4 !important; + color: #ffffff !important; +} + +switch.blue[checked] .wx-switch-input, +checkbox.blue[checked] .wx-checkbox-input, +radio.blue[checked] .wx-radio-input, +switch.blue.checked .uni-switch-input, +checkbox.blue.checked .uni-checkbox-input, +radio.blue.checked .uni-radio-input { + background-color: #0081ff !important; + border-color: #0081ff !important; + color: #ffffff !important; +} + +switch.purple[checked] .wx-switch-input, +checkbox.purple[checked] .wx-checkbox-input, +radio.purple[checked] .wx-radio-input, +switch.purple.checked .uni-switch-input, +checkbox.purple.checked .uni-checkbox-input, +radio.purple.checked .uni-radio-input { + background-color: #6739b6 !important; + border-color: #6739b6 !important; + color: #ffffff !important; +} + +switch.mauve[checked] .wx-switch-input, +checkbox.mauve[checked] .wx-checkbox-input, +radio.mauve[checked] .wx-radio-input, +switch.mauve.checked .uni-switch-input, +checkbox.mauve.checked .uni-checkbox-input, +radio.mauve.checked .uni-radio-input { + background-color: #9c26b0 !important; + border-color: #9c26b0 !important; + color: #ffffff !important; +} + +switch.pink[checked] .wx-switch-input, +checkbox.pink[checked] .wx-checkbox-input, +radio.pink[checked] .wx-radio-input, +switch.pink.checked .uni-switch-input, +checkbox.pink.checked .uni-checkbox-input, +radio.pink.checked .uni-radio-input { + background-color: #e03997 !important; + border-color: #e03997 !important; + color: #ffffff !important; +} + +switch.brown[checked] .wx-switch-input, +checkbox.brown[checked] .wx-checkbox-input, +radio.brown[checked] .wx-radio-input, +switch.brown.checked .uni-switch-input, +checkbox.brown.checked .uni-checkbox-input, +radio.brown.checked .uni-radio-input { + background-color: #a5673f !important; + border-color: #a5673f !important; + color: #ffffff !important; +} + +switch.grey[checked] .wx-switch-input, +checkbox.grey[checked] .wx-checkbox-input, +radio.grey[checked] .wx-radio-input, +switch.grey.checked .uni-switch-input, +checkbox.grey.checked .uni-checkbox-input, +radio.grey.checked .uni-radio-input { + background-color: #8799a3 !important; + border-color: #8799a3 !important; + color: #ffffff !important; +} + +switch.gray[checked] .wx-switch-input, +checkbox.gray[checked] .wx-checkbox-input, +radio.gray[checked] .wx-radio-input, +switch.gray.checked .uni-switch-input, +checkbox.gray.checked .uni-checkbox-input, +radio.gray.checked .uni-radio-input { + background-color: #f0f0f0 !important; + border-color: #f0f0f0 !important; + color: #333333 !important; +} + +switch.black[checked] .wx-switch-input, +checkbox.black[checked] .wx-checkbox-input, +radio.black[checked] .wx-radio-input, +switch.black.checked .uni-switch-input, +checkbox.black.checked .uni-checkbox-input, +radio.black.checked .uni-radio-input { + background-color: #333333 !important; + border-color: #333333 !important; + color: #ffffff !important; +} + +switch.white[checked] .wx-switch-input, +checkbox.white[checked] .wx-checkbox-input, +radio.white[checked] .wx-radio-input, +switch.white.checked .uni-switch-input, +checkbox.white.checked .uni-checkbox-input, +radio.white.checked .uni-radio-input { + background-color: #ffffff !important; + border-color: #ffffff !important; + color: #333333 !important; +} + +/* ================== + 杈规 + ==================== */ + +/* -- 瀹炵嚎 -- */ + +.solid, +.solid-top, +.solid-right, +.solid-bottom, +.solid-left, +.solids, +.solids-top, +.solids-right, +.solids-bottom, +.solids-left, +.dashed, +.dashed-top, +.dashed-right, +.dashed-bottom, +.dashed-left { + position: relative; +} + +.solid::after, +.solid-top::after, +.solid-right::after, +.solid-bottom::after, +.solid-left::after, +.solids::after, +.solids-top::after, +.solids-right::after, +.solids-bottom::after, +.solids-left::after, +.dashed::after, +.dashed-top::after, +.dashed-right::after, +.dashed-bottom::after, +.dashed-left::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border-radius: inherit; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; +} + +.solid::after { + border: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-top::after { + border-top: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-right::after { + border-right: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-bottom::after { + border-bottom: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-left::after { + border-left: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solids::after { + border: 8upx solid #eee; +} + +.solids-top::after { + border-top: 8upx solid #eee; +} + +.solids-right::after { + border-right: 8upx solid #eee; +} + +.solids-bottom::after { + border-bottom: 8upx solid #eee; +} + +.solids-left::after { + border-left: 8upx solid #eee; +} + +/* -- 铏氱嚎 -- */ + +.dashed::after { + border: 1upx dashed #ddd; +} + +.dashed-top::after { + border-top: 1upx dashed #ddd; +} + +.dashed-right::after { + border-right: 1upx dashed #ddd; +} + +.dashed-bottom::after { + border-bottom: 1upx dashed #ddd; +} + +.dashed-left::after { + border-left: 1upx dashed #ddd; +} + +/* -- 闃村奖 -- */ + +.shadow[class*='white'] { + --ShadowSize: 0 1upx 6upx; +} + +.shadow-lg { + --ShadowSize: 0upx 40upx 100upx 0upx; +} + +.shadow-warp { + position: relative; + box-shadow: 0 0 10upx rgba(0, 0, 0, 0.1); +} + +.shadow-warp:before, +.shadow-warp:after { + position: absolute; + content: ""; + top: 20upx; + bottom: 30upx; + left: 20upx; + width: 50%; + box-shadow: 0 30upx 20upx rgba(0, 0, 0, 0.2); + transform: rotate(-3deg); + z-index: -1; +} + +.shadow-warp:after { + right: 20upx; + left: auto; + transform: rotate(3deg); +} + +.shadow-blur { + position: relative; +} + +.shadow-blur::before { + content: ""; + display: block; + background: inherit; + filter: blur(10upx); + position: absolute; + width: 100%; + height: 100%; + top: 10upx; + left: 10upx; + z-index: -1; + opacity: 0.4; + transform-origin: 0 0; + border-radius: inherit; + transform: scale(1, 1); +} + +/* ================== + 鎸夐挳 + ==================== */ + +.cu-btn { + position: relative; + border: 0upx; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + padding: 0 30upx; + font-size: 28upx; + height: 64upx; + line-height: 1; + text-align: center; + text-decoration: none; + overflow: visible; + margin-left: initial; + transform: translate(0upx, 0upx); + margin-right: initial; +} + +.cu-btn::after { + display: none; +} + +.cu-btn:not([class*="bg-"]) { + background-color: #f0f0f0; +} + +.cu-btn[class*="line"] { + background-color: transparent; +} + +.cu-btn[class*="line"]::after { + content: " "; + display: block; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border: 1upx solid currentColor; + transform: scale(0.5); + transform-origin: 0 0; + box-sizing: border-box; + border-radius: 12upx; + z-index: 1; + pointer-events: none; +} + +.cu-btn.round[class*="line"]::after { + border-radius: 1000upx; +} + +.cu-btn[class*="lines"]::after { + border: 6upx solid currentColor; +} + +.cu-btn[class*="bg-"]::after { + display: none; +} + +.cu-btn.sm { + padding: 0 20upx; + font-size: 20upx; + height: 48upx; +} + +.cu-btn.lg { + padding: 0 40upx; + font-size: 32upx; + height: 80upx; +} + +.cu-btn.cuIcon.sm { + width: 48upx; + height: 48upx; +} + +.cu-btn.cuIcon { + width: 64upx; + height: 64upx; + border-radius: 500upx; + padding: 0; +} + +button.cuIcon.lg { + width: 80upx; + height: 80upx; +} + +.cu-btn.shadow-blur::before { + top: 4upx; + left: 4upx; + filter: blur(6upx); + opacity: 0.6; +} + +.cu-btn.button-hover { + transform: translate(1upx, 1upx); +} + +.block { + display: block; +} + +.cu-btn.block { + display: flex; +} + +.cu-btn[disabled] { + opacity: 0.6; + color: #ffffff; +} + +/* ================== + 寰界珷 + ==================== */ + +.cu-tag { + font-size: 24upx; + vertical-align: middle; + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + padding: 0upx 16upx; + height: 48upx; + font-family: Helvetica Neue, Helvetica, sans-serif; + white-space: nowrap; +} + +.cu-tag:not([class*="bg"]):not([class*="line"]) { + background-color: #f1f1f1; +} + +.cu-tag[class*="line-"]::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border: 1upx solid currentColor; + transform: scale(0.5); + transform-origin: 0 0; + box-sizing: border-box; + border-radius: inherit; + z-index: 1; + pointer-events: none; +} + +.cu-tag.radius[class*="line"]::after { + border-radius: 12upx; +} + +.cu-tag.round[class*="line"]::after { + border-radius: 1000upx; +} + +.cu-tag[class*="line-"]::after { + border-radius: 0; +} + +.cu-tag+.cu-tag { + margin-left: 10upx; +} + +.cu-tag.sm { + font-size: 20upx; + padding: 0upx 12upx; + height: 32upx; +} + +.cu-capsule { + display: inline-flex; + vertical-align: middle; +} + +.cu-capsule+.cu-capsule { + margin-left: 10upx; +} + +.cu-capsule .cu-tag { + margin: 0; +} + +.cu-capsule .cu-tag[class*="line-"]:last-child::after { + border-left: 0upx solid transparent; +} + +.cu-capsule .cu-tag[class*="line-"]:first-child::after { + border-right: 0upx solid transparent; +} + +.cu-capsule.radius .cu-tag:first-child { + border-top-left-radius: 6upx; + border-bottom-left-radius: 6upx; +} + +.cu-capsule.radius .cu-tag:last-child::after, +.cu-capsule.radius .cu-tag[class*="line-"] { + border-top-right-radius: 12upx; + border-bottom-right-radius: 12upx; +} + +.cu-capsule.round .cu-tag:first-child { + border-top-left-radius: 200upx; + border-bottom-left-radius: 200upx; + text-indent: 4upx; +} + +.cu-capsule.round .cu-tag:last-child::after, +.cu-capsule.round .cu-tag:last-child { + border-top-right-radius: 200upx; + border-bottom-right-radius: 200upx; + text-indent: -4upx; +} + +.cu-tag.badge { + border-radius: 200upx; + position: absolute; + top: -10upx; + right: -10upx; + font-size: 20upx; + padding: 0upx 10upx; + height: 28upx; + color: #ffffff; +} + +.cu-tag.badge:not([class*="bg-"]) { + background-color: #dd514c; +} + +.cu-tag:empty:not([class*="cuIcon-"]) { + padding: 0upx; + width: 16upx; + height: 16upx; + top: -4upx; + right: -4upx; +} + +.cu-tag[class*="cuIcon-"] { + width: 32upx; + height: 32upx; + top: -4upx; + right: -4upx; +} + +/* ================== + 澶村儚 + ==================== */ + +.cu-avatar { + font-variant: small-caps; + margin: 0; + padding: 0; + display: inline-flex; + text-align: center; + justify-content: center; + align-items: center; + background-color: #ccc; + color: #ffffff; + white-space: nowrap; + position: relative; + width: 64upx; + height: 64upx; + background-size: cover; + background-position: center; + vertical-align: middle; + font-size: 1.5em; +} + +.cu-avatar.sm { + width: 48upx; + height: 48upx; + font-size: 1em; +} + +.cu-avatar.lg { + width: 96upx; + height: 96upx; + font-size: 2em; +} + +.cu-avatar.xl { + width: 128upx; + height: 128upx; + font-size: 2.5em; +} + +.cu-avatar .avatar-text { + font-size: 0.4em; +} + +.cu-avatar-group { + direction: rtl; + unicode-bidi: bidi-override; + padding: 0 10upx 0 40upx; + display: inline-block; +} + +.cu-avatar-group .cu-avatar { + margin-left: -30upx; + border: 4upx solid #f1f1f1; + vertical-align: middle; +} + +.cu-avatar-group .cu-avatar.sm { + margin-left: -20upx; + border: 1upx solid #f1f1f1; +} + +/* ================== + 杩涘害鏉� + ==================== */ + +.cu-progress { + overflow: hidden; + height: 28upx; + background-color: #ebeef5; + display: inline-flex; + align-items: center; + width: 100%; +} + +.cu-progress+view, +.cu-progress+text { + line-height: 1; +} + +.cu-progress.xs { + height: 10upx; +} + +.cu-progress.sm { + height: 20upx; +} + +.cu-progress view { + width: 0; + height: 100%; + align-items: center; + display: flex; + justify-items: flex-end; + justify-content: space-around; + font-size: 20upx; + color: #ffffff; + transition: width 0.6s ease; +} + +.cu-progress text { + align-items: center; + display: flex; + font-size: 20upx; + color: #333333; + text-indent: 10upx; +} + +.cu-progress.text-progress { + padding-right: 60upx; +} + +.cu-progress.striped view { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 72upx 72upx; +} + +.cu-progress.active view { + animation: progress-stripes 2s linear infinite; +} + +@keyframes progress-stripes { + from { + background-position: 72upx 0; + } + + to { + background-position: 0 0; + } +} + +/* ================== + 鍔犺浇 + ==================== */ + +.cu-load { + display: block; + line-height: 3em; + text-align: center; +} + +.cu-load::before { + font-family: "cuIcon"; + display: inline-block; + margin-right: 6upx; +} + +.cu-load.loading::before { + content: "\e67a"; + animation: cuIcon-spin 2s infinite linear; +} + +.cu-load.loading::after { + content: "鍔犺浇涓�..."; +} + +.cu-load.over::before { + content: "\e64a"; +} + +.cu-load.over::after { + content: "娌℃湁鏇村浜�"; +} + +.cu-load.erro::before { + content: "\e658"; +} + +.cu-load.erro::after { + content: "鍔犺浇澶辫触"; +} + +.cu-load.load-cuIcon::before { + font-size: 32upx; +} + +.cu-load.load-cuIcon::after { + display: none; +} + +.cu-load.load-cuIcon.over { + display: none; +} + +.cu-load.load-modal { + position: fixed; + top: 0; + right: 0; + bottom: 140upx; + left: 0; + margin: auto; + width: 260upx; + height: 260upx; + background-color: #ffffff; + border-radius: 10upx; + box-shadow: 0 0 0upx 2000upx rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + flex-direction: column; + justify-content: center; + font-size: 28upx; + z-index: 9999; + line-height: 2.4em; +} + +.cu-load.load-modal [class*="cuIcon-"] { + font-size: 60upx; +} + +.cu-load.load-modal image { + width: 70upx; + height: 70upx; +} + +.cu-load.load-modal::after { + content: ""; + position: absolute; + background-color: #ffffff; + border-radius: 50%; + width: 200upx; + height: 200upx; + font-size: 10px; + border-top: 6upx solid rgba(0, 0, 0, 0.05); + border-right: 6upx solid rgba(0, 0, 0, 0.05); + border-bottom: 6upx solid rgba(0, 0, 0, 0.05); + border-left: 6upx solid #f37b1d; + animation: cuIcon-spin 1s infinite linear; + z-index: -1; +} + +.load-progress { + pointer-events: none; + top: 0; + position: fixed; + width: 100%; + left: 0; + z-index: 2000; +} + +.load-progress.hide { + display: none; +} + +.load-progress .load-progress-bar { + position: relative; + width: 100%; + height: 4upx; + overflow: hidden; + transition: all 200ms ease 0s; +} + +.load-progress .load-progress-spinner { + position: absolute; + top: 10upx; + right: 10upx; + z-index: 2000; + display: block; +} + +.load-progress .load-progress-spinner::after { + content: ""; + display: block; + width: 24upx; + height: 24upx; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: solid 4upx transparent; + border-top-color: inherit; + border-left-color: inherit; + border-radius: 50%; + -webkit-animation: load-progress-spinner 0.4s linear infinite; + animation: load-progress-spinner 0.4s linear infinite; +} + +@-webkit-keyframes load-progress-spinner { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes load-progress-spinner { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +/* ================== + 鍒楄〃 + ==================== */ +.grayscale { + filter: grayscale(1); +} + +.cu-list+.cu-list { + margin-top: 30upx +} + +.cu-list>.cu-item { + transition: all .6s ease-in-out 0s; + transform: translateX(0upx) +} + +.cu-list>.cu-item.move-cur { + transform: translateX(-260upx) +} + +.cu-list>.cu-item .move { + position: absolute; + right: 0; + display: flex; + width: 260upx; + height: 100%; + transform: translateX(100%) +} + +.cu-list>.cu-item .move view { + display: flex; + flex: 1; + justify-content: center; + align-items: center +} + +.cu-list.menu-avatar { + overflow: hidden; +} + +.cu-list.menu-avatar>.cu-item { + position: relative; + display: flex; + padding-right: 10upx; + height: 140upx; + background-color: #ffffff; + justify-content: flex-end; + align-items: center +} + +.cu-list.menu-avatar>.cu-item>.cu-avatar { + position: absolute; + left: 30upx +} + +.cu-list.menu-avatar>.cu-item .flex .text-cut { + max-width: 510upx +} + +.cu-list.menu-avatar>.cu-item .content { + position: absolute; + left: 146upx; + width: calc(100% - 96upx - 60upx - 120upx - 20upx); + line-height: 1.6em; +} + +.cu-list.menu-avatar>.cu-item .content.flex-sub { + width: calc(100% - 96upx - 60upx - 20upx); +} + +.cu-list.menu-avatar>.cu-item .content>view:first-child { + font-size: 30upx; + display: flex; + align-items: center +} + +.cu-list.menu-avatar>.cu-item .content .cu-tag.sm { + display: inline-block; + margin-left: 10upx; + height: 28upx; + font-size: 16upx; + line-height: 32upx +} + +.cu-list.menu-avatar>.cu-item .action { + width: 100upx; + text-align: center +} + +.cu-list.menu-avatar>.cu-item .action view+view { + margin-top: 10upx +} + +.cu-list.menu-avatar.comment>.cu-item .content { + position: relative; + left: 0; + width: auto; + flex: 1; +} + +.cu-list.menu-avatar.comment>.cu-item { + padding: 30upx 30upx 30upx 120upx; + height: auto +} + +.cu-list.menu-avatar.comment .cu-avatar { + align-self: flex-start +} + +.cu-list.menu>.cu-item { + position: relative; + display: flex; + padding: 0 30upx; + min-height: 100upx; + background-color: #ffffff; + justify-content: space-between; + align-items: center +} + +.cu-list.menu>.cu-item:last-child:after { + border: none +} + +.cu-list.menu-avatar>.cu-item:after, +.cu-list.menu>.cu-item:after { + position: absolute; + top: 0; + left: 0; + box-sizing: border-box; + width: 200%; + height: 200%; + border-bottom: 1upx solid #ddd; + border-radius: inherit; + content: " "; + transform: scale(.5); + transform-origin: 0 0; + pointer-events: none +} + +.cu-list.menu>.cu-item.grayscale { + background-color: #f5f5f5 +} + +.cu-list.menu>.cu-item.cur { + background-color: #fcf7e9 +} + +.cu-list.menu>.cu-item.arrow { + padding-right: 90upx +} + +.cu-list.menu>.cu-item.arrow:before { + position: absolute; + top: 0; + right: 30upx; + bottom: 0; + display: block; + margin: auto; + width: 30upx; + height: 30upx; + color: #8799a3; + content: "\e6a3"; + text-align: center; + font-size: 34upx; + font-family: cuIcon; + line-height: 30upx +} + +.cu-list.menu>.cu-item button.content { + padding: 0; + background-color: transparent; + justify-content: flex-start +} + +.cu-list.menu>.cu-item button.content:after { + display: none +} + +.cu-list.menu>.cu-item .cu-avatar-group .cu-avatar { + border-color: #ffffff +} + +.cu-list.menu>.cu-item .content>view:first-child { + display: flex; + align-items: center +} + +.cu-list.menu>.cu-item .content>text[class*=cuIcon] { + display: inline-block; + margin-right: 10upx; + width: 1.6em; + text-align: center +} + +.cu-list.menu>.cu-item .content>image { + display: inline-block; + margin-right: 10upx; + width: 1.6em; + height: 1.6em; + vertical-align: middle +} + +.cu-list.menu>.cu-item .content { + font-size: 30upx; + line-height: 1.6em; + flex: 1 +} + +.cu-list.menu>.cu-item .content .cu-tag.sm { + display: inline-block; + margin-left: 10upx; + height: 28upx; + font-size: 16upx; + line-height: 32upx +} + +.cu-list.menu>.cu-item .action .cu-tag:empty { + right: 10upx +} + +.cu-list.menu { + display: block; + overflow: hidden +} + +.cu-list.menu.sm-border>.cu-item:after { + left: 30upx; + width: calc(200% - 120upx) +} + +.cu-list.grid>.cu-item { + position: relative; + display: flex; + padding: 20upx 0 30upx; + transition-duration: 0s; + flex-direction: column +} + +.cu-list.grid>.cu-item:after { + position: absolute; + top: 0; + left: 0; + box-sizing: border-box; + width: 200%; + height: 200%; + border-right: 1px solid rgba(0, 0, 0, .1); + border-bottom: 1px solid rgba(0, 0, 0, .1); + border-radius: inherit; + content: " "; + transform: scale(.5); + transform-origin: 0 0; + pointer-events: none +} + +.cu-list.grid>.cu-item text { + display: block; + margin-top: 10upx; + color: #888; + font-size: 26upx; + line-height: 40upx +} + +.cu-list.grid>.cu-item [class*=cuIcon] { + position: relative; + display: block; + margin-top: 20upx; + width: 100%; + font-size: 48upx +} + +.cu-list.grid>.cu-item .cu-tag { + right: auto; + left: 50%; + margin-left: 20upx +} + +.cu-list.grid { + background-color: #ffffff; + text-align: center +} + +.cu-list.grid.no-border>.cu-item { + padding-top: 10upx; + padding-bottom: 20upx +} + +.cu-list.grid.no-border>.cu-item:after { + border: none +} + +.cu-list.grid.no-border { + padding: 20upx 10upx +} + +.cu-list.grid.col-3>.cu-item:nth-child(3n):after, +.cu-list.grid.col-4>.cu-item:nth-child(4n):after, +.cu-list.grid.col-5>.cu-item:nth-child(5n):after { + border-right-width: 0 +} + +.cu-list.card-menu { + overflow: hidden; + margin-right: 30upx; + margin-left: 30upx; + border-radius: 20upx +} + + +/* ================== + 鎿嶄綔鏉� + ==================== */ + +.cu-bar { + display: flex; + position: relative; + align-items: center; + min-height: 100upx; + justify-content: space-between; +} + +.cu-bar .action { + display: flex; + align-items: center; + height: 100%; + justify-content: center; + max-width: 100%; +} + +.cu-bar .action.border-title { + position: relative; + top: -10upx; +} + +.cu-bar .action.border-title text[class*="bg-"]:last-child { + position: absolute; + bottom: -0.5rem; + min-width: 2rem; + height: 6upx; + left: 0; +} + +.cu-bar .action.sub-title { + position: relative; + top: -0.2rem; +} + +.cu-bar .action.sub-title text { + position: relative; + z-index: 1; +} + +.cu-bar .action.sub-title text[class*="bg-"]:last-child { + position: absolute; + display: inline-block; + bottom: -0.2rem; + border-radius: 6upx; + width: 100%; + height: 0.6rem; + left: 0.6rem; + opacity: 0.3; + z-index: 0; +} + +.cu-bar .action.sub-title text[class*="text-"]:last-child { + position: absolute; + display: inline-block; + bottom: -0.7rem; + left: 0.5rem; + opacity: 0.2; + z-index: 0; + text-align: right; + font-weight: 900; + font-size: 36upx; +} + +.cu-bar.justify-center .action.border-title text:last-child, +.cu-bar.justify-center .action.sub-title text:last-child { + left: 0; + right: 0; + margin: auto; + text-align: center; +} + +.cu-bar .action:first-child { + margin-left: 30upx; + font-size: 30upx; +} + +.cu-bar .action text.text-cut { + text-align: left; + width: 100%; +} + +.cu-bar .cu-avatar:first-child { + margin-left: 20upx; +} + +.cu-bar .action:first-child>text[class*="cuIcon-"] { + margin-left: -0.3em; + margin-right: 0.3em; +} + +.cu-bar .action:last-child { + margin-right: 30upx; +} + +.cu-bar .action>text[class*="cuIcon-"], +.cu-bar .action>view[class*="cuIcon-"] { + font-size: 36upx; +} + +.cu-bar .action>text[class*="cuIcon-"]+text[class*="cuIcon-"] { + margin-left: 0.5em; +} + +.cu-bar .content { + position: absolute; + text-align: center; + width: calc(100% - 340upx); + left: 0; + right: 0; + bottom: 0; + top: 0; + margin: auto; + height: 30px; + font-size: 16px; + line-height: 30px; + cursor: none; + pointer-events: none; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.cu-bar.ios .content { + bottom: 7px; + height: 30px; + font-size: 16px; + line-height: 30px; +} + +.cu-bar.btn-group { + justify-content: space-around; +} + +.cu-bar.btn-group button { + padding: 20upx 32upx; +} + +.cu-bar.btn-group button { + flex: 1; + margin: 0 20upx; + max-width: 50%; +} + +.cu-bar .search-form { + background-color: #f5f5f5; + line-height: 64upx; + height: 64upx; + font-size: 24upx; + color: #333333; + flex: 1; + display: flex; + align-items: center; + margin: 0 30upx; +} + +.cu-bar .search-form+.action { + margin-right: 30upx; +} + +.cu-bar .search-form input { + flex: 1; + padding-right: 30upx; + height: 64upx; + line-height: 64upx; + font-size: 26upx; + background-color: transparent; +} + +.cu-bar .search-form [class*="cuIcon-"] { + margin: 0 0.5em 0 0.8em; +} + +.cu-bar .search-form [class*="cuIcon-"]::before { + top: 0upx; +} + +.cu-bar.fixed, +.nav.fixed { + position: fixed; + width: 100%; + top: 0; + z-index: 1024; + box-shadow: 0 1upx 6upx rgba(0, 0, 0, 0.1); +} + +.cu-bar.foot { + position: fixed; + width: 100%; + bottom: 0; + z-index: 1024; + box-shadow: 0 -1upx 6upx rgba(0, 0, 0, 0.1); +} + +.cu-bar.tabbar { + padding: 0; + height: calc(100upx + env(safe-area-inset-bottom) / 2); + padding-bottom: calc(env(safe-area-inset-bottom) / 2); +} + +.cu-tabbar-height { + min-height: 100upx; + height: calc(100upx + env(safe-area-inset-bottom) / 2); +} + +.cu-bar.tabbar.shadow { + box-shadow: 0 -1upx 6upx rgba(0, 0, 0, 0.1); +} + +.cu-bar.tabbar .action { + font-size: 22upx; + position: relative; + flex: 1; + text-align: center; + padding: 0; + display: block; + height: auto; + line-height: 1; + margin: 0; + background-color: inherit; + overflow: initial; +} + +.cu-bar.tabbar.shop .action { + width: 140upx; + flex: initial; +} + +.cu-bar.tabbar .action.add-action { + position: relative; + z-index: 2; + padding-top: 50upx; +} + +.cu-bar.tabbar .action.add-action [class*="cuIcon-"] { + position: absolute; + width: 70upx; + z-index: 2; + height: 70upx; + border-radius: 50%; + line-height: 70upx; + font-size: 50upx; + top: -35upx; + left: 0; + right: 0; + margin: auto; + padding: 0; +} + +.cu-bar.tabbar .action.add-action::after { + content: ""; + position: absolute; + width: 100upx; + height: 100upx; + top: -50upx; + left: 0; + right: 0; + margin: auto; + box-shadow: 0 -3upx 8upx rgba(0, 0, 0, 0.08); + border-radius: 50upx; + background-color: inherit; + z-index: 0; +} + +.cu-bar.tabbar .action.add-action::before { + content: ""; + position: absolute; + width: 100upx; + height: 30upx; + bottom: 30upx; + left: 0; + right: 0; + margin: auto; + background-color: inherit; + z-index: 1; +} + +.cu-bar.tabbar .btn-group { + flex: 1; + display: flex; + justify-content: space-around; + align-items: center; + padding: 0 10upx; +} + +.cu-bar.tabbar button.action::after { + border: 0; +} + +.cu-bar.tabbar .action [class*="cuIcon-"] { + width: 100upx; + position: relative; + display: block; + height: auto; + margin: 0 auto 10upx; + text-align: center; + font-size: 40upx; +} + +.cu-bar.tabbar .action .cuIcon-cu-image { + margin: 0 auto; +} + +.cu-bar.tabbar .action .cuIcon-cu-image image { + width: 50upx; + height: 50upx; + display: inline-block; +} + +.cu-bar.tabbar .submit { + align-items: center; + display: flex; + justify-content: center; + text-align: center; + position: relative; + flex: 2; + align-self: stretch; +} + +.cu-bar.tabbar .submit:last-child { + flex: 2.6; +} + +.cu-bar.tabbar .submit+.submit { + flex: 2; +} + +.cu-bar.tabbar.border .action::before { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + transform: scale(0.5); + transform-origin: 0 0; + border-right: 1upx solid rgba(0, 0, 0, 0.1); + z-index: 3; +} + +.cu-bar.tabbar.border .action:last-child:before { + display: none; +} + +.cu-bar.input { + padding-right: 20upx; + background-color: #ffffff; +} + +.cu-bar.input input { + overflow: initial; + line-height: 64upx; + height: 64upx; + min-height: 64upx; + flex: 1; + font-size: 30upx; + margin: 0 20upx; +} + +.cu-bar.input .action { + margin-left: 20upx; +} + +.cu-bar.input .action [class*="cuIcon-"] { + font-size: 48upx; +} + +.cu-bar.input input+.action { + margin-right: 20upx; + margin-left: 0upx; +} + +.cu-bar.input .action:first-child [class*="cuIcon-"] { + margin-left: 0upx; +} + +.cu-custom { + display: block; + position: relative; +} + +.cu-custom .cu-bar .content { + /* width: calc(100% - 440upx); */ +} + +/* #ifdef MP-ALIPAY */ +.cu-custom .cu-bar .action .cuIcon-back { + opacity: 0; +} + +/* #endif */ + +.cu-custom .cu-bar .content image { + height: 60upx; + width: 240upx; +} + +.cu-custom .cu-bar { + min-height: 0px; + /* #ifdef MP-WEIXIN */ + padding-right: 220upx; + /* #endif */ + /* #ifdef MP-ALIPAY */ + padding-right: 150upx; + /* #endif */ + box-shadow: 0upx 0upx 0upx; + z-index: 9999; +} + +.cu-custom .cu-bar .border-custom { + position: relative; + background: rgba(0, 0, 0, 0.15); + border-radius: 1000upx; + height: 30px; +} + +.cu-custom .cu-bar .border-custom::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border-radius: inherit; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; + border: 1upx solid #ffffff; + opacity: 0.5; +} + +.cu-custom .cu-bar .border-custom::before { + content: " "; + width: 1upx; + height: 110%; + position: absolute; + top: 22.5%; + left: 0; + right: 0; + margin: auto; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; + opacity: 0.6; + background-color: #ffffff; +} + +.cu-custom .cu-bar .border-custom text { + display: block; + flex: 1; + margin: auto !important; + text-align: center; + font-size: 34upx; +} + +/* ================== + 瀵艰埅鏍� + ==================== */ + +.nav { + white-space: nowrap; +} + +::-webkit-scrollbar { + display: none; +} + +.nav .cu-item { + height: 90upx; + display: inline-block; + line-height: 90upx; + margin: 0 10upx; + padding: 0 20upx; +} + +.nav .cu-item.cur { + border-bottom: 4upx solid; +} + +/* ================== + 鏃堕棿杞� + ==================== */ + +.cu-timeline { + display: block; + background-color: #ffffff; +} + +.cu-timeline .cu-time { + width: 120upx; + text-align: center; + padding: 20upx 0; + font-size: 26upx; + color: #888; + display: block; +} + +.cu-timeline>.cu-item { + padding: 30upx 30upx 30upx 120upx; + position: relative; + display: block; + z-index: 0; +} + +.cu-timeline>.cu-item:not([class*="text-"]) { + color: #ccc; +} + +.cu-timeline>.cu-item::after { + content: ""; + display: block; + position: absolute; + width: 1upx; + background-color: #ddd; + left: 60upx; + height: 100%; + top: 0; + z-index: 8; +} + +.cu-timeline>.cu-item::before { + font-family: "cuIcon"; + display: block; + position: absolute; + top: 36upx; + z-index: 9; + background-color: #ffffff; + width: 50upx; + height: 50upx; + text-align: center; + border: none; + line-height: 50upx; + left: 36upx; +} + +.cu-timeline>.cu-item:not([class*="cuIcon-"])::before { + content: "\e763"; +} + +.cu-timeline>.cu-item[class*="cuIcon-"]::before { + background-color: #ffffff; + width: 50upx; + height: 50upx; + text-align: center; + border: none; + line-height: 50upx; + left: 36upx; +} + +.cu-timeline>.cu-item>.content { + padding: 30upx; + border-radius: 6upx; + display: block; + line-height: 1.6; +} + +.cu-timeline>.cu-item>.content:not([class*="bg-"]) { + background-color: #f1f1f1; + color: #333333; +} + +.cu-timeline>.cu-item>.content+.content { + margin-top: 20upx; +} + +/* ================== + 鑱婂ぉ + ==================== */ + +.cu-chat { + display: flex; + flex-direction: column; +} + +.cu-chat .cu-item { + display: flex; + padding: 30upx 30upx 70upx; + position: relative; +} + +.cu-chat .cu-item>.cu-avatar { + width: 80upx; + height: 80upx; +} + +.cu-chat .cu-item>.main { + max-width: calc(100% - 260upx); + margin: 0 40upx; + display: flex; + align-items: center; +} + +.cu-chat .cu-item>image { + height: 320upx; +} + +.cu-chat .cu-item>.main .content { + padding: 20upx; + border-radius: 6upx; + display: inline-flex; + max-width: 100%; + align-items: center; + font-size: 30upx; + position: relative; + min-height: 80upx; + line-height: 40upx; + text-align: left; +} + +.cu-chat .cu-item>.main .content:not([class*="bg-"]) { + background-color: #ffffff; + color: #333333; +} + +.cu-chat .cu-item .date { + position: absolute; + font-size: 24upx; + color: #8799a3; + width: calc(100% - 320upx); + bottom: 20upx; + left: 160upx; +} + +.cu-chat .cu-item .action { + padding: 0 30upx; + display: flex; + align-items: center; +} + +.cu-chat .cu-item>.main .content::after { + content: ""; + top: 27upx; + transform: rotate(45deg); + position: absolute; + z-index: 100; + display: inline-block; + overflow: hidden; + width: 24upx; + height: 24upx; + left: -12upx; + right: initial; + background-color: inherit; +} + +.cu-chat .cu-item.self>.main .content::after { + left: auto; + right: -12upx; +} + +.cu-chat .cu-item>.main .content::before { + content: ""; + top: 30upx; + transform: rotate(45deg); + position: absolute; + z-index: -1; + display: inline-block; + overflow: hidden; + width: 24upx; + height: 24upx; + left: -12upx; + right: initial; + background-color: inherit; + filter: blur(5upx); + opacity: 0.3; +} + +.cu-chat .cu-item>.main .content:not([class*="bg-"])::before { + background-color: #333333; + opacity: 0.1; +} + +.cu-chat .cu-item.self>.main .content::before { + left: auto; + right: -12upx; +} + +.cu-chat .cu-item.self { + justify-content: flex-end; + text-align: right; +} + +.cu-chat .cu-info { + display: inline-block; + margin: 20upx auto; + font-size: 24upx; + padding: 8upx 12upx; + background-color: rgba(0, 0, 0, 0.2); + border-radius: 6upx; + color: #ffffff; + max-width: 400upx; + line-height: 1.4; +} + +/* ================== + 鍗$墖 + ==================== */ + +.cu-card { + display: block; + overflow: hidden; +} + +.cu-card>.cu-item { + display: block; + background-color: #ffffff; + overflow: hidden; + border-radius: 10upx; + margin: 30upx; +} + +.cu-card>.cu-item.shadow-blur { + overflow: initial; +} + +.cu-card.no-card>.cu-item { + margin: 0upx; + border-radius: 0upx; +} + +.cu-card .grid.grid-square { + margin-bottom: -20upx; +} + +.cu-card.case .image { + position: relative; +} + +.cu-card.case .image image { + width: 100%; +} + +.cu-card.case .image .cu-tag { + position: absolute; + right: 0; + top: 0; +} + +.cu-card.case .image .cu-bar { + position: absolute; + bottom: 0; + width: 100%; + background-color: transparent; + padding: 0upx 30upx; +} + +.cu-card.case.no-card .image { + margin: 30upx 30upx 0; + overflow: hidden; + border-radius: 10upx; +} + +.cu-card.dynamic { + display: block; +} + +.cu-card.dynamic>.cu-item { + display: block; + background-color: #ffffff; + overflow: hidden; +} + +.cu-card.dynamic>.cu-item>.text-content { + padding: 0 30upx 0; + max-height: 6.4em; + overflow: hidden; + font-size: 30upx; + margin-bottom: 20upx; +} + +.cu-card.dynamic>.cu-item .square-img { + width: 100%; + height: 200upx; + border-radius: 6upx; +} + +.cu-card.dynamic>.cu-item .only-img { + width: 100%; + height: 320upx; + border-radius: 6upx; +} + +/* card.dynamic>.cu-item .comment { + padding: 20upx; + background-color: #f1f1f1; + margin: 0 30upx 30upx; + border-radius: 6upx; +} */ + +.cu-card.article { + display: block; +} + +.cu-card.article>.cu-item { + padding-bottom: 30upx; +} + +.cu-card.article>.cu-item .title { + font-size: 30upx; + font-weight: 900; + color: #333333; + line-height: 100upx; + padding: 0 30upx; +} + +.cu-card.article>.cu-item .content { + display: flex; + padding: 0 30upx; +} + +.cu-card.article>.cu-item .content>image { + width: 240upx; + height: 6.4em; + margin-right: 20upx; + border-radius: 6upx; +} + +.cu-card.article>.cu-item .content .desc { + flex: 1; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.cu-card.article>.cu-item .content .text-content { + font-size: 28upx; + color: #888; + height: 4.8em; + overflow: hidden; +} + +/* ================== + 琛ㄥ崟 + ==================== */ + +.cu-form-group { + background-color: #ffffff; + padding: 1upx 30upx; + display: flex; + align-items: center; + min-height: 100upx; + justify-content: space-between; +} + +.cu-form-group+.cu-form-group { + border-top: 1upx solid #eee; +} + +.cu-form-group .title { + text-align: justify; + padding-right: 30upx; + font-size: 30upx; + position: relative; + height: 60upx; + line-height: 60upx; +} + +.cu-form-group input { + flex: 1; + font-size: 30upx; + color: #555; + padding-right: 20upx; +} + +.cu-form-group>text[class*="cuIcon-"] { + font-size: 36upx; + padding: 0; + box-sizing: border-box; +} + +.cu-form-group textarea { + margin: 32upx 0 30upx; + height: 4.6em; + width: 100%; + line-height: 1.2em; + flex: 1; + font-size: 28upx; + padding: 0; +} + +.cu-form-group.align-start .title { + height: 1em; + margin-top: 32upx; + line-height: 1em; +} + +.cu-form-group picker { + flex: 1; + padding-right: 40upx; + overflow: hidden; + position: relative; +} + +.cu-form-group picker .picker { + line-height: 100upx; + font-size: 28upx; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 100%; + text-align: right; +} + +.cu-form-group picker::after { + font-family: cuIcon; + display: block; + content: "\e6a3"; + position: absolute; + font-size: 34upx; + color: #8799a3; + line-height: 100upx; + width: 60upx; + text-align: center; + top: 0; + bottom: 0; + right: -20upx; + margin: auto; +} + +.cu-form-group textarea[disabled], +.cu-form-group textarea[disabled] .placeholder { + color: transparent; +} + +/* ================== + 妯℃�佺獥鍙� + ==================== */ + +.cu-modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1110; + opacity: 0; + outline: 0; + text-align: center; + -ms-transform: scale(1.185); + transform: scale(1.185); + backface-visibility: hidden; + perspective: 2000upx; + background: rgba(0, 0, 0, 0.6); + transition: all 0.3s ease-in-out 0s; + pointer-events: none; +} + +.cu-modal::before { + content: "\200B"; + display: inline-block; + height: 100%; + vertical-align: middle; +} + +.cu-modal.show { + opacity: 1; + transition-duration: 0.3s; + -ms-transform: scale(1); + transform: scale(1); + overflow-x: hidden; + overflow-y: auto; + pointer-events: auto; +} + +.cu-dialog { + position: relative; + display: inline-block; + vertical-align: middle; + margin-left: auto; + margin-right: auto; + width: 680upx; + max-width: 100%; + background-color: #f8f8f8; + border-radius: 10upx; + overflow: hidden; +} + +.cu-modal.bottom-modal::before { + vertical-align: bottom; +} + +.cu-modal.bottom-modal .cu-dialog { + width: 100%; + border-radius: 0; +} + +.cu-modal.bottom-modal { + margin-bottom: -1000upx; +} + +.cu-modal.bottom-modal.show { + margin-bottom: 0; +} + +.cu-modal.drawer-modal { + transform: scale(1); + display: flex; +} + +.cu-modal.drawer-modal .cu-dialog { + height: 100%; + min-width: 200upx; + border-radius: 0; + margin: initial; + transition-duration: 0.3s; +} + +.cu-modal.drawer-modal.justify-start .cu-dialog { + transform: translateX(-100%); +} + +.cu-modal.drawer-modal.justify-end .cu-dialog { + transform: translateX(100%); +} + +.cu-modal.drawer-modal.show .cu-dialog { + transform: translateX(0%); +} + +.cu-modal .cu-dialog>.cu-bar:first-child .action { + min-width: 100rpx; + margin-right: 0; + min-height: 100rpx; +} + +/* ================== + 杞挱 + ==================== */ +swiper .a-swiper-dot { + display: inline-block; + width: 16upx; + height: 16upx; + background: rgba(0, 0, 0, .3); + border-radius: 50%; + vertical-align: middle; +} + +swiper[class*="-dot"] .wx-swiper-dots, +swiper[class*="-dot"] .a-swiper-dots, +swiper[class*="-dot"] .uni-swiper-dots { + display: flex; + align-items: center; + width: 100%; + justify-content: center; +} + +swiper.square-dot .wx-swiper-dot, +swiper.square-dot .a-swiper-dot, +swiper.square-dot .uni-swiper-dot { + background-color: #ffffff; + opacity: 0.4; + width: 10upx; + height: 10upx; + border-radius: 20upx; + margin: 0 8upx !important; +} + +swiper.square-dot .wx-swiper-dot.wx-swiper-dot-active, +swiper.square-dot .a-swiper-dot.a-swiper-dot-active, +swiper.square-dot .uni-swiper-dot.uni-swiper-dot-active { + opacity: 1; + width: 30upx; +} + +swiper.round-dot .wx-swiper-dot, +swiper.round-dot .a-swiper-dot, +swiper.round-dot .uni-swiper-dot { + width: 10upx; + height: 10upx; + position: relative; + margin: 4upx 8upx !important; +} + +swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active::after, +swiper.round-dot .a-swiper-dot.a-swiper-dot-active::after, +swiper.round-dot .uni-swiper-dot.uni-swiper-dot-active::after { + content: ""; + position: absolute; + width: 10upx; + height: 10upx; + top: 0upx; + left: 0upx; + right: 0; + bottom: 0; + margin: auto; + background-color: #ffffff; + border-radius: 20upx; +} + +swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active, +swiper.round-dot .a-swiper-dot.a-swiper-dot-active, +swiper.round-dot .uni-swiper-dot.uni-swiper-dot-active { + width: 18upx; + height: 18upx; +} + +.screen-swiper { + min-height: 375upx; +} + +.screen-swiper image, +.screen-swiper video, +.swiper-item image, +.swiper-item video { + width: 100%; + display: block; + height: 100%; + margin: 0; + pointer-events: none; +} + +.card-swiper { + height: 420upx !important; +} + +.card-swiper swiper-item { + width: 610upx !important; + left: 70upx; + box-sizing: border-box; + padding: 40upx 0upx 70upx; + overflow: initial; +} + +.card-swiper swiper-item .swiper-item { + width: 100%; + display: block; + height: 100%; + border-radius: 10upx; + transform: scale(0.9); + transition: all 0.2s ease-in 0s; + overflow: hidden; +} + +.card-swiper swiper-item.cur .swiper-item { + transform: none; + transition: all 0.2s ease-in 0s; +} + + +.tower-swiper { + height: 420upx; + position: relative; + max-width: 750upx; + overflow: hidden; +} + +.tower-swiper .tower-item { + position: absolute; + width: 300upx; + height: 380upx; + top: 0; + bottom: 0; + left: 50%; + margin: auto; + transition: all 0.2s ease-in 0s; + opacity: 1; +} + +.tower-swiper .tower-item.none { + opacity: 0; +} + +.tower-swiper .tower-item .swiper-item { + width: 100%; + height: 100%; + border-radius: 6upx; + overflow: hidden; +} + +/* ================== + 姝ラ鏉� + ==================== */ + +.cu-steps { + display: flex; +} + +scroll-view.cu-steps { + display: block; + white-space: nowrap; +} + +scroll-view.cu-steps .cu-item { + display: inline-block; +} + +.cu-steps .cu-item { + flex: 1; + text-align: center; + position: relative; + min-width: 100upx; +} + +.cu-steps .cu-item:not([class*="text-"]) { + color: #8799a3; +} + +.cu-steps .cu-item [class*="cuIcon-"], +.cu-steps .cu-item .num { + display: block; + font-size: 40upx; + line-height: 80upx; +} + +.cu-steps .cu-item::before, +.cu-steps .cu-item::after, +.cu-steps.steps-arrow .cu-item::before, +.cu-steps.steps-arrow .cu-item::after { + content: ""; + display: block; + position: absolute; + height: 0px; + width: calc(100% - 80upx); + border-bottom: 1px solid #ccc; + left: calc(0px - (100% - 80upx) / 2); + top: 40upx; + z-index: 0; +} + +.cu-steps.steps-arrow .cu-item::before, +.cu-steps.steps-arrow .cu-item::after { + content: "\e6a3"; + font-family: 'cuIcon'; + height: 30upx; + border-bottom-width: 0px; + line-height: 30upx; + top: 0; + bottom: 0; + margin: auto; + color: #ccc; +} + +.cu-steps.steps-bottom .cu-item::before, +.cu-steps.steps-bottom .cu-item::after { + bottom: 40upx; + top: initial; +} + +.cu-steps .cu-item::after { + border-bottom: 1px solid currentColor; + width: 0px; + transition: all 0.3s ease-in-out 0s; +} + +.cu-steps .cu-item[class*="text-"]::after { + width: calc(100% - 80upx); + color: currentColor; +} + +.cu-steps .cu-item:first-child::before, +.cu-steps .cu-item:first-child::after { + display: none; +} + +.cu-steps .cu-item .num { + width: 40upx; + height: 40upx; + border-radius: 50%; + line-height: 40upx; + margin: 20upx auto; + font-size: 24upx; + border: 1px solid currentColor; + position: relative; + overflow: hidden; +} + +.cu-steps .cu-item[class*="text-"] .num { + background-color: currentColor; +} + +.cu-steps .cu-item .num::before, +.cu-steps .cu-item .num::after { + content: attr(data-index); + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; + transition: all 0.3s ease-in-out 0s; + transform: translateY(0upx); +} + +.cu-steps .cu-item[class*="text-"] .num::before { + transform: translateY(-40upx); + color: #ffffff; +} + +.cu-steps .cu-item .num::after { + transform: translateY(40upx); + color: #ffffff; + transition: all 0.3s ease-in-out 0s; +} + +.cu-steps .cu-item[class*="text-"] .num::after { + content: "\e645"; + font-family: 'cuIcon'; + color: #ffffff; + transform: translateY(0upx); +} + +.cu-steps .cu-item[class*="text-"] .num.err::after { + content: "\e646"; +} + +/* ================== + 甯冨眬 + ==================== */ + +/* -- flex寮规�у竷灞� -- */ + +.flex { + display: flex; +} + +.basis-xs { + flex-basis: 20%; +} + +.basis-sm { + flex-basis: 40%; +} + +.basis-df { + flex-basis: 50%; +} + +.basis-lg { + flex-basis: 60%; +} + +.basis-xl { + flex-basis: 80%; +} + +.flex-sub { + flex: 1; +} + +.flex-twice { + flex: 2; +} + +.flex-treble { + flex: 3; +} + +.flex-direction { + flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.align-start { + align-items: flex-start; +} + +.align-end { + align-items: flex-end; +} + +.align-center { + align-items: center; +} + +.align-stretch { + align-items: stretch; +} + +.self-start { + align-self: flex-start; +} + +.self-center { + align-self: flex-center; +} + +.self-end { + align-self: flex-end; +} + +.self-stretch { + align-self: stretch; +} + +.align-stretch { + align-items: stretch; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} + +/* grid甯冨眬 */ + +.grid { + display: flex; + flex-wrap: wrap; +} + +.grid.grid-square { + overflow: hidden; +} + +.grid.grid-square .cu-tag { + position: absolute; + right: 0; + top: 0; + border-bottom-left-radius: 6upx; + padding: 6upx 12upx; + height: auto; + background-color: rgba(0, 0, 0, 0.5); +} + +.grid.grid-square>view>text[class*="cuIcon-"] { + font-size: 52upx; + position: absolute; + color: #8799a3; + margin: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} + +.grid.grid-square>view { + margin-right: 20upx; + margin-bottom: 20upx; + border-radius: 6upx; + position: relative; + overflow: hidden; +} + +.grid.grid-square>view.bg-img image { + width: 100%; + height: 100%; + position: absolute; +} + +.grid.col-1.grid-square>view { + padding-bottom: 100%; + height: 0; + margin-right: 0; +} + +.grid.col-2.grid-square>view { + padding-bottom: calc((100% - 20upx)/2); + height: 0; + width: calc((100% - 20upx)/2); +} + +.grid.col-3.grid-square>view { + padding-bottom: calc((100% - 40upx)/3); + height: 0; + width: calc((100% - 40upx)/3); +} + +.grid.col-4.grid-square>view { + padding-bottom: calc((100% - 60upx)/4); + height: 0; + width: calc((100% - 60upx)/4); +} + +.grid.col-5.grid-square>view { + padding-bottom: calc((100% - 80upx)/5); + height: 0; + width: calc((100% - 80upx)/5); +} + +.grid.col-2.grid-square>view:nth-child(2n), +.grid.col-3.grid-square>view:nth-child(3n), +.grid.col-4.grid-square>view:nth-child(4n), +.grid.col-5.grid-square>view:nth-child(5n) { + margin-right: 0; +} + +.grid.col-1>view { + width: 100%; +} + +.grid.col-2>view { + width: 50%; +} + +.grid.col-3>view { + width: 33.33%; +} + +.grid.col-4>view { + width: 25%; +} + +.grid.col-5>view { + width: 20%; +} + +/* -- 鍐呭杈硅窛 -- */ + +.margin-0 { + margin: 0; +} + +.margin-xs { + margin: 10upx; +} + +.margin-sm { + margin: 20upx; +} + +.margin { + margin: 30upx; +} + +.margin-lg { + margin: 40upx; +} + +.margin-xl { + margin: 50upx; +} + +.margin-top-xs { + margin-top: 10upx; +} + +.margin-top-sm { + margin-top: 20upx; +} + +.margin-top { + margin-top: 30upx; +} + +.margin-top-lg { + margin-top: 40upx; +} + +.margin-top-xl { + margin-top: 50upx; +} + +.margin-right-xs { + margin-right: 10upx; +} + +.margin-right-sm { + margin-right: 20upx; +} + +.margin-right { + margin-right: 30upx; +} + +.margin-right-lg { + margin-right: 40upx; +} + +.margin-right-xl { + margin-right: 50upx; +} + +.margin-bottom-xs { + margin-bottom: 10upx; +} + +.margin-bottom-sm { + margin-bottom: 20upx; +} + +.margin-bottom { + margin-bottom: 30upx; +} + +.margin-bottom-lg { + margin-bottom: 40upx; +} + +.margin-bottom-xl { + margin-bottom: 50upx; +} + +.margin-left-xs { + margin-left: 10upx; +} + +.margin-left-sm { + margin-left: 20upx; +} + +.margin-left { + margin-left: 30upx; +} + +.margin-left-lg { + margin-left: 40upx; +} + +.margin-left-xl { + margin-left: 50upx; +} + +.margin-lr-xs { + margin-left: 10upx; + margin-right: 10upx; +} + +.margin-lr-sm { + margin-left: 20upx; + margin-right: 20upx; +} + +.margin-lr { + margin-left: 30upx; + margin-right: 30upx; +} + +.margin-lr-lg { + margin-left: 40upx; + margin-right: 40upx; +} + +.margin-lr-xl { + margin-left: 50upx; + margin-right: 50upx; +} + +.margin-tb-xs { + margin-top: 10upx; + margin-bottom: 10upx; +} + +.margin-tb-sm { + margin-top: 20upx; + margin-bottom: 20upx; +} + +.margin-tb { + margin-top: 30upx; + margin-bottom: 30upx; +} + +.margin-tb-lg { + margin-top: 40upx; + margin-bottom: 40upx; +} + +.margin-tb-xl { + margin-top: 50upx; + margin-bottom: 50upx; +} + +.padding-0 { + padding: 0; +} + +.padding-xs { + padding: 10upx; +} + +.padding-sm { + padding: 20upx; +} + +.padding { + padding: 30upx; +} + +.padding-lg { + padding: 40upx; +} + +.padding-xl { + padding: 50upx; +} + +.padding-top-xs { + padding-top: 10upx; +} + +.padding-top-sm { + padding-top: 20upx; +} + +.padding-top { + padding-top: 30upx; +} + +.padding-top-lg { + padding-top: 40upx; +} + +.padding-top-xl { + padding-top: 50upx; +} + +.padding-right-xs { + padding-right: 10upx; +} + +.padding-right-sm { + padding-right: 20upx; +} + +.padding-right { + padding-right: 30upx; +} + +.padding-right-lg { + padding-right: 40upx; +} + +.padding-right-xl { + padding-right: 50upx; +} + +.padding-bottom-xs { + padding-bottom: 10upx; +} + +.padding-bottom-sm { + padding-bottom: 20upx; +} + +.padding-bottom { + padding-bottom: 30upx; +} + +.padding-bottom-lg { + padding-bottom: 40upx; +} + +.padding-bottom-xl { + padding-bottom: 50upx; +} + +.padding-left-xs { + padding-left: 10upx; +} + +.padding-left-sm { + padding-left: 20upx; +} + +.padding-left { + padding-left: 30upx; +} + +.padding-left-lg { + padding-left: 40upx; +} + +.padding-left-xl { + padding-left: 50upx; +} + +.padding-lr-xs { + padding-left: 10upx; + padding-right: 10upx; +} + +.padding-lr-sm { + padding-left: 20upx; + padding-right: 20upx; +} + +.padding-lr { + padding-left: 30upx; + padding-right: 30upx; +} + +.padding-lr-lg { + padding-left: 40upx; + padding-right: 40upx; +} + +.padding-lr-xl { + padding-left: 50upx; + padding-right: 50upx; +} + +.padding-tb-xs { + padding-top: 10upx; + padding-bottom: 10upx; +} + +.padding-tb-sm { + padding-top: 20upx; + padding-bottom: 20upx; +} + +.padding-tb { + padding-top: 30upx; + padding-bottom: 30upx; +} + +.padding-tb-lg { + padding-top: 40upx; + padding-bottom: 40upx; +} + +.padding-tb-xl { + padding-top: 50upx; + padding-bottom: 50upx; +} + +/* -- 娴姩 -- */ + +.cf::after, +.cf::before { + content: " "; + display: table; +} + +.cf::after { + clear: both; +} + +.fl { + float: left; +} + +.fr { + float: right; +} + +/* ================== + 鑳屾櫙 + ==================== */ + +.line-red::after, +.lines-red::after { + border-color: #e54d42; +} + +.line-orange::after, +.lines-orange::after { + border-color: #f37b1d; +} + +.line-yellow::after, +.lines-yellow::after { + border-color: #fbbd08; +} + +.line-olive::after, +.lines-olive::after { + border-color: #8dc63f; +} + +.line-green::after, +.lines-green::after { + border-color: #39b54a; +} + +.line-cyan::after, +.lines-cyan::after { + border-color: #1cbbb4; +} + +.line-blue::after, +.lines-blue::after { + border-color: #0081ff; +} + +.line-purple::after, +.lines-purple::after { + border-color: #6739b6; +} + +.line-mauve::after, +.lines-mauve::after { + border-color: #9c26b0; +} + +.line-pink::after, +.lines-pink::after { + border-color: #e03997; +} + +.line-brown::after, +.lines-brown::after { + border-color: #a5673f; +} + +.line-grey::after, +.lines-grey::after { + border-color: #8799a3; +} + +.line-gray::after, +.lines-gray::after { + border-color: #aaaaaa; +} + +.line-black::after, +.lines-black::after { + border-color: #333333; +} + +.line-white::after, +.lines-white::after { + border-color: #ffffff; +} + +.bg-red { + background-color: #e54d42; + color: #ffffff; +} + +.bg-orange { + background-color: #f37b1d; + color: #ffffff; +} + +.bg-yellow { + background-color: #fbbd08; + color: #333333; +} + +.bg-olive { + background-color: #8dc63f; + color: #ffffff; +} + +.bg-green { + background-color: #39b54a; + color: #ffffff; +} + +.bg-cyan { + background-color: #1cbbb4; + color: #ffffff; +} + +.bg-blue { + background-color: #0081ff; + color: #ffffff; +} + +.bg-purple { + background-color: #6739b6; + color: #ffffff; +} + +.bg-mauve { + background-color: #9c26b0; + color: #ffffff; +} + +.bg-pink { + background-color: #e03997; + color: #ffffff; +} + +.bg-brown { + background-color: #a5673f; + color: #ffffff; +} + +.bg-grey { + background-color: #fff; + color: #f18202; + border: 1px solid #f18202; +} + +.bg-gray { + background-color: #f0f0f0; + color: #333333; +} + +.bg-black { + background-color: #333333; + color: #ffffff; +} + +.bg-white { + background-color: #ffffff; + color: #666666; +} + +.bg-shadeTop { + background-image: linear-gradient(rgba(0, 0, 0, 1), rgba(0, 0, 0, 0.01)); + color: #ffffff; +} + +.bg-shadeBottom { + background-image: linear-gradient(rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 1)); + color: #ffffff; +} + +.bg-red.light { + color: #e54d42; + background-color: #fadbd9; +} + +.bg-orange.light { + color: #f37b1d; + background-color: #fde6d2; +} + +.bg-yellow.light { + color: #fbbd08; + background-color: #fef2ced2; +} + +.bg-olive.light { + color: #8dc63f; + background-color: #e8f4d9; +} + +.bg-green.light { + color: #39b54a; + background-color: #d7f0dbff; +} + +.bg-cyan.light { + color: #1cbbb4; + background-color: #d2f1f0; +} + +.bg-blue.light { + color: #0081ff; + background-color: #cce6ff; +} + +.bg-purple.light { + color: #6739b6; + background-color: #e1d7f0; +} + +.bg-mauve.light { + color: #9c26b0; + background-color: #ebd4ef; +} + +.bg-pink.light { + color: #e03997; + background-color: #f9d7ea; +} + +.bg-brown.light { + color: #a5673f; + background-color: #ede1d9; +} + +.bg-grey.light { + color: #8799a3; + background-color: #e7ebed; +} + +.bg-gradual-red { + background-image: linear-gradient(45deg, #f43f3b, #ec008c); + color: #ffffff; +} + +.bg-gradual-orange { + background-image: linear-gradient(45deg, #ff9700, #ed1c24); + color: #ffffff; +} + +.bg-gradual-green { + background-image: linear-gradient(45deg, #39b54a, #8dc63f); + color: #ffffff; +} + +.bg-gradual-purple { + background-image: linear-gradient(45deg, #9000ff, #5e00ff); + color: #ffffff; +} + +.bg-gradual-pink { + background-image: linear-gradient(45deg, #ec008c, #6739b6); + color: #ffffff; +} + +.bg-gradual-blue { + background-image: linear-gradient(45deg, #0081ff, #1cbbb4); + color: #ffffff; +} + +.shadow[class*="-red"] { + box-shadow: 6upx 6upx 8upx rgba(204, 69, 59, 0.2); +} + +.shadow[class*="-orange"] { + box-shadow: 6upx 6upx 8upx rgba(217, 109, 26, 0.2); +} + +.shadow[class*="-yellow"] { + box-shadow: 6upx 6upx 8upx rgba(224, 170, 7, 0.2); +} + +.shadow[class*="-olive"] { + box-shadow: 6upx 6upx 8upx rgba(124, 173, 55, 0.2); +} + +.shadow[class*="-green"] { + box-shadow: 6upx 6upx 8upx rgba(48, 156, 63, 0.2); +} + +.shadow[class*="-cyan"] { + box-shadow: 6upx 6upx 8upx rgba(28, 187, 180, 0.2); +} + +.shadow[class*="-blue"] { + box-shadow: 6upx 6upx 8upx rgba(0, 102, 204, 0.2); +} + +.shadow[class*="-purple"] { + box-shadow: 6upx 6upx 8upx rgba(88, 48, 156, 0.2); +} + +.shadow[class*="-mauve"] { + box-shadow: 6upx 6upx 8upx rgba(133, 33, 150, 0.2); +} + +.shadow[class*="-pink"] { + box-shadow: 6upx 6upx 8upx rgba(199, 50, 134, 0.2); +} + +.shadow[class*="-brown"] { + box-shadow: 6upx 6upx 8upx rgba(140, 88, 53, 0.2); +} + +.shadow[class*="-grey"] { + box-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.shadow[class*="-gray"] { + box-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.shadow[class*="-black"] { + box-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2); +} + +.shadow[class*="-white"] { + box-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2); +} + +.text-shadow[class*="-red"] { + text-shadow: 6upx 6upx 8upx rgba(204, 69, 59, 0.2); +} + +.text-shadow[class*="-orange"] { + text-shadow: 6upx 6upx 8upx rgba(217, 109, 26, 0.2); +} + +.text-shadow[class*="-yellow"] { + text-shadow: 6upx 6upx 8upx rgba(224, 170, 7, 0.2); +} + +.text-shadow[class*="-olive"] { + text-shadow: 6upx 6upx 8upx rgba(124, 173, 55, 0.2); +} + +.text-shadow[class*="-green"] { + text-shadow: 6upx 6upx 8upx rgba(48, 156, 63, 0.2); +} + +.text-shadow[class*="-cyan"] { + text-shadow: 6upx 6upx 8upx rgba(28, 187, 180, 0.2); +} + +.text-shadow[class*="-blue"] { + text-shadow: 6upx 6upx 8upx rgba(0, 102, 204, 0.2); +} + +.text-shadow[class*="-purple"] { + text-shadow: 6upx 6upx 8upx rgba(88, 48, 156, 0.2); +} + +.text-shadow[class*="-mauve"] { + text-shadow: 6upx 6upx 8upx rgba(133, 33, 150, 0.2); +} + +.text-shadow[class*="-pink"] { + text-shadow: 6upx 6upx 8upx rgba(199, 50, 134, 0.2); +} + +.text-shadow[class*="-brown"] { + text-shadow: 6upx 6upx 8upx rgba(140, 88, 53, 0.2); +} + +.text-shadow[class*="-grey"] { + text-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.text-shadow[class*="-gray"] { + text-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.text-shadow[class*="-black"] { + text-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2); +} + +.bg-img { + background-size: cover; + background-position: center; + background-repeat: no-repeat; +} + +.bg-mask { + background-color: #333333; + position: relative; +} + +.bg-mask::after { + content: ""; + border-radius: inherit; + width: 100%; + height: 100%; + display: block; + background-color: rgba(0, 0, 0, 0.4); + position: absolute; + left: 0; + right: 0; + bottom: 0; + top: 0; +} + +.bg-mask view, +.bg-mask cover-view { + z-index: 5; + position: relative; +} + +.bg-video { + position: relative; +} + +.bg-video video { + display: block; + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; + position: absolute; + top: 0; + z-index: 0; + pointer-events: none; +} + +/* ================== + 鏂囨湰 + ==================== */ + +.text-xs { + font-size: 20upx; +} + +.text-sm { + font-size: 24upx; +} + +.text-df { + font-size: 28upx; +} + +.text-lg { + font-size: 32upx; +} + +.text-xl { + font-size: 36upx; +} + +.text-xxl { + font-size: 44upx; +} + +.text-sl { + font-size: 80upx; +} + +.text-xsl { + font-size: 120upx; +} + +.text-Abc { + text-transform: Capitalize; +} + +.text-ABC { + text-transform: Uppercase; +} + +.text-abc { + text-transform: Lowercase; +} + +.text-price::before { + content: "楼"; + font-size: 80%; + margin-right: 4upx; +} + +.text-cut { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.text-bold { + font-weight: bold; +} + +.text-center { + text-align: center; +} + +.text-content { + line-height: 1.6; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.text-red, +.line-red, +.lines-red { + color: #e54d42; +} + +.text-orange, +.line-orange, +.lines-orange { + color: #f37b1d; +} + +.text-yellow, +.line-yellow, +.lines-yellow { + color: #fbbd08; +} + +.text-olive, +.line-olive, +.lines-olive { + color: #8dc63f; +} + +.text-green, +.line-green, +.lines-green { + color: #39b54a; +} + +.text-cyan, +.line-cyan, +.lines-cyan { + color: #1cbbb4; +} + +.text-blue, +.line-blue, +.lines-blue { + color: #0081ff; +} + +.text-purple, +.line-purple, +.lines-purple { + color: #6739b6; +} + +.text-mauve, +.line-mauve, +.lines-mauve { + color: #9c26b0; +} + +.text-pink, +.line-pink, +.lines-pink { + color: #e03997; +} + +.text-brown, +.line-brown, +.lines-brown { + color: #a5673f; +} + +.text-grey, +.line-grey, +.lines-grey { + color: #8799a3; +} + +.text-gray, +.line-gray, +.lines-gray { + color: #aaaaaa; +} + +.text-black, +.line-black, +.lines-black { + color: #333333; +} + +.text-white, +.line-white, +.lines-white { + color: #ffffff; +} diff --git a/LA24030_LuLiPackageLine_Pda/components/BottomModal.vue b/LA24030_LuLiPackageLine_Pda/components/BottomModal.vue new file mode 100644 index 0000000..ba22b5e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/BottomModal.vue @@ -0,0 +1,88 @@ +<template> + <view class="cu-modal bottom-modal" :class="BottomModal?'show':''"> + <view class="cu-dialog" :style="'height:'+cudiaheight+'rpx'"> + <view v-if="hidshow" class="cu-bar bg-white"> + <view class="action text-green" @click="$emit('submit')">{{modaltitle}}</view> + <view class="action text-blue fontSize32rpx" @tap="$emit('hideModal')">鍙栨秷</view> + </view> + <view v-if="inputshow" class="cu-bar bg-white"> + <view style="margin-bottom: 5px;height: 45px;" + class="width background_fff border_top_F2F2F2 flex align-center justify-between border_bottom_fff "> + <view class="width70 flex align-center"> + <text class="fontSize42rpx margin_left10rpx iconfont icon-tiaomashuru"></text> + <slot name='serinput'></slot> + </view> + <view @tap="$emit('hideModal');" class="margin_right30rpx fontSize32rpx color_1989FA "> + 鍙栨秷 + </view> + </view> + </view> + <view class="padding-xl"> + <slot name="content"></slot> + </view> + </view> + </view> +</template> + +<script> + export default { + name:"BottomModal", + data() { + return { + sacncode:'' + }; + }, + props:{ + hidshow:{ + type:Boolean, + default:true + }, + inputshow:{ + type:Boolean, + default:false + }, + BottomModal:{ + type:Boolean, + default:false + }, + focusshow:{ + type:Boolean, + default:true + }, + cudiaheight:{ + type:String, + default:'200' + }, + placeholder:{ + type:String, + default:'' + }, + modaltitle:{ + type:String, + default:'纭' + } + }, + methods:{ + butonchange(e){ + console.log(e) + this.sacncode=e.target.value + this.$emit('butonchange',e.target.value) + }, + endsacn(){ + this.sacncode='' + }, + doSearch(e){ + this.sacncode=e.target.value + this.$emit('doSearch',e.target.value) + }, + qkseach(){ + console.log(789456464) + this.sacncode='' + } + } + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/components/CuModal.vue b/LA24030_LuLiPackageLine_Pda/components/CuModal.vue new file mode 100644 index 0000000..7b6b877 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/CuModal.vue @@ -0,0 +1,45 @@ +<template> + <view class="cu-modal" :class="modalshow?'show':''"> + <view class="cu-dialog" > + <view class="cu-bar bg-white justify-end"> + <view class="content">{{placeholder}}</view> + <view class="action" @tap="$emit('hideModal')"> + <text class="iconfont icon-guanbi text-red"></text> + </view> + </view> + <view class="padding-xl"> + <slot name="modal"></slot> + </view> + </view> + </view> +</template> + +<script> + export default { + name:"CuModal", + data() { + return { + show:false + }; + }, + props:{ + modalshow:{ + type:Boolean, + default:false + }, + placeholder:{ + type:String, + default:'' + } + }, + methods:{ + hideModal(){ + + } + } + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/components/LeftModal.vue b/LA24030_LuLiPackageLine_Pda/components/LeftModal.vue new file mode 100644 index 0000000..a9a74c9 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/LeftModal.vue @@ -0,0 +1,34 @@ +<template> + <view class="cu-modal drawer-modal justify-start" :class="DrawerModalL?'show':''" @click="$emit('hindle')"> + <view class="cu-dialog basis-lg" @tap.stop="" :style="[{top:CustomBar+'px',height:'calc(100vh - ' + CustomBar + 'px)'}]" > + <view class="cu-list menu text-left"> + <slot name="modalcontent"></slot> + </view> + </view> + </view> +</template> + +<script> + export default { + name:"LeftModal", + data() { + return { + modalName:false, + }; + }, + props:{ + DrawerModalL:{ + type:Boolean, + default:false + } + }, + + + + + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/components/Loding.vue b/LA24030_LuLiPackageLine_Pda/components/Loding.vue new file mode 100644 index 0000000..15e06a3 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/Loding.vue @@ -0,0 +1,27 @@ +<template> + <view class="cu-load load-modal" v-if="loadModal"> + <image src="/static/logo.png" mode="aspectFit"></image> + <view class="gray-text">鍔犺浇涓�...</view> + </view> +</template> + +<script> + export default { + name:"Loding", + data() { + return { + + }; + }, + props:{ + loadModal:{ + type:Boolean, + default:false + } + } + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/components/ModalCode.vue b/LA24030_LuLiPackageLine_Pda/components/ModalCode.vue new file mode 100644 index 0000000..d1cc34f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/ModalCode.vue @@ -0,0 +1,85 @@ +<template> + <u-modal v-model="show" :show-confirm-button="false" :mask-close-able="!showBtn" :show-cancel-button="false" + confirm-text="" :show-title="false" @tap="close"> + <view class="slot-content text_align_center flex align-center justify-center align-center" + style="min-height: 500rpx;"> + <view class="margin_auto padding5_10"> + <view :class="rescode == 200?'succeicon':'erroricon'" + class="margin_auto margin_bottom25rpx" + style="width: 250rpx;height: 200rpx;" + > + </view> + <!-- </view> --> + <view class="fontSize38rpx padding15 flex justify-center boxRwd" + style="width: 450rpx;"> + {{ resmessage }} + </view> + <br> + <!-- <button v-if="showBtn" class="width95 color_1989FA" @click="close(1)">鍏抽棴</button> --> + <!-- <br> --> + <!-- <button v-if="showBtn" class="width95 bg-f18202" @click="$emit('goYuKu')">瓒婂簱</button> --> + </view> + </view> + </u-modal> +</template> + +<script> + export default { + data() { + return { + show: false + } + }, + props: { + rescode: { + type: [String, Number], + default: 0 + }, + resmessage: { + type: [String, Object], + default: '' + }, + showBtn: { + type: [String, Number], + default: 0 + }, + // show: { + // type: Boolean, + // default: false + // } + }, + methods: { + close(param){ + if(this.showBtn==1 && !param){ + return + } + this.show = false + } + } + } +</script> + +<style lang="scss"> + .modalcode { + width: 94%; + margin: auto; + margin-top: 10px; + border-radius: 6px; + box-shadow: 0 0 4px #d4dde5; + } + + .succeicon { + background-image: url("../static/modal/success.png"); + background-size: cover; + } + + .erroricon { + background-image: url("../static/modal/error.png"); + background-size: cover; + } + + .boxRwd{ + word-wrap: break-word; + display: inline-block; + } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/components/MsiUpload.vue b/LA24030_LuLiPackageLine_Pda/components/MsiUpload.vue new file mode 100644 index 0000000..049bd3f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/MsiUpload.vue @@ -0,0 +1,32 @@ +<template> + <view> + <u-upload :action="action" :file-list="fileList" :max-count="count" :header="header" ref="uploadRef"></u-upload> + </view> +</template> + +<script> + export default { + name:"MsiUpload", + props: { + action: {type: String,required: true}, + count: {type: Number,default: 1}, + }, + data() { + return { + header: {Authorization: ''} + }; + }, + onLoad(){ + this.header.Authorization = 'Bearer ' + uni.getStorageSync('token'); + }, + methods: { + submit() { + this.$refs.uploadRef.submit(); + } + } + } +</script> + +<style> + +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/ScanCode.vue b/LA24030_LuLiPackageLine_Pda/components/ScanCode.vue new file mode 100644 index 0000000..193c7c4 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/ScanCode.vue @@ -0,0 +1,96 @@ +<template> + <view class="width background_fff border_top_F2F2F2 flex align-center justify-between border_bottom_fff padding_surround"> + <view class="width70 flex align-center"> + <text class="fontSize32rpx margin_right10rpx iconfont icon-bar-code"></text> + <input class="fontSize40rpx width" :focus="renamefocus" @focus='focuss' v-model="sacncode" @input="changeinput" @confirm="inputchange" + type="text" :placeholder="placeholder" /> + </view> + <button style="padding: 0;background-color: unset;line-height: unset;border: unset;" + class="margin_right30rpx fontSize60rpx color_1989FA iconfont icon-saoma" + @click="tel()"></button> + + </view> +</template> +<script> + // import {mixin} from '../utils/mixin.js' + export default { + name:"ScanCode", + data() { + return { + renamefocus:true,//鑾峰彇鐒︾偣 + sacncode:null, + changecode:null + }; + }, + // mixins:[mixin], + props:{ + renameFocus:{ + type:Boolean, + default:true + }, + placeholder:{ + type:String, + default:'璇锋壂鎻忕洓鍏风紪鐮�' + } + }, + onShow() { + // setTimeout(() => { + // // 鍗婃绉掑悗杞敭鐩橀殣钘� + // uni.hideKeyboard() + // }, 10) + }, + watch:{ + renameFocus:{ + handler(nv,ov){ + this.renamefocus=nv + }, + deep:true + } + }, + methods:{ + focuss() { + // uni.hideKeyboard() + }, + //鎵爜 + inputchange(event){ + uni.hideKeyboard() + this.sacncode=event.target.value + this.$emit('scancode',this.sacncode) + + }, + //妯$硦鏌ヨ + changeinput(event){ + // uni.hideKeyboard() + this.changecode=event.target.value + this.$emit('changecode',this.changecode) + + }, + //璋冪敤鎽勫儚澶存壂鐮� + tel(){ + // uni.scanCode({ + // success:function(res){ + // this.sacncode=JSON.stringify(res) + // console.log(JSON.stringify(res)); + // }, + // fail(res) { + // console.log(res) + // } + // }); + }, + clearinquer(event){ + // setTimeout(()=>{ + this.sacncode='' + // this.renamefocus=true + uni.hideKeyboard() + // },500) + } + } + } +</script> + +<style lang="scss"> + +.uni-button{ + padding: 0 !important; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/components/SelectList.vue b/LA24030_LuLiPackageLine_Pda/components/SelectList.vue new file mode 100644 index 0000000..e5897da --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/SelectList.vue @@ -0,0 +1,39 @@ +<template> + <view class="width background_fff border_top_F2F2F2 flex align-center justify-between border_bottom_fff padding_surround"> + <view class="width70 flex align-center"> + <text class=" margin_right10rpx iconfont icon-chaxun"></text> + <input class="fontSize32rpx width" disabled + type="text" :placeholder="placeholder" @click="inputchange" /> + </view> + <!-- <text class=" margin_right30rpx iconfont icon-zelvxuanzefeiyongzhengsanjiaoxingzhichi" + :class="modalshow?'transition_rotate180':'transition_rotate0'" + ></text> --> + <cu-modal placeholder='宸ュ崟缂栧彿' :modalshow='modalshow' @hideModal='inputchange' /> + </view> +</template> + +<script> + export default { + name:"SelectList", + data() { + return { + modalshow:false + }; + }, + props:{ + placeholder:{ + type:String, + default:'璇烽�夋嫨宸ュ崟缂栧彿' + } + }, + methods:{ + inputchange(){ + this.modalshow=!this.modalshow + } + } + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/components/blue.vue b/LA24030_LuLiPackageLine_Pda/components/blue.vue new file mode 100644 index 0000000..d81c57f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/blue.vue @@ -0,0 +1,84 @@ +<template> + <view> + <view class="border margin_top30rpx"> + <h2 class="text_align_center padding_bottom18 padding15 margin_bottom10rpx">閫夋嫨鎵撳嵃椹卞姩</h2> + <scroll-view scroll-y="true" style="height: 150rpx;"> + <view style="margin-top: 30upx;" :key="index" v-for="(item,index) in list"> + <button style="width: 400upx; color: #f18202;background-color: #fff;border: 1px solid #f18202;" + @click="longpress(item,index)" + :class="active==index?'bg-f18202':'color_f18202 border_1989FA'">{{item.name}}</button> + </view> + <view style="margin-top: 30upx;height: 130rpx;" v-if='list.length==0'> + <button + style="width: 600upx; color: #f18202;background-color: #fff;border: 1px solid #f18202;">鏆傛棤椹卞姩</button> + </view> + </scroll-view> + <u-form :model="ware" ref="wareRef" v-if="numberShow" style='border-top: 1px solid #e4e4e4;'> + <u-row> + <u-col span="12"> + <u-form-item label="鎵撳嵃鏁伴噺:" prop="num" required label-width='150' + class='margin_left30rpx font_weight_bold'> + <input v-model="printNum" placeholder="璇疯緭鍏ユ墦鍗版暟閲�" class='width' + style="margin-left: 30rpx;text-align: right;"> + </input> + </u-form-item> + </u-col> + </u-row> + </u-form> + + </view> + <view class="flex justify-around transition margin_bottom30rpx margin_top30rpx"> + <button class="width25 bg-grey" @click="$emit('back')">涓婁竴姝�</button> + <button class="width70 bg-f18202 color_F2F2F2" @click="writeBLECharacteristicValue">鎵撳嵃</button> + </view> + </view> +</template> + +<script> + import mixBule from '@/mixins/Blue.js' + export default { + mixins: [mixBule], + data() { + return { + list: [], + active: null, + printNum:'', + ware: { + num: '' + }, + wareRules: { + num: [{ + required: true, + message: '鎵撳嵃鏁伴噺涓嶈兘涓虹┖', + trigger: 'blur' + }] + } + } + }, + props: { + numberShow: { + type: Boolean, + default: false + }, + printlist: { + type: Object, + default:{} + } + }, + onReady() { + this.$refs.wareRef.setRules(this.wareRules) + }, + created() { + this.tomy() + this.openBluetoothAdapter() + }, + mounted() { + // console.log(this.printlist) + }, + methods: { + } + } +</script> + +<style> +</style> diff --git a/LA24030_LuLiPackageLine_Pda/components/buttonModal.vue b/LA24030_LuLiPackageLine_Pda/components/buttonModal.vue new file mode 100644 index 0000000..5291243 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/buttonModal.vue @@ -0,0 +1,115 @@ +<template> + <view class="width height140rpx fixed transformX left50 bottom0 background_fff padding40_0"> + <button v-if="singforShow" :disabled="disabled" class=" width90 bg-blue transition" + @click="$emit('submit')">{{singfoTitle}}</button> + <view v-if="garmenShow" class="flex justify-around transition"> + <button class="width70 bg-f18202 color_F2F2F2" @click="$emit('submit')">{{garmenTitle}}</button> + <button class="width25 bg-grey" @click="$emit('reset')">閲嶇疆</button> + + </view> + <view v-if="subShow" class="flex justify-around transition" style="padding-top: 10rpx;"> + <button class="width95 bg-f18202" @click="$emit('submit')">{{garmenTitle}}</button> + </view> + <view v-if="empTytowerShow" class="flex justify-around transition"> + <button class="width45 bg-grey" @click="$emit('reset')">{{cleaningTitle}}</button> + <button class="width45 bg-f18202 color_F2F2F2" @click="$emit('submit')">{{garmenTitle}}</button> + </view> + <view v-if="cleaningShow" class="flex justify-around transition"> + <button class="width45 bg-grey" @click="$emit('allsubmit')">{{allTitle}}</button> + <button class="width45 bg-f18202 color_F2F2F2" @click="$emit('submit')">{{cleaningTitle}}</button> + </view> + <view v-if="printShow" class="flex justify-around transition"> + <button class="width45 bg-f18202" @click="$emit('submit')">{{garmenTitle}}</button> + <button class="width25 bg-ffe6c9" @click="$emit('print')">鎵撳嵃</button> + <button class="width25 bg-grey" @click="$emit('reset')">閲嶇疆</button> + </view> + <view v-if="issueShow" class="flex justify-around transition"> + <button class="width33 bg-ffe6c9 " @click="$emit('issue')">{{issueTitle}}</button> + <button class="width33 bg-grey" @click="$emit('reset')">{{restTiltle}}</button> + <button class="width25 bg-f18202 color_F2F2F2" @click="$emit('submit')">{{subTitle}}</button> + </view> + </view> +</template> + +<script> + export default { + name: "buttonModal", + data() { + return { + + }; + }, + props: { + singforShow: { + type: Boolean, + default: false + }, + empTytowerShow: { + type: Boolean, + default: false + }, + disabled: { + type: Boolean, + default: false + }, + garmenShow: { + type: Boolean, + default: false + }, + subShow: { + type: Boolean, + default: false + }, + cleaningShow: { + type: Boolean, + default: false + }, + printShow: { + type: Boolean, + default: false + }, + issueShow: { + type: Boolean, + default: false + }, + garmenTitle: { + type: String, + defaultr: '涓嬬嚎缁戝畾' + }, + singfoTitle: { + type: String, + default: '绛炬敹' + }, + resetTitle: { + type: String, + default: '鍏ㄩ儴鍒犻櫎' + }, + allTitle: { + type: String, + defaultr: '鍏ㄩ儴鍑哄簱' + }, + cleaningTitle: { + type: String, + defaultr: '鍑哄簱' + }, + issueTitle: { + type: String, + defaultr: '闂鏍囪' + }, + restTiltle: { + type: String, + defaultr: '閲嶇疆' + }, + subTitle: { + type: String, + defaultr: '纭畾' + }, + } + } +</script> + +<style lang="scss" scoped> +// uni-button{ +// // font-size: 16px !important; +// } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/components/cascader.vue b/LA24030_LuLiPackageLine_Pda/components/cascader.vue new file mode 100644 index 0000000..8921cc9 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/cascader.vue @@ -0,0 +1,538 @@ +<template> + <view> + <u-popup v-model="showPop" mode="bottom"> + <view class="cascader-head"> + <text class="cancel" @click="cancelSelect">鍙栨秷</text> + <text class="title">璇烽�夋嫨</text> + <text class="confirem" @click="confiremSelect">纭畾</text> + </view> + <view class="cascader"> + <scroll-view class="item" style="width: 300rpx;" scroll-y="true"> + <view class="item-block" v-for="(item, index) in selectData" :key="index" v-if="selectData.length > 0" + :style="{ 'background': current == index ? 'white' : '#f8f8f8', 'color': current == index ? '#f44c01' : '#333333' }" + @click="selectOne(index,item)"> + <view style="flex: 1;"> + <text>{{ item.name }}</text> + </view> + </view> + </scroll-view> + <scroll-view class="item" style="background-color: white;" scroll-y="true"> + <block v-if="selectData.length > 0 && selectData[current].children.length > 0"> + <view class="item-cont" v-for="(item, index) in selectData[current].children" :key="index"> + <view class="item-cate" @click="selectTwo(item, index)"> + <text class="title" :style="{ 'color': item.active ? '#f44c01' : '#333333' }">{{ + item.name || '绌烘満搴婂彿'}}</text> + <u-icon v-if="item.active" name="checkmark" color="#f44c01" size="28"></u-icon> + </view> + <view class="item-cellbox" v-if="item.children && item.children.length > 0"> + <text class="item-cell" v-for="(it, ix) in item.children" :key="ix" + @click="selectTree(index, it, ix)" + v-bind:style="{ color: it.active ? '#ffffff' : '#666666', background: it.active ? 'red' : '#f8f8f8' }">{{ + it.name }} </text> + </view> + </view> + </block> + </scroll-view> + </view> + </u-popup> + </view> +</template> + +<script> +import { selectOneQuery, selectTwoQuery,selectTwoQueryDelivery, selectThereQuery } from '../api/sort.js' +export default { + name: 'cascader', + props: { + activeIndex: { + type: Number, + default: 0 + }, + cascaderShow: { + type: Boolean, + default: false, + }, + //寮�鍚竴绾ч�夋嫨 + oneSelect: { + type: Boolean, + default: true, + }, + //寮�鍚簩绾ч�夋嫨 + twoSelect: { + type: Boolean, + default: true, + }, + //label灞曠ず瀛楁 + labelName: { + type: String, + default: 'name' + }, + //value閫変腑瀛楁 + valueName: { + type: String, + default: 'id' + }, + //鍒濆閫変腑鍊� + selectValue: { + type: Array, + default: () => { + return []; + } + }, + //閫夋嫨鏁版嵁 + cascaderData: { + type: Array, + default: () => { + return []; + } + }, + titleData: { + type: Object, + default: () => { + return {}; + } + } + }, + data() { + return { + current: this.activeIndex, + showPop: this.cascaderShow, + selectDataCopy: JSON.parse(JSON.stringify(this.cascaderData)), + selectData: JSON.parse(JSON.stringify(this.cascaderData)), + paramD : {} + } + }, + watch: { + cascaderData(val, oldVal) { + this.selectData = JSON.parse(JSON.stringify(val)); + } + }, + mounted() { + // this.defaultSelect() + }, + methods: { + // 鍒濆鍖栭�変腑 + defaultSelect() { + let selectData = this.selectData; + console.log(this.selectValue) + for (let i = 0; i < this.selectValue.length; i++) { + for (let y = 0; y < selectData.length; y++) { + if (selectData[y][this.valueName] == this.selectValue[i]) { + selectData[y].active = true; + break; + } else { + for (let x = 0; x < selectData[y].children.length; x++) { + if (selectData[y].children[x][this.valueName] == this.selectValue[i]) { + selectData[y].children[x].active = true; + selectData[y].child_active = true; + break; + } else { + for (let z = 0; z < selectData[y].children[x].children.length; z++) { + if (selectData[y].children[x].children[x][this.valueName] == this.selectValue[i]) { + selectData[y].children[x].children[x].active = true; + selectData[y].child_active = true; + selectData[y].children[x].child_active = true; + break; + } + } + } + } + } + } + } + return; + }, + show(pram) { + this.showPop = true; + this.paramD = pram + // this.defaultSelect() + // if (this.selectData.length > 0) { + // return + // } + // 鑾峰彇1绾ф暟鎹� 0712 + selectOneQuery(pram).then((res) => { + if (res.code == 200) { + // 娴嬭瘯 + // if(res.data.length==0){ + // res.data = ['gx12','gx23'] + // } + let arr = [] + if(res.data.length>0){ + res.data.map((item,index)=>{ + if(item =='' || item == null){ + return + } + arr.push({ + id: item, + name: item, + children: [] + }) + }) + + this.selectData = arr + this.getTwoData(0,this.selectData[0],pram) + this.current = 0 + } + + + } + }).catch((err)=>{ + this.showPop = false + }) + }, + + // 鑾峰彇浜岀骇鏁版嵁 + getTwoData(index,item) { + if (this.selectData[index].children.length <= 0) { + let fnName = selectTwoQuery // 鍒嗘嫞-鏌ュ伐搴忔満搴婂彿 + if(this.titleData.typeInterface && this.titleData.typeInterface=='KingtingDo'){ + fnName = selectTwoQueryDelivery // kitting鍙戣揣-鏌ュ伐搴忔満搴婂彿 + } + fnName({ + 'process': item.id, + 'locationType':this.titleData.locationType, // 1:A3鍖哄煙锛�2:A1-A2鍖哄煙 + 'type':this.titleData.type, + ...this.paramD + }).then((res) => { + if (res.code == 200) { + // 娴嬭瘯 + // if(res.data.length==0){ + // res.data = ['jq12','jq23','jq23','jq23','jq23','jq23','jq23','jq23last'] + // } + let arr = [] + if(res.data.length>0){ + res.data.map((item,index)=>{ + arr.push({ + id: item, + name: item, + children: [] + }) + }) + this.selectData[index].children = arr + } + + } + }).catch(()=>{ + this.showPop = false + }) + } + }, + // 鑾峰彇3绾ф暟鎹� + getThereData(index,item) { + console.log("selectTwo") + if (this.selectData[this.current].children[index].children.length <= 0) { + selectThereQuery({ + 'process': this.selectData[this.current].id, + "equipmentList": [item.id], + 'locationType':this.titleData.locationType, // 1:A3鍖哄煙锛�2:A1-A2鍖哄煙 + 'type':this.titleData.type + }).then((res) => { + if (res.code == 200) { + // 娴嬭瘯 + // if(res.data.length==0){ + // res.data = ['kwh12','kwh23','kwh23','kwh23','kwh23','kwh23','kwh23','kwh23','kwh23'] + // } + let arr = [] + if(res.data.length>0){ + res.data.map((item,index)=>{ + arr.push({ + id: item, + name: item + }) + }) + this.selectData[this.current].children[index].children = arr + } + } + }).catch(()=>{ + this.showPop = false + }) + } + }, + hide() { + this.showPop = false; + }, + checkboxChange(e, index) { + let oneData = this.selectData[index]; + oneData.active = e.value; + this.$set(this.selectData, index, oneData); + }, + selectOne(index,item) { + console.log("selectOne") + this.current = index; + + // 娓呯┖鎵�鏈夐�変腑鐨勫簱浣� + this.selectData.map((it)=>{ + if(it.children&&it.children.length>0){ + it.children.map((itInner)=>{ + itInner.active = false + if(itInner.children&&itInner.children.length>0){ + itInner.children.map((itInner2)=>{ + itInner2.active = false + }) + } + }) + } + }) + // end娓呯┖鎵�鏈夐�変腑鐨勫簱浣� + this.getTwoData(index,item) // 鑾峰彇浜岀骇鏁版嵁 + }, + + selectTwo(item, index) { + + // this.getThereData(index,item) + if (!this.twoSelect) return; + let twoData = this.selectData[this.current]; + if (twoData.children[index].active) { + twoData.children[index] = { + ...item, + active: false + }; + //鍒ゆ柇鍏勫紵涓槸鍚﹀凡鏃犻�変腑 + let status = false; + twoData.children.map((cell) => { + if (cell.active) { + status = true; + } + if (cell.children && cell.children.length > 0) { + cell.children.map((it) => { + if (it.active) { + status = true; + } + }) + } + + }) + if (!status) { + twoData.child_active = false; + } + } else { + twoData.children[index] = { + ...item, + active: true + }; + twoData.child_active = true; + } + this.$set(this.selectData, this.current, twoData); + }, + selectTree(Pindex, item, index) { + console.log(this.selectData) + let twoData = this.selectData[this.current]; + let treeData = twoData.children[Pindex]; + if (treeData.children[index].active) { + treeData.children[index] = { + ...item, + active: false + }; + //鍒ゆ柇鍏勫紵涓槸鍚﹀凡鏃犻�変腑 + let status = false; + treeData.children.map((cell) => { + if (cell.active) { + status = true; + } + }) + if (!status) { + treeData.child_active = false; + } + //鏌ユ壘鐖剁骇涓嬮潰鏄惁鏈夐�変腑椤� + let pstatus = false; + twoData.children.map((cell) => { + if (cell.active) { + pstatus = true; + } + cell.children.map((it) => { + if (it.active) { + pstatus = true; + } + }) + }) + if (!pstatus) { + twoData.child_active = false; + } + } else { + // 鍗曢�� + treeData.children.forEach((item)=>{ + item.active = false + }) + // end鍗曢�� + treeData.children[index] = { + ...item, + active: true + }; + //鏍囪瘑鐖剁骇涓嬮潰閫変腑 + treeData.child_active = true; + twoData.child_active = true; + } + this.$set(this.selectData, this.current, twoData); + }, + cancelSelect() { + this.selectData = JSON.parse(JSON.stringify(this.selectDataCopy)) + this.showPop = false; + }, + // 纭 + confiremSelect() { + let data = this.selectData; + let select_ids = []; + let select_names = []; + let equipmentList = []; + data.map((item, index) => { + if (item.active) { + select_ids.push(item[this.valueName]); + select_names.push(item[this.labelName]); + } + if (item.children && item.children.length > 0) { + item.children.map((it, ix) => { + if(it.child_active){ + equipmentList.push(it.id) + } + if (it.active) { + select_ids.push(it[this.valueName]); + select_names.push(it[this.labelName]); + } + if (it.children && it.children.length > 0) { + it.children.map((itc, ixc) => { + if (itc.active) { + select_ids.push(itc[this.valueName]); + select_names.push(itc[this.labelName]); + } + }) + } + }) + } + }) + + let select_ids2=Array.from(new Set(select_ids));//鍘婚噸 + let select_names2=Array.from(new Set(select_names));//鍘婚噸 + // 鍗曢�� + console.log(select_ids2.length) + // if(select_ids2.length<=0){ + // uni.showToast({ + // title: '璇烽�夋嫨鏈哄簥鍙�', + // icon: 'none', + // duration: 2000 + // }); + // return + // } + // if(select_ids2.length!=1){ + // uni.showToast({ + // title: '涓嶅悓鏈哄櫒锛屽彧鑳介�変竴涓浉鍚岀殑搴撲綅缂栧彿', + // icon: 'none', + // duration: 2000 + // }); + // return + // } + this.$emit('confirem', { + // select_ids: select_ids2, + // select_names: select_names2, + process:this.selectData[this.current].id, + // equipmentList:equipmentList + equipmentList:select_ids2 + + }); + this.showPop = false; + } + } +} +</script> + +<style lang="scss" scoped> +.cascader-head { + height: 100rpx; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + padding: 0 30rpx; + border-bottom: 1rpx solid #e6e6e6; + + .cancel { + font-size: 30rpx; + color: #666666; + } + + .title { + font-size: 30rpx; + color: #333333; + } + + .confirem { + font-size: 30rpx; + color: #666666; + } +} + +.cascader { + display: flex; + flex-direction: row; + height: 400px; + background-color: #F8F8F8; + .item { + height: 400px; + + .item-block { + display: flex; + flex-direction: row; + align-items: center; + height: 50px; + padding: 10px; + font-size: 14px; + color: #333333; + } + + .item-list { + display: flex; + flex-direction: row; + align-items: center; + height: 50px; + border-bottom: 1rpx solid #e6e6e6; + padding: 0 10px; + } + + .item-cont { + display: flex; + flex-direction: column; + padding: 10px; + + .item-cate { + border-bottom: 1rpx solid #e6e6e6; + padding: 10px 0; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + + .title { + font-size: 15px; + color: #333333; + } + } + + .item-cellbox { + display: flex; + flex-direction: row; + align-items: center; + flex-wrap: wrap; + + .item-cell { + width: 80px; + height: 30px; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + background-color: #F8F8F8; + margin-right: 8px; + font-size: 14px; + color: #666666; + margin-top: 10px; + border-radius: 5px; + } + + } + + .active { + color: '#ffffff'; + background: '#fa3534'; + } + } + } +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/components/cascader2.vue b/LA24030_LuLiPackageLine_Pda/components/cascader2.vue new file mode 100644 index 0000000..d6582b6 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/cascader2.vue @@ -0,0 +1,551 @@ +<!-- 浠呬緵鍙栬揣椤甸潰浣跨敤 --> +<template> + <view> + <u-popup v-model="showPop" mode="bottom"> + <view class="cascader-head"> + <text class="cancel" @click="cancelSelect">鍙栨秷</text> + <text class="title">璇烽�夋嫨</text> + <text class="confirem" @click="confiremSelect">纭畾</text> + </view> + <view class="cascader"> + <scroll-view class="item" style="width: 300rpx;" scroll-y="true"> + <view class="item-block" v-for="(item, index) in selectData" :key="index" v-if="selectData.length > 0" + :style="{ 'background': current == index ? 'white' : '#f8f8f8', 'color': current == index ? '#f44c01' : '#333333' }" + @click="selectOne(index,item)"> + <view style="flex: 1;"> + <text>{{ item.name }}</text> + </view> + </view> + </scroll-view> + <scroll-view class="item" style="background-color: white;" scroll-y="true"> + <block v-if="selectData.length > 0 && selectData[current].children.length > 0"> + <view class="item-cont" v-for="(item, index) in selectData[current].children" :key="index"> + <view class="item-cate" @click="selectTwo(item, index)"> + <text class="title" :style="{ 'color': item.active ? '#f44c01' : '#333333' }">{{ + item.name || '绌烘満搴婂彿'}}</text> + <u-icon v-if="item.active" name="checkmark" color="#f44c01" size="28"></u-icon> + </view> + <view class="item-cellbox" v-if="item.children && item.children.length > 0"> + <text class="item-cell" v-for="(it, ix) in item.children" :key="ix" + @click="selectTree(index, it, ix)" + v-bind:style="{ color: it.active ? '#ffffff' : '#666666', background: it.active ? 'red' : '#f8f8f8' }">{{ + it.name }} </text> + </view> + </view> + </block> + </scroll-view> + </view> + </u-popup> + </view> +</template> + +<script> +import { selectOneQuery, selectTwoQuery,selectTwoQueryDelivery, selectThereQuery } from '../api/sort.js' +export default { + name: 'cascader', + props: { + activeIndex: { + type: Number, + default: 0 + }, + cascaderShow: { + type: Boolean, + default: false, + }, + //寮�鍚竴绾ч�夋嫨 + oneSelect: { + type: Boolean, + default: true, + }, + //寮�鍚簩绾ч�夋嫨 + twoSelect: { + type: Boolean, + default: true, + }, + //label灞曠ず瀛楁 + labelName: { + type: String, + default: 'name' + }, + //value閫変腑瀛楁 + valueName: { + type: String, + default: 'id' + }, + //鍒濆閫変腑鍊� + selectValue: { + type: Array, + default: () => { + return []; + } + }, + //閫夋嫨鏁版嵁 + cascaderData: { + type: Array, + default: () => { + return []; + } + }, + titleData: { + type: Object, + default: () => { + return {}; + } + } + }, + data() { + return { + current: this.activeIndex, + showPop: this.cascaderShow, + selectDataCopy: JSON.parse(JSON.stringify(this.cascaderData)), + selectData: JSON.parse(JSON.stringify(this.cascaderData)), + paramD : {} + } + }, + watch: { + cascaderData(val, oldVal) { + this.selectData = JSON.parse(JSON.stringify(val)); + } + }, + mounted() { + // this.defaultSelect() + }, + methods: { + // 鍒濆鍖栭�変腑 + defaultSelect() { + let selectData = this.selectData; + console.log(this.selectValue) + for (let i = 0; i < this.selectValue.length; i++) { + for (let y = 0; y < selectData.length; y++) { + if (selectData[y][this.valueName] == this.selectValue[i]) { + selectData[y].active = true; + break; + } else { + for (let x = 0; x < selectData[y].children.length; x++) { + if (selectData[y].children[x][this.valueName] == this.selectValue[i]) { + selectData[y].children[x].active = true; + selectData[y].child_active = true; + break; + } else { + for (let z = 0; z < selectData[y].children[x].children.length; z++) { + if (selectData[y].children[x].children[x][this.valueName] == this.selectValue[i]) { + selectData[y].children[x].children[x].active = true; + selectData[y].child_active = true; + selectData[y].children[x].child_active = true; + break; + } + } + } + } + } + } + } + return; + }, + show(pram) { + this.showPop = true; + this.paramD = pram + + // this.defaultSelect() + // if (this.selectData.length > 0) { + // return + // } + + this.selectData = [ + { + id: '鏈哄簥鍙�', + name: '鏈哄簥鍙�', + children: [] + } + ] + this.getTwoData(0,this.selectData[0],pram) + this.current = 0 + + + // 鑾峰彇1绾ф暟鎹� 0712 + // selectOneQuery(pram).then((res) => { + // if (res.code == 200) { + // // 娴嬭瘯 + // // if(res.data.length==0){ + // // res.data = ['gx12','gx23'] + // // } + // let arr = [] + // if(res.data.length>0){ + // res.data.map((item,index)=>{ + // if(item =='' || item == null){ + // return + // } + // arr.push({ + // id: item, + // name: item, + // children: [] + // }) + // }) + // console.log( 222222222222222222222) + // console.log( arr) + // this.selectData = arr + // this.getTwoData(0,this.selectData[0],pram) + // this.current = 0 + // } + // } + // }).catch((err)=>{ + // this.showPop = false + // }) + }, + + // 鑾峰彇浜岀骇鏁版嵁 + getTwoData(index,item) { + if (this.selectData[index].children.length <= 0) { + let fnName = selectTwoQuery // 鍒嗘嫞-鏌ュ伐搴忔満搴婂彿 + if(this.titleData.typeInterface && this.titleData.typeInterface=='KingtingDo'){ + fnName = selectTwoQueryDelivery // kitting鍙戣揣-鏌ュ伐搴忔満搴婂彿 + } + fnName({ + // 'process': item.id, + 'locationType':this.titleData.locationType, // 1:A3鍖哄煙锛�2:A1-A2鍖哄煙 + 'type':this.titleData.type, + ...this.paramD + }).then((res) => { + if (res.code == 200) { + // 娴嬭瘯 + // if(res.data.length==0){ + // res.data = ['jq12','jq23','jq23','jq23','jq23','jq23','jq23','jq23last'] + // } + let arr = [] + if(res.data.length>0){ + res.data.map((item,index)=>{ + arr.push({ + id: item, + name: item, + children: [] + }) + }) + this.selectData[index].children = arr + } + + } + }).catch(()=>{ + this.showPop = false + }) + } + }, + // 鑾峰彇3绾ф暟鎹� + getThereData(index,item) { + console.log("selectTwo") + if (this.selectData[this.current].children[index].children.length <= 0) { + selectThereQuery({ + 'process': this.selectData[this.current].id, + "equipmentList": [item.id], + 'locationType':this.titleData.locationType, // 1:A3鍖哄煙锛�2:A1-A2鍖哄煙 + 'type':this.titleData.type + }).then((res) => { + if (res.code == 200) { + // 娴嬭瘯 + // if(res.data.length==0){ + // res.data = ['kwh12','kwh23','kwh23','kwh23','kwh23','kwh23','kwh23','kwh23','kwh23'] + // } + let arr = [] + if(res.data.length>0){ + res.data.map((item,index)=>{ + arr.push({ + id: item, + name: item + }) + }) + this.selectData[this.current].children[index].children = arr + } + } + }).catch(()=>{ + this.showPop = false + }) + } + }, + hide() { + this.showPop = false; + }, + checkboxChange(e, index) { + let oneData = this.selectData[index]; + oneData.active = e.value; + this.$set(this.selectData, index, oneData); + }, + selectOne(index,item) { + console.log("selectOne") + this.current = index; + + // 娓呯┖鎵�鏈夐�変腑鐨勫簱浣� + this.selectData.map((it)=>{ + if(it.children&&it.children.length>0){ + it.children.map((itInner)=>{ + itInner.active = false + if(itInner.children&&itInner.children.length>0){ + itInner.children.map((itInner2)=>{ + itInner2.active = false + }) + } + }) + } + }) + // end娓呯┖鎵�鏈夐�変腑鐨勫簱浣� + this.getTwoData(index,item) // 鑾峰彇浜岀骇鏁版嵁 + }, + + selectTwo(item, index) { + + // this.getThereData(index,item) + if (!this.twoSelect) return; + let twoData = this.selectData[this.current]; + if (twoData.children[index].active) { + twoData.children[index] = { + ...item, + active: false + }; + //鍒ゆ柇鍏勫紵涓槸鍚﹀凡鏃犻�変腑 + let status = false; + twoData.children.map((cell) => { + if (cell.active) { + status = true; + } + if (cell.children && cell.children.length > 0) { + cell.children.map((it) => { + if (it.active) { + status = true; + } + }) + } + + }) + if (!status) { + twoData.child_active = false; + } + } else { + twoData.children[index] = { + ...item, + active: true + }; + twoData.child_active = true; + } + this.$set(this.selectData, this.current, twoData); + }, + selectTree(Pindex, item, index) { + console.log(this.selectData) + let twoData = this.selectData[this.current]; + let treeData = twoData.children[Pindex]; + if (treeData.children[index].active) { + treeData.children[index] = { + ...item, + active: false + }; + //鍒ゆ柇鍏勫紵涓槸鍚﹀凡鏃犻�変腑 + let status = false; + treeData.children.map((cell) => { + if (cell.active) { + status = true; + } + }) + if (!status) { + treeData.child_active = false; + } + //鏌ユ壘鐖剁骇涓嬮潰鏄惁鏈夐�変腑椤� + let pstatus = false; + twoData.children.map((cell) => { + if (cell.active) { + pstatus = true; + } + cell.children.map((it) => { + if (it.active) { + pstatus = true; + } + }) + }) + if (!pstatus) { + twoData.child_active = false; + } + } else { + // 鍗曢�� + treeData.children.forEach((item)=>{ + item.active = false + }) + // end鍗曢�� + treeData.children[index] = { + ...item, + active: true + }; + //鏍囪瘑鐖剁骇涓嬮潰閫変腑 + treeData.child_active = true; + twoData.child_active = true; + } + this.$set(this.selectData, this.current, twoData); + }, + cancelSelect() { + this.selectData = JSON.parse(JSON.stringify(this.selectDataCopy)) + this.showPop = false; + }, + // 纭 + confiremSelect() { + let data = this.selectData; + let select_ids = []; + let select_names = []; + let equipmentList = []; + data.map((item, index) => { + if (item.active) { + select_ids.push(item[this.valueName]); + select_names.push(item[this.labelName]); + } + if (item.children && item.children.length > 0) { + item.children.map((it, ix) => { + if(it.child_active){ + equipmentList.push(it.id) + } + if (it.active) { + select_ids.push(it[this.valueName]); + select_names.push(it[this.labelName]); + } + if (it.children && it.children.length > 0) { + it.children.map((itc, ixc) => { + if (itc.active) { + select_ids.push(itc[this.valueName]); + select_names.push(itc[this.labelName]); + } + }) + } + }) + } + }) + + let select_ids2=Array.from(new Set(select_ids));//鍘婚噸 + let select_names2=Array.from(new Set(select_names));//鍘婚噸 + // 鍗曢�� + console.log(select_ids2.length) + // if(select_ids2.length<=0){ + // uni.showToast({ + // title: '璇烽�夋嫨鏈哄簥鍙�', + // icon: 'none', + // duration: 2000 + // }); + // return + // } + // if(select_ids2.length!=1){ + // uni.showToast({ + // title: '涓嶅悓鏈哄櫒锛屽彧鑳介�変竴涓浉鍚岀殑搴撲綅缂栧彿', + // icon: 'none', + // duration: 2000 + // }); + // return + // } + this.$emit('confirem', { + // select_ids: select_ids2, + // select_names: select_names2, + process:this.selectData[this.current].id, + // equipmentList:equipmentList + equipmentList:select_ids2 + + }); + this.showPop = false; + } + } +} +</script> + +<style lang="scss" scoped> +.cascader-head { + height: 100rpx; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + padding: 0 30rpx; + border-bottom: 1rpx solid #e6e6e6; + + .cancel { + font-size: 30rpx; + color: #666666; + } + + .title { + font-size: 30rpx; + color: #333333; + } + + .confirem { + font-size: 30rpx; + color: #666666; + } +} + +.cascader { + display: flex; + flex-direction: row; + height: 400px; + background-color: #F8F8F8; + .item { + height: 400px; + + .item-block { + display: flex; + flex-direction: row; + align-items: center; + height: 50px; + padding: 10px; + font-size: 14px; + color: #333333; + } + + .item-list { + display: flex; + flex-direction: row; + align-items: center; + height: 50px; + border-bottom: 1rpx solid #e6e6e6; + padding: 0 10px; + } + + .item-cont { + display: flex; + flex-direction: column; + padding: 10px; + + .item-cate { + border-bottom: 1rpx solid #e6e6e6; + padding: 10px 0; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + + .title { + font-size: 15px; + color: #333333; + } + } + + .item-cellbox { + display: flex; + flex-direction: row; + align-items: center; + flex-wrap: wrap; + + .item-cell { + width: 80px; + height: 30px; + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + background-color: #F8F8F8; + margin-right: 8px; + font-size: 14px; + color: #666666; + margin-top: 10px; + border-radius: 5px; + } + + } + + .active { + color: '#ffffff'; + background: '#fa3534'; + } + } + } +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/components/noclick.js b/LA24030_LuLiPackageLine_Pda/components/noclick.js new file mode 100644 index 0000000..935a516 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/noclick.js @@ -0,0 +1,24 @@ +// 闃叉澶勭悊澶氭鐐瑰嚮 +function noMultipleClicks(methods, info) { + // methods鏄渶瑕佺偣鍑诲悗闇�瑕佹墽琛岀殑鍑芥暟锛� info鏄偣鍑婚渶瑕佷紶鐨勫弬鏁� + let that = this; + if (that.noClick) { + // 绗竴娆$偣鍑� + that.noClick = false; + if (info && info !== '') { + // info鏄墽琛屽嚱鏁伴渶瑕佷紶鐨勫弬鏁� + methods(info); + } else { + methods(); + } + setTimeout(() => { + that.noClick = true; + }, 1500) + } else { + // 杩欓噷鏄噸澶嶇偣鍑荤殑鍒ゆ柇 + } +} +//瀵煎嚭 +export default { + noMultipleClicks, //绂佹澶氭鐐瑰嚮 +} diff --git a/LA24030_LuLiPackageLine_Pda/components/print/bluetooth.js b/LA24030_LuLiPackageLine_Pda/components/print/bluetooth.js new file mode 100644 index 0000000..8e9bc3f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/print/bluetooth.js @@ -0,0 +1,268 @@ +class Bluetooth { + + constructor() { + this.isOpenBle = false; + this.deviceId = ""; + this.serviceId = ""; + this.writeId = ""; + this.notifyId = ""; + this.openBluetoothAdapter(); + } + + showToast(title) { + uni.showToast({ + title: title, + icon: 'none', + 'duration': 2000 + }); + } + + openBluetoothAdapter() { + return new Promise((resolve, reject) => { + uni.openBluetoothAdapter({ + success: res => { + this.isOpenBle = true; + this.showToast("鍒濆鍖栬摑鐗欐ā鍧楁垚鍔�"); + resolve(res); + }, + fail: err => { + this.showToast(`鍒濆鍖栬摑鐗欐ā鍧楀け璐 + JSON.stringify(err)); + reject(err); + }, + }); + }); + + } + + startBluetoothDevicesDiscovery() { + if (!this.isOpenBle) { + this.showToast(`鍒濆鍖栬摑鐗欐ā鍧楀け璐) + return; + } + + let self = this; + uni.showLoading({ + title: '钃濈墮鎼滅储涓�' + }) + return new Promise((resolve, reject) => { + setTimeout(() => { + uni.startBluetoothDevicesDiscovery({ + success: res => { + resolve(res) + }, + fail: res => { + self.showToast(`鎼滅储璁惧澶辫触` + JSON.stringify(err)); + reject(err); + } + }) + }, 300); + }); + } + + stopBluetoothDevicesDiscovery() { + let self = this; + return new Promise((resolve, reject) => { + uni.stopBluetoothDevicesDiscovery({ + success: e => { + uni.hideLoading(); + }, + fail: e => { + uni.hideLoading(); + self.showToast(`鍋滄鎼滅储钃濈墮璁惧澶辫触` + JSON.stringify(err)); + } + }) + }); + } + + createBLEConnection() { + //璁惧deviceId + let deviceId = this.deviceId; + let self = this; + + uni.showLoading({ + mask: true, + title: '璁惧埆杩炴帴涓�,璇风◢鍊�...' + }) + console.log(this.deviceId); + return new Promise((resolve, reject) => { + uni.createBLEConnection({ + deviceId, + success: (res) => { + console.log("res:createBLEConnection " + JSON.stringify(res)); + resolve(res) + }, + fail: err => { + uni.hideLoading(); + self.showToast(`鍋滄鎼滅储钃濈墮璁惧澶辫触` + JSON.stringify(err)); + reject(err); + } + }) + }); + } + + //鑾峰彇钃濈墮璁惧鎵�鏈夋湇鍔�(service) + getBLEDeviceServices() { + let _serviceList = []; + let deviceId = this.deviceId; + let self = this; + + return new Promise((resolve, reject) => { + setTimeout(() => { + uni.getBLEDeviceServices({ + deviceId, + success: res => { + for (let service of res.services) { + if (service.isPrimary) { + this.getBLEDeviceCharacteristics(deviceId锛宺es.services[i].uuid) + + _serviceList.push(service); + return + } + } + uni.hideLoading(); + console.log("_serviceList: " + JSON.stringify(_serviceList)); + resolve(_serviceList) + }, + fail: err => { + uni.hideLoading(); + self.showToast(`鑾峰彇璁惧Services` + JSON.stringify(err)); + reject(err); + }, + }) + }, 500); + }); + } + + //鑾峰彇钃濈墮璁惧鏌愪釜鏈嶅姟涓墍鏈夌壒寰佸��(characteristic) + getBLEDeviceCharacteristics(deviceId锛宻erviceId) { + let deviceId = deviceId; + let serviceId = serviceId; + + let self = this; + return new Promise((resolve, reject) => { + uni.getBLEDeviceCharacteristics({ + deviceId, + serviceId, + success: res => { + for (let _obj of res.characteristics) { + //鑾峰彇notify + if (_obj.properties.notify) { + self.notifyId = _obj.uuid; + uni.setStorageSync('notifyId', self.notifyId); + } + //鑾峰彇writeId + if (_obj.properties.write) { + self.writeId = _obj.uuid; + uni.setStorageSync('writeId', self.writeId); + } + } + + //console.log("res:getBLEDeviceCharacteristics " + JSON.stringify(res)); + let result = { + 'notifyId': self.notifyId, + 'writeId': self.writeId + }; + self.showToast(`鑾峰彇鏈嶅姟涓墍鏈夌壒寰佸�糘K,${JSON.stringify(result)}`); + resolve(result) + }, + fail: err => { + self.showToast(`getBLEDeviceCharacteristics` + JSON.stringify(err)); + reject(err); + } + }) + }); + } + + //鏂紑鑱旈摼鎺� + closeBLEConnection() { + let deviceId = this.deviceId; + uni.closeBLEConnection({ + deviceId, + success(res) { + console.log(res) + } + }) + } + + notifyBLECharacteristicValue() { + let deviceId = this.deviceId; + let serviceId = this.serviceId; + let characteristicId = this.notifyId; + + uni.notifyBLECharacteristicValueChange({ + state: true, // 鍚敤 notify 鍔熻兘 + deviceId, + serviceId, + characteristicId, + success(res) { + uni.onBLECharacteristicValueChange(function(res) { + + }); + }, + fail(res) { + console.log('notifyBLECharacteristicValueChange failed:' + res.errMsg); + + } + }); + } + + writeBLECharacteristicValue(buffer) { + let deviceId = this.deviceId; + let serviceId = this.serviceId; + let characteristicId = this.writeId; + + console.log("this: " + JSON.stringify(this)); + + return new Promise((resolve, reject) => { + uni.writeBLECharacteristicValue({ + deviceId, + serviceId, + characteristicId, + value: buffer, + success(res) { + console.log('message鍙戦�佹垚鍔�', JSON.stringify(res)); + resolve(res); + }, + fail(err) { + console.log('message鍙戦�佸け璐�', JSON.stringify(err)); + reject(err); + } + }); + }); + } + + closeBluetoothAdapter() { + uni.closeBluetoothAdapter({ + success: res => { + console.log(res) + } + }); + } + + //鑻PP鍦ㄤ箣鍓嶅凡鏈夋悳绱㈣繃鏌愪釜钃濈墮璁惧锛屽苟鎴愬姛寤虹珛杩炴帴锛屽彲鐩存帴浼犲叆涔嬪墠鎼滅储鑾峰彇鐨� deviceId 鐩存帴灏濊瘯杩炴帴璇ヨ澶囷紝鏃犻渶杩涜鎼滅储鎿嶄綔銆� + reconnect() { + (async () => { + try { + this.deviceId = this.deviceId || uni.getStorageSync("deviceId"); + this.serviceId = this.serviceId || uni.getStorageSync("serviceId"); + + let result1 = await this.createBLEConnection(); + console.log("createBLEConnection: " + JSON.stringify(result1)); + + let result2 = await this.getBLEDeviceServices(); + console.log("getBLEDeviceServices: " + JSON.stringify(result2)); + + let result3 = await this.getBLEDeviceCharacteristics(); + console.log("getBLEDeviceCharacteristics: " + JSON.stringify(result3)); + + // this.writeId = uni.getStorageSync("writeId"); + // this.notifyId = uni.getStorageSync("notifyId"); + } catch (err) { + console.log("err: " + JSON.stringify(err)); + } + + })(); + } +} + +export default Bluetooth; diff --git a/LA24030_LuLiPackageLine_Pda/components/print/bluetoothPrinter/bluetoothPrinter.vue b/LA24030_LuLiPackageLine_Pda/components/print/bluetoothPrinter/bluetoothPrinter.vue new file mode 100644 index 0000000..8183fd0 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/print/bluetoothPrinter/bluetoothPrinter.vue @@ -0,0 +1,22 @@ +<template> + <view> + + </view> +</template> + +<script> + export default { + data() { + return { + + } + }, + methods: { + + } + } +</script> + +<style> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/components/print/commands.js b/LA24030_LuLiPackageLine_Pda/components/print/commands.js new file mode 100644 index 0000000..3401e76 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/print/commands.js @@ -0,0 +1,193 @@ +/** + * 淇敼鑷猦ttps://github.com/song940/node-escpos/blob/master/commands.js + * ESC/POS _ (Constants) + */ +var _ = { + LF: [0x0a], + FS: [0x1c], + FF: [0x0c], + GS: [0x1d], + DLE: [0x10], + EOT: [0x04], + NUL: [0x00], + ESC: [0x1b], + EOL: '\n', +}; + +/** + * [FEED_CONTROL_SEQUENCES Feed control sequences] + * @type {Object} + */ +_.FEED_CONTROL_SEQUENCES = { + CTL_LF: [0x0a], // Print and line feed + CTL_GLF: [0x4a, 0x00], // Print and feed paper (without spaces between lines) + CTL_FF: [0x0c], // Form feed + CTL_CR: [0x0d], // Carriage return + CTL_HT: [0x09], // Horizontal tab + CTL_VT: [0x0b], // Vertical tab +}; + +_.CHARACTER_SPACING = { + CS_DEFAULT: [0x1b, 0x20, 0x00], + CS_SET: [0x1b, 0x20] +}; + +_.LINE_SPACING = { + LS_DEFAULT: [0x1b, 0x32], + LS_SET: [0x1b, 0x33] +}; + +/** + * [HARDWARE Printer hardware] + * @type {Object} + */ +_.HARDWARE = { + HW_INIT: [0x1b, 0x40], // Clear data in buffer and reset modes + HW_SELECT: [0x1b, 0x3d, 0x01], // Printer select + HW_RESET: [0x1b, 0x3f, 0x0a, 0x00], // Reset printer hardware +}; + +/** + * [CASH_DRAWER Cash Drawer] + * @type {Object} + */ +_.CASH_DRAWER = { + CD_KICK_2: [0x1b, 0x70, 0x00], // Sends a pulse to pin 2 [] + CD_KICK_5: [0x1b, 0x70, 0x01], // Sends a pulse to pin 5 [] +}; + +/** + * [MARGINS Margins sizes] + * @type {Object} + */ +_.MARGINS = { + BOTTOM: [0x1b, 0x4f], // Fix bottom size + LEFT: [0x1b, 0x6c], // Fix left size + RIGHT: [0x1b, 0x51], // Fix right size +}; + +/** + * [PAPER Paper] + * @type {Object} + */ +_.PAPER = { + PAPER_FULL_CUT: [0x1d, 0x56, 0x00], // Full cut paper + PAPER_PART_CUT: [0x1d, 0x56, 0x01], // Partial cut paper + PAPER_CUT_A: [0x1d, 0x56, 0x41], // Partial cut paper + PAPER_CUT_B: [0x1d, 0x56, 0x42], // Partial cut paper +}; + +/** + * [TEXT_FORMAT Text format] + * @type {Object} + */ +_.TEXT_FORMAT = { + TXT_NORMAL: [0x1b, 0x21, 0x00], // Normal text + TXT_2HEIGHT: [0x1b, 0x21, 0x10], // Double height text + TXT_2WIDTH: [0x1b, 0x21, 0x20], // Double width text + TXT_4SQUARE: [0x1b, 0x21, 0x30], // Double width & height text + + TXT_UNDERL_OFF: [0x1b, 0x2d, 0x00], // Underline font OFF + TXT_UNDERL_ON: [0x1b, 0x2d, 0x01], // Underline font 1-dot ON + TXT_UNDERL2_ON: [0x1b, 0x2d, 0x02], // Underline font 2-dot ON + TXT_BOLD_OFF: [0x1b, 0x45, 0x00], // Bold font OFF + TXT_BOLD_ON: [0x1b, 0x45, 0x01], // Bold font ON + TXT_ITALIC_OFF: [0x1b, 0x35], // Italic font ON + TXT_ITALIC_ON: [0x1b, 0x34], // Italic font ON + + TXT_FONT_A: [0x1b, 0x4d, 0x00], // Font type A + TXT_FONT_B: [0x1b, 0x4d, 0x01], // Font type B + TXT_FONT_C: [0x1b, 0x4d, 0x02], // Font type C + + TXT_ALIGN_LT: [0x1b, 0x61, 0x00], // Left justification + TXT_ALIGN_CT: [0x1b, 0x61, 0x01], // Centering + TXT_ALIGN_RT: [0x1b, 0x61, 0x02], // Right justification +}; + +/** + * [BARCODE_FORMAT Barcode format] + * @type {Object} + */ +_.BARCODE_FORMAT = { + BARCODE_TXT_OFF: [0x1d, 0x48, 0x00], // HRI barcode chars OFF + BARCODE_TXT_ABV: [0x1d, 0x48, 0x01], // HRI barcode chars above + BARCODE_TXT_BLW: [0x1d, 0x48, 0x02], // HRI barcode chars below + BARCODE_TXT_BTH: [0x1d, 0x48, 0x03], // HRI barcode chars both above and below + + BARCODE_FONT_A: [0x1d, 0x66, 0x00], // Font type A for HRI barcode chars + BARCODE_FONT_B: [0x1d, 0x66, 0x01], // Font type B for HRI barcode chars + + BARCODE_HEIGHT: function (height) { // Barcode Height [1-255] + return [0x1d, 0x68, height]; + }, + BARCODE_WIDTH: function (width) { // Barcode Width [2-6] + return [0x1d, 0x77, width]; + }, + BARCODE_HEIGHT_DEFAULT: [0x1d, 0x68, 0x64], // Barcode height default:100 + BARCODE_WIDTH_DEFAULT: [0x1d, 0x77, 0x01], // Barcode width default:1 + + BARCODE_UPC_A: [0x1d, 0x6b, 0x00], // Barcode type UPC-A + BARCODE_UPC_E: [0x1d, 0x6b, 0x01], // Barcode type UPC-E + BARCODE_EAN13: [0x1d, 0x6b, 0x02], // Barcode type EAN13 + BARCODE_EAN8: [0x1d, 0x6b, 0x03], // Barcode type EAN8 + BARCODE_CODE39: [0x1d, 0x6b, 0x04], // Barcode type CODE39 + BARCODE_ITF: [0x1d, 0x6b, 0x05], // Barcode type ITF + BARCODE_NW7: [0x1d, 0x6b, 0x06], // Barcode type NW7 + BARCODE_CODE93: [0x1d, 0x6b, 0x48], // Barcode type CODE93 + BARCODE_CODE128: [0x1d, 0x6b, 0x49], // Barcode type CODE128 +}; + +/** + * [IMAGE_FORMAT Image format] + * @type {Object} + */ +_.IMAGE_FORMAT = { + S_RASTER_N: [0x1d, 0x76, 0x30, 0x00], // Set raster image normal size + S_RASTER_2W: [0x1d, 0x76, 0x30, 0x01], // Set raster image double width + S_RASTER_2H: [0x1d, 0x76, 0x30, 0x02], // Set raster image double height + S_RASTER_Q: [0x1d, 0x76, 0x30, 0x03], // Set raster image quadruple +}; + +/** + * [BITMAP_FORMAT description] + * @type {Object} + */ +_.BITMAP_FORMAT = { + BITMAP_S8: [0x1b, 0x2a, 0x00], + BITMAP_D8: [0x1b, 0x2a, 0x01], + BITMAP_S24: [0x1b, 0x2a, 0x20], + BITMAP_D24: [0x1b, 0x2a, 0x21] +}; + +/** + * [GSV0_FORMAT description] + * @type {Object} + */ +_.GSV0_FORMAT = { + GSV0_NORMAL: [0x1d, 0x76, 0x30, 0x00], + GSV0_DW: [0x1d, 0x76, 0x30, 0x01], + GSV0_DH: [0x1d, 0x76, 0x30, 0x02], + GSV0_DWDH: [0x1d, 0x76, 0x30, 0x03] +}; + +/** + * [BEEP description] + * @type {string} + */ +_.BEEP = [0x1b, 0x42]; // Printer Buzzer pre hex + +/** + * [COLOR description] + * @type {Object} + */ + +_.COLOR = { + 0: [0x1b, 0x72, 0x00], // black + 1: [0x1b, 0x72, 0x01] // red +}; + +/** + * [exports description] + * @type {[type]} + */ +module.exports = _; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/print/gbk.js b/LA24030_LuLiPackageLine_Pda/components/print/gbk.js new file mode 100644 index 0000000..6749c80 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/print/gbk.js @@ -0,0 +1,201 @@ +/*! + * gbk.js v0.3.0 + * Homepage https://github.com/cnwhy/GBK.js + * License MIT + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.GBK = factory()); +}(this, (function () { 'use strict'; + + var GBK = function (gbk_us) { + var arr_index = 0x8140; //33088; + var gbk = { + decode: function (arr) { + var str = ""; + for (var n = 0, max = arr.length; n < max; n++) { + var code = arr[n] & 0xff; + if (code > 0x80 && n + 1 < max) { + var code1 = arr[n + 1] & 0xff; + if(code1 >= 0x40){ + code = gbk_us[(code << 8 | code1) - arr_index]; + n++; + } + } + str += String.fromCharCode(code); + } + return str; + }, + encode: function (str) { + str += ''; + var gbk = []; + var wh = '?'.charCodeAt(0); //gbk涓病鏈夌殑瀛楃鐨勬浛鎹㈢ + for (var i = 0; i < str.length; i++) { + var charcode = str.charCodeAt(i); + if (charcode < 0x80) gbk.push(charcode); + else { + var gcode = gbk_us.indexOf(charcode); + if (~gcode) { + gcode += arr_index; + gbk.push(0xFF & (gcode >> 8), 0xFF & gcode); + } else { + gbk.push(wh); + } + } + } + return gbk; + } + }; + return gbk; + }; + var gbk = GBK; + + var URI = function(GBK){ + var passChars = '!\'()*-._~'; + var otherPassChars = '#$&+,/:;=?@'; + function getModue(passChars){ + var passBits = passChars.split('').sort(); + var isPass = function (s){ + return ~passChars.indexOf(s) || /[0-9a-zA-Z]/.test(s) + }; + return { + encode:function(str){ + return (str+'').replace(/./g,function(v){ + if(isPass(v)) return v; + var bitArr = GBK.encode(v); + for(var i=0; i<bitArr.length; i++){ + bitArr[i] = '%' + ('0'+bitArr[i].toString(16)).substr(-2).toUpperCase(); + } + return bitArr.join(''); + }) + }, + decode:function(enstr){ + enstr = String(enstr); + var outStr = ''; + for(var i=0; i<enstr.length; i++){ + var char = enstr.charAt(i); + if(char === '%' && i + 2 < enstr.length){ + var code1 = parseInt(enstr.substr(i+1,2),16); + if(!isNaN(code1)){ + var _i = i + 2; + if(code1 > 0x80){ + var code2; + if(enstr.charAt(_i+1) === '%'){ + code2 = parseInt(enstr.substr(_i+2,2),16); + _i += 3; + }else{ + code2 = enstr.charCodeAt(_i+1); + _i += 1; + } + if(code2 >= 0x40){ + i = _i; + outStr += GBK.decode([code1,code2]); + continue; + } + }else{ + i += 2; + outStr += String.fromCharCode(code1); + continue; + } + } + } + outStr += char; + } + return outStr; + + } + } + } + + var URIComponent = getModue(passChars); + var URI = getModue(passChars + otherPassChars); + + return { + encodeURI:URI.encode, + decodeURI:URI.decode, + encodeURIComponent:URIComponent.encode, + decodeURIComponent:URIComponent.decode + } + }; + + var src = function (gbk_us){ + var gbk$$1 = gbk(gbk_us); + gbk$$1.URI = URI(gbk$$1); + return gbk$$1; + }; + + // 澶氳繘鍒惰浆鎹㈠悗鐨勬暟瀛楄繕鍘熷嚱鏁� 鏋勫缓鏃朵細鏇挎崲鍗犱綅绗� + var Fn_Hex_decode = function decode(){ + var n = 0, str = arguments[0]; + for (var i = 0,w = str.length; i < w; i++) { + var code = str.charCodeAt(i); + if(code < 38 || code > 126) return NaN; + n += (code - 38) * Math.pow(89, w - i - 1); + } + return n; + }; + + // 瑙e帇Unicode缂栫爜瀛楃涓插嚱鏁� 鏋勫缓鏃朵細鏇挎崲鍗犱綅绗� + var Fn_unzip = function unZip() { + return arguments[0].replace(/\x23(\d+)\x24/g, function (a, b) { + return Array(+b + 4).join("#"); + }) + .replace(/[\x26-\x7e]\x25[\x26-\x7e]/g,function(a){ + var b = a.substr(0,1).charCodeAt(0) + ,e = a.substr(2).charCodeAt(0) + ,str = String.fromCharCode(b); + while(b++<e){ + str += String.fromCharCode(b); + } + return str; + }) + .replace(/\x23/g, "###") + .replace(/([\x26-\x7e]{2})\x21([\x26-\x7e\x23]+)(?:\x20|$)/g, function (all, hd, dt) { + return dt.replace(/./g, function (a) { + if (a != "#") { + return hd + a; + } else { + return a; + } + }); + }) + .match(/.../g); + }; + + function gbkArray(gbkArr) { + var data = []; + for (var i = 0x81, k = 0; i <= 0xfe; i++) { + if (data.length > 0) { + data.length += 0x40 + 1; + } + for (var j = 0x40; j <= 0xfe; j++) { + if ( + (j == 0x7f) || + ((0xa1 <= i && i <= 0xa7) && j <= 0xa0) || + ((0xaa <= i && i <= 0xaf) && j >= 0xa1) || + (0xf8 <= i && j >= 0xa1) + ) { + data.push(undefined); + continue; + } + var hex = gbkArr[k++]; + var key = Fn_Hex_decode(hex); + data.push(key ? key : undefined); + } + } + return data; + } + var GBK$1 = function () { + // 鐢熸垚鎸塆Bk缂栫爜椤烘暟鎺掑垪鐨勭紪鐮佹槧灏勬暟缁� 鏋勫缓鏃朵細鏇挎崲 zipData 鐨勫崰浣嶇 + var gbk_us = gbkArray(Fn_unzip("(T!HJ%LUX]e%gilotuwy{} (U!)-%/137>BDGHO%RTUW%\\_a%jl%rtw} (V!*+-0%27>C%EHJ%MP%R\\`cdfn%ptvz{} (W!()*,/3%579;=%CFGM%QWX\\^cdg%ilnprtvy%} (X!&')%.468CDHJLMOPSTWY%\\_b%dg%ilnprtuwxz%|~ (Y!'(*+-469%=?%GI%KO%RT%V[%_bdikmnptuy{}~ (Z!&')+%-/%;>@ACE%GKMNPR%TW[_%ikmo%rt%vy%{} ([!'(%+-%024%;=%BD%LO%QSTX%[]^`%ce%y{} (\\!()+%/1%7:%LN%SU%WY%cf%im%prt%xz%~ (]!&'%*-%/1%68%EG%cgloqs%uwx|%~ (^!')%-/02356;>FJKOPRSVWZ%]_`dfi%kmor%vyz (_!'+%-124%68;=@ACE%MOQRUVX%]_adegjqwx|~ (`!&)*-%/689;%=?%ADFIKLNOVX^%cehilmoq%uwyz|%~ (a!'),%/124%=?AD%HJ%PRSU%[]e%ho%qu%~ (b!()*,%.024%79;%=?A%FH%KM%WY%`c%ei%loq%tvy%| (c!'*+-.1346%8:%<>%GKLOQSUZ%\\_cghjltwy{| (d!(,/1%4679=>@D%JLMOQRTVWZ]`%ce%km%pr%tvy%} (e!+,-/0279%;>?DQW[%]_bdhqu%wy (f!&().47:;>ACEFHIKMP%SU^a%egikm%tx}~ (g!)*,.02%58<>BCGI%MPY[]`%bdeginpuv (h!(*-2%6=>A%CF%KMPRT%WZ\\%`deg%ln%qswxz{} (i!&+-%/1%469;>@AD%HJ%MP%TV%Y[\\abdh%mrsvx~ (j!&,%.0235%7:;>@%FH%PRTVXZ\\_%cf%hjkn%puw%{~ (k!').04578;=?%CFI%NQRTW%^`acdg%ilmo%ru%wz|~ (l!&(*%,.%9=%ACDHIK%OQS%U[%^`%ce%hk%ru%{~ (m!&')%79%CE%KM%PR%^`%hjkmnqxz%~ (n!&(*+./2%478<%>ACG%WYZ\\%^`%cgmnp%txy{} (o!&'%)+,.5%9;<EFHJOQS%UWX[%]`%dj%mp%tw%} (p!&'%)/2469%;=?%AC%KN%TVWZ[]`aefhk%mo%vxz%} (q!&'(,-/024%69%;=?%AC%EG%IK%NPSTV%Z\\%`b%eg%tv%| (r!&'(*+-%/1%57%<>%BE%UWZ\\^%`b%il%ps%ux%~ (s!&)%:<%?A%CE%OQ%SU%bd%ilnpqstvwy%~ (t!&')+,.%246%9=>ACDF%ILNRVXY[\\ac%fiklprsvxy (u!&(%,.013%?BDG%IK%MRVXY[%^abeg%jl%ostyz}~ (v!'(%,.013%9;%=@%CIJMOR%VXZ[]%_a%lnp%rtv~ (w!&(%+-/%24%689<=?A%CE%KNPR%VX%Z\\%`bcf%oq%tv%|~ (x!&'(*+-%5:;=%@B%SU%[^%km%svxy{%~ (y!&(),%1346%:<>@B%DF%HKMNPQSU%Y[%qs%~ (z!()%ACEFH%OQ%_bfnpqwx{}~ ({!&)+-%023569=ADEG%IKMV^%`c%fhinq%swxz (|!&'%)+%-/2%:>@ADEG%KMO%U[\\^`acefi%lnpquwy|%~ (}!&(+-%02%578:%<HIKLQRW%Y[%]_%bdgil%ruw%} (~!'(%*,/%35%7:;>?AI%MP%TVZ%\\^`be%hjlnoq%vx%} )&!&'%+-%356:<>?ABD%MO%TWX[%`b%fhj%mopr%vx{}~ )'!&)%-/%69%@BCG%QSTVX%bdghj%mo%{}~ )(!&'%9;%=?%WY%eg%mo%{} ))!'(+,2458=>@%DGHLOQ%SUVZ[_f%mp%twxz%~ )*!()-%025%:<%BE%IKLNOR%`dfhmp%rtwx{%} )+!(.137%:>%BD%HJP%SU%^a%fjkm%pr%} ),!&(%02568%:B%DFI%KMOQSVWY%[^%aehikmo%uxz%|~ )-!&'%358=%@B%DGIKLORSVX%Z\\^a%cgjq%suwxz~ ).!&(%+-%2467:%?AC%FI%MRSUVY^%`e%gijmnpqstwz{}~ )/!&()+,.9%;=>BCEIJLPQT%V^%`b%fh%loprv%|~ )0!'(*,-/%1457%:>?GJKMNPWY%[^%acdg%jlnp%ruwz{}~ )1!')*.035%79:=%DG%IL%PR%TVWY[^a%ejqruwx{%~ )2!&)%,.1%37%;=%@B%EHILO%QS%eg%nprtvwy%{}~ )3!&'%*,%/1%47%=?%BDF%XZ[]%ac%jl%txy{%~ )4!&'%+-%24%68%<>A%EHJ%Z\\%ik%su%z|~ )5!/058%:<?B%EGIK%NQRT%X^`%bfklq%suvx%~ )6!'(+4578:;=>@D%FH%KN%SW\\_%afijlmp%su%wy%{} )7!(*+-59;?GHJKNTUZ\\_b%ejm%pt%wyz|%~ )8!&(%*-78:=%?ABD%ILMO%RUXY[b%eg%nqu%wy{%} )9!'(*%-014%79;%>CEIK%MOQ%WY\\^cgijmnqsuw%{} ):!&')%+02%46%<>AC%GJKM%PRTVX%[]bce%ilmpqt%y|~ );!()%+-%/14%9;%?ABDFHIOQ%WY[%]_%ce%lnp%rt%} )<!()%.035%=@ADEG%JL%PR%UWX\\^%acfhj%lnpqs%y|~ )=!'(%*-%13%579;%SU%\\^%eg%km%xz%~ )>!'(+%.2578;%?ABEFHIKM%ORSUWZ%\\_`b%eh%jlnpqs%~ )?!&'(*%,/%146%8:<?@BDEHJLNPS%Z\\]`%bdi%lorsu%wz%~ )@!&'(*,-34;%>ABD%HJMNP%RTVY%[_%ac%egj%mor%uwy{| )A!'(%+-/024%:=>@AHIK%NPRSUWY%]a%cehik%mo%qsuvx%{}~ )B!&')%,/%35%=@%DF%JL%OQ%TV%oqu%|~ )C!&(%-/34689;?%EJLMO%QTV%XZ\\^%ceglnpqt%wyz|} )D!&)*,/0279:<%@BG%IKLPQSVY[]%`beghjkmoq%tv%y{~ )E!'+%-0258:=>@E%LNQ%Za%cgkmopr%tvwyz~ )F!()%/14%79@CEGHK%OQ%SU%[^%dg%imnrz~ )G!'),0%9DF%MOR%Z\\^a%hj%ln%pr%{}~ )H!&*%-/2357%@BD%IKMO%RTUWXZ\\%`bce%nps%uw%y|~ )I!&'(*%,.%2479;%FI%KM%TVWY%[]%`b%dfhik%{}~ )J!'(*+.01346%9;<>?A%EIJL%NPRTY%[]%befhil%uxy{}~ )K!&()+,.%02%68%?ACEG%IK%PR%TW%bd%gi%rtv%~ )L!&(%36%;=?%DFH%KMO%QS%Y\\%`bce%ln%twy%} )M!&'(*%46%<>?A%CE%GI%QSV%Z\\%ce%lnq%~ )N!&'%~ )O!&'%178:%CE%HJM%OQ%TVWZ\\]_%jl%sz{}~ )P!&'%136%9>AEG%JMNP%RU%Y[%bd%koq%wy|} )Q!&'%*,.018:<%@B%IL%NP%RTV%XZ%\\^%dh%lnrw|%~ )R!'*,2%48:=>@%CEFJ%LOR%VX%Z]_%aijl%nr%vxz|~ )S!&(%*-.2589;<?@C%FHJ%LNPVZ]^b%ehn%qt%vy{%} )T!&'-%/1249;<>ABGINTUWXZ[]%_bd%fh%kmqrt%y{}~ )U!()+,02%46;<>@EHLQ%TWY[]^`acdg%il%oqru%wy%} )V!&')*-.02359%=?EHOPSTVWYZ\\%ad%fk%mp%su%xz}~ )W!&),-/1%479:<>%@BDG%NP%SUY\\]_bcefhilp%rtvxz{} )X!&'(*,%36%=@%CFHJKM%OQ%[]^`%nq%suxy{%~ )Y!&)%/1%35689;<>@AC%FHKMPQTV%X[%^`%bd%fhjnpqs%u{ )Z!&)%24%79%@B%DFGI%MO%QU%^`%bd%gkmoqstv%|~ )[!&'%+.%024%=?%ACE%GI%KM%RU%WY[%]_ac%ik%mpqu%~ )\\!&'(*%-/%35%?ABDEG%LNP%UW%]`%jlo%z}~ )]!&'%DF%MP%VX%hj%ln%~ )^!&()+%8:%EIL%ORT%VX\\%_a%cf%hj%lnrsuvy%~ )_!&'%,246%8<@AF%IKM%Y\\^%`b%eglpr%xz|%~ )`!'(%14%8:;=@D%NP%W[%^`%mo%rtvx%~ )a!&'%+-/%359%=?%AD%GIKLN%SU%Y[%^`%ce%gj%nq%wy%{}~ )b!&'%)+-%/1%9;%DF%JM%VX%[]_%df%oq%|~ )c!&'%:<%EGIK%MP%RXZ\\^%dg%il%oq%suvxz|~ )d!()*-/%25689;%=@%BGHJ%NQSUVX%ce%psv%xz )e!&'%,1%35%8;=?%BDFG 'W!,-. &(+&.'&-~&'u'W!/1 ')>.<V')!@PBCFG 'W!@A4%;BC<= &'~&(!Kk '/!J;< '.!~| '/!>= '.u'/!K. '0`'/!94 '1t'0T'/!?Bu`\\Q1t '0!)* '/!xy2IH ';!*( &'}')!\\] '+{.;U&'q.>!&' ')Z&'t',5':!GF '9!eiha`;:ML ')e'-!XVWY 'W?'-!67%?#3$ '6!-.%@ '5!rs%~ '6!&'%, '5!^_%g## ']!67%?## '-!&'%1## .;!RST .>+.;!VW%~ .<!&'%U .>)'W!mn%~ 'X!&'%f#8$t%~ 'Y!&'%p#5$ &0!=>%MO%U#5$]%mo%u#4$ .9!89<=BC@AD%G##>?:;4#67#6$ &1!cd%hTi%~ &2!&'%)#12$*%/K0%I#10$ &.!()7 ')!=?O_ '+}',('-!\\]%_ '/!)37fz{ '0z'8!CD%ft%~ '9!&'%)-%/VW|%~ ':!&J '0P'W!>IJ#8$ &(!uU &+7&(T&).&(]&)6&(\\&)F&(a&+9&(`&)h&(g&+;&(f&*-&(n&+=&(m&+!?ACE &(!p^ &,a-Qc&)!_c -Qd&,q#1$'Z!&'%J#18$ 'W!MN%U '^`'a!@AN%PSv 'b!'*+. .93.>!(*# ',@']G#'):#0$'Yv'X!no 'Y!wx 'W2'X!pq .9!LM%UW%Z\\%ik%n -R!*+%6 'W3#10$'7!LM%~ '8!&'%>#12$ )e!HIKN%SVWabei%lnp%uw%y{%~ )f!'+%-23679%;@BCEFHIM%PS%_abdf%ik%rt%~ )g!(*%79%=?@BDFGIJL%OQ%TV%XZ[]%bdfgkn%prsv%y{}~ )h!&'(,-/3%9;%>@B%EGIK%MO%RT%cehil%or%z}~ )i!&'%)+,/13579:?%CE%HJ%\\^`eh%tvwy%} )j!'(%,.13%57%9;<>@%JLN%UY%hj%~ )k!&')%1357;=%CF%IKN%TV%Y[%bdfhj%mqstv%z|} )l!'+1369:<>%ACDFGJM%PR%UZ%ad%fh%npr%tw%{}~ )m!&()+%.0%2479<?@BFJ%NQZ[^_c%ejopr%uw{}~ )n!'(*%,047%:=>@%CEFHIMOQ%TVX%Z\\%_aeg%ilnrswyz|} )o!()+%-/346%=@%EGI%MOQ%TV%\\^%`b%iklnq%suw{|~ )p!&()+-.013%<>%FHILN%WYZ\\ (iC*r5(pM)89(gy(h[(gk)p*)o>*A;)s|*9E)ui)cO*s5*ux)R/({@(Z*)7s)B.(~d*4~)F{*42)@K)pg(_l)>Q)a|*2'*Jb(\\0(u2)4?)\\@*9t)8])5n(eJ(f+)|s(^7)mH))<)7>*Yr*ua)6M*2O(o@*t|*0J)cV)oo)E[)op);L(XR*W~)7F)z6)?3)hN);2)66*8L*xa)Dd)cf)61)76(Wo)k9(cY(a_*.d*b,))v)G`)Jk*6R*.k)HS)vH*E'*oR([d*U/*:L*4b(bm*L>(a&)p!]`bdelnrsu%wy%} )q!&'%-035%7:;=?@BCEFJLN%X[%^ac%egj%lnp%ty{}~ )r!&)+%-/%69%@C *B**t=(Yf(qR*{F({T)6!th )BK*V+++A)b})DT)um)12(c!`& *^r*4P*Wv*mT(Z=)e4(t-)1k)`B*K0(tz*:])Cj)}<)&|*/8)l*)TJ*[[*`!0t +3')Q4*cF)}()-`)v**@.*A<)Q!596 ))I)*v)nD*q<)>X),G).P*_0(s@*7;*a^*rQ*v?*_J*/W*X,)5](YH(e5(cm*_!9:< *a,)F:)-N*6j*JF+,1)3Y(`E)nu)-P)?.)\\_)Z'({u);N(^!A| )EP(T_)yA*{Q)_5)r!DE%GKNPQT%_a%ch%jm%rvwz%~ )s!&'%,/12469;%=?@BD%HJLN%Z\\%df%hk%or )mi)*e)gu*=C)<Z)7R*mh)T7(ci(b+):n*mu)~O(Wj))c*8V*5A*6\\)Wn)Sx*~=)8f(ck(hL*JC(pj(TS))K)Ow*'H*bn)/H)=:)f/*KF)D5)5i*W{)rS*Zw*eB)-M*=?*@y*z>(dx*E0)PD)1!mh )^Z*:;*8Q(Vg)SU*Bu)<z*)0)Ks)C7*;^(dK)}j(Y0(^X)UG(}G*[b):1(e&*;!AK )Eq)v7);C(|=(~@))6*TK)70)F'*V,):_)9r*G2*{`*T{*/a*nL(V;*q_*y+)@U)f))s!tvx}~ )t!&')*,.%18%=?@C%EHJNPSU%WY]_`cdf%hjkrtv%y{}~ )u!&')+-/04%8:%EK%RT%WY%_ (nv(|{)*'*p'([V*3}(d8)>Y)lB(i*(ZQ*Y,)6G*mQ)C[(ky)[T))*(f9)^m*^P)62)<Q)9[)-_)[n*bz*7\\*_A(|v)AX).|)S7*r>*Y(*JJ)<>)yh(pX)Lv)5,(fL(UE)z*)1i)[j*T>)6B*`V*~U)y\\(e`)n?)7k(c()Rg*_p),X*~:*2q+3k(Xj(}?*Xd*1T)?G)_?(]j(^~*D_)&Z({W)7'*d@)lq*ZZ)z?)2()~4(V[*/9)rl(TW*7f(`7(_m)M5(d^*[|*n^*sl)YY*rZ)J))u!`abdfgklnp%ruyz|~ )v!')+%28%;=%@BCE%GI%KO%RT%VY%[]%jl%np%tvxy{|~ )w!&'%*,%.0%6 )tu(\\&)se):o*N`(t*):B)(~){E)Ie(W[*8Y(j8(Tx)mR){])*!Qy *q>(`5(f=)^e)9.*n~(oe)@n)Ig*d[(hY)W=*.I*IY)5O*/1)mY*;=)vD*si*_/)2o)kM*T1)Ov(`T*XP)O3*3G*>{(n-(bn(Vb(Ta(_D*(G*d_*&i(YL*[t*&C){b);m)&g(\\**51)nL*(i)W6*1o)D6(zh(|V)vN)<[):r)9b)8<*ns);3*_O)}h)nt)5o(tM(fJ)P2([z)5P))n)P?(Vw*X7*Ji)-i*`f)w!78%<>%GI%MO%]_%cgil%oqt%|~ )x!&)*2457:%=?A%GJL%PSTW%Z\\%_a%c )/R*2s)7/(U&(cd*b~)9p*4J)@/)R5(X()1n)W+*TB),v*Ef)-7)82(^&*;v)G=(_s)8t*[=(ZB(~G)xH(|Z(`J)zZ)1<*a2)pp).B)-{)ov*[a)^J)om)}])s8(_f*ar(qU(X0)Z3*_{)>G)}/)e0)VG*1n(yJ)6x)++(nl*?3)}@))e),\\*`J*/U*y')9:)Y_)ut)_;(^D*uF(p5)l2(W~)l5)+-)1f(u-)Vc)Px)ue(eY*sr(_!>t )9A(eg*mF*Tg*Ys)cW)u{*G_*_~*Tq(e=)x!de%jl%wy%~ )y!&'%*,%047:<=?@BDF%HKLNOQ%VX%Z]`bdfi%oqrtvwy|} )z!&'%)+.%24578:; (TG)q/(eK*m<*xV+2S*o.({Q*S_(T!hb (^x*>m)47(ai)F>(Xy)0D(_.)Ts(^()6Y)?9*rW*UQ*`O)m|*c*)rJ)Q2)dO)eX*T_(qf)r`*XL)DA*oA*3w)+<)Wk(u_)|\\)s{*o<)Pn)?O*/O(q7(]v*qn(|W(s((f,*[g)>a*x_(my*mP)q>*`y)9?(gq(t!@` (o~*\\N)Cs*ZH*8U(`[)1p(qF*F@)&;+0<(YM*x}*Sv(w@)0O(d:)6?*a.*c/*{T)0B*2B(]d*2i(|r*{J)U-(Uy)z!<>@AC%QS%UWY]_%df%oq%uw%~ ){!&'%57%9;A%DHKMO%RT%VYZ_%adgh *X0(e.*0B)}c(WK(U<*qO)T*)h1*C6))N)lg*21)L')t3*mE*-4(_T)_h(e**_e*:q*X))dt*{B)T0(o-*9z)?[*4.)5[*r((uu(W:*S|*.T)>9*=U*uI(iZ*ye*4)(c9*Ta(e}*4>)+5)Sf*X9*9s*d.(f-)Q{(_y*.Q(oB)`C)S,*(9(tq(W8)/1)2K*(Z(Tv(|_)E7*FD)&C*ne*yU)mS)`&*`Z(^{*/^*Sz(to(_W(X=(f*(tQ)>r*4(({,)69)7,*^z)*4)R&)}:(WJ(Ya)CK){!ijmo%qt%xz%~ )|!&'%+-%79%BDEG%JNOQT%Y[]%ehikm%ortvy%{} )}!&'*%,.0135%7;=A )Uj)VM)x`*K6),T)l()6]*^o(Yx*eW)?I*5!Z| )+2*5{*Xt(a0*MY*XK(t3([\\(Vl*qk)cT*6K*Wx(|**S`*r:(uT*/[(g;(ld(kU*TI)>4)JQ*mL)po)Xz)*a)kn)D+)E])|l*3z*Xv)2F)y>)>]*Xc(^T(`4*mU*/y*3x*.L(~C)Wy)DE*&;)o}+&I*6a*0|*),):}*oQ)z^(fN(h7)O^):`)4}+04*4w)m=(a3*uT*>e)Fo*F&*qP*s1*nF(Tp(ea*.s)Fl*Z-*2K)C2)+0*1H)}!CDFH%KMOQS%XZ\\^abgikmprsuw%~ )~!&'(*+./13578:<%?A%GIJL%NQS%VY%[^%`i%kmnp%rt%{}~ *&&(pL*2u)Gq))-)>6(a`)0F+4-(X}*\\H(^8({b),P))1)Re)7[*Wz(^=*m\\(bf)SM*:M)eC(p,)Di*X-(tE*_-*=*(g@)~H(Wk)Sk(zt(vE+2X(eA*Ee*~r*UB*3~)>@*x^(n6*sd(`H)k2(`j(|?)7l*L.(UC)7:)/\\)H{(^?({O(^l*N<)~\\*{[*08)1o)^'*X/(]n)*n*`S)ix*N>(ni)tz)-6+42*qI*^R+'T*TE)oj)Fu)Eh*Z8*X5(`W*^t)Yr)HN*n_*bs(n9)E(*K~*_X(gs*&!'*%-/%246%:=>@%BD%FI%KM%OQRT%XZ%]_a%hj%lopr%wy%~ *'!&')%.124%@B%GK +&)(zy)Us)R-(V9({j*~Q*d7)3v*b5*v{(f/)VX(|0(_p(j**0=*2&)<i)8^)@:)43)0f)`3)R!^P (tU)DR*8J(sT(l|*Uu)QK*bc(uJ*2M(eT)Ue(fy(j=*<3*=2)Fk)y6(g7(X7(ee)pk*V;*qQ)Sa)V[*Xk*L<+0[*X:(l-+1o)my)-l)eL)0A(hN(V<)LG*J?)0+*^Z(go)_Z*Dm+06)U&({F),U*.<(j)(Y8)fG(f@(dP(ZI(ek(g'(U;)//)ib(su*>u*4e*G])e<*(z)XG*'!LM%UW%{~ *(!&'%*.%8:%@CDFI%KPQSV%Y[%]_`d%hjk ),d*DB(h~)6g(V&)SX)5S*9x(h)(c])fQ)Yi)l8(`,(b~*TA)KF)-n)/2)W8(o2)O4)gi)G-*_i*/T)8s)0|(hv)n5*Um)`>)VF({])*j*;g)2s+1b)v}*G@*'0)oy(_c)1v)`u)A3)*;)0&*Tr)^K)86*^s).H)0;*Eo(ms)Pz)0m)35(cX)1`)AV*X?)yu(WU)_k)RN*Sp*TV*.r*;y)@X(wu+'Z)UM)WA*UL)U7(WT)^F*<s)52)1Q*tQ*X')xI(_n(nz(q+)Cx)lu)z\\)yg)~P*(!opr%tvy{~ *)!&'%+/12458%>@%EG%NPQS%`b%vxz%} **!&'(*%,.%4 *3i*{:*`1)\\M*Sb+/q(v`*/!*J (ef)Df)HY*^{*'V*sc(e')/W)mb)Ry(d)(y2*.A)85(_S*55))9*@7)6C(^L(zs(WI)x>(`\\)18)UJ({!{y *S!^m )@+).W*r;(u`*/(*.D(kP)EC(t_(XU({m(aa*;o*xj*X>)l/*mq(Zw)z[(W2)EB*~H(y*)P5)pj(o=(|t)}N*qC)`w(^H*4-*97(uE*/E*;<)HA)Ex)v4)uS)7M)8r)~;(Yv(a+(_B*;e)KQ*g=*ZC*X1*N;*o/)~h(W1**!56%km%tv%~ *+!&'%= ([<*8P(`k*{D)WZ)Xv)VJ),7(\\s(vP(|d)UB)Rf)m**?<)GB(t|*So(c/*dE*rC*AH)I:)w+)`O*4z(V8*bP)UC*~N(v{(mQ):d*nJ)sy(Y.*5E)eM*NL*{O*/u*.x(a@)>T*dI*^!im (eH){\\):L)9])ox)yp*J5*r,)5F(al*9I)G.)DU)9/)rR)|Z)TV*.m*N](vD)5.*Bo*9l)lI(ZO(V_)mI*TO(}O))F)}_)?F*eL(V^)Tz*M2*)~*o'(VY*U3*_l*u^)A;)xR*_b)_n)Ut*+!>?%JL%RT%~ *,!&'%F (}B(as*;[(^.*:|)rB)Af++l(V@)1J*(!nc *.i(V)*R|)A_*xh*uD(r[)>g*o])-h)mm*uA)|!LK (_3)_1){^):I){<*.:)gP*w&(U2)^S(UJ*d&(d_)>L)@0*7!u~ (g9(}6)m>*v2)7B)eE)ma(}J*~C*=-(}E(g+)sw(U+)S\\*37)7<)9&))0(^C*Z!+l *o0(Yz(eB)1g)_.(a()8a+0:(w:(ZV)qw(d-*.|)<2)>&)6L)9P(ZD)cS*NC(_&*S}*.w(o**=/*mZ(^g(ex)&N*,!GH%~ *-!&'%-/%35%9;%P (YS)|P)UV*bg*~Y(iy(gA(cp(gZ),=):H)JF(_b)36(_}(q[(b@(o1)tB)qK)+M)3E*)7)5w)6Z(V6)^p*29)7a)_f*uK(oZ*:I)E{)Hv)vX*xw)yI(sr(g^(eL)W~(]p(`U({Y*Tb*43(i<(p0)0L(o4(f1){@)0)(zd)9_)6c(e@)6&({~)E;(h?){e*:T*dK)+)*Ki(t^(p8)7x*Z6*4s(o:)~2(Y2).v({t)OP(c0)}d)e.)Fy)t4)qv)@@(_((U|)pm(~k){k*?&(tt+'Y([W*-!QR%tv%~ *.!&'%46%8HNUVp~ */!-:KQ_xz|%~ *0!&'%)+.%7:; *{])2N)Xt(oG)@O)8W(n,)7V)6,)+i*qc(of)73(j'*Fc*5u*_4(i_*<m)DJ*XV*@5(x,)FB)7P*&P*q`(^<)\\)*U;):\\*NB)4G*/G)_D)Y})hf)Jc)eh)+`*bT)CU)Uf)8o(at)d'*27(XN(vY*d>)_[)V@(b:(U=*t;*on*A})vM**-(]F(ou)<o*3h*(+)T?)Hr)J-(_*(dN)H))dF+1l*&S)ed)y3)ZR)hg)D3*eG++X)wf*<E*;i(el)FJ(U*(d?(ar)ts(d<(`C([_(Xm(YY*0!>AC%FHK%OS%UWX[]%`b%eghj%qsuw%{}~ *1!&'(*+/12457%=@B%FIJMOQ%SU%XZ\\^%befh%mqr )n-)|8*(B)SS*sS(a\\)j2(h;(Yr*31*<n*_o*oq)+_)/N)VB))`)>V*5c*nX)/})_>*.]*(^(_<)G[*(a*96(Tj*^p*eJ)An(VB*Ti)<V*3'(\\X)m;)bE(|C*_N)[L(Us)</*od)+l)?;(`1*KG)_J(ad)ez)i;)D|)vz*tZ(Tz*bA+,9)Vn(_N*XA(ez)78)gl*=T*t:+3p*mv(Wq*1)(_?)^P*rk(~Y*xf(eC(Vx)Y4)hj)K*)uG*{d)lV(`2)no)U=)F&(^9+4,*3((gD)}P)|,*1!svwy%|~ *2!(*%03%58=%@DEGIPQS%UWYZa%fhjoprtvwz{}~ *3!&+%.02%468%EH%MO%Z *r|(og)7L*r=)JK(vx):a*&5)ZN*rA*9m(cq*xe)+&)^d)9k(cs*DC++5+11)uh*tv*Z=*XB+0v)[D)xU)-9*r<)5J*~>(er*n7(Y,)?g(}!jf */V*DE)R6)-o)gA)Y|*/@)&9)8,(zz)Y~(d+(U^)9X)lb)6d*^X(Wa(Ve)ST*.P*Sw*>'*HJ*0?*`s*n})~d*~k*K}*>G)Tp*~P*.v(uU+1Y)gU)t6*Dv*~!6L (kb(et(pU(U]+1D(ce*_Y*54)ry*{g*F0)Yy*@k)C:)30)Zj*3![^_begj%oqrtv{ *4!'*%,0479:<=?IK%OS%Y\\cdfgjry{} *5!&)%,.%02367@BDF%HJ%VXY[^%`bd%hj *U4*9Y*;@)q2)Qs).d*<y)f>*:s*nt)Q;)si*my(c~*:p(^^)*,*V>*X8(U5)ge)E&)G_*dJ*tM)a4)SO)qI(xT*oB)Q/*0v)@p(|.(v-(x\\*q!7F (W'*=o*?J)Mp)px*o1)f.)H'(zo)qo*dn*uL*)3*`/*U'),b*'|)yP*N?)Sz*F^({})*1)HJ)q`*/6(^a(]r(b1(wD*/F*uM*:E):.)rk*Bv)yJ)X+)+/(uf*@i)^H)Qq)7))pX)>J)1/*qL)@W*H/+/s*nG(ej(g(*U7);~*5!kl%prtx%z} *6!()*-%13%68:<%>ADEG%JSU%Y[]%`bd%iklp%tvwy{}~ *7!&'%+-%25%8=>@%BDF%L )<&*C^)L>*6n)vk);o+'l)6|)Ci*<g(s'+1v)SY)Z_(|<*rB*To)c})E\\)71)d&(V=(v:)Q-(rk)BE)*D(bG)2|)Cf)q.)rM)d,)ze)7i(h<(fT*mS*b)(w7*.M)Qv(U0(uC*2F(tn(cf)l4*s[(m_)81*5<)0U*qH)Vy(ff*{V(^Q(yR*5((u{*tW(ZZ)T:(}A)7I(XB(cN*6M*`>)YR*A*)72)*c)vA)<b)93)/'(w3*dS+/o(}D)8`*2x({4(ig*o!KN )V()1()El)eJ(_P({8*7!MN%[]%_abdg%kn%svx| *8!'(%+./135%:=@D%GINRZ\\]_%cefhjl%np%wy{%~ *9!'(%.0 )7Q)T3)cy)60*ma*.W*5>)UO(^h),A(uA(ak)/D(u@)B-*DD)mC)8;)4[*)F*T^(h8)O9+/u)Pm*B{(fY([M)SR(ic*Y[)cJ))])/G)i>)77)9J)cj)-|)X4)U:)=T)[>)pq)vS)q<)lQ(`>(e8(U@)+4)?c*2`*4Z)6^(g1(`B)_0*Jk*Yx)T6(f|*4^(q**Ky*XT*r`*cz(XK)SI(jW)p_)te)6k)_{)[t)-Q*@D)H[)uX*&Y*6z)CI+0F)8x)v3(oR)tG*t})6!<n (aI)i=)Q7*9!12%48<%?BCGHJL%NPSWZ%]abegijny|} *:!()*-.01347>DGHKPU%XZ%\\^`acdfhj%nxy{~ *;!'(+-.2%;>?CEGLPR (i]*5i)mV)pG(cH)n)(\\y(}F*S)*&)([&)ce*~a*y_)ZA)k8)x9)<4)s3)7f*xq*X+(gl*35(U?(oM*:g*=p)*b(_`)kL*T((}T(oD)TQ*xg(wa)ti+'\\*_|*(E(`p)5m*nT(VZ*<B*>k*=L*?c(p^)Cr(n?)A^)Ub*U<)Bt)]E)C])OL)FI)56(v/(TI(_7)ZE)E^)S=(^B)HL(tm)Oy)lc)&a*5;+3<)?y)w!rk *~[*Xw(~.(UK(W<(f3(tw)tA(lV)Qt*_U),@)S+)T8*Sh)9H*;!STVWYZ]_%chj%nrw *<!,-%256:%@CDF%IK%MP%SUVY[]%ch%kqwz{~ *=!&')+,.013%68:<%>AE%GI%KN%P )0I)U9)d:)6)*m!Ax (cR*_R)~9(Vs*U1(Uk+1r*m!df (`g)[B*aB)UA*U?(qB)'F)O!2[ )E6(f_*6&*0t(rq*A6),w)6e)Ld*o:)>m)0])G?)s5(UA(Y1))/*v*)<Y*1g)&@(YX){S(_z*:r(TZ)/a){I*mY(Y>(VF)y^)i<(bL*:')=&)y5(|;)S/*u=*^e)R)(Zn(d5)WO)<{)Ad)R7)1E*xW*T[)*u)iD){=)yC(T^*b7)hd)RI(mo*cx)Ss*Y2(cI*Ea)C0*\\K(}M*~;)Wj*=!QRV%Z]%_a%cehj%msu%z|%~ *>!()%-3%:<%AC%EH%OQ%Z\\%`bg%jln%rtx%z|~ *?!(*,- (e3(wQ+3w*YJ(dq(nD*y.)D(*do)Sw(^4)mn)7])dq(`R(a^*/{)^o)o*(d*+0A)K-)uJ*s]*K^*13)`_)b:(^U)E_)k:(sc)=l(mL*Sf*{K)63*.o)1y)_o(sk(V!UN ).X*vy(W6*Sa(_v(uW*.E)5p(Va)@.)5**;M*?z*;x*Gv)ad)YN({p*.l(^c):()E`*3f*;N*IL(]7({1(uO*_B(U`)Rd(^1*LQ*^Y*q}*AI)if*nj*q?)VI*:S),n)<?)Tg*>2*6@++w(r6*X[(TO(dw*?!./%24%7;>@%GIKLN%QS%_abdf%hlmoqstv%y|} *@!&'*,-/%469:<?%CE%GI%SUVX%Z (WY)>^)G+(js(Tm):s*~d)6.(y+)ig*99)VL)Ho(\\e*<J)t7)C~(`S)SG*.K(\\9(i^)a.)}o)AB)h+*:Y)D.(}v(`:)aM*JI*q9*rK)<r*Xa*7,(i})R\\)5c*/o(rj(W_(i?*XO)A<(TP(|x*Kx)G|)8_)z,)_i*9T(bb*w/(|o(h:*b;*.g(u/*XJ*Eb*8!,- *Xf);J(|b)2x)V,)wh*S{)tl)l0(g&(Ws*\\G)W;(w;*._)x/)S6({X(x8)kp*4B)2u)Wa(so)k!u{ )d7(cV*/4*@![\\%ce%hjl%npqs%vxz%~ *A!&'%),%5=%AC%FJ%TVWY%\\^%bd%fh%prt%w{|~ *B!&' )qA)pt(a**4`(n_))P(tW)eZ)?_)Xp*T;(}=*De(cP)t()7h)@?(VT*yf*Dt({U*T*(eO)sp(Xa(}S*~@(v?),L)wd(sj(T\\)F2(Ux)7W*P[*`U(b')@x(j|(lZ*`:(Vi(Xo*eE*{E)Qo))J)/u({[*N@*T9)>1)5g*{k({?(|])9@(i'(e4)nq(^I*A+)E.)H4)PC)6U*^}(e1*82)Vt)m3(US*XN({')ao*BU)B!(p *0Z*FB+1k+2e(}c)Cm*`()FD)DD)5))|C(r])+L)>k)Zp*B!(),.%46%@C%IK%MOQ%SW%\\^`%fh%np%twxz|%~ *C!&'(*%02%57%E )0.(`Q*2C);Z*JN)l&))M)FF)7^*t`(e))c[*Te)R;)rH)z-(f2)s:*xZ*8<*TX)u1)CR)_C)?Q)<B(k})/O)y9(eU(Tc)P4*3c(|X(k*(mp(W!uw *{G));)Dc*2n)/4*xb*`9({B*Sy*TY):{*8x)=2(kD*:=*d9(Y`*)w*`W*(O(\\q(r))YG({v*T-*3`*dL*?M)~R*Dq*s!(, */&+&D)uj(~-)zv*`z*sD)x0(zi)8p)|x*@))H.(hX*/j)hq*)y*n[)5\\(q}(Vj({:(uF(r,*C!FGI%KM%QS%]_%bd%suw%~ *D!&'%+-%/1%@FGI%MO%QS%UW%^ )g')8/*[@*Z]*4R*:B)6o(eM)TE*d2(tP)/3)Rw(o0);P*X*)nv)Z((o>)MD)n;)[S*U8*Tl(oI)QO*Jp)v6)9Z(eV)_/)Rk(r0);0(q3)Ha*6m(hb*)-(ZH*\\V)Vo*YF)_m)9G)V>)Yl*/'*=g)Fv*`;)V{*rl*Se(t})d>*C1*6P)m`*PR)H0(`n*Zp*nk):/*xx*[9(iu(X5)C=(l})1U)V8(`](}N(tO)WE(rC)l-)kr)0E*84*5q)7{)DF*_s)qz*ZA*X4*mt))^(d;(f0)_E*D!acdf%lw%} *E!)*%-/1%69%=@AFHIMNR%TV%Z\\%^`cghmnp%ruwx{%~ *F!'(%*,%.17%9<%?ACF%HMNP%SVX )RG),4([3(VA)+C)8K*8g*`R)G**dB)sA(ei*n6)-H)|R)GP)8V)}f*.y)n&([N)6X(tZ*`G(_k)y;){G(n:)-v*`L)U~(}e(n[(em(]y)X>(mw)9`*xs*6Q*FW*LV*`8(e{(}t*79)7@)5t*5\\+0,*r6*~!8F )IU(ur)7=(i7)8'(gr*Et)U8(vw)k<*Jz)O|(t<*UW),l)Xo)gc*x](T~)_y({C)us)8N)AJ)p/)1K({R(wd(TM*6')Rq)gE(V5)Dn*09)-d)@C)CY).c(uQ(vu*F![]_abfh%jl%oqrtuwxz%|~ *G!&)%/3468%;=%?AC%HJKO%VXZ%\\^`%ch%jmoprsuw%{}~ *H!&(%.0%4 )(n).9(d'*vx*_n)Fx(n0(i()1_(U')[3*/5*:5*=q(vH(W!Ze (}C*.F)Ch*@r(fw)lL*4G(i{+'g(X/)Ww*Tw(|g)3>(cz)nj)Ws*D~)?)*qJ*.S(f?)zR*)a*q=(k(*1P)kD)8.*FY)VD){c)5-)?C(cv):@)S1))3(f`*m[(U9)Rh*TP(}P)@)*9c)H((f!B8 )Q+)Ox(V()8S(cW*8>(WH(Y7(oA)5&*tB)AT)d.(bg(ab)0x*TS)@])ai)Du*MR)u.)t2)A`(l)(f<*n{)d?*H!5679:>@%BDF%IKLNOQ%UW%Y\\%`d%jl%oq%tv%y{%} *I!&'%/1%46%9;%@B%IKN%QS%WZ )yx)0H))T)0b*6o(t;)1\\)aT)_q)YB)RW)dE)MH*K2))u(UM(xu(j<*n=)Tl*)R*s6)5+*.`)ru*Dr(c2*tb*_')Aw)&4(Y))eY(TQ(d\\(t5(ep)98*o)(]m(Vm++P*.>(gc*W}*J2*8W*qA)V1),c(y5)A.*r_)gj)fA(du*6L*{Z*10({a*r!mF *.Y)q8(dX*ow*{n)~l*Lp)XI(UN*1c)x6*TJ)1s(gx(V?*xY))?)L~(\\M(en*Ul*>1)u9*tH(`d(h@(m8*nZ)V+({l)Vi)AC*I![\\%hj%oqrt%vx%z}~ *J!&'%),%13468%>DEHKMOQ%TV%Z^adeghjl%oq%su%y{%~ *K!&(*%/ (|m(zm)FT*3s(iq)|~)>C)I|(V/)OY*G7*uv(c^)80);@*b0)?>*4E*Tt(^e)H1(d.*I0)4=)Sr)TP*U-(}V*BP*9v*nf)O5*_,)?R)/-).N(Yj*I|)@h*67)f<)1z(^@(`+(on)-F*b(*J**df)*g)D4)/Y(vG(]i(_i*4|(bp)S'*sa)aZ(WL(Yw*1-)C{(je*nb)y8*Jt*.}(rw)5(*tD*DN(k_*x[)-t*Su*?u*d+(e6)@6)*~)lY)0=**l(xA*/!+. *^S(jG({Z)1,)?m)g>*K!13%57%;=%@B%EHILMO%RT%VX[\\_%cefkln%twz%| *L!&')+%-/%57%;=@%DH%LN%PR%UX%[]%_ac *`A)oU)qi*.t*u_*BA(zv){:*t.*Iw(b3)a_).5)@5*TF(|Y*~9))))PB)Rb*S!jl *`B*_V(dA)7&+/!v} (fD(Tq*:+)cw*E7)&i*J7)VR*sb(g|(V.*Ss)`2(gh*qX)_a)WC)pi(Tk)tI*FT(~U),3*Nz*x|*q])^i)Sm(tj)9a)q|*J+)ZS*9:(qa)bL(dB)tO*s^(hS)-J)`Y({k*T~*~V)P<(tT+0&)y_)DM)6/(XQ)mE*0r)T`*r))R.(W+)mv(^G)Fj)Z}*a_*6B(uc)i~*L!de%lnoq%~ *M!&'%03%8:%MO%QSUWXZ%t );M(},*aD){W*U.(vN(gW*7y*<+*MT*26)IX(l<*2l)cU*eI(_)(UL*xU)9N(T`(eS)C1*5v(tB)VU(TF(sx(cJ):5*nK(Y&(WE*JA*xp(t]*a6)ys(V~*4t)m5)S0({S(v\\)-A)I-*Du(ZJ)):(UF)sq(Vy*9A)6T)@\\*ap(}~(VS)-]*7?*`p*3a)mO(V:*KY)26)P~).Q(U6)pc)Y:*TG*Sk*T!n5 ),?*22*1[*.h*;J*<'(mu)Pp*w,*r*(vo(e|*nP)W5({|*{C(}>),R*s-*M!uv%~ *N!&'%:=GM%OQ%SUWY%\\^a%df%hj%ln%y{%~ *O!&')%> (d&*:_)LN(x6+0g)+**/i*<u*>!./ *;|*G0*__*Xb)pa)-U*xv)uH)@i(h1)7O(XE*7<)ml)+N*sj*ZX*F;(g:)TH)V/)R?)0X(b/)k~)*l(WS)0y).r(}))l.*b4*ms)d~)Sg)X)*cv)CG(e!(P (X3*eD*TU(d~)*k*_S)W.(U{)p[)JU*DR)2A*8&(X;(Yg*`v++0)20)W!g^ *r{(Uu(wL*t,(TT(~+)y1({>*TQ*1L)gC(pi*9R*bG(e^*a&(j[)&=).,)2/)OD)e]*46*PQ*O!?@%^`%hj%~ *P!&'%@B%H )Up(|1*KZ*xd*Uv*~7+0*)WT(^p(]h(p-*J_(dU):S*_&(n)(f\\(nB)fR)Y(*/Y*_m*:?)2f)/Z*rX)C.*.@*Y!1j *mX(~_*(T)CF)1&*qT*2N(U~*bm(bh*r^(]f*_a*As*d1)AE*w.(ze(c,)tm)D')Fp(gt)^Y({g*^g(^Y(nd(g\\)=f)Ar*X!^C *5:*>v*aL*)6(_r*CH)E/)@2)\\.*E?*[v(lX*`X)ot)^Q)b\\*W|)7S(`3)TR*X<)/@(rv)3\\)C<*X`)5j(jS)Wm)Ck*^Q*P!IJ%PS%Z\\%~ *Q!&'%R *n;*qG)qh)F8)Jw(g6(U:)_:*T,);^)?-({<){J(Zj(|F)sI)QA*PA*(H)Sl)ph)?K*_()''(}Z*D,)F;(co)54)|F)XL*/>)L<)|M)-T)Zr),])9D)VK)D;(TN))X*X&(Vk*4D)o&*s9)7E)@v)6A)Sj*Xu)a7*0Q(]k*3d(eI*aM)6[(hD*F2*_**2;*nq*@o*_j)UU)h.)?A)q_)kZ)t\\*7t*Ww*m;(Y/)Dz)m]*T.*tK)8@*oH*r+*?i)84)r()-e)e\\(Uv)/F)>o)7Y)Ou)>:*Q!ST%uw%~ *R!&'%;=%[ ))o)mk*bW*S~*9d)E))>*(f5*FZ)ss*4&*5-)RH(U8*.a*3))q4)I5)PO)6*(Zl(Xf(n|)7q)Ot*Ye(eG)@1*.R).b)8+)9o*7!lm *0V))d)&,(`P)Aj)ya)z9*X()^t)mx)Yv)Si){X(Ts)p^).k*mR*JU*.b)yE*4C*eH(W!-R *8?(fl))&)U.*T0*(U*^^*3u))b(g=)pJ({P)A,*~n)hA)F]*Ev)Co)f=*T!\\? *`H)|f)_])a>)7.)s7(kx(U(*>a)E}(aj*E[*X.*nR)}e*R!\\]%{}~ *S!&'(*%\\inx *T!+4Nm *U)(X1)T=)x.*~E)6V)cH)7g(TY)tK*^V)<]*XZ*&()GC)*s*KJ(uS)<K(sm)d{)I6*o&*`5*XX(oC*/A*Tj(_9)8Z)7C(cb)G&)i**:o*cy(i=)r')^W)UF(^E(gS*XD(vs)Yc)Vg(zl**)(Vh*(-)Yk(z`*7c)WW(zg+&t)HV*Zx({N*/=)/m*.O*b?*Xp(tu):,)yW*YZ(ca)?q)x'*T)*r1*.^*mn*-u(k{*d])C>*0R(|h*aT)@q)).(X2)Ej([1(X>(o3)+=#2$*U!CD%KM%PSUVX%_a%df%kn%tw%} *V!&'%)-%3568%:=?%EG%IK%_ (Uz(TR(]e(TV),<(cT(T[(V,(Td+'J(z|(lW(Tn)y2(U,(b}(U4(tS)cY(c})Qp(mt*4h*{l)Q3)re+2\\(T|(V3+2U(U!IV (V'*9O(zk(ie(kV(VX(d!CSY[d *uP*X](c)(eR(c!5=M *X\\(c!ur (_!u{ (`!(GMYZfx{v *?`(a!>CBQT (^N*0<(V!OW]V|u (W&(Vr(W!V.] (XF(W!0`bDf (X!@I )>3(X!<? *V!`a%~ *W!&'%f (X!A9 (W!mx (X!XVskeq`] (Y3(X^(Y5(Xv(Y!oqsNcleZh (Z!(Y| (Y|(Z!\\?^].L<UX ([U(Zs([,(Z!x~ ([!CR|~ (\\!'8T (]+(\\!kjdl (]!,0 (Vq)RD(X!:G (YW+43)RM*'}(^:))E+1g*{m(^M(t:(b!au *O((bx(_^(t?(]z(V4(]{(VG*JL*K)(VI*5?*KW)xQ(zD*I:*1G(^!w} (_!0/ *W!gh%uy *X!QRW_eh%jlnoqrx%~ *Y!&')*-%03%79:<%EG%IK%WY]^`bdg%iln%qtwy%{ (_:(^!bnq *S!]cdgqrt *T!&'/326%8:<=@CDHLMRTWZ]`cdfhkpsuvx%z} *U&*T|*U!(*%,02569:=>@A (cx(d0*q!lqp *r'*qy*r!328?JU]bhj~ *s!*4M *a!vz|x *b!2':9<@ *Y|*Z!&'*.%03%57;<>%@BDJL%RT%VY[\\^%ac%jnor%vy{~ *[!'()+%-01348:;A%EH%MO%Z\\]_`cf *b!>6UKDVJMYlhb]aqu *c!+1OKP^\\fps (`'(th(a!cmn (b&(hQ(b!8>X (e<)be)s[),1(_!ho +'G(dl),>)lW))7(o/(p!3+ (rV(s!;DP (n!ehfoujk (o?(n!w~ (o!LhNi_^KPYV (p!7. (oo(p!<Y1> (ov(p!*_bdc\\B~y (q)(p!ng *[!hjl%prsuw%y{}~ *\\!&'%*-%/1%79;%FIJLMO%UW%ik%~ *]!&' (q!<>. (pw(q!1OJuQ (r!=DYarX *{}+2^)4t*9!@DFVQoKUX^`r *:!&, *9w*:!68Q *9!_~u *:!9:/ *9!p{hqf *:!2< *9k*:!OweR}uJb@FziA *;!&/ *:t*;!)* *:!NC *;!1fpq *:v*<N*;!QIF *<W*;!sDd\\XtU,uBOH{z *]!()%~ *^!&'%. *;!}0~ *<!(&)*l4op\\fOXA8re9t7TZdvx} *=!dH; (q8*=!{n@`9 *>!&B *=!ti7Brf[\\M( *<|*>0*=!SD *>!f[dc} *?!89+:) *>!FPs *?!'=? *>!;w *?!r~ *@!(> *?n*@+*?!{pk *@8*?!RjeH *@!=;d )kc*A7*@H*A8*@w*A9*^!/0%OTjv| *_!.1%35%8;=%@C%FHIK%MPQTWZ%^`cghkqrtx} *`!')*,%.2%467?@DFKMP *A!U: *@!WT *A!XGgc]y )s0*A!Bqz *B!JN-5 *Ax*B!TB+_]Vyg *C!)LtRvc *D0),!;E (t!bg *2m(t{(u'(t~(bw(}!'*19 )5h)6!-b~ )7!4DAX )83)7`)8!J\\T )9e):U)9!)2Fl )8~)9!dB )8z)9!ft ):!QW?^ )9|):!=- );X)9!~v );!KG ):!jz );&):k);!,'d )<1);s)<C*`!QT[%]_%dh%loqruwx{}~ *a!'(%+-3%589;%@CEFH%KN%RU%[]`c%fhik%oqsuwy{}~ *b!&*+-%/138=BCEF )<!'deFgm} )=!+86]y )>)),H).])ko),N(cn(e!NZFEXosc (f!OV%XZG (e~(f![]'6 (g!-? (f!{uh (g!EF/ (f!zj (g!H{Xm_}RQ~ (h&(fv(gN(h'(g!fjw (h!+,. (g!TUO (h/(gz(h!0m9rOfEtuacy| (i`(j!/U (i!Bf:N8I5 *b!HILNOQ%SXZ%\\^%`d%fi%koprtv%y{%} *c!&'%),%.02%EG%JL%NQ%[]_%eg%oq (i!0On%p,)U (j!+r (i|(j!QY( (iz(j?(iw(j!v1 (it(k&(j!]^49 (k!1> (ji(kf(jq(k!23 (jt(k-(j!}d (k!6,9: (j!lm (k!/<+ *^~(k!eOSHkjEGnt (l!F'E (ks(l!;PGJ:BtR_Yijs (m!(Dilrv (n!1'5;@FEX ))!Wa\\Yy )*!*+ *c!rtu~ *d!'(%*,-/034:%<?AGN%PT%XZ\\^bcg%mp%ux%} *e!&'+%.1%46%ACFKM%VX%` )*!&3CJMP (~!8&9<B4DE=FHaNiXW]Omcp~ )&7(~w)&!8UVzy )'()&!wqYn )'!R8.7fUiWeEDcn| )(!:> *U~)(!Xf )-!W[fkmpy} ).!'38@G *J@)-E)d!ruy|} )e!/-:9>T[U^`cm_of *e!ab%~ *f!&'%g )eg)f!*&4 )ev)f!10(5L8?KDc`js )g!&)8 *8;(tK*yn(t!J( *{!8<%AILRUY\\_befh%j )*o)+')*z)+!,;6OKTI *XS)+!hgq~ ),'*73).!OTaZ )/5).y)/6).!lo )/!078 ).!ux )/!*KgXMA?[]<qS )0!QRTS )/t*f!hi%~ *g!&'%<>%VX%p )0!CVos )1-)0!v\\ket )1!l;1]XFZ4 )2!GM<J )1t)2!'5Rq )3!Czbu )4!,Ij ).h*sP*q!8:@BDEKMRSUWY%\\^ad%fhi (Tr)c])51)R!<[cQ )S!Q3>B: )R!op{} )S!4W~ )T))S[)T!LMF, )S`)T!5+O@C )S_)T!(DS *g!qr%vx%~ *h!&'%79%y )U5)T!|a )U!?D )T!\\Ync )U!'I*1 )To)U!KNP/ )V4)Uk)V!AC )UZ)V!67 )U!X\\x_ )Wd)V!jh )W!(X )Vb)W!*[0' )V|)W`)VN)WV)VQ)Wu)X!_?\\ )YJ)X!PwDE )W!|o )X5)Y!wI0x )Zl)Y!z=?USOoLg'Z7 )[!H,- )Z!cT8nu )[!1Z )Z!iHh )[!osr^Xb` )\\^*h!z{%~ *i!&'%TV%~ *j!&') )\\!V4FCOn{km| )]!NWOmi )^!*9 ({!7;LJ\\o )l,*~h);:(|!BL *L\\(|N*[<*Qv*_!Gdfv *`&*_!uzw *`+*_y*`!=<C^IENYmneg| *a!01/G7A: )BP*a!S\\agbj )-!4;:< (}@(gV(}!U^ ({((}!hk *1K),!gfj *9;),y+'S(}s(u!NPZvwp *j!*+%LN%~ *k!&'%.0%2 (ud(v>(u!xkq (v!F& (u|(v!K2yzQ|WLm (w'(v}(w!MO,>.[ (x)(w!epW} (x7*4p(x!l]9< (y!'T (xt(y!;= (xz(y!ILZ?OAEr (z!'&BGP (|!sz (z!ju ({*(z!acr *~!?ABDIGJKORTZ\\]`be%gijlmoq *.!9;=?BC *k!34%:<%~ *l!&'%: *.!GJXZ%\\cefjnquz{ */!),/023N7;<?B%DHILMPRSXZ]\\`b%hk%np%tv )*i)l|)(|)l;*at)g!HKh\\Y )h0)g|)h2)g!qmz )h!*)F: *x\\)h!kJH? )gt)h!Sp )i!2c.-0864 *l!;<%IK%vx%~ *m!&'%7DIKz *n!)-.4@Uvz )h!|{ )i!Id_]a )j&)iu)j!-K=/06:MWX?V )k()ji*v!|}~ )D!18C-N )E1)D!lOX} )E3)DZ)E!4*9 )D!p\\a )E|)F<)Ed)F=)E!u< )F?)E!eAf?i )F3)E!ODn )FA)EM)F!0ef )G!:;(< )Fw)G!>] )FP)G!/@ )Ft)GA)F!sq}|\\ )H6)G!iNQmE )HC)J=)H})I!GH )Hz*o!(4>DILV[aouvx%~ *p!&(%s )IL)Hq)I!3) )J&)Hd)I8)J@)Ia)J/)Ij)J!,S:OgG )I\\)KB)J!VW )KD)J!X52Hjv )K1)J!z| )K!J'7@U )Jd)KV)J\\)Ku)LL)Kc)L!45 )M))Kh)L!a[ )Md)L!mxR )M!R= )L!ZEu )M!@UTm[o )f!Je )P!:;@=KLFSTZc *^!UW[%]_`bacdfhklnqu *p!tu%~ *q!&'%6;NVbgjmor%xz%|~ *r!&-%0479@DEG%IL%PR%TVY[\\ac%gin%z} *s!&' *^!wxy *_!)+ *\\j)5!'37;>=A@H *7`)k!EJUegi )>/)@!789Sb )DW)@!L^I )^`)C5)@!f}z )A&)@~*2<)A!OD1?FQGgt| )B!>4Urs} )C'*X!236;=@EFHIGMUY *N!AD%FH%K )d!3d )c{)d!+4CDIPRTW )7r)8C)9h*s!)+.%02378:%CE%LNOQRTUWX\\_`eghmnpqs%|~ *t!&'%+/%24%689<>%ACFGIN%PT%VXY[%_acd );E)=,*2:)Q!JS]UYegfmux%z )R!(0+19 )>!0Pf )c!kptN *DV(`0*3!|yp *4@)CH*4!A5/18;k%n_FH]Q[ )CN*4!aouxq *5!89 *4v*5')CS*5=*Ue*5!aIWC]sw~ *6!F+,C2;NO?9 (q~(xw*6!ZTc )Ym*6!u| *7E)Cd*7!C4 *t!ef%moprsuw%{~ *u!&'(*%<?@BCEGHJNOQ%SU%]`b%fh%oq%uwy%{~ *v!'()+%/ *7:*6x)O!6IKUXk *y!XYZ\\`a )Pl),})P{*Nm)?2+3=)?!5^hfenptx )^![wqx )_!=B9-3jL )`!9<?XZ )a!C,8 )`n)aB)`s)a!HJh )b!*, )a!xp )b!WK^p )c!;F )^G)`A)a6)b0)5!ZY_de )w!ejps )x!,- )w})x!+3(1@8KV[kx )y+).!\\[ *v!01346%<>@BCEG%wz *w!'(%+-0%G )/n)0!63@ )/s)0!2< )1+)2!-4 )3!+wk )4!@F{ *3!]\\ )SA)TK)WF)t!+-5>LMF )?M)t!bQRn%pTqZaX^ )u!*I23 )t[)u,)t|)u!(Fwovcx} )v!&5<(W\\Lou )w/)vw)w!=NH^ +4.+2!>@A )q!1DM9GHZbYmfux )r!78.*AO *w!HI%~ *x!&'%N )r!ILftdgsx )s!-.>CK )l!7=KHEXov )m'*0!@IG *Oi*0!P\\Yaif )p!f~ *Ii*m!89:>=?@BCGJHM%OVW^]`_bcegi%moprw{%~ *n!&'(*%,/%13258%:<>?ABD *x!OP%Tknruy *y!*/%TVW[]^b%dg%mp%~ *z!&'%5 *n!CEHIM%OQSVWY]\\`acdg%il%pruw%y| *o!+,*-2357%9=?@C6E%GJMOPS%UW%Z\\_`^bce%mpr%t; )s!uz *sf)y!Me[c~ )'A)y!{z )z!=3 *z!67%:<=?%[]%~ *{!&'(+%79;HMNPSWX^ )z!XVp +1m*{z){6)oz)p!',2= )k!46 )l)+/!prx%| +0!)(-/.01589;=%@BCEHLNQ%SUZ]%chdj )m!68:DAPGWX\\hUTgfzq )n!.31/62N<GJ[KPWbUpc`d *{!aco%y{|~ *|!&'%u )nf)o.)n!mk )o2)n!x{ )o!1'50 )n~)o!?PFNH]a *1Y)|S){!>?FLN[lfrnsy *J!BGP[]` *K!'K<ANgShjv *L!F( *Km*L**Ku*L!ME?G6`Wbm *M!9N )m/*4i)p!KM )sj*2!HJLRVX[%]_^gAky| *3!*/FN *MV*x!X`c *|!vw%~ *}!&'%| *x!ilmotz{~ *y!&(),- *D!AH`bsnpo *E!C(&G8B>E.DQ_PiKULJdjO *F!+34/5 *Ek*FU*Ey*F6*E!zsl *F!EI:JLOKe}`gp\\ *G!'1 *F!vsky *G!(k *Fd*G!fgdIY5Wt<LeMBN| *H!?8b *}!}~ *~!&'%5<MSWX^_cps%y|%~ +&!&*,.%0457%;>%ACE%HJ%OQS%VX%[]_a%ikm%su%w *HV*G!qn *H!=' *Gl*H!;u<EC[cMaPZkzp~ *I!MJ5ARXps */w*0!*,- *80)|!gjupq )}))|w)}?)||)}![L>-BE498GR2lnY )~0)}!`qt )~!)6 )}v)~!-,KabsgXc@eW]fo *&3)~|*&!.?<GHLn`^qxm +&!xz%~ +'!&(%*,%68%:<%FHIK%RU%X^b%dfhjkm%~ +(!&'%: *'!(3/AJI *7!wz{}e *I{*8!ABCMOHKX[ST^dikoz *9!&/ *J!\\cf *K!]d *M1*1!,.6>?A *(,)>D*(!AMLNRblmqw|}xu *)!.? *95)B?*1!N]dtpux} *2)*)O**u*+!KS *-:*.5+1!VR *Xs*Y!+;8X *X!gm *U!RT *c!w}{| *d8+(!;<%~ +)!&'%A *d!65D=CQRFHM`Ydaevw~ *e!()*0/5 *U`+0u*Y_*Z!9S *[!N^ *Y!\\fcak}~ *Z!(, *Y!uv *Z)*Ym*Z!:EF1GI2WKbkmz|q} *[!/5.*2&>67FG?ekqdiz *\\!+0,8: *V!*4<7JF )?=*N!PXTV +)!BC%~ +*!&'%H *N!_ei *O_*R<*u>*t!-73JELSRnqt *u)+3!loq%vx +2!CPR *s!VYZko )sM*s}*g!Ww *h8*iU*j(*k/*jM*l!Jw ++!369%< )zB++!?BD%FHINOR%WY%]_abd%kn%qx%{~ +,&+*!IJ%~ ++!&'%/12478=>@CGJ%MQ^`cmr%v|} +,!,-56;<'%+.%02%478:= *u!gp|} *v!&A=5DF *~!{z +&(+0O+&!'+-2163<=B +'!][_a`ei *yo*z!;\\ *{!*) +&!PRW`\\l^jy +'!'+7; +1![\\ *-.+0!y~ +1!&)0 *k;+1!;=y%{~} +2!'.,*/4gqt~| +3!)*0 +,!>?%~ +-!&'%~ +.!&'%~ +/!&'%ntw~ +0!'+237DGI%KMPTV%Y\\efik%twxz%} +1!'(*%/2%:<>%CE%QS%UWXZ]%ac%fh%jnpqs%uwx| +2!&()+-0%35%=?BD%OQTVWY%[]_%dfh%prsu%{} +3!&(+%/1%;>%jmny%~ +4!&'%+/%14%8 .*f.+!Zv .,!oy .-!;<%>@BCGN%PRSV%X -R!XY%~ -S!&'%N")); + var gbk = src(gbk_us); + return gbk; + }(); + + var gbk_build = GBK$1; + + return gbk_build; + +}))); \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/print/printerjobs.js b/LA24030_LuLiPackageLine_Pda/components/print/printerjobs.js new file mode 100644 index 0000000..003e213 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/print/printerjobs.js @@ -0,0 +1,456 @@ +const commands = require('./commands'); +const gbk = require('./gbk'); + +const printerJobs = function() { + this._queue = Array.from(commands.HARDWARE.HW_INIT); + this._enqueue = function(cmd) { + this._queue.push.apply(this._queue, cmd); + } +}; + +/** + * 澧炲姞鎵撳嵃鍐呭 + * @param {string} content 鏂囧瓧鍐呭 + */ +printerJobs.prototype.text = function(content) { + if (content) { + let uint8Array = gbk.encode(content); + let encoded = Array.from(uint8Array); + this._enqueue(encoded); + } + return this; +}; + +/** + * 鎵撳嵃鏂囧瓧 + * @param {string} content 鏂囧瓧鍐呭 + */ +printerJobs.prototype.print = function(content) { + this.text(content); + this._enqueue(commands.LF); + return this; +}; + + +printerJobs.prototype.printQrcode = function(content) { + + if (content) { + const cmds = [].concat([27, 97, 1], [29, 118, 48, 0, 30, 0, 240, 0], content, [27, 74, 3], [27, 64]); + this._enqueue(cmds); + this._enqueue(commands.LF); + } + + return this; +}; + + + +/** + * 鎵撳嵃鏂囧瓧骞舵崲琛� + * @param {string} content 鏂囧瓧鍐呭 + */ +printerJobs.prototype.println = function(content = '') { + return this.print(content + commands.EOL); +}; + +/** + * 璁剧疆瀵归綈鏂瑰紡 + * @param {string} align 瀵归綈鏂瑰紡 LT/CT/RT + */ +printerJobs.prototype.setAlign = function(align) { + this._enqueue(commands.TEXT_FORMAT['TXT_ALIGN_' + align.toUpperCase()]); + return this; +}; + +/** + * 璁剧疆瀛椾綋 + * @param {string} family A/B/C + */ +printerJobs.prototype.setFont = function(family) { + this._enqueue(commands.TEXT_FORMAT['TXT_FONT_' + family.toUpperCase()]); + return this; +}; + +/** + * 璁惧畾瀛椾綋灏哄 + * @param {number} width 瀛椾綋瀹藉害 1~2 + * @param {number} height 瀛椾綋楂樺害 1~2 + */ +printerJobs.prototype.setSize = function(width, height) { + if (2 >= width && 2 >= height) { + this._enqueue(commands.TEXT_FORMAT.TXT_NORMAL); + if (2 === width && 2 === height) { + this._enqueue(commands.TEXT_FORMAT.TXT_4SQUARE); + } else if (1 === width && 2 === height) { + this._enqueue(commands.TEXT_FORMAT.TXT_2HEIGHT); + } else if (2 === width && 1 === height) { + this._enqueue(commands.TEXT_FORMAT.TXT_2WIDTH); + } + } + return this; +}; + +/** + * 璁惧畾瀛椾綋鏄惁鍔犵矖 + * @param {boolean} bold + */ +printerJobs.prototype.setBold = function(bold) { + if (typeof bold !== 'boolean') { + bold = true; + } + this._enqueue(bold ? commands.TEXT_FORMAT.TXT_BOLD_ON : commands.TEXT_FORMAT.TXT_BOLD_OFF); + return this; +}; + +/** + * 璁惧畾鏄惁寮�鍚笅鍒掔嚎 + * @param {boolean} underline + */ +printerJobs.prototype.setUnderline = function(underline) { + if (typeof underline !== 'boolean') { + underline = true; + } + this._enqueue(underline ? commands.TEXT_FORMAT.TXT_UNDERL_ON : commands.TEXT_FORMAT.TXT_UNDERL_OFF); + return this; +}; + +/** + * 璁剧疆琛岄棿璺濅负 n 鐐硅,榛樿鍊艰闂磋窛鏄� 30 鐐� + * @param {number} n 0鈮鈮�255 + */ +printerJobs.prototype.setLineSpacing = function(n) { + if (n === undefined || n === null) { + this._enqueue(commands.LINE_SPACING.LS_DEFAULT); + } else { + this._enqueue(commands.LINE_SPACING.LS_SET); + this._enqueue([n]); + } + return this; +}; + +/** + * 鎵撳嵃绌鸿 + * @param {number} n + */ +printerJobs.prototype.lineFeed = function(n = 1) { + return this.print(new Array(n).fill(commands.EOL).join('')); +}; + + +/** + * 璁剧疆鏀惧ぇ鍊嶆暟 + * @param x 0-7 瀛楃瀹芥斁澶у�嶆暟 + * @param y 0-7 瀛楃楂樻斁澶у�嶆暟 + */ +printerJobs.prototype.setCharacterMultiple = function ( x, y) { + this._enqueue([0x1d, 0x21]); + if (0 <= x && x <= 7 && 0 <= y && y <= 7) { + var cmd = x * 16 + y; + this._enqueue([cmd]); + } + return this; +}; + + /** + * * 鎵撳嵃浜岀淮鐮� + * @param content 鏉$爜鏁版嵁 + * @param barcodeType 鏉$爜绫诲瀷锛� + * 0锛歅DF417锛� 1锛欴ATAMATRIX 锛� 2锛歈RCODE銆� + * @param param1锛宲aram2锛宲aram3 鏉$爜鍙傛暟锛� + * 涓変釜鍙傛暟琛ㄧず涓嶅悓鐨勬剰鎬濓細 + * 1. PDF417 + * param1锛氳〃绀烘瘡琛屽瓧绗︽暟锛�1<=n<=30銆� + * param2锛氳〃绀虹籂閿欑瓑绾э紝0<=n<=8銆� + * param3锛氳〃绀虹旱鍚戞斁澶у�嶆暟銆� + * 2. DATAMATRIX + * param1锛氳〃绀哄浘褰㈤珮锛�0<=n<=144(0:鑷姩閫夋嫨)銆� + * param2锛氳〃绀哄浘褰㈠锛�8<=n<=144(param1 涓� 0鏃�,鏃犳晥)銆� + * param3锛氳〃绀虹旱鍚戞斁澶у�嶆暟銆� + * 3. QRCODE + * param1锛氳〃绀哄浘褰㈢増鏈彿锛�1<=n<=30(0:鑷姩閫夋嫨)銆� + * param2锛氳〃绀虹籂閿欑瓑绾э紝n = 76,77,81,72(L:7%,M:15%,Q:25%,H:30%)銆� + * param3锛氳〃绀虹旱鍚戞斁澶у�嶆暟銆� + * + */ +printerJobs.prototype.printQrcode = function (content, barcodeType, param1, param2, param3) { + var str = content; + var length = str.replace(/[^\u0000-\u00ff]/g, "aa").length; + this._enqueue([0x1d,0x5a]); + this._enqueue([barcodeType]); + this._enqueue([0x1b, 0x5a]); + this._enqueue([param1]); + this._enqueue([param2]); + this._enqueue([param3]); + this._enqueue([length%256]); + this._enqueue([length/256]); + this.print(content); + return this; +}; + +printerJobs.prototype.queryStatus = function () { + this._enqueue([0x10, 0x04,0x02]); + return this; +}; + +/** + * 娓呯┖浠诲姟 + */ +printerJobs.prototype.clear = function () { + this._queue = Array.from(commands.HARDWARE.HW_INIT); + return this; +}; + +/** + * 杩斿洖ArrayBuffer + */ +printerJobs.prototype.buffer = function () { + return new Uint8Array(this._queue).buffer; +}; + + +/** + * CPCL鎵撳嵃 + */ + +/** + * 璁剧疆鏍囩瀹介珮 蹇呴』鍦ㄥ紑澶磋缃� + * width:80mm 涓�576锛�58mm涓�384 + */ +printerJobs.prototype.label_set_page = function (width,height) { + var content= "! 0 200 200 " + height + " 1\r\nPAGE-WIDTH " + width + "\r\n"; + this.text(content); + return this; +}; + +/** + * 鎵撳嵃琛ㄦ牸 + * lineWidth:杈规绾挎潯瀹藉害0-1 + * top_left_x:宸︿笂瑙扻鍧愭爣 + * top_left_y:宸︿笂瑙扽鍧愭爣 + * bottom_right_x:鍙充笅瑙扻鍧愭爣 + * bottom_right_y:鍙充笅瑙扻鍧愭爣 + */ +printerJobs.prototype.drawbox = function (lineWidth, top_left_x, top_left_y, bottom_right_x, bottom_right_y) { + var content = "BOX " + top_left_x + " " + top_left_y + " " + bottom_right_x + " " + bottom_right_y + " " + lineWidth + "\r\n"; + this.text(content); + return this; +}; + +/** + * 鏍囩鎵撳嵃 蹇呴』鍦ㄧ粨灏捐皟鐢� + * @param horizontal 0:姝e父鎵撳嵃锛屼笉鏃嬭浆锛�1锛氭暣涓〉闈㈤『鏃堕拡鏃嬭浆180掳鍚庯紝鎵撳嵃 + * @param skip 0锛氭墦鍗扮粨鏉熷悗涓嶅畾浣嶏紝鐩存帴鍋滄锛�1锛氭墦鍗扮粨鏉熷悗瀹氫綅鍒版爣绛惧垎鍓茬嚎锛屽鏋滄棤缂濋殭锛屾渶澶ц繘绾�260mm鍚庡仠姝� + */ +printerJobs.prototype.label_print = function (horizontal, skip) { + var horizontal1; + var str; + switch (horizontal) { + case 0: + horizontal1 = 0; + break; + case 1: + horizontal1 = 1; + break; + case 2: + horizontal1 = 2; + break; + default: + horizontal1 = 0; + } + + if (skip == 1) { + str = "PR " + horizontal1 + "\r\nFORM\r\nPRINT\r\n"; + } else { + str = "PR " + horizontal1 + "\r\nPRINT\r\n"; + } + this.text(str); + return this; +}; + +/** + * 鎵撳嵃涓�缁寸爜 + * @param start_x 鎵撳嵃鐨勮捣濮嬫í鍧愭爣 + * @param start_y 鎵撳嵃鐨勮捣濮嬬旱鍧愭爣 + * @param text 瀛楃涓� + * @param barcodeType 鏉$爜绫诲瀷 + * 0锛欳ODE39锛�1锛欳ODE128锛�2锛欳ODE93锛�3锛欳ODEBAR锛�4锛欵AN8锛�5锛欵AN13锛�6锛歎PCA + * ;7:UPC-E;8:ITF + * @param rotate 鏃嬭浆瑙掑害 0锛氫笉鏃嬭浆锛�1 鏃嬭浆 + * @param linewidth 鏉$爜瀹藉害 + * @param height 鏉$爜楂樺害 + // */ +printerJobs.prototype.drawBarCode = function (start_x, start_y, text, barcodeType, rotate, linewidth, height) { + var str1 = "BARCODE"; + if (rotate) { + str1 = "VB"; + } + + var st1 = "128"; + if (barcodeType == 0) { + st1 = "39"; + } else if (barcodeType == 1) { + st1 = "128"; + } else if (barcodeType == 2) { + st1 = "93"; + } else if (barcodeType == 3) { + st1 = "CODABAR"; + } else if (barcodeType == 4) { + st1 = "EAN8"; + } else if (barcodeType == 5) { + st1 = "EAN13"; + } else if (barcodeType == 6) { + st1 = "UPCA"; + } else if (barcodeType == 7) { + st1 = "UPCE"; + } +// var content = `BARCODE 128 1 1 50 0 20 123456789`; + var content = str1 + " " + st1 + " " + linewidth + " 1 " + height + " " + start_x + " " + start_y + " " + text + "\r\n"; + this.text(content); + return this; +}; + +/** + * 鎵撳嵃浜岀淮鐮� + * @param start_x 浜岀淮鐮佽捣濮嬩綅缃� + * @param start_y 浜岀淮鐮佺粨鏉熶綅缃� + * @param text 浜岀淮鐮佸唴瀹� + * @param rotate 鏃嬭浆瑙掑害 + * @param ver : QrCode瀹藉害(2-15) + * @param lel : QrCode绾犻敊绛夌骇(0-20) + */ +printerJobs.prototype.drawQrCode = function ( start_x, start_y, text, rotate, ver, lel) { + var str1 = "B"; + if (rotate != 0) { + str1 = "VB"; + } + var content = str1 + " QR " + start_x + " " + start_y + " " + " M " + " " + 2 + " " + "U" + " " + ver + " " + "\r\n" + "MA," + text + "\r\n" + "ENDQR" + "\r\n"; + + this.text(content); + return this; +}; + +/** + * 鎵撳嵃鏂囧瓧 + * + * @param text_x 璧峰妯潗鏍� + * @param text_y 璧峰绾靛潗鏍� + * @param text 瀛楃涓� + * @param fontSize 瀛椾綋澶у皬 20:20鐐归樀 1锛�16鐐归樀锛�2锛�24鐐归樀锛�3锛�32鐐归樀锛�4锛�24鐐归樀鏀惧ぇ涓�鍊嶏紱5锛�32鐐归樀鏀惧ぇ涓�鍊� + * 6锛�24鐐归樀鏀惧ぇ涓ゅ�嶏紱7锛�32鐐归樀鏀惧ぇ涓ゅ�嶏紱鍏朵粬锛�24鐐归樀 + * @param rotate 鏃嬭浆瑙掑害 0锛氫笉鏃嬭浆锛�1锛�90搴︼紱2锛�180掳锛�3:270掳 + * @param bold 鏄惁绮椾綋 0锛氬彇娑堬紱1锛氳缃� + * @param underline 鏄湁鏈変笅鍒掔嚎 false:娌℃湁锛泃rue锛氭湁 + * @param reverse 鏄惁鍙嶇櫧 false锛氫笉鍙嶇櫧锛泃rue锛氬弽鐧� + */ +printerJobs.prototype.drawText = function ( text_x, text_y, text, fontSize, rotate, bold, reverse, underline) { + var st1 = ""; + if (rotate == 0) { + st1 = "T"; + } else if (rotate == 1) { + st1 = "T90"; + } else if (rotate == 2) { + st1 = "T180"; + } else if (rotate == 3) { + st1 = "T270"; + } + var rev = 0; + var und = 0; + if (reverse) { + rev = 1; + } + if (underline) { + und = 1; + } + var st2 = 24; + var st3 = 0; + if (fontSize == 20) { + st2 = 20; + st3 = 0; + } else if (fontSize == 1) { + st2 = 55; + st3 = 0; + } else if (fontSize == 2) { + st2 = 24; + st3 = 0; + } else if (fontSize == 3) { + st2 = 55; + st3 = 11; + } else if (fontSize == 4) { + st2 = 24; + st3 = 11; + } else if (fontSize == 5) { + st2 = 55; + st3 = 33; + } else if (fontSize == 6) { + st2 = 24; + st3 = 22; + } else if (fontSize == 7) { + st2 = 55; + st3 = 77; + } + var content = "SETBOLD " + bold + "\r\n" + "IT " + rev + "\r\n" + "UT " + und + "\r\n" + st1 + " " + st2 + " " + st3 + " " + text_x + " " + text_y + " " + text + "\r\n"; + + this.text(content); + return this; +}; + +/** + * 鎵撳嵃鍙嶆樉 + */ +printerJobs.prototype.inverse = function ( var1, var2, var3, var4, width) { + var str1 = "IL"; + var x0 = var1; + var y0 = var2; + var x1 = var3; + var y1 = var4; + var w = width; + if (var1 == var3) { + x0 = var1; y0 = var2; + x1 = var1 + width; + y1 = var2; + w = var4 - var2; + } + var content = str1 + " " + x0 + " " + y0 + " " + x1 + " " + y1 + " " + w + "\r\n"; + + this.text(content); + return this; +}; + +/** + * 绾挎潯 + * + * @param lineWidth 绾挎潯瀹藉害 + * @param start_x 绾挎潯璧峰鐐箈鍧愭爣 + * @param start_y 绾挎潯璧峰鐐箉鍧愭爣 + * @param end_x 绾挎潯缁撴潫鐐箈鍧愭爣 + * @param end_y 绾挎潯缁撴潫鐐箉鍧愭爣 + * @param fullline true:瀹炵嚎 false:?铏氱嚎 + */ +printerJobs.prototype.drawLine = function ( width, x0, y0, x1, y1) { + var content = "LINE " + x0 + " " + y0 + " " + x1 + " " + y1 + " " + width + "\r\n"; + + + this.text(content); + return this; +}; + + + + + +/** + * 娓呯┖浠诲姟 + */ +printerJobs.prototype.clear = function() { + this._queue = Array.from(commands.HARDWARE.HW_INIT); + return this; +}; + +/** + * 杩斿洖ArrayBuffer + */ +printerJobs.prototype.buffer = function() { + return new Uint8Array(this._queue).buffer; +}; + +module.exports = printerJobs; diff --git a/LA24030_LuLiPackageLine_Pda/components/print/printerutil.js b/LA24030_LuLiPackageLine_Pda/components/print/printerutil.js new file mode 100644 index 0000000..c541aae --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/print/printerutil.js @@ -0,0 +1,91 @@ +// 鎵撳嵃鏈虹焊瀹�58mm锛岄〉鐨勫搴�384锛屽瓧绗﹀搴︿负1锛屾瘡琛屾渶澶氱洓鏀�32涓瓧绗� +const PAGE_WIDTH = 384; +const MAX_CHAR_COUNT_EACH_LINE = 32; + +/** + * @param str + * @returns {boolean} str鏄惁鍏ㄦ槸涓枃 + */ +function isChinese(str) { + return /^[\u4e00-\u9fa5]$/.test(str); +} + +/** + * 杩斿洖瀛楃涓插搴�(1涓腑鏂�=2涓嫳鏂囧瓧绗�) + * @param str + * @returns {number} + */ +function getStringWidth(str) { + let width = 0; + for (let i = 0, len = str.length; i < len; i++) { + width += isChinese(str.charAt(i)) ? 2 : 1; + } + return width; +} + +/** + * 鍚屼竴琛岃緭鍑簊tr1, str2锛宻tr1灞呭乏, str2灞呭彸 + * @param {string} str1 鍐呭1 + * @param {string} str2 鍐呭2 + * @param {number} fontWidth 瀛楃瀹藉害 1/2 + * @param {string} fillWith str1 str2涔嬮棿鐨勫~鍏呭瓧绗� + * + */ +function inline(str1, str2, fillWith = ' ', fontWidth = 1) { + const lineWidth = MAX_CHAR_COUNT_EACH_LINE / fontWidth; + // 闇�瑕佸~鍏呯殑瀛楃鏁伴噺 + let fillCount = lineWidth - (getStringWidth(str1) + getStringWidth(str2)) % lineWidth; + let fillStr = new Array(fillCount).fill(fillWith.charAt(0)).join(''); + return str1 + fillStr + str2; +} + +/** + * 鐢ㄥ瓧绗﹀~鍏呬竴鏁磋 + * @param {string} fillWith 濉厖瀛楃 + * @param {number} fontWidth 瀛楃瀹藉害 1/2 + */ +function fillLine(fillWith = '-', fontWidth = 1) { + const lineWidth = MAX_CHAR_COUNT_EACH_LINE / fontWidth; + return new Array(lineWidth).fill(fillWith.charAt(0)).join(''); +} + +/** + * 鏂囧瓧鍐呭灞呬腑锛屽乏鍙崇敤瀛楃濉厖 + * @param {string} str 鏂囧瓧鍐呭 + * @param {number} fontWidth 瀛楃瀹藉害 1/2 + * @param {string} fillWith str1 str2涔嬮棿鐨勫~鍏呭瓧绗� + */ +function fillAround(str, fillWith = '-', fontWidth = 1) { + const lineWidth = MAX_CHAR_COUNT_EACH_LINE / fontWidth; + let strWidth = getStringWidth(str); + // 鍐呭宸茬粡瓒呰繃涓�琛屼簡锛屾病蹇呰濉厖 + if (strWidth >= lineWidth) { + return str; + } + // 闇�瑕佸~鍏呯殑瀛楃鏁伴噺 + let fillCount = lineWidth - strWidth; + // 宸︿晶濉厖鐨勫瓧绗︽暟閲� + let leftCount = Math.round(fillCount / 2); + // 涓や晶鐨勫~鍏呭瓧绗︼紝闇�瑕佽�冭檻宸﹁竟闇�瑕佸~鍏咃紝鍙宠竟涓嶉渶瑕佸~鍏呯殑鎯呭喌 + let fillStr = new Array(leftCount).fill(fillWith.charAt(0)).join(''); + return fillStr + str + fillStr.substr(0, fillCount - leftCount); +} + +// ArrayBuffer杞�16杩涘害瀛楃涓茬ず渚� +function ab2hex(buffer) { + const hexArr = Array.prototype.map.call( + new Uint8Array(buffer), + function(bit) { + return ('00' + bit.toString(16)).slice(-2) + } + ) + return hexArr.join(',') +} + + +module.exports = { + inline: inline, + fillLine: fillLine, + fillAround: fillAround, + ab2hex:ab2hex, +}; diff --git a/LA24030_LuLiPackageLine_Pda/components/print/util.js b/LA24030_LuLiPackageLine_Pda/components/print/util.js new file mode 100644 index 0000000..49cb9bb --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/print/util.js @@ -0,0 +1,66 @@ +const formatTime = date => { + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + + return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') +} + +const formatNumber = n => { + n = n.toString() + return n[1] ? n : '0' + n +} + + +//4鍚�1 +function convert4to1(res) { + let arr = []; + for (let i = 0; i < res.length; i++) { + if (i % 4 == 0) { + let rule = 0.29900 * res[i] + 0.58700 * res[i + 1] + 0.11400 * res[i + 2]; + if (rule > 200) { + res[i] = 0; + } else { + res[i] = 1; + } + arr.push(res[i]); + } + } + return arr; +} + +//8鍚�1 +function convert8to1(arr) { + let data = []; + for (let k = 0; k < arr.length; k += 8) { + let temp = arr[k] * 128 + arr[k + 1] * 64 + arr[k + 2] * 32 + arr[k + 3] * 16 + arr[k + 4] * 8 + arr[k + 5] * 4 + + arr[k + 6] * 2 + arr[k + 7] * 1 + data.push(temp); + } + return data; +} + +//鎴戠殑鍥剧墖瀹藉害鏄�240锛岄偅涔堟嫾鎺ョ殑鎸囦护灏辨槸[29, 118, 48, 0, 30, 0, 240, 0] +//鎴戠殑鍥剧墖瀹藉害鏄�160锛岄偅涔堟嫾鎺ョ殑鎸囦护灏辨槸[29, 118, 48, 0, 20, 0, 160, 0] +//琛ュ厖涓�鐐癸紝鎵撳嵃闈炰簩缁寸爜鐨勫浘鐗囷紝瀹藉害涓�瀹氳鏄�24鐨勫�嶆暟锛屼笉鐒舵墦鍗颁篃浼氬嚭鐜颁贡鐮� +function toArrayBuffer(res) { + let arr = convert4to1(res.data); + let data = convert8to1(arr); + let cmds = [].concat([27, 97, 1], [29, 118, 48, 0, 30, 0, 240, 0], data, [27, 74, 3], [27, 64]); + return new Uint8Array(cmds).buffer; +} + +function zip_image(res) { + let arr = convert4to1(res.data); + let data = convert8to1(arr); + return data; +} + +module.exports = { + formatTime: formatTime, + toArrayBuffer: toArrayBuffer, + zip_image: zip_image, +} diff --git a/LA24030_LuLiPackageLine_Pda/components/print/weapp.qrcode.esm.js b/LA24030_LuLiPackageLine_Pda/components/print/weapp.qrcode.esm.js new file mode 100644 index 0000000..7231270 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/print/weapp.qrcode.esm.js @@ -0,0 +1,5 @@ +/** + * weapp.qrcode.js v1.0.0 (https://github.com/yingye/weapp-qrcode#readme) + */ + +var hasOwn=Object.prototype.hasOwnProperty,toStr=Object.prototype.toString,defineProperty=Object.defineProperty,gOPD=Object.getOwnPropertyDescriptor,isArray=function(t){return"function"==typeof Array.isArray?Array.isArray(t):"[object Array]"===toStr.call(t)},isPlainObject=function(t){if(!t||"[object Object]"!==toStr.call(t))return!1;var e,r=hasOwn.call(t,"constructor"),o=t.constructor&&t.constructor.prototype&&hasOwn.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!r&&!o)return!1;for(e in t);return void 0===e||hasOwn.call(t,e)},setProperty=function(t,e){defineProperty&&"__proto__"===e.name?defineProperty(t,e.name,{enumerable:!0,configurable:!0,value:e.newValue,writable:!0}):t[e.name]=e.newValue},getProperty=function(t,e){if("__proto__"===e){if(!hasOwn.call(t,e))return;if(gOPD)return gOPD(t,e).value}return t[e]},extend=function t(){var e,r,o,n,i,a,s=arguments[0],u=1,l=arguments.length,h=!1;for("boolean"==typeof s&&(h=s,s=arguments[1]||{},u=2),(null==s||"object"!=typeof s&&"function"!=typeof s)&&(s={});u<l;++u)if(null!=(e=arguments[u]))for(r in e)o=getProperty(s,r),s!==(n=getProperty(e,r))&&(h&&n&&(isPlainObject(n)||(i=isArray(n)))?(i?(i=!1,a=o&&isArray(o)?o:[]):a=o&&isPlainObject(o)?o:{},setProperty(s,{name:r,newValue:t(h,a,n)})):void 0!==n&&setProperty(s,{name:r,newValue:n}));return s};function QR8bitByte(t){this.mode=QRMode.MODE_8BIT_BYTE,this.data=t}function QRCode(t,e){this.typeNumber=t,this.errorCorrectLevel=e,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=new Array}QR8bitByte.prototype={getLength:function(t){return this.data.length},write:function(t){for(var e=0;e<this.data.length;e++)t.put(this.data.charCodeAt(e),8)}},QRCode.prototype={addData:function(t){var e=new QR8bitByte(t);this.dataList.push(e),this.dataCache=null},isDark:function(t,e){if(t<0||this.moduleCount<=t||e<0||this.moduleCount<=e)throw new Error(t+","+e);return this.modules[t][e]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var t=1;for(t=1;t<40;t++){for(var e=QRRSBlock.getRSBlocks(t,this.errorCorrectLevel),r=new QRBitBuffer,o=0,n=0;n<e.length;n++)o+=e[n].dataCount;for(n=0;n<this.dataList.length;n++){var i=this.dataList[n];r.put(i.mode,4),r.put(i.getLength(),QRUtil.getLengthInBits(i.mode,t)),i.write(r)}if(r.getLengthInBits()<=8*o)break}this.typeNumber=t}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(t,e){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(t,e),this.typeNumber>=7&&this.setupTypeNumber(t),null==this.dataCache&&(this.dataCache=QRCode.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,e)},setupPositionProbePattern:function(t,e){for(var r=-1;r<=7;r++)if(!(t+r<=-1||this.moduleCount<=t+r))for(var o=-1;o<=7;o++)e+o<=-1||this.moduleCount<=e+o||(this.modules[t+r][e+o]=0<=r&&r<=6&&(0==o||6==o)||0<=o&&o<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=o&&o<=4)},getBestMaskPattern:function(){for(var t=0,e=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=QRUtil.getLostPoint(this);(0==r||t>o)&&(t=o,e=r)}return e},createMovieClip:function(t,e,r){var o=t.createEmptyMovieClip(e,r);this.make();for(var n=0;n<this.modules.length;n++)for(var i=1*n,a=0;a<this.modules[n].length;a++){var s=1*a;this.modules[n][a]&&(o.beginFill(0,100),o.moveTo(s,i),o.lineTo(s+1,i),o.lineTo(s+1,i+1),o.lineTo(s,i+1),o.endFill())}return o},setupTimingPattern:function(){for(var t=8;t<this.moduleCount-8;t++)null==this.modules[t][6]&&(this.modules[t][6]=t%2==0);for(var e=8;e<this.moduleCount-8;e++)null==this.modules[6][e]&&(this.modules[6][e]=e%2==0)},setupPositionAdjustPattern:function(){for(var t=QRUtil.getPatternPosition(this.typeNumber),e=0;e<t.length;e++)for(var r=0;r<t.length;r++){var o=t[e],n=t[r];if(null==this.modules[o][n])for(var i=-2;i<=2;i++)for(var a=-2;a<=2;a++)this.modules[o+i][n+a]=-2==i||2==i||-2==a||2==a||0==i&&0==a}},setupTypeNumber:function(t){for(var e=QRUtil.getBCHTypeNumber(this.typeNumber),r=0;r<18;r++){var o=!t&&1==(e>>r&1);this.modules[Math.floor(r/3)][r%3+this.moduleCount-8-3]=o}for(r=0;r<18;r++){o=!t&&1==(e>>r&1);this.modules[r%3+this.moduleCount-8-3][Math.floor(r/3)]=o}},setupTypeInfo:function(t,e){for(var r=this.errorCorrectLevel<<3|e,o=QRUtil.getBCHTypeInfo(r),n=0;n<15;n++){var i=!t&&1==(o>>n&1);n<6?this.modules[n][8]=i:n<8?this.modules[n+1][8]=i:this.modules[this.moduleCount-15+n][8]=i}for(n=0;n<15;n++){i=!t&&1==(o>>n&1);n<8?this.modules[8][this.moduleCount-n-1]=i:n<9?this.modules[8][15-n-1+1]=i:this.modules[8][15-n-1]=i}this.modules[this.moduleCount-8][8]=!t},mapData:function(t,e){for(var r=-1,o=this.moduleCount-1,n=7,i=0,a=this.moduleCount-1;a>0;a-=2)for(6==a&&a--;;){for(var s=0;s<2;s++)if(null==this.modules[o][a-s]){var u=!1;i<t.length&&(u=1==(t[i]>>>n&1)),QRUtil.getMask(e,o,a-s)&&(u=!u),this.modules[o][a-s]=u,-1==--n&&(i++,n=7)}if((o+=r)<0||this.moduleCount<=o){o-=r,r=-r;break}}}},QRCode.PAD0=236,QRCode.PAD1=17,QRCode.createData=function(t,e,r){for(var o=QRRSBlock.getRSBlocks(t,e),n=new QRBitBuffer,i=0;i<r.length;i++){var a=r[i];n.put(a.mode,4),n.put(a.getLength(),QRUtil.getLengthInBits(a.mode,t)),a.write(n)}var s=0;for(i=0;i<o.length;i++)s+=o[i].dataCount;if(n.getLengthInBits()>8*s)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+8*s+")");for(n.getLengthInBits()+4<=8*s&&n.put(0,4);n.getLengthInBits()%8!=0;)n.putBit(!1);for(;!(n.getLengthInBits()>=8*s||(n.put(QRCode.PAD0,8),n.getLengthInBits()>=8*s));)n.put(QRCode.PAD1,8);return QRCode.createBytes(n,o)},QRCode.createBytes=function(t,e){for(var r=0,o=0,n=0,i=new Array(e.length),a=new Array(e.length),s=0;s<e.length;s++){var u=e[s].dataCount,l=e[s].totalCount-u;o=Math.max(o,u),n=Math.max(n,l),i[s]=new Array(u);for(var h=0;h<i[s].length;h++)i[s][h]=255&t.buffer[h+r];r+=u;var f=QRUtil.getErrorCorrectPolynomial(l),g=new QRPolynomial(i[s],f.getLength()-1).mod(f);a[s]=new Array(f.getLength()-1);for(h=0;h<a[s].length;h++){var c=h+g.getLength()-a[s].length;a[s][h]=c>=0?g.get(c):0}}var d=0;for(h=0;h<e.length;h++)d+=e[h].totalCount;var R=new Array(d),m=0;for(h=0;h<o;h++)for(s=0;s<e.length;s++)h<i[s].length&&(R[m++]=i[s][h]);for(h=0;h<n;h++)for(s=0;s<e.length;s++)h<a[s].length&&(R[m++]=a[s][h]);return R};for(var QRMode={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},QRErrorCorrectLevel={L:1,M:0,Q:3,H:2},QRMaskPattern={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},QRUtil={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(t){for(var e=t<<10;QRUtil.getBCHDigit(e)-QRUtil.getBCHDigit(QRUtil.G15)>=0;)e^=QRUtil.G15<<QRUtil.getBCHDigit(e)-QRUtil.getBCHDigit(QRUtil.G15);return(t<<10|e)^QRUtil.G15_MASK},getBCHTypeNumber:function(t){for(var e=t<<12;QRUtil.getBCHDigit(e)-QRUtil.getBCHDigit(QRUtil.G18)>=0;)e^=QRUtil.G18<<QRUtil.getBCHDigit(e)-QRUtil.getBCHDigit(QRUtil.G18);return t<<12|e},getBCHDigit:function(t){for(var e=0;0!=t;)e++,t>>>=1;return e},getPatternPosition:function(t){return QRUtil.PATTERN_POSITION_TABLE[t-1]},getMask:function(t,e,r){switch(t){case QRMaskPattern.PATTERN000:return(e+r)%2==0;case QRMaskPattern.PATTERN001:return e%2==0;case QRMaskPattern.PATTERN010:return r%3==0;case QRMaskPattern.PATTERN011:return(e+r)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(e/2)+Math.floor(r/3))%2==0;case QRMaskPattern.PATTERN101:return e*r%2+e*r%3==0;case QRMaskPattern.PATTERN110:return(e*r%2+e*r%3)%2==0;case QRMaskPattern.PATTERN111:return(e*r%3+(e+r)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}},getErrorCorrectPolynomial:function(t){for(var e=new QRPolynomial([1],0),r=0;r<t;r++)e=e.multiply(new QRPolynomial([1,QRMath.gexp(r)],0));return e},getLengthInBits:function(t,e){if(1<=e&&e<10)switch(t){case QRMode.MODE_NUMBER:return 10;case QRMode.MODE_ALPHA_NUM:return 9;case QRMode.MODE_8BIT_BYTE:case QRMode.MODE_KANJI:return 8;default:throw new Error("mode:"+t)}else if(e<27)switch(t){case QRMode.MODE_NUMBER:return 12;case QRMode.MODE_ALPHA_NUM:return 11;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 10;default:throw new Error("mode:"+t)}else{if(!(e<41))throw new Error("type:"+e);switch(t){case QRMode.MODE_NUMBER:return 14;case QRMode.MODE_ALPHA_NUM:return 13;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 12;default:throw new Error("mode:"+t)}}},getLostPoint:function(t){for(var e=t.getModuleCount(),r=0,o=0;o<e;o++)for(var n=0;n<e;n++){for(var i=0,a=t.isDark(o,n),s=-1;s<=1;s++)if(!(o+s<0||e<=o+s))for(var u=-1;u<=1;u++)n+u<0||e<=n+u||0==s&&0==u||a==t.isDark(o+s,n+u)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<e-1;o++)for(n=0;n<e-1;n++){var l=0;t.isDark(o,n)&&l++,t.isDark(o+1,n)&&l++,t.isDark(o,n+1)&&l++,t.isDark(o+1,n+1)&&l++,0!=l&&4!=l||(r+=3)}for(o=0;o<e;o++)for(n=0;n<e-6;n++)t.isDark(o,n)&&!t.isDark(o,n+1)&&t.isDark(o,n+2)&&t.isDark(o,n+3)&&t.isDark(o,n+4)&&!t.isDark(o,n+5)&&t.isDark(o,n+6)&&(r+=40);for(n=0;n<e;n++)for(o=0;o<e-6;o++)t.isDark(o,n)&&!t.isDark(o+1,n)&&t.isDark(o+2,n)&&t.isDark(o+3,n)&&t.isDark(o+4,n)&&!t.isDark(o+5,n)&&t.isDark(o+6,n)&&(r+=40);var h=0;for(n=0;n<e;n++)for(o=0;o<e;o++)t.isDark(o,n)&&h++;return r+=10*(Math.abs(100*h/e/e-50)/5)}},QRMath={glog:function(t){if(t<1)throw new Error("glog("+t+")");return QRMath.LOG_TABLE[t]},gexp:function(t){for(;t<0;)t+=255;for(;t>=256;)t-=255;return QRMath.EXP_TABLE[t]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},i=0;i<8;i++)QRMath.EXP_TABLE[i]=1<<i;for(i=8;i<256;i++)QRMath.EXP_TABLE[i]=QRMath.EXP_TABLE[i-4]^QRMath.EXP_TABLE[i-5]^QRMath.EXP_TABLE[i-6]^QRMath.EXP_TABLE[i-8];for(i=0;i<255;i++)QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]]=i;function QRPolynomial(t,e){if(void 0==t.length)throw new Error(t.length+"/"+e);for(var r=0;r<t.length&&0==t[r];)r++;this.num=new Array(t.length-r+e);for(var o=0;o<t.length-r;o++)this.num[o]=t[o+r]}function QRRSBlock(t,e){this.totalCount=t,this.dataCount=e}function QRBitBuffer(){this.buffer=new Array,this.length=0}function utf16to8(t){var e,r,o,n;for(e="",o=t.length,r=0;r<o;r++)(n=t.charCodeAt(r))>=1&&n<=127?e+=t.charAt(r):n>2047?(e+=String.fromCharCode(224|n>>12&15),e+=String.fromCharCode(128|n>>6&63),e+=String.fromCharCode(128|n>>0&63)):(e+=String.fromCharCode(192|n>>6&31),e+=String.fromCharCode(128|n>>0&63));return e}function drawQrcode(t){t=t||{},(t=extend(!0,{width:256,height:256,x:0,y:0,typeNumber:-1,correctLevel:QRErrorCorrectLevel.H,background:"#ffffff",foreground:"#000000",image:{imageResource:"",dx:0,dy:0,dWidth:100,dHeight:100}},t)).canvasId||t.ctx?function(){var e,r=new QRCode(t.typeNumber,t.correctLevel);r.addData(utf16to8(t.text)),r.make(),e=t.ctx?t.ctx:t._this?wx.createCanvasContext&&wx.createCanvasContext(t.canvasId,t._this):wx.createCanvasContext&&wx.createCanvasContext(t.canvasId);for(var o=t.width/r.getModuleCount(),n=t.height/r.getModuleCount(),i=0;i<r.getModuleCount();i++)for(var a=0;a<r.getModuleCount();a++){var s=r.isDark(i,a)?t.foreground:t.background;e.setFillStyle(s);var u=Math.ceil((a+1)*o)-Math.floor(a*o),l=Math.ceil((i+1)*o)-Math.floor(i*o);e.fillRect(Math.round(a*o)+t.x,Math.round(i*n)+t.y,u,l)}t.image.imageResource&&e.drawImage(t.image.imageResource,t.image.dx,t.image.dy,t.image.dWidth,t.image.dHeight);e.draw(!1,function(e){t.callback&&t.callback(e)})}():console.warn("please set canvasId or ctx!")}QRPolynomial.prototype={get:function(t){return this.num[t]},getLength:function(){return this.num.length},multiply:function(t){for(var e=new Array(this.getLength()+t.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<t.getLength();o++)e[r+o]^=QRMath.gexp(QRMath.glog(this.get(r))+QRMath.glog(t.get(o)));return new QRPolynomial(e,0)},mod:function(t){if(this.getLength()-t.getLength()<0)return this;for(var e=QRMath.glog(this.get(0))-QRMath.glog(t.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(o=0;o<t.getLength();o++)r[o]^=QRMath.gexp(QRMath.glog(t.get(o))+e);return new QRPolynomial(r,0).mod(t)}},QRRSBlock.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],QRRSBlock.getRSBlocks=function(t,e){var r=QRRSBlock.getRsBlockTable(t,e);if(void 0==r)throw new Error("bad rs block @ typeNumber:"+t+"/errorCorrectLevel:"+e);for(var o=r.length/3,n=new Array,i=0;i<o;i++)for(var a=r[3*i+0],s=r[3*i+1],u=r[3*i+2],l=0;l<a;l++)n.push(new QRRSBlock(s,u));return n},QRRSBlock.getRsBlockTable=function(t,e){switch(e){case QRErrorCorrectLevel.L:return QRRSBlock.RS_BLOCK_TABLE[4*(t-1)+0];case QRErrorCorrectLevel.M:return QRRSBlock.RS_BLOCK_TABLE[4*(t-1)+1];case QRErrorCorrectLevel.Q:return QRRSBlock.RS_BLOCK_TABLE[4*(t-1)+2];case QRErrorCorrectLevel.H:return QRRSBlock.RS_BLOCK_TABLE[4*(t-1)+3];default:return}},QRBitBuffer.prototype={get:function(t){var e=Math.floor(t/8);return 1==(this.buffer[e]>>>7-t%8&1)},put:function(t,e){for(var r=0;r<e;r++)this.putBit(1==(t>>>e-r-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}};export default drawQrcode; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcode.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcode.js new file mode 100644 index 0000000..fb032d5 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcode.js @@ -0,0 +1,190 @@ +const barcodes = require('./barcodes/index.js')['default']; +let barcode = {}; +(function () { + // 鍒濆鍖� + barcode = function (cont, ctxid, options, ctxsize, result) { + let ops = {}, newOptions, encodings, globaContext, ctx, globaCtxid, cbCanvasSize, cbResult; + globaCtxid = ctxid + cbCanvasSize = ctxsize + cbResult = result + newOptions = Object.assign(ops, options); + // 淇垚margin + fixMargin(newOptions) + // 澶勭悊options 鏁版嵁 + if (newOptions.text == '' || cont == '') { + return false + } + // 鑾峰彇ctx + globaContext = cont + ctx = uni.createCanvasContext(globaCtxid, globaContext) + // 鑾峰彇缂栫爜鏁版嵁 + encodings = new barcodes[newOptions.format.toUpperCase()](newOptions.text, newOptions).encode() + let fixencodings = fixEncodings(encodings, newOptions) + // 杩斿洖canvas瀹為檯澶у皬 + cbCanvasSize({ width: fixencodings.width, height: fixencodings.height }) + // 缁樺埗canvas + setTimeout(() => { + drawCanvas.render(newOptions, fixencodings) + }, 50); + // 缁樺埗canvas + let drawCanvas = { + render(options, encoding) { + this.prepare(options, encoding) + encoding.encodings.forEach((v, i) => { + this.barcode(options, v) + this.text(options, v) + this.move(v) + }); + this.draw(options, encoding) + }, + barcode(options, encoding) { + let binary = encoding.data; + let yFrom; + if (options.textPosition == "top") { + yFrom = options.marginTop + options.fontSize + options.textMargin; + } else { + yFrom = options.marginTop; + } + // 缁樺埗鏉$爜 + ctx.fillStyle = options.lineColor; + for (let b = 0; b < binary.length; b++) { + let x = b * options.width + encoding.barcodePadding; + let height = options.height + if (encoding.options) { + if (encoding.options.height != undefined) { + height = encoding.options.height + } + } + if (binary[b] === "1") { + ctx.fillRect(x, yFrom, options.width, height); + } else if (binary[b]) { + ctx.fillRect(x, yFrom, options.width, height * binary[b]); + } + } + }, + text(options, encoding) { + if (options.displayValue) { + let x, y, align, size; + if (options.textPosition == "top") { + y = options.marginTop + options.fontSize; + } else { + y = options.height + options.textMargin + options.marginTop + options.fontSize; + } + if (encoding.options) { + if (encoding.options.textAlign != undefined) { + align = encoding.options.textAlign + } + if (encoding.options.fontSize != undefined) { + size = encoding.options.fontSize + } + } else { + align = options.textAlign + size = options.fontSize + } + ctx.setFontSize(size) + if (align == "left" || encoding.barcodePadding > 0) { + x = 0; + ctx.setTextAlign('left') + } else if (align == "right") { + x = encoding.width - 1; + ctx.setTextAlign('right') + } + else { + x = encoding.width / 2; + ctx.setTextAlign('center'); + } + ctx.fillStyle = options.fontColor; + if (encoding.text != undefined) { + ctx.fillText(encoding.text, x, y); + } + } + }, + move(encoding) { + ctx.translate(encoding.width, 0); + }, + prepare(options, encoding) { + // 缁樺埗鑳屾櫙 + if (options.background) { + ctx.fillStyle = options.background; + ctx.fillRect(0, 0, encoding.width, encoding.height); + } + ctx.translate(options.marginLeft, 0); + }, + draw(options, encoding) { + ctx.draw(false, () => { + this.toImgs(options, encoding) + }) + }, + toImgs(options, encoding) { + setTimeout(() => { + uni.canvasToTempFilePath({ + width: encoding.width, + height: encoding.height, + destWidth: encoding.width, + destHeight: encoding.height, + canvasId: globaCtxid, + fileType: 'png', + success: function (res) { + cbResult(res.tempFilePath) + }, + fail: function (res) { + cbResult(res) + }, + complete: function () { + // uni.hideLoading(); + }, + }, globaContext); + }, options.text.length + 100); + } + } + // 娣峰叆canvas鏁版嵁 + function fixEncodings(encoding, options) { + let encodingArr = [], width = options.marginLeft + options.marginRight, height; + if (!Array.isArray(encoding)) { + encodingArr[0] = JSON.parse(JSON.stringify(encoding)) + } else { + encodingArr = [...encoding] + } + encodingArr.forEach((v, i) => { + // 鑾峰彇鏂囨湰瀹藉害 + let textWidth = ctx.measureText(encodingArr[i].text ? encodingArr[i].text : '').width; + // 鑾峰彇鏉″舰鐮佸搴� + let barcodeWidth = encodingArr[i].data.length * options.width; + // 鑾峰彇鍐呰竟璺� + let barcodePadding = 0; + if (options.displayValue && barcodeWidth < textWidth) { + if (options.textAlign == "center") { + barcodePadding = Math.floor((textWidth - barcodeWidth) / 2); + } else if (options.textAlign == "left") { + barcodePadding = 0; + } else if (options.textAlign == "right") { + barcodePadding = Math.floor(textWidth - barcodeWidth); + } + } + // 娣峰叆encodingArr[i] + encodingArr[i].barcodePadding = barcodePadding + encodingArr[i].width = Math.ceil(Math.max(textWidth, barcodeWidth)) + width += encodingArr[i].width + if (encodingArr[i].options) { + if (encodingArr[i].options.height != undefined) { + encodingArr[i].height = encodingArr[i].options.height + (options.displayValue && (encodingArr[i].text ? encodingArr[i].text : '').length > 0 ? options.fontSize + options.textMargin : 0) + options.marginTop + options.marginBottom; + } else { + encodingArr[i].height = height = options.height + (options.displayValue && (encodingArr[i].text ? encodingArr[i].text : '').length > 0 ? options.fontSize + options.textMargin : 0) + options.marginTop + options.marginBottom; + } + } else { + encodingArr[i].height = height = options.height + (options.displayValue && (encodingArr[i].text ? encodingArr[i].text : '').length > 0 ? options.fontSize + options.textMargin : 0) + options.marginTop + options.marginBottom; + } + }); + return { encodings: encodingArr, width, height }; + } + // 淇Margin + function fixMargin(options) { + options.marginTop = options.marginTop == undefined ? options.margin : options.marginTop; + options.marginBottom = options.marginBottom == undefined ? options.margin : options.marginBottom; + options.marginRight = options.marginRight == undefined ? options.margin : options.marginRight; + options.marginLeft = options.marginLeft == undefined ? options.margin : options.marginLeft; + } + }; +})() + +export default barcode \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/Barcode.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/Barcode.js new file mode 100644 index 0000000..7138786 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/Barcode.js @@ -0,0 +1,17 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var Barcode = function Barcode(data, options) { + _classCallCheck(this, Barcode); + + this.data = data; + this.text = options.text || data; + this.options = options; +}; + +exports.default = Barcode; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128.js new file mode 100644 index 0000000..2d47112 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128.js @@ -0,0 +1,167 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _Barcode2 = require('../Barcode.js'); + +var _Barcode3 = _interopRequireDefault(_Barcode2); + +var _constants = require('./constants'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +// This is the master class, +// it does require the start code to be included in the string +var CODE128 = function (_Barcode) { + _inherits(CODE128, _Barcode); + + function CODE128(data, options) { + _classCallCheck(this, CODE128); + + // Get array of ascii codes from data + var _this = _possibleConstructorReturn(this, (CODE128.__proto__ || Object.getPrototypeOf(CODE128)).call(this, data.substring(1), options)); + + _this.bytes = data.split('').map(function (char) { + return char.charCodeAt(0); + }); + return _this; + } + + _createClass(CODE128, [{ + key: 'valid', + value: function valid() { + // ASCII value ranges 0-127, 200-211 + return (/^[\x00-\x7F\xC8-\xD3]+$/.test(this.data) + ); + } + + // The public encoding function + + }, { + key: 'encode', + value: function encode() { + var bytes = this.bytes; + // Remove the start code from the bytes and set its index + var startIndex = bytes.shift() - 105; + // Get start set by index + var startSet = _constants.SET_BY_CODE[startIndex]; + + if (startSet === undefined) { + throw new RangeError('The encoding does not start with a start character.'); + } + + if (this.shouldEncodeAsEan128() === true) { + bytes.unshift(_constants.FNC1); + } + + // Start encode with the right type + var encodingResult = CODE128.next(bytes, 1, startSet); + + return { + text: this.text === this.data ? this.text.replace(/[^\x20-\x7E]/g, '') : this.text, + data: + // Add the start bits + CODE128.getBar(startIndex) + + // Add the encoded bits + encodingResult.result + + // Add the checksum + CODE128.getBar((encodingResult.checksum + startIndex) % _constants.MODULO) + + // Add the end bits + CODE128.getBar(_constants.STOP) + }; + } + + // GS1-128/EAN-128 + + }, { + key: 'shouldEncodeAsEan128', + value: function shouldEncodeAsEan128() { + var isEAN128 = this.options.ean128 || false; + if (typeof isEAN128 === 'string') { + isEAN128 = isEAN128.toLowerCase() === 'true'; + } + return isEAN128; + } + + // Get a bar symbol by index + + }], [{ + key: 'getBar', + value: function getBar(index) { + return _constants.BARS[index] ? _constants.BARS[index].toString() : ''; + } + + // Correct an index by a set and shift it from the bytes array + + }, { + key: 'correctIndex', + value: function correctIndex(bytes, set) { + if (set === _constants.SET_A) { + var charCode = bytes.shift(); + return charCode < 32 ? charCode + 64 : charCode - 32; + } else if (set === _constants.SET_B) { + return bytes.shift() - 32; + } else { + return (bytes.shift() - 48) * 10 + bytes.shift() - 48; + } + } + }, { + key: 'next', + value: function next(bytes, pos, set) { + if (!bytes.length) { + return { result: '', checksum: 0 }; + } + + var nextCode = void 0, + index = void 0; + + // Special characters + if (bytes[0] >= 200) { + index = bytes.shift() - 105; + var nextSet = _constants.SWAP[index]; + + // Swap to other set + if (nextSet !== undefined) { + nextCode = CODE128.next(bytes, pos + 1, nextSet); + } + // Continue on current set but encode a special character + else { + // Shift + if ((set === _constants.SET_A || set === _constants.SET_B) && index === _constants.SHIFT) { + // Convert the next character so that is encoded correctly + bytes[0] = set === _constants.SET_A ? bytes[0] > 95 ? bytes[0] - 96 : bytes[0] : bytes[0] < 32 ? bytes[0] + 96 : bytes[0]; + } + nextCode = CODE128.next(bytes, pos + 1, set); + } + } + // Continue encoding + else { + index = CODE128.correctIndex(bytes, set); + nextCode = CODE128.next(bytes, pos + 1, set); + } + + // Get the correct binary encoding and calculate the weight + var enc = CODE128.getBar(index); + var weight = index * pos; + + return { + result: enc + nextCode.result, + checksum: weight + nextCode.checksum + }; + } + }]); + + return CODE128; +}(_Barcode3.default); + +exports.default = CODE128; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128A.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128A.js new file mode 100644 index 0000000..28d9f11 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128A.js @@ -0,0 +1,42 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _CODE2 = require('./CODE128.js'); + +var _CODE3 = _interopRequireDefault(_CODE2); + +var _constants = require('./constants'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var CODE128A = function (_CODE) { + _inherits(CODE128A, _CODE); + + function CODE128A(string, options) { + _classCallCheck(this, CODE128A); + + return _possibleConstructorReturn(this, (CODE128A.__proto__ || Object.getPrototypeOf(CODE128A)).call(this, _constants.A_START_CHAR + string, options)); + } + + _createClass(CODE128A, [{ + key: 'valid', + value: function valid() { + return new RegExp('^' + _constants.A_CHARS + '+$').test(this.data); + } + }]); + + return CODE128A; +}(_CODE3.default); + +exports.default = CODE128A; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128B.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128B.js new file mode 100644 index 0000000..746c93b --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128B.js @@ -0,0 +1,42 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _CODE2 = require('./CODE128.js'); + +var _CODE3 = _interopRequireDefault(_CODE2); + +var _constants = require('./constants'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var CODE128B = function (_CODE) { + _inherits(CODE128B, _CODE); + + function CODE128B(string, options) { + _classCallCheck(this, CODE128B); + + return _possibleConstructorReturn(this, (CODE128B.__proto__ || Object.getPrototypeOf(CODE128B)).call(this, _constants.B_START_CHAR + string, options)); + } + + _createClass(CODE128B, [{ + key: 'valid', + value: function valid() { + return new RegExp('^' + _constants.B_CHARS + '+$').test(this.data); + } + }]); + + return CODE128B; +}(_CODE3.default); + +exports.default = CODE128B; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128C.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128C.js new file mode 100644 index 0000000..b83ab9f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128C.js @@ -0,0 +1,42 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _CODE2 = require('./CODE128.js'); + +var _CODE3 = _interopRequireDefault(_CODE2); + +var _constants = require('./constants'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var CODE128C = function (_CODE) { + _inherits(CODE128C, _CODE); + + function CODE128C(string, options) { + _classCallCheck(this, CODE128C); + + return _possibleConstructorReturn(this, (CODE128C.__proto__ || Object.getPrototypeOf(CODE128C)).call(this, _constants.C_START_CHAR + string, options)); + } + + _createClass(CODE128C, [{ + key: 'valid', + value: function valid() { + return new RegExp('^' + _constants.C_CHARS + '+$').test(this.data); + } + }]); + + return CODE128C; +}(_CODE3.default); + +exports.default = CODE128C; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128_AUTO.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128_AUTO.js new file mode 100644 index 0000000..add94f4 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/CODE128_AUTO.js @@ -0,0 +1,41 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _CODE2 = require('./CODE128'); + +var _CODE3 = _interopRequireDefault(_CODE2); + +var _auto = require('./auto'); + +var _auto2 = _interopRequireDefault(_auto); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var CODE128AUTO = function (_CODE) { + _inherits(CODE128AUTO, _CODE); + + function CODE128AUTO(data, options) { + _classCallCheck(this, CODE128AUTO); + + // ASCII value ranges 0-127, 200-211 + if (/^[\x00-\x7F\xC8-\xD3]+$/.test(data)) { + var _this = _possibleConstructorReturn(this, (CODE128AUTO.__proto__ || Object.getPrototypeOf(CODE128AUTO)).call(this, (0, _auto2.default)(data), options)); + } else { + var _this = _possibleConstructorReturn(this, (CODE128AUTO.__proto__ || Object.getPrototypeOf(CODE128AUTO)).call(this, data, options)); + } + return _possibleConstructorReturn(_this); + } + + return CODE128AUTO; +}(_CODE3.default); + +exports.default = CODE128AUTO; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/auto.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/auto.js new file mode 100644 index 0000000..ed1d6ff --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/auto.js @@ -0,0 +1,73 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _constants = require('./constants'); + +// Match Set functions +var matchSetALength = function matchSetALength(string) { + return string.match(new RegExp('^' + _constants.A_CHARS + '*'))[0].length; +}; +var matchSetBLength = function matchSetBLength(string) { + return string.match(new RegExp('^' + _constants.B_CHARS + '*'))[0].length; +}; +var matchSetC = function matchSetC(string) { + return string.match(new RegExp('^' + _constants.C_CHARS + '*'))[0]; +}; + +// CODE128A or CODE128B +function autoSelectFromAB(string, isA) { + var ranges = isA ? _constants.A_CHARS : _constants.B_CHARS; + var untilC = string.match(new RegExp('^(' + ranges + '+?)(([0-9]{2}){2,})([^0-9]|$)')); + + if (untilC) { + return untilC[1] + String.fromCharCode(204) + autoSelectFromC(string.substring(untilC[1].length)); + } + + var chars = string.match(new RegExp('^' + ranges + '+'))[0]; + + if (chars.length === string.length) { + return string; + } + + return chars + String.fromCharCode(isA ? 205 : 206) + autoSelectFromAB(string.substring(chars.length), !isA); +} + +// CODE128C +function autoSelectFromC(string) { + var cMatch = matchSetC(string); + var length = cMatch.length; + + if (length === string.length) { + return string; + } + + string = string.substring(length); + + // Select A/B depending on the longest match + var isA = matchSetALength(string) >= matchSetBLength(string); + return cMatch + String.fromCharCode(isA ? 206 : 205) + autoSelectFromAB(string, isA); +} + +// Detect Code Set (A, B or C) and format the string + +exports.default = function (string) { + var newString = void 0; + var cLength = matchSetC(string).length; + + // Select 128C if the string start with enough digits + if (cLength >= 2) { + newString = _constants.C_START_CHAR + autoSelectFromC(string); + } else { + // Select A/B depending on the longest match + var isA = matchSetALength(string) > matchSetBLength(string); + newString = (isA ? _constants.A_START_CHAR : _constants.B_START_CHAR) + autoSelectFromAB(string, isA); + } + + return newString.replace(/[\xCD\xCE]([^])[\xCD\xCE]/, // Any sequence between 205 and 206 characters + function (match, char) { + return String.fromCharCode(203) + char; + }); +}; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/constants.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/constants.js new file mode 100644 index 0000000..b992c0e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/constants.js @@ -0,0 +1,54 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _SET_BY_CODE; + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + +// constants for internal usage +var SET_A = exports.SET_A = 0; +var SET_B = exports.SET_B = 1; +var SET_C = exports.SET_C = 2; + +// Special characters +var SHIFT = exports.SHIFT = 98; +var START_A = exports.START_A = 103; +var START_B = exports.START_B = 104; +var START_C = exports.START_C = 105; +var MODULO = exports.MODULO = 103; +var STOP = exports.STOP = 106; +var FNC1 = exports.FNC1 = 207; + +// Get set by start code +var SET_BY_CODE = exports.SET_BY_CODE = (_SET_BY_CODE = {}, _defineProperty(_SET_BY_CODE, START_A, SET_A), _defineProperty(_SET_BY_CODE, START_B, SET_B), _defineProperty(_SET_BY_CODE, START_C, SET_C), _SET_BY_CODE); + +// Get next set by code +var SWAP = exports.SWAP = { + 101: SET_A, + 100: SET_B, + 99: SET_C +}; + +var A_START_CHAR = exports.A_START_CHAR = String.fromCharCode(208); // START_A + 105 +var B_START_CHAR = exports.B_START_CHAR = String.fromCharCode(209); // START_B + 105 +var C_START_CHAR = exports.C_START_CHAR = String.fromCharCode(210); // START_C + 105 + +// 128A (Code Set A) +// ASCII characters 00 to 95 (0鈥�9, A鈥揨 and control codes), special characters, and FNC 1鈥�4 +var A_CHARS = exports.A_CHARS = "[\x00-\x5F\xC8-\xCF]"; + +// 128B (Code Set B) +// ASCII characters 32 to 127 (0鈥�9, A鈥揨, a鈥搝), special characters, and FNC 1鈥�4 +var B_CHARS = exports.B_CHARS = "[\x20-\x7F\xC8-\xCF]"; + +// 128C (Code Set C) +// 00鈥�99 (encodes two digits with a single code point) and FNC1 +var C_CHARS = exports.C_CHARS = "(\xCF*[0-9]{2}\xCF*)"; + +// CODE128 includes 107 symbols: +// 103 data symbols, 3 start symbols (A, B and C), and 1 stop symbol (the last one) +// Each symbol consist of three black bars (1) and three white spaces (0). +var BARS = exports.BARS = [11011001100, 11001101100, 11001100110, 10010011000, 10010001100, 10001001100, 10011001000, 10011000100, 10001100100, 11001001000, 11001000100, 11000100100, 10110011100, 10011011100, 10011001110, 10111001100, 10011101100, 10011100110, 11001110010, 11001011100, 11001001110, 11011100100, 11001110100, 11101101110, 11101001100, 11100101100, 11100100110, 11101100100, 11100110100, 11100110010, 11011011000, 11011000110, 11000110110, 10100011000, 10001011000, 10001000110, 10110001000, 10001101000, 10001100010, 11010001000, 11000101000, 11000100010, 10110111000, 10110001110, 10001101110, 10111011000, 10111000110, 10001110110, 11101110110, 11010001110, 11000101110, 11011101000, 11011100010, 11011101110, 11101011000, 11101000110, 11100010110, 11101101000, 11101100010, 11100011010, 11101111010, 11001000010, 11110001010, 10100110000, 10100001100, 10010110000, 10010000110, 10000101100, 10000100110, 10110010000, 10110000100, 10011010000, 10011000010, 10000110100, 10000110010, 11000010010, 11001010000, 11110111010, 11000010100, 10001111010, 10100111100, 10010111100, 10010011110, 10111100100, 10011110100, 10011110010, 11110100100, 11110010100, 11110010010, 11011011110, 11011110110, 11110110110, 10101111000, 10100011110, 10001011110, 10111101000, 10111100010, 11110101000, 11110100010, 10111011110, 10111101110, 11101011110, 11110101110, 11010000100, 11010010000, 11010011100, 1100011101011]; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/index.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/index.js new file mode 100644 index 0000000..4364222 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE128/index.js @@ -0,0 +1,29 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CODE128C = exports.CODE128B = exports.CODE128A = exports.CODE128 = undefined; + +var _CODE128_AUTO = require('./CODE128_AUTO.js'); + +var _CODE128_AUTO2 = _interopRequireDefault(_CODE128_AUTO); + +var _CODE128A = require('./CODE128A.js'); + +var _CODE128A2 = _interopRequireDefault(_CODE128A); + +var _CODE128B = require('./CODE128B.js'); + +var _CODE128B2 = _interopRequireDefault(_CODE128B); + +var _CODE128C = require('./CODE128C.js'); + +var _CODE128C2 = _interopRequireDefault(_CODE128C); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.CODE128 = _CODE128_AUTO2.default; +exports.CODE128A = _CODE128A2.default; +exports.CODE128B = _CODE128B2.default; +exports.CODE128C = _CODE128C2.default; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE39/index.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE39/index.js new file mode 100644 index 0000000..4c1b35c --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/CODE39/index.js @@ -0,0 +1,104 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CODE39 = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _Barcode2 = require("../Barcode.js"); + +var _Barcode3 = _interopRequireDefault(_Barcode2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation: +// https://en.wikipedia.org/wiki/Code_39#Encoding + +var CODE39 = function (_Barcode) { + _inherits(CODE39, _Barcode); + + function CODE39(data, options) { + _classCallCheck(this, CODE39); + + data = data.toUpperCase(); + + // Calculate mod43 checksum if enabled + if (options.mod43) { + data += getCharacter(mod43checksum(data)); + } + + return _possibleConstructorReturn(this, (CODE39.__proto__ || Object.getPrototypeOf(CODE39)).call(this, data, options)); + } + + _createClass(CODE39, [{ + key: "encode", + value: function encode() { + // First character is always a * + var result = getEncoding("*"); + + // Take every character and add the binary representation to the result + for (var i = 0; i < this.data.length; i++) { + result += getEncoding(this.data[i]) + "0"; + } + + // Last character is always a * + result += getEncoding("*"); + return { + data: result, + text: this.text + }; + } + }, { + key: "valid", + value: function valid() { + return this.data.search(/^[0-9A-Z\-\.\ \$\/\+\%]+$/) !== -1; + } + }]); + + return CODE39; +}(_Barcode3.default); + +// All characters. The position in the array is the (checksum) value + + +var characters = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "-", ".", " ", "$", "/", "+", "%", "*"]; + +// The decimal representation of the characters, is converted to the +// corresponding binary with the getEncoding function +var encodings = [20957, 29783, 23639, 30485, 20951, 29813, 23669, 20855, 29789, 23645, 29975, 23831, 30533, 22295, 30149, 24005, 21623, 29981, 23837, 22301, 30023, 23879, 30545, 22343, 30161, 24017, 21959, 30065, 23921, 22385, 29015, 18263, 29141, 17879, 29045, 18293, 17783, 29021, 18269, 17477, 17489, 17681, 20753, 35770]; + +// Get the binary representation of a character by converting the encodings +// from decimal to binary +function getEncoding(character) { + return getBinary(characterValue(character)); +} + +function getBinary(characterValue) { + return encodings[characterValue].toString(2); +} + +function getCharacter(characterValue) { + return characters[characterValue]; +} + +function characterValue(character) { + return characters.indexOf(character); +} + +function mod43checksum(data) { + var checksum = 0; + for (var i = 0; i < data.length; i++) { + checksum += characterValue(data[i]); + } + + checksum = checksum % 43; + return checksum; +} + +exports.CODE39 = CODE39; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN.js new file mode 100644 index 0000000..62d3ae3 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN.js @@ -0,0 +1,92 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _constants = require('./constants'); + +var _encoder = require('./encoder'); + +var _encoder2 = _interopRequireDefault(_encoder); + +var _Barcode2 = require('../Barcode'); + +var _Barcode3 = _interopRequireDefault(_Barcode2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +// Base class for EAN8 & EAN13 +var EAN = function (_Barcode) { + _inherits(EAN, _Barcode); + + function EAN(data, options) { + _classCallCheck(this, EAN); + + // Make sure the font is not bigger than the space between the guard bars + var _this = _possibleConstructorReturn(this, (EAN.__proto__ || Object.getPrototypeOf(EAN)).call(this, data, options)); + + _this.fontSize = !options.flat && options.fontSize > options.width * 10 ? options.width * 10 : options.fontSize; + + // Make the guard bars go down half the way of the text + _this.guardHeight = options.height + _this.fontSize / 2 + options.textMargin; + return _this; + } + + _createClass(EAN, [{ + key: 'encode', + value: function encode() { + return this.options.flat ? this.encodeFlat() : this.encodeGuarded(); + } + }, { + key: 'leftText', + value: function leftText(from, to) { + return this.text.substr(from, to); + } + }, { + key: 'leftEncode', + value: function leftEncode(data, structure) { + return (0, _encoder2.default)(data, structure); + } + }, { + key: 'rightText', + value: function rightText(from, to) { + return this.text.substr(from, to); + } + }, { + key: 'rightEncode', + value: function rightEncode(data, structure) { + return (0, _encoder2.default)(data, structure); + } + }, { + key: 'encodeGuarded', + value: function encodeGuarded() { + var textOptions = { fontSize: this.fontSize }; + var guardOptions = { height: this.guardHeight }; + + return [{ data: _constants.SIDE_BIN, options: guardOptions }, { data: this.leftEncode(), text: this.leftText(), options: textOptions }, { data: _constants.MIDDLE_BIN, options: guardOptions }, { data: this.rightEncode(), text: this.rightText(), options: textOptions }, { data: _constants.SIDE_BIN, options: guardOptions }]; + } + }, { + key: 'encodeFlat', + value: function encodeFlat() { + var data = [_constants.SIDE_BIN, this.leftEncode(), _constants.MIDDLE_BIN, this.rightEncode(), _constants.SIDE_BIN]; + + return { + data: data.join(''), + text: this.text + }; + } + }]); + + return EAN; +}(_Barcode3.default); + +exports.default = EAN; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN13.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN13.js new file mode 100644 index 0000000..c73e3fb --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN13.js @@ -0,0 +1,119 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; + +var _constants = require('./constants'); + +var _EAN2 = require('./EAN'); + +var _EAN3 = _interopRequireDefault(_EAN2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation: +// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Binary_encoding_of_data_digits_into_EAN-13_barcode + +// Calculate the checksum digit +// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Calculation_of_checksum_digit +var checksum = function checksum(number) { + var res = number.substr(0, 12).split('').map(function (n) { + return +n; + }).reduce(function (sum, a, idx) { + return idx % 2 ? sum + a * 3 : sum + a; + }, 0); + + return (10 - res % 10) % 10; +}; + +var EAN13 = function (_EAN) { + _inherits(EAN13, _EAN); + + function EAN13(data, options) { + _classCallCheck(this, EAN13); + + // Add checksum if it does not exist + if (data.search(/^[0-9]{12}$/) !== -1) { + data += checksum(data); + } + + // Adds a last character to the end of the barcode + var _this = _possibleConstructorReturn(this, (EAN13.__proto__ || Object.getPrototypeOf(EAN13)).call(this, data, options)); + + _this.lastChar = options.lastChar; + return _this; + } + + _createClass(EAN13, [{ + key: 'valid', + value: function valid() { + return this.data.search(/^[0-9]{13}$/) !== -1 && +this.data[12] === checksum(this.data); + } + }, { + key: 'leftText', + value: function leftText() { + return _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'leftText', this).call(this, 1, 6); + } + }, { + key: 'leftEncode', + value: function leftEncode() { + var data = this.data.substr(1, 6); + var structure = _constants.EAN13_STRUCTURE[this.data[0]]; + return _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'leftEncode', this).call(this, data, structure); + } + }, { + key: 'rightText', + value: function rightText() { + return _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'rightText', this).call(this, 7, 6); + } + }, { + key: 'rightEncode', + value: function rightEncode() { + var data = this.data.substr(7, 6); + return _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'rightEncode', this).call(this, data, 'RRRRRR'); + } + + // The "standard" way of printing EAN13 barcodes with guard bars + + }, { + key: 'encodeGuarded', + value: function encodeGuarded() { + var data = _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'encodeGuarded', this).call(this); + + // Extend data with left digit & last character + if (this.options.displayValue) { + data.unshift({ + data: '000000000000', + text: this.text.substr(0, 1), + options: { textAlign: 'left', fontSize: this.fontSize } + }); + + if (this.options.lastChar) { + data.push({ + data: '00' + }); + data.push({ + data: '00000', + text: this.options.lastChar, + options: { fontSize: this.fontSize } + }); + } + } + + return data; + } + }]); + + return EAN13; +}(_EAN3.default); + +exports.default = EAN13; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN2.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN2.js new file mode 100644 index 0000000..46b3d6f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN2.js @@ -0,0 +1,58 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _constants = require('./constants'); + +var _encoder = require('./encoder'); + +var _encoder2 = _interopRequireDefault(_encoder); + +var _Barcode2 = require('../Barcode'); + +var _Barcode3 = _interopRequireDefault(_Barcode2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation: +// https://en.wikipedia.org/wiki/EAN_2#Encoding + +var EAN2 = function (_Barcode) { + _inherits(EAN2, _Barcode); + + function EAN2(data, options) { + _classCallCheck(this, EAN2); + + return _possibleConstructorReturn(this, (EAN2.__proto__ || Object.getPrototypeOf(EAN2)).call(this, data, options)); + } + + _createClass(EAN2, [{ + key: 'valid', + value: function valid() { + return this.data.search(/^[0-9]{2}$/) !== -1; + } + }, { + key: 'encode', + value: function encode() { + // Choose the structure based on the number mod 4 + var structure = _constants.EAN2_STRUCTURE[parseInt(this.data) % 4]; + return { + // Start bits + Encode the two digits with 01 in between + data: '1011' + (0, _encoder2.default)(this.data, structure, '01'), + text: this.text + }; + } + }]); + + return EAN2; +}(_Barcode3.default); + +exports.default = EAN2; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN5.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN5.js new file mode 100644 index 0000000..d1807c3 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN5.js @@ -0,0 +1,65 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _constants = require('./constants'); + +var _encoder = require('./encoder'); + +var _encoder2 = _interopRequireDefault(_encoder); + +var _Barcode2 = require('../Barcode'); + +var _Barcode3 = _interopRequireDefault(_Barcode2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation: +// https://en.wikipedia.org/wiki/EAN_5#Encoding + +var checksum = function checksum(data) { + var result = data.split('').map(function (n) { + return +n; + }).reduce(function (sum, a, idx) { + return idx % 2 ? sum + a * 9 : sum + a * 3; + }, 0); + return result % 10; +}; + +var EAN5 = function (_Barcode) { + _inherits(EAN5, _Barcode); + + function EAN5(data, options) { + _classCallCheck(this, EAN5); + + return _possibleConstructorReturn(this, (EAN5.__proto__ || Object.getPrototypeOf(EAN5)).call(this, data, options)); + } + + _createClass(EAN5, [{ + key: 'valid', + value: function valid() { + return this.data.search(/^[0-9]{5}$/) !== -1; + } + }, { + key: 'encode', + value: function encode() { + var structure = _constants.EAN5_STRUCTURE[checksum(this.data)]; + return { + data: '1011' + (0, _encoder2.default)(this.data, structure, '01'), + text: this.text + }; + } + }]); + + return EAN5; +}(_Barcode3.default); + +exports.default = EAN5; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN8.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN8.js new file mode 100644 index 0000000..8c6d638 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/EAN8.js @@ -0,0 +1,81 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } }; + +var _EAN2 = require('./EAN'); + +var _EAN3 = _interopRequireDefault(_EAN2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation: +// http://www.barcodeisland.com/ean8.phtml + +// Calculate the checksum digit +var checksum = function checksum(number) { + var res = number.substr(0, 7).split('').map(function (n) { + return +n; + }).reduce(function (sum, a, idx) { + return idx % 2 ? sum + a : sum + a * 3; + }, 0); + + return (10 - res % 10) % 10; +}; + +var EAN8 = function (_EAN) { + _inherits(EAN8, _EAN); + + function EAN8(data, options) { + _classCallCheck(this, EAN8); + + // Add checksum if it does not exist + if (data.search(/^[0-9]{7}$/) !== -1) { + data += checksum(data); + } + + return _possibleConstructorReturn(this, (EAN8.__proto__ || Object.getPrototypeOf(EAN8)).call(this, data, options)); + } + + _createClass(EAN8, [{ + key: 'valid', + value: function valid() { + return this.data.search(/^[0-9]{8}$/) !== -1 && +this.data[7] === checksum(this.data); + } + }, { + key: 'leftText', + value: function leftText() { + return _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'leftText', this).call(this, 0, 4); + } + }, { + key: 'leftEncode', + value: function leftEncode() { + var data = this.data.substr(0, 4); + return _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'leftEncode', this).call(this, data, 'LLLL'); + } + }, { + key: 'rightText', + value: function rightText() { + return _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'rightText', this).call(this, 4, 4); + } + }, { + key: 'rightEncode', + value: function rightEncode() { + var data = this.data.substr(4, 4); + return _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'rightEncode', this).call(this, data, 'RRRR'); + } + }]); + + return EAN8; +}(_EAN3.default); + +exports.default = EAN8; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/UPC.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/UPC.js new file mode 100644 index 0000000..f811101 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/UPC.js @@ -0,0 +1,165 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +exports.checksum = checksum; + +var _encoder = require("./encoder"); + +var _encoder2 = _interopRequireDefault(_encoder); + +var _Barcode2 = require("../Barcode.js"); + +var _Barcode3 = _interopRequireDefault(_Barcode2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation: +// https://en.wikipedia.org/wiki/Universal_Product_Code#Encoding + +var UPC = function (_Barcode) { + _inherits(UPC, _Barcode); + + function UPC(data, options) { + _classCallCheck(this, UPC); + + // Add checksum if it does not exist + if (data.search(/^[0-9]{11}$/) !== -1) { + data += checksum(data); + } + + var _this = _possibleConstructorReturn(this, (UPC.__proto__ || Object.getPrototypeOf(UPC)).call(this, data, options)); + + _this.displayValue = options.displayValue; + + // Make sure the font is not bigger than the space between the guard bars + if (options.fontSize > options.width * 10) { + _this.fontSize = options.width * 10; + } else { + _this.fontSize = options.fontSize; + } + + // Make the guard bars go down half the way of the text + _this.guardHeight = options.height + _this.fontSize / 2 + options.textMargin; + return _this; + } + + _createClass(UPC, [{ + key: "valid", + value: function valid() { + return this.data.search(/^[0-9]{12}$/) !== -1 && this.data[11] == checksum(this.data); + } + }, { + key: "encode", + value: function encode() { + if (this.options.flat) { + return this.flatEncoding(); + } else { + return this.guardedEncoding(); + } + } + }, { + key: "flatEncoding", + value: function flatEncoding() { + var result = ""; + + result += "101"; + result += (0, _encoder2.default)(this.data.substr(0, 6), "LLLLLL"); + result += "01010"; + result += (0, _encoder2.default)(this.data.substr(6, 6), "RRRRRR"); + result += "101"; + + return { + data: result, + text: this.text + }; + } + }, { + key: "guardedEncoding", + value: function guardedEncoding() { + var result = []; + + // Add the first digit + if (this.displayValue) { + result.push({ + data: "00000000", + text: this.text.substr(0, 1), + options: { textAlign: "left", fontSize: this.fontSize } + }); + } + + // Add the guard bars + result.push({ + data: "101" + (0, _encoder2.default)(this.data[0], "L"), + options: { height: this.guardHeight } + }); + + // Add the left side + result.push({ + data: (0, _encoder2.default)(this.data.substr(1, 5), "LLLLL"), + text: this.text.substr(1, 5), + options: { fontSize: this.fontSize } + }); + + // Add the middle bits + result.push({ + data: "01010", + options: { height: this.guardHeight } + }); + + // Add the right side + result.push({ + data: (0, _encoder2.default)(this.data.substr(6, 5), "RRRRR"), + text: this.text.substr(6, 5), + options: { fontSize: this.fontSize } + }); + + // Add the end bits + result.push({ + data: (0, _encoder2.default)(this.data[11], "R") + "101", + options: { height: this.guardHeight } + }); + + // Add the last digit + if (this.displayValue) { + result.push({ + data: "00000000", + text: this.text.substr(11, 1), + options: { textAlign: "right", fontSize: this.fontSize } + }); + } + + return result; + } + }]); + + return UPC; +}(_Barcode3.default); + +// Calulate the checksum digit +// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Calculation_of_checksum_digit + + +function checksum(number) { + var result = 0; + + var i; + for (i = 1; i < 11; i += 2) { + result += parseInt(number[i]); + } + for (i = 0; i < 11; i += 2) { + result += parseInt(number[i]) * 3; + } + + return (10 - result % 10) % 10; +} + +exports.default = UPC; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/UPCE.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/UPCE.js new file mode 100644 index 0000000..2281492 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/UPCE.js @@ -0,0 +1,185 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _encoder = require('./encoder'); + +var _encoder2 = _interopRequireDefault(_encoder); + +var _Barcode2 = require('../Barcode.js'); + +var _Barcode3 = _interopRequireDefault(_Barcode2); + +var _UPC = require('./UPC.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation: +// https://en.wikipedia.org/wiki/Universal_Product_Code#Encoding +// +// UPC-E documentation: +// https://en.wikipedia.org/wiki/Universal_Product_Code#UPC-E + +var EXPANSIONS = ["XX00000XXX", "XX10000XXX", "XX20000XXX", "XXX00000XX", "XXXX00000X", "XXXXX00005", "XXXXX00006", "XXXXX00007", "XXXXX00008", "XXXXX00009"]; + +var PARITIES = [["EEEOOO", "OOOEEE"], ["EEOEOO", "OOEOEE"], ["EEOOEO", "OOEEOE"], ["EEOOOE", "OOEEEO"], ["EOEEOO", "OEOOEE"], ["EOOEEO", "OEEOOE"], ["EOOOEE", "OEEEOO"], ["EOEOEO", "OEOEOE"], ["EOEOOE", "OEOEEO"], ["EOOEOE", "OEEOEO"]]; + +var UPCE = function (_Barcode) { + _inherits(UPCE, _Barcode); + + function UPCE(data, options) { + _classCallCheck(this, UPCE); + + var _this = _possibleConstructorReturn(this, (UPCE.__proto__ || Object.getPrototypeOf(UPCE)).call(this, data, options)); + // Code may be 6 or 8 digits; + // A 7 digit code is ambiguous as to whether the extra digit + // is a UPC-A check or number system digit. + + + _this.isValid = false; + if (data.search(/^[0-9]{6}$/) !== -1) { + _this.middleDigits = data; + _this.upcA = expandToUPCA(data, "0"); + _this.text = options.text || '' + _this.upcA[0] + data + _this.upcA[_this.upcA.length - 1]; + _this.isValid = true; + } else if (data.search(/^[01][0-9]{7}$/) !== -1) { + _this.middleDigits = data.substring(1, data.length - 1); + _this.upcA = expandToUPCA(_this.middleDigits, data[0]); + + if (_this.upcA[_this.upcA.length - 1] === data[data.length - 1]) { + _this.isValid = true; + } else { + // checksum mismatch + return _possibleConstructorReturn(_this); + } + } else { + return _possibleConstructorReturn(_this); + } + + _this.displayValue = options.displayValue; + + // Make sure the font is not bigger than the space between the guard bars + if (options.fontSize > options.width * 10) { + _this.fontSize = options.width * 10; + } else { + _this.fontSize = options.fontSize; + } + + // Make the guard bars go down half the way of the text + _this.guardHeight = options.height + _this.fontSize / 2 + options.textMargin; + return _this; + } + + _createClass(UPCE, [{ + key: 'valid', + value: function valid() { + return this.isValid; + } + }, { + key: 'encode', + value: function encode() { + if (this.options.flat) { + return this.flatEncoding(); + } else { + return this.guardedEncoding(); + } + } + }, { + key: 'flatEncoding', + value: function flatEncoding() { + var result = ""; + + result += "101"; + result += this.encodeMiddleDigits(); + result += "010101"; + + return { + data: result, + text: this.text + }; + } + }, { + key: 'guardedEncoding', + value: function guardedEncoding() { + var result = []; + + // Add the UPC-A number system digit beneath the quiet zone + if (this.displayValue) { + result.push({ + data: "00000000", + text: this.text[0], + options: { textAlign: "left", fontSize: this.fontSize } + }); + } + + // Add the guard bars + result.push({ + data: "101", + options: { height: this.guardHeight } + }); + + // Add the 6 UPC-E digits + result.push({ + data: this.encodeMiddleDigits(), + text: this.text.substring(1, 7), + options: { fontSize: this.fontSize } + }); + + // Add the end bits + result.push({ + data: "010101", + options: { height: this.guardHeight } + }); + + // Add the UPC-A check digit beneath the quiet zone + if (this.displayValue) { + result.push({ + data: "00000000", + text: this.text[7], + options: { textAlign: "right", fontSize: this.fontSize } + }); + } + + return result; + } + }, { + key: 'encodeMiddleDigits', + value: function encodeMiddleDigits() { + var numberSystem = this.upcA[0]; + var checkDigit = this.upcA[this.upcA.length - 1]; + var parity = PARITIES[parseInt(checkDigit)][parseInt(numberSystem)]; + return (0, _encoder2.default)(this.middleDigits, parity); + } + }]); + + return UPCE; +}(_Barcode3.default); + +function expandToUPCA(middleDigits, numberSystem) { + var lastUpcE = parseInt(middleDigits[middleDigits.length - 1]); + var expansion = EXPANSIONS[lastUpcE]; + + var result = ""; + var digitIndex = 0; + for (var i = 0; i < expansion.length; i++) { + var c = expansion[i]; + if (c === 'X') { + result += middleDigits[digitIndex++]; + } else { + result += c; + } + } + + result = '' + numberSystem + result; + return '' + result + (0, _UPC.checksum)(result); +} + +exports.default = UPCE; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/constants.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/constants.js new file mode 100644 index 0000000..b00aa62 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/constants.js @@ -0,0 +1,30 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +// Standard start end and middle bits +var SIDE_BIN = exports.SIDE_BIN = '101'; +var MIDDLE_BIN = exports.MIDDLE_BIN = '01010'; + +var BINARIES = exports.BINARIES = { + 'L': [// The L (left) type of encoding + '0001101', '0011001', '0010011', '0111101', '0100011', '0110001', '0101111', '0111011', '0110111', '0001011'], + 'G': [// The G type of encoding + '0100111', '0110011', '0011011', '0100001', '0011101', '0111001', '0000101', '0010001', '0001001', '0010111'], + 'R': [// The R (right) type of encoding + '1110010', '1100110', '1101100', '1000010', '1011100', '1001110', '1010000', '1000100', '1001000', '1110100'], + 'O': [// The O (odd) encoding for UPC-E + '0001101', '0011001', '0010011', '0111101', '0100011', '0110001', '0101111', '0111011', '0110111', '0001011'], + 'E': [// The E (even) encoding for UPC-E + '0100111', '0110011', '0011011', '0100001', '0011101', '0111001', '0000101', '0010001', '0001001', '0010111'] +}; + +// Define the EAN-2 structure +var EAN2_STRUCTURE = exports.EAN2_STRUCTURE = ['LL', 'LG', 'GL', 'GG']; + +// Define the EAN-5 structure +var EAN5_STRUCTURE = exports.EAN5_STRUCTURE = ['GGLLL', 'GLGLL', 'GLLGL', 'GLLLG', 'LGGLL', 'LLGGL', 'LLLGG', 'LGLGL', 'LGLLG', 'LLGLG']; + +// Define the EAN-13 structure +var EAN13_STRUCTURE = exports.EAN13_STRUCTURE = ['LLLLLL', 'LLGLGG', 'LLGGLG', 'LLGGGL', 'LGLLGG', 'LGGLLG', 'LGGGLL', 'LGLGLG', 'LGLGGL', 'LGGLGL']; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/encoder.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/encoder.js new file mode 100644 index 0000000..80d8932 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/encoder.js @@ -0,0 +1,27 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _constants = require('./constants'); + +// Encode data string +var encode = function encode(data, structure, separator) { + var encoded = data.split('').map(function (val, idx) { + return _constants.BINARIES[structure[idx]]; + }).map(function (val, idx) { + return val ? val[data[idx]] : ''; + }); + + if (separator) { + var last = data.length - 1; + encoded = encoded.map(function (val, idx) { + return idx < last ? val + separator : val; + }); + } + + return encoded.join(''); +}; + +exports.default = encode; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/index.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/index.js new file mode 100644 index 0000000..ed0ae04 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/EAN_UPC/index.js @@ -0,0 +1,39 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.UPCE = exports.UPC = exports.EAN2 = exports.EAN5 = exports.EAN8 = exports.EAN13 = undefined; + +var _EAN = require('./EAN13.js'); + +var _EAN2 = _interopRequireDefault(_EAN); + +var _EAN3 = require('./EAN8.js'); + +var _EAN4 = _interopRequireDefault(_EAN3); + +var _EAN5 = require('./EAN5.js'); + +var _EAN6 = _interopRequireDefault(_EAN5); + +var _EAN7 = require('./EAN2.js'); + +var _EAN8 = _interopRequireDefault(_EAN7); + +var _UPC = require('./UPC.js'); + +var _UPC2 = _interopRequireDefault(_UPC); + +var _UPCE = require('./UPCE.js'); + +var _UPCE2 = _interopRequireDefault(_UPCE); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.EAN13 = _EAN2.default; +exports.EAN8 = _EAN4.default; +exports.EAN5 = _EAN6.default; +exports.EAN2 = _EAN8.default; +exports.UPC = _UPC2.default; +exports.UPCE = _UPCE2.default; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/GenericBarcode/index.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/GenericBarcode/index.js new file mode 100644 index 0000000..05c7e2d --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/GenericBarcode/index.js @@ -0,0 +1,55 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GenericBarcode = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _Barcode2 = require("../Barcode.js"); + +var _Barcode3 = _interopRequireDefault(_Barcode2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var GenericBarcode = function (_Barcode) { + _inherits(GenericBarcode, _Barcode); + + function GenericBarcode(data, options) { + _classCallCheck(this, GenericBarcode); + + return _possibleConstructorReturn(this, (GenericBarcode.__proto__ || Object.getPrototypeOf(GenericBarcode)).call(this, data, options)); // Sets this.data and this.text + } + + // Return the corresponding binary numbers for the data provided + + + _createClass(GenericBarcode, [{ + key: "encode", + value: function encode() { + return { + data: "10101010101010101010101010101010101010101", + text: this.text + }; + } + + // Resturn true/false if the string provided is valid for this encoder + + }, { + key: "valid", + value: function valid() { + return true; + } + }]); + + return GenericBarcode; +}(_Barcode3.default); + +exports.GenericBarcode = GenericBarcode; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/ITF.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/ITF.js new file mode 100644 index 0000000..10b6346 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/ITF.js @@ -0,0 +1,69 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _constants = require('./constants'); + +var _Barcode2 = require('../Barcode'); + +var _Barcode3 = _interopRequireDefault(_Barcode2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var ITF = function (_Barcode) { + _inherits(ITF, _Barcode); + + function ITF() { + _classCallCheck(this, ITF); + + return _possibleConstructorReturn(this, (ITF.__proto__ || Object.getPrototypeOf(ITF)).apply(this, arguments)); + } + + _createClass(ITF, [{ + key: 'valid', + value: function valid() { + return this.data.search(/^([0-9]{2})+$/) !== -1; + } + }, { + key: 'encode', + value: function encode() { + var _this2 = this; + + // Calculate all the digit pairs + var encoded = this.data.match(/.{2}/g).map(function (pair) { + return _this2.encodePair(pair); + }).join(''); + + return { + data: _constants.START_BIN + encoded + _constants.END_BIN, + text: this.text + }; + } + + // Calculate the data of a number pair + + }, { + key: 'encodePair', + value: function encodePair(pair) { + var second = _constants.BINARIES[pair[1]]; + + return _constants.BINARIES[pair[0]].split('').map(function (first, idx) { + return (first === '1' ? '111' : '1') + (second[idx] === '1' ? '000' : '0'); + }).join(''); + } + }]); + + return ITF; +}(_Barcode3.default); + +exports.default = ITF; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/ITF14.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/ITF14.js new file mode 100644 index 0000000..75687df --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/ITF14.js @@ -0,0 +1,55 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _ITF2 = require('./ITF'); + +var _ITF3 = _interopRequireDefault(_ITF2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +// Calculate the checksum digit +var checksum = function checksum(data) { + var res = data.substr(0, 13).split('').map(function (num) { + return parseInt(num, 10); + }).reduce(function (sum, n, idx) { + return sum + n * (3 - idx % 2 * 2); + }, 0); + + return Math.ceil(res / 10) * 10 - res; +}; + +var ITF14 = function (_ITF) { + _inherits(ITF14, _ITF); + + function ITF14(data, options) { + _classCallCheck(this, ITF14); + + // Add checksum if it does not exist + if (data.search(/^[0-9]{13}$/) !== -1) { + data += checksum(data); + } + return _possibleConstructorReturn(this, (ITF14.__proto__ || Object.getPrototypeOf(ITF14)).call(this, data, options)); + } + + _createClass(ITF14, [{ + key: 'valid', + value: function valid() { + return this.data.search(/^[0-9]{14}$/) !== -1 && +this.data[13] === checksum(this.data); + } + }]); + + return ITF14; +}(_ITF3.default); + +exports.default = ITF14; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/constants.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/constants.js new file mode 100644 index 0000000..fede952 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/constants.js @@ -0,0 +1,9 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var START_BIN = exports.START_BIN = '1010'; +var END_BIN = exports.END_BIN = '11101'; + +var BINARIES = exports.BINARIES = ['00110', '10001', '01001', '11000', '00101', '10100', '01100', '00011', '10010', '01010']; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/index.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/index.js new file mode 100644 index 0000000..dd3945e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/ITF/index.js @@ -0,0 +1,19 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.ITF14 = exports.ITF = undefined; + +var _ITF = require('./ITF'); + +var _ITF2 = _interopRequireDefault(_ITF); + +var _ITF3 = require('./ITF14'); + +var _ITF4 = _interopRequireDefault(_ITF3); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.ITF = _ITF2.default; +exports.ITF14 = _ITF4.default; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI.js new file mode 100644 index 0000000..d53f5e1 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI.js @@ -0,0 +1,74 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _Barcode2 = require("../Barcode.js"); + +var _Barcode3 = _interopRequireDefault(_Barcode2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation +// https://en.wikipedia.org/wiki/MSI_Barcode#Character_set_and_binary_lookup + +var MSI = function (_Barcode) { + _inherits(MSI, _Barcode); + + function MSI(data, options) { + _classCallCheck(this, MSI); + + return _possibleConstructorReturn(this, (MSI.__proto__ || Object.getPrototypeOf(MSI)).call(this, data, options)); + } + + _createClass(MSI, [{ + key: "encode", + value: function encode() { + // Start bits + var ret = "110"; + + for (var i = 0; i < this.data.length; i++) { + // Convert the character to binary (always 4 binary digits) + var digit = parseInt(this.data[i]); + var bin = digit.toString(2); + bin = addZeroes(bin, 4 - bin.length); + + // Add 100 for every zero and 110 for every 1 + for (var b = 0; b < bin.length; b++) { + ret += bin[b] == "0" ? "100" : "110"; + } + } + + // End bits + ret += "1001"; + + return { + data: ret, + text: this.text + }; + } + }, { + key: "valid", + value: function valid() { + return this.data.search(/^[0-9]+$/) !== -1; + } + }]); + + return MSI; +}(_Barcode3.default); + +function addZeroes(number, n) { + for (var i = 0; i < n; i++) { + number = "0" + number; + } + return number; +} + +exports.default = MSI; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI10.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI10.js new file mode 100644 index 0000000..fca0a5f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI10.js @@ -0,0 +1,33 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _MSI2 = require('./MSI.js'); + +var _MSI3 = _interopRequireDefault(_MSI2); + +var _checksums = require('./checksums.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var MSI10 = function (_MSI) { + _inherits(MSI10, _MSI); + + function MSI10(data, options) { + _classCallCheck(this, MSI10); + + return _possibleConstructorReturn(this, (MSI10.__proto__ || Object.getPrototypeOf(MSI10)).call(this, data + (0, _checksums.mod10)(data), options)); + } + + return MSI10; +}(_MSI3.default); + +exports.default = MSI10; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI1010.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI1010.js new file mode 100644 index 0000000..ea87f5b --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI1010.js @@ -0,0 +1,35 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _MSI2 = require('./MSI.js'); + +var _MSI3 = _interopRequireDefault(_MSI2); + +var _checksums = require('./checksums.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var MSI1010 = function (_MSI) { + _inherits(MSI1010, _MSI); + + function MSI1010(data, options) { + _classCallCheck(this, MSI1010); + + data += (0, _checksums.mod10)(data); + data += (0, _checksums.mod10)(data); + return _possibleConstructorReturn(this, (MSI1010.__proto__ || Object.getPrototypeOf(MSI1010)).call(this, data, options)); + } + + return MSI1010; +}(_MSI3.default); + +exports.default = MSI1010; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI11.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI11.js new file mode 100644 index 0000000..8b18dc7 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI11.js @@ -0,0 +1,33 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _MSI2 = require('./MSI.js'); + +var _MSI3 = _interopRequireDefault(_MSI2); + +var _checksums = require('./checksums.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var MSI11 = function (_MSI) { + _inherits(MSI11, _MSI); + + function MSI11(data, options) { + _classCallCheck(this, MSI11); + + return _possibleConstructorReturn(this, (MSI11.__proto__ || Object.getPrototypeOf(MSI11)).call(this, data + (0, _checksums.mod11)(data), options)); + } + + return MSI11; +}(_MSI3.default); + +exports.default = MSI11; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI1110.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI1110.js new file mode 100644 index 0000000..d5f2ab3 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/MSI1110.js @@ -0,0 +1,35 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _MSI2 = require('./MSI.js'); + +var _MSI3 = _interopRequireDefault(_MSI2); + +var _checksums = require('./checksums.js'); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var MSI1110 = function (_MSI) { + _inherits(MSI1110, _MSI); + + function MSI1110(data, options) { + _classCallCheck(this, MSI1110); + + data += (0, _checksums.mod11)(data); + data += (0, _checksums.mod10)(data); + return _possibleConstructorReturn(this, (MSI1110.__proto__ || Object.getPrototypeOf(MSI1110)).call(this, data, options)); + } + + return MSI1110; +}(_MSI3.default); + +exports.default = MSI1110; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/checksums.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/checksums.js new file mode 100644 index 0000000..8314d6e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/checksums.js @@ -0,0 +1,29 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.mod10 = mod10; +exports.mod11 = mod11; +function mod10(number) { + var sum = 0; + for (var i = 0; i < number.length; i++) { + var n = parseInt(number[i]); + if ((i + number.length) % 2 === 0) { + sum += n; + } else { + sum += n * 2 % 10 + Math.floor(n * 2 / 10); + } + } + return (10 - sum % 10) % 10; +} + +function mod11(number) { + var sum = 0; + var weights = [2, 3, 4, 5, 6, 7]; + for (var i = 0; i < number.length; i++) { + var n = parseInt(number[number.length - 1 - i]); + sum += weights[i % weights.length] * n; + } + return (11 - sum % 11) % 11; +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/index.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/index.js new file mode 100644 index 0000000..8eb7e43 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/MSI/index.js @@ -0,0 +1,34 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.MSI1110 = exports.MSI1010 = exports.MSI11 = exports.MSI10 = exports.MSI = undefined; + +var _MSI = require('./MSI.js'); + +var _MSI2 = _interopRequireDefault(_MSI); + +var _MSI3 = require('./MSI10.js'); + +var _MSI4 = _interopRequireDefault(_MSI3); + +var _MSI5 = require('./MSI11.js'); + +var _MSI6 = _interopRequireDefault(_MSI5); + +var _MSI7 = require('./MSI1010.js'); + +var _MSI8 = _interopRequireDefault(_MSI7); + +var _MSI9 = require('./MSI1110.js'); + +var _MSI10 = _interopRequireDefault(_MSI9); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +exports.MSI = _MSI2.default; +exports.MSI10 = _MSI4.default; +exports.MSI11 = _MSI6.default; +exports.MSI1010 = _MSI8.default; +exports.MSI1110 = _MSI10.default; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/codabar/index.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/codabar/index.js new file mode 100644 index 0000000..cd39cdf --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/codabar/index.js @@ -0,0 +1,92 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.codabar = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _Barcode2 = require("../Barcode.js"); + +var _Barcode3 = _interopRequireDefault(_Barcode2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding specification: +// http://www.barcodeisland.com/codabar.phtml + +var codabar = function (_Barcode) { + _inherits(codabar, _Barcode); + + function codabar(data, options) { + _classCallCheck(this, codabar); + + if (data.search(/^[0-9\-\$\:\.\+\/]+$/) === 0) { + data = "A" + data + "A"; + } + + var _this = _possibleConstructorReturn(this, (codabar.__proto__ || Object.getPrototypeOf(codabar)).call(this, data.toUpperCase(), options)); + + _this.text = _this.options.text || _this.text.replace(/[A-D]/g, ''); + return _this; + } + + _createClass(codabar, [{ + key: "valid", + value: function valid() { + return this.data.search(/^[A-D][0-9\-\$\:\.\+\/]+[A-D]$/) !== -1; + } + }, { + key: "encode", + value: function encode() { + var result = []; + var encodings = this.getEncodings(); + for (var i = 0; i < this.data.length; i++) { + result.push(encodings[this.data.charAt(i)]); + // for all characters except the last, append a narrow-space ("0") + if (i !== this.data.length - 1) { + result.push("0"); + } + } + return { + text: this.text, + data: result.join('') + }; + } + }, { + key: "getEncodings", + value: function getEncodings() { + return { + "0": "101010011", + "1": "101011001", + "2": "101001011", + "3": "110010101", + "4": "101101001", + "5": "110101001", + "6": "100101011", + "7": "100101101", + "8": "100110101", + "9": "110100101", + "-": "101001101", + "$": "101100101", + ":": "1101011011", + "/": "1101101011", + ".": "1101101101", + "+": "101100110011", + "A": "1011001001", + "B": "1001001011", + "C": "1010010011", + "D": "1010011001" + }; + } + }]); + + return codabar; +}(_Barcode3.default); + +exports.codabar = codabar; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/index.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/index.js new file mode 100644 index 0000000..0b7bcba --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/index.js @@ -0,0 +1,34 @@ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _CODE = require('./CODE39/'); + +var _CODE2 = require('./CODE128/'); + +var _EAN_UPC = require('./EAN_UPC/'); + +var _ITF = require('./ITF/'); + +var _MSI = require('./MSI/'); + +var _pharmacode = require('./pharmacode/'); + +var _codabar = require('./codabar'); + +var _GenericBarcode = require('./GenericBarcode/'); + +exports.default = { + CODE39: _CODE.CODE39, + CODE128: _CODE2.CODE128, CODE128A: _CODE2.CODE128A, CODE128B: _CODE2.CODE128B, CODE128C: _CODE2.CODE128C, + EAN13: _EAN_UPC.EAN13, EAN8: _EAN_UPC.EAN8, EAN5: _EAN_UPC.EAN5, EAN2: _EAN_UPC.EAN2, + UPC: _EAN_UPC.UPC, UPCE: _EAN_UPC.UPCE, + ITF14: _ITF.ITF14, + ITF: _ITF.ITF, + MSI: _MSI.MSI, MSI10: _MSI.MSI10, MSI11: _MSI.MSI11, MSI1010: _MSI.MSI1010, MSI1110: _MSI.MSI1110, + PHARMACODE: _pharmacode.pharmacode, + CODABAR: _codabar.codabar, + GENERICBARCODE: _GenericBarcode.GenericBarcode +}; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/pharmacode/index.js b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/pharmacode/index.js new file mode 100644 index 0000000..243794a --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/barcodes/pharmacode/index.js @@ -0,0 +1,73 @@ +"use strict"; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.pharmacode = undefined; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _Barcode2 = require("../Barcode.js"); + +var _Barcode3 = _interopRequireDefault(_Barcode2); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation +// http://www.gomaro.ch/ftproot/Laetus_PHARMA-CODE.pdf + +var pharmacode = function (_Barcode) { + _inherits(pharmacode, _Barcode); + + function pharmacode(data, options) { + _classCallCheck(this, pharmacode); + + var _this = _possibleConstructorReturn(this, (pharmacode.__proto__ || Object.getPrototypeOf(pharmacode)).call(this, data, options)); + + _this.number = parseInt(data, 10); + return _this; + } + + _createClass(pharmacode, [{ + key: "encode", + value: function encode() { + var z = this.number; + var result = ""; + + // http://i.imgur.com/RMm4UDJ.png + // (source: http://www.gomaro.ch/ftproot/Laetus_PHARMA-CODE.pdf, page: 34) + while (!isNaN(z) && z != 0) { + if (z % 2 === 0) { + // Even + result = "11100" + result; + z = (z - 2) / 2; + } else { + // Odd + result = "100" + result; + z = (z - 1) / 2; + } + } + + // Remove the two last zeroes + result = result.slice(0, -2); + + return { + data: result, + text: this.text + }; + } + }, { + key: "valid", + value: function valid() { + return this.number >= 3 && this.number <= 131070; + } + }]); + + return pharmacode; +}(_Barcode3.default); + +exports.pharmacode = pharmacode; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-barcode/tki-barcode.vue b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/tki-barcode.vue new file mode 100644 index 0000000..d6736c1 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-barcode/tki-barcode.vue @@ -0,0 +1,201 @@ +<template xlang="wxml" minapp="mpvue"> + <view class="tki-barcode"> + <!-- #ifndef MP-ALIPAY --> + <canvas class="tki-barcode-canvas" :canvas-id="cid" :style="{width:canvasWidth+'px',height:canvasHeight+'px'}" /> + <!-- #endif --> + <!-- #ifdef MP-ALIPAY --> + <canvas v-if="val === '' || defaultOpations.text === val" :id="cid" :width="canvasWidth" :height="canvasHeight" class="tki-barcode-canvas" /> + <!-- #endif --> + <image v-show="show" :src="result" :style="{width:canvasWidth+'px',height:canvasHeight+'px'}" /> + </view> +</template> + +<script> +// const barcode = require('./barcode.js'); +import barCode from "./barcode.js" +const opations = { + // format: "CODE128",//閫夋嫨瑕佷娇鐢ㄧ殑鏉″舰鐮佺被鍨� 寰俊鏀寔鐨勬潯鐮佺被鍨嬫湁 code128\code39\ena13\ean8\upc\itf14\ + width: 4,//璁剧疆鏉′箣闂寸殑瀹藉害 + height: 120,//楂樺害 + displayValue: true,//鏄惁鍦ㄦ潯褰㈢爜涓嬫柟鏄剧ず鏂囧瓧 + // text: "1234567890",//瑕嗙洊鏄剧ず鐨勬枃鏈� + textAlign: "center",//璁剧疆鏂囨湰鐨勬按骞冲榻愭柟寮� + textPosition: "bottom",//璁剧疆鏂囨湰鐨勫瀭鐩翠綅缃� + textMargin: 0,//璁剧疆鏉″舰鐮佸拰鏂囨湰涔嬮棿鐨勯棿璺� + fontSize: 24,//璁剧疆鏂囨湰鐨勫ぇ灏� + fontColor: "#000000",//璁剧疆鏂囨湰鐨勯鑹� + lineColor: "#000000",//璁剧疆鏉″舰鐮佺殑棰滆壊 + background: "#FFFFFF",//璁剧疆鏉″舰鐮佺殑鑳屾櫙鑹� + margin: 0,//璁剧疆鏉″舰鐮佸懆鍥寸殑绌虹櫧杈硅窛 + marginTop: undefined,//璁剧疆鏉″舰鐮佸懆鍥寸殑涓婅竟璺� + marginBottom: undefined,//璁剧疆鏉″舰鐮佸懆鍥寸殑涓嬭竟璺� + marginLeft: undefined,//璁剧疆鏉″舰鐮佸懆鍥寸殑宸﹁竟璺� + marginRight: undefined,//璁剧疆鏉″舰鐮佸懆鍥寸殑鍙宠竟璺� +} +export default { + name: "tkiBarcode", + props: { + show: { + type: Boolean, + default: true + }, + cid: { + type: String, + default: 'tki-barcode-canvas' + }, + unit: { + type: String, + default: 'upx' + }, + val: { + type: String, + default: '' + }, + format: { + type: String, + default: 'CODE128' + }, + opations: { + type: Object, + default: function () { + return {} + } + }, + onval: { + type: Boolean, + default: false + }, + loadMake: { + type: Boolean, + default: true + }, + }, + data() { + return { + result: '', + canvasWidth: 0, + canvasHeight: 0, + defaultOpations: Object.assign({}, opations) + } + }, + onUnload: function () { + }, + methods: { + _makeCode() { + let that = this + // 鍚堝苟鍙傛暟 + Object.assign(this.defaultOpations, this.opations) + if (that.unit == "upx") { + /* if (that.defaultOpations.width) { + that.defaultOpations.width = uni.upx2px(that.defaultOpations.width) + } */ + if (that.defaultOpations.height) { + that.defaultOpations.height = uni.upx2px(that.defaultOpations.height) + } + if (that.defaultOpations.fontSize) { + that.defaultOpations.fontSize = uni.upx2px(that.defaultOpations.fontSize) + } + } + if (that._empty(that.defaultOpations.text)) { + that.defaultOpations.text = that.val + } + if (that._empty(that.defaultOpations.format)) { + that.defaultOpations.format = that.format + } + // console.log(JSON.stringify(that.defaultOpations)) + this.$nextTick(() => { + setTimeout(() => { + new barCode(that, that.cid, that.defaultOpations, + function (res) { // 鐢熸垚鏉″舰鐮佹楂樺洖璋� + that.canvasWidth = res.width + that.canvasHeight = res.height + }, + function (res) { // 鐢熸垚鏉″舰鐮佺殑鍥炶皟 + // 杩斿洖鍊� + that._result(res) + // 閲嶇疆榛樿鍙傛暟 + that.defaultOpations = opations + }, + ); + }, 100) + }) + }, + _clearCode() { + this._result('') + }, + _saveCode() { + let that = this; + if (this.result != "") { + uni.saveImageToPhotosAlbum({ + filePath: that.result, + success: function () { + uni.showToast({ + title: '鏉″舰鐮佷繚瀛樻垚鍔�', + icon: 'success', + duration: 2000 + }); + } + }); + } + }, + _result(res) { + this.result = res; + this.$emit('result', res) + }, + _empty(v) { + let tp = typeof v, + rt = false; + if (tp == "number" && String(v) == "") { + rt = true + } else if (tp == "undefined") { + rt = true + } else if (tp == "object") { + if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true + } else if (tp == "string") { + if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true + } else if (tp == "function") { + rt = false + } + return rt + } + }, + watch: { + val(n, o) { + this.defaultOpations.text = n + if (this.onval) { + if (n != o && !this._empty(n)) { + this._makeCode() + } + } + }, + opations: { + handler(n,o){ + if (this.onval) { + if (!this._empty(n)) { + this._makeCode() + } + } + }, + deep: true + } + }, + mounted () { + if (this.loadMake) { + if (!this._empty(this.val)) { + this._makeCode() + } + } + }, +} +</script> +<style> +.tki-barcode { + position: relative; +} +.tki-barcode-canvas { + position: fixed!important; + top: -99999upx; + left: -99999upx; + z-index: -99999; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-qrcode/qrcode.js b/LA24030_LuLiPackageLine_Pda/components/tki-qrcode/qrcode.js new file mode 100644 index 0000000..6ea6553 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-qrcode/qrcode.js @@ -0,0 +1,1201 @@ +let QRCode = {}; +(function () { + /** + * 鑾峰彇鍗曚釜瀛楃鐨剈tf8缂栫爜 + * unicode BMP骞抽潰绾�65535涓瓧绗� + * @param {num} code + * return {array} + */ + function unicodeFormat8(code) { + // 1 byte + var c0, c1, c2; + if (code < 128) { + return [code]; + // 2 bytes + } else if (code < 2048) { + c0 = 192 + (code >> 6); + c1 = 128 + (code & 63); + return [c0, c1]; + // 3 bytes + } else { + c0 = 224 + (code >> 12); + c1 = 128 + (code >> 6 & 63); + c2 = 128 + (code & 63); + return [c0, c1, c2]; + } + } + /** + * 鑾峰彇瀛楃涓茬殑utf8缂栫爜瀛楄妭涓� + * @param {string} string + * @return {array} + */ + function getUTF8Bytes(string) { + var utf8codes = []; + for (var i = 0; i < string.length; i++) { + var code = string.charCodeAt(i); + var utf8 = unicodeFormat8(code); + for (var j = 0; j < utf8.length; j++) { + utf8codes.push(utf8[j]); + } + } + return utf8codes; + } + /** + * 浜岀淮鐮佺畻娉曞疄鐜� + * @param {string} data 瑕佺紪鐮佺殑淇℃伅瀛楃涓� + * @param {num} errorCorrectLevel 绾犻敊绛夌骇 + */ + function QRCodeAlg(data, errorCorrectLevel) { + this.typeNumber = -1; //鐗堟湰 + this.errorCorrectLevel = errorCorrectLevel; + this.modules = null; //浜岀淮鐭╅樀锛屽瓨鏀炬渶缁堢粨鏋� + this.moduleCount = 0; //鐭╅樀澶у皬 + this.dataCache = null; //鏁版嵁缂撳瓨 + this.rsBlocks = null; //鐗堟湰鏁版嵁淇℃伅 + this.totalDataCount = -1; //鍙娇鐢ㄧ殑鏁版嵁閲� + this.data = data; + this.utf8bytes = getUTF8Bytes(data); + this.make(); + } + QRCodeAlg.prototype = { + constructor: QRCodeAlg, + /** + * 鑾峰彇浜岀淮鐮佺煩闃靛ぇ灏� + * @return {num} 鐭╅樀澶у皬 + */ + getModuleCount: function () { + return this.moduleCount; + }, + /** + * 缂栫爜 + */ + make: function () { + this.getRightType(); + this.dataCache = this.createData(); + this.createQrcode(); + }, + /** + * 璁剧疆浜屼綅鐭╅樀鍔熻兘鍥惧舰 + * @param {bool} test 琛ㄧず鏄惁鍦ㄥ鎵炬渶濂芥帺鑶滈樁娈� + * @param {num} maskPattern 鎺╄啘鐨勭増鏈� + */ + makeImpl: function (maskPattern) { + this.moduleCount = this.typeNumber * 4 + 17; + this.modules = new Array(this.moduleCount); + for (var row = 0; row < this.moduleCount; row++) { + this.modules[row] = new Array(this.moduleCount); + } + this.setupPositionProbePattern(0, 0); + this.setupPositionProbePattern(this.moduleCount - 7, 0); + this.setupPositionProbePattern(0, this.moduleCount - 7); + this.setupPositionAdjustPattern(); + this.setupTimingPattern(); + this.setupTypeInfo(true, maskPattern); + if (this.typeNumber >= 7) { + this.setupTypeNumber(true); + } + this.mapData(this.dataCache, maskPattern); + }, + /** + * 璁剧疆浜岀淮鐮佺殑浣嶇疆鎺㈡祴鍥惧舰 + * @param {num} row 鎺㈡祴鍥惧舰鐨勪腑蹇冩í鍧愭爣 + * @param {num} col 鎺㈡祴鍥惧舰鐨勪腑蹇冪旱鍧愭爣 + */ + setupPositionProbePattern: function (row, col) { + for (var r = -1; r <= 7; r++) { + if (row + r <= -1 || this.moduleCount <= row + r) continue; + for (var c = -1; c <= 7; c++) { + if (col + c <= -1 || this.moduleCount <= col + c) continue; + if ((0 <= r && r <= 6 && (c == 0 || c == 6)) || (0 <= c && c <= 6 && (r == 0 || r == 6)) || (2 <= r && r <= 4 && 2 <= c && c <= 4)) { + this.modules[row + r][col + c] = true; + } else { + this.modules[row + r][col + c] = false; + } + } + } + }, + /** + * 鍒涘缓浜岀淮鐮� + * @return {[type]} [description] + */ + createQrcode: function () { + var minLostPoint = 0; + var pattern = 0; + var bestModules = null; + for (var i = 0; i < 8; i++) { + this.makeImpl(i); + var lostPoint = QRUtil.getLostPoint(this); + if (i == 0 || minLostPoint > lostPoint) { + minLostPoint = lostPoint; + pattern = i; + bestModules = this.modules; + } + } + this.modules = bestModules; + this.setupTypeInfo(false, pattern); + if (this.typeNumber >= 7) { + this.setupTypeNumber(false); + } + }, + /** + * 璁剧疆瀹氫綅鍥惧舰 + * @return {[type]} [description] + */ + setupTimingPattern: function () { + for (var r = 8; r < this.moduleCount - 8; r++) { + if (this.modules[r][6] != null) { + continue; + } + this.modules[r][6] = (r % 2 == 0); + if (this.modules[6][r] != null) { + continue; + } + this.modules[6][r] = (r % 2 == 0); + } + }, + /** + * 璁剧疆鐭鍥惧舰 + * @return {[type]} [description] + */ + setupPositionAdjustPattern: function () { + var pos = QRUtil.getPatternPosition(this.typeNumber); + for (var i = 0; i < pos.length; i++) { + for (var j = 0; j < pos.length; j++) { + var row = pos[i]; + var col = pos[j]; + if (this.modules[row][col] != null) { + continue; + } + for (var r = -2; r <= 2; r++) { + for (var c = -2; c <= 2; c++) { + if (r == -2 || r == 2 || c == -2 || c == 2 || (r == 0 && c == 0)) { + this.modules[row + r][col + c] = true; + } else { + this.modules[row + r][col + c] = false; + } + } + } + } + } + }, + /** + * 璁剧疆鐗堟湰淇℃伅锛�7浠ヤ笂鐗堟湰鎵嶆湁锛� + * @param {bool} test 鏄惁澶勪簬鍒ゆ柇鏈�浣虫帺鑶滈樁娈� + * @return {[type]} [description] + */ + setupTypeNumber: function (test) { + var bits = QRUtil.getBCHTypeNumber(this.typeNumber); + for (var i = 0; i < 18; i++) { + var mod = (!test && ((bits >> i) & 1) == 1); + this.modules[Math.floor(i / 3)][i % 3 + this.moduleCount - 8 - 3] = mod; + this.modules[i % 3 + this.moduleCount - 8 - 3][Math.floor(i / 3)] = mod; + } + }, + /** + * 璁剧疆鏍煎紡淇℃伅锛堢籂閿欑瓑绾у拰鎺╄啘鐗堟湰锛� + * @param {bool} test + * @param {num} maskPattern 鎺╄啘鐗堟湰 + * @return {} + */ + setupTypeInfo: function (test, maskPattern) { + var data = (QRErrorCorrectLevel[this.errorCorrectLevel] << 3) | maskPattern; + var bits = QRUtil.getBCHTypeInfo(data); + // vertical + for (var i = 0; i < 15; i++) { + var mod = (!test && ((bits >> i) & 1) == 1); + if (i < 6) { + this.modules[i][8] = mod; + } else if (i < 8) { + this.modules[i + 1][8] = mod; + } else { + this.modules[this.moduleCount - 15 + i][8] = mod; + } + // horizontal + var mod = (!test && ((bits >> i) & 1) == 1); + if (i < 8) { + this.modules[8][this.moduleCount - i - 1] = mod; + } else if (i < 9) { + this.modules[8][15 - i - 1 + 1] = mod; + } else { + this.modules[8][15 - i - 1] = mod; + } + } + // fixed module + this.modules[this.moduleCount - 8][8] = (!test); + }, + /** + * 鏁版嵁缂栫爜 + * @return {[type]} [description] + */ + createData: function () { + var buffer = new QRBitBuffer(); + var lengthBits = this.typeNumber > 9 ? 16 : 8; + buffer.put(4, 4); //娣诲姞妯″紡 + buffer.put(this.utf8bytes.length, lengthBits); + for (var i = 0, l = this.utf8bytes.length; i < l; i++) { + buffer.put(this.utf8bytes[i], 8); + } + if (buffer.length + 4 <= this.totalDataCount * 8) { + buffer.put(0, 4); + } + // padding + while (buffer.length % 8 != 0) { + buffer.putBit(false); + } + // padding + while (true) { + if (buffer.length >= this.totalDataCount * 8) { + break; + } + buffer.put(QRCodeAlg.PAD0, 8); + if (buffer.length >= this.totalDataCount * 8) { + break; + } + buffer.put(QRCodeAlg.PAD1, 8); + } + return this.createBytes(buffer); + }, + /** + * 绾犻敊鐮佺紪鐮� + * @param {buffer} buffer 鏁版嵁缂栫爜 + * @return {[type]} + */ + createBytes: function (buffer) { + var offset = 0; + var maxDcCount = 0; + var maxEcCount = 0; + var length = this.rsBlock.length / 3; + var rsBlocks = new Array(); + for (var i = 0; i < length; i++) { + var count = this.rsBlock[i * 3 + 0]; + var totalCount = this.rsBlock[i * 3 + 1]; + var dataCount = this.rsBlock[i * 3 + 2]; + for (var j = 0; j < count; j++) { + rsBlocks.push([dataCount, totalCount]); + } + } + var dcdata = new Array(rsBlocks.length); + var ecdata = new Array(rsBlocks.length); + for (var r = 0; r < rsBlocks.length; r++) { + var dcCount = rsBlocks[r][0]; + var ecCount = rsBlocks[r][1] - dcCount; + maxDcCount = Math.max(maxDcCount, dcCount); + maxEcCount = Math.max(maxEcCount, ecCount); + dcdata[r] = new Array(dcCount); + for (var i = 0; i < dcdata[r].length; i++) { + dcdata[r][i] = 0xff & buffer.buffer[i + offset]; + } + offset += dcCount; + var rsPoly = QRUtil.getErrorCorrectPolynomial(ecCount); + var rawPoly = new QRPolynomial(dcdata[r], rsPoly.getLength() - 1); + var modPoly = rawPoly.mod(rsPoly); + ecdata[r] = new Array(rsPoly.getLength() - 1); + for (var i = 0; i < ecdata[r].length; i++) { + var modIndex = i + modPoly.getLength() - ecdata[r].length; + ecdata[r][i] = (modIndex >= 0) ? modPoly.get(modIndex) : 0; + } + } + var data = new Array(this.totalDataCount); + var index = 0; + for (var i = 0; i < maxDcCount; i++) { + for (var r = 0; r < rsBlocks.length; r++) { + if (i < dcdata[r].length) { + data[index++] = dcdata[r][i]; + } + } + } + for (var i = 0; i < maxEcCount; i++) { + for (var r = 0; r < rsBlocks.length; r++) { + if (i < ecdata[r].length) { + data[index++] = ecdata[r][i]; + } + } + } + return data; + + }, + /** + * 甯冪疆妯″潡锛屾瀯寤烘渶缁堜俊鎭� + * @param {} data + * @param {} maskPattern + * @return {} + */ + mapData: function (data, maskPattern) { + var inc = -1; + var row = this.moduleCount - 1; + var bitIndex = 7; + var byteIndex = 0; + for (var col = this.moduleCount - 1; col > 0; col -= 2) { + if (col == 6) col--; + while (true) { + for (var c = 0; c < 2; c++) { + if (this.modules[row][col - c] == null) { + var dark = false; + if (byteIndex < data.length) { + dark = (((data[byteIndex] >>> bitIndex) & 1) == 1); + } + var mask = QRUtil.getMask(maskPattern, row, col - c); + if (mask) { + dark = !dark; + } + this.modules[row][col - c] = dark; + bitIndex--; + if (bitIndex == -1) { + byteIndex++; + bitIndex = 7; + } + } + } + row += inc; + if (row < 0 || this.moduleCount <= row) { + row -= inc; + inc = -inc; + break; + } + } + } + } + }; + /** + * 濉厖瀛楁 + */ + QRCodeAlg.PAD0 = 0xEC; + QRCodeAlg.PAD1 = 0x11; + //--------------------------------------------------------------------- + // 绾犻敊绛夌骇瀵瑰簲鐨勭紪鐮� + //--------------------------------------------------------------------- + var QRErrorCorrectLevel = [1, 0, 3, 2]; + //--------------------------------------------------------------------- + // 鎺╄啘鐗堟湰 + //--------------------------------------------------------------------- + var QRMaskPattern = { + PATTERN000: 0, + PATTERN001: 1, + PATTERN010: 2, + PATTERN011: 3, + PATTERN100: 4, + PATTERN101: 5, + PATTERN110: 6, + PATTERN111: 7 + }; + //--------------------------------------------------------------------- + // 宸ュ叿绫� + //--------------------------------------------------------------------- + var QRUtil = { + /* + 姣忎釜鐗堟湰鐭鍥惧舰鐨勪綅缃� + */ + PATTERN_POSITION_TABLE: [ + [], + [6, 18], + [6, 22], + [6, 26], + [6, 30], + [6, 34], + [6, 22, 38], + [6, 24, 42], + [6, 26, 46], + [6, 28, 50], + [6, 30, 54], + [6, 32, 58], + [6, 34, 62], + [6, 26, 46, 66], + [6, 26, 48, 70], + [6, 26, 50, 74], + [6, 30, 54, 78], + [6, 30, 56, 82], + [6, 30, 58, 86], + [6, 34, 62, 90], + [6, 28, 50, 72, 94], + [6, 26, 50, 74, 98], + [6, 30, 54, 78, 102], + [6, 28, 54, 80, 106], + [6, 32, 58, 84, 110], + [6, 30, 58, 86, 114], + [6, 34, 62, 90, 118], + [6, 26, 50, 74, 98, 122], + [6, 30, 54, 78, 102, 126], + [6, 26, 52, 78, 104, 130], + [6, 30, 56, 82, 108, 134], + [6, 34, 60, 86, 112, 138], + [6, 30, 58, 86, 114, 142], + [6, 34, 62, 90, 118, 146], + [6, 30, 54, 78, 102, 126, 150], + [6, 24, 50, 76, 102, 128, 154], + [6, 28, 54, 80, 106, 132, 158], + [6, 32, 58, 84, 110, 136, 162], + [6, 26, 54, 82, 110, 138, 166], + [6, 30, 58, 86, 114, 142, 170] + ], + G15: (1 << 10) | (1 << 8) | (1 << 5) | (1 << 4) | (1 << 2) | (1 << 1) | (1 << 0), + G18: (1 << 12) | (1 << 11) | (1 << 10) | (1 << 9) | (1 << 8) | (1 << 5) | (1 << 2) | (1 << 0), + G15_MASK: (1 << 14) | (1 << 12) | (1 << 10) | (1 << 4) | (1 << 1), + /* + BCH缂栫爜鏍煎紡淇℃伅 + */ + getBCHTypeInfo: function (data) { + var d = data << 10; + while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15) >= 0) { + d ^= (QRUtil.G15 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G15))); + } + return ((data << 10) | d) ^ QRUtil.G15_MASK; + }, + /* + BCH缂栫爜鐗堟湰淇℃伅 + */ + getBCHTypeNumber: function (data) { + var d = data << 12; + while (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18) >= 0) { + d ^= (QRUtil.G18 << (QRUtil.getBCHDigit(d) - QRUtil.getBCHDigit(QRUtil.G18))); + } + return (data << 12) | d; + }, + /* + 鑾峰彇BCH浣嶄俊鎭� + */ + getBCHDigit: function (data) { + var digit = 0; + while (data != 0) { + digit++; + data >>>= 1; + } + return digit; + }, + /* + 鑾峰彇鐗堟湰瀵瑰簲鐨勭煫姝e浘褰綅缃� + */ + getPatternPosition: function (typeNumber) { + return QRUtil.PATTERN_POSITION_TABLE[typeNumber - 1]; + }, + /* + 鎺╄啘绠楁硶 + */ + getMask: function (maskPattern, i, j) { + switch (maskPattern) { + case QRMaskPattern.PATTERN000: + return (i + j) % 2 == 0; + case QRMaskPattern.PATTERN001: + return i % 2 == 0; + case QRMaskPattern.PATTERN010: + return j % 3 == 0; + case QRMaskPattern.PATTERN011: + return (i + j) % 3 == 0; + case QRMaskPattern.PATTERN100: + return (Math.floor(i / 2) + Math.floor(j / 3)) % 2 == 0; + case QRMaskPattern.PATTERN101: + return (i * j) % 2 + (i * j) % 3 == 0; + case QRMaskPattern.PATTERN110: + return ((i * j) % 2 + (i * j) % 3) % 2 == 0; + case QRMaskPattern.PATTERN111: + return ((i * j) % 3 + (i + j) % 2) % 2 == 0; + default: + throw new Error("bad maskPattern:" + maskPattern); + } + }, + /* + 鑾峰彇RS鐨勭籂閿欏椤瑰紡 + */ + getErrorCorrectPolynomial: function (errorCorrectLength) { + var a = new QRPolynomial([1], 0); + for (var i = 0; i < errorCorrectLength; i++) { + a = a.multiply(new QRPolynomial([1, QRMath.gexp(i)], 0)); + } + return a; + }, + /* + 鑾峰彇璇勪环 + */ + getLostPoint: function (qrCode) { + var moduleCount = qrCode.getModuleCount(), + lostPoint = 0, + darkCount = 0; + for (var row = 0; row < moduleCount; row++) { + var sameCount = 0; + var head = qrCode.modules[row][0]; + for (var col = 0; col < moduleCount; col++) { + var current = qrCode.modules[row][col]; + //level 3 璇勪环 + if (col < moduleCount - 6) { + if (current && !qrCode.modules[row][col + 1] && qrCode.modules[row][col + 2] && qrCode.modules[row][col + 3] && qrCode.modules[row][col + 4] && !qrCode.modules[row][col + 5] && qrCode.modules[row][col + 6]) { + if (col < moduleCount - 10) { + if (qrCode.modules[row][col + 7] && qrCode.modules[row][col + 8] && qrCode.modules[row][col + 9] && qrCode.modules[row][col + 10]) { + lostPoint += 40; + } + } else if (col > 3) { + if (qrCode.modules[row][col - 1] && qrCode.modules[row][col - 2] && qrCode.modules[row][col - 3] && qrCode.modules[row][col - 4]) { + lostPoint += 40; + } + } + } + } + //level 2 璇勪环 + if ((row < moduleCount - 1) && (col < moduleCount - 1)) { + var count = 0; + if (current) count++; + if (qrCode.modules[row + 1][col]) count++; + if (qrCode.modules[row][col + 1]) count++; + if (qrCode.modules[row + 1][col + 1]) count++; + if (count == 0 || count == 4) { + lostPoint += 3; + } + } + //level 1 璇勪环 + if (head ^ current) { + sameCount++; + } else { + head = current; + if (sameCount >= 5) { + lostPoint += (3 + sameCount - 5); + } + sameCount = 1; + } + //level 4 璇勪环 + if (current) { + darkCount++; + } + } + } + for (var col = 0; col < moduleCount; col++) { + var sameCount = 0; + var head = qrCode.modules[0][col]; + for (var row = 0; row < moduleCount; row++) { + var current = qrCode.modules[row][col]; + //level 3 璇勪环 + if (row < moduleCount - 6) { + if (current && !qrCode.modules[row + 1][col] && qrCode.modules[row + 2][col] && qrCode.modules[row + 3][col] && qrCode.modules[row + 4][col] && !qrCode.modules[row + 5][col] && qrCode.modules[row + 6][col]) { + if (row < moduleCount - 10) { + if (qrCode.modules[row + 7][col] && qrCode.modules[row + 8][col] && qrCode.modules[row + 9][col] && qrCode.modules[row + 10][col]) { + lostPoint += 40; + } + } else if (row > 3) { + if (qrCode.modules[row - 1][col] && qrCode.modules[row - 2][col] && qrCode.modules[row - 3][col] && qrCode.modules[row - 4][col]) { + lostPoint += 40; + } + } + } + } + //level 1 璇勪环 + if (head ^ current) { + sameCount++; + } else { + head = current; + if (sameCount >= 5) { + lostPoint += (3 + sameCount - 5); + } + sameCount = 1; + } + } + } + // LEVEL4 + var ratio = Math.abs(100 * darkCount / moduleCount / moduleCount - 50) / 5; + lostPoint += ratio * 10; + return lostPoint; + } + + }; + //--------------------------------------------------------------------- + // QRMath浣跨敤鐨勬暟瀛﹀伐鍏� + //--------------------------------------------------------------------- + var QRMath = { + /* + 灏唍杞寲涓篴^m + */ + glog: function (n) { + if (n < 1) { + throw new Error("glog(" + n + ")"); + } + return QRMath.LOG_TABLE[n]; + }, + /* + 灏哸^m杞寲涓簄 + */ + gexp: function (n) { + while (n < 0) { + n += 255; + } + while (n >= 256) { + n -= 255; + } + return QRMath.EXP_TABLE[n]; + }, + EXP_TABLE: new Array(256), + LOG_TABLE: new Array(256) + + }; + for (var i = 0; i < 8; i++) { + QRMath.EXP_TABLE[i] = 1 << i; + } + for (var i = 8; i < 256; i++) { + QRMath.EXP_TABLE[i] = QRMath.EXP_TABLE[i - 4] ^ QRMath.EXP_TABLE[i - 5] ^ QRMath.EXP_TABLE[i - 6] ^ QRMath.EXP_TABLE[i - 8]; + } + for (var i = 0; i < 255; i++) { + QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]] = i; + } + //--------------------------------------------------------------------- + // QRPolynomial 澶氶」寮� + //--------------------------------------------------------------------- + /** + * 澶氶」寮忕被 + * @param {Array} num 绯绘暟 + * @param {num} shift a^shift + */ + function QRPolynomial(num, shift) { + if (num.length == undefined) { + throw new Error(num.length + "/" + shift); + } + var offset = 0; + while (offset < num.length && num[offset] == 0) { + offset++; + } + this.num = new Array(num.length - offset + shift); + for (var i = 0; i < num.length - offset; i++) { + this.num[i] = num[i + offset]; + } + } + QRPolynomial.prototype = { + get: function (index) { + return this.num[index]; + }, + getLength: function () { + return this.num.length; + }, + /** + * 澶氶」寮忎箻娉� + * @param {QRPolynomial} e 琚箻澶氶」寮� + * @return {[type]} [description] + */ + multiply: function (e) { + var num = new Array(this.getLength() + e.getLength() - 1); + for (var i = 0; i < this.getLength(); i++) { + for (var j = 0; j < e.getLength(); j++) { + num[i + j] ^= QRMath.gexp(QRMath.glog(this.get(i)) + QRMath.glog(e.get(j))); + } + } + return new QRPolynomial(num, 0); + }, + /** + * 澶氶」寮忔ā杩愮畻 + * @param {QRPolynomial} e 妯″椤瑰紡 + * @return {} + */ + mod: function (e) { + var tl = this.getLength(), + el = e.getLength(); + if (tl - el < 0) { + return this; + } + var num = new Array(tl); + for (var i = 0; i < tl; i++) { + num[i] = this.get(i); + } + while (num.length >= el) { + var ratio = QRMath.glog(num[0]) - QRMath.glog(e.get(0)); + + for (var i = 0; i < e.getLength(); i++) { + num[i] ^= QRMath.gexp(QRMath.glog(e.get(i)) + ratio); + } + while (num[0] == 0) { + num.shift(); + } + } + return new QRPolynomial(num, 0); + } + }; + + //--------------------------------------------------------------------- + // RS_BLOCK_TABLE + //--------------------------------------------------------------------- + /* + 浜岀淮鐮佸悇涓増鏈俊鎭痆鍧楁暟, 姣忓潡涓殑鏁版嵁鍧楁暟, 姣忓潡涓殑淇℃伅鍧楁暟] + */ + var RS_BLOCK_TABLE = [ + // L + // M + // Q + // H + // 1 + [1, 26, 19], + [1, 26, 16], + [1, 26, 13], + [1, 26, 9], + + // 2 + [1, 44, 34], + [1, 44, 28], + [1, 44, 22], + [1, 44, 16], + + // 3 + [1, 70, 55], + [1, 70, 44], + [2, 35, 17], + [2, 35, 13], + + // 4 + [1, 100, 80], + [2, 50, 32], + [2, 50, 24], + [4, 25, 9], + + // 5 + [1, 134, 108], + [2, 67, 43], + [2, 33, 15, 2, 34, 16], + [2, 33, 11, 2, 34, 12], + + // 6 + [2, 86, 68], + [4, 43, 27], + [4, 43, 19], + [4, 43, 15], + + // 7 + [2, 98, 78], + [4, 49, 31], + [2, 32, 14, 4, 33, 15], + [4, 39, 13, 1, 40, 14], + + // 8 + [2, 121, 97], + [2, 60, 38, 2, 61, 39], + [4, 40, 18, 2, 41, 19], + [4, 40, 14, 2, 41, 15], + + // 9 + [2, 146, 116], + [3, 58, 36, 2, 59, 37], + [4, 36, 16, 4, 37, 17], + [4, 36, 12, 4, 37, 13], + + // 10 + [2, 86, 68, 2, 87, 69], + [4, 69, 43, 1, 70, 44], + [6, 43, 19, 2, 44, 20], + [6, 43, 15, 2, 44, 16], + + // 11 + [4, 101, 81], + [1, 80, 50, 4, 81, 51], + [4, 50, 22, 4, 51, 23], + [3, 36, 12, 8, 37, 13], + + // 12 + [2, 116, 92, 2, 117, 93], + [6, 58, 36, 2, 59, 37], + [4, 46, 20, 6, 47, 21], + [7, 42, 14, 4, 43, 15], + + // 13 + [4, 133, 107], + [8, 59, 37, 1, 60, 38], + [8, 44, 20, 4, 45, 21], + [12, 33, 11, 4, 34, 12], + + // 14 + [3, 145, 115, 1, 146, 116], + [4, 64, 40, 5, 65, 41], + [11, 36, 16, 5, 37, 17], + [11, 36, 12, 5, 37, 13], + + // 15 + [5, 109, 87, 1, 110, 88], + [5, 65, 41, 5, 66, 42], + [5, 54, 24, 7, 55, 25], + [11, 36, 12], + + // 16 + [5, 122, 98, 1, 123, 99], + [7, 73, 45, 3, 74, 46], + [15, 43, 19, 2, 44, 20], + [3, 45, 15, 13, 46, 16], + + // 17 + [1, 135, 107, 5, 136, 108], + [10, 74, 46, 1, 75, 47], + [1, 50, 22, 15, 51, 23], + [2, 42, 14, 17, 43, 15], + + // 18 + [5, 150, 120, 1, 151, 121], + [9, 69, 43, 4, 70, 44], + [17, 50, 22, 1, 51, 23], + [2, 42, 14, 19, 43, 15], + + // 19 + [3, 141, 113, 4, 142, 114], + [3, 70, 44, 11, 71, 45], + [17, 47, 21, 4, 48, 22], + [9, 39, 13, 16, 40, 14], + + // 20 + [3, 135, 107, 5, 136, 108], + [3, 67, 41, 13, 68, 42], + [15, 54, 24, 5, 55, 25], + [15, 43, 15, 10, 44, 16], + + // 21 + [4, 144, 116, 4, 145, 117], + [17, 68, 42], + [17, 50, 22, 6, 51, 23], + [19, 46, 16, 6, 47, 17], + + // 22 + [2, 139, 111, 7, 140, 112], + [17, 74, 46], + [7, 54, 24, 16, 55, 25], + [34, 37, 13], + + // 23 + [4, 151, 121, 5, 152, 122], + [4, 75, 47, 14, 76, 48], + [11, 54, 24, 14, 55, 25], + [16, 45, 15, 14, 46, 16], + + // 24 + [6, 147, 117, 4, 148, 118], + [6, 73, 45, 14, 74, 46], + [11, 54, 24, 16, 55, 25], + [30, 46, 16, 2, 47, 17], + + // 25 + [8, 132, 106, 4, 133, 107], + [8, 75, 47, 13, 76, 48], + [7, 54, 24, 22, 55, 25], + [22, 45, 15, 13, 46, 16], + + // 26 + [10, 142, 114, 2, 143, 115], + [19, 74, 46, 4, 75, 47], + [28, 50, 22, 6, 51, 23], + [33, 46, 16, 4, 47, 17], + + // 27 + [8, 152, 122, 4, 153, 123], + [22, 73, 45, 3, 74, 46], + [8, 53, 23, 26, 54, 24], + [12, 45, 15, 28, 46, 16], + + // 28 + [3, 147, 117, 10, 148, 118], + [3, 73, 45, 23, 74, 46], + [4, 54, 24, 31, 55, 25], + [11, 45, 15, 31, 46, 16], + + // 29 + [7, 146, 116, 7, 147, 117], + [21, 73, 45, 7, 74, 46], + [1, 53, 23, 37, 54, 24], + [19, 45, 15, 26, 46, 16], + + // 30 + [5, 145, 115, 10, 146, 116], + [19, 75, 47, 10, 76, 48], + [15, 54, 24, 25, 55, 25], + [23, 45, 15, 25, 46, 16], + + // 31 + [13, 145, 115, 3, 146, 116], + [2, 74, 46, 29, 75, 47], + [42, 54, 24, 1, 55, 25], + [23, 45, 15, 28, 46, 16], + + // 32 + [17, 145, 115], + [10, 74, 46, 23, 75, 47], + [10, 54, 24, 35, 55, 25], + [19, 45, 15, 35, 46, 16], + + // 33 + [17, 145, 115, 1, 146, 116], + [14, 74, 46, 21, 75, 47], + [29, 54, 24, 19, 55, 25], + [11, 45, 15, 46, 46, 16], + + // 34 + [13, 145, 115, 6, 146, 116], + [14, 74, 46, 23, 75, 47], + [44, 54, 24, 7, 55, 25], + [59, 46, 16, 1, 47, 17], + + // 35 + [12, 151, 121, 7, 152, 122], + [12, 75, 47, 26, 76, 48], + [39, 54, 24, 14, 55, 25], + [22, 45, 15, 41, 46, 16], + + // 36 + [6, 151, 121, 14, 152, 122], + [6, 75, 47, 34, 76, 48], + [46, 54, 24, 10, 55, 25], + [2, 45, 15, 64, 46, 16], + + // 37 + [17, 152, 122, 4, 153, 123], + [29, 74, 46, 14, 75, 47], + [49, 54, 24, 10, 55, 25], + [24, 45, 15, 46, 46, 16], + + // 38 + [4, 152, 122, 18, 153, 123], + [13, 74, 46, 32, 75, 47], + [48, 54, 24, 14, 55, 25], + [42, 45, 15, 32, 46, 16], + + // 39 + [20, 147, 117, 4, 148, 118], + [40, 75, 47, 7, 76, 48], + [43, 54, 24, 22, 55, 25], + [10, 45, 15, 67, 46, 16], + + // 40 + [19, 148, 118, 6, 149, 119], + [18, 75, 47, 31, 76, 48], + [34, 54, 24, 34, 55, 25], + [20, 45, 15, 61, 46, 16] + ]; + + /** + * 鏍规嵁鏁版嵁鑾峰彇瀵瑰簲鐗堟湰 + * @return {[type]} [description] + */ + QRCodeAlg.prototype.getRightType = function () { + for (var typeNumber = 1; typeNumber < 41; typeNumber++) { + var rsBlock = RS_BLOCK_TABLE[(typeNumber - 1) * 4 + this.errorCorrectLevel]; + if (rsBlock == undefined) { + throw new Error("bad rs block @ typeNumber:" + typeNumber + "/errorCorrectLevel:" + this.errorCorrectLevel); + } + var length = rsBlock.length / 3; + var totalDataCount = 0; + for (var i = 0; i < length; i++) { + var count = rsBlock[i * 3 + 0]; + var dataCount = rsBlock[i * 3 + 2]; + totalDataCount += dataCount * count; + } + var lengthBytes = typeNumber > 9 ? 2 : 1; + if (this.utf8bytes.length + lengthBytes < totalDataCount || typeNumber == 40) { + this.typeNumber = typeNumber; + this.rsBlock = rsBlock; + this.totalDataCount = totalDataCount; + break; + } + } + }; + + //--------------------------------------------------------------------- + // QRBitBuffer + //--------------------------------------------------------------------- + function QRBitBuffer() { + this.buffer = new Array(); + this.length = 0; + } + QRBitBuffer.prototype = { + get: function (index) { + var bufIndex = Math.floor(index / 8); + return ((this.buffer[bufIndex] >>> (7 - index % 8)) & 1); + }, + put: function (num, length) { + for (var i = 0; i < length; i++) { + this.putBit(((num >>> (length - i - 1)) & 1)); + } + }, + putBit: function (bit) { + var bufIndex = Math.floor(this.length / 8); + if (this.buffer.length <= bufIndex) { + this.buffer.push(0); + } + if (bit) { + this.buffer[bufIndex] |= (0x80 >>> (this.length % 8)); + } + this.length++; + } + }; + + + + // xzedit + let qrcodeAlgObjCache = []; + /** + * 浜岀淮鐮佹瀯閫犲嚱鏁帮紝涓昏鐢ㄤ簬缁樺埗 + * @param {鍙傛暟鍒楄〃} opt 浼犻�掑弬鏁� + * @return {} + */ + QRCode = function (opt) { + //璁剧疆榛樿鍙傛暟 + this.options = { + text: '', + size: 256, + correctLevel: 3, + background: '#ffffff', + foreground: '#000000', + pdground: '#000000', + image: '', + imageSize: 30, + canvasId: opt.canvasId, + context: opt.context, + usingComponents: opt.usingComponents, + showLoading: opt.showLoading, + loadingText: opt.loadingText, + }; + if (typeof opt === 'string') { // 鍙紪鐮丄SCII瀛楃涓� + opt = { + text: opt + }; + } + if (opt) { + for (var i in opt) { + this.options[i] = opt[i]; + } + } + //浣跨敤QRCodeAlg鍒涘缓浜岀淮鐮佺粨鏋� + var qrCodeAlg = null; + for (var i = 0, l = qrcodeAlgObjCache.length; i < l; i++) { + if (qrcodeAlgObjCache[i].text == this.options.text && qrcodeAlgObjCache[i].text.correctLevel == this.options.correctLevel) { + qrCodeAlg = qrcodeAlgObjCache[i].obj; + break; + } + } + if (i == l) { + qrCodeAlg = new QRCodeAlg(this.options.text, this.options.correctLevel); + qrcodeAlgObjCache.push({ + text: this.options.text, + correctLevel: this.options.correctLevel, + obj: qrCodeAlg + }); + } + /** + * 璁$畻鐭╅樀鐐圭殑鍓嶆櫙鑹� + * @param {Obj} config + * @param {Number} config.row 鐐箈鍧愭爣 + * @param {Number} config.col 鐐箉鍧愭爣 + * @param {Number} config.count 鐭╅樀澶у皬 + * @param {Number} config.options 缁勪欢鐨刼ptions + * @return {String} + */ + let getForeGround = function (config) { + var options = config.options; + if (options.pdground && ( + (config.row > 1 && config.row < 5 && config.col > 1 && config.col < 5) || + (config.row > (config.count - 6) && config.row < (config.count - 2) && config.col > 1 && config.col < 5) || + (config.row > 1 && config.row < 5 && config.col > (config.count - 6) && config.col < (config.count - 2)) + )) { + return options.pdground; + } + return options.foreground; + } + // 鍒涘缓canvas + let createCanvas = function (options) { + if (options.showLoading) { + uni.showLoading({ + title: options.loadingText, + mask: true + }); + } + var ctx = uni.createCanvasContext(options.canvasId, options.context); + var count = qrCodeAlg.getModuleCount(); + var ratioSize = options.size; + var ratioImgSize = options.imageSize; + //璁$畻姣忎釜鐐圭殑闀垮 + var tileW = (ratioSize / count).toPrecision(4); + var tileH = (ratioSize / count).toPrecision(4); + //缁樺埗 + for (var row = 0; row < count; row++) { + for (var col = 0; col < count; col++) { + var w = (Math.ceil((col + 1) * tileW) - Math.floor(col * tileW)); + var h = (Math.ceil((row + 1) * tileW) - Math.floor(row * tileW)); + var foreground = getForeGround({ + row: row, + col: col, + count: count, + options: options + }); + ctx.setFillStyle(qrCodeAlg.modules[row][col] ? foreground : options.background); + ctx.fillRect(Math.round(col * tileW), Math.round(row * tileH), w, h); + } + } + if (options.image) { + var x = Number(((ratioSize - ratioImgSize) / 2).toFixed(2)); + var y = Number(((ratioSize - ratioImgSize) / 2).toFixed(2)); + drawRoundedRect(ctx, x, y, ratioImgSize, ratioImgSize, 2, 6, true, true) + ctx.drawImage(options.image, x, y, ratioImgSize, ratioImgSize); + // 鐢诲渾瑙掔煩褰� + function drawRoundedRect(ctxi, x, y, width, height, r, lineWidth, fill, stroke) { + ctxi.setLineWidth(lineWidth); + ctxi.setFillStyle(options.background); + ctxi.setStrokeStyle(options.background); + ctxi.beginPath(); // draw top and top right corner + ctxi.moveTo(x + r, y); + ctxi.arcTo(x + width, y, x + width, y + r, r); // draw right side and bottom right corner + ctxi.arcTo(x + width, y + height, x + width - r, y + height, r); // draw bottom and bottom left corner + ctxi.arcTo(x, y + height, x, y + height - r, r); // draw left and top left corner + ctxi.arcTo(x, y, x + r, y, r); + ctxi.closePath(); + if (fill) { + ctxi.fill(); + } + if (stroke) { + ctxi.stroke(); + } + } + } + setTimeout(() => { + ctx.draw(true, () => { + // 淇濆瓨鍒颁复鏃跺尯鍩� + setTimeout(() => { + uni.canvasToTempFilePath({ + width: options.width, + height: options.height, + destWidth: options.width, + destHeight: options.height, + canvasId: options.canvasId, + quality: Number(1), + success: function (res) { + if (options.cbResult) { + options.cbResult(res.tempFilePath) + } + }, + fail: function (res) { + if (options.cbResult) { + options.cbResult(res) + } + }, + complete: function () { + if (options.showLoading){ + uni.hideLoading(); + } + }, + }, options.context); + }, options.text.length + 100); + }); + }, options.usingComponents ? 0 : 150); + } + createCanvas(this.options); + // 绌哄垽瀹� + let empty = function (v) { + let tp = typeof v, + rt = false; + if (tp == "number" && String(v) == "") { + rt = true + } else if (tp == "undefined") { + rt = true + } else if (tp == "object") { + if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true + } else if (tp == "string") { + if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true + } else if (tp == "function") { + rt = false + } + return rt + } + }; + QRCode.prototype.clear = function (fn) { + var ctx = uni.createCanvasContext(this.options.canvasId, this.options.context) + ctx.clearRect(0, 0, this.options.size, this.options.size) + ctx.draw(false, () => { + if (fn) { + fn() + } + }) + }; +})() + +export default QRCode \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/components/tki-qrcode/tki-qrcode.vue b/LA24030_LuLiPackageLine_Pda/components/tki-qrcode/tki-qrcode.vue new file mode 100644 index 0000000..de50aa6 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/components/tki-qrcode/tki-qrcode.vue @@ -0,0 +1,206 @@ +<template xlang="wxml" minapp="mpvue"> + <view class="tki-qrcode"> + <!-- #ifndef MP-ALIPAY --> + <canvas class="tki-qrcode-canvas" :canvas-id="cid" :style="{width:cpSize+'px',height:cpSize+'px'}" /> + <!-- #endif --> + <!-- #ifdef MP-ALIPAY --> + <canvas :id="cid" :width="cpSize" :height="cpSize" class="tki-qrcode-canvas" /> + <!-- #endif --> + <image v-show="show" :src="result" :style="{width:cpSize+'px',height:cpSize+'px'}" /> + </view> +</template> + +<script> +import QRCode from "./qrcode.js" +let qrcode +export default { + name: "tki-qrcode", + props: { + cid: { + type: String, + default: 'tki-qrcode-canvas' + }, + size: { + type: Number, + default: 200 + }, + unit: { + type: String, + default: 'upx' + }, + show: { + type: Boolean, + default: true + }, + val: { + type: String, + default: '' + }, + background: { + type: String, + default: '#ffffff' + }, + foreground: { + type: String, + default: '#000000' + }, + pdground: { + type: String, + default: '#000000' + }, + icon: { + type: String, + default: '' + }, + iconSize: { + type: Number, + default: 40 + }, + lv: { + type: Number, + default: 3 + }, + onval: { + type: Boolean, + default: false + }, + loadMake: { + type: Boolean, + default: false + }, + usingComponents: { + type: Boolean, + default: true + }, + showLoading: { + type: Boolean, + default: true + }, + loadingText: { + type: String, + default: '浜岀淮鐮佺敓鎴愪腑' + }, + }, + data() { + return { + result: '', + } + }, + methods: { + _makeCode() { + let that = this + if (!this._empty(this.val)) { + setTimeout(() => { + qrcode = new QRCode({ + context: that, // 涓婁笅鏂囩幆澧� + canvasId:that.cid, // canvas-id + usingComponents: that.usingComponents, // 鏄惁鏄嚜瀹氫箟缁勪欢 + showLoading: that.showLoading, // 鏄惁鏄剧ずloading + loadingText: that.loadingText, // loading鏂囧瓧 + text: that.val, // 鐢熸垚鍐呭 + size: that.cpSize, // 浜岀淮鐮佸ぇ灏� + background: that.background, // 鑳屾櫙鑹� + foreground: that.foreground, // 鍓嶆櫙鑹� + pdground: that.pdground, // 瀹氫綅瑙掔偣棰滆壊 + correctLevel: that.lv, // 瀹归敊绾у埆 + image: that.icon, // 浜岀淮鐮佸浘鏍� + imageSize: that.iconSize,// 浜岀淮鐮佸浘鏍囧ぇ灏� + cbResult: function (res) { // 鐢熸垚浜岀淮鐮佺殑鍥炶皟 + that._result(res) + }, + }); + }, 1) + } else { + uni.showToast({ + title: '浜岀淮鐮佸唴瀹逛笉鑳戒负绌�', + icon: 'none', + duration: 2000 + }); + } + }, + _clearCode() { + this._result('') + qrcode.clear() + }, + _saveCode() { + let that = this; + if (this.result != "") { + uni.saveImageToPhotosAlbum({ + filePath: that.result, + success: function () { + uni.showToast({ + title: '浜岀淮鐮佷繚瀛樻垚鍔�', + icon: 'success', + duration: 2000 + }); + } + }); + } + }, + _result(res) { + this.result = res; + this.$emit('result', res) + }, + _empty(v) { + let tp = typeof v, + rt = false; + if (tp == "number" && String(v) == "") { + rt = true + } else if (tp == "undefined") { + rt = true + } else if (tp == "object") { + if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true + } else if (tp == "string") { + if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true + } else if (tp == "function") { + rt = false + } + return rt + } + }, + watch: { + size: function (n, o) { + if (n != o && !this._empty(n)) { + this.cSize = n + if (!this._empty(this.val)) { + this._makeCode() + } + } + }, + val: function (n, o) { + if (this.onval) { + if (n != o && !this._empty(n)) { + this._makeCode() + } + } + } + }, + computed: { + cpSize() { + if(this.unit == "upx"){ + return uni.upx2px(this.size) + }else{ + return this.size + } + } + }, + mounted () { + if (this.loadMake) { + if (!this._empty(this.val)) { + this._makeCode() + } + } + }, +} +</script> +<style> +.tki-qrcode { + position: relative; +} +.tki-qrcode-canvas { + position: fixed!important; + top: -99999upx; + left: -99999upx; + z-index: -99999; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/main.js b/LA24030_LuLiPackageLine_Pda/main.js new file mode 100644 index 0000000..f1d7e4c --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/main.js @@ -0,0 +1,29 @@ +import Vue from 'vue' +import App from './App' +//寮曞叆uview +import uView from "uview-ui"; +import {baseUrl} from 'utils/request.js' +import createStore from './store' +// import svg from '@/styles/iconfont/svg.js'; +// Vue.use(svg) +Vue.use(uView); +const store = createStore(Vue); +Vue.config.productionTip = false + +Vue.prototype.$myHOST = baseUrl +App.mpType = 'app' +import cuCustom from './colorui/components/cu-custom.vue' +Vue.component('cu-custom',cuCustom) +import LodingModal from './components/Loding.vue' +Vue.component('loding-modal',LodingModal) +import CuModal from './components/CuModal.vue' +Vue.component('cu-modal',CuModal) +import BottomModal from './components/BottomModal.vue' +Vue.component('bottom-modal',BottomModal) +import noclick from './components/noclick.js' +Vue.prototype.$noMultipleClicks = noclick.noMultipleClicks; +const app = new Vue({ + ...App, + store +}) +app.$mount() diff --git a/LA24030_LuLiPackageLine_Pda/manifest.json b/LA24030_LuLiPackageLine_Pda/manifest.json new file mode 100644 index 0000000..ccedeb5 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/manifest.json @@ -0,0 +1,131 @@ +{ + "name" : "LuLiMuYe_Package_Pda", + "appid" : "__UNI__28D87EB", + "description" : "2024.07.29", + "versionName" : "1.0.0", + "versionCode" : "100", + "transformPx" : false, + "app-plus" : { + "usingComponents" : true, + "nvueStyleCompiler" : "uni-app", + "compilerVersion" : 3, + "splashscreen" : { + "alwaysShowBeforeRender" : true, + "waiting" : true, + "autoclose" : true, + "delay" : 0 + }, + "compatible" : { + "ignoreVersion" : true //true琛ㄧず蹇界暐鐗堟湰妫�鏌ユ彁绀烘 + }, + "modules" : { + "Bluetooth" : {}, + "Camera" : {}, + "Push" : {} + }, + "distribute" : { + "android" : { + "permissions" : [ + "<uses-feature android:name=\"android.hardware.camera\"/>", + "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", + "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", + "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", + "<uses-permission android:name=\"android.permission.CAMERA\"/>", + "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", + "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", + "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", + "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", + "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", + "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", + "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", + "<uses-permission android:name=\"android.permission.VIBRATE\"/>", + "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", + "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" + ], + "autoSdkPermissions" : true, + "targetSdkVersion" : "apk鐨勭洰鏍囩増鏈�,榛樿鍊间负28", + "abiFilters" : [ "armeabi-v7a", "x86" ] + }, + "ios" : { + "dSYMs" : false + }, + "sdkConfigs" : { + "ad" : {}, + "push" : {} + }, + "icons" : { + "android" : { + "hdpi" : "unpackage/res/icons/72x72.png", + "xhdpi" : "unpackage/res/icons/96x96.png", + "xxhdpi" : "unpackage/res/icons/144x144.png", + "xxxhdpi" : "unpackage/res/icons/192x192.png" + }, + "ios" : { + "appstore" : "unpackage/res/icons/1024x1024.png", + "ipad" : { + "app" : "unpackage/res/icons/76x76.png", + "app@2x" : "unpackage/res/icons/152x152.png", + "notification" : "unpackage/res/icons/20x20.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "proapp@2x" : "unpackage/res/icons/167x167.png", + "settings" : "unpackage/res/icons/29x29.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "spotlight" : "unpackage/res/icons/40x40.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png" + }, + "iphone" : { + "app@2x" : "unpackage/res/icons/120x120.png", + "app@3x" : "unpackage/res/icons/180x180.png", + "notification@2x" : "unpackage/res/icons/40x40.png", + "notification@3x" : "unpackage/res/icons/60x60.png", + "settings@2x" : "unpackage/res/icons/58x58.png", + "settings@3x" : "unpackage/res/icons/87x87.png", + "spotlight@2x" : "unpackage/res/icons/80x80.png", + "spotlight@3x" : "unpackage/res/icons/120x120.png" + } + } + } + }, + "nativePlugins" : { + "PrintSDK" : { + "__plugin_info__" : { + "name" : "SPD_PrintSDK_Uniapp", + "description" : "鎬濆繀鎷撴墦鍗版満鎻掍欢2.1", + "platforms" : "Android", + "url" : "", + "android_package_name" : "", + "ios_bundle_id" : "", + "isCloud" : false, + "bought" : -1, + "pid" : "", + "parameters" : {} + } + } + } + }, + "quickapp" : {}, + "mp-weixin" : { + "appid" : "", + "setting" : { + "urlCheck" : false + }, + "usingComponents" : true + }, + "mp-alipay" : { + "usingComponents" : true + }, + "mp-baidu" : { + "usingComponents" : true + }, + "mp-toutiao" : { + "usingComponents" : true + }, + "uniStatistics" : { + "enable" : false + }, + "h5" : { + "router" : { + "mode" : "hash" + } + } +} diff --git a/LA24030_LuLiPackageLine_Pda/mixins/Blue.js b/LA24030_LuLiPackageLine_Pda/mixins/Blue.js new file mode 100644 index 0000000..cdcf09d --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/mixins/Blue.js @@ -0,0 +1,427 @@ +import printerUtil from '@/components/print/printerutil.js' +const PrinterJobs = require('@/components/print/printerjobs.js') +import { + getDate +} from '@/utils/dateTime.js' +export default { + data() { + return { + + list: [], + deviceId: '', + serviceId: '', + characteristics: [], + characteristicId: '', + deviceslist: [] + } + }, + onShow() { + this.list = [] + this.deviceslist = [] + + }, + methods: { + //鍒濆鍖栬摑鐗欒澶� + openBluetoothAdapter() { + let _this = this + uni.openBluetoothAdapter({ + success: (res) => { //宸叉墦寮� + uni.getBluetoothAdapterState({ //钃濈墮鐨勫尮閰嶇姸鎬� + success: (res1) => { + console.log(res1, '鏈満璁惧鐨勮摑鐗欏凡鎵撳紑') + // 寮�濮嬫悳绱㈣摑鐗欒澶� + + _this.startBluetoothDeviceDiscovery() + uni.setStorageSync('blueShow', true) + }, + fail(error) { + uni.showToast({ + icon: 'none', + title: '鏌ョ湅鎵嬫満钃濈墮鏄惁鎵撳紑err' + }); + } + }); + + }, + fail: err => { //鏈墦寮� + uni.setStorageSync('blueShow', false) + uni.showToast({ + icon: 'none', + title: '鏌ョ湅鎵嬫満钃濈墮鏄惁鎵撳紑' + }); + } + }) + }, + // 寮�濮嬫悳绱㈣摑鐗欒澶� + startBluetoothDeviceDiscovery() { + uni.startBluetoothDevicesDiscovery({ + success: (res) => { + // 鍙戠幇澶栧洿璁惧 + uni.showLoading({ + title: '鍔犺浇涓�', + mask: true + }); + this.onBluetoothDeviceFound() + }, + fail: err => { + console.log(err, '閿欒淇℃伅') + } + }) + }, + // 鍙戠幇澶栧洿璁惧 + onBluetoothDeviceFound() { + uni.onBluetoothDeviceFound((res) => { + this.deviceslist.length > 0 ? uni.hideLoading() : '' + if (this.deviceslist.indexOf(res.devices[0].deviceId) == -1) { + this.deviceslist.push(res.devices[0].deviceId) + if (res.devices[0].name != "") { + uni.hideLoading(); + this.list.push({ + name: res.devices[0].name, + deviceId: res.devices[0].deviceId + }) + } + } + }) + }, + //鑾峰彇鍦ㄨ摑鐗欐ā鍧楃敓鏁堟湡闂存墍鏈夊凡鍙戠幇鐨勮摑鐗欒澶囥�傚寘鎷凡缁忓拰鏈満澶勪簬杩炴帴鐘舵�佺殑璁惧銆� + getBluetoothDevices() { + console.log("鑾峰彇钃濈墮璁惧"); + uni.getBluetoothDevices({ + success: res => { + console.log('鑾峰彇钃濈墮璁惧鎴愬姛:'); + console.log(res.devices); + } + }); + }, + //閫夋嫨璁惧杩炴帴鍚eviceId浼犺繘鏉� + createBLEConnection(deviceId) { + //data閲岄潰寤虹珛涓�涓猟eviceId锛屽瓨鍌ㄨ捣鏉� + let _this = this + uni.showLoading({ + title: '杩炴帴钃濈墮涓�...', + mask: true + }); + this.stopBluetoothDevicesDiscovery() + + this.deviceId = deviceId, + //杩炴帴钃濈墮 + uni.createBLEConnection({ + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: deviceId, + success(res) { + uni.hideLoading(); + uni.showToast({ + icon: 'none', + title: '钃濈墮杩炴帴鎴愬姛' + }); + uni.setStorageSync("deviceId", deviceId) //鎶婂凡缁忚繛鎺ョ殑钃濈墮璁惧淇℃伅鏀惧叆缂撳瓨 + + setTimeout(() => { + _this.getBLEDeviceServices(deviceId) + }, 1000) + + }, + fail(res) { + uni.showToast({ + icon: 'none', + title: '钃濈墮杩炴帴澶辫触' + }); + } + }) + }, + // 鍋滄鎼滃钃濈墮璁惧 + stopBluetoothDevicesDiscovery() { + uni.stopBluetoothDevicesDiscovery({ + success: e => { + this.loading = false + console.log('鍋滄鎼滅储钃濈墮璁惧:' + e.errMsg); + }, + fail: e => { + console.log('鍋滄鎼滅储钃濈墮璁惧澶辫触锛岄敊璇爜锛�' + e.errCode); + } + }); + }, + //鑾峰彇钃濈墮鐗瑰緛 + getBLEDeviceCharacteristics(deviceId, serviceId) { + console.log("杩涘叆鐗瑰緛"); + setTimeout(() => { + uni.getBLEDeviceCharacteristics({ + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: deviceId, + // 杩欓噷鐨� serviceId 闇�瑕佸湪 getBLEDeviceServices 鎺ュ彛涓幏鍙� + serviceId: serviceId, + success: (res) => { + console.log(res, '鐗瑰緛getBLEDeviceCharacteristics') + this.characteristics = res.characteristics + + res.characteristics.forEach((item) => { + if (item.uuid.indexOf("FF02") != -1) { + this.characteristicId = item.uuid + uni.setStorageSync("characteristicId", item + .uuid) //鎶婂凡缁忚繛鎺ョ殑钃濈墮璁惧鏍囪瘑鏀惧叆缂撳瓨 + uni.setStorageSync("serviceId", + serviceId) //鎶婂凡缁忚繛鎺ョ殑钃濈墮璁惧ID鏀惧叆缂撳瓨 + //console.log('characteristicId:', item.uuid) + //鍒╃敤浼犲弬鐨勫舰鍔夸紶缁欎笅闈㈢殑notify锛岃繖閲岀殑uuid濡傛灉閮介渶瑕佺敤鍒帮紝灏变笉鐢ㄥ仛鍒ゆ柇浜嗭紝寤鸿浣跨敤setTimeout杩涜闂撮殧鎬х殑璋冪敤姝ゆ柟娉� + // this.notifyBLECharacteristicValueChange(item.uuid) + + setTimeout(() => { + uni.hideLoading(); + this.BottomShow = false + this.DrawerModalL = false + }, 1000) + } + }) + }, + fail: (res) => { + console.log(res) + } + }) + }, 1000) + }, + // 鍚敤 notify 鍔熻兘 + notifyBLECharacteristicValueChange(characteristicId) { + let _this = this + console.log('deviceId' + _this.deviceId) + console.log('serviceId' + _this.serviceId) + console.log('characteristicId' + characteristicId) + // _this.fanhui() + uni.notifyBLECharacteristicValueChange({ + state: true, // 鍚敤 notify 鍔熻兘 + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: this.deviceId, + // 杩欓噷鐨� serviceId 闇�瑕佸湪 getBLEDeviceServices 鎺ュ彛涓幏鍙� + serviceId: this.serviceId, + // 杩欓噷鐨� characteristicId 闇�瑕佸湪 getBLEDeviceCharacteristics 鎺ュ彛涓幏鍙� + characteristicId: characteristicId, + success: (res) => { + if (this.blueFlag == true) { + this.writeBLECharacteristicValue() + } else { + uni.showLoading({ + title: '钃濈墮鏈嶅姟鑾峰彇鎴愬姛锛岃鎵撳嵃', + mask: true, + }); + } + + setTimeout(() => { + uni.hideLoading(); + }, 1000) + // _this.fanhui() + this.print = "鎵撳嵃" + this.BottomShow = false + + console.log('notifyBLECharacteristicValueChange success', res.errMsg) + }, + fail: (res) => { + uni.showLoading({ + title: '钃濈墮鏈嶅姟鑾峰彇鎴愬姛锛岃鎵撳嵃', + mask: true, + }); + setTimeout(() => { + uni.hideLoading(); + }, 1000) + _this.print = "鎵撳嵃" + _this.BottomShow = false + + // _this.fanhui() + console.log('notifyBLECharacteristicValueChange fail', res.errMsg) + } + }) + }, + //鑾峰彇钃濈墮鐨勬墍鏈夋湇鍔� + getBLEDeviceServices(deviceId) { + uni.showLoading({ + title: '姝e湪鑾峰彇钃濈墮鏈嶅姟...', + mask: true, + }); + setTimeout(() => { + uni.getBLEDeviceServices({ + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: deviceId, + success: (res) => { + uni.showLoading({ + title: '鑾峰彇涓紝璇风◢鍚�...', + mask: true, + }); + res.services.forEach((item) => { + if (item.uuid.indexOf("FF00") != -1) { + this.serviceId = item.uuid; + //鑾峰彇鐗瑰緛 + this.getBLEDeviceCharacteristics(deviceId, item.uuid) + } + }) + } + }) + }, 1000) + }, + //鍐欏叆钃濈墮 + writeBLECharacteristicValue() { + this.printflag = false + let deviceId = uni.getStorageSync('deviceId') + let serviceId = uni.getStorageSync('serviceId') + let characteristicId = uni.getStorageSync('characteristicId') + // if (!uni.getStorageSync("deviceId")) { + // uni.showToast({ + // title: '璇疯繛鎺ユ墦鍗版満', + // icon: 'error', + // duration: 2000 + // }) + // return + // } + const printerJobs = new PrinterJobs(); + // this.singlist.forEach(item => { + printerJobs + .label_set_page(576, 400) + //杈规 + .drawLine(1, 0, 0, 570, 0) + .drawLine(1, 0, 0, 0, 360) + .drawLine(1, 570, 0, 570, 360) + .drawLine(1, 0, 360, 570, 360) + + //鍐呴儴妯嚎 + // .drawLine(1, 0, 52, 570, 52) //绗竴琛� + // .drawLine(1, 0, 104, 570, 104) //绗簩琛� + // .drawLine(1, 0, 156, 570, 156) //绗笁琛� + // .drawLine(1, 0, 208, 400, 208) //绗洓琛� + // .drawLine(1, 0, 260, 400, 260) //绗簲琛� + // .drawLine(1, 0, 312, 400, 312) //绗叚琛� + + // .drawLine(1, 120, 0, 120, 360) // 绗竴鏍圭珫绾� + + // .drawLine(1, 220, 208, 220, 312) // 绗簩鏍圭珫绾� + // .drawLine(1, 300, 208, 300, 312) // 绗笁鏍圭珫绾� + + // .drawLine(1, 400, 156, 400, 312, ) // 绗洓鏍圭珫绾� + // 1 鍘熷 鏄惁绮椾綋\瀛椾綋澶у皬\鏄惁鏃嬭浆瑙掑害\璧峰妯潗鏍嘰璧峰绾靛潗鏍嘰瀛楃涓� + + // .drawText(10, 20, "鐗╂枡澶х被", 24, 0, 0, false, false) + // .drawText(130, 20, this.printlist.category, 24, 0, 0, false, false) + + // // 2 + // .drawText(10, 72, "鐗╂枡鍚嶇О", 24, 0, 0, false, false) + // .drawText(130, 72, item.materialName, 24, 0, 0, false, false) + + // // 3 + // .drawText(10, 124, "鐗╂枡鎵规", 24, 0, 0, false, false) + // .drawText(130, 124, item.lotsSn, 24, 0, 0, false, false) + + // // 4 + // .drawText(10, 176, "宸ュ崟鍙�", 24, 0, 0, false, false) + // .drawText(130, 176, item.wo, 24, 0, 0, false, false) + + // // 5 + // .drawText(10, 225, "鐢熶骇绾�", 24, 0, 0, false, false) + // .drawText(130, 225, item.productLine, 24, 0, 0, false, false) + + // // 5-1 + // .drawText(230, 225, "宸ュ簭", 24, 0, 0, false, false) + // .drawText(310, 225, item.cellNo, 24, 0, 0, false, false) + + // // 6 + // .drawText(10, 280, "鐗╂枡鏁伴噺", 24, 0, 0, false, false) + // .drawText(130, 280, item.materialNum, 24, 0, 0, false, false) + + // // 6-1 + // .drawText(230, 280, "娓呮礂", 24, 0, 0, false, false) + // .drawText(340, 280, item.cleanAttr, 24, 0, 0, false, false) + + // // 7 + // .drawText(10, 332, "鎵撳嵃鏃堕棿", 24, 0, 0, false, false) + // .drawText(130, 332, item.cTime, 24, 0, 0, false, false) + // .drawText(440, 332, item.user, 24, 0, 0, false, false) + + // // 鏉″舰鐮� + .drawBarCode(10, 50, this.printlist.wareMaterialCode,1, 0, 1, 50 ) + // .drawText(434, 310, item.containerCode, 1, 0, 0, false, false) + .label_print(0, 1); + // }) + let buffer = printerJobs.buffer(); + // console.log('ArrayBuffer', 'length: ' + buffer.byteLength, ' hex: ' + ab2hex(buffer)); + // 1.骞惰璋冪敤澶氭浼氬瓨鍦ㄥ啓澶辫触鐨勫彲鑳芥�� + // 2.寤鸿姣忔鍐欏叆涓嶈秴杩�20瀛楄妭 + // 鍒嗗寘澶勭悊锛屽欢鏃惰皟鐢� + const maxChunk = 15 + const delay = 20; + for (let i = 0, j = 0, length = buffer.byteLength; i < length; i += maxChunk, j++) { + let subPackage = buffer.slice(i, i + maxChunk <= length ? (i + maxChunk) : length); + // setTimeout(this._writeBLECharacteristicValue, j * delay, subPackage); + setTimeout(() => { + this._writeBLECharacteristicValue(deviceId, serviceId, characteristicId, subPackage) + }, j * delay); + } + + }, + _writeBLECharacteristicValue(deviceId, serviceId, characteristicId, buffer) { + + uni.writeBLECharacteristicValue({ + deviceId: deviceId, + serviceId: serviceId, + characteristicId: characteristicId, + value: buffer, + success(res) { + + console.log('writeBLECharacteristicValue success', res.errMsg) + }, + fail(res) { + console.log(JSON.stringify(res)) + console.log(JSON.stringify(buffer)) + } + }) + }, + //闀挎寜浜嬩欢 + longpress(item, index) { + let _this = this + if (uni.getStorageSync('deviceId')) { + uni.showToast({ + title: '钃濈墮宸茶繛鎺ワ紒', + icon: 'none', + duration: 2000 + }) + return + } + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁杩炴帴钃濈墮:' + item.name, + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + // _this.stopBluetoothDevicesDiscovery() + uni.setStorageSync('itemblue', item.name) + this.itemblue = item.name + _this.createBLEConnection(item.deviceId) + + } else if (res.cancel) { + uni.showToast({ + title: '宸插彇娑堣繛鎺�', + duration: 2000, + icon: 'none' + }) + } + }) + }); + }, + // 鐐瑰嚮鏂紑钃濈墮杩炴帴 + tomy() { + var _this = this + + uni.closeBluetoothAdapter({ + success(res) { + uni.removeStorageSync('deviceId') + uni.removeStorageSync("serviceId"); + uni.removeStorageSync("characteristicId"); + // _this.openBluetoothAdapter() + } + }) + + }, + //杩斿洖 + fanhui() { + uni.navigateTo({ + url: './printing' + }) + }, + } +} diff --git a/LA24030_LuLiPackageLine_Pda/mixins/blueproduct.js b/LA24030_LuLiPackageLine_Pda/mixins/blueproduct.js new file mode 100644 index 0000000..de9ed87 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/mixins/blueproduct.js @@ -0,0 +1,394 @@ +import printerUtil from '@/components/print/printerutil.js' +const PrinterJobs = require('@/components/print/printerjobs.js') +import { + getDate +} from '@/utils/dateTime.js' +export default { + data() { + return { + list: [], + deviceId: '', + serviceId: '', + characteristics: [], + characteristicId: '', + deviceslist: [] + } + }, + onShow() { + this.list = [] + this.deviceslist = [] + + }, + methods: { + //鍒濆鍖栬摑鐗欒澶� + openBluetoothAdapter() { + let _this = this + uni.openBluetoothAdapter({ + success: (res) => { //宸叉墦寮� + uni.getBluetoothAdapterState({ //钃濈墮鐨勫尮閰嶇姸鎬� + success: (res1) => { + console.log(res1, '鏈満璁惧鐨勮摑鐗欏凡鎵撳紑') + // 寮�濮嬫悳绱㈣摑鐗欒澶� + + _this.startBluetoothDeviceDiscovery() + uni.setStorageSync('blueShow', true) + }, + fail(error) { + uni.showToast({ + icon: 'none', + title: '鏌ョ湅鎵嬫満钃濈墮鏄惁鎵撳紑err' + }); + } + }); + + }, + fail: err => { //鏈墦寮� + uni.setStorageSync('blueShow', false) + uni.showToast({ + icon: 'none', + title: '鏌ョ湅鎵嬫満钃濈墮鏄惁鎵撳紑' + }); + } + }) + }, + // 寮�濮嬫悳绱㈣摑鐗欒澶� + startBluetoothDeviceDiscovery() { + uni.startBluetoothDevicesDiscovery({ + success: (res) => { + // 鍙戠幇澶栧洿璁惧 + uni.showLoading({ + title: '鍔犺浇涓�', + mask: true + }); + this.onBluetoothDeviceFound() + }, + fail: err => { + console.log(err, '閿欒淇℃伅') + } + }) + }, + // 鍙戠幇澶栧洿璁惧 + onBluetoothDeviceFound() { + uni.onBluetoothDeviceFound((res) => { + this.deviceslist.length > 0 ? uni.hideLoading() : '' + if (this.deviceslist.indexOf(res.devices[0].deviceId) == -1) { + this.deviceslist.push(res.devices[0].deviceId) + if (res.devices[0].name != "") { + uni.hideLoading(); + this.list.push({ + name: res.devices[0].name, + deviceId: res.devices[0].deviceId + }) + } + } + }) + }, + //鑾峰彇鍦ㄨ摑鐗欐ā鍧楃敓鏁堟湡闂存墍鏈夊凡鍙戠幇鐨勮摑鐗欒澶囥�傚寘鎷凡缁忓拰鏈満澶勪簬杩炴帴鐘舵�佺殑璁惧銆� + getBluetoothDevices() { + console.log("鑾峰彇钃濈墮璁惧"); + uni.getBluetoothDevices({ + success: res => { + console.log('鑾峰彇钃濈墮璁惧鎴愬姛:'); + console.log(res.devices); + } + }); + }, + //閫夋嫨璁惧杩炴帴鍚eviceId浼犺繘鏉� + createBLEConnection(deviceId) { + //data閲岄潰寤虹珛涓�涓猟eviceId锛屽瓨鍌ㄨ捣鏉� + let _this = this + uni.showLoading({ + title: '杩炴帴钃濈墮涓�...', + mask: true + }); + this.stopBluetoothDevicesDiscovery() + + this.deviceId = deviceId, + //杩炴帴钃濈墮 + uni.createBLEConnection({ + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: deviceId, + success(res) { + uni.hideLoading(); + uni.showToast({ + icon: 'none', + title: '钃濈墮杩炴帴鎴愬姛' + }); + uni.setStorageSync("deviceId", deviceId) //鎶婂凡缁忚繛鎺ョ殑钃濈墮璁惧淇℃伅鏀惧叆缂撳瓨 + + setTimeout(() => { + _this.getBLEDeviceServices(deviceId) + }, 1000) + + }, + fail(res) { + uni.showToast({ + icon: 'none', + title: '钃濈墮杩炴帴澶辫触' + }); + } + }) + }, + // 鍋滄鎼滃钃濈墮璁惧 + stopBluetoothDevicesDiscovery() { + uni.stopBluetoothDevicesDiscovery({ + success: e => { + this.loading = false + console.log('鍋滄鎼滅储钃濈墮璁惧:' + e.errMsg); + }, + fail: e => { + console.log('鍋滄鎼滅储钃濈墮璁惧澶辫触锛岄敊璇爜锛�' + e.errCode); + } + }); + }, + //鑾峰彇钃濈墮鐗瑰緛 + getBLEDeviceCharacteristics(deviceId, serviceId) { + console.log("杩涘叆鐗瑰緛"); + setTimeout(() => { + uni.getBLEDeviceCharacteristics({ + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: deviceId, + // 杩欓噷鐨� serviceId 闇�瑕佸湪 getBLEDeviceServices 鎺ュ彛涓幏鍙� + serviceId: serviceId, + success: (res) => { + console.log(res, '鐗瑰緛getBLEDeviceCharacteristics') + this.characteristics = res.characteristics + + res.characteristics.forEach((item) => { + if (item.uuid.indexOf("FF02") != -1) { + this.characteristicId = item.uuid + uni.setStorageSync("characteristicId", item + .uuid) //鎶婂凡缁忚繛鎺ョ殑钃濈墮璁惧鏍囪瘑鏀惧叆缂撳瓨 + uni.setStorageSync("serviceId", + serviceId) //鎶婂凡缁忚繛鎺ョ殑钃濈墮璁惧ID鏀惧叆缂撳瓨 + //console.log('characteristicId:', item.uuid) + //鍒╃敤浼犲弬鐨勫舰鍔夸紶缁欎笅闈㈢殑notify锛岃繖閲岀殑uuid濡傛灉閮介渶瑕佺敤鍒帮紝灏变笉鐢ㄥ仛鍒ゆ柇浜嗭紝寤鸿浣跨敤setTimeout杩涜闂撮殧鎬х殑璋冪敤姝ゆ柟娉� + // this.notifyBLECharacteristicValueChange(item.uuid) + + setTimeout(() => { + uni.hideLoading(); + this.BottomShow = false + this.DrawerModalL = false + }, 1000) + } + }) + }, + fail: (res) => { + console.log(res) + } + }) + }, 1000) + }, + // 鍚敤 notify 鍔熻兘 + notifyBLECharacteristicValueChange(characteristicId) { + let _this = this + console.log('deviceId' + _this.deviceId) + console.log('serviceId' + _this.serviceId) + console.log('characteristicId' + characteristicId) + // _this.fanhui() + uni.notifyBLECharacteristicValueChange({ + state: true, // 鍚敤 notify 鍔熻兘 + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: this.deviceId, + // 杩欓噷鐨� serviceId 闇�瑕佸湪 getBLEDeviceServices 鎺ュ彛涓幏鍙� + serviceId: this.serviceId, + // 杩欓噷鐨� characteristicId 闇�瑕佸湪 getBLEDeviceCharacteristics 鎺ュ彛涓幏鍙� + characteristicId: characteristicId, + success: (res) => { + if (this.blueFlag == true) { + this.writeBLECharacteristicValue() + } else { + uni.showLoading({ + title: '钃濈墮鏈嶅姟鑾峰彇鎴愬姛锛岃鎵撳嵃', + mask: true, + }); + } + + setTimeout(() => { + uni.hideLoading(); + }, 1000) + // _this.fanhui() + this.print = "鎵撳嵃" + this.BottomShow = false + + console.log('notifyBLECharacteristicValueChange success', res.errMsg) + }, + fail: (res) => { + uni.showLoading({ + title: '钃濈墮鏈嶅姟鑾峰彇鎴愬姛锛岃鎵撳嵃', + mask: true, + }); + setTimeout(() => { + uni.hideLoading(); + }, 1000) + _this.print = "鎵撳嵃" + _this.BottomShow = false + + // _this.fanhui() + console.log('notifyBLECharacteristicValueChange fail', res.errMsg) + } + }) + }, + //鑾峰彇钃濈墮鐨勬墍鏈夋湇鍔� + getBLEDeviceServices(deviceId) { + uni.showLoading({ + title: '姝e湪鑾峰彇钃濈墮鏈嶅姟...', + mask: true, + }); + setTimeout(() => { + uni.getBLEDeviceServices({ + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: deviceId, + success: (res) => { + uni.showLoading({ + title: '鑾峰彇涓紝璇风◢鍚�...', + mask: true, + }); + res.services.forEach((item) => { + if (item.uuid.indexOf("FF00") != -1) { + this.serviceId = item.uuid; + //鑾峰彇鐗瑰緛 + this.getBLEDeviceCharacteristics(deviceId, item.uuid) + } + }) + } + }) + }, 1000) + }, + //鍐欏叆钃濈墮 + writeBLECharacteristicValue() { + this.printflag = false + let deviceId = uni.getStorageSync('deviceId') + let serviceId = uni.getStorageSync('serviceId') + let characteristicId = uni.getStorageSync('characteristicId') + const printerJobs = new PrinterJobs(); + this.singlist.forEach(item => { + printerJobs + .label_set_page(576, 400) + //杈规 + .drawLine(1, 0, 0, 570, 0) + .drawLine(1, 0, 0, 0, 360) + .drawLine(1, 570, 0, 570, 360) + .drawLine(1, 0, 360, 570, 360) + + //鍐呴儴妯嚎 + .drawLine(1, 0, 94, 570, 94) //绗竴琛� + .drawLine(1, 0, 160, 570, 160) //绗簩琛� + .drawLine(1, 0, 227, 570, 227) //绗笁琛� + .drawLine(1, 0, 293, 400, 293) //绗洓琛� + + .drawLine(1, 120, 94, 120, 360) // 绗竴鏍圭珫绾� + + .drawLine(1, 400, 227, 400, 360) // 绗簩鏍圭珫绾� + // 1 鍘熷 鏄惁绮椾綋\瀛椾綋澶у皬\鏄惁鏃嬭浆瑙掑害\璧峰妯潗鏍嘰璧峰绾靛潗鏍嘰瀛楃涓� + + .drawText(170, 20, "閲嶅簡闈掑北宸ヤ笟鏈夐檺璐d换鍏徃", 26, 0, 1, false, false) + .drawText(240, 62, '鐗╂枡鏍囪瘑绛�', 26, 0, 1, false, false) + + // 3 + .drawText(10, 120, "鐗╂枡缂栧彿", 24, 0, 0, false, false) + .drawText(130, 120, item.item_number, 24, 0, 0, false, false) + + // 4 + .drawText(10, 185, "鐗╂枡鍚嶇О", 24, 0, 0, false, false) + .drawText(130, 185, item.item_desc, 24, 0, 0, false, false) + + // 5 + .drawText(10, 248, "鐗╂枡鎵规", 24, 0, 0, false, false) + .drawText(130, 248, item.lot_number, 24, 0, 0, false, false) + + // 7 + .drawText(10, 312, "鎵撳嵃鏃堕棿", 24, 0, 0, false, false) + .drawText(130, 312, item.print_date, 24, 0, 0, false, false) + // 浜岀淮鐮� + .drawQrCode(438, 232, item.product_barcode, 0, 4, 1) + .drawText(423, 340, item.product_barcode, 1, 0, 0, false, false) + .label_print(0, 1); + }) + let buffer = printerJobs.buffer(); + // console.log('ArrayBuffer', 'length: ' + buffer.byteLength, ' hex: ' + ab2hex(buffer)); + // 1.骞惰璋冪敤澶氭浼氬瓨鍦ㄥ啓澶辫触鐨勫彲鑳芥�� + // 2.寤鸿姣忔鍐欏叆涓嶈秴杩�20瀛楄妭 + // 鍒嗗寘澶勭悊锛屽欢鏃惰皟鐢� + const maxChunk = 13; + const delay =20; + for (let i = 0, j = 0, length = buffer.byteLength; i < length; i += maxChunk, j++) { + let subPackage = buffer.slice(i, i + maxChunk <= length ? (i + maxChunk) : length); + // setTimeout(this._writeBLECharacteristicValue, j * delay, subPackage); + setTimeout(() => { + this._writeBLECharacteristicValue(deviceId, serviceId, characteristicId, subPackage) + }, j *delay); + } + + }, + _writeBLECharacteristicValue(deviceId, serviceId, characteristicId, buffer) { + uni.writeBLECharacteristicValue({ + deviceId: deviceId, + serviceId: serviceId, + characteristicId: characteristicId, + value: buffer, + success(res) { + console.log('writeBLECharacteristicValue success', res.errMsg) + }, + fail(res) { + console.log(JSON.stringify(res)) + console.log(JSON.stringify(buffer)) + uni.getStorageSync('failerr','try') + } + }) + }, + //闀挎寜浜嬩欢 + longpress(item, index) { + let _this = this + if (uni.getStorageSync('deviceId')) { + uni.showToast({ + title: '钃濈墮宸茶繛鎺ワ紒', + icon: 'none', + duration: 2000 + }) + return + } + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁杩炴帴钃濈墮:' + item.name, + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + // _this.stopBluetoothDevicesDiscovery() + uni.setStorageSync('itemblue', item.name) + this.itemblue = item.name + _this.createBLEConnection(item.deviceId) + + } else if (res.cancel) { + uni.showToast({ + title: '宸插彇娑堣繛鎺�', + duration: 2000, + icon: 'none' + }) + } + }) + }); + }, + // 鐐瑰嚮鏂紑钃濈墮杩炴帴 + tomy() { + var _this = this + + uni.closeBluetoothAdapter({ + success(res) { + uni.removeStorageSync('deviceId') + uni.removeStorageSync("serviceId"); + uni.removeStorageSync("characteristicId"); + // _this.openBluetoothAdapter() + } + }) + + }, + //杩斿洖 + fanhui() { + uni.navigateTo({ + url: './printing' + }) + }, + } +} diff --git a/LA24030_LuLiPackageLine_Pda/mixins/checkbox.js b/LA24030_LuLiPackageLine_Pda/mixins/checkbox.js new file mode 100644 index 0000000..2cbe7ba --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/mixins/checkbox.js @@ -0,0 +1,33 @@ +// uniapp -鍘熺敓澶嶉�夋-瑙e喅鐐瑰嚮uview澶嶉�夋鍗¢】鐜拌薄 +export default { + data() { + return { + arrIds: [], + }; + }, + methods: { + // 閫変腑澶嶉�夋--姝ゅ瑕佹搷浣渁rr缁勬暟 鍚﹀垯鍒囨崲搴撲綅鏃犳硶璁颁綇涔嬪墠閫変腑鐨勭墿鏂� + checkboxChange: function (e) { + var values = e.detail.value; //瀛樻斁鎵�鏈夐�変腑鐨刬d + // this.arrIds = values; + var items = this.singlist; + for (var i = 0, lenI = items.length; i < lenI; ++i) { + const item = items[i] + if(values.includes(item.key)){ + this.$set(item,'checked',true) + let idx3 = this.arr.findIndex((v) => v.key == item.key); + if (idx3 == -1) { + this.arr.push(item); + } + }else{ + this.$set(item,'checked',false) + let idx2 = this.arr.findIndex((v) => v.key == item.key); + if (idx2 > -1) { + this.arr.splice(idx2, 1); + } + } + } + + } + }, +}; diff --git a/LA24030_LuLiPackageLine_Pda/mixins/checkboxYueKu.js b/LA24030_LuLiPackageLine_Pda/mixins/checkboxYueKu.js new file mode 100644 index 0000000..f7a6a0f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/mixins/checkboxYueKu.js @@ -0,0 +1,61 @@ +// uniapp -鍘熺敓澶嶉�夋-瑙e喅鐐瑰嚮澶嶉�夋鍗¢】鐜拌薄 --- 渚汸O瓒婂簱 鍏ュ簱瓒婂簱鎸夐挳鐢ㄩ�� +export default { + data() { + return { + arrIds: [], + }; + }, + watch: { + // 鐩戝惉澶嶉�夋 + arrIds(newVal, oldVal) { + console.log("newVal----" + newVal); + console.log("oldVal----" + oldVal); + if (newVal.length < oldVal.length) { + for (var i = 0, lenI = oldVal.length; i < lenI; ++i) { + const item = oldVal[i]; + if (!newVal.includes(item)) { + console.log("鍙栨秷浜嗕竴涓�--------" + item); + // this.handleCart(0, item); + } + } + } else { + for (var i = 0, lenI = newVal.length; i < lenI; ++i) { + const item = newVal[i]; + if (!oldVal.includes(item)) { + console.log("閫変腑浜嗕竴涓�--------" + item); + // this.handleCart(1, item); + } + } + } + }, + }, + methods: { + // 閫変腑澶嶉�夋 + checkboxChange: function (e) { + var values = e.detail.value; //瀛樻斁鎵�鏈夐�変腑鐨刬d + this.arrIds = values; + }, + + // 鏍规嵁閫変腑鐨刱ey,鏇存柊鎻愪氦鐨勫垪琛� + handleCart(type, itemHandle) { + console.log(itemHandle); + if (type == 1) { + //閫変腑 + let idx = this.singlist.findIndex((v) => v.key == itemHandle); + if (idx > -1) { + let idx3 = this.arr.findIndex((v) => v.key == itemHandle); + if (idx3 == -1) { + this.arr.push(this.singlist[idx]); + } + } + } + if (type == 0) { + //鍙栨秷 + let idx2 = this.arr.findIndex((v) => v.key == itemHandle); + if (idx2 > -1) { + this.arr.splice(idx2, 1); + } + } + }, + }, +}; diff --git a/LA24030_LuLiPackageLine_Pda/mixins/playSound.js b/LA24030_LuLiPackageLine_Pda/mixins/playSound.js new file mode 100644 index 0000000..20e6149 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/mixins/playSound.js @@ -0,0 +1,31 @@ + + export default { + methods:{ + //璇煶鎾姤 + playSound() { + let _this = this + const innerAudioContext = uni.createInnerAudioContext(); + innerAudioContext.autoplay = true; + innerAudioContext.src = '../../static/13716.wav'; + innerAudioContext.onError((res) => { + //濡傛灉闊抽娌℃湁姝e父鎾斁 + console.log(res.errCode); + }) + innerAudioContext.onStop((res) => { + _this.playing = false + + _this.$forceUpdate() + }) + //闇囧姩 + uni.vibrateLong({ + success: function () { + console.log('success'); + }, + complete:function(){ + + } + }); + }, + } + } + diff --git a/LA24030_LuLiPackageLine_Pda/mixins/printBanma.js b/LA24030_LuLiPackageLine_Pda/mixins/printBanma.js new file mode 100644 index 0000000..0a69cde --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/mixins/printBanma.js @@ -0,0 +1,128 @@ +// 鏂戦┈鎵撳嵃 甯﹁澶� 宸ュ簭 DO鐨勬爣璐� +import {addBanmaRecord,addBanmaRecordArr} from '@/api/print.js' + export default { + methods:{ + printBanma(reprintPram,typePrint){ + let reprint = '' + if(reprintPram){ + reprint = 'REPRINT' + } + if(!this.ermNum || Number(this.ermNum) <=0){ + uni.showToast({ + title: '鐗╂枡锛氳杈撳叆澶т簬0鐨勬暟閲�', + icon: 'none', + duration: 4000 + }); + return + } + if(!this.contLabel || Number(this.contLabel) <=0){ + uni.showToast({ + title: '鎵撳嵃寮犳暟锛氳杈撳叆澶т簬0鐨勬暟閲�', + icon: 'none', + duration: 4000 + }); + return + } + // 鏁扮粍鍙湁涓�涓璞� + // this.materlist = this.arrPt[0] + uni.showLoading({ + mask: true, + title: "姝e湪杩炴帴..." + }) + // 閽堝鎺ュ彛杩斿洖涓嶅悓鐨勫瓧娈靛悕绉拌繘琛屽垽鏂� + if(this.materlist.wareMaterialCode == undefined){ + this.materlist.wareMaterialCode = this.materlist.code || this.materlist.warematerialCode || this.materlist.materialCode ||'' + } + if(this.materlist.wareMaterialName == undefined){ + this.materlist.wareMaterialName = this.materlist.warematerialName || this.materlist.name || this.materlist.materialName ||'' + } + if(this.materlist.barNo==undefined){ + this.materlist.barNo = this.materlist.batchNo || this.materlist.itemBatchNo || '' + } + // this.materlist.supplier = this.materlist.basicSupplierInfoCode || this.materlist.supplier || '' + // this.materlist.supplierName = this.materlist.basicSupplierInfoName || this.materlist.supplierName || '' + this.materlist.code = this.materlist.wareMaterialCode + this.materlist.batchNo = this.materlist.barNo + this.materlist.Quantity = this.ermNum //鏁伴噺 + this.materlist.PrintSheetNum = this.contLabel //鎵撳嵃寮犳暟 + this.materlist.PurchaseEbelp = this.materlist.ebelp || this.materlist.lineNumber || '' //琛屽彿 + this.materlist.supplierNo = this.materlist.supplier || this.materlist.supplierNo || '' + this.materlist.name = this.materlist.wareMaterialName || '' + // 鎵撳嵃绫诲瀷 (1锛氱墿鏂欐爣绛� 2锛氬彂璐ф爣绛�(鐢熶骇璁㈠崟) 3锛氬彂璐ф爣绛�(DO鍗�)) + if(typePrint==2){ //椤甸潰锛氬彂璐� 鍙戣揣鏍囩琛ユ墦 + this.materlist.printType = 2; + //鍙戣揣鏍囩 - 璁惧 宸ュ簭 DO鍙� + }else if(typePrint==3){ //椤甸潰锛欴O鍗曞垎鎷� + this.materlist.printType = 3; + }else{ //椤甸潰锛� 鏀惰揣 鍒嗘嫞 鏍囩琛ユ墦 + this.materlist.printType = 1; + } + addBanmaRecord(this.materlist).then(res => { + uni.hideLoading(); + if (res.code == 200) { + uni.showToast({ + title: '鎵撳嵃鎴愬姛', + icon: 'success', + duration: 4000 + }); + } + }) + }, + // 鎵归噺澧炲姞鐗╂枡鏍囩鎵撳嵃鍘嗗彶琛� - 鍒嗘嫞 + printBanmaArr(reprintPram,typePrint,arrList){ + if(reprintPram){ + reprint = 'REPRINT' + } + + // 鏁扮粍鍙湁涓�涓璞� + // this.materlist = this.arrPt[0] + uni.showLoading({ + mask: true, + title: "姝e湪杩炴帴..." + }) + arrList.forEach(element => { + // 閽堝鎺ュ彛杩斿洖涓嶅悓鐨勫瓧娈靛悕绉拌繘琛屽垽鏂� + if(element.wareMaterialCode == undefined){ + element.wareMaterialCode = element.code || element.warematerialCode || element.materialCode ||'' + } + if(element.wareMaterialName == undefined){ + element.wareMaterialName = element.warematerialName || element.name || element.materialName ||'' + } + if(element.barNo==undefined){ + element.barNo = element.batchNo || element.itemBatchNo || '' + } + + element.code = element.wareMaterialCode + element.batchNo = element.barNo + // element.Quantity = element.quantity //鏁伴噺 + element.PrintSheetNum = 1 //鎵撳嵃寮犳暟 + element.PurchaseEbelp = element.ebelp || element.lineNumber || '' //琛屽彿 + this.materlist.supplierNo = this.materlist.supplier || this.materlist.supplierNo || '' + element.name = element.wareMaterialName || '' + + // 鎵撳嵃绫诲瀷 (1锛氱墿鏂欐爣绛� 2锛氬彂璐ф爣绛�(鐢熶骇璁㈠崟) 3锛氬彂璐ф爣绛�(DO鍗�)) + if(typePrint==2){ //椤甸潰锛氬彂璐� 鍙戣揣鏍囩琛ユ墦 + element.printType = 2; + //鍙戣揣鏍囩 - 璁惧 宸ュ簭 DO鍙� + }else if(typePrint==3){ //椤甸潰锛欴O鍗曞垎鎷� + element.printType = 3; + }else{ //椤甸潰锛� 鏀惰揣 鍒嗘嫞 鏍囩琛ユ墦 + element.printType = 1; + } + }); + + // 浼犲涓� + addBanmaRecordArr(arrList).then(res => { + uni.hideLoading(); + if (res.code == 200) { + uni.showToast({ + title: '鎵撳嵃鎴愬姛', + icon: 'none', + duration: 2000 + }); + } + }) + } + } + } + diff --git a/LA24030_LuLiPackageLine_Pda/mixins/printDoLabel.js b/LA24030_LuLiPackageLine_Pda/mixins/printDoLabel.js new file mode 100644 index 0000000..2dd802b --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/mixins/printDoLabel.js @@ -0,0 +1,154 @@ +// 甯︽満搴婂彿 宸ュ簭 DO鐨勬爣璐� +import BluePrint from '@/pages/print/bluePrint.js' +import {addPrintRecord} from '@/api/print.js' + + export default { + methods:{ + printComp(reprintPram){ + // 鏁扮粍鍙湁涓�涓璞� + this.materlist = this.arrPt[0] + console.log( this.materlist ) + uni.showLoading({ + mask: true, + title: "姝e湪杩炴帴..." + }) + // 閽堝鎺ュ彛杩斿洖涓嶅悓鐨勫瓧娈靛悕绉拌繘琛屽垽鏂� + if(this.materlist.wareMaterialCode == undefined){ + this.materlist.wareMaterialCode = this.materlist.code || this.materlist.warematerialCode || this.materlist.materialCode ||'' + } + if(this.materlist.wareMaterialName == undefined){ + this.materlist.wareMaterialName = this.materlist.warematerialName || this.materlist.name || this.materlist.materialName || '' + } + if(this.materlist.barNo==undefined){ + this.materlist.barNo = this.materlist.batchNo || '' + } + //鐗╂枡鍚嶇О鏄惁鎹㈣ + let name = this.materlist.wareMaterialName || '' + let name_1 = name.length > 38 ? name.substr(0, 38) : name + let name_2 = name.length > 38 ? name.substr(38) : '' + //渚涘簲鍟嗘槸鍚︽崲琛� + let desc = this.materlist.supplier || '' + let desc_1 = desc.length > 38 ? desc.substr(0, 38) : desc + let desc_2 = desc.length > 38 ? desc.substr(38) : '' + // this.warehouse.PurchaseNo + let ptintContext = [ + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + /* 浠ヤ笂绌烘暟鎹紝涓洪槻姝涪鍖呮椂鎵撳嵃涓嶆甯� */ + {type:'line',x1:3,y1:3,x2:570,y2: 3,width:2}, //涓婅竟绾� + {type:'line',x1:3,y1:3,x2:3,y2: 420,width:2},//宸﹁竟绾� + {type:'line',x1:3,y1:420,x2:570,y2: 420,width:2}, //鏈�涓嬭竟绾� + {type:'line',x1:560,y1:3,x2:560,y2:420,width:2}, //鍙宠竟绾� + {type:'text',x:10,y:34,text:`Part:`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:80,y:24,text:`${this.materlist.wareMaterialCode}`,size:4,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:80,x2:565,y2:80,width:2}, + {type:'text',x:10,y:90,text:`Descript:${name_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:10,y:115,text:`${name_2}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:150,x2:565,y2:150,width:2}, + {type:'text',x:10,y:170,text:`Vendor:${desc_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:10,y:175,text:`${desc_2}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:210,x2:565,y2:210,width:2}, + + {type:'text',x:10,y:225,text:`DO:${this.materlist.deliveryNo || ''}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + + {type:'line',x1:3,y1:260,x2:350,y2:260,width:2}, + + {type:'text',x:10,y:275,text:`Qty:${this.materlist.completeQuantity} ${this.materlist.unit == null ? '' : this.materlist.unit}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + + {type:'line',x1:3,y1:310,x2:350,y2:310,width:2}, + + {type:'text',x:10,y:325,text:`process:${this.materlist.process}/${this.materlist.equipment}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + + {type:'line',x1:3,y1:360,x2:350,y2:360,width:2}, + + {type:'text',x:10,y:380,text:`Batch:${this.materlist.batchNo || ''}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:350,y1:210,x2:350,y2:420,width:2}, + // {type:'qr',x:380,y:220,text:`PARTS NUMBER: ${this.materlist.wareMaterialCode},SAP: ${this.materlist.sap_Location || ''},LOT NO: ${this.materlist.barNo},QUANTITY: ${this.materlist.quantity}`,width:4,level:1}, + { type: 'qr', x: 380, y: 220, text: `PARTS NUMBER: ${this.materlist.wareMaterialCode},SAP: ${this.materlist.sap_Location || ''},LOT NO: ${this.materlist.batchNo || ''},ORDER NO: ${this.materlist.orderNo || ''},QUANTITY: ${this.materlist.completeQuantity}`, width: 4, level: 1 }, + + // {type:'text',x:405,y:390,text:`${reprint}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + + //鍙戣揣鏍囩涓嶆樉绀烘椂闂� 銆怑ditby shaocx,2023-05-11銆� + { type: 'text', x: 355, y: 390, text: `${this.getCurrentDate().date} ${this.getCurrentDate().time}`, size: 1, rotate: 0, bold: 1, underline: false, reverse: false } + // { type: 'text', x: 355, y: 390, text: ``, size: 2, rotate: 0, bold: 1, underline: false, reverse: false } + ] + console.log(ptintContext) + // addPrintRecord(this.addForm).then(res => { + BluePrint.print(this.$store,ptintContext).then(()=>{ + this.printHandle() + }).catch((err)=>{ + uni.hideLoading(); + uni.showToast({ + title:'鎵撳嵃澶辫触', + duration: 2000 + }) + }) + }, + printHandle() { + let routes = getCurrentPages(); // 鑾峰彇褰撳墠鎵撳紑杩囩殑椤甸潰璺敱鏁扮粍 + let curRoute = routes[routes.length - 1].route //鑾峰彇褰撳墠椤甸潰璺敱 + if (curRoute == 'pages/print/bluetoothConnection') {// 杩炴帴钃濈墮澶辫触 璺抽〉闈� + return + } + this.arrPt.splice(0, 1) + if (this.arrPt.length == 0) { + uni.hideLoading(); + uni.showToast({ + title: `鎵撳嵃瀹屾垚`, + duration: 2000 + }) + return + } + uni.showLoading({ + mask: true, + title: `鎵撳嵃鎴愬姛锛�${this.materlist.wareMaterialCode}` + }) + this.timer = setTimeout(() => {// 璁剧疆瀹氭椂鍣ㄧ殑浣滅敤锛氳繛鎺ヨ摑鐗欏け璐ヨ烦椤甸潰锛宩s杩愯鏈夋椂鏈夊欢杩燂紝閫犳垚璇诲彇褰撳墠椤甸潰璺敱閿欒 + clearTimeout(this.timer) + this.printComp() + // 娣诲姞鎵撳嵃璁板綍锛氬拰鎵撳嵃鍒嗗紑锛屼簰涓嶅共鎵� + this.addForm.code = this.materlist.wareMaterialCode; + this.addForm.name = this.materlist.wareMaterialName; + this.addForm.batchNo = this.materlist.batchNo; + console.log(this.addForm) + //杩欓噷涓嶅啀璁板綍鎵撳嵃璁板綍锛屽洜涓烘湁浜嗘枒椹墦鍗� 銆怑ditby shaocx,2023-05-22銆� + /* + addPrintRecord(this.addForm).then(res => { + if (res.code == 200) { + } else { + uni.hideLoading(); + // uni.showToast({ + // icon: 'none', + // title: '鎵撳嵃璁板綍瀛樺偍澶辫触', + // duration: 2000 + // }) + } + }) + //*/ + }, 10000) + }, + + //鑾峰彇print date print time + getCurrentDate() { + let date = new Date(); + let year = date.getFullYear(); //骞� + let month = date.getMonth() + 1; //鏈� + month = month >= 10 ? month : '0' + month; + let day = date.getDate(); //鏃� + day = day >= 10 ? day : '0' + day; + let hour = date.getHours() //鏃� + hour = hour >= 10 ? hour : '0' + hour; + let min = date.getMinutes(); //鍒� + min = min >= 10 ? min : '0' + min; + let second = date.getSeconds(); //绉� + second = second >= 10 ? second : '0' + second; + return { + date: `${day}.${month}.${year}`, + time: `${hour}:${min}:${second}`, + formate: `${year}/${month}/${day}` + } + }, + } + } + diff --git a/LA24030_LuLiPackageLine_Pda/mixins/printLabelSingle.js b/LA24030_LuLiPackageLine_Pda/mixins/printLabelSingle.js new file mode 100644 index 0000000..cbfc12f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/mixins/printLabelSingle.js @@ -0,0 +1,120 @@ +// 鎵撳嵃鍗曞紶 鍒嗘嫞 鍏ㄦ绉诲簱 绉诲簱 鎵嬪伐鍑哄叆搴� 鍑哄簱 瓒婂簱-闈炵敓浜ц鍗� 鍗曞彿闀垮害 1271007265 +import BluePrint from '@/pages/print/bluePrint.js' +import {addPrintRecord} from '@/api/print.js' + + export default { + methods:{ + // 鍙傛暟1 鏄惁閲嶅鎵撳嵃 鍙傛暟2 鎵撳嵃DO鏍囪创杩樻槸PO鏍囪创 + printComp(reprintPram,typeOrder){ + let reprint = ''; + let ptintContext =[]; + let str_order = '' + // 鏄惁閲嶅鎵撳嵃 + if(reprintPram){ + reprint = 'REPRINT' + } + + // 閽堝鎺ュ彛杩斿洖涓嶅悓鐨勫瓧娈靛悕绉拌繘琛屽垽鏂� + if(this.materlist.wareMaterialCode == undefined){ + this.materlist.wareMaterialCode = this.materlist.code || this.materlist.warematerialCode || this.materlist.materialCode ||'' + } + if(this.materlist.wareMaterialName == undefined){ + this.materlist.wareMaterialName = this.materlist.warematerialName || this.materlist.name || this.materlist.materialName || '' + } + if(this.materlist.barNo==undefined){ + this.materlist.barNo = this.materlist.batchNo || '' + } + if(this.materlist.sap_Location==undefined){ + this.materlist.sap_Location = this.materlist.saP_StorageLocation || '' + } + if(this.materlist.quantityLable== undefined){ + this.materlist.quantityLable = this.materlist.uncollectedQuantity || this.materlist.quantity ||'' + } + //PO鍗� 浜岀淮鐮佸甫鐗╂枡 DO:鍗曞彿 + var ewm = ""; + var ewmX = 390; + var ewmY = 250; + var ewmWidth = 6; + + // 鎵撳嵃PO鍗� 杩樻槸DO鍗� + if(typeOrder=='DO'){ //鍒嗘嫞鍗曢渶瑕佸姞琛屽彿 + str_order = `NO:${this.materlist.deliveryNo || ''}/${this.materlist.lineNumber || ''}` + ewm = `${this.materlist.deliveryNo || ''}`; + } + if(typeOrder=='PO'){ + ewmX = 380; + ewmY = 220; + ewmWidth = 4; + str_order = `PO:${this.materlist.purchaseNo || ''}/${this.materlist.ebelp || this.materlist.lineNumber || ''}` + ewm = `PARTS NUMBER: ${this.materlist.wareMaterialCode},SAP: ${this.materlist.sap_Location || ''},LOT NO: ${this.materlist.barNo || ''},QUANTITY: ${this.materlist.quantityLable}`; + } + uni.showLoading({ + mask: true, + title: "姝e湪杩炴帴..." + }) + //鐗╂枡鍚嶇О鏄惁鎹㈣ + let name = this.materlist.wareMaterialName || '' + let name_1 = name.length > 38 ? name.substr(0, 38) : name + //渚涘簲鍟嗘槸鍚︽崲琛� + var s1 = "" + if(this.materlist.supplierName){ + s1 = this.materlist.supplierNo + this.materlist.supplierName + } + let desc = this.materlist.supplier || s1 || '' + let desc_1 = desc.length > 38 ? desc.substr(0, 38) : desc + let desc_2 = desc.length > 38 ? desc.substr(38) : '' + ptintContext = [ + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + /* 浠ヤ笂绌烘暟鎹紝涓洪槻姝涪鍖呮椂鎵撳嵃涓嶆甯� */ + {type:'line',x1:3,y1:3,x2:560,y2: 3,width:2}, //涓婅竟绾� + {type:'line',x1:3,y1:3,x2:3,y2: 420,width:2},//宸﹁竟绾� + {type:'line',x1:3,y1:420,x2:560,y2: 420,width:2}, //鏈�涓嬭竟绾� + {type:'line',x1:560,y1:3,x2:560,y2:420,width:2}, //鍙宠竟绾� + {type:'text',x:10,y:34,text:`Part:`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:80,y:24,text:`${this.materlist.wareMaterialCode}`,size:4,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:80,x2:560,y2:80,width:2}, + {type:'text',x:10,y:90,text:`Descript:${name_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:150,x2:560,y2:150,width:2}, + {type:'text',x:10,y:170,text:`Vendor:${desc_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:10,y:175,text:`${desc_2}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:210,x2:560,y2:210,width:2}, + {type:'text',x:10,y:225,text:`${str_order}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:260,x2:350,y2:260,width:2}, + {type:'text',x:10,y:275,text:`Qty:${this.materlist.quantityLable}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:310,x2:350,y2:310,width:2}, + {type:'text',x:10,y:325,text:`Batch:${this.materlist.barNo}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:360,x2:350,y2:360,width:2}, + {type:'text',x:10,y:380,text:`Time:${this.getCurrentDate().date} ${this.getCurrentDate().time}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:350,y1:210,x2:350,y2:420,width:2}, + {type:'qr',x:ewmX,y:ewmY,text:`${ewm}`,width:ewmWidth,level:1}, + {type:'text',x:405,y:390,text:`${reprint}`,size:2,rotate:0,bold:1,underline:false,reverse:false} + ] + console.log(ptintContext) + // addPrintRecord(this.addForm).then(res => { + BluePrint.print(this.$store,ptintContext).then(()=>{ + let routes = getCurrentPages(); // 鑾峰彇褰撳墠鎵撳紑杩囩殑椤甸潰璺敱鏁扮粍 + let curRoute = routes[routes.length - 1].route //鑾峰彇褰撳墠椤甸潰璺敱 + console.log(curRoute) + if (curRoute == 'pages/print/bluetoothConnection') {// 杩炴帴钃濈墮澶辫触 璺抽〉闈� + return + } + uni.showToast({ + title:'鎵撳嵃鎴愬姛', + duration:2000 + }) + this.addForm.code = this.materlist.wareMaterialCode; + this.addForm.name = this.materlist.wareMaterialName; + this.addForm.batchNo = this.materlist.batchNo; + this.addForm.specificationModel = this.materlist.specificationModel; + }).catch((err)=>{ + // uni.showToast({ + // title:'鎵撳嵃澶辫触', + // duration: 2000 + // }) + }) + } + } + } + diff --git a/LA24030_LuLiPackageLine_Pda/mixins/printPoLabel.js b/LA24030_LuLiPackageLine_Pda/mixins/printPoLabel.js new file mode 100644 index 0000000..8b7f0bd --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/mixins/printPoLabel.js @@ -0,0 +1,126 @@ +// 澶氬紶杩炵画鎵撳嵃 +import BluePrint from '@/pages/print/bluePrint.js' +import {addPrintRecord} from '@/api/print.js' + + export default { + methods:{ + printComp(reprintPram){ + let reprint = '' + let ptintContext =[]; + // 鏄惁閲嶅鎵撳嵃 + if(reprintPram){ + reprint = 'REPRINT' + } + uni.showLoading({ + mask: true, + title: "姝e湪杩炴帴..." + }) + // 閽堝鎺ュ彛杩斿洖涓嶅悓鐨勫瓧娈靛悕绉拌繘琛屽垽鏂� + if(this.materlist.wareMaterialCode == undefined){ + this.materlist.wareMaterialCode = this.materlist.code || this.materlist.warematerialCode ||'' + } + if(this.materlist.wareMaterialName == undefined){ + this.materlist.wareMaterialName = this.materlist.warematerialName || this.materlist.name || '' + } + if(this.materlist.barNo==undefined){ + this.materlist.barNo = this.materlist.batchNo || this.materlist.itemBatchNo || '' + } + //鐗╂枡鍚嶇О鏄惁鎹㈣ + let name = this.materlist.wareMaterialName || '' + let name_1 = name.length > 38 ? name.substr(0, 38) : name + let name_2 = name.length > 38 ? name.substr(38) : '' + //渚涘簲鍟嗘槸鍚︽崲琛� + let desc = this.materlist.supplier || '' + let desc_1 = desc.length > 38 ? desc.substr(0, 38) : desc + let desc_2 = desc.length > 38 ? desc.substr(38) : '' + // this.warehouse.PurchaseNo + ptintContext = [ + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + /* 浠ヤ笂绌烘暟鎹紝涓洪槻姝涪鍖呮椂鎵撳嵃涓嶆甯� */ + {type:'line',x1:3,y1:3,x2:560,y2: 3,width:2}, //涓婅竟绾� + {type:'line',x1:3,y1:3,x2:3,y2: 420,width:2},//宸﹁竟绾� + {type:'line',x1:3,y1:420,x2:560,y2: 420,width:2}, //鏈�涓嬭竟绾� + {type:'line',x1:560,y1:3,x2:560,y2:420,width:2}, //鍙宠竟绾� + {type:'text',x:10,y:34,text:`Part:`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:80,y:24,text:`${this.materlist.wareMaterialCode}`,size:4,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:80,x2:560,y2:80,width:2}, + {type:'text',x:10,y:90,text:`Descript:${name_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:10,y:115,text:`${name_2}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:150,x2:560,y2:150,width:2}, + {type:'text',x:10,y:170,text:`Vendor:${desc_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:10,y:175,text:`${desc_2}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:210,x2:560,y2:210,width:2}, + + {type:'text',x:10,y:225,text:`PO:${this.materlist.purchaseNo || ''}/${this.materlist.ebelp || ''}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + + {type:'line',x1:3,y1:260,x2:350,y2:260,width:2}, + + {type:'text',x:10,y:275,text:`Qty:${this.ermNum} ${this.materlist.unit == null ? '' : this.materlist.unit}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + + {type:'line',x1:3,y1:310,x2:350,y2:310,width:2}, + + {type:'text',x:10,y:325,text:`Batch:${this.materlist.barNo}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + // {type:'text',x:155,y:323,text:``,size:3,rotate:0,bold:1,underline:false,reverse:false}, + + {type:'line',x1:3,y1:360,x2:350,y2:360,width:2}, + + {type:'text',x:10,y:380,text:`Time:${this.getCurrentDate().date} ${this.getCurrentDate().time}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + // {type:'text',x:155,y:378,text:`${this.getCurrentDate().time}`,size:3,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:350,y1:210,x2:350,y2:420,width:2}, + {type:'qr',x:380,y:220,text:`PARTS NUMBER: ${this.materlist.wareMaterialCode},SAP: ${this.materlist.sap_Location || ''},LOT NO: ${this.materlist.barNo},QUANTITY: ${this.ermNum}`,width:4,level:1}, + {type:'text',x:405,y:390,text:`${reprint}`,size:2,rotate:0,bold:1,underline:false,reverse:false} + ] + console.log(ptintContext) + // addPrintRecord(this.addForm).then(res => { + BluePrint.print(this.$store,ptintContext).then(()=>{ + let routes = getCurrentPages(); // 鑾峰彇褰撳墠鎵撳紑杩囩殑椤甸潰璺敱鏁扮粍 + let curRoute = routes[routes.length - 1].route //鑾峰彇褰撳墠椤甸潰璺敱 + if (curRoute == 'pages/print/bluetoothConnection') {// 杩炴帴钃濈墮澶辫触 璺抽〉闈� + return + } + this.contLabel-- + if (this.contLabel <= 0) { + uni.hideLoading(); + uni.showToast({ + title: `鎵撳嵃瀹屾垚`, + duration: 2000 + }) + this.contLabel = 1 + return + } + + uni.showLoading({ + mask: true, + title: `鎵撳嵃涓紝鍓╀綑锛�${this.contLabel}` + }) + + this.timer = setTimeout(() => { //闂撮殧5绉� 鍑忓皯鎵撳嵃涓㈠け + clearTimeout(this.timer) + this.timer = null + this.printComp(reprintPram) + // 娣诲姞鎵撳嵃璁板綍 + this.addForm.code = this.materlist.wareMaterialCode; + this.addForm.name = this.materlist.name; + this.addForm.batchNo = this.materlist.barNo ; + this.addForm.specificationModel = this.materlist.specificationModel; + //杩欓噷涓嶅啀璁板綍鎵撳嵃璁板綍锛屽洜涓烘湁浜嗘枒椹墦鍗� 銆怑ditby shaocx,2023-05-22銆� + /* + addPrintRecord(this.addForm).then(res => { + console.log(res); + }) + //*/ + + }, 10000) + + }).catch((err)=>{ + uni.showToast({ + title:'鎵撳嵃澶辫触', + duration: 2000 + }) + }) + } + } + } + diff --git a/LA24030_LuLiPackageLine_Pda/mixins/printShengChanLabel.js b/LA24030_LuLiPackageLine_Pda/mixins/printShengChanLabel.js new file mode 100644 index 0000000..7281831 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/mixins/printShengChanLabel.js @@ -0,0 +1,121 @@ +// 鐢熶骇搴撳彇璐ф爣绛� 瓒婂簱鐢熶骇璁㈠崟鎵撳嵃 +import BluePrint from '@/pages/print/bluePrint.js' +import {addPrintRecord} from '@/api/print.js' + + export default { + methods:{ + printShengChanComp(reprintPram){ + // 鏁扮粍鍙湁涓�涓璞� + this.materlist = this.arrPt[0] + + uni.showLoading({ + mask: true, + title: "姝e湪杩炴帴..." + }) + + if(this.materlist.code==undefined){ + this.materlist.code = this.materlist.wareMaterialCode || "" + } + if(this.materlist.name == undefined){ + this.materlist.name = this.materlist.wareMaterialName || "" + } + //鐗╂枡鍚嶇О鏄惁鎹㈣ + let name = this.materlist.name || ''; + let name_1 = name.length > 38 ? name.substr(0, 38) : name; + + let ptintContext = [ + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + /* 浠ヤ笂绌烘暟鎹紝涓洪槻姝涪鍖呮椂鎵撳嵃涓嶆甯� */ + {type:'line',x1:3,y1:3,x2:560,y2: 3,width:2}, //涓婅竟绾� + {type:'line',x1:3,y1:3,x2:3,y2: 420,width:2},//宸﹁竟绾� + {type:'line',x1:3,y1:420,x2:560,y2: 420,width:2}, //鏈�涓嬭竟绾� + {type:'line',x1:560,y1:3,x2:560,y2:420,width:2}, //鍙宠竟绾� + {type:'text',x:10,y:34,text:`Part:`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:80,y:24,text:`${this.materlist.code}`,size:4,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:80,x2:560,y2:80,width:2}, + {type:'text',x:10,y:90,text:`Descript:${name_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:150,x2:560,y2:150,width:2}, + {type:'text',x:10,y:170,text:`Collective Order:${this.materlist.subOrderNo || ''}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:210,x2:560,y2:210,width:2}, + + {type:'text',x:10,y:225,text:`BOM No.:${this.materlist.bomNumber || ''}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + + {type:'line',x1:3,y1:260,x2:350,y2:260,width:2}, + + {type:'text',x:10,y:275,text:`Qty:${this.materlist.quantity} ${this.materlist.unit == null ? '' : this.materlist.unit}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + + {type:'line',x1:3,y1:310,x2:350,y2:310,width:2}, + + {type:'text',x:10,y:325,text:`Batch:${this.materlist.batchNo || ''}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + + {type:'line',x1:3,y1:360,x2:350,y2:360,width:2}, + + {type:'text',x:10,y:380,text:`Stage:${this.materlist.process} Machine:${this.materlist.equipment}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:350,y1:210,x2:350,y2:420,width:2}, + { type: 'qr', x: 390, y: 240, text: `${this.materlist.subOrderNo || ''}`, width: 6, level: 1 }, + { type: 'text', x: 380, y: 388, text: `${this.getCurrentDate().date} ${this.getCurrentDate().time}`, size: 1, rotate: 0, bold: 1, underline: false, reverse: false } + ] + console.log(ptintContext) + // addPrintRecord(this.addForm).then(res => { + BluePrint.print(this.$store,ptintContext).then(()=>{ + this.printHandle() + }).catch((err)=>{ + uni.hideLoading(); + uni.showToast({ + title:'鎵撳嵃澶辫触', + duration: 2000 + }) + }) + }, + printHandle() { + let routes = getCurrentPages(); // 鑾峰彇褰撳墠鎵撳紑杩囩殑椤甸潰璺敱鏁扮粍 + let curRoute = routes[routes.length - 1].route //鑾峰彇褰撳墠椤甸潰璺敱 + if (curRoute == 'pages/print/bluetoothConnection') {// 杩炴帴钃濈墮澶辫触 璺抽〉闈� + return + } + this.arrPt.splice(0, 1) + if (this.arrPt.length == 0) { + uni.hideLoading(); + uni.showToast({ + title: `鎵撳嵃瀹屾垚`, + duration: 2000 + }) + return + } + uni.showLoading({ + mask: true, + title: `鎵撳嵃鎴愬姛锛�${this.materlist.code}` + }) + this.timer = setTimeout(() => {// 璁剧疆瀹氭椂鍣ㄧ殑浣滅敤锛氳繛鎺ヨ摑鐗欏け璐ヨ烦椤甸潰锛宩s杩愯鏈夋椂鏈夊欢杩燂紝閫犳垚璇诲彇褰撳墠椤甸潰璺敱閿欒 + this.timer = null + clearTimeout(this.timer) + uni.hideLoading(); + this.printShengChanComp() + }, 10000) + }, + + //鑾峰彇print date print time + getCurrentDate() { + let date = new Date(); + let year = date.getFullYear(); //骞� + let month = date.getMonth() + 1; //鏈� + month = month >= 10 ? month : '0' + month; + let day = date.getDate(); //鏃� + day = day >= 10 ? day : '0' + day; + let hour = date.getHours() //鏃� + hour = hour >= 10 ? hour : '0' + hour; + let min = date.getMinutes(); //鍒� + min = min >= 10 ? min : '0' + min; + let second = date.getSeconds(); //绉� + second = second >= 10 ? second : '0' + second; + return { + date: `${day}.${month}.${year}`, + time: `${hour}:${min}:${second}`, + formate: `${year}/${month}/${day}` + } + }, + } + } + diff --git a/LA24030_LuLiPackageLine_Pda/mixins/sortBlue.js b/LA24030_LuLiPackageLine_Pda/mixins/sortBlue.js new file mode 100644 index 0000000..d1a0735 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/mixins/sortBlue.js @@ -0,0 +1,463 @@ +import printerUtil from '@/components/print/printerutil.js' +const PrinterJobs = require('@/components/print/printerjobs.js') +import { + getDate +} from '@/utils/dateTime.js' +export default { + data() { + return { + list: [], + deviceId: '', + serviceId: '', + characteristics: [], + characteristicId: '', + deviceslist: [] + } + }, + onShow() { + this.list = [] + this.deviceslist = [] + + }, + methods: { + //鍒濆鍖栬摑鐗欒澶� + openBluetoothAdapter() { + let _this = this + uni.openBluetoothAdapter({ + success: (res) => { //宸叉墦寮� + uni.getBluetoothAdapterState({ //钃濈墮鐨勫尮閰嶇姸鎬� + success: (res1) => { + console.log(res1, '鏈満璁惧鐨勮摑鐗欏凡鎵撳紑') + // 寮�濮嬫悳绱㈣摑鐗欒澶� + + _this.startBluetoothDeviceDiscovery() + uni.setStorageSync('blueShow', true) + }, + fail(error) { + uni.showToast({ + icon: 'none', + title: '鏌ョ湅鎵嬫満钃濈墮鏄惁鎵撳紑err' + }); + } + }); + + }, + fail: err => { //鏈墦寮� + uni.setStorageSync('blueShow', false) + uni.showToast({ + icon: 'none', + title: '鏌ョ湅鎵嬫満钃濈墮鏄惁鎵撳紑' + }); + } + }) + }, + // 寮�濮嬫悳绱㈣摑鐗欒澶� + startBluetoothDeviceDiscovery() { + uni.startBluetoothDevicesDiscovery({ + success: (res) => { + // 鍙戠幇澶栧洿璁惧 + uni.showLoading({ + title: '鍔犺浇涓�', + mask: true + }); + this.onBluetoothDeviceFound() + }, + fail: err => { + console.log(err, '閿欒淇℃伅') + } + }) + }, + // 鍙戠幇澶栧洿璁惧 + onBluetoothDeviceFound() { + uni.onBluetoothDeviceFound((res) => { + this.deviceslist.length > 0 ? uni.hideLoading() : '' + if (this.deviceslist.indexOf(res.devices[0].deviceId) == -1) { + this.deviceslist.push(res.devices[0].deviceId) + if (res.devices[0].name != "") { + uni.hideLoading(); + this.list.push({ + name: res.devices[0].name, + deviceId: res.devices[0].deviceId + }) + } + } + }) + }, + //鑾峰彇鍦ㄨ摑鐗欐ā鍧楃敓鏁堟湡闂存墍鏈夊凡鍙戠幇鐨勮摑鐗欒澶囥�傚寘鎷凡缁忓拰鏈満澶勪簬杩炴帴鐘舵�佺殑璁惧銆� + getBluetoothDevices() { + console.log("鑾峰彇钃濈墮璁惧"); + uni.getBluetoothDevices({ + success: res => { + console.log('鑾峰彇钃濈墮璁惧鎴愬姛:'); + console.log(res.devices); + } + }); + }, + //閫夋嫨璁惧杩炴帴鍚eviceId浼犺繘鏉� + createBLEConnection(deviceId) { + //data閲岄潰寤虹珛涓�涓猟eviceId锛屽瓨鍌ㄨ捣鏉� + let _this = this + uni.showLoading({ + title: '杩炴帴钃濈墮涓�...', + mask: true + }); + this.stopBluetoothDevicesDiscovery() + + this.deviceId = deviceId, + //杩炴帴钃濈墮 + uni.createBLEConnection({ + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: deviceId, + success(res) { + uni.hideLoading(); + uni.showToast({ + icon: 'none', + title: '钃濈墮杩炴帴鎴愬姛' + }); + uni.setStorageSync("deviceId", deviceId) //鎶婂凡缁忚繛鎺ョ殑钃濈墮璁惧淇℃伅鏀惧叆缂撳瓨 + + setTimeout(() => { + _this.getBLEDeviceServices(deviceId) + }, 1000) + + }, + fail(res) { + uni.showToast({ + icon: 'none', + title: '钃濈墮杩炴帴澶辫触' + }); + } + }) + }, + // 鍋滄鎼滃钃濈墮璁惧 + stopBluetoothDevicesDiscovery() { + uni.stopBluetoothDevicesDiscovery({ + success: e => { + this.loading = false + console.log('鍋滄鎼滅储钃濈墮璁惧:' + e.errMsg); + }, + fail: e => { + console.log('鍋滄鎼滅储钃濈墮璁惧澶辫触锛岄敊璇爜锛�' + e.errCode); + } + }); + }, + //鑾峰彇钃濈墮鐗瑰緛 + getBLEDeviceCharacteristics(deviceId, serviceId) { + console.log("杩涘叆鐗瑰緛"); + setTimeout(() => { + uni.getBLEDeviceCharacteristics({ + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: deviceId, + // 杩欓噷鐨� serviceId 闇�瑕佸湪 getBLEDeviceServices 鎺ュ彛涓幏鍙� + serviceId: serviceId, + success: (res) => { + console.log(res, '鐗瑰緛getBLEDeviceCharacteristics') + this.characteristics = res.characteristics + + res.characteristics.forEach((item) => { + if (item.uuid.indexOf("FF02") != -1) { + this.characteristicId = item.uuid + uni.setStorageSync("characteristicId", item + .uuid) //鎶婂凡缁忚繛鎺ョ殑钃濈墮璁惧鏍囪瘑鏀惧叆缂撳瓨 + uni.setStorageSync("serviceId", + serviceId) //鎶婂凡缁忚繛鎺ョ殑钃濈墮璁惧ID鏀惧叆缂撳瓨 + //console.log('characteristicId:', item.uuid) + //鍒╃敤浼犲弬鐨勫舰鍔夸紶缁欎笅闈㈢殑notify锛岃繖閲岀殑uuid濡傛灉閮介渶瑕佺敤鍒帮紝灏变笉鐢ㄥ仛鍒ゆ柇浜嗭紝寤鸿浣跨敤setTimeout杩涜闂撮殧鎬х殑璋冪敤姝ゆ柟娉� + // this.notifyBLECharacteristicValueChange(item.uuid) + + setTimeout(() => { + uni.hideLoading(); + this.BottomShow = false + this.DrawerModalL = false + }, 1000) + } + }) + }, + fail: (res) => { + console.log(res) + } + }) + }, 1000) + }, + // 鍚敤 notify 鍔熻兘 + notifyBLECharacteristicValueChange(characteristicId) { + let _this = this + console.log('deviceId' + _this.deviceId) + console.log('serviceId' + _this.serviceId) + console.log('characteristicId' + characteristicId) + // _this.fanhui() + uni.notifyBLECharacteristicValueChange({ + state: true, // 鍚敤 notify 鍔熻兘 + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: this.deviceId, + // 杩欓噷鐨� serviceId 闇�瑕佸湪 getBLEDeviceServices 鎺ュ彛涓幏鍙� + serviceId: this.serviceId, + // 杩欓噷鐨� characteristicId 闇�瑕佸湪 getBLEDeviceCharacteristics 鎺ュ彛涓幏鍙� + characteristicId: characteristicId, + success: (res) => { + if (this.blueFlag == true) { + this.writeBLECharacteristicValue() + } else { + uni.showLoading({ + title: '钃濈墮鏈嶅姟鑾峰彇鎴愬姛锛岃鎵撳嵃', + mask: true, + }); + } + + setTimeout(() => { + uni.hideLoading(); + }, 1000) + // _this.fanhui() + this.print = "鎵撳嵃" + this.BottomShow = false + + console.log('notifyBLECharacteristicValueChange success', res.errMsg) + }, + fail: (res) => { + uni.showLoading({ + title: '钃濈墮鏈嶅姟鑾峰彇鎴愬姛锛岃鎵撳嵃', + mask: true, + }); + setTimeout(() => { + uni.hideLoading(); + }, 1000) + _this.print = "鎵撳嵃" + _this.BottomShow = false + + // _this.fanhui() + console.log('notifyBLECharacteristicValueChange fail', res.errMsg) + } + }) + }, + //鑾峰彇钃濈墮鐨勬墍鏈夋湇鍔� + getBLEDeviceServices(deviceId) { + uni.showLoading({ + title: '姝e湪鑾峰彇钃濈墮鏈嶅姟...', + mask: true, + }); + setTimeout(() => { + uni.getBLEDeviceServices({ + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: deviceId, + success: (res) => { + uni.showLoading({ + title: '鑾峰彇涓紝璇风◢鍚�...', + mask: true, + }); + res.services.forEach((item) => { + if (item.uuid.indexOf("FF00") != -1) { + this.serviceId = item.uuid; + //鑾峰彇鐗瑰緛 + this.getBLEDeviceCharacteristics(deviceId, item.uuid) + } + }) + } + }) + }, 1000) + }, + //鍐欏叆钃濈墮 + writeBLECharacteristicValue() { + this.printflag = false + let deviceId = uni.getStorageSync('deviceId') + let serviceId = uni.getStorageSync('serviceId') + let characteristicId = uni.getStorageSync('characteristicId') + const printerJobs = new PrinterJobs(); + console.log(this.arr) + this.arr.forEach(item => { + if(item.business_order_type==null){ + printerJobs + .label_set_page(576, 400) + //杈规 + .drawLine(1, 0, 0, 570, 0) + .drawLine(1, 0, 0, 0, 360) + .drawLine(1, 570, 0, 570, 360) + .drawLine(1, 0, 360, 570, 360) + + //鍐呴儴妯嚎 + .drawLine(1, 0, 94, 570, 94) //绗竴琛� + .drawLine(1, 0, 160, 570, 160) //绗簩琛� + .drawLine(1, 0, 227, 570, 227) //绗笁琛� + .drawLine(1, 0, 293, 400, 293) //绗洓琛� + + .drawLine(1, 120, 94, 120, 360) // 绗竴鏍圭珫绾� + + .drawLine(1, 400, 227, 400, 360) // 绗簩鏍圭珫绾� + // 1 鍘熷 鏄惁绮椾綋\瀛椾綋澶у皬\鏄惁鏃嬭浆瑙掑害\璧峰妯潗鏍嘰璧峰绾靛潗鏍嘰瀛楃涓� + + .drawText(170, 20, "閲嶅簡闈掑北宸ヤ笟鏈夐檺璐d换鍏徃", 26, 0, 1, false, false) + .drawText(240, 62, '鐗╂枡鏍囪瘑绛�', 26, 0, 1, false, false) + + // 3 + .drawText(10, 120, "鐗╂枡缂栧彿", 24, 0, 0, false, false) + .drawText(130, 120, item.material_code, 24, 0, 0, false, false) + + // 4 + .drawText(10, 185, "鐗╂枡鍚嶇О", 24, 0, 0, false, false) + .drawText(130, 185, item.material_name, 24, 0, 0, false, false) + + // 5 + .drawText(10, 248, "鐗╂枡鎵规", 24, 0, 0, false, false) + .drawText(130, 248, item.lots_sn, 24, 0, 0, false, false) + + // 7 + .drawText(10, 312, "鎵撳嵃鏃堕棿", 24, 0, 0, false, false) + .drawText(130, 312, item.material_actual_num, 24, 0, 0, false, false) + // 浜岀淮鐮� + .drawQrCode(438, 232, item.material_code, 0, 4, 1) + .drawText(423, 340, item.material_name, 1, 0, 0, false, false) + .label_print(0, 1); + }else{ + printerJobs + .label_set_page(576, 400) + //杈规 + .drawLine(1, 0, 0, 570, 0) + .drawLine(1, 0, 0, 0, 360) + .drawLine(1, 570, 0, 570, 360) + .drawLine(1, 0, 360, 570, 360) + + //鍐呴儴妯嚎 + .drawLine(1, 0, 52, 570, 52) //绗竴琛� + .drawLine(1, 0, 104, 570, 104) //绗簩琛� + .drawLine(1, 0, 156, 570, 156) //绗笁琛� + .drawLine(1, 0, 208, 400, 208) //绗洓琛� + .drawLine(1, 0, 260, 400, 260) //绗簲琛� + .drawLine(1, 0, 312, 400, 312) //绗叚琛� + + .drawLine(1, 120, 0, 120, 360) // 绗竴鏍圭珫绾� + + .drawLine(1, 220, 260, 220, 312) // 绗簩鏍圭珫绾� + .drawLine(1, 300, 260, 300, 312) // 绗笁鏍圭珫绾� + + .drawLine(1, 400, 156, 400, 312,) // 绗洓鏍圭珫绾� + // 1 鍘熷 鏄惁绮椾綋\瀛椾綋澶у皬\鏄惁鏃嬭浆瑙掑害\璧峰妯潗鏍嘰璧峰绾靛潗鏍嘰瀛楃涓� + + .drawText(10, 20, "鐗╂枡缂栧彿", 24, 0, 0, false, false) + .drawText(130, 20, item.material_code, 24, 0, 0, false, false) + + // 2 + .drawText(10, 72, "鐗╂枡鍚嶇О", 24, 0, 0, false, false) + .drawText(130, 72, item.material_name, 24, 0, 0, false, false) + + // 3 + .drawText(10, 124, "鐗╂枡鎵规", 24, 0, 0, false, false) + .drawText(130, 124, item.lots_sn, 24, 0, 0, false, false) + + // 4 + .drawText(10, 176, "鍗曟嵁鍙�", 24, 0, 0, false, false) + .drawText(130, 176, item.business_order_no, 24, 0, 0, false, false) + + // 5 + .drawText(10, 225, "鍗曟嵁绫诲瀷", 24, 0, 0, false, false) + .drawText(130, 225, item.business_order_type, 24, 0, 0, false, false) + + // // 5-1 + // .drawText(230, 225, "宸ュ簭", 24, 0, 0, false, false) + // .drawText(310, 225, item.cellNo, 24, 0, 0, false, false) + + // 6 + .drawText(10, 280, "鍒嗘嫞鍓�", 24, 0, 0, false, false) + .drawText(130, 280, item.material_original_num, 24, 0, 0, false, false) + + // 6-1 + .drawText(230, 280, "鍒嗘嫞鍚�", 24, 0, 0, false, false) + .drawText(340, 280, item.material_actual_num, 24, 0, 0, false, false) + + // 7 + .drawText(10, 332, "鍒嗘嫞鏁伴噺", 24, 0, 0, false, false) + .drawText(130, 332, item.cTime, 24, 0, 0, false, false) + .drawText(440, 332, item.material_require_num, 24, 0, 0, false, false) + + // 浜岀淮鐮� + .drawQrCode(426, 170, item.material_code, 0, 6, 1) + .drawText(434, 310, item.material_name, 1, 0, 0, false, false) + .label_print(0, 1); + } + + }) + let buffer = printerJobs.buffer(); + // console.log('ArrayBuffer', 'length: ' + buffer.byteLength, ' hex: ' + ab2hex(buffer)); + // 1.骞惰璋冪敤澶氭浼氬瓨鍦ㄥ啓澶辫触鐨勫彲鑳芥�� + // 2.寤鸿姣忔鍐欏叆涓嶈秴杩�20瀛楄妭 + // 鍒嗗寘澶勭悊锛屽欢鏃惰皟鐢� + const maxChunk = 18; + const delay =20; + for (let i = 0, j = 0, length = buffer.byteLength; i < length; i += maxChunk, j++) { + let subPackage = buffer.slice(i, i + maxChunk <= length ? (i + maxChunk) : length); + // setTimeout(this._writeBLECharacteristicValue, j * delay, subPackage); + setTimeout(() => { + this._writeBLECharacteristicValue(deviceId, serviceId, characteristicId, subPackage) + }, j *delay); + } + + }, + _writeBLECharacteristicValue(deviceId, serviceId, characteristicId, buffer) { + uni.writeBLECharacteristicValue({ + deviceId: deviceId, + serviceId: serviceId, + characteristicId: characteristicId, + value: buffer, + success(res) { + console.log('writeBLECharacteristicValue success', res.errMsg) + }, + fail(res) { + console.log(JSON.stringify(res)) + console.log(JSON.stringify(buffer)) + uni.getStorageSync('failerr','try') + } + }) + }, + //闀挎寜浜嬩欢 + longpress(item, index) { + let _this = this + if (uni.getStorageSync('deviceId')) { + uni.showToast({ + title: '钃濈墮宸茶繛鎺ワ紒', + icon: 'none', + duration: 2000 + }) + return + } + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁杩炴帴钃濈墮:' + item.name, + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + // _this.stopBluetoothDevicesDiscovery() + uni.setStorageSync('itemblue', item.name) + this.itemblue = item.name + _this.createBLEConnection(item.deviceId) + + } else if (res.cancel) { + uni.showToast({ + title: '宸插彇娑堣繛鎺�', + duration: 2000, + icon: 'none' + }) + } + }) + }); + }, + // 鐐瑰嚮鏂紑钃濈墮杩炴帴 + tomy() { + var _this = this + + uni.closeBluetoothAdapter({ + success(res) { + uni.removeStorageSync('deviceId') + uni.removeStorageSync("serviceId"); + uni.removeStorageSync("characteristicId"); + // _this.openBluetoothAdapter() + } + }) + + }, + //杩斿洖 + fanhui() { + uni.navigateTo({ + url: './printing' + }) + }, + } +} diff --git a/LA24030_LuLiPackageLine_Pda/mock/callHistory.js b/LA24030_LuLiPackageLine_Pda/mock/callHistory.js new file mode 100644 index 0000000..a410780 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/mock/callHistory.js @@ -0,0 +1,63 @@ +const QryCallMaterial = { + "code": 0, + "msg": "鎵ц鎴愬姛", + "data": [{ + "time": "12:00", //浜х嚎缂栧彿 + "station_code": "OP15", //宸ヤ綅缂栧彿 + "call_status": "鏈搷搴�" // 鍛煎彨鐘舵��(1.鏈搷搴斻��2.宸插搷搴斻��3.宸插畬鎴�) + }, + { + "time": "12:12", //浜х嚎缂栧彿 + "station_code": "OP001", //宸ヤ綅缂栧彿 + "call_status": "宸插搷搴�" // 鍛煎彨鐘舵��(1.鏈搷搴斻��2.宸插搷搴斻��3.宸插畬鎴�) + } + ] +} +const substitution = { + "code": 0, + "msg": "鎵ц鎴愬姛", + "data": [{ + "wo": "wo0817002", //寰呭嚭搴撳伐鍗曞彿 + "stockOutMaterial": [ //寰呭嚭搴撶墿鏂� + { + "containerInstanceDetailId": "7db4f2c4-f539-586e-b733-39fe64c3b828", //鍑哄簱鐗╂枡(鍗冲緟鍙戝幓搴撳瓨涓櫄鎷熺洓鍏蜂腑鐨勭墿鏂�) + "material_code": "N001", //鐗╂枡缂栫爜 + "material_name": "娴嬭瘯1", //鐗╂枡鍚嶇О + "lots_sn": "LOTSN20210817003", //鎵规鏉$爜 + "wo_require_num": 999, //宸ュ崟闇�姹傛暟 (宸ュ崟闇�姹傜墿鏂欐暟閲�) + "no_online_num": 999, //鏈笂绾挎暟 + "stockOut_num": 25, //褰撳墠搴撳瓨鏁� + "edit":false + } + ] + }, + { + "wo": "wo0817003", + "stockOutMaterial": [{ + "containerInstanceDetailId": "fec28091-1478-e691-0252-39fe64c3b829", + "material_code": "N002", + "material_name": "娴嬭瘯2", + "lots_sn": "LOTSN20210817004", + "wo_require_num": 999, + "no_online_num": 999, + "stockOut_num": 14, + "edit":false + }, + { + "containerInstanceDetailId": "54cb0507-4003-b5bc-a0f0-39fe64dbb485", + "material_code": "N002", + "material_name": "娴嬭瘯2", + "lots_sn": "LOTSN20210817004", + "wo_require_num": 999, + "no_online_num": 999, + "stockOut_num": 14, + "edit":false + } + ] + } + ] +} +module.exports = { + QryCallMaterial, + substitution +} diff --git a/LA24030_LuLiPackageLine_Pda/mock/theCleaning.js b/LA24030_LuLiPackageLine_Pda/mock/theCleaning.js new file mode 100644 index 0000000..0bc74d9 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/mock/theCleaning.js @@ -0,0 +1,50 @@ +const QryNoCleanStockOutWO = { + "code": 0, + "msg": "鎵ц鎴愬姛", + "data": [{ + "wo": "wo0817002", //寰呭嚭搴撳伐鍗曞彿 + "stockOutMaterial": [ //寰呭嚭搴撶墿鏂� + { + "containerInstanceDetailId": "7db4f2c4-f539-586e-b733-39fe64c3b828", //鍑哄簱鐗╂枡(鍗冲緟鍙戝幓搴撳瓨涓櫄鎷熺洓鍏蜂腑鐨勭墿鏂�) + "material_code": "N001", //鐗╂枡缂栫爜 + "material_name": "娴嬭瘯1", //鐗╂枡鍚嶇О + "lots_sn": "LOTSN20210817003", //鎵规鏉$爜 + "wo_require_num": 999, //宸ュ崟闇�姹傛暟 (宸ュ崟闇�姹傜墿鏂欐暟閲�) + "no_online_num": 999, //鏈笂绾挎暟 + "stockOut_num": 25 //褰撳墠搴撳瓨鏁� + } + ] + }, + { + "wo": "wo0817003", + "stockOutMaterial": [{ + "containerInstanceDetailId": "fec28091-1478-e691-0252-39fe64c3b829", + "material_code": "N002", + "material_name": "娴嬭瘯2", + "lots_sn": "LOTSN20210817004", + "wo_require_num": 999, + "no_online_num": 999, + "stockOut_num": 14 + }, + { + "containerInstanceDetailId": "54cb0507-4003-b5bc-a0f0-39fe64dbb485", + "material_code": "N002", + "material_name": "娴嬭瘯2", + "lots_sn": "LOTSN20210817004", + "wo_require_num": 999, + "no_online_num": 999, + "stockOut_num": 14 + } + ] + } + ] +} +const NoCleanStockOut = { + "code": 0, + "msg": "鍑哄簱鎴愬姛...", + "data": null +} +module.exports = { + QryNoCleanStockOutWO, + NoCleanStockOut +} diff --git a/LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/android/libDevice_v1.7.8_2022-04-29.aar b/LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/android/libDevice_v1.7.8_2022-04-29.aar new file mode 100644 index 0000000..8975b13 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/android/libDevice_v1.7.8_2022-04-29.aar Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/android/libPrinter_v1.3.4_2023-06-26.aar b/LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/android/libPrinter_v1.3.4_2023-06-26.aar new file mode 100644 index 0000000..d215b68 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/android/libPrinter_v1.3.4_2023-06-26.aar Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/android/print-release.aar b/LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/android/print-release.aar new file mode 100644 index 0000000..f5c6f86 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/android/print-release.aar Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/package.json b/LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/package.json new file mode 100644 index 0000000..a579a3b --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/nativeplugins/PrintSDK/package.json @@ -0,0 +1,38 @@ +{ + "name": "SPD_PrintSDK_Uniapp", + "id": "PrintSDK", + "version": "2.1.0", + "description": "鎬濆繀鎷撴墦鍗版満鎻掍欢2.1", + "_dp_type":"nativeplugin", + "_dp_nativeplugin":{ + "android": { + "plugins": [ + { + "type": "module", + "name": "PrintSDK", + "class": "com.spd.print.PrintModule" + } + ], + "hooksClass": "com.spd.print.PrintModule_AppProxy", + "integrateType": "aar", + "dependencies": [ + + ], + "compileOptions": { + "sourceCompatibility": "1.8", + "targetCompatibility": "1.8" + }, + "abis": [ + "armeabi-v7a" + + ], + "minSdkVersion": "16", + "useAndroidX": false, + "permissions": [ + ], + "parameters": { + + } + } + } +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/package-lock.json b/LA24030_LuLiPackageLine_Pda/package-lock.json new file mode 100644 index 0000000..650f9bd --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/package-lock.json @@ -0,0 +1,231 @@ +{ + "name": "iWare_RawMaterialWarehouse_Pda", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "devDependencies": { + "qs": "^6.11.2", + "vuex": "^4.0.2" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.3.tgz", + "integrity": "sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==", + "dev": true + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/vuex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz", + "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", + "dev": true, + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + } + }, + "dependencies": { + "@vue/devtools-api": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.3.tgz", + "integrity": "sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "vuex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz", + "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", + "dev": true, + "requires": { + "@vue/devtools-api": "^6.0.0-beta.11" + } + } + } +} diff --git a/LA24030_LuLiPackageLine_Pda/package.json b/LA24030_LuLiPackageLine_Pda/package.json new file mode 100644 index 0000000..7d0177c --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/package.json @@ -0,0 +1,6 @@ +{ + "devDependencies": { + "qs": "^6.11.2", + "vuex": "^4.0.2" + } +} diff --git a/LA24030_LuLiPackageLine_Pda/pages.json b/LA24030_LuLiPackageLine_Pda/pages.json new file mode 100644 index 0000000..21a85c8 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages.json @@ -0,0 +1,558 @@ +{ + "easycom": { + "^u-(.*)": "uview-ui/components/u-$1/u-$1.vue" + }, + "pages": [ //pages鏁扮粍涓涓�椤硅〃绀哄簲鐢ㄥ惎鍔ㄩ〉锛屽弬鑰冿細https://uniapp.dcloud.io/collocation/pages + { + "path": "pages/login/login", + "style": { + "navigationBarTitleText": "鐧诲綍椤�", + "enablePullDownRefresh": false + } + + }, + { + "path": "pages/index/index", + "style": { + "navigationBarTitleText": "棣栭〉", + "enablePullDownRefresh": false + } + + }, + { + "path": "pages/print/bluetoothConnection", + "style": { + "navigationBarTitleText": "钃濈墮杩炴帴", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/print/materialInfo", + "style": { + "navigationBarTitleText": "鏃犲崟鏍囩鎵撳嵃", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/print/material", + "style": { + "navigationBarTitleText": "鐗╂枡鎵撳嵃", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/print/deliver", + "style": { + "navigationBarTitleText": "鍙戣揣鎵撳嵃", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/print/gauge", + "style": { + "navigationBarTitleText": "宸ラ噺鍏锋爣绛�", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/untie/untie", + "style": { + "navigationBarTitleText": "鐗╂枡瑙g粦", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/putaway/putaway", + "style": { + "navigationBarTitleText": "涓婃灦", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/untie/untieForMove", + "style": { + "navigationBarTitleText": "绉诲簱", + "enablePullDownRefresh": false + } + + }, + { + "path": "pages/untie/checkAllMove", + "style": { + "navigationBarTitleText": "鍏ㄦ绉诲簱", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/untie/localBind", + "style": { + "navigationBarTitleText": "搴撲綅缁戝畾", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/untie/localUnBind", + "style": { + "navigationBarTitleText": "搴撲綅瑙g粦", + "enablePullDownRefresh": false + } + }, + + { + "path": "pages/crossDock/crossDock", + "style": { + "navigationBarTitleText": "瓒婂簱", + "enablePullDownRefresh": true, + "onReachBottomDistance": 20 + } + + },{ + "path": "pages/untie/outbound", + "style": { + "navigationBarTitleText": "鍑哄簱纭", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/artificial/artificial", + "style": { + "navigationBarTitleText": "鍏ュ簱", + "enablePullDownRefresh": false + } + },{ + "path": "pages/recommend/recommend", + "style": { + "navigationBarTitleText": "鎺ㄨ崘搴撲綅", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/putIn/putIn", + "style": { + "navigationBarTitleText": "鍏ュ簱鎿嶄綔", + "enablePullDownRefresh": false + } + }, + { + "path": "pages/callTray/callTray", + "style": { + "navigationBarTitleText": "瀹瑰櫒瑙g粦", + "enablePullDownRefresh": false + } + }, { + "path": "pages/putIn/material/material", + "style": { + "navigationBarTitleText": "鐐瑰埌鐐�", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/putIn/three/three", + "style": { + "navigationBarTitleText": "绔嬪簱鍏ュ簱", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/putIn/plane/plane", + "style": { + "navigationBarTitleText": "骞冲簱鍏ュ簱", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/hander/handerIn", + "style": { + "navigationBarTitleText": "鎵嬪伐鍏ュ簱", + "enablePullDownRefresh": false + } + + },{ + "path": "pages/hander/handerOut", + "style": { + "navigationBarTitleText": "鎵嬪伐鍑哄簱", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/unpack/unpack", + "style": { + "navigationBarTitleText": "鍑哄簱鎿嶄綔", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/unpack/plane/plane", + "style": { + "navigationBarTitleText": "骞冲簱鍑哄簱", + "enablePullDownRefresh": false + } + + }, + // { + // "path": "pages/unpack/material/material", + // "style": { + // "navigationBarTitleText": "鐗╂枡鍑哄簱", + // "enablePullDownRefresh": false + // } + + // }, + { + "path": "pages/takeMaterial/takeMaterial", + "style": { + "navigationBarTitleText": "鏀惰揣绠$悊", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/takeMaterial/order/order", + "style": { + "navigationBarTitleText": "鏀惰揣", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/takeMaterial/orderpiece/orderpiece", + "style": { + "navigationBarTitleText": "閫佽揣鍗曟敹璐�", + "enablePullDownRefresh": false + } + + },{ + "path": "pages/takeMaterial/orderpiece/orderpiecePo", + "style": { + "navigationBarTitleText": "po鏀惰揣", + "enablePullDownRefresh": false + } + + },{ + "path": "pages/takeMaterial/orderpiece/poYueku", + "style": { + "navigationBarTitleText": "po瓒婂簱", + "enablePullDownRefresh": false + } + + },{ + "path": "pages/takeMaterial/orderpiece/doYueku", + "style": { + "navigationBarTitleText": "do瓒婂簱", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/takeMaterial/noOrder/noOrder", + "style": { + "navigationBarTitleText": "闈炶鍗曚欢鏀惰揣", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/takeMaterial/former/former", + "style": { + "navigationBarTitleText": "鏃т欢鏀惰揣", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/takeMaterial/return/return", + "style": { + "navigationBarTitleText": "閫�璐т欢鏀惰揣", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/takeMaterial/give/give", + "style": { + "navigationBarTitleText": "褰掕繕浠舵敹璐�", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/sort/sort", + "style": { + "navigationBarTitleText": "鍒嗘嫞", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/sort/sort2", + "style": { + "navigationBarTitleText": "鍒嗘嫞PO", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/check/return", + "style": { + "navigationBarTitleText": "瀹瑰櫒鍥炲簱", + "enablePullDownRefresh": false + } + + }, { + "path": "pages/check/out", + "style": { + "navigationBarTitleText": "鐩樼偣鍑哄簱", + "enablePullDownRefresh": true + } + + }, { + "path": "pages/check/check/index", + "style": { + "navigationBarTitleText": "鐩樼偣", + "enablePullDownRefresh": true, + "onReachBottomDistance": 50 + } + + }, { + "path": "pages/check/check/check", + "style": { + "navigationBarTitleText": "鐩樼偣", + "enablePullDownRefresh": false + } + + }, + { + "path": "pages/wareTool/borrow", + "style": { + "navigationBarTitleText": "宸ラ噺鍏峰�熺敤", + "enablePullDownRefresh": false + } + + }, + { + "path": "pages/wareTool/index", + "style": { + "navigationBarTitleText": "宸ラ噺鍏峰綊杩�", + "enablePullDownRefresh": false + } + + }, + { + "path": "pages/receive/receive", + "style": { + "navigationBarTitleText": "棰嗙敤鍗曟媿鐓�", + "enablePullDownRefresh": false + } + + }, + { + "path": "pages/borrow/borrow", + "style": { + "navigationBarTitleText": "鍊熺敤褰掕繕", + "enablePullDownRefresh": false + } + + }, + { + "path": "pages/scrap/scrap", + "style": { + "navigationBarTitleText": "鎶ュ簾", + "enablePullDownRefresh": false + } + + }, + { + "path": "pages/scrap/photo", + "style": { + "navigationBarTitleText": "鎶ュ簾鎷嶇収", + "enablePullDownRefresh": false + } + + }, + { + "path": "pages/putIn/empty/empty", + "style": { + "navigationBarTitleText": "绌烘墭鍏ュ簱", + "enablePullDownRefresh": false + } + + }, + { + "path": "pages/sort/return", + "style": { + "navigationBarTitleText": "鍥炲簱", + "enablePullDownRefresh": false + } + + }, + { + "path" : "pages/old/index", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + }, + { + "path" : "pages/old/putIn", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + }, + { + "path" : "pages/old/putOut", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + }, + { + "path": "node_modules/uview-ui/components/u-full-screen/u-full-screen", + "style": { + "navigationStyle": "custom", // 鍙栨秷鏈〉闈㈢殑瀵艰埅鏍� + "app-plus": { + "animationType": "fade-in", // 璁剧疆fade-in娣″叆鍔ㄧ敾锛屼负鏈�鍚堢悊鐨勫姩鐢荤被鍨� + "background": "transparent", // 鑳屾櫙閫忔槑 + "backgroundColor": "rgba(0,0,0,0)", // 鑳屾櫙閫忔槑 + "popGesture": "none" // 鍏抽棴IOS灞忓箷宸﹁竟婊戝姩鍏抽棴褰撳墠椤甸潰鐨勫姛鑳� + } + } + } + ,{ + "path" : "pages/sort/search", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "pages/mark/mark", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "pages/sort/index", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + },{ + "path" : "pages/sort/pickorder", + "style" : + { + "navigationBarTitleText": "瀹瑰櫒缁勭洏涓婃灦" + } + + } ,{ + "path" : "pages/sort/kittingSort", + "style" : + { + "navigationBarTitleText": "瀹瑰櫒涓嬫灦", + "enablePullDownRefresh": true, + "onReachBottomDistance": 20 + } + + } ,{ + "path" : "pages/sort/squareSort2", + "style" : + { + "navigationBarTitleText": "DO鍒嗘嫞", + "enablePullDownRefresh": false + } + } + ,{ + "path" : "pages/deliver/deliver", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + },{ + "path" : "pages/deliver/deliverDo", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "pages/expressmail/expressmail", + "style" : + { + "navigationBarTitleText": "", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "pages/print/wms", + "style" : + { + "navigationBarTitleText": "鐢熶骇搴撴爣绛�", + "enablePullDownRefresh": false + } + + }, + { + "path" : "pages/check/square", + "style" : + { + "navigationBarTitleText": "骞冲簱鐩樼偣", + "enablePullDownRefresh": true + } + + }, + { + "path" : "pages/check/index", + "style" : + { + "navigationBarTitleText": "骞冲簱鐩樼偣", + "enablePullDownRefresh": false + } + + } + ,{ + "path" : "pages/resume/pickResume", + "style" : + { + "navigationBarTitleText": "鍙栬揣鎾ら攢", + "enablePullDownRefresh": true, + "onReachBottomDistance": 20 + } + + } + ,{ + "path" : "pages/resume/sortResume", + "style" : + { + "navigationBarTitleText": "鍒嗘嫞鎾ら攢", + "enablePullDownRefresh": true, + "onReachBottomDistance": 20 + } + } + ,{ + "path" : "pages/resume/yukuResume", + "style" : + { + "navigationBarTitleText": "瓒婂簱鎾ら攢", + "enablePullDownRefresh": true, + "onReachBottomDistance": 20 + } + + } + ], + "globalStyle": { + "navigationBarTextStyle": "black", + "navigationBarTitleText": "鏍囧噯鍖栧師鏉愭枡搴�", + "navigationBarBackgroundColor": "#F8F8F8", + "navigationStyle": "custom", //鍙栨秷uni-app鍘熺敓澶撮儴瀵艰埅鏍� 鍏ㄥ眬 + "backgroundColor": "#F8F8F8", + "pageOrientation":"auto" //鍚敤灞忓箷鏃嬭浆 + } +} diff --git a/LA24030_LuLiPackageLine_Pda/pages/artificial/artificial.vue b/LA24030_LuLiPackageLine_Pda/pages/artificial/artificial.vue new file mode 100644 index 0000000..4f70ce6 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/artificial/artificial.vue @@ -0,0 +1,799 @@ +<template> + <view style="padding-bottom:150px" class="boxTip"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">缁勭洏</block> + </cu-custom> + <!-- <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> --> + <u-form labelPosition="left" label-width="180rpx" :model="warehouse" ref="warehouseRef"> + + <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" required class="uFormItem"> + <u-input :focus="curFoucus" v-model.trim="warehouse.containerCode" @confirm="getMaterialDetails(1)" + placeholder="璇锋壂鐮佸綍鍏�" :disabled="kwbhAllowed" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + + <u-row v-if="warehouse.containerCode" class="border_bottom margin_top10rpx padding_left25rpx" + style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡璺熻釜鐮�:" class="uFormItem"> + <u-input v-model="warehouse.snCode" ref="materialRef" placeholder="璇锋壂鐮佸綍鍏�" + @focus="warehouse.snCode = ''" @confirm="getMaterialDetails" + style="font-weight: bolder;margin-left: 15rpx;" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item label="鐩爣搴撳尯:" prop="tray" class="uFormItem"> + <input v-model="warehouse.areaCode" type="select" placeholder="璇烽�夋嫨鐩爣搴撳尯" @focus="containerFocus" + class="width"></input> + <u-action-sheet :list="wolist" v-model="modalshow" @click="confirmXl"></u-action-sheet> + <!-- <u-select v-model="modalshow" :list="wolist" @confirm="confirm" value-name="id" label-name="name"></u-select> --> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鐩爣搴撲綅:" class="uFormItem"> + <u-input v-model="warehouse.placeCode" placeholder="璇锋壂鐮佸綍鍏�" + style="font-weight: bolder;margin-left: 15rpx;" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="containerFocus2"> + <span class="fontSize15rpx">鎺ㄨ崘</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + + <view class="boxList" v-show="modalshow2" @click="modalshow2 = false" @touchmove.stop> + <view class="innerWrap"> + <ul v-for="(item, eindex) in containerList" :key="eindex"> + <li @click="confirm2(eindex)"> {{ item.text }}</li> + </ul> + </view> + </view> + + </u-row> + </u-form> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" /> + <view style="margin-bottom: 200rpx;" class="margin_top10rpx"> + <view v-for="(item, eindex) in singlist" :key="eindex" class="margin_bottom10rpx"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" @open="open" @close='close' + :options="options" style="width: 100vw;"> + <view class="fontSize32rpx background_fff padding10" :class="item.enAbled == 0 ? 'bg_item' : ''"> + <u-row> + <u-col span="12" class="flex"> + <text class="flex justify-center align-center circkle06">{{ eindex + 1 }}</text> + <text class="color_f18202 padding_left10rpx"> + {{ item.materialCode }}-{{ item.materialName }} + </text> + <!-- <u-icon name="plus-circle" v-if="item.enAbled!=1"></u-icon> --> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <text class="color_80 padding_left25rpx"> + 璐ㄦ鐘舵�侊細{{ item.qcStatusName }} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="color_80 padding_left25rpx"> + <text style="display: inline-block">鎵规锛歿{ item.batch }}</text> + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <text class="color_80 padding_left25rpx"> + 璺熻釜鐮侊細{{ item.snCode }} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="8"> + <text class="color_80 padding_left25rpx"> + + </text> + </u-col> + <u-col span="4"> + <text class="color_f18202 "> + 鏁伴噺锛歿{ item.quantity }} + </text> + </u-col> + </u-row> + <!-- <u-row> + <u-col span="7"> + </u-col> + <u-col span="5" class="flex"> + <view class="color_80"> + 鏁伴噺锛� + </view> + <input :class="item.enAbled ? '' : 'border_bottom_f18202 inputGray'" + class="text-left color_f18202 fontSize32rpx inputGray2" v-model="item.quantity" + type="number" :disabled="item.enAbled == 1" @blur="changeNum(item)" @click="clicki(item)" + placeholder="0" /> + </u-col> + </u-row> --> + </view> + </u-swipe-action> + </view> + </view> + <button-modal :issueShow='true' issueTitle="閲嶇疆" subTitle='缁勭洏' restTiltle='缁勭洏涓婃灦' @reset='goWarhouse' @submit='submit' + @issue="reset" /> + + </view> +</template> +<script> +import ButtonModal from '../../components/buttonModal.vue' +import ModalCode from '../../components/ModalCode.vue' +import { + getOrderNo, + addGroupDisk, + onlyUpdateDutyCycle, + getareaTypesList, + getContainDetail, + getContainerRecord, + getBhbMaterialList, + PdaBindListForSNCode, + getRecommendList +} from '../../api/putIn/artificial.js' +import { + getDate +} from '../../utils/dateTime.js' +import { + getAttrValue +} from '../../utils/tool.js' +import { + bindputawayConfirm +} from '../../api/putaway/putaway.js' + +export default { + data() { + return { + containerList: [], + curFoucus: true, + rescode: 0, + resmessage: "", + putCode: '', //瀹瑰櫒浜岀淮鐮� + detailshow: false, + operator: '', + focu: false, //娓呯┖鎸夐挳闅愭樉 + focuM: false, //鐗╂枡闅愭樉鎸夐挳 + Datetime: getDate(), + singlist: [], //鐗╂枡璇︽儏 + wolist: [], + options: [ + // { + // text: '璇︽儏', + // style: { + // backgroundColor: '#fc9f35' + // } + // } + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + materlist: {}, + warehouse: { + containerCode: '', + materialCode: '', + storehouseCode: "", + snCode: "", + // gridNumber: 1, + // useNumber: 0, + // exitNumber: 0, + // dutyCycle:1 + }, + modalshow: false, + modalshow2: false, + gridable: true, + gridFocus: false, + detailable: false, + detailableZb: false, + batchNo: '', //鎵爜鍒扮殑褰撳墠鐗╂枡鐨勬壒娆� + warehouseRules: { + containerCode: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }], + materialCode: [{ + required: true, + message: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + orderType: 1, + warhouseTph: '', + timerPrint: null, + kwbhAllowed: false, //鏄惁绂佺敤搴撲綅缂栧彿 + arrD: [], + statusTp: { + 'tpStatus': '' + } + }; + }, + components: { + ButtonModal, + ModalCode + }, + onLoad(option) { + if (option.orderType) { + this.orderType = option.orderType + } + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + this.getVehicleType() + }, + computed: { + containerCode() { + return this.warehouse.containerCode + } + }, + watch: { + containerCode(val) { + if (!val) { + this.detailable = false; + this.detailableZb = false; + this.warehouse.exitNumber = 0 + } + }, + singlist(val) { + this.warehouse.exitNumber = val.length + } + }, + methods: { + //瀹瑰櫒绫诲瀷鑱氱劍浜嬩欢 + containerFocus() { + uni.hideKeyboard() + this.modalshow = true + }, + gridBtnClick() { + this.gridable = !this.gridable + if (!this.gridable) { + this.$nextTick(() => { + this.gridFocus = true; + }) + } else { + this.$nextTick(() => { + this.gridFocus = false; + }) + } + }, + //瀹瑰櫒缂栧彿鐐瑰嚮 + containerClick() { + uni.scanCode({ + scanType: ['barCode', 'qrCode'], + autoDecodeCharset: true, + success: (res) => { + this.warehouse.containerCode = res.result + this.containerBlur() + }, + fail: (err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${err}` + this.$refs.resmodal.show = true + } + }) + }, + //瀹瑰櫒澶辩劍浜嬩欢 + containerBlur() { + Promise.all([this.getContainerRecord(), this.getContainerData()]) + }, + //鑾峰彇褰撳墠瀹瑰櫒涓嬬粍鐩樿褰� + getContainerRecord() { + this.kwbhAllowed = false + //姣忔鏌ヨ缃┖鏉愭枡鍒楄〃 + this.singlist = []; + if (this.warehouse.containerCode == '') { + return + } + getContainerRecord({ + containerCode: this.warehouse.containerCode + }).then(res => { + if (res.code == 200) { + this.kwbhAllowed = true + if (Array.isArray(res.data) && res.data.length > 0) { + if (res.data[0].orderNo) { + this.putCode = res.data[0].orderNo; + } + this.warehouse.dutyCycle = res.data[0].dutyCycle; //搴撳瓨鍗犳瘮 銆怑ditby shaocx,2023-05-22銆� + const recordArr = res.data.reduce((curr, item) => { + curr.push({ + code: item.materialCode, + batchNo: item.batchNo, + quantityNow: item.quantity, + quantity: item.quantity, + materialName: item.materialName, + materialTypeName: item.materialTypeName, + specificationModel: item.specificationModel, + id: '', + unionCode: item.unionCode, + replaceMaterialCode: item.replaceMaterialCode, + stockFlagStatus: item.stockFlagStatus, + show: false, + enAbled: 1 //鎺у埗鏁伴噺鏄惁鍙互杈撳叆 + }) + return curr + }, []) + this.singlist.push(...recordArr) + } + } else { + this.kwbhAllowed = false + } + + }) + + }, + //鑾峰彇瀹瑰櫒鐨勪俊鎭� + getContainerData() { + getContainDetail(this.warehouse.containerCode).then(res => { + const result = res.data.rows; + if (Array.isArray(result) && result.length == 1) { + // 铏氭嫙3涓兘涓嶆樉绀猴紱鏂欑锛氭樉绀烘爡鏍硷紱閽㈡墭锛氫笉鏄剧ず绌洪棿鍗犳瘮 + if (res.data.rows[0].isVirtual == 0) { //瀹炵墿 + if (res.data.rows[0].wareContainerType == '299120688255045' || res.data.rows[0] + .wareContainerType == '293486279884869') { // 閽㈠埗瀹瑰櫒 濉戞枡瀹瑰櫒 -鏄剧ず鍗犳瘮 + this.detailableZb = true; + this.detailable = false; + } else { //鏂欑 - 鏄剧ず鏍呮牸鏁� + this.detailableZb = false; + this.detailable = true; + } + } else { + this.detailable = false; + this.detailableZb = false; + } + this.warehouse.gridNumber = res.data.rows[0].gridNumber; + this.warehouse.useNumber = res.data.rows[0].useNumber; + } else { + uni.showToast({ + title: '搴撲綅涓嶅瓨鍦�', + icon: 'none', + duration: 2000 + }); + this.kwbhAllowed = false + } + + }) + }, + + + //鐗╂枡缂栫爜鐐瑰嚮 + materialClick() { + uni.scanCode({ + scanType: ['barCode', 'qrCode'], + autoDecodeCharset: true, + success: (res) => { + this.warehouse.materialCode = getAttrValue(res.result, 'PARTSNUMBER') + this.batchNo = getAttrValue(res.result, 'LOTNO') + this.getMaterialDetails() + }, + fail: (err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${err}` + this.$refs.resmodal.show = true + } + }) + }, + //鐗╂枡鏌ヨ + getMaterialDetails(pram) { + if (!this.warehouse.containerCode) { + uni.showToast({ + title: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + icon: 'none', + duration: 2000 + }) + return + } + //鎵鍣ㄧ紪鍙� 鍔犺浇鎵�鏈夌墿鏂� + if (pram == 1) { + this.singlist = []; + getBhbMaterialList({ + 'containerCode': this.warehouse.containerCode, + 'SNCode': this.warehouse.snCode + }).then((res) => { + if (res.code == 200) { + if (res.result == null) { + this.rescode = 400 + this.resmessage = '鏌ユ棤鏁版嵁' + this.$refs.resmodal.show = true + return + } else { + if (res.result.length == 0) { + console.log("绌烘墭") + this.singlist = []; + return + } else { + console.log("鏈夋枡") + res.result.forEach((item, index) => { + item.notDelete = 1 //宸茬粍鐩樼殑鐗╂枡 涓嶈鍒犻櫎 瑕佸幓瑙g粦椤甸潰瑙g粦 + }) + this.singlist = res.result; + } + } + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + + } + }) + + } else { + + //鐗╂枡鏌ヨ + PdaBindListForSNCode({ + 'containerCode': this.warehouse.containerCode, + 'SNCode': this.warehouse.snCode + }).then((res) => { + if (res.code == 200) { + if (res.result == null || !res.result.stockQuanOutput) { + this.rescode = 400 + this.resmessage = '鏌ユ棤鏁版嵁' + this.$refs.resmodal.show = true + return + } else { + // 鏍规嵁id 鍒ゆ柇鐗╂枡鏄惁瀛樺湪 + var item = res.result.stockQuanOutput; + //debugger + let index = this.singlist.findIndex(v => v.snCode == item.snCode); + if (index == -1) { + if (!res.result.validateResult && res.result.validateFailReason) { + uni.showModal({ + title: '鎻愮ず', + content: res.result.validateFailReason, + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + this.singlist.unshift({ + ...item + }) + } else if (res.cancel) { + + } + }) + }); + } else { + this.singlist.unshift({ + ...item + }) + } + } + } + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + + } + + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鍒犻櫎锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + this.singlist[index].cardNum = true + if (eindex == 0) { //鍒犻櫎 + if(this.singlist[index].notDelete==1){ + uni.showToast({ + title: '宸茬粍鐩樼殑鐗╂枡 涓嶈鍒犻櫎 瑕佸幓瑙g粦椤甸潰瑙g粦', + icon: 'none', + duration: 2000 + }); + return + } + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + } else if (res.cancel) { + + } + }) + }); + }, + //缂栬緫鐘舵�佹牱寮� + dc(e) { + e.cardNum = true + this.$forceUpdate() + }, + //鍗$墖閫変腑 + clicki(e) { + e.cardNum = true + this.$forceUpdate() + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.$forceUpdate() + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + val.cardNum = false + if (!val.quantity) { + uni.showModal({ + title: '鎻愮ず', + content: '缁勭洏鏁伴噺涓嶈兘涓虹┖', + showCancel: false + }) + } + if (val.quantity < 0) { + uni.showModal({ + title: '鎻愮ず', + content: '缁勭洏鏁伴噺蹇呴』澶т簬0', + showCancel: false + }) + } + + }, + //鍏ㄩ儴鍙栨秷 + reset() { + this.singlist = []; + this.warehouse.containerCode = '' + this.warehouse.snCode = '' + this.warehouse.areaCode = '' + this.warehouse.placeCode = '' + this.$refs.warehouseRef.resetFields(); + this.$forceUpdate() + this.kwbhAllowed = false + }, + //閲嶇疆椤甸潰淇℃伅 + rest() { + this.reset() + }, + //纭 + submit() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + this.$refs.warehouseRef.validate(valid => { + if (valid) { + + let arrN1 = this.singlist.findIndex((v) => v.quantity == '' || v.quantity <= 0) + if (arrN1 > -1) { + uni.showToast({ + title: '鐗╂枡鏁伴噺闇�瑕佸ぇ浜�0', + icon: 'none', + duration: 2000 + }); + return + } + + //鐗╂枡璇︽儏 + let matatilDetails = this.singlist; + + let arrSub = matatilDetails.filter((v) => v.enAbled != 1) + //璇锋眰鍙傛暟 + /// 鏍囪 + /// 1锛氱墿鏂欑粍鐩� + /// 2锛氬鍣ㄧ粍鐩� + /// 3锛氱墿鏂欒В缁� + /// 4锛氬鍣ㄨВ缁� + let params = { + Flag: 1, + ContainerCode: this.warehouse.containerCode, + orderDetails: arrSub + } + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭缁勭洏锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + addGroupDisk(params).then(res => { + this.warhouseTph = this.warehouse.containerCode; + this.rescode = res.code; + this.resmessage = res.message || '缁勭洏鎴愬姛锛�'; + this.$refs.resmodal.show = true; + this.rest(); + }) + } else if (res.cancel) { + + } + }) + }); + } + }) + }, + + // 绉熺洏涓婃灦 + goWarhouse() { + //鐗╂枡璇︽儏 + let matatilDetails = this.singlist; + + let arrSub = matatilDetails.filter((v) => v.enAbled != 1) + + bindputawayConfirm({ + flag:1, // + "ActionType": 3004, //缁勭洏涓婃灦 + "ContainerCode": this.warehouse.containerCode, + "StorehouseCode": this.warehouse.storehouseCode, + "areaCode": this.warehouse.areaCode || '', + "placeCode": this.warehouse.placeCode || '', + "orderDetails": arrSub + }).then(res => { + this.rescode = res.code; + this.resmessage = res.message || '缁勭洏涓婃灦鎴愬姛锛�'; + this.$refs.resmodal.show = true; + this.reset(); + }) + // if(this.warehouse.areaCode==''&&this.warehouse.placeCode){ + // uni.showToast({ + // title: '璇峰~鍐欑洰鏍囧簱鍖烘垨鐩爣搴撲綅锛�', + // icon: 'none', + // duration: 2000 + // }) + // return; + // } + // if (this.warhouseTph == '') { + // uni.showToast({ + // title: '缁勭洏鎴愬姛鍚庯紝鍙叆搴擄紒', + // icon: 'none', + // duration: 2000 + // }) + // return + // } + // uni.navigateTo({ + // url: '/pages/putIn/three/three?type=鍏ュ簱鍗�&containerCode=' + this.warhouseTph + // }) + }, + getVehicleType() { + getareaTypesList().then((res) => { + // if (res.data.rows.length == 0) { + // this.rescode = 400 + // this.resmessage = '鏆傛棤鏁版嵁' + // this.$refs.resmodal.show = true + // return + // } + var arr = res.result.items; + arr.map(item => { + item.text = item.areaCode; + return item; + }) + this.wolist = arr + }) + }, + confirmXl(index) { + this.warehouse.areaCode = this.wolist[index].areaCode; + // this.warehouse.ContainerTypeCode = this.wolist[index].id; + }, + filterMark(stockFlagStatus) { + let str = '' + let arr4 = this.arrD.filter(v => v.value == stockFlagStatus) + if (arr4.length > 0) { + str = arr4[0].title + } + return str + }, + //------鑾峰彇鎺ㄨ崘 + containerFocus2() { + // //debugger + if (!this.warehouse.areaCode) { + uni.showToast({ + title: '璇烽�夋嫨鐩爣搴撳尯锛�', + icon: 'none', + duration: 2000 + }); + return + } + getRecommendList({ + 'containerCode': this.warehouse.containerCode, + 'areaCode': this.warehouse.areaCode + }).then(res => { + this.modalshow2 = true; + + this.containerList = res.result.reduce((curr, item) => { + curr.push({ + text: item.placeCode, + }) + return curr; + }, []) + }) + }, + //------鑾峰彇鎺ㄨ崘绫诲瀷閫夋嫨 + confirm2(index) { + this.warehouse.placeCode = this.containerList[index].text; + }, + } +} +</script> +<style lang="scss" scoped> +.bg_item { + background: #FFEBCD !important; +} + +.inputGray2 { + line-height: 30px; + border-top: 10rpx solid transparent; +} + +.inputGray { + border-top: 0rpx solid transparent; + +} + + + +.boxList { + transition: all ease 2s; + position: fixed; + bottom: 0; + left: 0; + top: 0; + right: 0; + width: 100%; + height: 100%; + z-index: 999; + background: rgba(0, 0, 0, 0.6); + + .innerWrap { + max-height: 50%; + overflow-y: auto; + background: white; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + + ul { + padding: 0; + margin: 0; + + li { + padding: 0; + margin: 0; + border-bottom: 1px solid #e4e7ed; + list-style-type: none; + display: flex; + flex-direction: row; + line-height: 1; + justify-content: center; + align-items: center; + font-size: 13px; + padding: 14px 0; + flex-direction: column; + } + } + } + +} +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/artificial/artificial.vue2 b/LA24030_LuLiPackageLine_Pda/pages/artificial/artificial.vue2 new file mode 100644 index 0000000..8918b1b --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/artificial/artificial.vue2 @@ -0,0 +1,407 @@ +<template> + <view> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">浜哄伐缁勭洏</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" required style="font-size: 16px;font-weight: bold;padding: 0;"> + <u-input v-model.trim="warehouse.containerCode" @focus="warehouse.containerCode = ''" @blur="containerBlur" placeholder="璇锋壂鐮佸綍鍏�" style="font-weight: bolder;margin-left: 15rpx;" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.materialCode" ref="materialRef" placeholder="璇锋壂鐮佸綍鍏�" @focus="warehouse.materialCode = ''" @blur="getMaterialDetails" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" /> + <view style="margin-bottom: 200rpx;" v-show="singlist.length > 0"> + <view v-for="(item, eindex) in singlist" :key="eindex" style="width: 100vw;display: flex;"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" + @open="open" @close='close' :options="options" style="margin-bottom: 10rpx;width: 100vw;"> + <view class="title-wrap fontSize32rpx background_fff" :class="parseInt(item.quantity) > 0 ? 'bg_item' : '' " style="width: 100vw;"> + <u-row> + <u-col span="1"> + <text class="flex justify-center align-center" style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </text> + </u-col> + <u-col span="10"> + <text class="color_f18202"> + 鐗╂枡缂栧彿锛歿{item.code}} + </text> + </u-col> + </u-row> + <u-row style="margin-top: 20rpx;"> + <u-col span="8"> + <text class="el_batchNo"> + 鎵规锛歿{item.batchNo}} + </text> + </u-col> + <u-col span="4"> + <input class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" v-model="item.quantity" + type="number" @blur="changeNum(item)" :min="1" placeholder="璇疯緭鍏ョ粍鐩樻暟閲�" /> + <!-- <text class="el_batchNo"> + 缁勭洏鏁伴噺锛歿{item.quantity}} + </text> --> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + </view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.code}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.name}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡绫诲瀷</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + </view> + </u-popup> + <button-modal :cleaningShow='true' allTitle='鍏ㄩ儴鍙栨秷' cleaningTitle='纭缁勭洏' @allsubmit="reset" @submit='submit'/> + </view> +</template> +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import {getOrderNo,addGroupDisk,getMaterialList, getContainDetail, getContainerRecord} from '../../api/putIn/artificial.js' + import {getDate} from '../../utils/dateTime.js' + import {getAttrValue} from '../../utils/tool.js' + export default { + data() { + return { + rescode: 0, + resmessage: "", + putCode: '', //瀹瑰櫒浜岀淮鐮� + detailshow: false, + operator: '', + focu: false, //娓呯┖鎸夐挳闅愭樉 + focuM: false, //鐗╂枡闅愭樉鎸夐挳 + Datetime: getDate(), + singlist: [], //鐗╂枡璇︽儏 + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }, + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + materlist: {}, + warehouse: { + containerCode: '', + materialCode: '', + }, + batchNo: '', //鎵爜鍒扮殑褰撳墠鐗╂枡鐨勬壒娆� + warehouseRules: { + containerCode: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }], + // gridNumber: [{required: true,message: '鏍呮牸鎬绘暟涓嶈兘涓虹┖',trigger: 'blur'}], + // exitNumber:[{required: true,message: '鏈鍗犵敤鏁伴噺涓嶈兘涓虹┖',trigger: 'blur'}], + materialCode: [{ + required: true, + message: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + } + + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + this.getOrderNo() + }, + computed: { + containerCode(){ + return this.warehouse.containerCode + } + }, + methods: { + //瀹瑰櫒澶辩劍浜嬩欢 + containerBlur(){ + Promise.all([this.getContainerRecord(), this.getContainerData()]) + }, + //鑾峰彇褰撳墠瀹瑰櫒涓嬬粍鐩樿褰� + getContainerRecord(){ + if(this.warehouse.containerCode.length < 5) { + return + } + getContainerRecord({ContainerCode: this.warehouse.containerCode}).then(res => { + if(Array.isArray(res.data) && res.data.length > 0) { + this.putCode = res.data[0].orderNo; + const recordArr = res.data.reduce((curr,item)=>{ + curr.push({ + code: item.wareMaterialCode, + batchNo:item.batchNo, + quantity:item.quantity, + show: false + }) + return curr + },[]) + this.singlist.push(...recordArr) + } + }) + + }, + //鑾峰彇瀹瑰櫒鐨勪俊鎭� + getContainerData() { + if(this.warehouse.containerCode.length < 5) { + return + } + getContainDetail(this.warehouse.containerCode).then(res => { + const result = res.data.rows; + if(!Array.isArray(result) || result.length !== 1) { + this.rescode = 400 + this.resmessage = '瀹瑰櫒淇℃伅鏌ヨ澶辫触' + this.$refs.resmodal.show = true + } + + }) + }, + //鍏ュ簱鍗曞彿 + getOrderNo() { + getOrderNo().then((res) => { + if (res.code == 200) { + this.putCode = res.data + } else { + this.$refs.resmodal.show = true + } + }) + }, + //鐗╂枡鏌ヨ + getMaterialDetails() { + if(!this.warehouse.materialCode) { + uni.showModal({ + title: '鎻愮ず', + content: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + showCancel: false + }) + return + } + if(this.warehouse.materialCode.length > 50) { + this.batchNo = getAttrValue(this.warehouse.materialCode,'LOTNO') + //鎵弿鐨勭墿鏂欐槸鍚︽湁鎵规 + if(!this.batchNo) { + this.rescode = 400 + this.resmessage = '鏃犳壒娆�' + this.$refs.resmodal.show = true + return + } + this.warehouse.materialCode = getAttrValue(this.warehouse.materialCode,'PARTSNUMBER') + if(this.singlist.length > 0) { + //鍒ゆ柇褰撴鎵弿鐨勭墿鏂欐槸鍚﹀凡瀛樺湪鍚屾壒娆� + let index = this.singlist.findIndex(item => item.code == this.warehouse.materialCode && item.batchNo == this.batchNo) + //缃《 + if(index > -1) { + this.singlist.unshift(...this.singlist.splice(index,1)) + return + } + } + + if(this.warehouse.materialCode.length > 3) { + getMaterialList(this.warehouse.materialCode).then((res) => { + if (res.code == 200) { + if (res.data.rows.length == 0) { + this.rescode = 400 + this.resmessage = '鏃犳鐗╂枡' + this.$refs.resmodal.show = true + return + }else { + res.data.rows.map(item => { + item.batchNo = this.batchNo + item.quantity = '' + item.show = false + return item; + }) + this.singlist.unshift(...res.data.rows) + } + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + } + } + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + this.singlist[index].cardNum = true + if (eindex == 1) { + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + val.cardNum = false + if(!val.quantity) { + uni.showModal({ + title: '鎻愮ず', + content: '缁勭洏鏁伴噺涓嶈兘涓虹┖', + showCancel: false + }) + } + if(val.quantity <0) { + uni.showModal({ + title: '鎻愮ず', + content: '缁勭洏鏁伴噺蹇呴』澶т簬0', + showCancel: false + }) + } + + }, + //鍏ㄩ儴鍙栨秷 + reset() { + this.singlist = []; + this.$refs.warehouseRef.resetFields(); + this.$forceUpdate() + }, + //閲嶇疆椤甸潰淇℃伅 + rest() { + this.warehouse.containerCode = '' + this.warehouse.materialCode = '' + this.singlist.forEach(item => { + item.quantity = '' + }) + this.singlist = [] + this.getOrderNo() + }, + //纭 + submit() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + //鐗╂枡璇︽儏 + let matatilDetails = this.singlist.reduce((curr,item) => { + curr.push({ + createdTime: getDate(), + updatedTime: getDate(), + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + wareMaterialCode: item.code, + batchNo:item.batchNo, + price:item.price, + completeQuantity: item.quantity, + quantity: item.quantity + }) + return curr; + },[]) + + //璇锋眰鍙傛暟 + let params = { + createdTime: getDate(), + updatedTime: getDate(), + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + orderNo: this.putCode, + orderType: 1, + wareContainerCode: this.warehouse.containerCode, + gridNumber: 1, + useNumber: 0, + warehousOrderDetails: matatilDetails + } + + addGroupDisk(params).then(res => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + this.rest() + }) + } + }) + } + } + } +</script> +<style lang="scss" scoped> + .el_batchNo { + padding: 10rpx 0 10rpx 45rpx; + color: #808080; + } + .bg_item { + background: #FFEBCD !important; + } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/artificial/itemsMertial.vue b/LA24030_LuLiPackageLine_Pda/pages/artificial/itemsMertial.vue new file mode 100644 index 0000000..adbd464 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/artificial/itemsMertial.vue @@ -0,0 +1,356 @@ +<template> + <view class="overflow"> + <view class="upWp"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">绌烘墭鍏ュ簱</block> + </cu-custom> + <!-- <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + 鎿嶄綔浜猴細{{operator}} + </view> --> + <view class="text-bold width fontSize32rpx" style="padding: 10rpx 10rpx;background-color: #d6d6d6;"> + <view class="flex justify-between align-center"> + <text class="width23 padding10">鍏ュ簱鍗曞彿</text> + <text>{{warehouse.orderNo}}</text> + </view> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒鏁伴噺:" prop="warehouse.containerQty" required class="myFormItem"> + <u-input type="number" v-model="warehouse.containerQty" :focus="focusType" placeholder="璇疯緭鍏ュ鍣ㄦ暟閲�" + class="width myInp" clearable/> + </u-form-item> + </u-col> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="warehouse.wareContain" required class="myFormItem"> + <!-- <input v-model="warehouse.wareContainerCode" :focus="focusType" placeholder="璇烽�夋嫨鎴栨壂鎻忓鍣ㄧ紪鍙�" + class="width myInp" > --> + + <u-input v-model.trim="warehouse.wareContainerCode" :focus="focusType" placeholder="璇烽�夋嫨鎴栨壂鎻忓鍣ㄧ紪鍙�" + class="width myInp" clearable/> + + <!-- <input v-model="warehouse.wareContainerCode" type="select" @focus="containerFocus" + placeholder="璇烽�夋嫨瀹瑰櫒缂栧彿" class="width myInp"> --> + <!-- <u-select v-model="modalshow" :list="wolist" @confirm="confirm" value-name="code" + label-name="code" ></u-select> --> + </u-form-item> + </u-col> + </u-row> + </u-form> + </view> + <view class="wolistWp" v-show="modalshow" :style="{height: mtHeight+'px'}"> + <view :key="index" v-for="(item,index) in wolistRes" @click="confirm(item.code)"> + <text> {{ item.code}}</text> + </view> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + + <button-modal :empTytowerShow='true' class="dowmWp" cleaningTitle="鏌ヨ" garmenTitle='纭鍏ュ簱' @submit='submit' @reset='rest' /> + + </view> +</template> + +<script> + import { + getDate + } from '../../../utils/dateTime.js' + import ModalCode from '../../../components/ModalCode.vue' + import ButtonModal from '../../../components/buttonModal.vue' + import { + trayPutStorage, + getContainerNumList, + getOrderNumList, + containerTypeArr, + getAllEnums + } from '@/api/container/index.js' + import calBoxHt from '@/mixins/calBoxHt.js' + export default { + mixins:[calBoxHt], + data() { + return { + mtHeight: 'auto', + focusType: true, + rescode: 0, + resmessage: "", + focu: true, + Datetime: getDate(), + containerTypeArr: [], + warehouse: { //鍏ュ簱璇锋眰鍙傛暟 + orderNo: "", + containerQty: 1, //绌烘墭-榛樿1 + containerType: "", + wareContainerCode: "", //瀹瑰櫒缂栧彿 + createdTime: "", + updatedTime: "", + createdUserId: "", + createdUserName: "", + orderStatus: 3, + orderType: 13, //绌烘墭鍏ュ簱 + warehousOrderDetails: [] + }, + warehouseRules: { + ContainerCode: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }], + // StorehouseCode: [{ + // required: true, + // message: '鍏ュ簱鍙d笉鑳戒负绌�', + // trigger: 'blur' + // }], + }, + operator: '', // + wolist: [], + wolistRes: [111,2222,33333,33333,33333], + modalshow: false + }; + }, + components: { + ModalCode, + ButtonModal + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + + this.calBoxHt() //鍔ㄦ�佽绠楁粴鍔ㄥ尯鍩熺殑楂樺害 + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + + this.getOrderNum() + this.getContainerNum() + this.getAllEnums() + }, + // 妯$硦鏌ヨ + watch: { + 'warehouse.wareContainerCode': { + immediate: true, //鍦ㄦ鐨勫�艰繕娌″彉鍖栨椂鎵ц濡備笅鍑芥暟鏄剧ず鍑烘墍鏈夌殑鎯呭喌 + handler(val) { + this.modalshow = true + this.wolistRes = this.wolist.filter((p) => { + return p.code.indexOf(val.trim()) !== -1 + }) + } + } + }, + methods: { + // 鑾峰彇鍏ュ簱鍗曞彿 + getOrderNum() { + getOrderNumList().then((res) => { + if (res.code != 200) { + this.rescode = res.code + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + return + } + this.warehouse.orderNo = res.data + }) + }, + // 鑾峰彇瀹瑰櫒缂栧彿 + getContainerNum(trayNumber) { + getContainerNumList().then((res) => { + if(res.code==200){ + if (res.data.length == 0) { + this.rescode = res.data.code + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + return + } + this.wolist = res.data + this.wolistRes = res.data + // 鎹曡幏鎿嶄綔杩囩▼涓� 琚┖鍑烘潵鐨勫鍣� + if(trayNumber&&this.warehouse.wareContainerCode!=''){ + this.wolistRes = this.wolist.filter((p) => { + return p.code.indexOf(this.warehouse.wareContainerCode) !== -1 + }) + } + } + }) + }, + // 纭 + submit() { + if (this.warehouse.orderNo == '' || this.warehouse.orderNo == undefined) { + this.getOrderNum() + this.$u.toast('绋嶇瓑锛岄噸鏂拌幏鍙栧叆搴撳崟鍙�'); + return + } + if(this.warehouse.containerQty <= 0){ + this.$u.toast('璇疯緭鍏ュ鍣ㄦ暟閲�'); + return + } + if(this.warehouse.wareContainerCode == ''){ + this.$u.toast('瀹瑰櫒缂栧彿鏈壂鎻忔垨鏈�夋嫨'); + return + } + + this.$refs.warehouseRef.validate(valid => { + if (valid) { + var jsonSom = { + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + createdTime: this.Datetime, + updatedTime: this.Datetime, + containerQty: this.warehouse.containerQty + } + this.warehouse = Object.assign(this.warehouse, jsonSom); + this.warehouse.containerType = ''; + const arr = this.wolist.filter((item) => item.code == this.warehouse.wareContainerCode) + if (arr.length > 0) { + let nameTray = arr[0].typeName //濉戞枡瀹瑰櫒 + const arr2 = this.containerTypeArr.filter((item) => item.title == nameTray) + if (arr2.length <= 0) { + this.$u.toast('瀵瑰簲瀹瑰櫒绫诲瀷鎵句笉鍒�'); + return; + } + this.warehouse.containerType = arr2[0].value || ''; //"299120688255045" + } + trayPutStorage(this.warehouse).then((res) => { + if (res.code === 200) { + this.rescode = res.code + this.resmessage = res.message + this.$refs.warehouseRef.resetFields() + this.warehouse = { + orderNo: "", + containerQty: 1, //绌烘墭-榛樿1 + containerType: "", + wareContainerCode: "", //瀹瑰櫒缂栧彿 + createdTime: "", + updatedTime: "", + createdUserId: "", + createdUserName: "", + orderStatus: 3, + orderType: 13, //绌烘墭鍏ュ簱 + warehousOrderDetails: [] + } + this.focusType = true + this.getOrderNum() + this.getContainerNum() + this.$refs.resmodal.show = true + } + }) + } + }) + }, + // 鑾峰彇甯哥敤鍙橀噺 搴斿瓨鍏uex + getAllEnums() { + getAllEnums().then((res) => { + if (res.data.length == 0 || res.data.containerType.length == 0) { + this.rescode = res.code + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + return + } + this.containerTypeArr = res.data.containerType + }) + }, + //瀹瑰櫒 鑱氱劍浜嬩欢 + containerFocus() { + // uni.hideKeyboard() + // this.modalshow = true + }, + //閫夋嫨 瀹瑰櫒 + confirm(e) { + if(e==this.warehouse.wareContainerCode){ + return + } + this.warehouse.wareContainerCode = e + this.modalshow = false + }, + //鍑哄叆搴撳彛鎵弿 + wareScane() { + uni.scanCode({ + scanType: ['barCode', 'qrCode'], + autoDecodeCharset: true, + success: (res) => { + this.warehouseRules.StorehouseCode = res.result.trim() + }, + fail: (err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${JSON.stringify(err)}` + this.$refs.resmodal.show = true + } + }) + }, + //瀹瑰櫒鎵弿 + containerScane() { + uni.scanCode({ + scanType: ['barCode', 'qrCode'], + autoDecodeCharset: true, + success: (res) => { + this.warehouse.ContainerCode = res.result + }, + fail: (err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${JSON.stringify(err)}` + this.$refs.resmodal.show = true + } + }) + }, + //閲嶇疆 + rest() { + this.getContainerNum(1) + }, + _empty(v) { + let tp = typeof v, + rt = false; + if (tp == "number" && String(v) == "") { + rt = true + } else if (tp == "undefined") { + rt = true + } else if (tp == "object") { + if (JSON.stringify(v) == "{}" || JSON.stringify(v) == "[]" || v == null) rt = true + } else if (tp == "string") { + if (v == "" || v == "undefined" || v == "null" || v == "{}" || v == "[]") rt = true + } else if (tp == "function") { + rt = false + } + return rt + } + } + + } +</script> + +<style lang="scss"> + .myFormItem { + font-size: 32rpx; + font-weight: bold; + padding: 0; + } + + .myInp { + font-weight: bolder; + margin-left: 30rpx; + margin-top: 16rpx; + } + + /deep/.u-drawer__scroll-view { + border-top: 5px solid #d6d6d6; + } + .wolistWp{ + z-index: 999; + // height: 45vh; + padding-top: 10px; + padding-bottom: 20px; + border-top: 1px solid gray; + // border-bottom: 1px solid gray; + overflow: auto; + text-align: left; + view{ + display: inline-block; + border-radius: 3px; + border: 1px solid orange; + width: 27.3%; + text-align: center; + min-width: 80px; + padding: 5px ; + margin: 8px 3%; + color: #f18202; + text{ + } + } + } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/borrow/borrow.vue b/LA24030_LuLiPackageLine_Pda/pages/borrow/borrow.vue new file mode 100644 index 0000000..e5ab998 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/borrow/borrow.vue @@ -0,0 +1,443 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">棰嗙敤鍗曟媿鐓х暀搴�</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class=""> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="棰嗙敤鍗曞彿:" prop="warehouseCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.warehouseCode" @focus="focu=true" placeholder="璇峰綍鍏ユ垨鎵爜" + @blur="getMaterialDetails" class="width padding_left25rpx" + style="font-weight: bolder;margin-left: 30rpx;" /> + <u-icon v-if="warehouse.warehouseCode && focu" @click="warehouse.warehouseCode=''" + name="close-circle-fill" color="#848484"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <scroll-view scroll-y="true" style="height: 67vh;"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpredel" @open="open" @close='close' :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap "> + <view :key="eindex+'singlist'" :class="item.cardNum?'bd-ffe6c9':item.edit?'clickactive':''" + class="fontSize30rpx width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + {{item.wareMaterialCode}} ({{item.wareMaterialName}}) {{item.barNo}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 澶х被锛歿{item.wareMaterialTypeName}} + </view> + </u-col> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 灏忕被锛歿{item.wareMaterialSubTypeName}} + </view> + </u-col> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 鏁伴噺锛歿{item.quantity}} + </view> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </scroll-view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom" v-if="!printflag"> + <!-- <view class="pop "> --> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.wareMaterialCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡澶х被</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡灏忕被</text> + <text>{{materlist.wareMaterialSubTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏉$爜</text> + <text>{{materlist.barCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏁伴噺</text> + <text>{{materlist.quantity}}</text> + </view> + <!-- </view> --> + <!-- <view class="margin_top140rpx"> + <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='init' @reset='rest' /> + </view> --> + </u-popup> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom" v-if="printflag"> + <!-- <view class="pop "> --> + <h2 class="text_align_center">鐗╂枡鏍囩</h2> + <view class="border margin" style="margin-bottom: 0;"> + <h2 class="text_align_center padding_bottom18 padding15 margin_top10rpx margin_bottom10rpx"> + {{materlist.wareMaterialCode}} + </h2> + <view class="margin" style="margin-top: 0;"> + <table border="1" cellpadding='12' width='100%' + style='border-collapse:collapse;color: #515151;'> + <tr> + <th>鐗╂枡澶х被</th> + <th>{{materlist.materialTypeName}}</th> + </tr> + <tr> + <th>鐗╂枡灏忕被</th> + <th>{{materlist.wareMaterialSubTypeName}}</th> + </tr> + <tr> + <th>鐗╂枡瑙勬牸</th> + <th>{{materlist.specificationModel}}</th> + </tr> + </table> + <tki-barcode ref="barcode" onval :val="code" :load-make="true" :opations="barOpations" /> + </view> + </view> + </u-popup> + <!-- <view + class="width fixed bottom140 margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-upload :action="action" :before-upload="beforeUpload" upload-text="棰嗙敤鍗曠収鐗�" :file-list="fileList1" + @on-success="successPic" @on-remove="remove"> + </u-upload> + </view> --> + + <view + class="width fixed bottom140 margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <view class="" style="width: 250rpx;height: 250rpx;border: 1px dashed #aaaaaa;position: relative;"> + <image :src="image" mode="" @click="imgClick(image)" style="width: 100%;height: 100%;"></image> + </view> + <u-icon @click="delimage" name='close-circle-fill' color='red' size='60' v-if="image!==''" + style='position: absolute;left:200rpx;top: 20rpx;'></u-icon> + <view class="" style="color: #aaaaaa;" v-if="image==''"> + <u-icon name="plus" @click='upload' size='48' style='position: absolute;left: 120rpx;top: 100rpx;'> + </u-icon> + <text class="fontSize32rpx" style="position: absolute;left: 85rpx;top: 160rpx;">閫夋嫨鍥剧墖</text> + </view> + </view> + <button-modal :issueShow='true' issueTitle="鎵撳嵃" subTitle='鎻愪氦' restTiltle='閲嶇疆' @reset='reset' + @submit='submit' /> + </view> + </view> +</template> + +<script> + import ButtonModal from '@/components/buttonModal.vue' + import ModalCode from '@/components/ModalCode.vue' + import tkiBarcode from '@/components/tki-barcode/tki-barcode' + import { + pathToBase64 + } from 'image-tools' + import { + query, + updateHead + } from '@/api/borrow/borrow.js' + export default { + data() { + return { + detailshow: false, + rescode: 0, + resmessage: "", + current: 0, //婊戝潡榛樿鍊� + printNum: "", //鎵撳嵃鏁伴噺 + focu: false, + printflag: false, //鎵撳嵃/鐗╂枡淇℃伅锛宼rue涓虹墿鏂欎俊鎭� + fileList: [], + fileList1: [], //涓婁紶鍥剧墖鍒楄〃 + lastlist: [], + overlist: [], //鏀惰揣鍒楄〃 + lacklist: [], //缂烘枡鍒楄〃 + flag: true, + action: this.$myHOST + '/sysFileInfo/uploadImages', + singlist: [ + // { + // "id": 0, + // "deliverDate": "string", + // "wareMaterialCode": "string", + // "name": "string", + // "describe": "string", + // "category": "string", + // "materialTypeId": "string", + // "materialTypeName": "string", + // "specificationModel": "string", + // "long": "string", + // "width": "string", + // "high": "string", + // "weight": "string", + // "purchaseNo": "string", + // "barCode": "string", + // "surplusQuantity": 11, + // "unit": "string", + // "basicExpressInfoCode": "string", + // "basicExpressInfoName": "string", + // "deliveryQuantity": "string", + // "goodsQuantity": "string", + // "deliveryNo": "string" + // }, + ], //鐗╂枡璇︽儏 + base: '', + image: '', + lists: [{ + name: '鏀惰揣(50)' + }, { + name: '缂烘枡' + }], + list: [], + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + warehouseCode: '' + }, + warehouseRules: { + warehouseCode: [{ + required: true, + message: '棰嗙敤鍗曞彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }], + operator: '', + QuantityTotal: '', //閫佽揣鎬绘暟 + uncollectedTotal: '', //鏀惰揣鎬绘暟 + lackTotal: '', //缂鸿揣鎬绘暟 + code: '', + barOpations: { + width: 1.8, + height: 120, + fontSize: 24, + fontColor: "#000000", + displayValue: true, + textAlign: "center", + textPosition: "bottom", + textMargin: 5, + background: "#FFFFFF", + margin: 5 + } + }; + }, + components: { + ButtonModal, + ModalCode, + tkiBarcode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + init() { + // this.tomy() + this.printflag = true + this.code = this.materlist.wareMaterialCode // 鐢熸垚涓�缁寸爜鍜屼簩缁寸爜 + }, + upload() { + uni.chooseImage({ + sourceType: ["camera", "album"], + sizeType: "original", + count: 1, + success: (res) => { + pathToBase64(res.tempFilePaths[0]).then(base64 => { + this.image = res.tempFilePaths[0] + this.base=JSON.stringify(base64) + uni.uploadFile({ + url: this.action, + filePath: res.tempFilePaths[0], + formData: { + 'images': JSON.stringify(base64) + }, + success: (res) => { + var str = JSON.parse(res.data) + } + }) + }) + } + }) + }, + delimage() { + this.image = '' + this.$u.toast('绉婚櫎鎴愬姛') + }, + imgClick(url) { + if(this.image!==''){ + var imgArr = []; + imgArr.push(url) + //棰勮鍥剧墖 + uni.previewImage({ + urls: imgArr, + current: imgArr[0] + }); + } + }, + //缂栬緫鐘舵�佹牱寮� + dc(e) { + e.cardNum = true + this.$forceUpdate() + }, + //鐗╂枡鏌ヨ + getMaterialDetails() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focu = false + if (this.warehouse.warehouseCode !== '') { + query(this.warehouse.warehouseCode).then((res) => { + if (res.code == 200) { + this.singlist = res.data.rows + if (res.data.rows.length == 0) { + this.resmessage = '鏆傛棤鏁版嵁' + this.rescode = 400 + this.$refs.resmodal.show = true + } + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + } + + }, 200) + } + }) + }, + //鍒犻櫎璇︽儏 + longpredel(index, eindex) { + this.singlist[index].cardNum = true + this.printflag = false + if (eindex == 1) { + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + }, + //鍗$墖閫変腑 + click(e) { + e.cardNum = true + this.$forceUpdate() + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + this.$forceUpdate() + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + // successPic(data, index, lists, name) { + // this.fileList.push(data.data) + // }, + // //鍒犻櫎鍥剧墖 + // remove(index, lists, name) { + // this.fileList.splice(index, 1) + // }, + //纭鏀惰揣 + submit() { + let params = { + id: this.singlist[0].ordersId, + // remarks: this.fileList.toString() + remarks:this.base + } + updateHead(params).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.reset() + } + }) + }, + //娓呮閫変腑 + reset() { + this.singlist = [] + this.warehouse.warehouseCode = '' + this.fileList = [] + this.fileList1 = [] + }, + //鎵撳嵃 + onPrint() { + let _this = this + if (!uni.getStorageSync("deviceId")) { + uni.showToast({ + title: '璇疯繛鎺ユ墦鍗版満', + icon: 'error', + duration: 2000 + }) + return + } + this.writeBLECharacteristicValue() + }, + } + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/callTray/callTray.vue b/LA24030_LuLiPackageLine_Pda/pages/callTray/callTray.vue new file mode 100644 index 0000000..2207747 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/callTray/callTray.vue @@ -0,0 +1,471 @@ +<template> + <view class="overflow" style="padding-bottom: 150rpx"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">瀹瑰櫒瑙g粦</block> + </cu-custom> + <u-form labelPosition="left" label-width="180rpx" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" required class="uFormItem"> + <u-input v-model.trim="warehouse.containerCode" @confirm="getContainerData(1)" + :disabled="kwbhAllowed" placeholder="璇峰綍鍏ユ垨鎵爜" class="width" :focus="curFoucus"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <!-- <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff;" + v-if="warehouse.containerCode"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒璺熻釜鐮�:" class="uFormItem"> + <u-input v-model="warehouse.snCode" ref="materialRef" placeholder="璇锋壂鐮佸綍鍏�" + @focus="warehouse.snCode = ''" @confirm="getContainerData" + style="font-weight: bolder;margin-left: 15rpx;" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> --> + </u-form> + <!-- 鍒楄〃 --> + <view class="margin_top10rpx"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + :options="options" @click="longpress" @open="open" @close="close" class="margin_bottom10rpx"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <!-- --> + <view :class="item.checked ? 'bg_item' : ''" + class="fontSize32rpx width margin_auto background_fff padding10 relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex align-center"> + <u-checkbox v-model="item.checked" size="50rpx"></u-checkbox> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 40rpx;height: 40rpx;"> + {{ eindex + 1 }} + </view> + <text class="color_f18202 padding_left10rpx"> + {{ item.containerCode }} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <text class="color_80 padding_left25rpx"> + 瀹瑰櫒璺熻釜鐮侊細{{ item.snCode }} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="8"> + <text class="color_80 padding_left25rpx"> + 搴撳瓨鐘舵�侊細{{ item.stockStatusName }} + </text> + </u-col> + <u-col span="4"> + <text class="color_80"> + 鏁伴噺锛歿{ item.quantity }} + </text> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </view> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" /> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow = false" mode="bottom"> + <!-- <view class="pop "> --> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{ this.materlist.materialCode }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{ this.materlist.materialName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡灏忕被</text> + <text>{{ this.materlist.materialTypeName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text>{{ this.materlist.batchNo }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{ this.materlist.specificationModel }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏁伴噺</text> + <text>{{ this.materlist.unBindQuantity }}</text> + </view> + <!-- </view> --> + <view class="margin_top140rpx"> + <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='init' @reset='rest' /> + </view> + </u-popup> + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='瀹瑰櫒瑙g粦' @submit='submit' @reset='back' /> + + </view> +</template> +<script> +import { getContainerMaterial, unbindOrder } from '@/api/putIn/untie.js' +import BluePrint from '@/pages/print/bluePrint.js' +import ButtonModal from '../../components/buttonModal.vue' +import ModalCode from '../../components/ModalCode.vue' +import { getAttrValue } from '@/utils/tool.js' +import { getContainDetail, onlyUpdateDutyCycle } from '../../api/putIn/artificial.js' +import { + getPutawayStockQuan +} from '../../api/putaway/putaway.js' +export default { + data() { + return { + operator: '', + warehouse: { + containerCode: '', + materialCode: '', + dutyCycle: '', + gridNumber: 1, + useNumber: 0, + exitNumber: 0 + }, + singlist: [ + // {} + ], //璇︽儏鍒楄〃 + ordersId: 0, //褰撳墠瀹瑰櫒缁戝畾鐨勪笂鏋跺崟 + rescode: 0, + resmessage: '', + options: [{ + text: '鎵撳嵃', + style: { + backgroundColor: '#fc9f35' + } + } + ], + detailshow: false, + materlist: {}, + curFoucus: true, + timer: null, + timerSm: null, + detailableZb: false, + detailable: false, + gridFocus: false, + gridable: true, + kwbhAllowed: false + } + + }, + components: { + ButtonModal, + ModalCode + }, + onLoad() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + watch: { + containerCode(val) { + if (!val) { + this.detailable = false; + this.detailableZb = false; + this.warehouse.exitNumber = 0 + } + } + }, + methods: { + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + close(index) { + this.singlist[index].show = false; + }, + //鐗╂枡璇︽儏 + longpress(index, eindex) { + this.materlist = this.singlist[index] + this.detailshow = true + }, + //鏍囩閲嶆柊鎵撳嵃 + init() { + const arr = ['materialCode', 'unBindQuantity']; + const arrzw = ['鐗╂枡缂栧彿', '鏈瑙g粦鏁伴噺'] + let isAllow = '' + Object.keys(this.materlist).forEach(item => { + if (arr.includes(item)) { + if (!this.materlist[item]) { + isAllow = arr.indexOf(item) + // this.rescode = 400 + // this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.resmessage = `${item}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.$refs.resmodal.show = true + return + } + } + }) + if (isAllow != '') { + this.detailshow = false + this.rescode = 400 + this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + this.$refs.resmodal.show = true + return + } + if (this.materlist.unBindQuantity <= 0 || this.materlist.unBindQuantity > this.materlist.quantity) { + this.detailshow = false + this.rescode = 400 + this.resmessage = `鏁伴噺涓嶇鍚堣鑼冿紝涓嶈兘缁х画鎵撳嵃` + this.$refs.resmodal.show = true + return + } + if (!this.materlist.specificationModel) { + this.materlist.specificationModel = '' + } + let ptintContext = [ + { type: 'text', x: 0, y: 0, text: '', size: 2, rotate: 0, bold: 0, underline: false, reverse: false }, + { type: 'text', x: 0, y: 0, text: '', size: 2, rotate: 0, bold: 0, underline: false, reverse: false }, + { type: 'text', x: 0, y: 0, text: '', size: 2, rotate: 0, bold: 0, underline: false, reverse: false }, + /* 浠ヤ笂绌烘暟鎹紝涓洪槻姝涪鍖呮椂鎵撳嵃涓嶆甯� */ + { type: 'line', x1: 3, y1: 3, x2: 565, y2: 3, width: 2 }, + { type: 'line', x1: 3, y1: 3, x2: 3, y2: 345, width: 2 }, + { type: 'line', x1: 3, y1: 345, x2: 565, y2: 345, width: 2 }, + { type: 'line', x1: 565, y1: 345, x2: 565, y2: 3, width: 2 }, + { type: 'text', x: 80, y: 15, text: '鐗ч噹姹借溅瑁呭(姝︽眽)鏈夐檺鍏徃', size: 3, rotate: 0, bold: 1, underline: false, reverse: false }, + { type: 'line', x1: 3, y1: 60, x2: 565, y2: 60, width: 2 }, + { type: 'text', x: 10, y: 75, text: `鐗╂枡缂栧彿: ${this.materlist.materialCode}`, size: 2, rotate: 0, bold: 1, underline: false, reverse: false }, + { type: 'line', x1: 3, y1: 110, x2: 380, y2: 110, width: 2 }, + { type: 'text', x: 10, y: 125, text: `鐗╂枡鍚嶇О: ${this.materlist.materialTypeName || ''}`, size: 2, rotate: 0, bold: 1, underline: false, reverse: false }, + { type: 'line', x1: 3, y1: 160, x2: 380, y2: 160, width: 2 }, + { type: 'text', x: 10, y: 175, text: `鎵规: ${this.materlist.batchNo}`, size: 2, rotate: 0, bold: 1, underline: false, reverse: false }, + { type: 'line', x1: 3, y1: 210, x2: 565, y2: 210, width: 2 }, + { type: 'line', x1: 380, y1: 60, x2: 380, y2: 210, width: 2 }, + { type: 'qr', x: 410, y: 72, text: `PARTS NUMBER: ${this.materlist.materialCode},SAP: ${this.materlist.sap_Location || ''},BOXNUM: ${this.materlist.boxNo || ''},LOT NO: ${this.materlist.batchNo},QUANTITY: ${this.materlist.unBindQuantity}`, width: 3, level: 1 }, + { type: 'text', x: 10, y: 225, text: `瑙勬牸鍨嬪彿: ${this.materlist.specificationModel.length > 32 ? this.materlist.specificationModel.substr(0, 32) : this.materlist.specificationModel}`, size: 2, rotate: 0, bold: 1, underline: false, reverse: false }, + { type: 'line', x1: 3, y1: 260, x2: 565, y2: 260, width: 2 }, + { type: 'text', x: 120, y: 290, text: 'MAKINO J(CHINA) CO.LTD', size: 3, rotate: 0, bold: 1, underline: false, reverse: false }, + ] + console.log(ptintContext) + BluePrint.print(this.$store, ptintContext).then(() => { + // 鍏抽棴寮规 骞舵仮澶嶆粦鍔ㄥ潡 + this.detailshow = false + this.addForm.code = this.materlist.materlist; + this.addForm.name = this.materlist.materialName; + this.addForm.batchNo = this.materlist.batchNo; + this.addForm.specificationModel = this.materlist.specificationModel; + addPrintRecord(this.addForm).then(res => { + console.log(res); + }) + uni.showToast({ + title: '鎵撳嵃鎴愬姛', + duration: 2000 + }) + }).catch((err) => { + // uni.showToast({ + // title:'鎵撳嵃澶辫触', + // duration: 2000 + // }) + }) + }, + materialBlur() { + clearTimeout(this.timerSm) + this.timerSm = null + if (this.warehouse.materialCode == '') { + return + } + + this.timer = setTimeout(() => { //澶氭瑙﹀彂bug 寤惰繜bug + //鍒ゆ柇褰撳墠鐗╂枡鏄惁鍦ㄧ洏鐐瑰垪琛ㄤ腑 + const index = this.singlist.findIndex(item => item.materialCode == this.warehouse.materialCode && item.batchNo == lotNo); + if (index > -1) { + this.singlist[index].checked = 1 + this.singlist.unshift(...this.singlist.splice(index, 1)) + return + } else { + clearTimeout(this.timer) + this.timer = null + this.containerBlur() + } + }, 100) + }, + containerBlur() { + if (this.warehouse.containerCode == '' || this.warehouse.materialCode == '') { + return + } + getContainerMaterial(this.warehouse).then(res => { + if (res.data == null || res.data.length == 0) { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + return; + } + this.warehouse.dutyCycle = res.data[0].dutyCycle || 0; + //缁欐墍鏈夌殑鏉愭枡涓�涓湭閫変腑鐨勭姸鎬� + res.data.map(item => { + item.checked = true, + item.unBindQuantity = '' + }) + this.singlist.unshift(...res.data) + this.ordersId = res.data[0].ordersId + }) + }, + //瑙g粦鏁伴噺澶辩劍浜嬩欢 + changeNum(option) { + //鍒ゆ柇鏄惁鍕鹃�夛紝濡傛灉鍕鹃�変簡锛屽氨瑕佸鏁伴噺鏍¢獙 + if (!option.checked) { + return + } + if (option.unBindQuantity == '') { + this.rescode = 400 + this.resmessage = '瑙g粦鏁伴噺涓嶈兘涓虹┖' + this.$refs.resmodal.show = true + } + + if (option.unBindQuantity <= 0) { + this.rescode = 400 + this.resmessage = '瑙g粦鏁伴噺蹇呴』澶т簬0' + this.$refs.resmodal.show = true + } + if (option.unBindQuantity > option.quantity) { + this.rescode = 400 + this.resmessage = '瑙g粦鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺' + this.$refs.resmodal.show = true + } + if (this.detailable) { + let filterHas = this.singlist.filter(item => item.unBindQuantity == Number(item.quantity)); + if (filterHas.length > 0) { + this.warehouse.exitNumber = this.warehouse.useNumber - filterHas.length + } + } + }, + //纭瑙g粦 + submit() { + const filterArr = this.singlist.filter(item => item.checked); + if (filterArr.length <= 0) { + this.rescode = 400 + this.resmessage = '璇锋壂鐮佹垨閫夋嫨瑙g粦鐨勫鍣紒' + this.$refs.resmodal.show = true + return + } + //鍒ゆ柇閫変腑鐨勯噷闈㈡槸鍚﹀瓨鍦ㄨВ缁戠殑鏁伴噺涓嶇鍚堣鑼冪殑 + // const index = filterArr.findIndex(item => item.unBindQuantity == '' || item.unBindQuantity <= 0 || item.unBindQuantity > item.quantity) + // if (index > -1) { + // this.rescode = 400 + // this.resmessage = '瑙g粦鏁伴噺涓嶇鍚堣姹�' + // this.$refs.resmodal.show = true + // return + // } + const warehousOrderDetails = filterArr.reduce((curr, item) => { + curr.push({ + ...item + }) + return curr; + }, []) + //Flag璇锋眰鍙傛暟 鏍囪 + /// 1锛氱墿鏂欑粍鐩� + /// 2锛氬鍣ㄧ粍鐩� + /// 3锛氱墿鏂欒В缁� + /// 4锛氬鍣ㄨВ缁� + const params = { + flag: 4, + containerCode: this.warehouse.containerCode, + orderDetails: warehousOrderDetails + } + uni.showModal({ + title: '瑙g粦', + content: '鏄惁纭瑙g粦锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + unbindOrder(params).then(res => { + this.rescode = 200 + this.$refs.resmodal.show = true; + this.resmessage = '瑙g粦鎴愬姛' + this.back(); + }) + } else if (res.cancel) { + + } + }) + }); + }, + rest() { + }, + //鑾峰彇瀹瑰櫒鐨勪俊鎭� + getContainerData(param) { + if (this.warehouse.containerCode == '') { + uni.showToast({ + title: '璇锋壂瀹瑰櫒缂栧彿', + icon: 'none', + duration: 2000 + }); + return + } + getPutawayStockQuan({ + 'containerCode': this.warehouse.containerCode, + 'SNCode': this.warehouse.snCode + }).then(res => { + // //debugger + if (!res.result) { + uni.showToast({ + title: '鏁版嵁涓嶅瓨鍦�', + icon: 'none', + duration: 2000 + }); + return + } + //debugger + const result = res.result.details; + if (Array.isArray(result) && result.length == 0) { + uni.showToast({ + title: '鏁版嵁涓嶅瓨鍦�', + icon: 'none', + duration: 2000 + }); + return + } + this.singlist = result; + }) + }, + //鍏ㄩ儴鍙栨秷 + back() { + this.ordersId = 0; + this.singlist = []; + this.$refs.warehouseRef.resetFields(); + this.warehouse.containerCode = '' + } + }, + unmounted() { + if (this.timer) { + clearTimeout(this.timer) + this.timer = null + } + }, +} +</script> +<style lang="scss"> +.content { + height: 500rpx; + overflow-y: scroll; + width: 100%; + padding: 15rpx; + box-sizing: border-box; + + .content-item { + padding: 15rpx; + background-color: #fff; + margin-bottom: 15rpx; + border-radius: 8rpx; + font-size: 32rpx; + } +} + +.bg_item { + background: #FFEBCD !important; +} +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/callTray/callTray2.vue b/LA24030_LuLiPackageLine_Pda/pages/callTray/callTray2.vue new file mode 100644 index 0000000..45e174d --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/callTray/callTray2.vue @@ -0,0 +1,288 @@ +<template> + <view class=""> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鍛煎彨绌烘墭</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class=""> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10" @tap="getVehicleType"> + <u-form-item label="瀹瑰櫒绫诲瀷:" prop="tray" required + style="font-size: 16px;font-weight: bold;padding: 0;"> + <text class="padding_left30rpx fontSize32rpx" :class="warehouse.tray?'':'text-80'" + style="font-weight: bolder;">{{warehouse.tray?warehouse.tray:'璇烽�夋嫨瀹瑰櫒绫诲瀷'}}</text> + <u-select v-model="modalshow" :list="wolist" @confirm="confirm"></u-select> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon name="arrow-down" class="padding_left30rpx"></u-icon> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="瀹瑰櫒鏁伴噺:" prop="num" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.num" type="number" @focus="focu=true" @blur="clear" + placeholder="璇疯緭鍏ュ鍣ㄦ暟閲�" class="width" + style="font-weight: bolder;margin-left: 30rpx;margin-top: 16rpx;"> + </input> + <u-icon name="close-circle-fill" color="#848484" v-if="warehouse.num && focu" + @click="warehouse.num=''"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="padding_left30rpx " name="arrow-down"></u-icon> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10" @tap="getCollect"> + <u-form-item label="鐩爣浣嶇疆:" prop="locaddr" required + style="font-size: 16px;font-weight: bold;padding: 0;"> + <text class="padding_left30rpx fontSize32rpx" :class="warehouse.locaddr?'':'text-80'" + style="font-weight: bolder">{{warehouse.locaddr?warehouse.locaddr:'璇烽�夋嫨鐩爣浣嶇疆'}}</text> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="padding_left30rpx " name="arrow-down"></u-icon> + </u-col> + </u-row> + </u-form> + </view> + <u-popup v-model="bottomshow" mode="bottom" border-radius="14"> + <view> + <cu-custom bgColor="bg-white" :isBack="false"> + <block slot="backText"> + </block> + <block slot="content">閫夋嫨鐩爣浣嶇疆</block> + </cu-custom> + <view class="width flex justify-around flex-wrap"> + <view class="width30 radius margin_top20rpx" v-for="(item,eindex) in addrlist" + @tap="addtap(item,eindex)" :key='eindex'> + <view + class="width flex align-center padding20_0 justify-center text_align_center height56rpx padding5_10 fontSize36rpx" + :class="active==eindex?'bg-f18202':'color_f18202 border_1989FA' "> + <text class="text_overflow text-bold ">{{item.value}}</text> + </view> + </view> + </view> + + <view class="flex"> + <button class="width45 margin_top40rpx margin_bottom30rpx bg-grey" @tap="bottomRest">鍙栨秷</button> + <button class=" width45 margin_top40rpx margin_bottom30rpx bg-f18202" @tap="bottomSub">纭</button> + </view> + </view> + </u-popup> + <button-modal :subShow='true' garmenTitle='鍛煎彨绌烘墭' @submit='call' @reset='rest' /> + + </view> +</template> + +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import { + getCallTray, + getContainerTypes, + getCollect + } from '../../api/putIn/callTray.js' + export default { + data() { + return { + rescode: 0, + resmessage: "", + wolist: [{ + key: '1205', + value: '姹�' + }, + { + key: '24432', + value: '婀�' + } + ], + warehouse: { + tray: '', //杞藉叿绫诲瀷 + num: "", //杞藉叿鏁伴噺 + locaddr: '' //鐩爣浣嶇疆 + }, + focu: false, //娓呯┖鎸夐挳闅愭樉 + show: false, + modalshow: false, + bottomshow: false, + addrlist: [], + value: '', + active: -1, + // flag: false, + vehiclelist: [], //杞藉叿鍙傛暟 + storehouselist: [], //鐩爣浣嶇疆鍙傛暟 + warehouseRules: { + tray: [{ + required: true, + message: '瀹瑰櫒绫诲瀷涓嶈兘涓虹┖', + trigger: 'blur' + }], + num: [{ + required: true, + message: '瀹瑰櫒鏁伴噺涓嶈兘涓虹┖', + trigger: 'blur' + }], + locaddr: [{ + required: true, + message: '鐩爣浣嶇疆涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + trayRules: { + tray: [{ + required: true, + message: '瀹瑰櫒绫诲瀷涓嶈兘涓虹┖', + trigger: 'blur' + }], + }, + numRules: { + num: [{ + required: true, + message: '瀹瑰櫒鏁伴噺涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + locaddrRules: { + locaddr: [{ + required: true, + message: '鐩爣浣嶇疆涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + operator: '' + } + }, + components: { + ButtonModal, + ModalCode + }, + onReady() {}, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //杞藉叿绫诲瀷 + getVehicleType() { + getContainerTypes({ + WareContainerType: "" + }).then((res) => { + if (res.code == 200) { + if (res.data.length == 0) { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + return + } + this.wolist = res.data + this.wolist.forEach((item, index) => { + item.label = `${item.TypeName}(${item.Sums})` + item.value = index + 1 + }) + this.modalshow = true + } else { + uni.showModal({ + title: '鎻愮ず', + content: res.message, + showCancel: false, + }); + } + }) + }, + // 娉ㄦ剰杩斿洖鍊间负涓�涓暟缁勶紝鍗曞垪鏃跺彇鏁扮粍鐨勭涓�涓厓绱犲嵆鍙�(鍙湁涓�涓厓绱�) + confirm(e) { + let index = e[0].value - 1 + this.vehiclelist = this.wolist[index] + // this.warehouse.locaddr = e[0].label + this.warehouse.tray = e[0].label + this.$refs.warehouseRef.setRules(this.trayRules) + this.$refs.warehouseRef.validate(valid => {}) + }, + clear() { + setTimeout(() => { + this.focu = false + }, 200) + this.$refs.warehouseRef.setRules(this.numRules) + this.$refs.warehouseRef.validate(valid => {}) + }, + //鐩爣浣嶇疆 + getCollect() { + getCollect().then((res) => { + if (res.code == 200) { + this.addrlist = res.data + } else { + uni.showModal({ + title: '鎻愮ず', + content: res.message, + showCancel: false, + }); + } + }) + this.bottomshow = true + }, + //閫夋嫨鐩爣浣嶇疆 + addtap(val, index) { + this.active = index + this.warehouse.locaddr = val.value + this.storehouselist = val + this.$refs.warehouseRef.setRules(this.locaddrRules) + this.$refs.warehouseRef.validate(valid => {}) + }, + //鐩爣浣嶇疆鍙栨秷 + bottomRest() { + this.active = -1 + this.bottomshow = false + }, + //鐩爣浣嶇疆纭 + bottomSub() { + this.active = -1 + this.bottomshow = false + }, + //閲嶇疆 + rest() { + this.warehouse.tray = '' + this.warehouse.num = '' + this.warehouse.locaddr = '' + }, + //鍛煎彨瀹瑰櫒 + call() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + this.$refs.warehouseRef.validate(valid => { + if (valid) { + let params = { + vehicleKey: this.vehiclelist.key, + vehicleValue: this.vehiclelist.label, + num: this.warehouse.num, + storehouseKey: this.storehouselist.key, + storehouseName: this.storehouselist.value + } + getCallTray(params).then((res) => { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + if (res.code == 200) { + this.rest() + } + }) + + } else {} + }) + + } + } + } +</script> + +<style scoped> + .text-80 { + color: #808080; + } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/check/check/check.vue b/LA24030_LuLiPackageLine_Pda/pages/check/check/check.vue new file mode 100644 index 0000000..0a2e5fb --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/check/check/check.vue @@ -0,0 +1,423 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> </block> + <block slot="content">鐩樼偣涓嬪彂</block> + </cu-custom> + <view + class="flex justify-end align-center padding_right30rpx padding_top12rpx" + > + 鐩樼偣鍗曞彿锛歿{ checkForm.orderNum }} + </view> + <u-form + labelPosition="left" + label-width="150rpx" + :model="checkForm" + ref="warehouseRef" + > + + </u-form> + + <modal-code :rescode="rescode" :resmessage="resmessage" ref="resmodal" /> + <u-empty + text="鏆傛棤鍑哄簱鐗╂枡" + mode="list" + v-if="singlist.length == 0" + class="height300rpx padding_top12rpx" + ></u-empty> + <!-- <view class="" v-if="singlist.length>0"> + <view class="width margin_auto background_fff"> + <view class="flex align-center height80rpx padding border border_radius box_sizing justify-between"> + <view class="fontSize34rpx iconfont icon-zhanghao col-0d11c9">鍑哄簱鍙�</view> + <view class=""> + <text>{{loca}}</text> + <u-icon name="arrow-down" style="color: #b5b5b5;" @click="outlist"> + </u-icon> + </view> + </view> + <u-select v-model="accshow" :list="accList" @confirm="confirm"></u-select> + </view> --> + <scroll-view scroll-y="true" style="height: 74vh; margin-top: 10rpx"> + <view + class="background_fff margin_bottom25rpx" + v-for="(item, index) in singlist" + :key="index" + @tap="pitch(item)" + :class="item.edit ? 'clickactive' : ''" + > + <view style="border-bottom: 1px solid #c6bfb6" class="padding"> + <view class="flex justify-between width"> + <view class="fontSize32rpx color_f18202" + >瀹瑰櫒缂栧彿锛歿{ item.containerCode }}</view + > + + <u-col :span="2"> + <view + class="text_align_center" + :class=" + item.checkStatusName == '鐩樼偣涓�' + ? 'inventory' + : item.checkStatusName == '鏈洏鐐�' + ? 'noinventory' + : 'haveinventory' + " + > + {{ item.checkStatusName }} + </view> + </u-col> + + <view + class="fontSize32rpx color_1989FA" + @click.stop="opendetails(item, $event)" + > + {{ item.detailsFlag ? "闅愯棌鐗╂枡" : "鏌ョ湅鐗╂枡" }} + </view> + </view> + <!-- <u-row style='padding: 12rpx 7rpx 5rpx;' class='fontSize26rpx'> + <u-col :span='4' class=''>搴撳尯锛歿{item.wareRgionName}}</u-col> + <u-col :span='4' class=''>璐ф灦锛歿{item.wareShelvesName}}</u-col> + <u-col :span='4' class=''>搴撲綅锛歿{item.wareLocationName}}</u-col> + </u-row> --> + </view> + <view v-if="item.detailsFlag"> + <view + class="item u-border-bottom" + v-for="(eitem, eindex) in item.partList" + :key="eindex" + > + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view + :key="index + 'singlist'" + class="fontSize32rpx width margin_auto padding15 padding_bottom border_radius relative box_sizing transition" + style="border-bottom: 1px solid #ccc" + :class="item.edit ? 'clickactive' : ''" + > + <u-row> + <u-col span="5" class="flex"> + <view class="flex justify-center align-center circkle06"> + {{ eindex + 1 }} + </view> + <view class="color_f18202 padding_left10rpx"> + {{ eitem.materialCode }} + </view> + </u-col> + <u-col span="3" class="color_80"> + {{ eitem.checkResultName }} + </u-col> + <u-col span="3" class="color_80"> + 鏁伴噺锛歿{ eitem.quantity }} + </u-col> + </u-row> + <!-- <u-row> + <u-col span="6"> + <view class="Wb_box"> + <text class="el_batchNo"> 浠撳簱锛� </text> + <text class="el_batchVal">{{ item.wareHouse }}</text> + </view> + </u-col> + <u-col span="6"> + <view class="Wb_box"> + <text class="el_batchNo"> 搴撳尯锛� </text> + <text class="el_batchVal"> + {{ item.regionName }}</text> + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="Wb_box"> + <text class="el_batchNo"> 瀹瑰櫒鎬绘暟锛� </text> + <text class="el_batchVal">{{ + item.locationCount + }}</text> + </view> + </u-col> + <u-col span="6"> + <view class="Wb_box"> + <text class="el_batchNo"> 鐗╂枡鎬绘暟锛� </text> + <text class="el_batchVal"> + {{ item.materialCount }}</text> + </view> + </u-col> + </u-row> --> + </view> + </view> + </view> + </view> + </view> + </scroll-view> + + <u-select + v-model="showLeiBie" + :list="borrowLeiBieList" + value-name="id" + label-name="value" + @confirm="confirmLeiBie" + ></u-select> + + <!-- <view + class="background_fff fixed width flex align-center justify-between padding10 font_weight_bold fontSize32rpx"> + <view class=""> + 鍏ㄩ儴{{singlist.length}} + </view> + <view class=""> + 宸查�墈{arr.length}} + </view> + </view> --> + <!-- <button-modal :subShow="true" garmenTitle="纭鍑哄簱" @submit="submit" /> --> + <button-modal + :empTytowerShow="true" + cleaningTitle="杩斿洖" + garmenTitle="纭" + @submit="submit" + @reset="back" + /> + </view> +</template> + +<script> +import ButtonModal from "../../../components/buttonModal.vue"; +import ModalCode from "../../../components/ModalCode.vue"; +import { OrderSearch, material, submit } from "@/api/check/check.js"; +import { outlist } from "@/api/putIn/three.js"; +export default { + data() { + return { + modalshow: false, + accshow: false, + show: false, + rescode: 0, + resmessage: "", + operator: "", + active: null, //璺宠浆鏍峰紡 + singlist: [], //瀹瑰櫒鍒楄〃 + arr: [], //閫変腑鐨勬暟缁� + accList: [], + loca: "", //鍑哄簱鍙� + ware: "", //鍑哄簱鍙d紶鍙� + options: [ + { + text: "璇︽儏", + style: { + backgroundColor: "#fc9f35", + }, + }, + ], + detailshow: false, + statusName: "", + OrderId: "", //鍗曞彿id + partList: [], //鐗╂枡鍒楄〃 + materList: [], //璇︽儏鍒楄〃 + showLeiBie: false, + checkForm: { + Status: "", + PageNo: 1, + PageSize: 10, + orderNum: "", + taskTypeName: "", + }, + borrowLeiBieList: [ + { + id: "0", + value: "鍒濈洏", + }, + { + id: "1", + value: "澶嶇洏", + }, + ], + }; + }, + components: { + ButtonModal, + ModalCode, + }, + onLoad(options) { + let parse = JSON.parse(options.item); + if (parse) { + this.orderNo = parse.orderNo; + this.statusName = parse.statusName; + this.checkForm.orderNum = parse.orderNo; + this.checkForm.OrderId = parse.id; + this.checkForm.checkOperatorClassify = parse.checkStage; + this.OrderSearch(); + } + }, + mounted() { + // this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + confirmLeiBie(con) { + console.log(con); + this.checkForm.taskType = con[0].value; + this.checkForm.taskTypeName = con[0].label; + this.OrderSearch(1); + }, + //鏄剧ず闅愯棌鐗╂枡璇︽儏 + opendetails(e, event) { + //闃叉绌块�� + event.stopPropagation(); + //鏍规嵁瀹瑰櫒鏌ヨ鐗╂枡 + e.detailsFlag = !e.detailsFlag; + if (e.partList.length > 0) { + this.$forceUpdate(); + return; + } + material({ + OrderNo: this.checkForm.orderNum, + ContainerCode: e.containerCode, + checkStatus: e.checkStatus, + CheckSendForpda:"1" + }).then((res) => { + if (res.code == 200) { + e.partList = res.result?.items ?? []; + this.singlist.forEach((item) => { + if (item.containerCode !== e.partList[0].containerCode) { + item.detailsFlag = false; + } + }); + this.$forceUpdate(); + } else { + this.$refs.resmodal.show = true; + this.resmessage = res.message; + this.rescode = res.code; + } + }); + }, + //閫変腑 + pitch(e) { + e.edit = !e.edit; + this.arr = this.singlist.filter((item) => item.edit); + this.$forceUpdate(); + }, + //瀹瑰櫒璇︽儏 + OrderSearch(param) { + if (param) { + this.checkForm.PageNo = 1; + } + OrderSearch({ + orderNo: this.orderNo, + PageNo: 1, + taskType: this.checkForm.taskType, + }).then((res) => { + if (res.code == 200) { + this.singlist = res.result.items; + this.singlist.forEach((item) => { + item.detailsFlag = false; + item.partList = []; + }); + } + }); + }, + //鍑哄簱鍙� + outlist() { + let params = { + PageNo: 1, + PageSize: 999, + }; + outlist(params).then((res) => { + if (res.code == 200) { + this.accshow = true; + this.accList = res.data.rows.filter((item) => { + if (item.siteTypeName == "鍑哄簱" || item.siteTypeName == "鍑哄叆搴�") { + return item; + } + }); + this.accList.forEach((item, index) => { + item.label = item.name; + item.value = index + 1; + }); + if (this.accList.length == 0) { + this.accshow = false; + this.rescode = 500; + this.resmessage = "鏆傛棤鍑哄簱鍙�"; + this.$refs.resmodal.show = true; + } + } + }); + }, + //閫夋嫨鍑哄簱鍙� + confirm(e) { + this.loca = e[0].label; + this.ware = this.accList[e[0].value - 1].code; + }, + // //鍒犻櫎璇︽儏 + // longpress(index, eindex) { + // this.materlist = this.partList[index] + // this.detailshow = true + // }, + // // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + // open(index) { + // // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + // this.singlist[index].show = true; + // this.singlist.map((val, idx) => { + // if (index != idx) this.singlist[idx].show = false; + // }) + // }, + //纭鍑哄簱 + submit() { + // if (this.singlist.length == 0) { + // this.rescode = 400; + // this.resmessage = "鏃犲嚭搴撹鎯�"; + // this.$refs.resmodal.show = true; + // return; + // } + submit({ + orderId: this.checkForm.OrderId, + checkOperatorClassify: this.checkForm.checkOperatorClassify, + }).then((res) => { + this.$refs.resmodal.show = true; + this.rescode = res.code; + this.resmessage = res.message; + if (res.code == 200) { + this.rescode = 200; + this.resmessage = "鍑哄簱鎴愬姛"; + this.$refs.resmodal.show = true; + setTimeout(() => { + uni.redirectTo({ + url: `./index`, + }); + }, 3000); + } + }); + }, + back(param) { + uni.navigateTo({ + url: `/pages/check/check/index`, + }); + }, + }, +}; +</script> + +<style lang="scss"> +// 鐩樼偣涓� +.inventory { + border: 1px solid #08cd39; + border-radius: 40vh; + color: #08cd39; + background-color: #e6ffec; +} + +// 鏈洏鐐� +.noinventory { + border: 1px solid #ff9d0c; + border-radius: 40vh; + color: #ff9d0c; + background-color: #fff7ea; +} + +// 宸茬洏鐐� +.haveinventory { + border: 1px solid #0a8cff; + border-radius: 40vh; + color: #0a8cff; + background-color: #e7f5ff; +} + +.overflow { + padding-bottom: 100px; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/check/check/index.vue b/LA24030_LuLiPackageLine_Pda/pages/check/check/index.vue new file mode 100644 index 0000000..f1d77a5 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/check/check/index.vue @@ -0,0 +1,426 @@ +<template> + <view> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> </block> + <block slot="content">鐩樼偣涓嬪彂</block> + </cu-custom> + <u-form labelPosition="left" label-width="150rpx" :model="checkForm" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx "> + <u-col span="10"> + <u-form-item label="鐩樼偣鍗曞彿:" prop="orderNo" class="uFormItem"> + <u-input v-model.trim="checkForm.orderNo" class="width" :clearable="false" placeholder="璇疯緭鍏ュ崟鍙�" + @confirm="Status('', 1)"></u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="containerFocus"> + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + <view class="boxList" v-show="modalshow" @click="modalshow = false" @touchmove.stop> + <view class="innerWrap"> + <ul v-for="(item, eindex) in wolist" :key="eindex"> + <li @click="confirm2(eindex)"> {{ item.text }}</li> + </ul> + </view> + </view> + </u-row> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx padding_right30rpx"> + <u-col span="12" class="margin_top10rpx"> + <u-form-item label="鐩樼偣闃舵:" prop="checkStage" class="uFormItem"> + <u-input v-model="checkForm.checkStageName" type="select" @click="showLeiBie = true" + placeholder="璇烽�夋嫨鐩樼偣闃舵" class="width"> + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <!-- <view class="background_fff margin_bottom25rpx margin_top25rpx content-item"> + <u-row> + <u-col :span="3" style="text-align: center; padding: 25rpx 0" v-for="(item, index) in checklist" + :key="index" @click="Status(item.status,2)"> + <view class="" style="border-right: 1px solid #efefef"> + <view class="padding_bottom18"> + {{ item.statusName }} + </view> + <view class="font_weight_bold fontSize36rpx" :class="item.statusName == '鎬绘暟閲�' + ? 'col-0d11c9' + : item.statusName == '鐩樼偣涓�' + ? 'col-0ece3d' + : item.statusName == '鏈洏鐐�' + ? 'col-ff9d0b' + : 'col-0589ff' + "> + {{ item.count }} + </view> + </view> + </u-col> + </u-row> + </view> --> + <view> + <view class="padding15 background_fff margin_bottom10rpx content-item" v-for="(item, index) in singlist" + :key="index" @click="skip(item)"> + <u-row> + <u-col span="1"> + <text class="flex justify-center align-center circkle06">{{ index + 1 }}</text> + </u-col> + <u-col :span="8"> + <text class="font_weight_bold color_f18202 fontSize36rpx"> {{ item.orderNo }} </text> + <!-- <text class="subTitle"> {{ item.updatedTime }} </text> --> + </u-col> + <u-col :span="3"> + <view class="text_align_center text_dot" :class="item.checkStageName == '鍒濈洏寮�鍚�' + ? 'inventory' + : item.checkStageName == '澶嶇洏寮�鍚�' + ? 'noinventory' + : 'haveinventory' + "> + {{ item.checkStageName }} + </view> + </u-col> + </u-row> + <u-row> + <!-- <u-col span="6"> + <view class="Wb_box"> + <text class="el_batchNo"> 浠撳簱锛� </text> + <text class="el_batchVal">{{ item.areaName }}</text> + </view> + </u-col> --> + <u-col span="6"> + <view class="Wb_box"> + <text class="el_batchNo"> 鐩樼偣鏂瑰紡锛� </text> + <text class="el_batchVal">{{ item.checkModeName }}</text> + </view> + </u-col> + <u-col span="6"> + <view class="Wb_box"> + <text class="el_batchNo"> 搴撳尯锛� </text> + <text class="el_batchVal"> {{ item.areaName }}</text> + </view> + </u-col> + </u-row> + + <!-- <u-row> + <u-col span="6"> + <view class="Wb_box"> + <text class="el_batchNo"> 瀹瑰櫒鎬绘暟锛� </text> + <text class="el_batchVal">{{ item.locationCount }}</text></view> + </u-col> + <u-col span="6"> + <view class="Wb_box"> + <text class="el_batchNo"> 鐗╂枡鎬绘暟锛� </text> + <text class="el_batchVal"> {{ item.materialCount }}</text></view> + </u-col> + </u-row> --> + + + <!-- <u-row class="fontSize30rpx"> + <u-col :span="7" style="padding: 18rpx">瑙勫垯鍚嶇О锛歿{ item.ruleName }}</u-col> + <u-col :span="5"> 搴撲綅鏁帮細{{ item.locationCount }} </u-col> + </u-row> + <u-row class="fontSize30rpx"> + <u-col :span="12" class="text-gray" style="padding: 0 20rpx">鍒涘缓鏃ユ湡锛歿{ item.updatedTime }}</u-col> + </u-row> + <u-row class="fontSize30rpx"> + <u-col :span="12" class="text-gray" style="padding: 0 20rpx">鐖剁洏鐐瑰崟锛歿{ item.parentId }}</u-col> + </u-row> --> + </view> + </view> + <u-loadmore :status="status" :load-text="loadText" /> + + <u-select v-model="showLeiBie" :list="borrowLeiBieList" value-name="id" label-name="value" + @confirm="confirmLeiBie"></u-select> + </view> +</template> + +<script> +import ButtonModal from "../../../components/buttonModal.vue"; +import ModalCode from "../../../components/ModalCode.vue"; +import { query, Status } from "@/api/check/check.js"; +export default { + data() { + return { + renameFocus: false, + modalshow: false, + show: false, + rescode: 0, + resmessage: "", + operator: "", + active: null, //璺宠浆鏍峰紡 + singlist: [], //鐗╂枡璇︽儏 + checklist: [], //鐩樼偣缁熻 + checkForm: { + page: 1, + PageSize: 10, + orderNo: "", + checkStage: "", + CheckStageForPda: true + }, + checkTotal: 0, + status: "loadmore", + loadText: { + loadmore: "涓婃媺鍔犺浇鏇村", + loading: "鍔姏鍔犺浇涓�", + nomore: "宸茬粡鍒板簳浜�", + }, + showLeiBie: false, + borrowLeiBieList: [ + { + id: 1, + value: "鍒濈洏寮�鍚�", + }, + { + id: 4, + value: "澶嶇洏寮�鍚�", + } + ], + warehouse: { + code: "", + ToolTypeCode: "", + customerCodeName: "", + borrowUserName: "", + taskType: "", + taskTypeName: "", + planNo: "", + remark: "", + returnTime: "", + }, + wolist: [], + modalshow: false + }; + }, + components: { + ButtonModal, + ModalCode, + }, + //涓嬫媺鍒锋柊 + onPullDownRefresh() { + this.$nextTick(function () { + uni.stopPullDownRefresh(); //鍋滄褰撳墠椤甸潰涓嬫媺鍒锋柊 + }); + }, + // 瑙﹀簳浜嬩欢 + onReachBottom() { + if (this.checkTotal == this.singlist.length) { + return; + } + this.checkForm.page++; + this.Status('all'); + }, + onLoad() { + this.operator = JSON.parse(uni.getStorageSync("userInfo")).name; + // this.query(); + this.Status('all', 'init'); + + + }, + methods: { + getLeiBieList() { + // GetWareToolTypeLst().then(res => { + // if(res.data.length == 0){ + // return; + // } + // this.borrowLeiBieList = res.data; + // }) + }, + confirmLeiBie(con) { + console.log(con); + this.checkForm.checkStage = con[0].value; + this.checkForm.checkStageName = con[0].label; + this.Status('', 1); + }, + //鐩樼偣缁熻 + query() { + query().then((res) => { + this.checklist = res.data.list; + this.checklist.unshift({ + count: "", + status: "", + statusName: "鎬绘暟閲�", + }); + this.checklist[0].count = this.checklist.reduce((prev, next) => { + return Number(prev) + Number(next.count); + }, 0); + }); + }, + //鐩樼偣鍗曞彿 + Status(callback, param) { + if (callback == "all") { + if (param == 'init') { //鍒濆鍖� + this.checkForm.Status = '' + } + Status(this.checkForm).then((res) => { + // if (res.data.rows.length == 0 && !callback) { + // this.status = "nomore"; + // return; + // } + this.checkTotal = res.result?.total ?? []; + if (res.result.items && res.result.items.length > 0) { + this.singlist.push(...res.result.items); + } + // if (this.checkTotal == this.singlist.length) { + // this.status = "nomore"; + // } + // callback && callback(); + }); + } else { + if (param == 1) { // 鍗曞彿 浠诲姟绫诲瀷鍏ュ彛 + this.checkForm.page = 1; + } + if (param == 2) {// tab鍒囨崲 + this.checkForm.Status = callback; + this.checkForm.page = 1; + this.checkForm.planNo = ''; + this.checkForm.taskTypeName = ''; + } + + this.singlist = [] + Status(this.checkForm).then((res) => { + this.checkTotal = res.result?.total ?? []; + if (res.result.items && res.result.items.length > 0) { + this.singlist.push(...res.result.items); + } + }); + } + }, + //璺宠浆 + skip(item) { + uni.navigateTo({ + url: `./check?item=${JSON.stringify(item)}`, + }); + }, + //绫诲瀷鑱氱劍浜嬩欢 + containerFocus() { + uni.hideKeyboard() + this.getVehicleType(); + this.modalshow = true + }, + //绫诲瀷閫夋嫨 + confirm2(index) { + this.checkForm.orderNo = this.wolist[index].text; + this.Status('', 1); + // this.checkForm.orderNo = this.wolist[index].id; + }, + + //绫诲瀷 + getVehicleType() { + Status({ + 'page': 1, + 'PageSize': 50, + 'CheckStageForPda': true + }).then((res) => { + const dataT = res.result.items; + if (dataT && dataT.length == 0) { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + return + } + dataT.forEach(item => { + item.text = item.orderNo; + item.id = item.orderNo; + }) + this.wolist = dataT + }) + } + }, +}; +</script> + +<style lang="scss" scoped> +// 鐩樼偣涓� +.inventory { + border: 1px solid #08cd39; + border-radius: 40vh; + color: #08cd39; + background-color: #e6ffec; + // width: 60px; + font-size: 12px; +} + +// 鏈洏鐐� +.noinventory { + border: 1px solid #ff9d0c; + border-radius: 40vh; + color: #ff9d0c; + background-color: #fff7ea; +} + +// 宸茬洏鐐� +.haveinventory { + border: 1px solid #0a8cff; + border-radius: 40vh; + color: #0a8cff; + background-color: #e7f5ff; +} + +.col-0d11c9 { + color: #0d11c9; +} + +.col-0ece3d { + color: #0ece3d; +} + +.col-ff9d0b { + color: #ff9d0b; +} + +.col-0589ff { + color: #0589ff; +} + +.content-item { + width: 98%; + border-radius: 8rpx; + margin: 10rpx auto; +} + + +.boxList { + transition: all ease 2s; + position: fixed; + bottom: 0; + left: 0; + top: 0; + right: 0; + width: 100%; + height: 100%; + z-index: 999; + background: rgba(0, 0, 0, 0.6); + + .innerWrap { + max-height: 50%; + overflow-y: auto; + background: white; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + + ul { + padding: 0; + margin: 0; + + li { + padding: 0; + margin: 0; + border-bottom: 1px solid #e4e7ed; + list-style-type: none; + display: flex; + flex-direction: row; + line-height: 1; + justify-content: center; + align-items: center; + font-size: 13px; + padding: 14px 0; + flex-direction: column; + } + } + } + +} + +.text_dot{ + font-size: 12px !important; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/check/index.vue b/LA24030_LuLiPackageLine_Pda/pages/check/index.vue new file mode 100644 index 0000000..856e4bf --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/check/index.vue @@ -0,0 +1,382 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"></block> + <block slot="content">搴撲綅鐩樼偣</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="搴撲綅缂栧彿:" prop="Code" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.Code" placeholder="璇峰綍鍏ユ垨鎵爜" disabled + class="width padding_left25rpx" style="font-weight: bolder;margin-left: 15rpx;"> + </input> + </u-form-item> + </u-col> + <!-- <u-select v-model="visibleContainer" :list="containerList" value-name="wareContainerCode" label-name="wareContainerCode" @confirm="handleConfirm"></u-select> --> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.materialCode" placeholder="璇锋壂鐮佸綍鍏�" @focus="warehouse.materialCode=''" @blur="materialBlur" :clearable="false" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view v-show="singlist.length > 0" style="height: 450rpx;margin-bottom: 180rpx;overflow-y: scroll;"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpress" @open="open" :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :class="item.edit?'clickactive':''" + class="fontSize32rpx width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row style="margin-bottom: 15rpx;"> + <u-col span="11" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + {{item.wareMaterialCode}} - {{item.batchNo}} + </view> + </u-col> + <u-col span='1' v-if='sign'> + <u-icon name='question-circle' color='#f18202'></u-icon> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view style="padding: 5px 0 5px 10px;color: #808080;"> + SAP锛歿{item.sap_Location}} + </view> + </u-col> + </u-row> + <u-row> + <!-- <u-col span="6"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 搴撳瓨鏁帮細{{item.inventoryQuantity}} + </view> + </u-col> --> + <u-col span="6"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.quantity" type="number" @blur="changeNum(item)" + placeholder="璇疯緭鍏ュ疄鐩樻暟閲�" /> + </u-col> + <!-- 闅愯棌澶囨敞 [Editby shaocx,2023-04-21] --> + <!-- <u-col span="6"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.remarks" + placeholder="璇疯緭鍏ュ娉�" /> + </u-col> --> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom" :closeable='true'> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <!-- <scroll-view scroll-y="true" style="height: 50vh;"> --> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.wareMaterialCode}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡澶х被</text> + <text>{{materlist.wareMaterialCategoryName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡灏忕被</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.wareMaterialName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">搴撳瓨鏁伴噺</text> + <text>{{materlist.inventoryQuantity}}</text> + </view> + <view class="flex justify-around transition margin_top10rpx margin_bottom10rpx"> + <button class="width45 bg-ffe6c9 " @click="issue">闂鏍囪</button> + <!-- <button class="width25 bg-grey" @click="reset">閲嶇疆</button> --> + <!-- <button class="width25 bg-f18202 color_F2F2F2" @click="sub">纭畾</button> --> + </view> + <view class="" v-if="issueShow"> + <view class="line flex justify-between"> + <text class="text-gray">闂鎻忚堪锛�</text> + <u-input v-model="materlist.remarks"></u-input> + </view> + <!-- <view + class="width margin_auto background_fff padding15 border_radius relative box_sizing transition"> + <scroll-view scroll-y="true" style="height: 16vh;"> + <u-upload :action="action" upload-text="閫佽揣鍗曠収鐗�" :file-list="fileList1" + @on-success="successPic" @on-remove="remove"> + </u-upload> + </scroll-view> + </view> --> + <view class="padding" style="border-top: 1px solid #e4e4e4;"> + <button class="width bg-grey" @click="subissue">鎻愪氦闂</button> + </view> + </view> + </view> + </u-popup> + </view> + <button-modal :subShow='true' garmenTitle='鐩樼偣瀹屾垚' @submit='submit' /> + </view> +</template> + +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import {getSquareMaterial,issueSubmit,finish,getContainerData} from '@/api/check/check.js' + import {getAttrValue} from '@/utils/tool.js' + export default { + data() { + return { + visibleContainer: false, + containerList: [], + detailshow: false, + renameFocus: false, + modalshow: false, + issueShow: false, + rescode: 0, + resmessage: "", + focuM: false, + focu: false, + sign: false, //闂鏍囪瘑 + operator: '', + singlist: [], //鐗╂枡璇︽儏 + options: [ + // { + // text: '璇︽儏', + // style: { + // backgroundColor: '#fc9f35' + // }}, + ], + materlist: [], + warehouse: { + Code: '', + materialCode: '', + orderId: '' + }, + containerCode: '', + warehouseRules: { + Code: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + onLoad(option) { + if(option) { + this.warehouse.Code = option.wareContainerCode; + this.warehouse.orderId = option.orderId; + } + this.checkTask(); + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //浜岀淮鐮佸唴瀹瑰鐞� chenzhuwen + materialBlur() { + if(this.warehouse.materialCode==''){ + return + } + if(this.warehouse.materialCode.length<50){ + return + } + //鑾峰彇鎵规 + let lotNo = getAttrValue(this.warehouse.materialCode,'LOTNO') + //鐗╂枡缂栧彿 + this.warehouse.materialCode = getAttrValue(this.warehouse.materialCode,'PARTSNUMBER') + // SAP --- && item.sap_Location == SAP + let SAP = getAttrValue(this.warehouse.materialCode,'SAP') + //鍒ゆ柇褰撳墠鐗╂枡鏄惁鍦ㄧ洏鐐瑰垪琛ㄤ腑 + const index = this.singlist.findIndex(item => item.wareMaterialCode == this.warehouse.materialCode && item.batchNo == lotNo); + if(index > -1) { + this.singlist.unshift(...this.singlist.splice(index,1)) + }else { + this.rescode = 400 + this.resmessage = '姝ゆ壒娆$殑鐗╂枡涓嶅湪鐩樼偣鍒楄〃涓�' + this.$refs.resmodal.show = true + } + }, + //楠岃瘉瀹瑰櫒 + checkTask() { + this.containerCode = this.warehouse.Code; + this.focu = false + if (this.warehouse.Code !== '') { + getSquareMaterial(this.warehouse).then((res) => { + if (res.code == 200) { + if (res.data.length == 0) { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + return + } + + res.data.map(item => { + item.quantity = ''; + item.remarks = ''; + item.edit = false; + item.show = false; + }) + this.singlist = res.data + + } else { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + } + }) + }else { + this.rescode = 400 + this.resmessage = '搴撲綅濂戒笉鑳戒负绌�' + this.$refs.resmodal.show = true + } + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + this.singlist.forEach(item => { + item.materlist = [{ + issue: '' + }] + }) + this.materlist = this.singlist[index] + this.detailshow = true + }, + //闂鏍囪 + issue() { + this.issueShow = true + }, + //鎻愪氦闂 + subissue() { + this.issueShow = false + let params = { + wareContainerCode: this.materlist.wareContainerCode, + wareMaterialCode: this.materlist.wareMaterialCode, + batchNo: this.materlist.batchNo, + remarks: this.materlist.remarks, + orderId: this.materlist.orderId + } + issueSubmit(params).then((res) => { + // if(res.code==200){ + // this.$refs.resmodal.show = true + // this.resmessage = res.message + // this.rescode = res.code + this.$u.toast(res.data) + // } + }) + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + // 鐩樼偣鍏佽0 + // if (val.quantity && val.quantity > 0) { + if (val.quantity && val.quantity >= 0) { + // val.quantity = Number(val.quantity.toString().match(/^\d+(?:\.\d{0,2})?/)) // 淇濈暀涓や綅灏忔暟 + val.edit = true + this.$forceUpdate() + } else { + val.edit = false + this.$forceUpdate() + } + + }, + rest() { + this.warehouse.Code = '' + this.warehouse.materialCode = '' + this.singlist = [] + }, + //纭 + submit() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + if(this.singlist.length == 0) { + this.$refs.resmodal.show = true + this.resmessage = '鐩樼偣鏉愭枡鍒楄〃涓虹┖' + this.rescode = res.code + return + } + + const filterArr = this.singlist.filter(item =>item.edit == true) + const index = filterArr.findIndex(item => item.quantity == '' || item.quantity < 0) + if(index > -1) { + this.$refs.resmodal.show = true + this.resmessage = '璇峰~鍐欏疄鐩樻暟閲�' + this.rescode = res.code + return + } + let details = filterArr.reduce((curr,item) => { + curr.push({ + wareMaterialCode: item.wareMaterialCode, + batchNo: item.batchNo, + checkQuantity: item.quantity, + orderId: item.orderId, + sap_Location:item.sap_Location + }) + return curr + },[]) + + let params = { + wareContainerCode: this.warehouse.Code, + details + } + finish(params).then((res) => { + this.$refs.resmodal.show = true + this.resmessage = res.message + this.rescode = res.code + if (res.code == 200) { + uni.navigateTo({ + url: `./square` + }) + this.rest() + } + }) + } + }) + }, + //瀹瑰櫒鍥炲簱 + goBack() { + uni.navigateTo({ + url:`/pages/sort/return?containerCode=${this.containerCode}&taskType=2` + }) + } + }, + + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/check/index2.vue b/LA24030_LuLiPackageLine_Pda/pages/check/index2.vue new file mode 100644 index 0000000..c633bd7 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/check/index2.vue @@ -0,0 +1,377 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">骞冲簱鐩樼偣</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="搴撲綅缂栧彿:" prop="Code" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.Code" placeholder="璇峰綍鍏ユ垨鎵爜" disabled + class="width padding_left25rpx" style="font-weight: bolder;margin-left: 15rpx;"> + </input> + </u-form-item> + </u-col> + <u-select v-model="visibleContainer" :list="containerList" value-name="wareContainerCode" label-name="wareContainerCode" @confirm="handleConfirm"></u-select> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.materialCode" placeholder="璇锋壂鐮佸綍鍏�" @blur="materialBlur" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view v-show="singlist.length > 0" style="margin-bottom: 180rpx;"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpress" @open="open" :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :class="item.edit?'clickactive':''" + class="fontSize32rpx width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row style="margin-bottom: 15rpx;"> + <u-col span="11" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + {{item.wareMaterialCode}} - {{item.batchNo}} + </view> + </u-col> + <u-col span='1' v-if='sign'> + <u-icon name='question-circle' color='#f18202'></u-icon> + </u-col> + </u-row> + <u-row> + <!-- <u-col span="6"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 搴撳瓨鏁帮細{{item.inventoryQuantity}} + </view> + </u-col> --> + <u-col span="6"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.quantity" type="number" @blur="changeNum(item)" + placeholder="璇疯緭鍏ュ疄鐩樻暟閲�" /> + </u-col> + <!-- 闅愯棌澶囨敞 [Editby shaocx,2023-04-21] --> + <!-- <u-col span="6"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.remarks" + placeholder="璇疯緭鍏ュ娉�" /> + </u-col> --> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom" :closeable='true'> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <!-- <scroll-view scroll-y="true" style="height: 50vh;"> --> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.wareMaterialCode}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡澶х被</text> + <text>{{materlist.wareMaterialCategoryName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡灏忕被</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.wareMaterialName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">搴撳瓨鏁伴噺</text> + <text>{{materlist.inventoryQuantity}}</text> + </view> + <view class="flex justify-around transition margin_top10rpx margin_bottom10rpx"> + <button class="width45 bg-ffe6c9 " @click="issue">闂鏍囪</button> + <!-- <button class="width25 bg-grey" @click="reset">閲嶇疆</button> --> + <!-- <button class="width25 bg-f18202 color_F2F2F2" @click="sub">纭畾</button> --> + </view> + <view class="" v-if="issueShow"> + <view class="line flex justify-between"> + <text class="text-gray">闂鎻忚堪锛�</text> + <u-input v-model="materlist.remarks"></u-input> + </view> + <!-- <view + class="width margin_auto background_fff padding15 border_radius relative box_sizing transition"> + <scroll-view scroll-y="true" style="height: 16vh;"> + <u-upload :action="action" upload-text="閫佽揣鍗曠収鐗�" :file-list="fileList1" + @on-success="successPic" @on-remove="remove"> + </u-upload> + </scroll-view> + </view> --> + <view class="padding" style="border-top: 1px solid #e4e4e4;"> + <button class="width bg-grey" @click="subissue">鎻愪氦闂</button> + </view> + </view> + </view> + </u-popup> + </view> + <button-modal :subShow='true' garmenTitle='鐩樼偣瀹屾垚' @submit='submit' /> + </view> +</template> + +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import {checkTask,issueSubmit,finish,getContainerData} from '@/api/check/check.js' + import {getAttrValue} from '@/utils/tool.js' + export default { + data() { + return { + visibleContainer: false, + containerList: [], + detailshow: false, + renameFocus: false, + modalshow: false, + issueShow: false, + rescode: 0, + resmessage: "", + focuM: false, + focu: false, + sign: false, //闂鏍囪瘑 + operator: '', + singlist: [], //鐗╂枡璇︽儏 + options: [ + // { + // text: '璇︽儏', + // style: { + // backgroundColor: '#fc9f35' + // }}, + ], + materlist: [], + warehouse: { + Code: '', + materialCode: '' + }, + containerCode: '', + warehouseRules: { + Code: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + onLoad(option) { + this.warehouse.Code = option.wareContainerCode + console.log(option) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //瀹瑰櫒缂栧彿澶辩劍浜嬩欢 + containerBlur() { + this.visibleContainer = true; + this.getContainerList(); + }, + //鑾峰彇闇�瑕佺洏鐐圭殑瀹瑰櫒鍒楄〃 + getContainerList() { + getContainerData(this.warehouse.Code).then(res => { + if(res.data.length == 0) { + this.rescode = 400 + this.resmessage = '鍖归厤涓嶅埌闇�瑕佺洏鐐圭殑瀹瑰櫒' + this.$refs.resmodal.show = true + }else { + this.containerList = res.data; + console.log(this.containerList) + } + }) + }, + //瀹瑰櫒閫夋嫨 + handleConfirm(opt) { + this.warehouse.Code = opt[0].value; + this.checkTask(); + }, + //浜岀淮鐮佸唴瀹瑰鐞� chenzhuwen + materialBlur() { + //鑾峰彇鎵规 + let lotNo = getAttrValue(this.warehouse.materialCode,'LOTNO') + //鐗╂枡缂栧彿 + this.warehouse.materialCode = getAttrValue(this.warehouse.materialCode,'LOTNO','PARTSNUMBER') + // SAP --- && item.sap_Location == SAP + let SAP = getAttrValue(this.warehouse.materialCode,'SAP') + //鍒ゆ柇褰撳墠鐗╂枡鏄惁鍦ㄧ洏鐐瑰垪琛ㄤ腑 + const index = this.singlist.findIndex(item => item.wareMaterialCode == this.this.warehouse.materialCode && item.batchNo == lotNo); + if(index > -1) { + this.singlist.unshift(...this.singlist.splice(index,1)) + }else { + this.rescode = 400 + this.resmessage = '姝ゆ壒娆$殑鐗╂枡涓嶅湪鐩樼偣鍒楄〃涓�' + this.$refs.resmodal.show = true + } + }, + //楠岃瘉瀹瑰櫒 + checkTask() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + this.containerCode = this.warehouse.Code; + this.focu = false + if (this.warehouse.Code !== '') { + checkTask(this.warehouse.Code).then((res) => { + if (res.code == 200) { + if (res.data.length == 0) { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + return + } + + res.data.map(item => { + item.quantity = ''; + item.remarks = ''; + item.edit = false; + item.show = false; + }) + this.singlist = res.data + + } else { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + } + }) + } + } + }) + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + this.singlist.forEach(item => { + item.materlist = [{ + issue: '' + }] + }) + this.materlist = this.singlist[index] + this.detailshow = true + }, + //闂鏍囪 + issue() { + this.issueShow = true + }, + //鎻愪氦闂 + subissue() { + this.issueShow = false + let params = { + wareContainerCode: this.materlist.wareContainerCode, + wareMaterialCode: this.materlist.wareMaterialCode, + batchNo: this.materlist.batchNo, + remarks: this.materlist.remarks, + orderId: this.materlist.orderId + } + issueSubmit(params).then((res) => { + // if(res.code==200){ + // this.$refs.resmodal.show = true + // this.resmessage = res.message + // this.rescode = res.code + this.$u.toast(res.data) + // } + }) + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + if (val.quantity && val.quantity > 0) { + val.edit = true + this.$forceUpdate() + } else { + val.edit = false + this.$forceUpdate() + } + + }, + rest() { + this.warehouse.Code = '' + this.warehouse.materialCode = '' + this.singlist = [] + }, + //纭 + submit() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + this.singlist.forEach(item => { + if (item.quantity == '' + && this.singlist.length !== 0) { + this.$refs.resmodal.show = true + this.resmessage = '璇峰~鍐欏疄鐩樻暟閲�' + this.rescode = res.code + return + } + }) + + let details = this.singlist.reduce((curr,item) => { + curr.push({ + wareMaterialCode: item.wareMaterialCode, + batchNo: item.batchNo, + checkQuantity: item.quantity, + orderId: item.orderId + }) + return curr + },[]) + + let params = { + wareContainerCode: this.warehouse.Code, + details + } + finish(params).then((res) => { + this.$refs.resmodal.show = true + this.resmessage = res.message + this.rescode = res.code + if (res.code == 200) { + this.rest() + } + }) + } + }) + }, + //瀹瑰櫒鍥炲簱 + goBack() { + uni.navigateTo({ + url:`/pages/sort/return?containerCode=${this.containerCode}&taskType=2` + }) + } + }, + + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/check/out.vue b/LA24030_LuLiPackageLine_Pda/pages/check/out.vue new file mode 100644 index 0000000..ec10d24 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/check/out.vue @@ -0,0 +1,730 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> </block> + <block slot="content"> + <p>鐩樼偣</p> + </block> + </cu-custom> + <u-form labelPosition="left" label-width="180rpx" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="10"> + <u-form-item required label="鐩樼偣鍗曞彿:" prop="orderNo" class="uFormItem"> + <u-input v-model.trim="warehouse.orderNo" class="width" :clearable="false" placeholder="璇疯緭鍏ョ洏鐐瑰崟鍙�" + @focus="focu = true" :focus="true" @confirm="checkTask(1)"></u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="containerFocus"> + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + <view class="boxList" v-show="modalshow" @click="modalshow = false" @touchmove.stop> + <view class="innerWrap"> + <ul v-for="(item, eindex) in wolist" :key="eindex"> + <li @click="confirm2(eindex)">{{ item.text }}</li> + </ul> + </view> + </view> + </u-row> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item required label-width="230rpx" label="瀹瑰櫒缂栧彿/搴撲綅:" prop="containerCode" class="uFormItem"> + <u-input v-model="warehouse.containerCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="warehouse.containerCode = ''" + @blur="checkTaskSncode" class="width" :clearable="false"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item prop="SNCode" label="鐗╂枡璺熻釜鐮�:" class="uFormItem" label-width="180rpx"> + <u-input v-model="warehouse.SNCode" @focus="warehouse.SNCode = ''" placeholder="璇峰綍鍏ユ垨鎵爜" @confirm="checkTaskSncode" + :clearable="false"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" prop="materialCode" class="uFormItem"> + <u-input v-model="warehouse.materialCode" placeholder="璇锋壂鐮佸綍鍏�" @focus="warehouse.materialCode = ''" + @confirm="checkTask" :clearable="false" class="width"> + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <modal-code ref="resmodal" :rescode="rescode" :resmessage="resmessage" /> + <view class="margin_top10rpx" v-if="singlist.length > 0" style="margin-bottom: 200rpx"> + <!-- <view> + <view class="text88 color_f18202 bg_ffffff"> + 鐩樼偣璇︽儏 瀹瑰櫒鎬绘暟: ??? 宸茬洏鐐规暟: ??? + </view> + </view> --> + + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpress" @open="open" :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :class="item.edit ? 'clickactive' : ''" + class="fontSize32rpx width margin_auto background_fff padding10 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center circkle06"> + {{ eindex + 1 }} + </view> + <view class="color_f18202 padding_left10rpx"> + {{ item.materialCode }}-{{ item.materialName }} + </view> + </u-col> + <!-- <u-col span='1' v-if='sign'> + <u-icon name='question-circle' color='#f18202'></u-icon> + </u-col> --> + </u-row> + <u-row> + <u-col span="12"> + <view class="Wb_box"> + <text class="el_batchNo padding_left25rpx"> + 璺熻釜鐮侊細 + </text> + <text class="el_batchVal">{{ item.snCode }}</text> + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="Wb_box"> + <text class="el_batchNo padding_left25rpx"> + 搴撳尯鍚嶇О锛� + </text> + <text class="el_batchVal">{{ item.areaName }}</text> + </view> + </u-col> + <u-col span="6"> + <view class="Wb_box"> + <text class="el_batchNo padding_left25rpx"> + 搴撳尯缂栧彿锛� + </text> + <text class="el_batchVal"> {{ item.areaCode }}</text> + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="Wb_box"> + <text class="el_batchNo padding_left25rpx"> + 瀹瑰櫒缂栧彿锛� + </text> + <text class="el_batchVal">{{ item.containerCode }}</text> + </view> + </u-col> + <u-col span="6"> + + <view class="Wb_box"> + <text class="el_batchNo padding_left25rpx"> + 搴撲綅缂栧彿锛� + </text> + <text class="el_batchVal">{{ item.placeCode }}</text> + </view> + <!-- <view class="Wb_box"> + <text class="el_batchNo padding_left25rpx"> 璁″垝鏁帮細 </text> + <text class="el_batchVal">{{ item.quantity }}</text> + </view> --> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + </u-col> + <u-col span="6" class="flex"> + <view class="color_80 padding_left25rpx">瀹炵洏鏁帮細</view> + <input class="border_bottom_f18202 text-left color_f18202 fontSize32rpx inputGray" + v-model="item.checkQuantity" type="number" @blur="changeNum(item)" placeholder="" /> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow = false" mode="bottom" :closeable="true"> + <view class="pop"> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <!-- <scroll-view scroll-y="true" style="height: 50vh;"> --> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{ materlist.wareMaterialCode }}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡澶х被</text> + <text>{{ materlist.wareMaterialCategoryName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡灏忕被</text> + <text>{{ materlist.wareMaterialTypeName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{ materlist.wareMaterialName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">搴撳瓨鏁伴噺</text> + <text>{{ materlist.inventoryQuantity }}</text> + </view> + <view class="flex justify-around transition margin_top10rpx margin_bottom10rpx"> + <button class="width45 bg-ffe6c9" @click="issue">闂鏍囪</button> + <button class="width25 bg-grey" @click="reset">閲嶇疆</button> + <button class="width25 bg-f18202 color_F2F2F2" @click="sub"> + 纭畾 + </button> + </view> + <view class="" v-if="issueShow"> + <view class="line flex justify-between"> + <text class="text-gray">闂鎻忚堪锛�</text> + <u-input v-model="materlist.remarks"></u-input> + </view> + <!-- <view + class="width margin_auto background_fff padding15 border_radius relative box_sizing transition"> + <scroll-view scroll-y="true" style="height: 16vh;"> + <u-upload :action="action" upload-text="閫佽揣鍗曠収鐗�" :file-list="fileList1" + @on-success="successPic" @on-remove="remove"> + </u-upload> + </scroll-view> + </view> --> + <view class="padding" style="border-top: 1px solid #e4e4e4"> + <button class="width bg-grey" @click="subissue">鎻愪氦闂</button> + </view> + </view> + </view> + </u-popup> + </view> + + <button-modal :issueShow="true" issueTitle="鐩樼偣涓婃灦" subTitle="纭" restTiltle="鍗曟嵁瀹屾垚" @reset="finishOrderValid" + @submit="submit" @issue="goBack" /> + + </view> +</template> + +<script> +import ButtonModal from "../../components/buttonModal.vue"; +import ModalCode from "../../components/ModalCode.vue"; +import { issueSubmit, finish, finishOrderSubmit, finishOrderSubmitValid } from "@/api/check/check.js"; +import { getAttrValue } from "@/utils/tool.js"; +import { query, material, Status,materialSNcode } from "@/api/check/check.js"; +export default { + data() { + return { + detailshow: false, + renameFocus: false, + modalshow: false, + issueShow: false, + rescode: 0, + resmessage: "", + focuM: false, + focu: false, + sign: false, //闂鏍囪瘑 + operator: "", + singlist: [ ], //鐗╂枡璇︽儏 + options: [ + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + materlist: [], + warehouse: { + containerCode: "", + materialCode: "", + orderNo: "", + SNCode: "", + }, + warehouseRules: { + orderNo: [ + { + required: true, + message: "鐩樼偣鍗曞彿涓嶈兘涓虹┖", + trigger: "blur", + }, + ], + // containerCode: [ + // { + // required: true, + // message: "瀹瑰櫒缂栧彿/搴撲綅涓嶈兘涓虹┖", + // trigger: "blur", + // }, + // ] + }, + timerSm: null, + titlePage: "", + wolist: [], + }; + }, + components: { + ButtonModal, + ModalCode, + }, + onPullDownRefresh() { + this.$nextTick(function () { + uni.stopPullDownRefresh(); //鍋滄褰撳墠椤甸潰涓嬫媺鍒锋柊 + }); + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules); + }, + onLoad(options) { + if (options) { + this.titlePage = String(options.id); + } + }, + mounted() { + // this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + + }, + methods: { + //绫诲瀷閫夋嫨 + confirm2(index) { + this.warehouse.orderNo = this.wolist[index].text; + this.checkTask(); + }, + //绫诲瀷 + getVehicleType() { + Status({ + //鏌ョ湅绗﹀悎鏉′欢鐨勭洏鐐瑰崟 + page: 1, + PageSize: 50, + CheckStageForPdaDoing: true, + }).then((res) => { + const dataT = res.result.items; + if (dataT && dataT.length == 0) { + // this.rescode = 400; + // this.resmessage = "鏆傛棤鏁版嵁"; + // this.$refs.resmodal.show = true; + return; + } + dataT.forEach((item) => { + item.text = item.orderNo; + item.id = item.orderNo; + }); + this.wolist = dataT; + }); + }, + //绫诲瀷鑱氱劍浜嬩欢 + containerFocus() { + uni.hideKeyboard(); + // this.getVehicleType(); + this.modalshow = true; + this.getVehicleType(); + }, + //浜岀淮鐮佸唴瀹瑰鐞� chenzhuwen + materialBlur() { + this.timerSm = setTimeout(() => { + clearTimeout(this.timerSm); + this.timerSm = null; + if (this.warehouse.materialCode == "") { + return; + } + if ( + this.warehouse.materialCode && + this.warehouse.materialCode.length < 50 + ) { + return; + } + // 閿欒鐮佹彁绀� + let str = this.warehouse.materialCode.replace(/\s/g, ""); + if (str.indexOf("LOTNO") == -1 || str.indexOf("PARTSNUMBER") == -1) { + uni.showToast({ + title: "浜岀淮鐮佹牸寮忛敊璇�", + icon: "none", + duration: 2000, + }); + return; + } + //鑾峰彇鎵规 鐩樼偣 鎵爜涓嶆牎楠屾壒娆★紝鍙牎楠� 缂栧彿鍜孲AP - 5-16 + // let lotNo = getAttrValue(this.warehouse.materialCode,'LOTNO') + let SAP = getAttrValue(this.warehouse.materialCode, "SAP"); + + //鐗╂枡缂栧彿 + this.warehouse.materialCode = getAttrValue( + this.warehouse.materialCode, + "PARTSNUMBER" + ); + //鍒ゆ柇褰撳墠鐗╂枡鏄惁鍦ㄧ洏鐐瑰垪琛ㄤ腑 + const index = this.singlist.findIndex( + (item) => item.wareMaterialCode == this.warehouse.materialCode + ); + if (index > -1) { + this.singlist[index].edit = 1; + this.singlist.unshift(...this.singlist.splice(index, 1)); + } else { + this.rescode = 400; + this.resmessage = "姝ゆ壒娆$殑鐗╂枡涓嶅湪鐩樼偣鍒楄〃涓�"; + this.$refs.resmodal.show = true; + } + }, 300); + }, + + checkTask() { + this.$refs.warehouseRef.validate((valid) => { + if (valid) { + if (this.warehouse.orderNo && this.warehouse.containerCode) { + material({ + page: 1, + PageSize: 50, + orderNo: this.warehouse.orderNo, + ContainerCodeAndPlaceCodeForpda: this.warehouse.containerCode, + materialCode: this.warehouse.materialCode, + SNCode: this.warehouse.SNCode, + checkStatus: 1 + }).then((res) => { + if (res.code == 200) { + if (res.result && res.result.items.length == 0) { + this.rescode = 400; + this.resmessage = "鏆傛棤鏁版嵁"; + this.$refs.resmodal.show = true; + return; + } + res.result.items.map((item) => { + item.checkQuantity = ""; + item.edit = false; + item.show = false; + }); + this.singlist = res.result.items; + } else { + this.$refs.resmodal.show = true; + this.rescode = res.code; + this.resmessage = res.message; + } + }); + } + } + }); + }, + + + checkTaskSncode() { + if(!this.warehouse.orderNo){ + uni.showToast({ + title: "璇锋壂鐩樼偣鍗曞彿", + icon: "none", + duration: 2000, + }); + return + } + if(!this.warehouse.containerCode){ + uni.showToast({ + title: "璇锋壂瀹瑰櫒缂栧彿/搴撲綅", + icon: "none", + duration: 2000, + }); + return + } + materialSNcode({ + SNCode: this.warehouse.SNCode, + orderNo: this.warehouse.orderNo, + ContainerCodeAndPlaceCodeForpda: this.warehouse.containerCode + }).then((res) => { + if (res.code == 200) { + if (res.result && res.result.items.length == 0) { + this.rescode = 400; + this.resmessage = "鏆傛棤鏁版嵁"; + this.$refs.resmodal.show = true; + return; + } + res.result.items.map((item) => { + item.checkQuantity = ""; + item.edit = false; + item.show = false; + }); + // var arrList = res.result.items; + // arrList.forEach((item) => { + // var arrNo = this.singlist.findIndex((v) => v.snCode == item.snCode); + // if (arrNo == -1) { + // this.singlist.unshift(item); + // } + // }); + this.singlist = res.result.items; + } else { + this.$refs.resmodal.show = true; + this.rescode = res.code; + this.resmessage = res.message; + } + }); + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鍒犻櫎锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + this.singlist[index].cardNum = true + if (eindex == 0) { //鍒犻櫎 + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + } else if (res.cancel) { + + } + }) + }); + + // this.singlist.forEach((item) => { + // item.materlist = [ + // { + // issue: "", + // }, + // ]; + // }); + // this.materlist = this.singlist[index]; + // this.detailshow = true; + }, + //闂鏍囪 + issue() { + this.issueShow = true; + }, + //鎻愪氦闂 + subissue() { + this.issueShow = false; + let params = { + wareContainerCode: this.materlist.wareContainerCode, + wareMaterialCode: this.materlist.wareMaterialCode, + batchNo: this.materlist.batchNo, + remarks: this.materlist.remarks, + orderId: this.materlist.orderId, + }; + issueSubmit(params).then((res) => { + // if(res.code==200){ + // this.$refs.resmodal.show = true + // this.resmessage = res.message + // this.rescode = res.code + this.$u.toast(res.data); + // } + }); + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }); + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + // 鍏佽涓�0 + if (val.quantity && val.quantity >= 0) { + // if (val.quantity && val.quantity > 0) { + val.edit = true; + this.$forceUpdate(); + } else { + val.edit = false; + this.$forceUpdate(); + } + }, + rest() { + this.warehouse.containerCode = ""; + this.warehouse.materialCode = ""; + this.warehouse.orderNo = ""; + this.warehouse.SNCode = ""; + this.singlist = []; + }, + //纭 + submit() { + this.$refs.warehouseRef.validate((valid) => { + if (valid) { + if (this.singlist.length <= 0) { + this.$u.toast("璇锋壂鐮佹坊鍔犵墿鏂欐槑缁嗭紒"); + return; + } + if (!this.warehouse.containerCode) { + this.$u.toast("瀹瑰櫒缂栧彿/搴撲綅涓嶅瓨鍦ㄤ簡锛�"); + return; + } + // let arrD = this.singlist.filter((v) => v.quantity > 0); + // if (arrD.length <= 0) { + // this.$u.toast("璇疯嚦灏戝~鍐欎竴涓墿鏂欑殑鐩樼偣鏁伴噺锛�"); + // return; + // } + + this.singlist.forEach(item => { + if (item.checkQuantity == '' || item.checkQuantity <= 0) { + item.checkQuantity = 0 + } + }) + + // let details = arrD.reduce((curr, item) => { + // curr.push({ + // checkQuantity: item.quantity + // }); + // return curr; + // }, []); + + let params = { + containerCode: this.warehouse.containerCode, + "Details": this.singlist, + }; + + uni.showModal({ + title: "鎻愮ず", + content: "鏄惁纭鐩樼偣锛�", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + finish(params).then((res) => { + if (res.code == 200) { + this.$refs.resmodal.show = true; + this.resmessage = "鐩樼偣鎴愬姛"; + this.rescode = res.code; + this.rest(); + } + }); + } + }, + }); + } + }); + }, + + //瀹瑰櫒鍥炲簱 + goBack() { + // ActionType 浼� 0 缁勭洏涓婃灦 1 涓婃灦 锛�2 瀹瑰櫒涓婃灦锛�3 瀹瑰櫒缁勭洏涓婃灦 4 鐩樼偣涓婃灦 + uni.navigateTo({ + url: `/pages/putaway/putaway?containerCode=${this.warehouse.containerCode}&actionType=4`, + }); + }, + + //pda鍗曟嵁瀹屾垚楠岃瘉锛氬崟鎹槸鍚︽湁鏈洏鐐圭殑鏄庣粏 + finishOrderValid() { + if (!this.warehouse.orderNo) { + uni.showToast({ + title: "璇烽�夋嫨鐩樼偣鍗曞彿锛�", + icon: "none", + duration: 2000, + }); + return; + } + uni.showModal({ + title: "鎻愮ず", + content: "鏄惁纭鍗曟嵁瀹屾垚锛�", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + finishOrderSubmitValid({ + orderNo: this.warehouse.orderNo, + }).then((res) => { + if (res.code == 200) { + if (res.result == 1) { + this.finishOrder(); + } else if (res.result == 200) { + this.confirmJk(); + }else{ + this.$u.toast("鏍¢獙鍗曟嵁鏄惁鏈夋湭鐩樼偣鐨勬槑缁嗗け璐�"); + } + } + }); + } + }, + }); + }, + + // 鍗曟嵁瀹屾垚 + finishOrder() { + uni.showModal({ + title: "鎻愮ず", + content: "鍗曟嵁鏈夋湭鐩樼偣鐨勬槑缁�,鏄惁缁х画瀹屾垚鍗曟嵁锛�", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + this.confirmJk() + } + }, + }); + }, + + //鍗曟嵁瀹屾垚鎺ュ彛 + confirmJk() { + finishOrderSubmit({ + orderNo: this.warehouse.orderNo, + }).then((res) => { + if (res.code == 200) { + this.$refs.resmodal.show = true; + this.resmessage = "鍗曟嵁瀹屾垚鎴愬姛"; + this.rescode = res.code; + this.rest(); + } + }); + }, + + //宸茬洏鐐� + goBackJp() { + if (this.warehouse.orderNum == "") { + this.$u.toast("璇疯緭鍏ュ崟鍙凤紒"); + return; + } + uni.navigateTo({ + url: `/pages/check/outDetail?id=${this.titlePage}&orderNum=${this.warehouse.orderNum}&type=LKPD`, + }); + }, + }, +}; +</script> + +<style lang="scss"> +.overflow { + padding-bottom: 100px; +} + +.boxList { + transition: all ease 2s; + position: fixed; + bottom: 0; + left: 0; + top: 0; + right: 0; + width: 100%; + height: 100%; + z-index: 999; + background: rgba(0, 0, 0, 0.6); + + .innerWrap { + max-height: 50%; + overflow-y: auto; + background: white; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + + ul { + padding: 0; + margin: 0; + + li { + padding: 0; + margin: 0; + border-bottom: 1px solid #e4e7ed; + list-style-type: none; + display: flex; + flex-direction: row; + line-height: 1; + justify-content: center; + align-items: center; + font-size: 13px; + padding: 14px 0; + flex-direction: column; + } + } + } +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/check/return.vue b/LA24030_LuLiPackageLine_Pda/pages/check/return.vue new file mode 100644 index 0000000..9ae3f9c --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/check/return.vue @@ -0,0 +1,196 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">瀹瑰櫒鍥炲簱</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="Code" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.Code" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="focu=true" @blur="query" + class="width padding_left25rpx" style="font-weight: bolder;margin-left: 15rpx;"> + </input> + <u-icon name="close-circle-fill" color="#848484" v-if="warehouse.Code && focu" + @click="warehouse.Code=''"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <!-- <view class="width margin_auto background_fff fixed bottom140"> + <view class="flex align-center height80rpx padding border border_radius box_sizing justify-between"> + <view class="fontSize34rpx iconfont icon-zhanghao col-0d11c9">鍏ュ簱鍙�</view> + <view class=""> + <text>{{loca}}</text> + <u-icon name="arrow-down" style="color: #b5b5b5;" @click="outlist"> + </u-icon> + </view> + </view> + <u-select v-model="accshow" :list="accList" @confirm="confirm"></u-select> + </view> --> + <button-modal :subShow='true' garmenTitle='纭鍏ュ簱' @submit='submit' @reset='rest' /> + </view> +</template> + +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import { + list + } from '@/api/putIn/three.js' + import { + stocktakingWhours + } from '@/api/check/check.js' + export default { + data() { + return { + renameFocus: false, + modalshow: false, + rescode: 0, + resmessage: "", + detailshow: false, + operator: '', + accshow: false, //鍏ュ簱鍙e脊绐� + accList: [], //鍏ュ簱鍙e垪琛� + ware: '', //鍏ュ簱鍙e脊绐� + loca: '', //鍏ュ簱鍙e洖鏄� + focu: false, + wolist: [{ + value: 1, + label: 801 + }, + { + value: 1, + label: 802 + } + ], //鍑哄簱鍒楄〃 + singlist: [ + // { + // "warematerialCode": "string", + // "collectNo": "string", + // "purchaseNo": "string", + // "category": "string", + // "wareMaterialTypeName": "string", + // "specificationModel": "string", + // "long": "string", + // "width": "string", + // "high": "string", + // "weight": "string", + // "barCode": "string", + // "company": "string", + // "uncollectedQuantity": 0, + // "id": 0 + // }, + ], //鐗╂枡璇︽儏 + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }], + materlist: [], + warehouse: { + Code: '' + }, + warehouseRules: { + Code: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + // this.WarehousChangePort() + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + // this.outlist() + }, + methods: { + //鏌ヨ鐗╂枡 + query(e) { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focu = false + }, 200) + } + }) + }, + //鍏ュ簱鍙� + outlist() { + let params = { + PageNo: 1, + PageSize: 999 + } + list(params).then((res => { + if (res.code == 200) { + this.accshow=true + this.accList = res.data.rows.filter((item) => { + if (item.siteTypeName == '鍏ュ簱' || item.siteTypeName == '鍑哄叆搴�') { + return item + } + }) + this.accList.forEach((item, index) => { + item.label = item.name + item.value = index + 1 + }) + } + })) + }, + //閫夋嫨鍏ュ簱鍙� + confirm(e) { + this.loca = e[0].label + this.ware = this.accList[e[0].value - 1].code + }, + //纭 + submit() { + let params = { + createdTime: this.Datetime, + updatedTime: this.Datetime, + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + wareContainerCode: this.warehouse.Code, + // wareLocationCode: this.ware, + wareLocationCode: '', + orderType: 9 + } + stocktakingWhours(params).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.renameFocus = true + this.warehouse.Code = '' + this.loca = '' + this.ware = '' + } + }) + } + + }, + + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/check/square.vue b/LA24030_LuLiPackageLine_Pda/pages/check/square.vue new file mode 100644 index 0000000..7567f2d --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/check/square.vue @@ -0,0 +1,192 @@ +<template> + <view> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鐩樼偣</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <view class="serarch"> + <view style="margin-right: 8px;font-size: 18px;">鐩樼偣鍗曞彿:</view> + <u-input v-model="orderNo" type="select" placeholder="璇烽�夋嫨" height="100" @click="orderVisible = true"></u-input> + </view> + <u-select v-model="orderVisible" value-name="id" label-name="orderNo" :list="orderList" @confirm="handlerConfirm"></u-select> + <view> + <view class="padding15 background_fff margin_bottom10rpx content-item" v-for="(item,index) in singlist" :key="index" @click="skip(item)"> + <u-row> + <u-col :span='3' class='font_weight_bold fontSize36rpx'>鐩樼偣鍗曞彿:</u-col> + <u-col :span='8' class='font_weight_bold color_f18202 fontSize36rpx'>{{item.orderNo}}</u-col> + </u-row> + <u-row style="margin-top: 10rpx;"> + <u-col :span='3' class='font_weight_bold fontSize36rpx'>搴撲綅缂栧彿:</u-col> + <u-col :span='8' class='font_weight_bold color_f18202 fontSize36rpx'>{{item.wareContainerCode}}</u-col> + </u-row> + + </view> + </view> + <u-loadmore :status="status" :load-text="loadText" /> + </view> +</template> + +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import {getContainerData,getCheckOrderList} from '@/api/check/check.js' + export default { + data() { + return { + orderNo: '', + orderList: [], + orderVisible: false, + modalshow: false, + show: false, + rescode: 0, + resmessage: "", + operator: '', + singlist: [], //鐗╂枡璇︽儏 + pageNo: 1, + checkTotal: 0, + status: "loadmore", + loadText: { + loadmore: '涓婃媺鍔犺浇鏇村', + loading: '鍔姏鍔犺浇涓�', + nomore: '宸茬粡鍒板簳浜�' + }, + formQuery: { + OrderStatus:1,//璁″垝鐘舵�� 0-鏈洏鐐癸紝1-鐩樼偣涓紝2-宸茬洏鐐� [Editby shaocx,2023-12-23] + OrderId: '', + PageNo: 1, + PageSize: 10 + } + }; + }, + components: { + ButtonModal, + ModalCode + }, + //涓嬫媺鍒锋柊 + onPullDownRefresh() { + this.singlist = []; + this.formQuery.PageNo = 1 + this.formQuery.OrderId = '' + this.orderNo = '' + this.Status(()=> { + uni.stopPullDownRefresh(); //鍋滄褰撳墠椤甸潰涓嬫媺鍒锋柊 + }) + }, + // 瑙﹀簳浜嬩欢 + onReachBottom() { + if(this.checkTotal == this.singlist.length){ + return; + } + this.formQuery.PageNo++ + this.Status() + }, + onLoad() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name; + this.Status() + this.getOrderList() + }, + methods: { + getOrderList() { + getCheckOrderList({Status: 1,PageNo: 1,PageSize: 1000}).then(res => { + this.orderList = res.data.rows + console.log(this.orderList,'orderList') + }) + }, + //鐩樼偣鍗曞彿 + Status(callback) { + ////debugger + this.formQuery.OrderStatus=1;//璁″垝鐘舵�� 0-鏈洏鐐癸紝1-鐩樼偣涓紝2-宸茬洏鐐� [Editby shaocx,2023-12-23] + getContainerData(this.formQuery).then((res) => { + if (res.data.rows.length == 0 && !callback) { + this.status = 'nomore' + return; + } + this.checkTotal = res.data.totalRows; + this.singlist.push(...res.data.rows); + + if(this.checkTotal == this.singlist.length) { + this.status = "nomore"; + } + callback && callback(); + + }) + + }, + //璺宠浆 + skip(item) { + uni.navigateTo({ + url: `./index?wareContainerCode=${item.wareContainerCode}&orderId=${item.orderId}` + }) + console.log(2222) + }, + handlerConfirm(e) { + this.orderNo = e[0].label + this.formQuery.OrderId = e[0].value + this.singlist = [] + this.formQuery.PageNo = 1 + this.Status() + } + } + } +</script> + +<style lang="scss" scoped> + // 鐩樼偣涓� + .inventory { + border: 1px solid #08cd39; + border-radius: 40vh; + color: #08cd39; + background-color: #e6ffec; + } + .serarch { + width: 98%; + margin: 10px auto; + background: #fff; + padding: 15px; + box-sizing: border-box; + display: flex; + justify-content: flex-start; + align-items: center; + } + + // 鏈洏鐐� + .noinventory { + border: 1px solid #ff9d0c; + border-radius: 40vh; + color: #ff9d0c; + background-color: #fff7ea; + } + + // 宸茬洏鐐� + .haveinventory { + border: 1px solid #0a8cff; + border-radius: 40vh; + color: #0a8cff; + background-color: #e7f5ff; + } + + .col-0d11c9 { + color: #0d11c9; + } + + .col-0ece3d { + color: #0ece3d; + } + + .col-ff9d0b { + color: #ff9d0b; + } + + .col-0589ff { + color: #0589ff; + } + .content-item { + width: 98%; + border-radius: 8rpx; + margin: 10rpx auto; + } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/crossDock/crossDock.vue b/LA24030_LuLiPackageLine_Pda/pages/crossDock/crossDock.vue new file mode 100644 index 0000000..c708942 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/crossDock/crossDock.vue @@ -0,0 +1,938 @@ + +<template> + <view class="overflow" style="padding-bottom:100px"> + <!-- 椤堕儴 --> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"></block> + <block slot="content"> + <text v-if="totalPages"> ({{pageNow}}椤�/鍏眥{totalPages}}椤�/{{totalTs}}鏉�) </text> + 瓒婂簱 + </block> + </cu-custom> + <!-- 鎿嶄綔浜� --> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx" v-if="pramWl"> {{pramWl}} </text> + </view> + <!-- 閬尅灞� --> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <!-- 瓒婂簱 --> + <view class="" v-if="renameFocus"> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鐗╂枡缂栧彿:" style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model.trim="warehouse.WareMaterialCode" placeholder="璇峰綍鍏ユ垨鎵爜" + class="width padding_left25rpx" + @confirm="materialBlur(1,2)" > + </u-input> + </u-form-item> + </u-col> + <!-- <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx" ></u-icon> + </u-col> --> + </u-row> + + </u-form> + <view style="margin-bottom: 180rpx;" v-show="singlist.length > 0"> + <view v-for="(item, eindex) in singlist" :key="eindex" class="title-wrap"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpredel" @open="open" @close='close' :options="options"> + <view class=" fontSize32rpx background_fff" :class="parseFloat(item.uncollectedQuantity) > 0 ? 'bg_item' : '' " style="width: 100vw;"> + <u-row> + <u-col span="12" class="flex" style="align-items: flex-start;"> + <view style="background-color: #f18202;color: #fff;border-radius: 50%;width: 20px;height: 20px;line-height: 20px;text-align: center;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx" style="flex: 1;word-break: break-all;"> + {{item.wareMaterialCode}} + <!-- -- 鏄惁妫�楠�: <text style="color: #000;font-weight: bold;">{{item.isCheck ? '鏄�' : '鍚�'}}</text> --> + </view> + <view> + <text @click.prevent.stop="showDetail(item,eindex)" class="detail_btn">鏌ョ湅瓒婂簱</text> + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + 鏄惁鍙秺搴擄細{{item.isYueku}} + </view> + </u-col> + <u-col span="6"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + 鏁伴噺锛歿{item.quantity}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="10"> + <view class="flex" style="padding: 5px 0 0px 10px;color: #808080;"> + <span style="width: 55px">鎵规锛�</span> + <input + class="width text-left boxIput" + v-model="item.barNo" :class="!item.isBatchMge?'':'border_bottom_f18202'" :disabled="!item.isBatchMge" type="text" placeholder="璇疯緭鍏ユ壒娆�" /> + </view> + </u-col> + </u-row> + </view> + </u-swipe-action> + + <view class="background_fff qhd_wp" v-show="item.childen" v-for="(itemIn, eindexIn) in item.SortingOrderDetailsList" :key="eindexIn"> + <u-row> + <u-col span="12"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + 鍙栬揣娉㈡鍙凤細{{ itemIn.orderNo }} + </view> + <view class="detailBtn" @click.stop="showdetailProp(item,itemIn)">鎵撳嵃璇︽儏</view> + </u-col> + <!-- <u-col span="12"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + 鍗曞彿锛歿{ itemIn.deliveryNo }} + </view> + </u-col> --> + </u-row> + <u-row> + <u-col span="6"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + 鍗曞彿锛歿{ itemIn.deliveryNo }} + </view> + </u-col> + <u-col span="6"> + <view class="text-right" style="padding: 5px 0 0px 10px;color: #808080;"> + 鎵规鍙凤細{{ itemIn.batchNo }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + 宸ュ簭锛歿{ itemIn.process }} + </view> + </u-col> + <u-col span="6"> + <view class="text-right" style="padding: 5px 0 0px 10px;color: #808080;"> + 鏈哄簥鍙凤細{{ itemIn.equipment }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + 缂烘枡鏁伴噺锛歿{ itemIn.quantity }} + </view> + </u-col> + <u-col span="6"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model.trim="itemIn.uncollectedQuantity" type="number" + @blur="changeNumIn(itemIn,item)" placeholder="璇疯緭鍏ヨ秺搴撴暟閲�" /> + </u-col> + </u-row> + </view> + </view> + + <view v-if="singlist.length <= 0" style="text-align: center">---鏃犳暟鎹�---</view> + + </view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <!-- <view class="pop "> --> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <!-- <view class="line flex justify-between"> + <text class="text-gray">鎵撳嵃寮犳暟</text> + <text> + <u-input v-model.trim="contLabel" placeholder="璇疯緭鍏ユ墦鍗板紶鏁�" + class="width" + @focus="contLabel=''" + style="font-size: 36rpx;text-align: right;"> + </u-input> + </text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵撳嵃瓒婂簱鏁伴噺</text> + <text> + <u-input v-model.trim="ermNum" placeholder="璇疯緭鍏ユ墦鍗拌秺搴撴暟閲�" + class="width" + @focus="ermNum=''" + style="font-size: 36rpx;text-align: right;"> + </u-input> + </text> + </view> --> + <view class="line flex justify-between"> + <text class="text-gray">鏈瓒婂簱鏁伴噺</text> + <text>{{materlist.uncollectedQuantity}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.wareMaterialCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍙戣揣鍗曞彿</text> + <text>{{materlist.deliveryNo}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text>{{materlist.barNo}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">琛屽彿</text> + <text>{{materlist.lineNumber}}</text> + </view> + + <view class="margin_top140rpx"> + <button-modal :cleaningShow='true' allTitle='钃濈墮鎵撳嵃' cleaningTitle='鏂戦┈鎵撳嵃' @allsubmit="init(1)" @submit='init(2)'/> + </view> + </u-popup> + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='涓嬩竴姝�' @submit='next' @reset='rest' /> + </view> + + <view v-if="totalPages&&pageNow==totalPages&&renameFocus" style="text-align: center">---宸茬粡鍒板簳浜�---</view> + + <!-- 纭瓒婂簱 --> + <view v-if="!renameFocus"> + <scroll-view scroll-y="true" style="height: calc(100vh - 200px);"> + <view v-if="current==0" v-for="(item,eindex) in lastlist" :key="eindex" style="background-color: #fff;margin-top: 6rpx;" class="title-wrap"> + <u-row class="padding15" v-if="item.total>0"> + <u-col span="12" class="flex" style="align-items: flex-start;"> + <view style="background-color: #f18202;color: #fff;border-radius: 50%;width: 20px;height: 20px;line-height: 20px;text-align: center;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx" style="flex: 1;word-break: break-all;"> + {{item.wareMaterialCode}} -- {{item.barNo}} + </view> + </u-col> + </u-row> + <!-- 鍙栬揣鍗曞垪琛� --> + <view class="background_fff qhd_wp" v-show="item.SortingOrderDetailsList.length>0&&itemIn.uncollectedQuantity>0" v-for="(itemIn, eindexIn) in item.SortingOrderDetailsList" :key="eindexIn"> + <u-row> + <u-col span="12"> + <view class="color_80"> + 鍙栬揣娉㈡鍙凤細{{ itemIn.orderNo }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="color_80"> + 鍗曞彿锛歿{ itemIn.deliveryNo }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="color_80" > + 宸ュ簭锛歿{ itemIn.process }} + </view> + </u-col> + <u-col span="6" class="color_80 text-right" > + 鏈哄簥鍙凤細{{ itemIn.equipment }} + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="color_80"> + 缂烘枡鏁伴噺锛歿{ itemIn.quantity }} + </view> + </u-col> + <u-col span="6" class="color_f18202 text-right"> + 鏈瓒婂簱鏁伴噺锛歿{itemIn.uncollectedQuantity }} + </u-col> + </u-row> + </view> + + </view> + + <!-- </view> --> + </scroll-view> + <view class="fontSize32rpx "> + <u-row class='padding15 background_fff' style='margin-bottom: 6rpx;'> + <u-col span="12" class="font_weight_bold color_f18202" style="text-align: right;"> + 鏈瓒婂簱鏁�: {{uncollectedTotal}} + </u-col> + </u-row> + </view> + <button-modal :empTytowerShow='true' cleaningTitle="涓婁竴姝�" garmenTitle='瓒婂簱瀹屾垚' @submit='submit' + @reset='reset(1)' /> + </view> + <u-action-sheet :list="wolist2" v-model="modalshow2" @click="confirm2"></u-action-sheet> + </view> +</template> + +<script> + import ButtonModal from '@/components/buttonModal.vue' + import ModalCode from '@/components/ModalCode.vue' + import tkiBarcode from '@/components/tki-barcode/tki-barcode' + import bluet from '@/components/blue.vue' + import {getMoveWarehouseGroup,addconfirmMove,getMoveOrderDetail,getSapSelect} from '@/api/takeMaterial/orderpiece.js' + import {translateapp} from '@/utils/compress.js' + import {deletePicture} from '@/api/deliver.js' + import printComp from '@/mixins/printLabelSingle.js' + import printShengChanComp from '@/mixins/printShengChanLabel.js' + import printBanma from '@/mixins/printBanma.js' + import {getAttrValue} from '../../utils/tool.js' + + export default { + mixins: [printComp,printBanma,printShengChanComp], + data() { + return { + materialCode: '', //鐗╂枡缂栧彿 + renameFocus: true, + detailshow: false, + rescode: 0, + autoFoucs:true, + resmessage: "", + current: 0, //婊戝潡榛樿鍊� + fileList: [], + lastlist: [], + overlist: [], //瓒婂簱鍒楄〃 + lacklist: [], //缂烘枡鍒楄〃 + image: '', //褰撳墠鏄剧ず鐨勫浘鐗囧湴鍧� + action: this.$myHOST + '/sysFileInfo/uploadImages', + singlist: [ + + ], //鐗╂枡璇︽儏 + lists: [{ + name: '瓒婂簱(0)' + }, { + name: '缂烘枡' + }], + list: [], + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + PurchaseNo: '', + WareMaterialCode:'',//鐗╂枡缂栫爜 + PageSize: 10000, + PageNo: 1 + }, + warehouseRules: { + PurchaseNo: [{ + required: true, + message: '鍗曞彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + options: [ + // { + // text: '璇︽儏', + // style: { + // backgroundColor: '#fc9f35' + // } + // }, + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + operator: '', + QuantityTotal: 0, //閫佽揣鎬绘暟 + collectedTotal: 0, //宸茶秺搴撴暟 + uncollectedTotal: 0, //瓒婂簱鎬绘暟 + lackTotal: 0, //缂鸿揣鎬绘暟 + code: '', + addForm: { //鎵撳嵃璁板綍 + code: '', + name: '', + batchNo: '', + specificationModel: '' + }, + lotNo: '', + contLabel:1, //鎵撳嵃寮犳暟 + ermNum:'', + detailshow: false, + timer:null, + printflag:false, + sapLocate:'', + modalshow2: false, + wolist2: [], + + currentPage: 1, //椤垫暟 + pageNow:'', //鎺ュ彛杩斿洖鐨勯〉鏁� + totalPages: '', //椤垫暟 + totalTs:'', //鎺ュ彛杩斿洖鐨勬�绘潯鏁� + pramWl:'' + }; + }, + components: { + ButtonModal, + ModalCode, + tkiBarcode, + bluet + }, + onLoad(option) { + // this.lotNo = "WH" + new Date(this.getCurrentDate().formate).getTime(); + if(option.ids) { + this.pramWl = option.ids + this.currentPage = 1 + } + this.materialBlur(1) + }, + onReady() { + // this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + // this.getVehicleType2() //SAP涓嬫媺 + }, + onPullDownRefresh() { + this.$nextTick(function () { + uni.stopPullDownRefresh(); //鍋滄褰撳墠椤甸潰涓嬫媺鍒锋柊 + }); + }, + //涓婃媺鍔犺浇 + onReachBottom() { + let _self = this; + if (this.totalPages && this.pageNow >= this.totalPages) { //鏃犳暟鎹� 涓嶅啀璇锋眰 + console.log("鍒板簳浜�") + return + } + uni.showNavigationBarLoading(); + this.$nextTick(function () { + _self.currentPage++; + _self.materialBlur(); + uni.hideNavigationBarLoading(); + }); + }, + methods: { + showDetail(item,eindex){ + + // if(item.WareMaterialCode==''){ + // return + // } + item.childen = !item.childen + if(item.childen){ + item.uncollectedQuantity = 1 + }else{ + item.uncollectedQuantity = 0 + } + if(this.singlist[eindex].SortingOrderDetailsList.length>0){ + return + } + getMoveOrderDetail({ + 'WareMaterialCode':item.wareMaterialCode + }).then((res) => { + if(res.code==200){ + if (Array.isArray(res.data) && res.data.length >= 0) { + if (res.data.length == 0) { + uni.showToast({ + title:'鏆傛棤鍙栬揣鏁版嵁', + icon:'none', + duration: 2000 + }) + return + } + res.data.map(item => { + item.uncollectedQuantity = 0; + return item; + }) + this.singlist[eindex].SortingOrderDetailsList = res.data + } + } + }) + }, + //鑾峰彇print date print time + getCurrentDate() { + let date = new Date(); + let year = date.getFullYear(); //骞� + let month = date.getMonth() + 1; //鏈� + month = month >= 10 ? month : '0' + month; + let day = date.getDate(); //鏃� + day = day >= 10 ? day : '0' + day; + let hour = date.getHours() //鏃� + hour = hour >= 10 ? hour : '0' + hour; + let min = date.getMinutes(); //鍒� + min = min >= 10 ? min : '0' + min; + let second = date.getSeconds(); //绉� + second = second >= 10 ? second : '0' + second; + return { + date: `${day}.${month}.${year}`, + time: `${hour}:${min}:${second}`, + formate:`${year}/${month}/${day}` + } + + }, + //鎵撳嵃 + init(param) { + const arr = ['wareMaterialCode','barNo','uncollectedQuantity']; + const arrzw = ['鐗╂枡缂栧彿','鎵规','瀹為檯瓒婂簱鏁�'] + let isAllow = '' + Object.keys(this.materlist).forEach(item => { + if(arr.includes(item)) { + if(!this.materlist[item]) { + isAllow = arr.indexOf(item) + return + } + } + }) + if(isAllow!=''){ + this.detailshow = false + this.rescode = 400 + this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + this.$refs.resmodal.show = true + return + } + // if(!this.contLabel || !this.ermNum){ + // uni.showToast({ + // title: '鏁伴噺涓嶈兘涓虹┖涓斿ぇ浜�0', + // icon: 'none' + // }) + // return + // } + this.ermNum = this.materlist.uncollectedQuantity; + this.materlist.quantity = this.materlist.uncollectedQuantity; + this.materlist.quantityLable = this.materlist.uncollectedQuantity; + this.contLabel = 1; + this.materlist.batchNo = this.materlist.barNo; + if(param==1){ //钃濈墮 + if(this.materlist.orderType == 15){ //鐢熶骇璁㈠崟 + this.arrPt = [this.materlist] + this.printShengChanComp('','DO') + }else{ + this.printComp('','DO') + } + }else{ //鏂戦┈ + if(this.materlist.orderType == 15){ //鐢熶骇璁㈠崟 + this.printBanma('',2) + }else{ + this.printBanma('',3) + } + } + }, + //鐗╂枡鏌ヨ + materialBlur(isFirstPage,enterType) { + // this.$refs.warehouseRef.validate(valid => { + // if (valid) { + + if(enterType ==2 && this.warehouse.WareMaterialCode!='' && this.warehouse.WareMaterialCode.length>50){ + this.warehouse.WareMaterialCode = getAttrValue(this.warehouse.WareMaterialCode, 'PARTSNUMBER') + } + + let params = { + PageNo: this.currentPage, + PageSize:10, + WareMaterialCode: this.warehouse.WareMaterialCode, + } + if (isFirstPage) { + params.PageNo = 1; + params.PageSize = 10; + this.currentPage = 1; + this.singlist = []; + } + // 甯﹀弬鏁� + if(this.pramWl){ + params.WareMaterialCode = this.pramWl + } + console.log("鏌ヨ") + if (this.totalPages && params.PageNo > this.totalPages) { // 鏃犳暟鎹� 涓嶅啀璇锋眰 + console.log("鏃犳暟鎹� 涓嶅啀璇锋眰") + return + } + getMoveWarehouseGroup(params).then((res) => { + if(res.code==200){ + if (Array.isArray(res.data.rows) && res.data.rows.length >= 1) { + res.data.rows.map(item => { + item.uncollectedQuantity = ''; + item.children = false; + item.SortingOrderDetailsList=[]; + return item; + }) + + if (this.currentPage != 1) { + this.singlist = this.singlist.concat(res.data.rows); + } else { + this.singlist = res.data.rows; + } + this.totalPages = res.data.totalPage + this.pageNow = res.data.pageNo + this.totalTs = res.data.totalRows + + } else { + // this.resmessage = '鏆傛棤鏁版嵁' + // this.rescode = 400 + // this.$refs.resmodal.show = true + // this.totalPages = 0 + } + } + }) + // } + // }) + }, + //鍒犻櫎璇︽儏 + longpredel(index, eindex) { + if (eindex == 0) { + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + }, + showdetailProp(item,itemIn){ + this.detailshow = true + this.materlist = { + ...item, + ...itemIn + } + }, + //鍗$墖閫変腑 + click(e) { + e.cardNum = true + this.$forceUpdate() + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + this.$forceUpdate() + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + // tabs閫氱煡swiper鍒囨崲 + tabsChange(index) { + this.current = index; + }, + //鏀瑰彉瓒婂簱鏁伴噺 + changeNum(val) { + // val.cardNum = false + // if(!val.uncollectedQuantity) { + // this.rescode = 400 + // this.resmessage = '瓒婂簱鏁伴噺涓嶈兘涓虹┖涓斿ぇ浜�0' + // this.$refs.resmodal.show = true + // } + // // val.uncollectedQuantity = Number(val.uncollectedQuantity.toString().match(/^\d+(?:\.\d{0,2})?/)) //淇濈暀2浣嶅皬鏁� + // let num1 = Number(Number(val.deliveryQuantity) - Number(val.goodsQuantity)).toFixed(3) //蹇呴』淇濈暀3浣嶅皬鏁� -鍚﹀垯浼氶�犳垚鍓╀綑鐗╂枡鏄皬鏁扮殑鏃跺��,鏃犳硶瓒婂簱 + // if (Number(val.uncollectedQuantity).toFixed(3) > Number(num1) ) { + // val.uncollectedQuantity = 0; + // this.rescode = 400 + // this.resmessage = '瓒婂簱鏁�'+val.uncollectedQuantity+'涓嶈兘澶т簬閲囪喘鎬绘暟'+val.deliveryQuantity+'鍑忓凡瓒婂簱鏁�'+val.goodsQuantity; + // this.$refs.resmodal.show = true + // } + + // if (val.uncollectedQuantity && val.uncollectedQuantity >= 0) { + // val.edit = true + // this.$forceUpdate() + // } + + }, + + changeNumIn(val,valParent) { + // if(val.uncollectedQuantity==='' || val.uncollectedQuantity<0) { + // this.rescode = 400 + // this.resmessage = '瓒婂簱鏁伴噺涓嶈兘涓虹┖' + // this.$refs.resmodal.show = true + // } + val.uncollectedQuantity = Number(val.uncollectedQuantity.toString().match(/^\d+(?:\.\d{0,3})?/)) //淇濈暀2浣嶅皬鏁� + + if (val.uncollectedQuantity > val.quantity) { + val.uncollectedQuantity = 0; + this.rescode = 400 + this.resmessage = '涓嶈兘澶т簬缂烘枡鏁�' + this.$refs.resmodal.show = true + return + } + // valParent.uncollectedQuantity = val.uncollectedQuantity + // if(val.uncollectedQuantity > valParent.uncollectedQuantity){ + // val.uncollectedQuantity = 0; + // this.rescode = 400 + // this.resmessage = '涓嶈兘澶т簬瓒婂簱鏁�' + // this.$refs.resmodal.show = true + // } + }, + upload() { + this.fileList = [] + uni.chooseImage({ + sourceType: ["camera", "album"], + sizeType: "original", + count: 1, + success: (res) => { + this.image = res.tempFilePaths[0] + console.log(res.tempFilePaths) + translateapp(res.tempFilePaths[0], 80, imgUrl => { + //鎵撳嵃鍘嬬缉鍚庤繑鍥炵殑鍥剧墖url + console.log(imgUrl); + // res.tempFilePaths.forEach(item => this.fileList.push({ + // uri: item + // })) + let imgArr = [imgUrl] + imgArr.forEach(item => this.fileList.push({ + uri: item + })) + console.log(this.fileList) + uni.uploadFile({ + url: this.action, + files: this.fileList, + fileType: 'image', + success: (res) => { + if(res.statusCode==200){ + const result = JSON.parse(res.data) + console.log(result.data); + this.fileList.push(result.data) + }else{ + this.$u.toast('鍥剧墖涓婁紶澶辫触') + this.fileList = [] + this.image = '' + } + } + }) + }) + } + }) + }, + delimage() { + if(this.fileList.length<=0){ + return + } + console.log( this.fileList[1]) + deletePicture({ + 'filepath':this.fileList[1] + }).then(res => { + if(res.code == 200) { + this.image = '' + this.$u.toast('绉婚櫎鍥剧墖鎴愬姛') + this.fileList = [] + }else { + this.rescode = 400 + this.resmessage = `鍒犻櫎鍥剧墖澶辫触` + this.$refs.resmodal.show = true + } + }) + }, + imgClick(url) { + if(this.image!==''){ + var imgArr = []; + imgArr.push(url) + //棰勮鍥剧墖 + uni.previewImage({ + urls: imgArr, + current: imgArr[0] + }); + } + }, + //鐩戝惉鍘熺敓杩斿洖閿� + onBackPress(e) { + this.delimage() + }, + //涓嬩竴姝� + next() { + // const index = this.singlist.findIndex(item => item.uncollectedQuantity == '' || parseFloat(item.uncollectedQuantity) <= 0 || item.uncollectedQuantity == undefined); + // if(index > -1) { + // uni.showModal({ + // title: '鎻愮ず', + // content: `${this.singlist[index].wareMaterialCode}鏈~鍐欒秺搴撴暟閲廯, + // showCancel: false + // }) + // return + // } + // 杩囨护涓� 0 + + + // isBatchMge涓簍rue: 鎵规绠$悊鐨勭墿鏂� 蹇呴』杈撳叆 + // let arrMge = this.singlist.filter((v)=>(v.isBatchMge == 1 && v.barNo==''|| v.isBatchMge == 1 && v.barNo==null)).filter((v2)=>(v2.uncollectedQuantity>0)) + // if(arrMge.length>0){ + // uni.showToast({ + // title: `${arrMge[0].wareMaterialCode}璇峰~鍐欑┖鐨勬壒娆, + // icon:'none' + // }) + // return + // } + + + + + + // this.lacklist = this.singlist.reduce((curr,item) => { + // if(item.deliveryQuantity - item.uncollectedQuantity - item.goodsQuantity > 0) { + // curr.push(item) + // } + // return curr; + // },[]) + + this.renameFocus = false + // this.QuantityTotal = this.singlist.reduce((prev, next) => { + // let num = Number(prev) + Number(next.deliveryQuantity) + // return Number(num).toFixed(3) + // }, 0) + + // this.collectedTotal = this.singlist.reduce((prev,next) => { + // let num = Number(prev) + Number(next.goodsQuantity); + // return Number(num).toFixed(3) + // },0) + + + this.uncollectedTotal = 0 + this.singlist.forEach((item,index) => { + item.total = 0 + if(item.SortingOrderDetailsList.length>0){ + item.SortingOrderDetailsList.forEach((item2,index2) => { + if(item2.uncollectedQuantity>0){ + item.total += item2.uncollectedQuantity; + this.uncollectedTotal += item2.uncollectedQuantity; + } + }) + } + }) + + this.lastlist = this.singlist.filter(v=>v.total>0); + + this.uncollectedTotal = Number(this.uncollectedTotal).toFixed(3) + + // this.lackTotal = this.singlist.reduce((prev, next) => { + // let num = Number(prev) +Number(next.quantity) - Number(next + // .uncollectedQuantity) + // return Number(num).toFixed(3) + // }, 0) + this.lists[0].name = `瓒婂簱(${this.lastlist.length})` + this.lists[1].name = `缂烘枡(${this.lacklist.length})` + }, + //纭瓒婂簱 + submit() { + if(this.uncollectedTotal<=0){ + uni.showToast({ + title:'瓒婂簱鎬绘暟澶т簬0', + icon:'none', + duration: 2000 + }) + return + } + let SortingOrderDetailsList = [] + this.lastlist.forEach((item,index) => { + item.SortingOrderDetailsList.forEach((itemIN,indexIN) => { + let {quantity,uncollectedQuantity,batchNo,...rest} = itemIN + if(Number(uncollectedQuantity ) >0){ + SortingOrderDetailsList.push({ + 'quantity':uncollectedQuantity, + 'batchNo':item.barNo || item.batchNo, + ...rest + }) + } + }) + }) + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭瓒婂簱锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + addconfirmMove(SortingOrderDetailsList).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.renameFocus = true + this.rest() + } + }) + + } else if (res.cancel) { + } + }) + }); + + }, + //娓呮閫変腑 + rest(parm) { + this.warehouse.WareMaterialCode = ''; + this.singlist = []; + this.pramWl ='' + this.materialBlur(1) + }, + reset(back) { + if(back){ + this.autoFoucs = false + } + this.renameFocus = true + }, + //鎵撳嵃 + onPrint() { + let _this = this + if (!uni.getStorageSync("deviceId")) { + uni.showToast({ + title: '璇疯繛鎺ユ墦鍗版満', + icon: 'error', + duration: 2000 + }) + return + } + this.writeBLECharacteristicValue() + }, + beforeDestroy() { + // 閿�姣佸畾鏃跺櫒 + if(this.timer){ + clearTimeout(this.timer) + this.timer = null + } + + }, + //绫诲瀷鑱氱劍浜嬩欢 + containerFocus2() { + uni.hideKeyboard() + this.modalshow2 = true + }, + getVehicleType2() { + getSapSelect().then((res) => { + if(res.code==200){ + const dataT = res.data + if (dataT && dataT.length == 0) { + this.wolist2 = [] + return + } + let dataDst = [] + dataT.forEach(item => { + dataDst.push({ + 'text':item, + 'id':item + }) + }) + this.wolist2 = dataDst; + } + }) + }, + //绫诲瀷閫夋嫨 + confirm2(index) { + // this.warehouse.containerCode = this.wolist2[index].text; + // this.warehouse.containerCode = this.wolist2[index].id; + console.log( this.wolist2[index].text); + this.sapLocate = this.wolist2[index].text; + this.singlist.forEach((item)=>{ + item.sap_Location = this.wolist2[index].text; + }) + console.log(this.singlist); + this.$forceUpdate(); + + } + } + } +</script> + +<style lang="scss"> +.title-wrap{ + margin-bottom: 15rpx; + border-bottom: 1px solid #f18202; + border-top: 1px solid #f18202; + padding: 3px; +} +.bg_item { + background: #FFEBCD !important; +} +.qhd_wp{ + border-top: 1px solid #f18202; + position: relative; +} +.detail_btn{ + text-align: right; + padding: 10px; +} +.detailBtn{ + position: absolute; + right: 15rpx; + top: 15rpx; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/deliver/deliver.vue b/LA24030_LuLiPackageLine_Pda/pages/deliver/deliver.vue new file mode 100644 index 0000000..19e87f3 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/deliver/deliver.vue @@ -0,0 +1,595 @@ +<template> + <view class="overflow" style="padding-bottom:300px"> + <!-- 椤堕儴 --> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"></block> + <block slot="content">鐢熶骇璁㈠崟鍙戣揣</block> + </cu-custom> + <!-- 鎿嶄綔浜� --> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <!-- 閬尅灞� --> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;" > + <u-col span="12"> + <u-form-item label="宸ュ簭鏈哄簥鍙�:" prop="category_name" required + style="font-size: 16px;font-weight: bold;padding: 0;"> + <view class="gxSbBox" v-if="warehouse.equipmentList.length > 0" @click="kuweiFocus"> + <p class="text10">宸ュ簭锛歿{ warehouse.process }} - 鏈哄簥鍙凤細{{ warehouse.equipmentList.join(',') }} + </p> + <p></p> + </view> + <span v-if="warehouse.equipmentList.length == 0" readonly @click="kuweiFocus" + style="font-weight: bolder;margin-left: 8px;" class="width" + > + 璇烽�夋嫨宸ュ簭鏈哄簥鍙� + </span> + </u-form-item> + </u-col> + </u-row> + </u-form> + <view v-show="singlist.length > 0" class="lineht_sm2"> + <view :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" :options="options" class="margin_top10rpx"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap "> + <view :key="eindex+'singlist'" :class="item.cardNum?'bd-ffe6c9':item.edit?'clickactive':''" + class="fontSize30rpx width margin_auto background_fff padding10 border_radius relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex" style="align-items: flex-start;"> + <view style="background-color: #f18202;color: #fff;border-radius: 50%;width: 20px;height: 20px;line-height: 20px;text-align: center;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx" style="flex: 1;word-break: break-all;"> + {{item.materialCode}}({{item.materialName}}) + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="text06" > + 鍙栬揣娉㈡鍙凤細{{item.orderNo}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + 鍒嗘嫞鎬婚渶姹傛暟锛歿{item.quantity}} + </view> + </u-col> + <u-col span="6"> + <view class="text06"> + 鍒嗘嫞瀹屾垚鏁帮細{{item.completeQuantity}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="text06"> + 鏈哄簥鍙凤細{{item.equipment}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + 宸ュ簭锛歿{item.process}} + </view> + </u-col> + <u-col span="6"> + <view class="" style="color: #f18202;"> + 鍙彂璐ф暟閲忥細{{item.deliverQuantity}} + </view> + </u-col> + </u-row> + <!-- <u-row> + <u-col span="6"> + <input class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.thisQuantity" type="number" @focus="item.thisQuantity = ''" + @blur="changeNum(item)" placeholder="璇疯緭鍏ユ湰娆″彂璐ф暟" /> + </u-col> + </u-row> --> + </view> + </view> + </view> + </view> + </view> + + <view v-show="showImgBtn" + class="width fixed bottom140 margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <view class="" style="width: 140px;height: 140px;border: 1px dashed #aaaaaa;position: relative;"> + <image :src="image" mode="" @click="imgClick(image)" style="width: 100%;height: 100%;"></image> + </view> + <u-icon @click="delimage" name='close-circle-fill' color='red' size='60' v-if="image!==''" + style='position: absolute;left:200rpx;top: 20rpx;'> + </u-icon> + + <view style="color: #aaaaaa;" v-if="image==''"> + <view class="fontSize32rpx" @click='upload' style="position: absolute;left: 40px;top: 80px;"> + <!-- <u-icon name="plus" size='70' style='position: absolute;left: 19px; top: -35px;'></u-icon> --> + <text style='position: absolute;left: 19px; top: -55px;font-size: 60px;'> + </text> + <text style='margin-left: 14px;'>閫夋嫨鍥剧墖</text> + </view> + </view> + + </view> + + <!-- <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='纭鍙戣揣' @submit='submit' @reset='rest' /> --> + + <button-modal :issueShow='true' issueTitle="涓婁紶鍥剧墖" subTitle='纭' restTiltle='閲嶇疆' @reset='rest' + @submit='submit' @issue="showImg"/> + + </view> + + + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <!-- <view class="pop "> --> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鎵撳嵃寮犳暟</text> + <text> + <u-input v-model.trim="contLabel" placeholder="璇疯緭鍏ユ墦鍗板紶鏁�" + class="width" + @focus="contLabel=''" + style="font-size: 36rpx;text-align: right;"> + </u-input> + </text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵撳嵃鍙戣揣鏁伴噺</text> + <text> + <u-input v-model.trim="ermNum" placeholder="璇疯緭鍏ユ墦鍗板彂璐ф暟閲�" + class="width" + @focus="ermNum=''" + style="font-size: 36rpx;text-align: right;"> + </u-input> + </text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏈鍙戣揣鏁伴噺</text> + <text>{{materlist.deliverQuantity}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.materialCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.materialName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text>{{materlist.batchNo}}</text> + </view> + <!-- <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> --> + + <!-- </view> --> + <view class="margin_top140rpx"> + <!-- <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='init' @reset='rest' /> --> + <button-modal :cleaningShow='true' allTitle='钃濈墮鎵撳嵃' cleaningTitle='鏂戦┈鎵撳嵃' @allsubmit="init(1)" @submit='init(2)'/> + </view> + </u-popup> + + <!-- 3绾ц仈鍔� --> + <cascader ref="cascader" :cascaderData="cascaderData" @confirem="cascaderConfirem" :titleData="titleData"> + </cascader> + <u-select v-model="containerVisible" :list="containerList" @confirm="containerConfirm"></u-select> + + +<u-select v-model="containerVisibleDo" :list="containerListDo" @confirm="containerConfirmDo"></u-select> + </view> +</template> + +<script> + import cascader from '@/components/cascader.vue'; + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import {getOutMaterial,addDeliverRecord,getOrderMaterial,getAllOrder ,deletePicture ,getOrderMaterialDo ,getAllOrderDelivery,getOrderKtting} from '../../api/deliver.js' + import {translateapp , translateImg} from '@/utils/compress.js' + import printComp from '@/mixins/printDoLabel.js' + import printBanma from '@/mixins/printBanma.js' + + export default { + mixins: [printComp,printBanma], + data() { + return { + containerVisibleDo: false, + containerListDo: [], + containerVisible: false, + containerList: [], + rescode: 0, + resmessage: "", + singlist: [], //鐗╂枡璇︽儏 + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + equipmentList:[], + process:'', + IsQueryEquipmentAll:false //鏄惁鏌ヨ鎵�鏈夋満搴婂彿 + }, + options: [{ + text: '鎵撳嵃', + style: { + backgroundColor: '#fc9f35' + } + } + ], + operator: '', + image: '', //褰撳墠鏄剧ず鐨勫浘鐗囧湴鍧� + action: this.$myHOST + '/delivery/record/uploadImages', + fileList: [], + detailshow: false, + contLabel:1, //鎵撳嵃寮犳暟 + ermNum:'', + timer:null, + printflag:false, + arrPt:[], + showImgBtn:false, + // 3绾т笅鎷� + cascaderData: [], + titleData: { + 'locationType': 1,// 1:A3鍖哄煙锛�2:A1-A2鍖哄煙 + 'type':'', + 'typeInterface': "KingtingDo" + }, + category_name: [], + category_ids: '', + }; + }, + components: { + ButtonModal, + ModalCode, + cascader + }, + onReady() { + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //鎵撳紑3绾у脊妗� + kuweiFocus() { + + let param = { + 'PickSortFlag': 2 //1鏄彇璐� 2鏄垎鎷o級 + } + this.$refs.cascader.show(param) + }, + // 3绾у脊妗� 纭 + cascaderConfirem(e) { + console.log(e) + if(this.warehouse.process && e.process != this.warehouse.process){ + uni.showToast({ + title: '鍙兘閫夋嫨涓�绉嶅伐搴忥紒', + icon: 'none' + }) + return + } + this.category_ids = e.select_ids; + this.category_name = e.select_names; + this.warehouse.process = e.process; + this.warehouse.equipmentList = e.equipmentList; + if(e.equipmentList.length==0){ + this.warehouse.IsQueryEquipmentAll = true + }else{ + this.warehouse.IsQueryEquipmentAll = false + } + this.warehouse.containerCode = '' + this.singlist = [] + this.totalPages = '' + this.orderBlur() + }, + //DO瀹瑰櫒閫夋嫨 + containerConfirmDo(context){ + this.warehouse.DoOrderNo = context[0].value + this.orderBlurDo() + }, + //DO瀹瑰櫒鑱氱劍浜嬩欢 + containerFocusDo() { + getAllOrderDelivery().then(res => { + this.containerListDo = res.data.reduce((curr,item) => { + if(item.clientName==null){ + item.clientName = '' + } + curr.push({ + label: item.deliveryNo + '; 鏃堕棿:' + item.deliveryNoCreateTime + '; 瀹㈡埛:' + item.clientName, + value: item.deliveryNo + }) + return curr; + },[]) + this.containerVisibleDo = true; + }) + }, + // 1 DO鍗曞彿 + orderBlurDo(){ + if(this.warehouse.DoOrderNo == ''){ + return + } + this.warehouse.OrderNo = '' + this.singlist = [] + }, + //瀹瑰櫒閫夋嫨 + containerConfirm(context){ + this.warehouse.OrderNo = context[0].value + this.orderBlur() + }, + + //瀹瑰櫒鑱氱劍浜嬩欢 + containerFocus() { + if(this.warehouse.DoOrderNo ==''){ + this.$u.toast('璇烽�夋嫨DO鍗曞彿') + return + } + console.log("containerFocus") + getAllOrder({ + 'OrderNo':this.warehouse.DoOrderNo, + 'DeliveryNo':this.warehouse.DoOrderNo + }).then(res => { + this.containerList = res.data.reduce((curr,item) => { + curr.push({ + label: item, + value: item + }) + return curr; + },[]) + this.containerVisible = true; + }) + + }, + + + // 2 鍙栬揣娉㈡鍙� + orderBlur(){ + if(this.warehouse.process == ''){ + return + } + let param = { + 'process': this.warehouse.process, + "equipmentList": [this.warehouse.equipmentList], + "IsQueryEquipmentAll": this.warehouse.IsQueryEquipmentAll + } + // 0214 + console.log("orderBlur") + this.singlist = []; + getOrderKtting(param).then(res => { + if(res.code==200){ + this.singlist = res.data; + } + + }) + }, + + + //鐗╂枡杈撳叆妗嗗け鐒︿簨浠� + materialBlur() { + this.$refs.warehouseRef.validate(vali => { + if(vali) { + this.getOrderAndMateial() + }else { + this.rescode = 400 + this.resmessage = `鍑哄簱鍗曞彿鍜岀墿鏂欑紪鍙蜂笉鑳戒负绌篳 + this.$refs.resmodal.show = true + } + }) + }, + //鑾峰彇淇℃伅 + getOrderAndMateial(){ + getOutMaterial(this.warehouse).then(res => { + if(res.data.materialCode != null) { + this.singlist = []; + res.data.thisQuantity = res.data.quantity - res.data.completeQuantity; + this.singlist.push(res.data); + }else { + this.rescode = 400 + this.resmessage = `褰撳墠鍑哄簱鍗曚笅鎵句笉鍒拌鐗╂枡${this.warehouse.MaterialCode}` + this.$refs.resmodal.show = true + } + }) + }, + //鍙戣揣鏁拌緭鍏� + changeNum(val) { + if(!val.thisQuantity) { + this.rescode = 400 + this.resmessage = '鏈鍙戣揣鏁颁笉鑳戒负绌�' + this.$refs.resmodal.show = true + } + if(!val.thisQuantity <= 0){ + this.rescode = 400 + this.resmessage = '鏈鍙戣揣鏁颁笉鑳藉皬浜庣瓑浜�0' + this.$refs.resmodal.show = true + } + let num1 = Number(val.quantity - val.completeQuantity).toFixed(3) //蹇呴』淇濈暀3浣嶅皬鏁� -鍚﹀垯浼氶�犳垚鍓╀綑鐗╂枡鏄皬鏁扮殑鏃跺��,鏃犳硶鏀惰揣 + if (Number(val.thisQuantity).toFixed(3) > Number(num1) ) { + val.uncollectedQuantity = 0; + this.rescode = 400 + this.resmessage = '鏈鍙戣揣鏁颁笉鑳藉ぇ浜庢�荤殑闇�姹傛暟鍑忓幓宸插彂璐ф暟' + this.$refs.resmodal.show = true + } + }, + //纭鏀惰揣 + submit() { + if(this.singlist.length == 0) { + this.rescode = 400 + this.resmessage = '鍙戣揣璇︽儏涓嶈兘涓虹┖' + this.$refs.resmodal.show = true + return + } + if(this.fileList.length<=0){ + this.rescode = 400 + this.resmessage = '璇蜂笂浼犲浘鐗�'; + this.$refs.resmodal.show = true + return + } + this.singlist.forEach((item)=>{ + item.img = this.fileList[1] + }) + console.log(this.singlist) + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鍙戣揣锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + addDeliverRecord(this.singlist).then((res) => { + this.rescode = 200 + this.resmessage = '鍙戣揣鎴愬姛' + this.$refs.resmodal.show = true + this.rest(1) + }) + + } else if (res.cancel) { + + } + }) + }); + + }, + //閲嶇疆 + rest(parm) { + this.warehouse.process = ''; + this.warehouse.equipmentList = []; + this.singlist = []; + if(parm!=1 && this.fileList.length>0){ + this.delimage() + } + this.fileList = [] + this.image = '' + }, + // 涓婁紶鍥剧墖 - 鍥犻渶瑕佸帇缂╁浘鐗� 浠呮敮鎸乤pp涓婁紶鍥剧墖 + upload() { + this.fileList = [] + uni.chooseImage({ + sourceType: ["camera", "album"], + sizeType: "original", + count: 1, + success: (res) => { + this.image = res.tempFilePaths[0] + console.log(res.tempFilePaths) + translateapp(res.tempFilePaths[0], 80, imgUrl => { + let imgArr = [imgUrl] + imgArr.forEach(item => this.fileList.push({ + uri: item + })) + console.log(this.fileList) + uni.uploadFile({ + url: this.action, + files: this.fileList, + fileType: 'image', + success: (res) => { + if(res.statusCode==200){ + const result = JSON.parse(res.data) + this.fileList.push(result.data) + if (result.data == null || result.data == '') { + this.image = '' + this.fileList = [] + this.$u.toast('鍥剧墖涓婁紶鏈嶅姟鍣ㄥけ璐�') + return + } + }else{ + this.$u.toast('鍥剧墖涓婁紶澶辫触') + this.fileList = [] + this.image = '' + } + } + }) + }) + } + }) + }, + delimage() { + if(this.fileList.length<=0){ + return + } + if(!this.fileList[1]){ + this.fileList = []; + this.image = ''; + return + } + deletePicture({ + 'filepath':this.fileList[1] + }).then(res => { + if(res.code == 200) { + this.image = '' + this.$u.toast('绉婚櫎鍥剧墖鎴愬姛') + this.fileList = [] + }else { + this.rescode = 400 + this.resmessage = `鍒犻櫎鍥剧墖澶辫触` + this.$refs.resmodal.show = true + } + }) + }, + imgClick(url) { + if(this.image!==''){ + var imgArr = []; + imgArr.push(url) + //棰勮鍥剧墖 + uni.previewImage({ + urls: imgArr, + current: imgArr[0] + }); + } + }, + //鐩戝惉鍘熺敓杩斿洖閿� + onBackPress(e) { + this.delimage() + }, + //鎵撳嵃 + init(param) { + const arr = ['wareMaterialCode','uncollectedQuantity']; + const arrzw = ['鐗╂枡缂栧彿','瀹為檯鍙戣揣鏁�'] + let isAllow = '' + Object.keys(this.materlist).forEach(item => { + if(arr.includes(item)) { + if(!this.materlist[item]) { + isAllow = arr.indexOf(item) + // this.rescode = 400 + // this.resmessage = `${item}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.$refs.resmodal.show = true + return + } + } + }) + if(isAllow!=''){ + this.detailshow = false + this.rescode = 400 + this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + this.$refs.resmodal.show = true + return + } + + if(!this.contLabel || !this.ermNum){ + uni.showToast({ + title: '鏁伴噺涓嶈兘涓虹┖涓斿ぇ浜�0', + icon: 'none' + }) + return + } + this.materlist.supplier = this.materlist.supplier || '' + this.materlist.deliveryNo = this.warehouse.DoOrderNo || '' + this.materlist.completeQuantity = this.ermNum + this.arrPt = [this.materlist] + if(param==1){ + this.printComp() + }else{ + this.printBanma(0,2) + } + + }, + showImg(){ + this.showImgBtn =!this.showImgBtn + } + } + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/deliver/deliverDo.vue b/LA24030_LuLiPackageLine_Pda/pages/deliver/deliverDo.vue new file mode 100644 index 0000000..a68755a --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/deliver/deliverDo.vue @@ -0,0 +1,568 @@ +<template> + <view class="overflow" style="padding-bottom:300px"> + <!-- 椤堕儴 --> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"></block> + <block slot="content"> + <span v-if="orderType==24">STO</span> + <span v-if="orderType==27">棰嗙敤鍗�</span> + <span v-if="orderType=='' ">DO</span> + 鍙戣揣 + </block> + </cu-custom> + <!-- 鎿嶄綔浜� --> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <!-- 閬尅灞� --> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <u-select v-model="containerVisible" :list="containerList" @confirm="containerConfirm"></u-select> + <u-select v-model="containerVisibleDo" :list="containerListDo" @confirm="containerConfirmDo"></u-select> + <view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鍗曞彿:" prop="DoOrderNo" required style="font-size: 16px;font-weight: bold;padding: 0 0 5px;"> + <u-input v-model.trim="warehouse.DoOrderNo" placeholder="璇峰綍鍏ユ垨鎵爜" + class="width padding_left25rpx" + :focus="true" + style="margin-left: 15px;font-size: 18px;" + @confirm="orderBlurDo" > + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="containerFocusDo" > + <br/> + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + </u-row> + + <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鍙栬揣娉㈡鍙�:" prop="OrderNo" required style="font-size: 16px;font-weight: bold;padding: 0 0 5px;"> + <u-input v-model.trim="warehouse.OrderNo" placeholder="璇峰綍鍏ユ垨鎵爜" + class="width padding_left25rpx" + :focus="true" + style="margin-left: 15px;font-size: 18px;" + @confirm="orderBlur" > + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="containerFocus" > + <br/> + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <view scroll-y="true" v-show="singlist.length > 0" class="lineht_sm2"> + <view :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" :options="options" class="margin_top10rpx"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :key="eindex+'singlist'" :class="item.cardNum?'bd-ffe6c9':item.edit?'clickactive':''" + class="fontSize30rpx width margin_auto background_fff padding10 border_radius relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex" style="align-items: flex-start;"> + <view style="background-color: #f18202;color: #fff;border-radius: 50%;width: 20px;height: 20px;line-height: 20px;text-align: center;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx" style="flex: 1;word-break: break-all;"> + {{item.materialCode}}({{item.materialName}}) + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="text06" > + 鍙栬揣娉㈡鍙凤細{{item.orderNo}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06" > + 鍒嗘嫞鎬婚渶姹傛暟锛歿{item.quantity}} + </view> + </u-col> + <u-col span="6"> + <view class="text06" > + 鍒嗘嫞瀹屾垚鏁帮細{{item.completeQuantity}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="text06" > + 鍙彂璐ф暟閲忥細{{item.deliverQuantity}} + </view> + </u-col> + </u-row> + </view> + </view> + </view> + </view> + </view> + + <view v-show="showImgBtn" + class="width fixed bottom140 margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <view class="" style="width: 140px;height: 140px;border: 1px dashed #aaaaaa;position: relative;"> + <image :src="image" mode="" @click="imgClick(image)" style="width: 100%;height: 100%;"></image> + </view> + <u-icon @click="delimage" name='close-circle-fill' color='red' size='60' v-if="image!==''" + style='position: absolute;left:200rpx;top: 20rpx;'> + </u-icon> + + <view style="color: #aaaaaa;" v-if="image==''"> + <view class="fontSize32rpx" @click='upload' style="position: absolute;left: 40px;top: 80px;"> + <text style='position: absolute;left: 19px; top: -55px;font-size: 60px;'> + </text> + <text style='margin-left: 14px;'>閫夋嫨鍥剧墖</text> + </view> + </view> + + </view> + <button-modal :issueShow='true' issueTitle="涓婁紶鍥剧墖" subTitle='纭' restTiltle='閲嶇疆' @reset='rest' + @submit='submit' @issue="showImg"/> + + </view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鎵撳嵃寮犳暟</text> + <text> + <u-input v-model.trim="contLabel" placeholder="璇疯緭鍏ユ墦鍗板紶鏁�" + class="width" + @focus="contLabel=''" + style="font-size: 36rpx;text-align: right;"> + </u-input> + </text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵撳嵃鍙戣揣鏁伴噺</text> + <text> + <u-input v-model.trim="ermNum" placeholder="璇疯緭鍏ユ墦鍗板彂璐ф暟閲�" + class="width" + @focus="ermNum=''" + style="font-size: 36rpx;text-align: right;"> + </u-input> + </text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏈鍙戣揣鏁伴噺</text> + <text>{{materlist.deliverQuantity}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.materialCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.materialName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text>{{materlist.batchNo}}</text> + </view> + <view class="margin_top140rpx"> + <button-modal :cleaningShow='true' allTitle='钃濈墮鎵撳嵃' cleaningTitle='鏂戦┈鎵撳嵃' @allsubmit="init(1)" @submit='init(2)'/> + </view> + </u-popup> + </view> +</template> + +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import {getOutMaterial,addDeliverRecord,getOrderMaterial,getAllOrder ,deletePicture ,getOrderMaterialDo ,getAllOrderDelivery} from '../../api/deliver.js' + import { pathToBase64, base64ToPath } from 'image-tools' + import {getAttrValue} from '@/utils/tool.js' + import {translateapp , translateImg} from '@/utils/compress.js' + import printComp from '@/mixins/printDoLabel.js' + import printBanma from '@/mixins/printBanma.js' + + export default { + mixins: [printComp,printBanma], + data() { + return { + containerVisibleDo: false, + containerListDo: [], + containerVisible: false, + containerList: [], + rescode: 0, + resmessage: "", + singlist: [], //鐗╂枡璇︽儏 + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + MaterialCode: '', + OrderNo: '', + DoOrderNo:'' + }, + warehouseRules: { + OrderNo: [{ + required: true, + message: '鍙栬揣娉㈡鍙蜂笉鑳戒负绌�', + trigger: 'blur' + }], + MaterialCode: [{ + required: true, + message: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + options: [{ + text: '鎵撳嵃', + style: { + backgroundColor: '#fc9f35' + } + } + ], + operator: '', + image: '', //褰撳墠鏄剧ず鐨勫浘鐗囧湴鍧� + action: this.$myHOST + '/delivery/record/uploadImages', + fileList: [], + detailshow: false, + contLabel:1, //鎵撳嵃寮犳暟 + ermNum:'', + timer:null, + printflag:false, + arrPt:[], + showImgBtn:false, + orderType:'' + }; + }, + components: { + ButtonModal, + ModalCode + }, + onLoad(option) { + if(option.orderType) { + this.orderType = option.orderType; + } + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //DO瀹瑰櫒閫夋嫨 + containerConfirmDo(context){ + this.warehouse.DoOrderNo = context[0].value + this.orderBlurDo() + }, + //DO瀹瑰櫒鑱氱劍浜嬩欢 + containerFocusDo() { + getAllOrderDelivery({ + 'orderType':this.orderType + }).then(res => { + this.containerListDo = res.data.reduce((curr,item) => { + if(item.clientName==null){ + item.clientName = '' + } + curr.push({ + label: item.deliveryNo + '; 鏃堕棿:' + item.deliveryNoCreateTime + '; 瀹㈡埛:' + item.clientName, + value: item.deliveryNo + }) + return curr; + },[]) + this.containerVisibleDo = true; + }) + }, + // 1 DO鍗曞彿 + orderBlurDo(){ + if(this.warehouse.DoOrderNo == ''){ + return + } + this.warehouse.OrderNo = '' + this.singlist = [] + }, + //瀹瑰櫒閫夋嫨 + containerConfirm(context){ + this.warehouse.OrderNo = context[0].value + this.orderBlur() + }, + + //瀹瑰櫒鑱氱劍浜嬩欢 + containerFocus() { + if(this.warehouse.DoOrderNo ==''){ + this.$u.toast('璇烽�夋嫨DO鍗曞彿') + return + } + console.log("containerFocus") + getAllOrder({ + 'OrderNo':this.warehouse.DoOrderNo, + 'DeliveryNo':this.warehouse.DoOrderNo + }).then(res => { + this.containerList = res.data.reduce((curr,item) => { + curr.push({ + label: item, + value: item + }) + return curr; + },[]) + this.containerVisible = true; + }) + + }, + + + // 2 鍙栬揣娉㈡鍙� + orderBlur(){ + if(this.warehouse.DoOrderNo == ''){ + return + } + let param = { + 'OrderNo':this.warehouse.OrderNo, + 'DeliveryNo':this.warehouse.DoOrderNo, + 'orderType':this.orderType + } + // 0214 + console.log("orderBlur") + this.singlist = []; + getOrderMaterial(param).then(res => { + if(res.code==200){ + this.singlist = res.data; + } + + }) + }, + + + //鐗╂枡杈撳叆妗嗗け鐒︿簨浠� + materialBlur() { + this.$refs.warehouseRef.validate(vali => { + if(vali) { + this.getOrderAndMateial() + }else { + this.rescode = 400 + this.resmessage = `鍑哄簱鍗曞彿鍜岀墿鏂欑紪鍙蜂笉鑳戒负绌篳 + this.$refs.resmodal.show = true + } + }) + }, + //鑾峰彇淇℃伅 + getOrderAndMateial(){ + getOutMaterial({ + ...this.warehouse, + 'orderType':this.orderType + }).then(res => { + if(res.data.materialCode != null) { + this.singlist = []; + res.data.thisQuantity = res.data.quantity - res.data.completeQuantity; + this.singlist.push(res.data); + }else { + this.rescode = 400 + this.resmessage = `褰撳墠鍑哄簱鍗曚笅鎵句笉鍒拌鐗╂枡${this.warehouse.MaterialCode}` + this.$refs.resmodal.show = true + } + }) + }, + //鍙戣揣鏁拌緭鍏� + changeNum(val) { + if(!val.thisQuantity) { + this.rescode = 400 + this.resmessage = '鏈鍙戣揣鏁颁笉鑳戒负绌�' + this.$refs.resmodal.show = true + } + if(!val.thisQuantity <= 0){ + this.rescode = 400 + this.resmessage = '鏈鍙戣揣鏁颁笉鑳藉皬浜庣瓑浜�0' + this.$refs.resmodal.show = true + } + let num1 = Number(val.quantity - val.completeQuantity).toFixed(3) //蹇呴』淇濈暀3浣嶅皬鏁� -鍚﹀垯浼氶�犳垚鍓╀綑鐗╂枡鏄皬鏁扮殑鏃跺��,鏃犳硶鏀惰揣 + if (Number(val.thisQuantity).toFixed(3) > Number(num1) ) { + val.uncollectedQuantity = 0; + this.rescode = 400 + this.resmessage = '鏈鍙戣揣鏁颁笉鑳藉ぇ浜庢�荤殑闇�姹傛暟鍑忓幓宸插彂璐ф暟' + this.$refs.resmodal.show = true + } + }, + //纭鏀惰揣 + submit() { + if(this.warehouse.OrderNo == 0) { + this.rescode = 400 + this.resmessage = '鍙栬揣娉㈡鍙蜂笉鑳戒负绌�' + this.$refs.resmodal.show = true + return + } + if(this.singlist.length == 0) { + this.rescode = 400 + this.resmessage = '鍙戣揣璇︽儏涓嶈兘涓虹┖' + this.$refs.resmodal.show = true + return + } + if(this.fileList.length<=0){ + this.rescode = 400 + this.resmessage = '璇蜂笂浼犲浘鐗�'; + this.$refs.resmodal.show = true + return + } + this.singlist.forEach((item)=>{ + item.img = this.fileList[1] + }) + console.log(this.singlist) + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鍙戣揣锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + addDeliverRecord(this.singlist).then((res) => { + this.rescode = 200 + this.resmessage = '鍙戣揣鎴愬姛' + this.$refs.resmodal.show = true + this.rest(1) + }) + + } else if (res.cancel) { + + } + }) + }); + + }, + //閲嶇疆 + rest(parm) { + this.warehouse.DoOrderNo =''; + this.warehouse.OrderNo = ''; + this.warehouse.MaterialCode = ''; + this.singlist = []; + if(parm!=1 && this.fileList.length>0){ + this.delimage() + } + this.fileList = [] + this.image = '' + }, + // 涓婁紶鍥剧墖 - 鍥犻渶瑕佸帇缂╁浘鐗� 浠呮敮鎸乤pp涓婁紶鍥剧墖 + upload() { + this.fileList = [] + uni.chooseImage({ + sourceType: ["camera", "album"], + sizeType: "original", + count: 1, + success: (res) => { + this.image = res.tempFilePaths[0] + console.log(res.tempFilePaths) + translateapp(res.tempFilePaths[0], 80, imgUrl => { + let imgArr = [imgUrl] + imgArr.forEach(item => this.fileList.push({ + uri: item + })) + console.log(this.fileList) + uni.uploadFile({ + url: this.action, + files: this.fileList, + fileType: 'image', + success: (res) => { + if(res.statusCode==200){ + const result = JSON.parse(res.data) + if (result.data == null || result.data == '') { + this.image = '' + this.fileList = [] + this.$u.toast('鍥剧墖涓婁紶鏈嶅姟鍣ㄥけ璐�') + return + } + this.fileList.push(result.data) + }else{ + this.$u.toast('鍥剧墖涓婁紶澶辫触') + this.fileList = [] + this.image = '' + } + } + }) + }) + } + }) + }, + delimage() { + if(this.fileList.length<=0){ + return + } + if(!this.fileList[1]){ + this.fileList = []; + this.image = ''; + return + } + deletePicture({ + 'filepath':this.fileList[1] + }).then(res => { + if(res.code == 200) { + this.image = '' + this.$u.toast('绉婚櫎鍥剧墖鎴愬姛') + this.fileList = [] + }else { + this.rescode = 400 + this.resmessage = `鍒犻櫎鍥剧墖澶辫触` + this.$refs.resmodal.show = true + } + }) + }, + imgClick(url) { + if(this.image!==''){ + var imgArr = []; + imgArr.push(url) + //棰勮鍥剧墖 + uni.previewImage({ + urls: imgArr, + current: imgArr[0] + }); + } + }, + //鐩戝惉鍘熺敓杩斿洖閿� + onBackPress(e) { + this.delimage() + }, + //鎵撳嵃 + init(param) { + const arr = ['wareMaterialCode','uncollectedQuantity']; + const arrzw = ['鐗╂枡缂栧彿','瀹為檯鍙戣揣鏁�'] + let isAllow = '' + Object.keys(this.materlist).forEach(item => { + if(arr.includes(item)) { + if(!this.materlist[item]) { + isAllow = arr.indexOf(item) + // this.rescode = 400 + // this.resmessage = `${item}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.$refs.resmodal.show = true + return + } + } + }) + if(isAllow!=''){ + this.detailshow = false + this.rescode = 400 + this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + this.$refs.resmodal.show = true + return + } + + if(!this.contLabel || !this.ermNum){ + uni.showToast({ + title: '鏁伴噺涓嶈兘涓虹┖涓斿ぇ浜�0', + icon: 'none' + }) + return + } + this.materlist.supplier = this.materlist.supplier || '' + this.materlist.deliveryNo = this.warehouse.DoOrderNo || '' + this.materlist.completeQuantity = this.ermNum + this.arrPt = [this.materlist] + if(param==1){ + this.printComp() + }else{ + this.printBanma(0,2) + } + + }, + showImg(){ + this.showImgBtn =!this.showImgBtn + } + } + } +</script> + +<style lang="scss"> +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/expressmail/expressmail.vue b/LA24030_LuLiPackageLine_Pda/pages/expressmail/expressmail.vue new file mode 100644 index 0000000..ae39acb --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/expressmail/expressmail.vue @@ -0,0 +1,99 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">蹇�掑崟鍙风粦瀹�</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鍑哄簱鍗曞彿:" prop="orderNo" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.orderNo" placeholder="璇峰綍鍏ユ垨鎵爜" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left30rpx"> + </input> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="蹇�掑崟鍙�:" prop="trackingNo" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.trackingNo" placeholder="璇峰綍鍏ユ垨鎵爜" required + style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left30rpx"> + </input> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <button-modal :subShow='true' garmenTitle='纭缁戝畾' @submit='submit' /> + </view> +</template> + +<script> + import {getDate} from '../../utils/dateTime.js' + import ModalCode from '../../components/ModalCode.vue' + import ButtonModal from '../../components/buttonModal.vue' + import {addBindRecord} from '@/api/expressmail.js' + export default { + data() { + return { + rescode: 0, + resmessage: "", + warehouse: { //鍑鸿姹傚弬鏁� + orderNo: '', + trackingNo: '' + }, + warehouseRules: { + orderNo: [{required: true,message: '鍑哄簱鍗曞彿涓嶈兘涓虹┖',trigger: 'blur'}], + trackingNo: [{required: true,message: '蹇�掑崟鍙蜂笉鑳戒负绌�',trigger: 'blur'}], + }, + operator: '', // + + }; + }, + components: { + ModalCode, + ButtonModal + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + submit() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + addBindRecord(this.warehouse).then((res) => { + this.$refs.resmodal.show = true + this.rescode = 200 + this.resmessage = '缁戝畾鎴愬姛' + this.warehouse.orderNo = '' + this.warehouse.trackingNo = ''; + }) + } + }) + } + } + + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/hander/handerIn.vue b/LA24030_LuLiPackageLine_Pda/pages/hander/handerIn.vue new file mode 100644 index 0000000..ae08c41 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/hander/handerIn.vue @@ -0,0 +1,452 @@ +<template> + <view class="overflow" style="padding-bottom:400px"> + <!-- 椤堕儴 --> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"></block> + <block slot="content">鐗╂枡鍚堝苟</block> + </cu-custom> + <!-- 鎿嶄綔浜� --> + <!-- <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> --> + + <div class="boxProp"> + <view class="line"> + <text class="text-gray"> + <span style="display: inline-block;width: 75px;">鏂拌窡韪爜 </span> + </text> + <text> + {{ materlist.snCode }} + </text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏁伴噺</text> + <text>{{ materlist.quantity }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{ materlist.materialCode }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{ materlist.materialName }}</text> + </view> + </div> + + <!-- 閬尅灞� --> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class=""> + <u-form labelPosition="left" :model="warehouse" label-width="180rpx" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item required label="鐗╂枡璺熻釜鐮�:" class="uFormItem"> + <u-input v-model.trim="warehouse.snCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="warehouse.snCode = ''" + class="width padding_left25rpx" :focus="true" @confirm="materialBlur(1)"> + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <view v-for="(item, eindex) in singlist" :key="eindex" class="margin_top10rpx"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpredel" @open="open" @close="close" + :options="options"> + <view class="fontSize32rpx background_fff padding10" :class="item.isYueku == '鏄�' ? 'bg_item' : ''" + style="width: 100vw"> + <u-row> + <u-col span="12"> + <label class="flex align-center"> + <text class="flex justify-center align-center circkle06">{{ eindex + 1 }}</text> + <view class="color_f18202 padding_left10rpx" style="flex: 1; word-break: break-all"> + {{ item.materialCode }}-{{ item.materialName }} + </view> + </label> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="padding_left25rpx" style="color: #808080"> + 璺熻釜鐮侊細{{ item.snCode }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="padding_left25rpx" style="color: #808080"> + 鎵规锛歿{ item.batch }} + </view> + </u-col> + </u-row> + <!-- <u-row> + <u-col span="7"> + <view class="padding_left25rpx" style="color: #808080"> + 鏈�楂樺簱瀛樻暟锛歿{ Number(item.maxImumqty).toFixed(3) }} + </view> + </u-col> + <u-col span="5"> + <view class="" style="color: #808080"> + 搴撳瓨鏁帮細{{ Number(item.stockQty).toFixed(3) }} + </view> + </u-col> + </u-row> --> + <!-- <u-row> + <u-col span="7"> + <view class="padding_left25rpx" style="color: #808080"> + 琛屽彿锛歿{ item.asnLineNumber }} + </view> + </u-col> + <u-col span="5"> + <view class="" style="color: #808080"> + 杞崲鐜囷細{{ item.translateRate }} + </view> + </u-col> + </u-row> --> + + <u-row> + <u-col span="7"> + <view class="padding_left25rpx" style="color: #808080"> + 瀹瑰櫒缂栧彿锛歿{ item.containerCode }} + </view> + </u-col> + <u-col span="5"> + <view class="" style="color: #808080"> + 搴撳瓨鍗曚綅锛歿{ item.materialUnit }} + </view> + </u-col> + </u-row> + + <u-row> + <u-col span="7"> + <view class="padding_left25rpx" style="color: #808080"> + 搴撳瓨鐘舵�侊細{{ item.stockStatusName }} + </view> + </u-col> + <u-col span="5"> + <view class="" style="color: #f18202"> + 鏁伴噺锛歿{ Number(item.quantity).toFixed(3) }} + </view> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + + <button-modal :empTytowerShow='true' cleaningTitle="鎵撳嵃" garmenTitle='纭' @submit='submit' @reset='print' /> + </view> + + </view> +</template> + +<script> +import ButtonModal from '@/components/buttonModal.vue' +import ModalCode from '@/components/ModalCode.vue' +import { getSGjRuKuMaterialHander, addWarehouseHbHander,outBoundOrderHander } from '@/api/hander/hander.js' +export default { + data() { + return { + renameFocus: true, + detailshow: false, + rescode: 0, + autoFoucs: true, + resmessage: "", + current: 0, //婊戝潡榛樿鍊� + singlist: [], //鐗╂枡璇︽儏 + materlist: { + snCode:"", + quantity:0, + materialCode:"", + materialName:"", + }, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + snCode: '', + quantity: 0 + }, + warehouseRules: { + snCode: [{ + required: true, + message: '鐗╂枡璺熻釜鐮佷笉鑳戒负绌�', + trigger: 'blur' + }] + }, + options: [ + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ] + }; + }, + components: { + ButtonModal, + ModalCode, + }, + onLoad() { + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //鐗╂枡鏌ヨ + materialBlur() { + if (!this.warehouse.snCode) { + this.resmessage = "璇锋壂鐗╂枡璺熻釜鐮�"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + return + } + getSGjRuKuMaterialHander({ + page: 1, + pageSize: 1, + SNCodeForPda: this.warehouse.snCode + }).then((res) => { + if (res.code == 200) { + var arrList = res.result.items; + if (arrList.length == 0) { + this.resmessage = "鏆傛棤鏁版嵁"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + if (Array.isArray(arrList) && arrList.length >= 1) { + var IDM = arrList[0].snCode; + var arrNo = this.singlist.findIndex((v) => v.snCode == IDM); + if (arrNo == -1) { + this.singlist.unshift(arrList[0]); + this.$forceUpdate() + + if (this.singlist.length == 1) { + this.materlist = JSON.parse(JSON.stringify(arrList[0])); + this.materlist.snCode = "HB_" + arrList[0].snCode; + // this.materlist.materialCode = arrList[0].materialCode + // this.materlist.materialName = arrList[0].materialName + } + this.materlist.quantity = this.singlist.reduce((prev, next) => { + let num = Number(prev) + Number(next.quantity); + return Number(num).toFixed(3); + }, 0); + } else { + this.resmessage = `璺熻釜鐮�${arrList[0].snCode}宸插瓨鍦紒`; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + + // var stockQty = arrList[0].stockQty || 0; + // var allHe = Number(arrList[0].quantity + stockQty).toFixed(3); + // //鏈�楂樺簱瀛榤axImumqty < 鏀惰揣鏁皅uantity + 搴撳瓨鏁皊tockQty + // if (arrList[0].maxImumqty && arrList[0].maxImumqty > 0 && + // (arrList[0].maxImumqty < allHe)) { + // uni.showModal({ + // title: "鎻愮ず", + // content: "瓒呭嚭鏈�楂樺簱瀛橈紝鏄惁缁х画鏀惰揣锛�", + // showCancel: true, + // cancelColor: "#333333", + // success: (res) => { + // if (res.confirm) { + // arrList.forEach((item) => { + // var arrNo = this.singlist.findIndex((v) => v.id == item.id); + // if (arrNo == -1) { + // this.singlist.unshift(item); + // } + // }); + // } else if (res.cancel) { + // } + // }, + // }); + // } else { + // arrList.forEach((item) => { + // var arrNo = this.singlist.findIndex((v) => v.id == item.id); + // if (arrNo == -1) { + // this.singlist.unshift(item); + // } + // }); + // } + } else { + this.resmessage = "鏆傛棤鏁版嵁"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + } + }); + }, + //鍒犻櫎璇︽儏 + longpredel(index, eindex) { + if (eindex == 0) { + uni.showModal({ + title: "鎻愮ず", + content: "鏄惁纭鍒犻櫎锛�", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + + if(this.singlist.length == 1 ){ // 鍙墿涓�涓� + this.singlist.splice(index, 1); + this.materlist = {} + }else{ + this.singlist.splice(index, 1); + var itemNew = this.singlist[this.singlist.length - 1] + debugger + this.materlist.snCode = "HB_" + itemNew.snCode; + this.materlist.materialCode = itemNew.materialCode; + this.materlist.materialName = itemNew.materialName; + this.materlist.quantity = this.singlist.reduce((prev, next) => { + let num = Number(prev) + Number(next.quantity); + return Number(num).toFixed(3); + }, 0); + } + + } else if (res.cancel) { + } + }, + }); + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + }, + //鍗$墖閫変腑 + click(e) { + e.cardNum = true + this.$forceUpdate() + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + this.$forceUpdate() + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + + //纭 + submit() { + if (this.singlist.length <= 1) { + uni.showToast({ + title: "璇锋壂鐮佽窡韪爜", + icon: "none", + duration: 2000, + }); + return + } + var list = [] + this.singlist.forEach((item) => { + list.push(item.snCode) + }) + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鐗╂枡鍚堝苟锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + addWarehouseHbHander({ + quantity: this.materlist.quantity, + snCode: this.materlist.snCode, + 'snCodeList': list + }).then((res) => { + this.rescode = res.code + this.resmessage = "鐗╂枡鍚堝苟鎴愬姛" + this.$refs.resmodal.show = true + if (res.code == 200) { + this.renameFocus = true + this.rest() + } + }) + } else if (res.cancel) { + + } + }) + }); + + }, + //娓呮閫変腑 + rest() { + this.warehouse.snCode = ''; + + this.materlist.snCode = ''; + this.materlist.quantity = 0; + this.materlist.materialCode = ""; + this.materlist.materialName = ""; + this.autoFoucs = true + this.singlist = []; + }, + print(){ + if (this.singlist.length <= 0) { + uni.showToast({ + title: "璇锋壂鐮佽窡韪爜", + icon: "none", + duration: 2000, + }); + return + } + if (!this.materlist.snCode) { + uni.showToast({ + title: "璇锋壂鐮佽窡韪爜", + icon: "none", + duration: 2000, + }); + return + } + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鎵撳嵃锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + var {orderNo,relationNo ,orderNoLineNumber,relationNoLineNumber, ...rest } = this.materlist + var param = [ + { + ...rest, + orderNo:this.materlist.relationNo, + PrintType:1, //鎵撳嵃绫诲瀷锛氱墿鏂欒窡韪爜 + typeForPda:2 // 鐗╂枡鎷嗗垎1 鐗╂枡鍚堝苟2 + } + ] + outBoundOrderHander(param).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.resmessage = "鎵撳嵃鎴愬姛" + } + }) + } else if (res.cancel) { + + } + }) + }); + } + } +} +</script> + +<style lang="scss"> +.title-wrap { + background-color: white; + margin-top: 10px; +} + +.boxProp { + position: fixed; + bottom: 150rpx; + left: 0; + width: 100%; + z-index: 9; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/hander/handerOut.vue b/LA24030_LuLiPackageLine_Pda/pages/hander/handerOut.vue new file mode 100644 index 0000000..c32e20d --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/hander/handerOut.vue @@ -0,0 +1,354 @@ +<template> + <view class="overflow" style="padding-bottom:100px"> + <!-- 椤堕儴 --> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"></block> + <block slot="content">鐗╂枡鎷嗗垎</block> + </cu-custom> + <!-- 鎿嶄綔浜� --> + <!-- <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> --> + <!-- 閬尅灞� --> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class=""> + <u-form labelPosition="left" :model="warehouse" label-width="180rpx" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item required label="鐗╂枡璺熻釜鐮�:" class="uFormItem"> + <u-input v-model.trim="warehouse.snCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="warehouse.snCode = ''" + class="width padding_left25rpx" :focus="true" @confirm="materialBlur(1)"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item required label="鎷嗗垎鏁伴噺:" class="uFormItem"> + <u-input v-model.trim="quantityCf" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="quantityCf = ''" + class="width padding_left25rpx" type="number"> + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <view v-for="(item, eindex) in singlist" :key="eindex" class="margin_top10rpx"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpredel" @open="open" @close="close" + :options="options"> + <view class="fontSize32rpx background_fff padding10" :class="item.key == '鏄�' ? 'bg_item' : ''" + style="width: 100vw"> + <u-row> + <u-col span="12"> + <label class="flex align-center"> + <text class="flex justify-center align-center circkle06">{{ eindex + 1 }}</text> + <view class="color_f18202 padding_left10rpx" style="flex: 1; word-break: break-all"> + {{ item.materialCode }}-{{ item.materialName }} + </view> + </label> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="padding_left25rpx" style="color: #808080"> + 璺熻釜鐮侊細{{ item.snCode }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="padding_left25rpx" style="color: #808080"> + 鎵规锛歿{ item.batch }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="7"> + <view class="padding_left25rpx" style="color: #808080"> + 瀹瑰櫒缂栧彿锛歿{ item.containerCode }} + </view> + </u-col> + <u-col span="5"> + <view class="" style="color: #808080"> + 搴撳瓨鍗曚綅锛歿{ item.materialUnit }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="7"> + <view class="padding_left25rpx" style="color: #808080"> + 搴撳瓨鐘舵�侊細{{ item.stockStatusName }} + </view> + </u-col> + <u-col span="5"> + <view class="" style="color: #f18202"> + 鏁伴噺锛歿{ Number(item.quantity).toFixed(3) }} + </view> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + + <button-modal :empTytowerShow='true' cleaningTitle="鎵撳嵃" garmenTitle='纭' @submit='submit' @reset='print' /> + </view> + + </view> +</template> + +<script> +import ButtonModal from '@/components/buttonModal.vue' +import ModalCode from '@/components/ModalCode.vue' +import { getSGjRuKuMaterialHander, addWarehouseEstablishmentHander ,outBoundOrderHander} from '@/api/hander/hander.js' +export default { + data() { + return { + detailshow: false, + rescode: 0, + autoFoucs: true, + resmessage: "", + current: 0, //婊戝潡榛樿鍊� + singlist: [], //鐗╂枡璇︽儏 + singlistAll: [], //鐗╂枡璇︽儏 + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + snCode: "" + }, + quantityCf:"", + warehouseRules: { + snCode: [{ + required: true, + message: '鐗╂枡璺熻釜鐮佷笉鑳戒负绌�', + trigger: 'blur' + }] + }, + options: [ + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ] + }; + }, + components: { + ButtonModal, + ModalCode, + }, + onLoad() { + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + watch: { + quantityCf(val, oldVal) { + if(val && val > 0){ + if(this.singlistAll.length > 0 && val < this.singlistAll[0].quantity){ + var Index = 0 + var {quantity ,snCode,id,maxIndex,...rest} = this.singlistAll[0]; + if(maxIndex){ + Index = maxIndex + } + Index = Index+1; + this.singlist = [ + { + ...rest, + id:"", + snCode:snCode+"_"+Index, + maxIndex:Index, + quantity:Number(val).toFixed(3) + }, + { + ...rest, + id:id, + snCode:snCode, + maxIndex:Index, + quantity:Number(quantity - val).toFixed(3) + } + ] + }else{ + this.singlist = this.singlistAll; + } + }else{ + this.singlist = this.singlistAll; + } + } + }, + methods: { + //鐗╂枡鏌ヨ + materialBlur() { + if (!this.warehouse.snCode) { + this.resmessage = "璇锋壂鐗╂枡璺熻釜鐮�"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + return + } + getSGjRuKuMaterialHander({ + page: 1, + pageSize: 1, + SNCodeForPda: this.warehouse.snCode + }).then((res) => { + if (res.code == 200) { + var arrList = res.result.items; + if (arrList.length == 0) { + this.resmessage = "鏆傛棤鏁版嵁"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + if (Array.isArray(arrList) && arrList.length >= 1) { + this.singlistAll = arrList; + this.singlist = arrList; + } else { + this.resmessage = "鏆傛棤鏁版嵁"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + } + }); + }, + //鍒犻櫎璇︽儏 + longpredel(index, eindex) { + if (eindex == 0) { + uni.showModal({ + title: "鎻愮ず", + content: "鏄惁纭鍒犻櫎锛�", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + this.singlist.splice(index, 1) + } else if (res.cancel) { + } + }, + }); + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + }, + //鍗$墖閫変腑 + click(e) { + e.cardNum = true + this.$forceUpdate() + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + this.$forceUpdate() + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + + //纭 + submit() { + if (this.singlist.length <= 0) { + uni.showToast({ + title: "璇锋壂鐮佽窡韪爜", + icon: "none", + duration: 2000, + }); + return + } + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鐗╂枡鎷嗗垎锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + var pramlist = []; + this.singlist.forEach((item)=>{ + pramlist.push({ + Id:item.id, + Quantity:item.quantity, + maxIndex:item.maxIndex || 0, + SNCode:item.snCode, + }) + }) + addWarehouseEstablishmentHander({ + "snCode": this.singlistAll[0].snCode, + "wmsMaterialSplits": pramlist + }).then((res) => { + this.rescode = res.code + this.resmessage = "鐗╂枡鎷嗗垎鎴愬姛" + this.$refs.resmodal.show = true + if (res.code == 200) { + this.rest() + } + }) + + } else if (res.cancel) { + + } + }) + }); + + }, + //娓呮閫変腑 + rest() { + this.warehouse.snCode = ''; + this.quantity=""; + this.quantityCf=""; + this.autoFoucs = true + this.singlist = []; + this.singlistAll = [] + }, + print(){ + if (this.singlist.length <= 0) { + uni.showToast({ + title: "璇锋壂鐮佽窡韪爜", + icon: "none", + duration: 2000, + }); + return + } + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鎵撳嵃锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + this.singlist.forEach((item)=>{ + item.printType=1 //鎵撳嵃绫诲瀷锛氱墿鏂欒窡韪爜 + item.typeForPda = 1 // 鐗╂枡鎷嗗垎1 鐗╂枡鍚堝苟2 + }) + outBoundOrderHander(this.singlist).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.resmessage = "鎵撳嵃鎴愬姛" + } + }) + } else if (res.cancel) { + + } + }) + }); + } + } +} +</script> + +<style lang="scss"> +.title-wrap { + background-color: white; + margin-top: 10px; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/index/index copy.vue b/LA24030_LuLiPackageLine_Pda/pages/index/index copy.vue new file mode 100644 index 0000000..bddfde0 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/index/index copy.vue @@ -0,0 +1,691 @@ +<template> + <view class="homepage"> + <view class="width overflow"> + <cu-custom bgColor="#fabd01"> + <block slot="backText"> + </block> + <block slot="content"> + <view class="" style="color: #fff;"> + 棣栭〉 + </view> + </block> + <block slot="right"> + <u-icon name="list" class="margin_left30rpx" style="color: #fff;font-size: 33px;" @click="out"> + </u-icon> + </block> + </cu-custom> + <!-- <view class="flex align-center margin_bottom10rpx"> + <view class="background_fff flex align-center width80 radius justify-start padding_right10rpx" + style="height: 33px;margin-left: 15px;"> + <u-icon name="search" color="#cacaca" class="padding_left10rpx padding_right10rpx"></u-icon> + <u-input /> + <button style="height: 30px;line-height: 30px;font-size: 15px;color: #777">鎼滅储</button> + </view> + <u-icon name="list" class="margin_left30rpx" style="color: #fff;font-size: 33px;" @click="out"> + </u-icon> + </view> --> + <view class="card flex align-center"> + <text class="padding_left25rpx"> + <image src="../../static/index/tou.png" mode="" style="width: 65px;height: 65px;"></image> + </text> + <view class="margin_left30rpx"> + <view class="flex"> + <view class="font_weight_bold fontSize36rpx padding_right30rpx">{{ UserInfoList.realName }} + </view> + <text class="margin_right30rpx border000 radius padding5_10" + style="color: #f58f02;border: 1px solid #f58f02;" v-if="roleName">{{ roleName }}</text> + </view> + <view class="margin_top20rpx"> + <text>{{ UserInfoList.nickName }}</text> + </view> + </view> + </view> + </view> + <view class="width margin_top4rpx " :style="[{ height: 'calc(100vh - ' + CustomBar + 'px)' }]"> + <scroll-view scroll-y="true" :style="[{ height: 'calc(100vh - ' + 200 + 'px)' }]"> + <view class="width margin_top30rpx overflow"> + <view class="height width overflow_auto card " style="padding-top: 15px;" + v-for="(eitem, eindex) in cleanoutlist" :key="eindex"> + <view class="padding_left30rpx fontSize32rpx" style="padding-bottom: 20px;"> + {{ eitem.title }} + </view> + <view class="flex align-center flex-wrap "> + <template v-for="(item, index) in eitem.cleanoutlist"> + <view @click="skip(item)" :key="index" + class=" fontSize32rpx width31 text_align_center margin_left10rpx margin_bottom50rpx"> + <!-- <view class="iconfont fontSize80rpx padding_bottom" :class="item.icon" + :style="'color:'+item.color"></view> --> + <view class="margin_auto" style='width: 40px;height:30px;'> + <image :src='item.src' style="width: 80%;height: 95%;" /> + </view> + <view>{{ item.name }}</view> + </view> + </template> + </view> + </view> + </view> + </scroll-view> + </view> + <buttom-modal :BottomModal='BottomShow' modaltitle='' cudiaheight='600' @hideModal='hideModal'> + <view slot='content' class="width94 height300rpx margin_auto margin_top20rpx overflow_auto"> + <template v-for="(item, index) in list"> + <view class="text_align_center border_radius fontSize36rpx + margin_bottom10rpx padding40_0 bg-grey" :key="index" @longpress="longpress(item, index)"> + {{ item.name }} + </view> + </template> + </view> + </buttom-modal> + </view> +</template> + +<script> + import LeftModal from '../../components/LeftModal.vue' + // import UserInfo from './components/userinfo.vue' + import ButtomModal from '../../components/BottomModal.vue' + import mixBule from '../../mixins/Blue.js' + import { + loginOut,getLoginMenu + } from '../../api/login.js' + export default { + data() { + return { + backButtonPress: 0, + BottomShow: false, + name: '', + rolename: '', + id: 78978989, + DrawerModalL: false, + UserInfoList: [], + roleName: '', + cleanoutlist: [ + { + title: '甯哥敤', + cleanoutlist: [ + + { + name: '鏍囧噯鏀惰揣', + icon: 'icon-shouhuoguanli', + src: '../../static/index/takeMaterial.png', + pages: '../takeMaterial/orderpiece/orderpiece' + }, + // { + // name: '鍚庣粦瀹氭敹璐�', + // icon: 'icon-shouhuoguanli', + // src: '../../static/index/takeMaterial.png', + // pages: '../takeMaterial/orderpiece/orderpiecePo?orderType=1' + // }, + { + name: '鐗╂枡缁勭洏/涓婃灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/artificial.png', + pages: '../artificial/artificial' + }, + { + name: '鐗╂枡瑙g粦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../untie/untie' + }, + { + name: '鐗╂枡涓婃灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../putaway/putaway' + }, + { + name: '鏁翠綋鎷h揣', + icon: 'icon-kuaidiguanli', + src: '../../static/index/sort.png', + pages: '../sort/squareSort2?orderType=1' + }, + { + name: '閫愪欢鎷h揣', + icon: 'icon-kuaidiguanli', + src: '../../static/index/sort.png', + pages: '../sort/squareSort2?orderType=2' + }, + + ] + }, + { + title: '杈呭姪鍔熻兘', + cleanoutlist: [ + { + name: '鍐荤粨/瑙e喕', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '/pages/untie/checkAllMove' + }, + { + name: '鐗╂枡鍚堝苟', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../hander/handerIn` + }, + { + name: '鐗╂枡鎷嗗垎', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../hander/handerOut` + }, + { + name: '鐐瑰埌鐐�', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../putIn/material/material` + }, + { + name: '搴撲綅缁戝畾', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '/pages/untie/localBind' + }, + { + name: '搴撲綅瑙g粦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '/pages/untie/localUnBind' + }, + { + name: '瀹瑰櫒涓婃灦', + icon: 'icon-shouhuoguanli', + src: '../../static/index/untie.png', + pages: '../putaway/putaway?actionType=3' + }, + { + name: '瀹瑰櫒缁勭洏/涓婃灦', + icon: 'icon-shouhuoguanli', + src: '../../static/index/untie.png', + pages: '../sort/pickorder?actionType=3' + }, + { + name: '瀹瑰櫒瑙g粦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../callTray/callTray' + }, + { + name: '瀹瑰櫒涓嬫灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../sort/kittingSort' + }, + + ] + }, + { + title: '鐩樼偣绠$悊', + cleanoutlist: [{ + name: '鐩樼偣涓嬪彂', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../check/check/index` + }, + { + name: '鐩樼偣', //鐩樼偣 + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../check/out?id=0` //0鏄垵鐩橈紝1鏄鐩� + }, + // { + // name: '澶嶇洏鐩樼偣', //鐩樼偣 + // icon: 'icon-rukucaozuo', + // src: '../../static/index/putIn.png', + // pages: `../check/out?id=1` //0鏄垵鐩橈紝1鏄鐩� + // }, + + // { + // name: '鐩樼偣涓嬪彂', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/putIn.png', + // pages: `../check/check/index` + // }, + // { + // name: '鐩樼偣', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/putIn.png', + // pages: `../check/square` + // }, + ] + }, + + ], + // 鍘熸潵鐨勮彍鍗� + cleanoutlist2: [{ + title: '甯哥敤', + cleanoutlist: [{ + name: '鏀惰揣', + icon: 'icon-shouhuoguanli', + src: '../../static/index/takeMaterial.png', + pages: '../takeMaterial/orderpiece/orderpiecePo?orderType=1' + }, + { + name: '鍒拌揣鍗曟敹璐�', + icon: 'icon-shouhuoguanli', + src: '../../static/index/takeMaterial.png', + pages: '../takeMaterial/orderpiece/orderpiece' + }, + { + name: '鎺ㄨ崘涓婃灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/artificial.png', + pages: '../recommend/recommend' + }, + { + name: '涓婃灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/artificial.png', + pages: '../artificial/artificial' + }, + { + name: '涓嬫灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../untie/untie' + }, + { + name: '绉诲簱', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../untie/untieForMove' + }, + { + name: '鍏ㄦ绉诲簱', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '/pages/untie/checkAllMove' + }, + { + name: '瓒婂簱', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../crossDock/crossDock' + }, + + //闅愯棌杩欎釜鍔熻兘 銆怑ditby shaocx,2023-04-14銆� + // { + // name: '涓婃灦', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/putIn.png', + // pages: '../putIn/three/three' + // }, + //闅愯棌杩欎釜鍔熻兘 銆怑ditby shaocx,2023-04-14銆� + // { + // name: '涓嬫灦纭', + // icon: 'icon-kuaidiguanli', + // src: '../../static/index/untie.png', + // pages: '../untie/outbound' + // }, + // { + // name: 'A1/A2鍒嗘嫞', + // icon: 'icon-kuaidiguanli', + // src: '../../static/index/sort.png', + // pages: '../sort/sort' + // }, + { + name: '鐢熶骇璁㈠崟鍙栬揣', + icon: 'icon-shouhuoguanli', + src: '../../static/index/takeMaterial.png', + pages: '../sort/pickorder' + }, + { + name: '鐢熶骇璁㈠崟鍒嗘嫞', + icon: 'icon-kuaidiguanli', + src: '../../static/index/sort.png', + pages: '../sort/kittingSort' + }, + { + name: 'DO鍗曞垎鎷�', + icon: 'icon-kuaidiguanli', + src: '../../static/index/sort.png', + pages: '../sort/squareSort2' + }, + { + name: 'STO鍗曞垎鎷�', + icon: 'icon-kuaidiguanli', + src: '../../static/index/sort.png', + pages: '../sort/squareSort2?orderType=24' + }, + { + name: '棰嗙敤鍗曞垎鎷�', + icon: 'icon-kuaidiguanli', + src: '../../static/index/sort.png', + pages: '../sort/squareSort2?orderType=27' + }, + + //鏆傛椂娉ㄩ噴 銆怑ditby shaocx,2023-04-23銆� + // { + // name: '闂浠舵爣璁�', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/putIn.png', + // pages: '../mark/mark' + // } + ] + + + }, + + + // { + // title: '璁㈠崟', + // cleanoutlist: [ + // { + // name: '鏀惰揣', + // icon: 'icon-shouhuoguanli', + // src: '../../static/index/takeMaterial.png', + // pages: '../takeMaterial/orderpiece/orderpiecePo?orderType=1' + // }, + // // { + // // name: 'STO鏀惰揣', + // // icon: 'icon-shouhuoguanli', + // // src: '../../static/index/takeMaterial.png', + // // pages: '../takeMaterial/orderpiece/orderpiecePo?orderType=23' + // // }, + // // { + // // name: '鐗╂枡琛ュ彂鏀惰揣', + // // icon: 'icon-shouhuoguanli', + // // src: '../../static/index/takeMaterial.png', + // // pages: '../takeMaterial/orderpiece/orderpiecePo?orderType=29' + // // }, + // // { + // // name: 'A1/A2鍒嗘嫞', + // // icon: 'icon-kuaidiguanli', + // // src: '../../static/index/sort.png', + // // pages: '../sort/sort2' + // // }, + + // ] + // }, + { + title: '鎾ら攢', + cleanoutlist: [{ + name: '鍙栬揣鎾ら攢', + icon: 'icon-shouhuoguanli', + src: '../../static/index/cancel.png', + pages: '../resume/pickResume' + }, + { + name: '鍒嗘嫞鎾ら攢', + icon: 'icon-shouhuoguanli', + src: '../../static/index/cancel.png', + pages: '../resume/sortResume' + }, + { + name: '瓒婂簱鎾ら攢', + icon: 'icon-shouhuoguanli', + src: '../../static/index/cancel.png', + pages: '../resume/yukuResume' + }, + ] + }, + { + title: '鍙戣揣', + cleanoutlist: [{ + name: 'DO鍙戣揣', + icon: 'icon-rukucaozuo', + src: '../../static/index/ping.png', + pages: '../deliver/deliverDo' + }, + { + name: 'STO鍙戣揣', + icon: 'icon-rukucaozuo', + src: '../../static/index/ping.png', + pages: '../deliver/deliverDo?orderType=24' + }, + { + name: '棰嗙敤鍗曞彂璐�', + icon: 'icon-rukucaozuo', + src: '../../static/index/ping.png', + pages: '../deliver/deliverDo?orderType=27' + }, + { + name: '鐢熶骇璁㈠崟鍙戣揣', + icon: 'icon-rukucaozuo', + src: '../../static/index/ping.png', + pages: '../deliver/deliver' + } + ] + }, + { + title: '鏍囩鎵撳嵃', + cleanoutlist: [ + // { + // name: '鏃犲崟鏍囩', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/ping.png', + // pages: '../print/materialInfo' + // }, + { + name: '鐗╂枡琛ユ墦', + icon: 'icon-rukucaozuo', + src: '../../static/index/ping.png', + pages: '../print/materialInfo' + }, + { + name: '鏍囩琛ユ墦', + icon: 'icon-rukucaozuo', + src: '../../static/index/ping.png', + pages: '../print/wms' + }, + // { + // name: '鎵归噺鎵撳嵃', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/ping.png', + // pages: '../print/material' + // } + ] + }, + { + title: '鐩樼偣绠$悊', + cleanoutlist: [{ + name: '鐩樼偣涓嬪彂', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../check/check/index` + }, + { + name: '鐩樼偣', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../check/square` + } + ] + }, + // 鏆傛椂娉ㄩ噴 銆怑ditby shaocx,2023-04-23銆� + // { + // title: '鎶ュ簾绠$悊', + // cleanoutlist: [{ + // name: '鎶ュ簾', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/putIn.png', + // pages: `../scrap/scrap` + // } + // // { + // // name: '鎶ュ簾鍗曟媿鐓�', + // // icon: 'icon-rukucaozuo', + // // src: '../../static/index/ping.png', + // // pages: `../scrap/photo` + // // } + // ] + // }, + { + title: '鎵嬪伐鍑轰笂鏋�', + cleanoutlist: [ + { + name: '鎵嬪伐涓婃灦', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../hander/handerIn` + }, + { + name: '鎵嬪伐涓嬫灦', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../hander/handerOut` + } + ] + } + ], + info: '', + menuAll:[] + } + }, + components: { + LeftModal, + // UserInfo, + ButtomModal + }, + mixins: [mixBule], + onBackPress(e) { + // 姝ゅ涓�瀹氳return涓簍rue锛屽惁鍒欓〉闈笉浼氳繑鍥炲埌鎸囧畾璺緞 + this.backButtonPress++; + if (this.backButtonPress > 1) { + plus.runtime.quit(); + } else { + plus.nativeUI.toast('鍐嶆寜涓�娆¢��鍑哄簲鐢�'); + } + setTimeout(function() { + this.backButtonPress = 0; + }, 1000); + return true; + }, + mounted() { + + + + getLoginMenu().then(res => { + // uni.setStorageSync('userInfo', JSON.stringify(res.result)) + // uni.navigateTo({ + // url: '../index/index' + // }) + console.log("888888") + console.log(res) + this.menuAll = res.result + + }) + + + this.UserInfoList = [] + this.UserInfoList = JSON.parse(uni.getStorageSync('userInfo')) + this.roleName = this.UserInfoList.roles.length !== 0 ? this.UserInfoList.roles[0].name : '' + + + + + // 鑾峰彇灞忓箷鍒嗚鲸鐜� + /*** + setTimeout(function() { + uni.getSystemInfo({ + success: function(e) { + console.log(1233) + this.info = ';screenHeight:' + e.screenHeight +';screenwidth:' + e.screenWidth +';platform:' + e.platform ; + console.log(this.info) + uni.showModal({ + title: '鎻愮ず', + content: this.info, + showCancel: true, + success: (res) => { + if (res.confirm) { + } + } + }); + } + }) + }, 2000); + */ + }, + methods: { + //杩炴帴钃濈墮 + openBlue() { + if (!uni.getStorageSync("deviceId")) { + this.openBluetoothAdapter() + setTimeout(() => { + if (uni.getStorageSync('blueShow')) { + this.BottomShow = true + } + + }, 500) + } + + }, + //鍏抽棴钃濈墮閫夐」 + hideModal() { + this.BottomShow = false + this.stopBluetoothDevicesDiscovery() + }, + //闀挎寜閫夋嫨鏄惁鍏抽棴钃濈墮 + bluelongress() { + if (uni.getStorageSync("deviceId")) { + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁鏂紑钃濈墮' + this.itemblue, + showCancel: true, + success: (res) => { + if (res.confirm) { + console.log('鏂紑钃濈墮') + // uni.removeStorageSync('deviceId') + // uni.removeStorageSync("serviceId"); + // uni.removeStorageSync("characteristicId"); + this.tomy() + this.itemblue = '杩炴帴钃濈墮' + } + } + }); + } + }, + out() { + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁閫�鍑�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + loginOut().then(res => { + uni.clearStorageSync() + uni.navigateTo({ + url: '../login/login' + }) + }) + } else if (res.cancel) {} + }) + }); + + }, + swiperchange(current) { + this.active = current.detail.current + }, + //璺宠浆 + skip(item) { + if (item.pages) { + uni.navigateTo({ + url: item.pages + }) + } + } + }, + watch: { + + } + } +</script> + +<style lang="scss" scoped> + .homepage { + // width: 100%; + // height: 100%; + height: 100vh; + overflow: hidden; + background-image: url("../../static/index/1.png"); + background-size: 100% 180%; + } + + .card { + background-color: #fff; + border-radius: 5px; + margin: 8px auto 0; + width: 95%; + padding: 15px 0; + } +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/index/index.vue b/LA24030_LuLiPackageLine_Pda/pages/index/index.vue new file mode 100644 index 0000000..6786f92 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/index/index.vue @@ -0,0 +1,827 @@ +<template> + <view class="homepage"> + <view class="width overflow"> + <cu-custom bgColor="#fabd01"> + <block slot="backText"> + </block> + <block slot="content"> + <view class="" style="color: #fff;"> + 棣栭〉 + </view> + </block> + <block slot="right"> + <u-icon name="list" class="margin_left30rpx" style="color: #fff;font-size: 33px;" @click="out"> + </u-icon> + </block> + </cu-custom> + <!-- <view class="flex align-center margin_bottom10rpx"> + <view class="background_fff flex align-center width80 radius justify-start padding_right10rpx" + style="height: 33px;margin-left: 15px;"> + <u-icon name="search" color="#cacaca" class="padding_left10rpx padding_right10rpx"></u-icon> + <u-input /> + <button style="height: 30px;line-height: 30px;font-size: 15px;color: #777">鎼滅储</button> + </view> + <u-icon name="list" class="margin_left30rpx" style="color: #fff;font-size: 33px;" @click="out"> + </u-icon> + </view> --> + <view class="card flex align-center"> + <text class="padding_left25rpx"> + <image src="../../static/index/tou.png" mode="" style="width: 65px;height: 65px;"></image> + </text> + <view class="margin_left30rpx"> + <view class="flex"> + <view class="font_weight_bold fontSize36rpx padding_right30rpx">{{ UserInfoList.realName }} + </view> + <text class="margin_right30rpx border000 radius padding5_10" + style="color: #f58f02;border: 1px solid #f58f02;" v-if="roleName">{{ roleName }}</text> + </view> + <view class="margin_top20rpx"> + <text>{{ UserInfoList.nickName }}</text> + </view> + </view> + </view> + </view> + <view class="width margin_top4rpx " :style="[{ height: 'calc(100vh - ' + CustomBar + 'px)' }]"> + <scroll-view scroll-y="true" :style="[{ height: 'calc(100vh - ' + 200 + 'px)' }]"> + <view class="width margin_top30rpx overflow"> + <view class="height width overflow_auto card " style="padding-top: 15px;" + v-for="(eitem, eindex) in cleanoutlist" :key="eindex"> + <view class="padding_left30rpx fontSize32rpx" style="padding-bottom: 20px;"> + {{ eitem.title }} + </view> + <view class="flex align-center flex-wrap "> + <template v-for="(item, index) in eitem.cleanoutlist"> + <view @click="skip(item)" :key="index" + class=" fontSize32rpx width31 text_align_center margin_left10rpx margin_bottom50rpx"> +<!-- 鍥炬爣 --> + <!-- <text class="iconfont fontSize80rpx padding_bottom" :class="item.icon" :style="'color:'+item.color"></text> --> + + <!-- 鍥剧墖 --> + <view class="margin_auto" style='width: 40px;height:30px;'> + <image :src='item.src' style="width: 80%;height: 95%;" /> + </view> + <view>{{ item.name }}</view> + </view> + </template> + </view> + </view> + </view> + </scroll-view> + </view> + <buttom-modal :BottomModal='BottomShow' modaltitle='' cudiaheight='600' @hideModal='hideModal'> + <view slot='content' class="width94 height300rpx margin_auto margin_top20rpx overflow_auto"> + <template v-for="(item, index) in list"> + <view class="text_align_center border_radius fontSize36rpx + margin_bottom10rpx padding40_0 bg-grey" :key="index" @longpress="longpress(item, index)"> + {{ item.name }} + </view> + </template> + </view> + </buttom-modal> + </view> +</template> + +<script> +import LeftModal from '../../components/LeftModal.vue' +// import UserInfo from './components/userinfo.vue' +import ButtomModal from '../../components/BottomModal.vue' +import mixBule from '../../mixins/Blue.js' +import { + loginOut, getLoginMenu +} from '../../api/login.js' +export default { + data() { + return { + backButtonPress: 0, + BottomShow: false, + name: '', + rolename: '', + id: 78978989, + DrawerModalL: false, + UserInfoList: [], + roleName: '', + // 鍙渶閰嶇疆杩欓噷 + cleanoutlistForUrl: [ + { + name: '鏍囧噯鏀惰揣', + icon: 'icon-shouhuoguanli', + src: '../../static/index/takeMaterial.png', + pages: '../takeMaterial/orderpiece/orderpiece' + }, + + { + name: '鐗╂枡缁勭洏/涓婃灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/artificial.png', + pages: '../artificial/artificial' + }, + { + name: '鐗╂枡瑙g粦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../untie/untie' + }, + { + name: '鐗╂枡涓婃灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../putaway/putaway' + }, + { + name: '鏁翠綋鎷h揣', + icon: 'icon-kuaidiguanli', + src: '../../static/index/sort.png', + pages: '../sort/squareSort2?orderType=1' + }, + { + name: '閫愪欢鎷h揣', + icon: 'icon-kuaidiguanli', + src: '../../static/index/sort.png', + pages: '../sort/squareSort2?orderType=2' + }, + { + name: '鍐荤粨/瑙e喕', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '/pages/untie/checkAllMove' + }, + { + name: '鐗╂枡鍚堝苟', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../hander/handerIn` + }, + { + name: '鐗╂枡鎷嗗垎', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../hander/handerOut` + }, + { + name: '鐐瑰埌鐐�', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../putIn/material/material` + }, + { + name: '搴撲綅缁戝畾', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '/pages/untie/localBind' + }, + { + name: '搴撲綅瑙g粦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '/pages/untie/localUnBind' + }, + { + name: '瀹瑰櫒涓婃灦', + icon: 'icon-shouhuoguanli', + src: '../../static/index/untie.png', + pages: '../putaway/putaway?actionType=3' + }, + { + name: '瀹瑰櫒缁勭洏/涓婃灦', + icon: 'icon-shouhuoguanli', + src: '../../static/index/untie.png', + pages: '../sort/pickorder?actionType=3' + }, + { + name: '瀹瑰櫒瑙g粦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../callTray/callTray' + }, + { + name: '瀹瑰櫒涓嬫灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../sort/kittingSort' + }, + { + name: '鐩樼偣涓嬪彂', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../check/check/index` + }, + { + name: '鐩樼偣', //鐩樼偣 + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../check/out?id=0` //0鏄垵鐩橈紝1鏄鐩� + }, + // { + // name: '寮傚父澶勭悊', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/ping.png', + // pages: '../print/wms' + // }, + { + name: '鐪嬫澘鍗″彨鏂�', + icon: 'icon-rukucaozuo', + src: '../../static/index/ping.png', + pages: '../print/wms' + }, + ], + cleanoutlist: [], + //鏃犵敤-鏈�鏂扮殑璺敱 + cleanoutlist8: [ + { + title: '甯哥敤', + cleanoutlist: [ + + { + name: '鏍囧噯鏀惰揣', + icon: 'icon-shouhuoguanli', + src: '../../static/index/takeMaterial.png', + pages: '../takeMaterial/orderpiece/orderpiece' + }, + // { + // name: '鍚庣粦瀹氭敹璐�', + // icon: 'icon-shouhuoguanli', + // src: '../../static/index/takeMaterial.png', + // pages: '../takeMaterial/orderpiece/orderpiecePo?orderType=1' + // }, + { + name: '鐗╂枡缁勭洏/涓婃灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/artificial.png', + pages: '../artificial/artificial' + }, + { + name: '鐗╂枡瑙g粦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../untie/untie' + }, + { + name: '鐗╂枡涓婃灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../putaway/putaway' + }, + { + name: '鏁翠綋鎷h揣', + icon: 'icon-kuaidiguanli', + src: '../../static/index/sort.png', + pages: '../sort/squareSort2?orderType=1' + }, + { + name: '閫愪欢鎷h揣', + icon: 'icon-kuaidiguanli', + src: '../../static/index/sort.png', + pages: '../sort/squareSort2?orderType=2' + }, + + ] + }, + { + title: '杈呭姪鍔熻兘', + cleanoutlist: [ + { + name: '鍐荤粨/瑙e喕', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '/pages/untie/checkAllMove' + }, + { + name: '鐗╂枡鍚堝苟', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../hander/handerIn` + }, + { + name: '鐗╂枡鎷嗗垎', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../hander/handerOut` + }, + { + name: '鐐瑰埌鐐�', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../putIn/material/material` + }, + { + name: '搴撲綅缁戝畾', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '/pages/untie/localBind' + }, + { + name: '搴撲綅瑙g粦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '/pages/untie/localUnBind' + }, + { + name: '瀹瑰櫒涓婃灦', + icon: 'icon-shouhuoguanli', + src: '../../static/index/untie.png', + pages: '../putaway/putaway?actionType=3' + }, + { + name: '瀹瑰櫒缁勭洏/涓婃灦', + icon: 'icon-shouhuoguanli', + src: '../../static/index/untie.png', + pages: '../sort/pickorder?actionType=3' + }, + { + name: '瀹瑰櫒瑙g粦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../callTray/callTray' + }, + { + name: '瀹瑰櫒涓嬫灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../sort/kittingSort' + }, + + ] + }, + { + title: '鐩樼偣绠$悊', + cleanoutlist: [{ + name: '鐩樼偣涓嬪彂', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../check/check/index` + }, + { + name: '鐩樼偣', //鐩樼偣 + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../check/out?id=0` //0鏄垵鐩橈紝1鏄鐩� + }, + // { + // name: '澶嶇洏鐩樼偣', //鐩樼偣 + // icon: 'icon-rukucaozuo', + // src: '../../static/index/putIn.png', + // pages: `../check/out?id=1` //0鏄垵鐩橈紝1鏄鐩� + // }, + + // { + // name: '鐩樼偣涓嬪彂', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/putIn.png', + // pages: `../check/check/index` + // }, + // { + // name: '鐩樼偣', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/putIn.png', + // pages: `../check/square` + // }, + ] + }, + + ], + //鏃犵敤-鍘熸潵鐨勮彍鍗� + cleanoutlist2: [{ + title: '甯哥敤', + cleanoutlist: [{ + name: '鏀惰揣', + icon: 'icon-shouhuoguanli', + src: '../../static/index/takeMaterial.png', + pages: '../takeMaterial/orderpiece/orderpiecePo?orderType=1' + }, + { + name: '鍒拌揣鍗曟敹璐�', + icon: 'icon-shouhuoguanli', + src: '../../static/index/takeMaterial.png', + pages: '../takeMaterial/orderpiece/orderpiece' + }, + { + name: '鎺ㄨ崘涓婃灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/artificial.png', + pages: '../recommend/recommend' + }, + { + name: '涓婃灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/artificial.png', + pages: '../artificial/artificial' + }, + { + name: '涓嬫灦', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../untie/untie' + }, + { + name: '绉诲簱', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../untie/untieForMove' + }, + { + name: '鍏ㄦ绉诲簱', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '/pages/untie/checkAllMove' + }, + { + name: '瓒婂簱', + icon: 'icon-kuaidiguanli', + src: '../../static/index/untie.png', + pages: '../crossDock/crossDock' + }, + + //闅愯棌杩欎釜鍔熻兘 銆怑ditby shaocx,2023-04-14銆� + // { + // name: '涓婃灦', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/putIn.png', + // pages: '../putIn/three/three' + // }, + //闅愯棌杩欎釜鍔熻兘 銆怑ditby shaocx,2023-04-14銆� + // { + // name: '涓嬫灦纭', + // icon: 'icon-kuaidiguanli', + // src: '../../static/index/untie.png', + // pages: '../untie/outbound' + // }, + // { + // name: 'A1/A2鍒嗘嫞', + // icon: 'icon-kuaidiguanli', + // src: '../../static/index/sort.png', + // pages: '../sort/sort' + // }, + { + name: '鐢熶骇璁㈠崟鍙栬揣', + icon: 'icon-shouhuoguanli', + src: '../../static/index/takeMaterial.png', + pages: '../sort/pickorder' + }, + { + name: '鐢熶骇璁㈠崟鍒嗘嫞', + icon: 'icon-kuaidiguanli', + src: '../../static/index/sort.png', + pages: '../sort/kittingSort' + }, + { + name: 'DO鍗曞垎鎷�', + icon: 'icon-kuaidiguanli', + src: '../../static/index/sort.png', + pages: '../sort/squareSort2' + }, + { + name: 'STO鍗曞垎鎷�', + icon: 'icon-kuaidiguanli', + src: '../../static/index/sort.png', + pages: '../sort/squareSort2?orderType=24' + }, + { + name: '棰嗙敤鍗曞垎鎷�', + icon: 'icon-kuaidiguanli', + src: '../../static/index/sort.png', + pages: '../sort/squareSort2?orderType=27' + }, + + //鏆傛椂娉ㄩ噴 銆怑ditby shaocx,2023-04-23銆� + // { + // name: '闂浠舵爣璁�', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/putIn.png', + // pages: '../mark/mark' + // } + ] + + + }, + + + // { + // title: '璁㈠崟', + // cleanoutlist: [ + // { + // name: '鏀惰揣', + // icon: 'icon-shouhuoguanli', + // src: '../../static/index/takeMaterial.png', + // pages: '../takeMaterial/orderpiece/orderpiecePo?orderType=1' + // }, + // // { + // // name: 'STO鏀惰揣', + // // icon: 'icon-shouhuoguanli', + // // src: '../../static/index/takeMaterial.png', + // // pages: '../takeMaterial/orderpiece/orderpiecePo?orderType=23' + // // }, + // // { + // // name: '鐗╂枡琛ュ彂鏀惰揣', + // // icon: 'icon-shouhuoguanli', + // // src: '../../static/index/takeMaterial.png', + // // pages: '../takeMaterial/orderpiece/orderpiecePo?orderType=29' + // // }, + // // { + // // name: 'A1/A2鍒嗘嫞', + // // icon: 'icon-kuaidiguanli', + // // src: '../../static/index/sort.png', + // // pages: '../sort/sort2' + // // }, + + // ] + // }, + { + title: '鎾ら攢', + cleanoutlist: [{ + name: '鍙栬揣鎾ら攢', + icon: 'icon-shouhuoguanli', + src: '../../static/index/cancel.png', + pages: '../resume/pickResume' + }, + { + name: '鍒嗘嫞鎾ら攢', + icon: 'icon-shouhuoguanli', + src: '../../static/index/cancel.png', + pages: '../resume/sortResume' + }, + { + name: '瓒婂簱鎾ら攢', + icon: 'icon-shouhuoguanli', + src: '../../static/index/cancel.png', + pages: '../resume/yukuResume' + }, + ] + }, + { + title: '鍙戣揣', + cleanoutlist: [{ + name: 'DO鍙戣揣', + icon: 'icon-rukucaozuo', + src: '../../static/index/ping.png', + pages: '../deliver/deliverDo' + }, + { + name: 'STO鍙戣揣', + icon: 'icon-rukucaozuo', + src: '../../static/index/ping.png', + pages: '../deliver/deliverDo?orderType=24' + }, + { + name: '棰嗙敤鍗曞彂璐�', + icon: 'icon-rukucaozuo', + src: '../../static/index/ping.png', + pages: '../deliver/deliverDo?orderType=27' + }, + { + name: '鐢熶骇璁㈠崟鍙戣揣', + icon: 'icon-rukucaozuo', + src: '../../static/index/ping.png', + pages: '../deliver/deliver' + } + ] + }, + { + title: '鏍囩鎵撳嵃', + cleanoutlist: [ + // { + // name: '鏃犲崟鏍囩', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/ping.png', + // pages: '../print/materialInfo' + // }, + { + name: '鐗╂枡琛ユ墦', + icon: 'icon-rukucaozuo', + src: '../../static/index/ping.png', + pages: '../print/materialInfo' + }, + { + name: '鏍囩琛ユ墦', + icon: 'icon-rukucaozuo', + src: '../../static/index/ping.png', + pages: '../print/wms' + }, + // { + // name: '鎵归噺鎵撳嵃', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/ping.png', + // pages: '../print/material' + // } + ] + }, + { + title: '鐩樼偣绠$悊', + cleanoutlist: [{ + name: '鐩樼偣涓嬪彂', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../check/check/index` + }, + { + name: '鐩樼偣', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../check/square` + } + ] + }, + // 鏆傛椂娉ㄩ噴 銆怑ditby shaocx,2023-04-23銆� + // { + // title: '鎶ュ簾绠$悊', + // cleanoutlist: [{ + // name: '鎶ュ簾', + // icon: 'icon-rukucaozuo', + // src: '../../static/index/putIn.png', + // pages: `../scrap/scrap` + // } + // // { + // // name: '鎶ュ簾鍗曟媿鐓�', + // // icon: 'icon-rukucaozuo', + // // src: '../../static/index/ping.png', + // // pages: `../scrap/photo` + // // } + // ] + // }, + { + title: '鎵嬪伐鍑轰笂鏋�', + cleanoutlist: [ + { + name: '鎵嬪伐涓婃灦', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../hander/handerIn` + }, + { + name: '鎵嬪伐涓嬫灦', + icon: 'icon-rukucaozuo', + src: '../../static/index/putIn.png', + pages: `../hander/handerOut` + } + ] + } + ], + info: '', + menuAll: [] + } + }, + components: { + LeftModal, + // UserInfo, + ButtomModal + }, + mixins: [mixBule], + onBackPress(e) { + // 姝ゅ涓�瀹氳return涓簍rue锛屽惁鍒欓〉闈笉浼氳繑鍥炲埌鎸囧畾璺緞 + this.backButtonPress++; + if (this.backButtonPress > 1) { + plus.runtime.quit(); + } else { + plus.nativeUI.toast('鍐嶆寜涓�娆¢��鍑哄簲鐢�'); + } + setTimeout(function () { + this.backButtonPress = 0; + }, 1000); + return true; + }, + mounted() { + getLoginMenu().then(res => { + res.result.forEach((item) => { + item.title = item.name + item.wmsPdaRoleMenuOutput.forEach((iteminner) => { + iteminner.title = item.name + //鍥犳棤鍥炬爣 鏆傛椂鐢ㄥ浘鐗� + var arr = this.cleanoutlistForUrl.filter(v=>v.name == iteminner.name); + if(arr.length> 0){ + iteminner.src = arr[0].src + } + }) + item.cleanoutlist = item.wmsPdaRoleMenuOutput; + }) + // test + this.cleanoutlist = res.result; + + }) + + + this.UserInfoList = [] + this.UserInfoList = JSON.parse(uni.getStorageSync('userInfo')) + this.roleName = this.UserInfoList.roles.length !== 0 ? this.UserInfoList.roles[0].name : '' + + + + + // 鑾峰彇灞忓箷鍒嗚鲸鐜� + /*** + setTimeout(function() { + uni.getSystemInfo({ + success: function(e) { + console.log(1233) + this.info = ';screenHeight:' + e.screenHeight +';screenwidth:' + e.screenWidth +';platform:' + e.platform ; + console.log(this.info) + uni.showModal({ + title: '鎻愮ず', + content: this.info, + showCancel: true, + success: (res) => { + if (res.confirm) { + } + } + }); + } + }) + }, 2000); + */ + }, + methods: { + //杩炴帴钃濈墮 + openBlue() { + if (!uni.getStorageSync("deviceId")) { + this.openBluetoothAdapter() + setTimeout(() => { + if (uni.getStorageSync('blueShow')) { + this.BottomShow = true + } + + }, 500) + } + + }, + //鍏抽棴钃濈墮閫夐」 + hideModal() { + this.BottomShow = false + this.stopBluetoothDevicesDiscovery() + }, + //闀挎寜閫夋嫨鏄惁鍏抽棴钃濈墮 + bluelongress() { + if (uni.getStorageSync("deviceId")) { + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁鏂紑钃濈墮' + this.itemblue, + showCancel: true, + success: (res) => { + if (res.confirm) { + console.log('鏂紑钃濈墮') + // uni.removeStorageSync('deviceId') + // uni.removeStorageSync("serviceId"); + // uni.removeStorageSync("characteristicId"); + this.tomy() + this.itemblue = '杩炴帴钃濈墮' + } + } + }); + } + }, + out() { + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁閫�鍑�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + loginOut().then(res => { + uni.clearStorageSync() + uni.navigateTo({ + url: '../login/login' + }) + }) + } else if (res.cancel) { } + }) + }); + + }, + swiperchange(current) { + this.active = current.detail.current + }, + //璺宠浆 + skip(itemW) { + var item = this.cleanoutlistForUrl.filter(v => v.name == itemW.name)[0]; + if (item.pages) { + uni.navigateTo({ + url: item.pages + }) + } + } + }, + watch: { + + } +} +</script> + +<style lang="scss" scoped> +.homepage { + // width: 100%; + // height: 100%; + height: 100vh; + overflow: hidden; + background-image: url("../../static/index/1.png"); + background-size: 100% 180%; +} + +.card { + background-color: #fff; + border-radius: 5px; + margin: 8px auto 0; + width: 95%; + padding: 15px 0; +} +.fontSize80rpx{ + font-size: 80rpx; +} +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/login/login.vue b/LA24030_LuLiPackageLine_Pda/pages/login/login.vue new file mode 100644 index 0000000..b74ee60 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/login/login.vue @@ -0,0 +1,523 @@ +<template> + <view class="width height overflow_hidden bg"> + <view class="logo"> + <image src="../../static/logo.jpg" ></image> + </view> + <view class="width height50"> + <view class="text_align_center fontSize56rpx "> + 鏍囧噯鍖栧師鏉愭枡搴� + </view> + <view class="text_align_center margin_bottom18 " + style="font-size: 40rpx;color: #9fa09f;padding: 25rpx 0 0;"> + 鈥旀櫤鑳戒粨鍌ㄧ郴缁熲�� + </view> + <!-- <tki-barcode :loadMake="false" :opations="opations" :onval="true" format="code128" :val="val" ref="barcode" + @result="barresult" /> --> + <view class="width80 margin_auto margin_top5"> + <view class="flex align-center height80rpx padding border border_radius box_sizing"> + <view class="fontSize42rpx iconfont icon-zhanghao"></view> + <input v-model.trim="loginform.account" class="width94 height padding_left10rpx fontSize28rpx" + type="text" placeholder="璇疯緭鍏ヨ处鍙�" /> + <u-icon name="arrow-down" style="color: #b5b5b5;" v-if="accList.length!==0" @click="accshow=true"> + </u-icon> + </view> + <u-select v-model="accshow" :list="accList" @confirm="confirm"></u-select> + </view> + <view class="width80 margin_auto margin_top5 margin_bottom13"> + <view class="flex align-center height80rpx padding border border_radius box_sizing"> + <view class="fontSize42rpx iconfont icon-mima1"></view> + <input v-model.trim="loginform.password" class=" padding_left10rpx fontSize28rpx" placeholder="璇疯緭鍏ュ瘑鐮�" + type="password" value="" /> + </view> + </view> + <view @click="register" + class="width80 fontSize36rpx text_align_center margin_auto margin_top5 color_F2F2F2 padding_up_down25 border_radius" + style="background-color: #f18202;"> + 鐧诲綍 + </view> + + <!-- <view @click="tui1" + class="width80 fontSize36rpx text_align_center margin_auto margin_top5 color_F2F2F2 padding_up_down25 border_radius" + style="background-color: #f18202;"> + 鎺ㄩ�� + </view> --> + <!-- <view class="update" @click="AndroidCheckUpdate"> + 鏇存柊APP + </view> + <view class="ip" @tap="modalshow=true"> + 鍒囨崲鍦板潃 + </view> --> + <!-- <view class="fixed left50 bottom0 transformX"> + 搴旂敤鐗堟湰鍙� {{wgtVer}} + </view> --> + + <view class="fixed left50 bottom0 transformX " @click="plusReady(1)" style="padding: 40rpx 0;"> + <view v-if="wgtVer">鐗堟湰鍙� {{wgtVer}} - {{ versionTime }}</view> + <view v-else>鏇存柊鐗堟湰</view> + </view> + + </view> + <cu-modal :modalshow='modalshow' placeholder='鏈嶅姟淇℃伅' @hideModal='modalshow=false'> + <view slot='modal' class=""> + <u-input type="text" placeholder="璇疯緭鍏ュ湴鍧�" border v-model="ip_pk" /> + <button class="margin_top40rpx bg-grey" @tap="confirmclikc">纭</button> + </view> + </cu-modal> + + </view> +</template> + +<script> + // import {mixin} from '../../utils/mixin.js' + // import { TencentKonaInit, SM4_DEF, SM4_GCM, SM2,SM2_UTIL, SM4_ECB, SM3 } from "@/uni_modules/sm-crypto" + import CuModal from '../../components/CuModal.vue' + import md5 from "../../utils/md5.js"; + import tkiBarcode from '@/components/tki-barcode/tki-barcode' + import tkiQrcode from '@/components/tki-qrcode/tki-qrcode' + import { + login, + getLoginUser, + getWgt + } from '../../api/login.js' + + + export default { + data() { + return { + backButtonPress:0, + loginform: { + account: 'superAdmin', + password: '123456' + }, + // flag: true, + wgtVer: '', + versionTime: '', + ip_pk: '', + modalshow: false, + accList: [], + accshow: false, + opations: { + width: 4, + height: 120, + fontSize: 24, + fontColor: "#000000", + displayValue: true, + textAlign: "center", + textPosition: "bottom", + textMargin: 5, + background: "#FFFFFF", + margin: 5 + }, + val: "", + bar: ['barcode'] + }; + }, + components: { + CuModal, + tkiBarcode, + tkiQrcode + }, + onLoad() { + //鑾峰彇褰撳墠鐗堟湰淇℃伅锛屽拰杩滅▼鐨勬渶鏂版墦鍖呯増鏈� + // this.plusReady() + // this.version = plus.runtime.version; //搴旂敤鐨勭増鏈俊鎭� + + // setInterval(() => { + // this.tui1(); + // }, 10000);//20绉� + + + }, + onShow() { + this.remove() + // uni.clearStorageSync(); + if (uni.getStorageSync('accList')) { + let a = JSON.parse(uni.getStorageSync('accList')) + let obj = {} + for (let key in a) { + obj[key] = a[key] + } + this.accList = Object.keys(obj).map(val => ({ + label: obj[val] + })) + this.accList.forEach((item, index) => { + item.value = index + 1 + }) + } + }, + mounted() { + this.plusReady(); + this.tongzhiPerssiom(); + }, + methods: { + // 鑾峰彇褰撳墠鐗堟湰鍙� + plusReady(parmam) { + var that = this; + // 鑾峰彇鏈湴搴旂敤璧勬簮鐗堟湰鍙� 聽 + plus.runtime.getProperty(plus.runtime.appid, function(inf) { + console.log(inf) + that.data = inf + that.wgtVer = inf.version ||''; //鑾峰彇褰撳墠鐗堟湰鍙� + that.versionTime = inf.description ||''//鑾峰彇鐗堟湰鏂囦欢鐨勬洿鏂版椂闂� + if(parmam){ + that.checkUpdate(inf.version) + } + }); + }, + // 鑾峰彇鏂囦欢鍚嶅拰鎷撳睍鍚� + getFilenameAndExtension(pathfilename){ + var filenameextension = pathfilename.replace(/^.*[\\\/]/, ''); + var filename = filenameextension.substring(0, filenameextension.lastIndexOf('.')); + var ext = filenameextension.split('.').pop(); + return [filename, ext]; + }, + // 鑷姩鏇存柊 閫氳繃鎺ュ彛鑾峰彇wgt鍖呭湴鍧� 1.0.1 + checkUpdate(appVer){ + var that = this; + console.log('褰撳墠鐗堟湰鍙�') + console.log(appVer) + getWgt().then(res => { + console.log(res) + if(res.code==200){ + res.data = res.result; + console.log(res.data) + if(res.data==''){ + console.log('娌℃湁wgt鏇存柊鍖�') + return + } + let fileUrlArr = that.getFilenameAndExtension(res.data) // ['1.0.2', 'wgt'] + if(fileUrlArr[1]!='wgt'){ + uni.showToast({ + title: '涓嶆槸wgt鏂囦欢锛屾棤娉曟洿鏂�', + mask: false, + duration: 5000, + icon: "none" + }); + return + } + let VersionNew = fileUrlArr[0] //1.0.2 + var downurl = res.data; + var ck1 = that.compareVersion(appVer, VersionNew); + var ck2 =''; + console.log("appVer锛�" + appVer) + console.log("VersionNew锛�" + VersionNew) + console.log("妫�娴嬬粨鏋�1锛�" + ck1) + if (ck1==true) { + console.log('涓嬭浇鍦板潃') + console.log( downurl ) + that.downWgt(downurl); + }else{ + console.log('鏆傛棤鏂扮増鏈洿鏂�') + uni.showToast({ + title: '鏆傛棤鏂扮増鏈洿鏂�', + mask: false, + duration: 5000, + icon: "none" + }); + } + } + }).catch((err)=>{ + uni.showToast({ + title: '璇锋鏌ョ綉缁滄垨鎺ュ彛鎵撳寘璺緞baseUrl', + mask: false, + duration: 1000, + icon: "none" + }); + }) + }, + // 瀵规瘮鐗堟湰鍙� + compareVersion(ov, nv, len){ + if (!ov || !nv || ov == "" || nv == "") { + return false; + } + var b = false; + var ova = ov.split(".", len); + var nva = nv.split(".", len); + var l = Math.min(ova.length, nva.length) + for (var i = 0; i < l; i++) { + var so = ova[i]; + var no = parseInt(so); + var sn = nva[i]; + var nn = parseInt(sn); + if (nn > no) { + b = true; + break; + } + } + //鏂�1.1.1 鏃�1.1 涓虹増鏈崌绾� + if (nva.length > ova.length && 0 == nv.indexOf(ov)) { + b = true; + } + return b; + }, + // // 涓嬭浇wgt鏂囦欢 + downWgt(wgtUrl){ + console.log('downWgt鏂规硶') + console.log(wgtUrl) + var that = this; + var wgtWaiting = ''; + console.log(plus.downloader) + var task = plus.downloader.createDownload(wgtUrl, { + filename: "_doc/update/" + }, function(d, status) { + console.log(status) + if (status == 200) { + console.log("涓嬭浇璧勬簮鎴愬姛锛�" + d.filename); + that.installWgt(d.filename); // 瀹夎wgt鍖� + } else { + uni.showToast({ + title: '涓嬭浇鍗囩骇鏂囦欢澶辫触锛佽妫�鏌ョ綉缁滃啀璇曪紒', + mask: false, + duration: 5000, + icon: "none" + }); + //plus.nativeUI.alert("鏇存柊璧勬簮澶辫触锛�"); + } + plus.nativeUI.closeWaiting(); + }); + var totalSize = 0; //鎬诲ぇ灏� + var downloadedSize = 0; + task.addEventListener("statechanged", function(download, status) { + console.log('status-' + status ) + console.log("download.downloadedSize-" + download.downloadedSize) + if(status==200){ + if (download.downloadedSize != 0) { + downloadedSize = Math.floor(download.downloadedSize / 1048576 * 100) / 100; + } + if (download.totalSize != 0) { + totalSize = Math.floor(download.totalSize / 1048576 * 100) / 100; + } + wgtWaiting.setTitle("宸蹭笅杞� " + downloadedSize + 'M /' + totalSize + "M"); + } + }); + if (plus.os.name == 'Android') { + console.log(plus.os.name) + uni.showModal({ + title: '搴旂敤鍗囩骇锛�', + content: `${wgtUrl}`, + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + task.start(); + wgtWaiting = plus.nativeUI.showWaiting("寮�濮嬩笅杞�"); + } else if (res.cancel) { + plus.runtime.quit(); + } + }) + }); + + } + }, + // 鏇存柊搴旂敤璧勬簮 + installWgt(path){ + var that = this; + plus.nativeUI.showWaiting("鏇存柊涓�..."); + plus.runtime.install(path, {}, function() { + plus.nativeUI.closeWaiting(); + console.log("瀹夎wgt鏂囦欢鎴愬姛锛�"); + plus.runtime.restart(); + }, function(e) { + plus.nativeUI.closeWaiting(); + console.log("瀹夎wgt鏂囦欢澶辫触[" + e.code + "]锛�" + e.message); + plus.nativeUI.alert("鏇存柊璧勬簮澶辫触[" + e.code + "]锛�" + e.message); + }); + }, + //娓呴櫎缂撳瓨 + remove() { + uni.removeStorageSync('token') + uni.removeStorageSync('userInfo') + }, + //纭閫夋嫨璐﹀彿 + confirm(e) { + this.loginform.account = e[0].label + }, + // 鑷姩鏇存柊 + AndroidCheckUpdate() { + //姣旇緝褰撳墠鐗堟湰鍜岃繙绋嬫湇鍔$増鏈槸鍚︿竴鑷� + if(this.wgtVer == this.version) { + uni.showToast({ + title: '褰撳墠鐗堟湰宸叉槸鏈�鏂扮増鏈�', + mask: true, + duration: 5000, + icon: "none" + }); + }else { + uni.showLoading({ + title:"鏇存柊涓�....." + }) + uni.downloadFile({ + url: '', + success: (fileResult) => { + uni.hideLoading() + plus.runtime.install(fileResult.tempFilePath,{force: false},_ => { + plus.runtime.restart() + },(e)=> { + uni.hideLoading() + uni.showToast({ + title:"鏇存柊澶辫触" + }) + }) + } + }) + } + }, + //鐧诲綍 + register() { + if(!this.loginform.account || !this.loginform.password) { + uni.showModal({ + title: '鎻愮ず', + content: "鐢ㄦ埛鍚嶅拰瀵嗙爜涓嶈兘涓虹┖", + showCancel: false, + }); + return; + } + //鍏挜 + // var publicKey = "0484C7466D950E120E5ECE5DD85D0C90EAA85081A3A2BD7C57AE6DC822EFCCBD66620C67B0103FC8DD280E36C3B282977B722AAEC3C56518EDCEBAFB72C5A05312"; + // // vue涓娇鐢⊿M2鍔犲瘑 + // const password = sm2.doEncrypt(this.loginform.password, publicKey, 1); + + let params = { + account: this.loginform.account, + // password: md5.hex_md5(this.loginform.password), + // password:password, + codeId:0, + password:"1c2f1d59ef1b820f7b0a8f787778a607f82c7f03ed7deee1516f6322b22d20f2b79166980b96258e3b1497cd9e241fd5ceae9ef372ceaaa32decbe40aa21d91db66e6fce4a88b21120c9889e4b471dd6f9b6e13ef7e1c4655aebfb27048fb2e06de43da824fa", + } + login(params).then(res => { + uni.hideKeyboard() + let data = res.data + uni.setStorageSync('token',res.result.accessToken) + getLoginUser().then(res => { + uni.setStorageSync('userInfo', JSON.stringify(res.result)) + uni.navigateTo({ + url: '../index/index' + }) + // if (uni.getStorageSync('accList')) { + // let a = JSON.parse(uni.getStorageSync('accList')) + // a.push(this.loginform.account) + // let list = [] + // a.forEach(function(item) { + // if (list.indexOf(item) == -1) { + // list.push(item) + // } + // }) + // uni.setStorageSync('accList', JSON.stringify(list)) + // } else { + // uni.setStorageSync('accList', JSON.stringify(Array(this.loginform + // .account))) + // } + // this.loginform = { + // account: '', + // password: '' + // } + + }) + + }) + }, + //鍒囨崲ip + confirmclikc() { + // uni.setStorageSync('ippk', this.ip_pk) + // this.modalshow = false + }, + // 鎺ㄩ�� + tui1(){ + console.log("444444444444") + var content="鎮ㄦ湁涓�鏉℃柊鐨勬秷鎭�!"; + var options ={ + 'cover':true,//瑕嗙洊涓婃cover"" + 'when':new Date(), + 'title':"閫氱煡娑堟伅" + } + var body ={ + 'id':'id', + 'key2':"key" + } + var payload = JSON.stringify(body); + plus.push.createMessage(content,payload,options); + + }, + // 鏄惁寮�鍚�氱煡鏉冮檺--濡傛灉娌℃湁锛岃烦杞缃紑鍚� + tongzhiPerssiom(){ + var main = plus.android.runtimeMainActivity(); + var pkName = main.getPackageName(); + + var NotificationManagerCompat = plus.android.importClass("android.support.v4.app.NotificationManagerCompat"); + + // console.log("666666666666666666") + // console.log(pkName) + + var packageNames = NotificationManagerCompat.from(main); + if (packageNames.areNotificationsEnabled()) { + console.log('宸插紑鍚�氱煡鏉冮檺'); + }else{ + uni.showModal({ + title: '閫氱煡鏉冮檺寮�鍚彁閱�', + content: '鎮ㄨ繕娌℃湁寮�鍚�氱煡鏉冮檺,鏃犳硶鎺ユ敹鍒版秷鎭�氱煡,鏄惁鍓嶅線璁剧疆', + showCancel: false, + success: function (res) { + if (res.confirm) { + var Intent = plus.android.importClass('android.content.Intent'); + var intent = new Intent('android.settings.APP_NOTIFICATION_SETTINGS');//鍙缃〃涓墍鏈堿ction瀛楁 + intent.putExtra('android.provider.extra.APP_PACKAGE', pkName); + main.startActivity(intent); + } + } + }); + } + } + + + + } + } +</script> + +<style lang="scss" scoped> + page { + background-color: #fff; + } + .bg { + padding-top: 120rpx; + box-sizing: border-box; + } + + .logo { + width: 220rpx; + height: 72rpx; + margin: 30rpx auto; + image { + width: 100%; + height: 100%; + } + } + + .update, + .ip { + width: 100%; + display: flex; + justify-content: flex-end; + padding-right: 30rpx; + padding-top: 30rpx; + text-decoration: underline; + color: #5173e4; + } + + .ip { + color: #333; + } + .tki-barcode { + padding: 10rpx 5rpx; + } + + .tki-barcode>>>image { + width: 100% !important; + height: 84rpx; + } + + .tki-barcode>>>.tki-barcode-canvas { + width: 100% !important; + height: 84rpx; + } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/mark/mark.vue b/LA24030_LuLiPackageLine_Pda/pages/mark/mark.vue new file mode 100644 index 0000000..926a10e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/mark/mark.vue @@ -0,0 +1,315 @@ +<template> + <view> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">闂浠舵爣璁�</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" required style="font-size: 16px;font-weight: bold;padding: 0;"> + <u-input v-model.trim="warehouse.containerCode" @blur="containerBlur" :focus="true" placeholder="璇锋壂鐮佸綍鍏�" style="font-weight: bolder;margin-left: 15rpx;" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.materialCode" ref="materialRef" placeholder="璇锋壂鐮佸綍鍏�" @focus="warehouse.materialCode = ''" @blur="getMaterialDetails" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" /> + <view style="margin-bottom: 200rpx;"> + <view v-for="(item, eindex) in singlist" :key="item.code" style="width: 100vw;display: flex;"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" + @open="open" @close='close' :options="options" style="margin-bottom: 10rpx;width: 100vw;"> + <view class="title-wrap fontSize32rpx background_fff" :class="Number(item.quantity) > 0 ? 'bg_item' : '' " style="width: 100vw;"> + <u-row> + <u-col span="1"> + <text class="flex justify-center align-center" style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 40rpx;height: 40rpx;"> + {{eindex+1}} + </text> + </u-col> + <u-col span="10"> + <text class="color_f18202"> + 鐗╂枡缂栧彿锛歿{item.wareMaterialCode}} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="4"> + <text> + SAP锛歿{item.sap_Location}} + </text> + </u-col> + <u-col span="8"> + <text class="el_batchNo"> + 鎵规锛歿{item.barNo}} + </text> + </u-col> + </u-row> + <u-row style="margin-top: 20rpx;"> + <u-col span="8"> + <input class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" v-model="item.markQuantity" + type="number" @blur="changeNum(item)" :min="1" placeholder="璇疯緭鍏ユ爣璁版暟閲�" /> + </u-col> + </u-row> + + <u-row style="margin-top: 20rpx;padding-bottom: 10px;"> + <u-col span="10"> + <input class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" v-model="item.remark" + placeholder="璇疯緭鍏ュ娉�" /> + </u-col> + <br> + </u-row> + + <!-- <u-row style="margin-top: 20rpx;padding-bottom: 10rpx"> + <u-col span="12"> + <u-upload :action="action" :header="header" :ref="'upload' + eindex" @on-success="handlerSuccess" @on-error="handlerErr" :auto-upload="false"></u-upload> + <u-button @click="submitUpload(eindex)">鎻愪氦</u-button> + </u-col> + + </u-row> --> + </view> + </u-swipe-action> + </view> + </view> + <button-modal :cleaningShow='true' allTitle='鍏ㄩ儴鍙栨秷' cleaningTitle='纭鏍囪' @allsubmit="rest" @submit='submit'/> + </view> +</template> +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import {getContainerMateral,scrapMaterial} from '../../api/mark/index.js' + import {getAttrValue} from '../../utils/tool.js' + export default { + data() { + return { + rescode: 0, + resmessage: "", + operator: '', + materialList: [], //褰撳墠瀹瑰櫒閲岀殑鏉愭枡鍒楄〃 + singlist: [], //棰勬姤搴熷垪琛� + options: [ + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + warehouse: { + containerCode: '', + materialCode: '', + }, + batchNo: '', //鎵爜鍒扮殑褰撳墠鐗╂枡鐨勬壒娆� + warehouseRules: { + containerCode: [{required: true,message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖',trigger: 'blur'}], + materialCode: [{required: true,message: '鐗╂枡缂栧彿涓嶈兘涓虹┖',trigger: 'blur'}] + }, + action: 'http://172.27.105.59:5566/ScrapMaterial/imageUpload',//涓婁紶鎺ュ彛 + header: {Authorization: 'Bearer ' + uni.getStorageSync('token')}, + activeIndex: 100, //褰撳墠涓婁紶鐨勬帴鍙� + + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + + methods: { + //瀹瑰櫒澶辩劍浜嬩欢 + containerBlur(){ + if(this.warehouse.containerCode == '') { + return + } + getContainerMateral(this.warehouse.containerCode).then(res => { + res.data.map(item => { + item.markQuantity = ''; + item.imageUrl = ''; + item.remark = ''; + return item; + }) + this.materialList = res.data; + }) + }, + + //鐗╂枡鏌ヨ + getMaterialDetails() { + if(!this.warehouse.materialCode) { + return + } + if(this.warehouse.materialCode.length > 50) { + this.batchNo = getAttrValue(this.warehouse.materialCode,'LOTNO') + //鎵弿鐨勭墿鏂欐槸鍚︽湁鎵规 + if(!this.batchNo) { + this.rescode = 400 + this.resmessage = '鏃犳壒娆�' + this.$refs.resmodal.show = true + return + } + this.warehouse.materialCode = getAttrValue(this.warehouse.materialCode,'PARTSNUMBER') + // SAP --- && item.sap_Location == SAP + let SAP = getAttrValue(this.warehouse.materialCode,'SAP') + //鍒ゆ柇褰撳墠鐨勭墿鏂欐槸鍚﹀湪姝ゅ鍣ㄤ腑 + const count = this.materialList.findIndex(item => item.wareMaterialCode == this.warehouse.materialCode && item.barNo == this.batchNo); + if(count < 0) { + this.rescode = 400 + this.resmessage = '瀹瑰櫒涓笉瀛樺湪鎵规鐨勭墿鏂�' + this.$refs.resmodal.show = true + return + } + //鍒ゆ柇褰撳墠鐨勭墿鏂欐槸鍚﹀凡缁忔壂鎻忚繃 + if(this.singlist.length > 0) { + //鍒ゆ柇褰撴鎵弿鐨勭墿鏂欐槸鍚﹀凡瀛樺湪鍚屾壒娆� + let index = this.singlist.findIndex(item => item.wareContainerCode == this.warehouse.materialCode && item.barNo == this.batchNo) + //缃《 + if(index > -1) { + this.singlist.unshift(...this.singlist.splice(index,1)) + return + } + } + + this.singlist.unshift(this.materialList[count]) + } + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + this.singlist.splice(index, 1) + + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + }, + //鏀瑰彉鏍囪鏁伴噺 + changeNum(option) { + if(!option.markQuantity) { + uni.showModal({ + title: '鎻愮ず', + content: '鏍囪涓嶈兘涓虹┖', + showCancel: false + }) + } + // option.markQuantity = Number(option.markQuantity.toString().match(/^\d+(?:\.\d{0,2})?/)) // 淇濈暀涓や綅灏忔暟 + if(option.markQuantity < 0) { + uni.showModal({ + title: '鎻愮ず', + content: '鏍囪鏁伴噺蹇呴』澶т簬0', + showCancel: false + }) + } + + }, + //鎻愪氦 + submitUpload(index) { + this.activeIndex = index; + const uploadRef = 'upload' + index; + this.$refs[uploadRef][0].upload(); + }, + //涓婁紶鎴愬姛鐨勫洖璋� + handlerSuccess(res) { + if(res.code == 200) { + uni.showModal({ + title: '鎻愮ず', + content: '涓婁紶鎴愬姛', + showCancel: false + }) + console.log(this.activeIndex,'activeIndex') + this.singlist[this.activeIndex].imageUrl += `|${res.data}`; + }else { + uni.showModal({ + title: '鎻愮ず', + content: '涓婁紶澶辫触', + showCancel: false + }) + } + + }, + handlerErr(res) { + uni.showModal({ + title: '鎻愮ず', + content: '涓婁紶澶辫触', + showCancel: false + }) + }, + //閲嶇疆椤甸潰淇℃伅 + rest() { + this.warehouse.containerCode = '' + this.warehouse.materialCode = '' + this.singlist = [] + }, + //纭 + submit() { + //鏌ユ壘鏄惁瀛樺湪娌℃湁濉啓鏍囪鏁伴噺鐨� + const index = this.singlist.findIndex(item => item.markQuantity == '' || Number(item.markQuantity) <= 0); + if(index >= 0) { + this.rescode = 400 + this.resmessage = '鏍囪鍒楄〃涓瓨鍦ㄦ暟閲忎负绌烘垨鑰呬负0' + this.$refs.resmodal.show = true + return; + } + // 0712 + console.log(this.singlist) + const params = this.singlist.reduce((curr,item) => { + curr.push({ + wareContainerCode: this.warehouse.containerCode, + wareMaterialCode: item.wareMaterialCode, + barNo: item.barNo, + quantity: Number(item.markQuantity), + imageUrl: item.imageUrl, + remark: item.remark, + sap_Location:item.sap_Location || '', + id:item.id + }) + return curr; + },[]) + scrapMaterial(params).then(res => { + this.rescode = 400 + this.resmessage = '鏍囪鎴愬姛' + this.$refs.resmodal.show = true + this.rest(); + }) + + + } + + } + } +</script> +<style lang="scss" scoped> + .el_batchNo { + padding: 10rpx 0 10rpx 45rpx; + color: #808080; + } + .bg_item { + background: #FFEBCD !important; + } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/old/index.vue b/LA24030_LuLiPackageLine_Pda/pages/old/index.vue new file mode 100644 index 0000000..f41ed6d --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/old/index.vue @@ -0,0 +1,54 @@ +<template> + <view class=""> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鏃т欢绠$悊</block> + </cu-custom> + <view class="margin_top40rpx text_align_center" v-for="(item,index) in list" :key='index'> + <view class="little_card fontSize36rpx" @click="skip(item,index)" :class="active==index?'active':''"> + {{item.name}} + </view> + </view> + </view> +</template> + +<script> + export default { + data() { + return { + active: null, + type:'', + list: [ + { + name: '鏃т欢鍏ュ簱', + pages: './putIn' + }, + { + name: '鏃т欢鍑哄簱', + pages: './putOut' + } + ] + } + }, + onLoad(options) { + this.type = options.type + }, + methods: { + skip(item, index) { + this.active = index + if (item.pages) { + setTimeout(() => { + uni.navigateTo({ + url: item.pages + }) + }, 100) + } + } + } + } +</script> + +<style> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/old/putIn.vue b/LA24030_LuLiPackageLine_Pda/pages/old/putIn.vue new file mode 100644 index 0000000..abc365d --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/old/putIn.vue @@ -0,0 +1,245 @@ +<template> + <view> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鏃т欢鍏ュ簱</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model.trim="warehouse.materialCode" ref="materialRef" placeholder="璇锋壂鐮佸綍鍏�" @focus="warehouse.materialCode = ''" @blur="getMaterialDetails" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + <u-col span="2"> + <button-modal :cleaningShow='true' allTitle='鍏ㄩ儴鍙栨秷' cleaningTitle='纭缁勭洏' @allsubmit="reset" @submit='submit' /> + </u-col> + </u-row> + </u-form> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" /> + <view style="margin-bottom: 200rpx;"> + <view v-for="(item, eindex) in singlist" :key="item.code" style="width: 100vw;display: flex;"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" + @open="open" @close='close' :options="options" style="margin-bottom: 10rpx;width: 100vw;"> + <view class="title-wrap fontSize32rpx background_fff" :class="item.showBg ? 'bg_item' : '' " style="width: 100vw;"> + <u-row> + <u-col span="1"> + <text class="flex justify-center align-center" style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </text> + </u-col> + <u-col span="10"> + <text class="color_f18202"> + 鐗╂枡缂栧彿锛歿{item.materialCode}} + </text> + </u-col> + </u-row> + <u-row style="margin-top: 20rpx;padding: 5rpx;"> + <u-col span="6"> + <u-input class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" v-model="item.quantity" + type="number" @blur="changeNum(item)" :min="1" placeholder="璇疯緭鍏ュ叆搴撴暟閲�" /> + </u-col> + + <u-col span="6"> + <!-- <u-input class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" v-model.trim="item.locationCode" + @focus="warehoueFouce(eindex)" placeholder="璇烽�夋嫨搴撳尯" /> --> + <u-input class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" v-model.trim="item.locationCode" + placeholder="璇锋壂鐮佹垨褰曞叆搴撲綅" /> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + </view> + <!-- 搴撳尯閫夋嫨鍣� --> + <u-select v-model="selectVisible" :list="warehouseList" label-name="name" value-name="code" @confirm="confirm"></u-select> + <button-modal :cleaningShow='true' allTitle='鍏ㄩ儴鍙栨秷' cleaningTitle='纭鍏ュ簱' @allsubmit="reset" @submit='submit'/> + </view> +</template> +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import {putInOfOld,getOldWarehouseList} from '../../api/old/index.js' + import {getDate} from '../../utils/dateTime.js' + import {getAttrValue} from '../../utils/tool.js' + export default { + data() { + return { + rescode: 0, + resmessage: "", + operator: '', + singlist: [], //鐗╂枡璇︽儏 + options: [ + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + warehouse: { + materialCode: '', + }, + selectVisible: false, //搴撳尯閫夋嫨鍣� + warehouseList: [], //鏃т欢搴撳垪琛� + activeIndex: 1000, //褰撳墠閫変腑鐨勬潗鏂� + }; + }, + components: { + ButtonModal, + ModalCode + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name; + }, + onLoad() { + this.getOldWarehouseList(); + }, + methods: { + //鑾峰彇鏃т欢搴撳垪琛� + getOldWarehouseList() { + getOldWarehouseList().then(res => { + this.warehouseList = res.data.rows; + }) + }, + //鐗╂枡缂栫爜鐐瑰嚮 + materialClick() { + uni.scanCode({ + scanType: ['barCode','qrCode'], + autoDecodeCharset: true, + success:(res) => { + this.warehouse.materialCode = getAttrValue(res.result,'PARTSNUMBER') + }, + fail:(err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${err}` + this.$refs.resmodal.show = true + } + }) + }, + //鐗╂枡鏌ヨ + getMaterialDetails() { + if(!this.warehouse.materialCode) { + return + } + if(this.warehouse.materialCode.length > 50) { + this.warehouse.materialCode = getAttrValue(this.warehouse.materialCode,'PARTSNUMBER') + if(this.singlist.length > 0) { + //鍒ゆ柇褰撴鎵弿鐨勭墿鏂欐槸鍚﹀凡瀛樺湪鍚屾壒娆� + let index = this.singlist.findIndex(item => item.materialCode == this.warehouse.materialCode) + //缃《 + if(index > -1) { + this.singlist.unshift(...this.singlist.splice(index,1)) + return + } + } + + if(this.warehouse.materialCode.length > 3) { + this.singlist.unshift({materialCode: this.warehouse.materialCode,quantity: '',showBg: true,locationCode: ''}) + } + } + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + this.singlist.splice(index, 1) + + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + this.$forceUpdate() + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + close(index) { + this.singlist[index].show = false; + this.$forceUpdate() + }, + //鍏ュ簱鏁伴噺 + changeNum(opt) { + console.log(opt.quantity) + if(Number(opt.quantity <= 0) || opt.quantity == '') { + this.rescode = 400 + this.resmessage = '鍏ュ簱鏁伴噺涓嶈兘灏忎簬绛変簬0' + this.$refs.resmodal.show = true + } + }, + //搴撲綅 + changeLocation(opt) { + if(opt.locationCode.length == 0) { + this.rescode = 400 + this.resmessage = '搴撲綅缂栧彿涓嶈兘涓虹┖' + this.$refs.resmodal.show = true + } + }, + // 搴撲綅鑱氱劍 + warehoueFouce(index) { + this.activeIndex = index; + this.selectVisible = true; + }, + //搴撳尯閫夋嫨纭畾 + confirm(opt) { + this.singlist[this.activeIndex].locationCode = opt[0].value; + console.log(this.singlist) + }, + //鍏ㄩ儴鍙栨秷 + reset() { + this.singlist = []; + this.warehouse.materialCode = '' + this.$forceUpdate() + }, + //纭 + submit() { + if(this.singlist.length == 0) { + this.rescode = 400 + this.resmessage = '鍏ュ簱璇︽儏涓嶈兘涓虹┖' + this.$refs.resmodal.show = true + return; + } + + //鍒ゆ柇鐗╂枡 + const index = this.singlist.findIndex(item =>item.quantity == '' || Number(item.quantity) <= 0 || item.locationCode == ''); + if(index >= 0) { + this.rescode = 400; + this.resmessage = '鐗╂枡璇︽儏鏁版嵁鏈夐敊璇�' + this.$refs.resmodal.show = true; + return; + } + + //鍒ゆ柇搴撲綅 + const idx = this.singlist.findIndex(item => item.locationCode == ''); + if(idx >= 0) { + this.rescode = 400; + this.resmessage = '鍏ュ簱璇︽儏涓瓨鍦ㄥ簱浣嶄负绌�' + this.$refs.resmodal.show = true; + return; + } + + putInOfOld(this.singlist).then(res => { + this.rescode = 200; + this.resmessage = '鏃т欢鍏ュ簱鎴愬姛' + this.$refs.resmodal.show = true; + this.reset(); + }) + + } + } + } +</script> +<style lang="scss" scoped> + .el_batchNo { + padding: 10rpx 0 10rpx 45rpx; + color: #808080; + } + .bg_item { + background: #FFEBCD !important; + } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/old/putOut.vue b/LA24030_LuLiPackageLine_Pda/pages/old/putOut.vue new file mode 100644 index 0000000..abb9e7b --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/old/putOut.vue @@ -0,0 +1,226 @@ +<template> + <view> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鏃т欢鍑哄簱</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model.trim="warehouse.materialCode" ref="materialRef" placeholder="璇锋壂鐮佸綍鍏�" @focus="warehouse.materialCode = ''" @blur="getMaterialDetails" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + <u-col span="2"> + <button-modal :cleaningShow='true' allTitle='鍏ㄩ儴鍙栨秷' cleaningTitle='纭缁勭洏' @allsubmit="reset" @submit='submit' /> + </u-col> + </u-row> + </u-form> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" /> + <view style="margin-bottom: 200rpx;"> + <view v-for="(item, eindex) in singlist" :key="item.code" style="width: 100vw;display: flex;"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" + @open="open" @close='close' :options="options" style="margin-bottom: 10rpx;width: 100vw;"> + <view class="title-wrap fontSize32rpx background_fff" :class="item.showBg ? 'bg_item' : '' " style="width: 100vw;"> + <u-row> + <u-col span="1"> + <text class="flex justify-center align-center" style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </text> + </u-col> + <u-col span="10"> + <text class="color_f18202"> + 鐗╂枡缂栧彿锛歿{item.materialCode}} + </text> + </u-col> + </u-row> + <u-row style="margin-top: 10rpx;"> + <u-col span="6"> + <text class="color_f18202"> + 搴撳瓨鏁伴噺锛歿{item.exitQuantity}} + </text> + </u-col> + <u-col span="6"> + <text class="color_f18202"> + 鎵�鍦ㄥ簱浣嶏細{{item.locationCode}} + </text> + </u-col> + </u-row> + <u-row style="margin-top: 10rpx;"> + <u-col span="6"> + <u-input class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" v-model="item.outQuantity" + type="number" @blur="changeNum(item)" :min="1" placeholder="璇疯緭鍏ュ嚭搴撴暟閲�" /> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + </view> + <button-modal :cleaningShow='true' allTitle='鍏ㄩ儴鍙栨秷' cleaningTitle='纭鍑哄簱' @allsubmit="reset" @submit='submit'/> + </view> +</template> +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import {getExitOfOld,putOutOfOld} from '../../api/old/index.js' + import {getDate} from '../../utils/dateTime.js' + import {getAttrValue} from '../../utils/tool.js' + export default { + data() { + return { + rescode: 0, + resmessage: "", + detailshow: false, + operator: '', + Datetime: getDate(), + singlist: [], //鐗╂枡璇︽儏 + options: [ + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + materlist: {}, + warehouse: { + materialCode: '', + } + }; + }, + components: { + ButtonModal, + ModalCode + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name; + }, + + methods: { + //鐗╂枡缂栫爜鐐瑰嚮 + materialClick() { + // uni.scanCode({ + // scanType: ['barCode','qrCode'], + // autoDecodeCharset: true, + // success:(res) => { + // this.warehouse.materialCode = getAttrValue(res.result,'PARTSNUMBER') + // }, + // fail:(err) => { + // this.rescode = 400 + // this.resmessage = `鎵弿澶辫触${err}` + // this.$refs.resmodal.show = true + // } + // }) + }, + //鐗╂枡鏌ヨ + getMaterialDetails() { + if(!this.warehouse.materialCode) { + return + } + if(this.warehouse.materialCode.length > 50) { + this.warehouse.materialCode = getAttrValue(this.warehouse.materialCode,'PARTSNUMBER') + if(this.singlist.length > 0) { + //鍒ゆ柇褰撴鎵弿鐨勭墿鏂欐槸鍚﹀凡瀛樺湪鍚屾壒娆� + let index = this.singlist.findIndex(item => item.materialCode == this.warehouse.materialCode) + //缃《 + if(index > -1) { + this.singlist.unshift(...this.singlist.splice(index,1)) + return + } + } + + getExitOfOld(this.warehouse).then(res => { + res.data.rows.map(item => { + item.exitQuantity = item.quantity - item.useQuantity; + item.outQuantity = ''; + item.showBg = true; + item.show =false; + }) + + this.singlist.unshift(...res.data.rows) + }) + } + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + this.singlist.splice(index, 1) + + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + this.$forceUpdate() + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + close(index) { + this.singlist[index].show = false; + this.$forceUpdate() + }, + //鍏ュ簱鏁伴噺 + changeNum(opt) { + if(Number(opt.outQuantity) > Number(opt.exitQuantity)) { + this.rescode = 400 + this.resmessage = '鍑哄簱鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺' + this.$refs.resmodal.show = true + opt.outQuantity = '' + } + }, + //鍏ㄩ儴鍙栨秷 + reset() { + this.singlist = []; + this.warehouse.materialCode = '' + this.$forceUpdate() + }, + //纭 + submit() { + if(this.singlist.length == 0) { + this.rescode = 400 + this.resmessage = '鍑哄簱璇︽儏涓嶈兘涓虹┖' + this.$refs.resmodal.show = true + return; + } + + const index = this.singlist.findIndex(item =>item.outQuantity == '' || Number(item.outQuantity) <= 0 || Number(item.outQuantity) > Number(item.exitQuantity)); + if(index >= 0) { + this.rescode = 400; + this.resmessage = '鐗╂枡璇︽儏鏁版嵁鏈夐敊璇�' + this.$refs.resmodal.show = true; + return; + } + const params = this.singlist.reduce((curr,item)=> { + curr.push({ + quantity: item.outQuantity, + locationCode: item.locationCode, + materialCode: item.materialCode + }) + return curr; + },[]); + putOutOfOld(params).then(res => { + this.rescode = 200; + this.resmessage = '鏃т欢鍑哄簱鎴愬姛' + this.$refs.resmodal.show = true; + this.reset(); + }) + + } + } + } +</script> +<style lang="scss" scoped> + .el_batchNo { + padding: 10rpx 0 10rpx 45rpx; + color: #808080; + } + .bg_item { + background: #FFEBCD !important; + } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/print/bluePrint.js b/LA24030_LuLiPackageLine_Pda/pages/print/bluePrint.js new file mode 100644 index 0000000..5a57e74 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/print/bluePrint.js @@ -0,0 +1,341 @@ +import PrinterJobs from '@/components/print/printerjobs.js' + +export default { + print($store,context){ + const _myBlue = $store.getters['print/getBlueInfo']; + if (_myBlue) { + return this.sendBlueToothData($store,context,_myBlue) + } else { + return new Promise((resolve)=>{ + uni.navigateTo({ + url: '/pages/print/bluetoothConnection' + }); + resolve() + }) + } + }, + sendBlueToothData($store,context,blueInfo){ + return new Promise((resolve,reject)=>{ + uni.showLoading({ + title: '钃濈墮鏁版嵁浼犺緭涓�', + mask:true + }); + /* + 灏哄鎹㈢畻锛�1mm=8鍗曚綅 + label_set_page 鍙傛暟锛氬锛堟渶澶�576锛夈�侀珮锛堟渶澶�400锛� + drawLine 鍙傛暟锛氱嚎瀹姐�佽捣濮嬬偣x銆佽捣濮嬬偣y銆佺粨鏉熺偣x銆佺粨鏉熺偣y + drawText 鍙傛暟锛氳捣濮嬬偣x銆佽捣濮嬬偣y銆佹枃瀛椼�佸瓧浣撳ぇ灏忋�佹棆杞搴︺�佺矖浣�(0鍚�1鏄�)銆佷笅鍒掔嚎銆佸弽鐧� + 瀛椾綋澶у皬锛氬彲閫夊�� 20/1/2/3/4/5/6/7 锛屽叾浠栫殑鏃跺�欓粯璁や负2 + 鏃嬭浆瑙掑害锛�0-涓嶉�夋嫨/1-90搴�/2-180搴�/3-270搴� + drawQrCode 浜岀淮鐮侊紝鍙傛暟锛氳捣濮嬬偣x銆佽捣濮嬬偣y銆佷簩缁寸爜鍐呭銆佹棆杞弬鏁版亽瀹氫负0銆佷簩缁寸爜瀹藉害(2-15)銆佷簩缁寸爜绾犻敊绛夌骇(0-20) + drawBarCode 鏉″舰鐮侊紝鍙傛暟:璧峰鐐箈銆佽捣濮嬬偣y銆佹潯褰㈢爜鍐呭銆佹潯褰㈢爜绫诲瀷銆佹棆杞弬鏁版亽瀹氫负0銆佹潯鐮佸搴�(2~6)銆佹潯鐮侀珮搴�(1~255) + 鏉″舰鐮佺被鍨嬶細 0锛欳ODE39锛�1锛欳ODE128锛�2锛欳ODE93锛�3锛欳ODEBAR锛�4锛欵AN8锛�5锛欵AN13锛�6锛歎PCA; 7:UPC-E; 8:ITF + */ + let printerJobs = new PrinterJobs(); + printerJobs.label_set_page(570, 422); + printerJobs.setFont('C') + context.forEach((contextItem)=>{ + switch(contextItem.type) { + case 'line': + printerJobs.drawLine(contextItem.width,contextItem.x1,contextItem.y1,contextItem.x2,contextItem.y2); + break; + case 'text': + printerJobs.drawText(contextItem.x,contextItem.y,contextItem.text,contextItem.size,contextItem.rotate,contextItem.bold,contextItem.underline,contextItem.reverse); + break; + case 'qr': + printerJobs.drawQrCode(contextItem.x,contextItem.y,contextItem.text,0,contextItem.width,contextItem.level); + break; + case 'bar': + printerJobs.drawBarCode(contextItem.x,contextItem.y,contextItem.text,contextItem.barType,0,contextItem.width,contextItem.height); + break; + default: + break; + } + }) + printerJobs.label_print(0, 1); + let buffer = printerJobs.buffer(); + this.bufferTransmission(buffer,$store,blueInfo).then((res)=>{ + resolve(res) + }).catch((err)=>{ + reject(err) + }) + }) + }, + bufferTransmission(buffer,$store,blueInfo){ + return new Promise((resolve,reject)=>{ + if (blueInfo===undefined) blueInfo = $store.getters['print/getBlueInfo']; + let deviceId = blueInfo.deviceId + let serviceId = blueInfo.serviceId + let characteristicId = blueInfo.characteristicId + + const maxChunk = 20; + const delay = 15; + let length = buffer.byteLength; + let pakageLen = Math.trunc(length/maxChunk); + if (length%maxChunk!==0) pakageLen=pakageLen+1; + console.log(`鍏�${length}瀛楄妭锛屽垎${pakageLen}鍖卄) + + //瓒呮椂璁剧疆 + const _timeOutNum = 30 * 1000; + const _sendTimeOut = setTimeout(()=>{ + let tMsg = `钃濈墮鏁版嵁浼犺緭瓒呮椂锛�${_sendTimeOut/1000}绉掑唴鏃犲搷搴旓紒` + uni.hideLoading(); + this.researchConfirm(tMsg) + reject(tMsg) + },_timeOutNum) + + //鍒ゆ柇浼犺緭椤哄簭鏄惁姝g‘ + const isRightTransferOrder = function(arr){ + let __res = true; + for (let _i=0;_i<(arr.length-1);_i++) { + if (arr[_i]>=arr[_i+1]) { + __res = false; + break; + } + } + return __res + } + + let successArr = []; + for (let i = 0, j = 0; i < length; i += maxChunk, j++) { + let subPackage = buffer.slice(i, i + maxChunk <= length ? (i + maxChunk) : length); + //_count = j; + setTimeout(() => { + console.log(`绗�${j+1}鍒嗗寘鍙戦�侊紝寮�濮嬪瓧鑺�${i}`) + this._writeBLECharacteristicValue(deviceId, serviceId, characteristicId, subPackage,(f)=>{ + console.log(`绗�${j+1}杩斿洖${f}`) + if (f) { + successArr.push(j+1) + } + // 鏈�鍚�1涓寘杩斿洖锛屽垯锛� + if (j===pakageLen-1) { + uni.hideLoading(); + let successLen = successArr.length; + let modalMsg = `钃濈墮浼犺緭鍒�${pakageLen}鍖咃紝鎴愬姛浼犺緭${successLen}涓寘` + if (successLen) { + modalMsg += `锛屼緷娆′负锛�${successArr.join(",")}銆俙 + } else { + modalMsg += '銆�' + } + + clearTimeout(_sendTimeOut) + //鎴愬姛鍙戦�佺殑鍖呮暟閲忎笌鎷嗗垎鍖呮暟閲忕浉绛夛紝涓旀垚鍔熷彂閫佸寘鐨勯『搴忔纭紝璁や负钃濈墮浼犺緭姝g‘successLen===pakageLen + if (pakageLen !==0 && isRightTransferOrder(successArr)) { + uni.hideLoading(); + // this.alert(modalMsg) + resolve() + } else { + uni.hideLoading(); + // this.researchConfirm(modalMsg) + reject(modalMsg) + } + } + }) + }, j * delay); + } + /* promise end */ + }) + }, + _writeBLECharacteristicValue(deviceId, serviceId, characteristicId, buffer,callback){ + uni.writeBLECharacteristicValue({ + deviceId: deviceId, + serviceId: serviceId, + characteristicId: characteristicId, + value: buffer, + success(res) { + callback && callback(true) + }, + fail(res) { + callback && callback(false) + } + }) + }, + alert(msg){ + uni.showModal({ + title:'绯荤粺鎻愮ず', + content:msg, + showCancel:false, + confirmText:'纭� 瀹�' + }) + }, + researchConfirm(msg){ + uni.showModal({ + title:'绯荤粺鎻愮ず', + content:msg, + cancelText:'鍙� 娑�', + confirmText:'閲嶇疆钃濈墮', + success:(res)=>{ + if (res.confirm) { + uni.navigateTo({ + url: '/pages/print/bluetoothConnection?again=1' + }); + } + } + }) + }, + getBlueToothes(){ + return new Promise((resolve,reject)=>{ + uni.showLoading({ + title: '鍚姩钃濈墮鍔熻兘', + mask:true + }); + uni.openBluetoothAdapter({ + success:function(){ + uni.showLoading({ + title: '寮�濮嬫悳绱㈣摑鐗�', + mask:true + }); + uni.startBluetoothDevicesDiscovery({ + success:function(){ + uni.showLoading({ + title: '鎼滅储涓�...', + mask:true + }); + let result = []; + uni.onBluetoothDeviceFound(function(res){ + if (res && res.devices && res.devices.length>0) { + res.devices.forEach(function(item){ + if (item.name) { + let addFlag = true; + for (let i=0;i<result.length;i++) { + if (item.deviceId===result[i].deviceId) { + addFlag = false; + break; + } + } + if (addFlag) { + result.push(item) + } + } + }) + } + }) + setTimeout(function(){ + uni.stopBluetoothDevicesDiscovery({ + success:function(){ + uni.hideLoading(); + resolve(result) + }, + fail:function(){ + uni.hideLoading(); + reject('鍏抽棴钃濈墮鎼滅储澶辫触') + } + }) + },5*1000) + }, + fail:function(){ + uni.hideLoading(); + reject('寮�鍚摑鐗欐悳绱㈠け璐�') + } + }) + }, + fail:function(){ + uni.hideLoading(); + reject('钃濈墮妯″潡鍚姩澶辫触') + } + }) + }) + }, + reGetBlueToothes($store){ + return new Promise((resolve,reject)=>{ + uni.closeBluetoothAdapter({ + complete:()=>{ + this.getBlueToothes().then(res => { + resolve(res) + }).catch(err=>{ + reject(err) + }) + } + }) + }) + + }, + connect($store,id){ + return new Promise(function(resolve,reject){ + uni.showLoading({ + title: '杩炴帴涓�...', + mask:true + }); + uni.closeBLEConnection({ + deviceId:id, + complete:()=>{ + uni.createBLEConnection({ + deviceId:id, + success:function(){ + $store.commit('print/setDeviceId',id) + uni.showLoading({ + title: '鑾峰彇钃濈墮鏈嶅姟', + mask:true + }); + setTimeout(function(){ + uni.getBLEDeviceServices({ + deviceId:id, + success:function(res1){ + let serviceId = ''; + for (let i=0;i<res1.services.length;i++){ + if (res1.services[i].uuid.indexOf("FF00") !== -1) { + serviceId = res1.services[i].uuid; + break; + } + } + if (serviceId) { + uni.showLoading({ + title: '鑾峰彇鏈嶅姟鐗瑰緛鍊�', + mask:true + }); + uni.getBLEDeviceCharacteristics({ + deviceId:id, + serviceId:serviceId, + success:function(res2){ + let characteristicId = '' + for (let j=0;j<res2.characteristics.length;j++){ + if (res2.characteristics[j].uuid.indexOf("FF02") !== -1) { + characteristicId = res2.characteristics[j].uuid; + break; + } + } + if (characteristicId) { + let blueInfoObj = { + deviceId:id, + serviceId:serviceId, + characteristicId:characteristicId + } + $store.commit('print/setBlueInfo',blueInfoObj); + uni.showToast({ + title:'钃濈墮杩炴帴鎴愬姛', + icon:'success' + }) + uni.hideLoading(); + resolve() + } else { + uni.hideLoading(); + reject(`鑾峰彇钃濈墮璁惧${id}鐨勬湇鍔$壒寰佸�间笉姝g‘`) + } + }, + fail:function(){ + uni.hideLoading(); + reject(`鑾峰彇钃濈墮璁惧${id}鐨勬湇鍔$壒寰佸�煎け璐) + } + }) + } else { + uni.hideLoading(); + reject(`鑾峰彇钃濈墮璁惧${id}鐨勬湇鍔′笉姝g‘`) + } + }, + fail:function(){ + uni.hideLoading(); + reject(`鑾峰彇钃濈墮璁惧${id}鐨勬湇鍔″け璐) + } + }) + },1200) + }, + fail:function(){ + uni.hideLoading(); + reject(`鍒涘缓涓庤摑鐗欒澶�${id}鐨勮繛鎺ュけ璐) + } + }) + } + }) + }) + } +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/print/bluetoothConnection.vue b/LA24030_LuLiPackageLine_Pda/pages/print/bluetoothConnection.vue new file mode 100644 index 0000000..522e3e6 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/print/bluetoothConnection.vue @@ -0,0 +1,105 @@ +<template> + <view class="bluetooth-connection-page"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">钃濈墮杩炴帴</block> + </cu-custom> + <scroll-view scroll-y="true" style="height: 100vh;"> + <view class="page-content"> + <view v-for="(item,index) in myBluetoothes" :key="item.deviceId" class="bluetooth-btn" @tap="onConnect(item.deviceId)"> + <view class="blue-btn-id">{{item.deviceId}}</view> + <view class="blue-btn-name">{{item.name}}</view> + </view> + <button v-if="myBluetoothes.length!==0" type="primary" @tap="research" style="width: 100%;">閲嶆柊鎼滅储</button> + </view> + </scroll-view> + </view> +</template> + +<script> +import BluePrint from './bluePrint.js' +export default { + name:'bluetoothConnectionPage', + data(){ + return { + initAgain:false, + myBluetoothes:[] + } + }, + onLoad(option) { + if (option.again==='1') { + this.initAgain = true + } else { + this.initAgain = false + } + }, + onReady(){ + this.search(this.initAgain) + }, + methods:{ + search(re=false){ + let methodName = 'getBlueToothes' + if (re) methodName = 'reGetBlueToothes' + BluePrint[methodName](this.$store).then((res)=>{ + this.myBluetoothes = res + }).catch((err)=>{ + if (typeof err !== 'string'){ + err = '鑾峰彇钃濈墮璁惧鍒楄〃澶辫触' + } + BluePrint.alert(err) + }) + }, + research(){ + this.myBluetoothes = []; + this.search(true) + }, + onConnect(id){ + BluePrint.connect(this.$store,id).then(()=>{ + uni.navigateBack() + }).catch((err)=>{ + if (typeof err !== 'string'){ + err = '杩炴帴钃濈墮璁惧澶辫触' + } + BluePrint.alert(err) + }) + } + } +} +</script> + +<style lang="scss" scoped> +.bluetooth-connection-page{ + .page-content{ + display: flex; + flex-direction: column; + align-items: center; + padding: 30upx 30upx 0 30upx; + .bluetooth-btn{ + box-sizing: border-box; + width: 100%; + margin-bottom: 30upx; + border: 1px solid #F18201; + background-color: #f8c07f; + color: #fff; + border-radius: 20upx; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + padding: 20upx; + font-size: 30upx; + .blue-btn-id,.blue-btn-name{ + word-wrap: break-word; + word-break: break-all; + white-space: pre-wrap; + text-align: center; + } + .blue-btn-name{ + font-size: 1.5em; + font-weight: bold; + } + } + } +} +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/print/deliver.vue b/LA24030_LuLiPackageLine_Pda/pages/print/deliver.vue new file mode 100644 index 0000000..889db0c --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/print/deliver.vue @@ -0,0 +1,170 @@ +<template> + <div class="print-delivering-label-page"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鍙戣揣鏍囩</block> + </cu-custom> + <scroll-view scroll-y="true" style="height: 100vh;"> + <view class="page-content"> + <u-form :model="materialForm" ref="materialRef" label-position="top"> + <u-row style="padding: 0 0 0 15rpx;"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" prop="materialCode" required > + <u-input v-model="materialForm.materialCode" placeholder="璇锋壂鎻忕墿鏂欑紪鍙�" @blur="materialBlur"></u-input> + </u-form-item> + </u-col> + <u-col span="12"> + <u-form-item label="鍑哄簱鏁伴噺:" prop="number" required> + <u-input v-model="materialForm.number" placeholder="璇疯緭鍏ュ嚭搴撴暟閲�"></u-input> + </u-form-item> + </u-col> + <u-col span="12"> + <u-form-item label="鍑哄簱鍗曞彿:" prop="outOrder" required> + <u-input v-model="materialForm.outOrder" placeholder="璇疯緭鍏ユ垨鎵弿鍑哄簱鍗曞彿"></u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <view class="btns-view"> + <button type="primary" @tap="onPrint">鎵� 鍗�</button> + </view> + </view> + </scroll-view> + </div> +</template> + +<script> +import BluePrint from './bluePrint.js' +import {getAttrValue} from '@/utils/tool.js' +import {getMaterialInfo} from '../../api/print.js' +export default { + name:'printDeliveringLabelPage', + data(){ + return { + materialForm: { + materialCode: '', //鐗╂枡缂栧彿 + number: '', //鍙戣揣鏁伴噺 + outOrder: '', //鍑哄簱鍗曞彿 + lotNo: '', //鎵规 + // materialName: '' ,//鐗╂枡鍚嶇О + // qrCode: '', //浜岀淮鐮佸唴瀹� + }, + materialRules: { + materialCode: [{required: true,message: '鐗╂枡缂栧彿涓嶈兘涓虹┖',trigger: 'blur'}], + number: [{required: true,message: '鐗╂枡缂栧彿涓嶈兘涓虹┖',trigger: 'blur'}], + outOrder: [{required: true,message: '鍑哄簱鍗曞彿涓嶈兘涓虹┖',trigger: 'blur'}] + } + } + }, + onReady() { + this.$refs.materialRef.setRules(this.materialRules) + }, + methods:{ + //鐗╂枡缂栧彿澶辩劍浜嬩欢 + materialBlur() { + //鍒ゆ柇鏄惁鏄綍鍏ョ殑 + // if(this.materialForm.materialCode.length < 50) { + // uni.showToast({ + // title:'鎵爜閿欒' + // }) + // return + // } + //鐗╂枡鍚嶇О + // this.materialForm.materialName = getAttrValue(this.materialForm.materialCode,'MATERIALNAME') + //鐗╂枡鎵规 + this.materialForm.lotNo = getAttrValue(this.materialForm.materialCode,'LOTNO') + //鐗╂枡缂栧彿 + this.materialForm.materialCode = getAttrValue(this.materialForm.materialCode,'PARTSNUMBER') + //浜岀淮鐮佸唴瀹� + // this.materialForm.qrCode = this.materialForm.materialCode + }, + onPrint(){ + this.$refs.materialRef.validate(vali => { + if(vali) { + //鑾峰彇鏁版嵁\ + getMaterialInfo({materialCode: this.materialForm.materialCode}).then(res => { + if(Array.isArray(res.data.rows) && res.data.rows.length == 1) { + const result = res.data.rows[0]; + let ptintContext = [ + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + /* 浠ヤ笂绌烘暟鎹紝涓洪槻姝涪鍖呮椂鎵撳嵃涓嶆甯� */ + {type:'line',x1:3,y1:3,x2:565,y2: 3,width:2}, + {type:'line',x1:3,y1:3,x2:3,y2: 345,width:2}, + {type:'line',x1:3,y1:345,x2:565,y2: 345,width:2}, + {type:'line',x1:565,y1:345,x2:565,y2:3,width:2}, + {type:'text',x:80,y:15,text:'鐗ч噹姹借溅瑁呭(姝︽眽)鏈夐檺鍏徃',size:3,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:60,x2:565,y2:60,width:2}, + {type:'text',x:10,y:75,text:`鐗╂枡缂栧彿: ${result.code}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:110,x2:380,y2:110,width:2}, + {type:'text',x:10,y:125,text:`鐗╂枡鍚嶇О: ${result.materialTypeId}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:160,x2:380,y2:160,width:2}, + {type:'text',x:10,y:175,text:`鎵规: ${this.materialForm.lotNo}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:210,x2:565,y2:210,width:2}, + {type:'line',x1:380,y1:60,x2:380,y2:210,width:2}, + {type:'qr',x:410,y:70,text: result.code,width:6,level:1}, + {type:'text',x:10,y:225,text:`鍙戣揣鏁伴噺(QTY): ${this.materialForm.number}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:260,x2:565,y2:260,width:2}, + {type:'text',x:120,y:290,text:`DO鍙�: ${this.materialForm.outOrder}`,size:3,rotate:0,bold:1,underline:false,reverse:false}, + + ] + + BluePrint.print(this.$store,ptintContext).then(()=>{ + uni.showToast({ + title:'鎵撳嵃鎴愬姛', + duration: 2000 + }) + this.materialForm.materialCode = ''; //鐗╂枡缂栧彿 + this.materialForm.number = ''; //鍙戣揣鏁伴噺 + this.materialForm.lotNo = ''; //鎵规 + this.materialForm.outOrder = ''; + }).catch(()=>{ + uni.showToast({ + title:'鎵撳嵃澶辫触', + duration: 2000 + }) + }) + }else { + uni.showToast({ + title:'鐗╂枡淇℃伅涓嶅瓨鍦�', + duration: 2000 + }) + } + }) + }else { + uni.showToast({ + title:'琛ㄥ崟楠岃瘉澶辫触', + type: 'warning' + }) + } + }) + } + } +} +</script> + +<style lang="scss" scoped> +.print-delivering-label-page{ + .page-content{ + display: flex; + flex-direction: column; + align-items: center; + $blockWidth:90%; + .label-show,.btns-view{ + width: $blockWidth; + box-sizing: border-box; + } + .label-show{ + margin-top: 30upx; + background-color: #fff; + border-radius: 20upx; + } + .btns-view{ + margin-top: 30upx; + } + } +} + +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/print/gauge.vue b/LA24030_LuLiPackageLine_Pda/pages/print/gauge.vue new file mode 100644 index 0000000..c1d4cd0 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/print/gauge.vue @@ -0,0 +1,138 @@ +<template> + <view class="print-material-label-page"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">宸ラ噺鍏锋爣绛�</block> + </cu-custom> + <view class="page-content"> + <u-form :model="materialForm" ref="materialRef" label-position="top" style="width: 100%;"> + <u-row style="padding: 0 0 0 15rpx;"> + <u-col span="12"> + <u-form-item label="宸ラ噺鍏风紪鍙�:" prop="materialCode" required > + <u-input v-model.trim="materialForm.materialCode" placeholder="璇疯緭鍏ユ垨褰曞叆宸ラ噺鍏风紪鍙�"></u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <view class="btns-view"> + <button type="primary" @click="onPrint">鎵� 鍗�</button> + </view> + </view> + </view> +</template> + +<script> +import BluePrint from './bluePrint.js' +import {getWareToolInfo} from '../../api/print.js' +export default { + name:'printWareToolInfo', + data(){ + return { + materialForm:{ //鐗╂枡璇锋眰鏁版嵁 + materialCode: '' + }, + materialRules: { //rules + materialCode: [{required: true,message: '宸ラ噺鍏风紪鍙蜂笉鑳戒负绌�',trigger: 'blur'}] + } + } + }, + methods:{ + getDate(){ + const date = new Date(); + let year = date.getFullYear().toString(); + //鏈� + let month = date.getMonth() + 1; + month = month >= 10 ? month : "0"+month; + //鏃� + let day = date.getDate(); + day = day >= 10 ? day : "0"+day; + return year + month + day; + }, + onPrint(){ + this.$refs.materialRef.validate(vali => { + if(vali) { + //鑾峰彇鏁版嵁\ + getWareToolInfo(this.materialForm).then(res => { + if(Array.isArray(res.data.rows) && res.data.rows.length == 1) { + const result = res.data.rows[0]; + let ptintContext = [ + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + /* 浠ヤ笂绌烘暟鎹紝涓洪槻姝涪鍖呮椂鎵撳嵃涓嶆甯� */ + {type:'line',x1:3,y1:3,x2:565,y2: 3,width:2}, + {type:'line',x1:3,y1:3,x2:3,y2: 345,width:2}, + {type:'line',x1:3,y1:345,x2:565,y2: 345,width:2}, + {type:'line',x1:565,y1:345,x2:565,y2:3,width:2}, + {type:'text',x:80,y:15,text:'鐗ч噹姹借溅瑁呭(姝︽眽)鏈夐檺鍏徃',size:3,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:60,x2:565,y2:60,width:2}, + {type:'text',x:10,y:75,text:`宸ラ噺鍏风紪鍙�: ${result.code}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:110,x2:380,y2:110,width:2}, + {type:'text',x:10,y:125,text:`宸ラ噺鍏峰悕绉�: ${result.name}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:160,x2:380,y2:160,width:2}, + {type:'text',x:10,y:175,text:`鍗曚綅: ${result.unit}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:210,x2:565,y2:210,width:2}, + {type:'line',x1:380,y1:60,x2:380,y2:210,width:2}, + {type:'qr',x:410,y:70,text: result.code,width:6,level:1}, + {type:'text',x:10,y:225,text:`瑙勬牸鍨嬪彿: ${result.specificationModel}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:260,x2:565,y2:260,width:2}, + {type:'text',x:120,y:290,text:'MAKINO J(CHINA) CO.LTD',size:3,rotate:0,bold:1,underline:false,reverse:false}, + + ] + + BluePrint.print(this.$store,ptintContext).then(()=>{ + uni.showToast({ + title:'鎵撳嵃鎴愬姛', + duration: 2000 + }) + this.materialForm.materialCode = ''; + }).catch(()=>{ + uni.showToast({ + title:'鎵撳嵃澶辫触', + duration: 2000 + }) + }) + }else { + uni.showToast({ + title:'鐗╂枡淇℃伅涓嶅瓨鍦�', + duration: 2000, + type: 'warning' + }) + } + }) + }else { + uni.showToast({ + title:'琛ㄥ崟楠岃瘉澶辫触', + type: 'warning' + }) + } + }) + } + } +} +</script> + +<style lang="scss" scoped> +.print-material-label-page{ + .page-content{ + display: flex; + flex-direction: column; + align-items: center; + $blockWidth:90%; + .label-show,.btns-view{ + width: $blockWidth; + box-sizing: border-box; + } + .label-show{ + margin-top: 30upx; + background-color: #fff; + border-radius: 20upx; + } + .btns-view{ + margin-top: 30upx; + } + } + +} +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/print/material.vue b/LA24030_LuLiPackageLine_Pda/pages/print/material.vue new file mode 100644 index 0000000..8700f16 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/print/material.vue @@ -0,0 +1,291 @@ +<template> + <div class="print-delivering-label-page"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鏃犲崟鏍囩</block> + </cu-custom> + <!-- <view class="page-content"> + <u-form :model="materialForm" ref="materialRef" label-position="top" style="width: 100%;"> + <u-row style="padding: 0 0 0 15rpx;"> + <u-col span="12"> + <u-form-item label="杈撳叆椤电爜:" prop="PageNo" required > + <u-input v-model="materialForm.PageNo" type="number" placeholder="璇疯緭鍏ラ渶瑕佹墦鍗扮殑椤电爜"></u-input> + </u-form-item> + + <u-col span="12"> + <u-form-item label="鎵撳嵃寮犳暟:" prop="PageSize" required > + <u-input v-model="materialForm.PageSize" type="number" @focus="sizeFocus" placeholder="璇烽�夋嫨闇�瑕佹墦鍗扮殑寮犳暟"></u-input> + <u-select v-model="sizeVisible" :list="sizeList" @confirm="sizeConfirm"></u-select> + </u-form-item> + </u-col> + </u-col> + </u-row> + </u-form> --> + <view class="btns-view"> + <button type="primary" @tap="textPrint" style="margin-bottom: 20rpx;">娴嬭瘯鎵撳嵃</button> + <button type="primary" @tap="onPrint">鎵� 鍗�</button> + </view> + </view> + </div> +</template> + +<script> +import BluePrint from './bluePrint.js' +import {getMaterialCount,addPrintRecord, getMaterialInfo} from '../../api/print.js' +export default { + name:'printDeliveringLabelPage', + data(){ + return { + index: 0, + materialForm: { + PageNo: 1, //鐗╂枡缂栧彿 + PageSize: 50 + }, + lotNo: '', //鎵规 + materialRules: { + PageNo: [{required: true,message: '鎵撳嵃鐨勯〉鐮佷笉鑳戒负绌�',trigger: 'blur'}], + PageSize: [{required: true,message: '鎵撳嵃鐨勫紶鏁颁笉鑳戒负绌�',trigger: 'blur'}], + }, + addForm: { //鎵撳嵃璁板綍 + code: '', + name: '', + batchNo: '', + specificationModel: '' + }, + slectVisible: false, + actionSheetList: [], + allList: [], + sizeVisible: false, + sizeList: [], + } + }, + onLoad() { + this.lotNo = "WH" + new Date(this.getCurrentDate().formate).getTime(); + this.sizeList = [{label: 10,value: 10},{label: 30,value: 30},{label: 20,value: 20},{label: 50,value: 50}] + }, + + methods:{ + sizeFocus(){ + uni.hideKeyboard() + this.sizeVisible = true; + }, + sizeConfirm(e) { + this.materialForm.materialCode = context[0].value + }, + pageFocus() { + uni.hideKeyboard() + this.slectVisible = true; + }, + confirm(context) { + this.materialForm.materialCode = context[0].value + }, + //娴嬭瘯鎵撳嵃锛岄摼鎺ヨ摑鐗� + textPrint() { + getMaterialInfo({materialCode: "E18VS694A712-00"}).then(res => { + if(Array.isArray(res.data.rows) && res.data.rows.length == 1) { + const result = res.data.rows[0]; + //鐗╂枡鍚嶇О鏄惁鎹㈣ + let name_1 = result.name.length > 36 ? result.name.substr(0, 36) : result.name + let name_2 = result.name.length > 36 ? result.name.substr(36) : '' + //渚涘簲鍟嗘槸鍚︽崲琛� + let desc = "" + let desc_1 = desc.length > 36 ? desc.substr(0, 36) : desc + let desc_2 = desc.length > 36 ? desc.substr(36) : '' + + let ptintContext = [ + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + /* 浠ヤ笂绌烘暟鎹紝涓洪槻姝涪鍖呮椂鎵撳嵃涓嶆甯� */ + {type:'line',x1:3,y1:3,x2:570,y2: 3,width:2}, //涓婅竟绾� + {type:'line',x1:3,y1:3,x2:3,y2: 460,width:2},//宸﹁竟绾� + {type:'line',x1:3,y1:458,x2:570,y2: 458,width:2}, //鏈�涓嬭竟绾� + {type:'line',x1:560,y1:3,x2:560,y2:420,width:2}, //鍙宠竟绾� + {type:'text',x:10,y:15,text:`Part:${result.code}`,size:3,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:50,x2:565,y2:50,width:2}, + {type:'text',x:10,y:60,text:`Descript:${name_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:10,y:95,text:`${name_2}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:130,x2:565,y2:130,width:2}, + {type:'text',x:10,y:140,text:`Vendor:${desc_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:10,y:175,text:`${desc_2}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:210,x2:565,y2:210,width:2}, + {type:'text',x:10,y:225,text:`PO:`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:260,x2:350,y2:260,width:2}, + {type:'text',x:10,y:280,text:`Qty:100 ${result.unit == null ? '' : result.unit}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:315,x2:350,y2:315,width:2}, + {type:'line',x1:3,y1:360,x2:350,y2:360,width:2}, + {type:'text',x:10,y:375,text:`Print Date:${this.getCurrentDate().date}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:410,x2:350,y2:410,width:2}, + {type:'text',x:10,y:425,text:`Print Time:${this.getCurrentDate().time}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:350,y1:210,x2:350,y2:460,width:2}, + {type:'qr',x:380,y:230,text:`PARTS NUMBER: ${result.code},SAP: ${result.sap_Location || ''},LOT NO: ${this.lotNo},QUANTITY: `,width:4,level:1}, + {type:'text',x:405,y:420,text:``,size:2,rotate:0,bold:1,underline:false,reverse:false}, + ] + + BluePrint.print(this.$store,ptintContext).then(()=>{ + uni.showToast({ + title:'鎵撳嵃鎴愬姛', + duration: 2000 + }) + // this.materialForm.materialCode = '' + this.materialForm.vendor = '' + this.materialForm.purchaseNo = '' + // this.materialForm.number = '' + this.addForm.code = result.code; + this.addForm.name = result.name; + this.addForm.batchNo = this.lotNo; + this.addForm.specificationModel = result.specificationModel; + //杩欓噷涓嶅啀璁板綍鎵撳嵃璁板綍锛屽洜涓烘湁浜嗘枒椹墦鍗� 銆怑ditby shaocx,2023-05-22銆� + /* + addPrintRecord(this.addForm).then(res => { + // console.log(res); + }) + //*/ + }).catch(()=>{ + uni.showToast({ + title:'鎵撳嵃澶辫触', + duration: 2000 + }) + }) + + }else { + uni.showToast({ + title:'鑾峰彇鐗╂枡淇℃伅澶辫触', + duration: 2000 + }) + } + }) + }, + //鑾峰彇print date print time + getCurrentDate() { + let date = new Date(); + let year = date.getFullYear(); //骞� + let month = date.getMonth() + 1; //鏈� + month = month >= 10 ? month : '0' + month; + let day = date.getDate(); //鏃� + day = day >= 10 ? day : '0' + day; + let hour = date.getHours() //鏃� + hour = hour >= 10 ? hour : '0' + hour; + let min = date.getMinutes(); //鍒� + min = min >= 10 ? min : '0' + min; + let second = date.getSeconds(); //绉� + second = second >= 10 ? second : '0' + second; + return { + date: `${day}.${month}.${year}`, + time: `${hour}:${min}:${second}`, + formate:`${year}/${month}/${day}` + } + + }, + onPrint(){ + if(this.materialForm.PageNo == "" || this.materialForm.PageNo <= 0) { + return uni.showToast({ + title:"椤电爜閿欒" + }) + } + getMaterialCount(this.materialForm).then(res => { + if(res.data.rows.length == 0) { + return uni.showToast({ + title:'鏃犳暟鎹�' + }) + } + //褰撳墠鐨勬潗鏂欏垪琛� + const arr = res.data.rows; + const timer = setInterval(() => { + if(this.index < arr.length) { + //鐗╂枡鍚嶇О鏄惁鎹㈣ + let name_1 = arr[this.index].name.length > 36 ? arr[this.index].name.substr(0, 36) : arr[this.index].name + let name_2 = arr[this.index].name.length > 36 ? arr[this.index].name.substr(36) : '' + //渚涘簲鍟嗘槸鍚︽崲琛� + let desc = "" + let desc_1 = desc.length > 36 ? desc.substr(0, 36) : desc + let desc_2 = desc.length > 36 ? desc.substr(36) : '' + + let ptintContext = [ + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + /* 浠ヤ笂绌烘暟鎹紝涓洪槻姝涪鍖呮椂鎵撳嵃涓嶆甯� */ + {type:'line',x1:3,y1:3,x2:570,y2: 3,width:2}, //涓婅竟绾� + {type:'line',x1:3,y1:3,x2:3,y2: 460,width:2},//宸﹁竟绾� + {type:'line',x1:3,y1:458,x2:570,y2: 458,width:2}, //鏈�涓嬭竟绾� + {type:'line',x1:560,y1:3,x2:560,y2:420,width:2}, //鍙宠竟绾� + {type:'text',x:10,y:15,text:`Part:${arr[this.index].code}`,size:3,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:50,x2:565,y2:50,width:2}, + {type:'text',x:10,y:60,text:`Descript:${name_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:10,y:95,text:`${name_2}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:130,x2:565,y2:130,width:2}, + {type:'text',x:10,y:140,text:`Vendor:${desc_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:10,y:175,text:`${desc_2}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:210,x2:565,y2:210,width:2}, + {type:'text',x:10,y:225,text:`PO:`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:260,x2:350,y2:260,width:2}, + {type:'text',x:10,y:280,text:`Qty:${arr[this.index].remarks}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:315,x2:350,y2:315,width:2}, + {type:'line',x1:3,y1:360,x2:350,y2:360,width:2}, + {type:'text',x:10,y:375,text:`Print Date:${this.getCurrentDate().date}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:410,x2:350,y2:410,width:2}, + {type:'text',x:10,y:425,text:`Print Time:${this.getCurrentDate().time}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:350,y1:210,x2:350,y2:460,width:2}, + {type:'qr',x:380,y:230,text:`PARTS NUMBER: ${arr[this.index].code},SAP: ${arr[this.index].sap_Location},LOT NO: ${this.lotNo},City:WH`,width:4,level:1}, + {type:'text',x:405,y:420,text:``,size:2,rotate:0,bold:1,underline:false,reverse:false}, + ] + BluePrint.print(this.$store,ptintContext).then(()=>{ + uni.showToast({ + title:'鎵撳嵃鎴愬姛', + duration: 2000 + }) + this.addForm.code = arr[this.index].code; + this.addForm.name = arr[this.index].name; + this.addForm.batchNo = this.lotNo; + this.addForm.specificationModel = ''; + //杩欓噷涓嶅啀璁板綍鎵撳嵃璁板綍锛屽洜涓烘湁浜嗘枒椹墦鍗� 銆怑ditby shaocx,2023-05-22銆� + /* + addPrintRecord(this.addForm).then(res => { + // console.log(res); + }) + //*/ + this.index++; + + }).catch((err)=>{ + uni.showToast({ + title:'鎵撳嵃澶辫触', + duration: 2000 + }) + }) + }else { + this.index = 0; + clearInterval(timer) + } + },8000) + + }) + } + } +} +</script> + +<style lang="scss" scoped> +.print-delivering-label-page{ + .page-content{ + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + $blockWidth:90%; + .label-show,.btns-view{ + width: $blockWidth; + box-sizing: border-box; + } + .label-show{ + margin-top: 30upx; + background-color: #fff; + border-radius: 20upx; + } + .btns-view{ + margin-top: 100rpx; + } + } +} +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/print/materialInfo.vue b/LA24030_LuLiPackageLine_Pda/pages/print/materialInfo.vue new file mode 100644 index 0000000..64ceade --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/print/materialInfo.vue @@ -0,0 +1,315 @@ +<template> + <view class="overflow"> + <!-- 椤堕儴 --> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"></block> + <block slot="content">鐗╂枡琛ユ墦</block> + </cu-custom> + <!-- 閬尅灞� --> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <!-- 鐗╂枡 --> + <view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="搴撲綅缂栧彿:" prop="wareLocationCode" required style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model.trim="warehouse.wareLocationCode" @confirm="materialBlur" placeholder="璇峰綍鍏ユ垨鎵爜" + :focus="true" + class="width padding_left25rpx" + style="margin-left: 30rpx;font-size: 36rpx;"> + </u-input> + </u-form-item> + </u-col> + <!-- <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx" ></u-icon> + </u-col> --> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" prop="WarematerialCode" style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model.trim="warehouse.WarematerialCode" @confirm="materialBlur" placeholder="璇峰綍鍏ユ垨鎵爜" + class="width padding_left25rpx" + style="margin-left: 30rpx;font-size: 36rpx;"> + </u-input> + </u-form-item> + </u-col> + <!-- <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx" ></u-icon> + </u-col> --> + </u-row> + </u-form> + <view style="margin-bottom: 180rpx;" v-show="singlist.length > 0"> + <view v-for="(item, eindex) in singlist" :key="eindex"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpredel" @open="open" @close="close" :options="options"> + <view class="title-wrap fontSize32rpx background_fff" :class="Number(item.uncollectedQuantity) > 0 ? 'bg_item' : '' " style="width: 100vw;"> + <u-row> + <u-col span="12" class="flex" style="align-items: flex-start;"> + <view style="background-color: #f18202;color: #fff;border-radius: 50%;width: 20px;height: 20px;line-height: 20px;text-align: center;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx" style="flex: 1;word-break: break-all;"> + {{item.wareMaterialCode}}--{{item.wareMaterialName}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="7"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 鎵规锛歿{item.itemBatchNo}} + </view> + </u-col> + <u-col span="5"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 搴撲綅缂栧彿锛歿{item.wareContainerCode}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="7"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + SAP浣嶇疆:{{item.sap_Location}} + </view> + </u-col> + <u-col span="5"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 鏁伴噺锛歿{item.quantity}} + </view> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + </view> + + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom" v-if="!printflag"> + <!-- <view class="pop "> --> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鎵撳嵃寮犳暟</text> + <text> + <u-input v-model.trim="contLabel" placeholder="璇疯緭鍏ユ墦鍗板紶鏁�" + class="width" + @focus="contLabel=''" + style="font-size: 36rpx;text-align: right;"> + </u-input> + </text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵撳嵃鐗╂枡鏁伴噺</text> + <text> + <u-input v-model.trim="ermNum" placeholder="璇疯緭鍏ユ墦鍗扮墿鏂欐暟閲�" + class="width" + @focus="ermNum=''" + style="font-size: 36rpx;text-align: right;"> + </u-input> + </text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏈鐗╂枡鎬绘暟</text> + <text>{{materlist.quantity}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">PO/琛屽彿</text> + <text>{{materlist.purchaseNo}}/{{materlist.lineNumber}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">渚涘簲鍟�</text> + <text>{{materlist.supplierNo}}{{materlist.supplierName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.wareMaterialCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.wareMaterialName}}</text> + </view> + <!-- </view> --> + <view class="margin_top140rpx"> + <!-- <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='init' /> --> + <button-modal :cleaningShow='true' allTitle='钃濈墮鎵撳嵃' cleaningTitle='鏂戦┈鎵撳嵃' @allsubmit="init(1)" @submit='init(2)'/> + </view> + </u-popup> + + </view> + </view> +</template> + +<script> + import ButtonModal from '@/components/buttonModal.vue' + import ModalCode from '@/components/ModalCode.vue' + import BluePrint from '@/pages/print/bluePrint.js' + import {addPrintRecord,getMerterialBaseKuwei} from '@/api/print.js' + import printComp from '@/mixins/printPoLabel.js' + import printBanma from '@/mixins/printBanma.js' + + export default { + mixins: [printComp,printBanma], + + data() { + return { + rescode: 0, + resmessage: "", + singlist: [], //鐗╂枡璇︽儏 + warehouse: { + wareLocationCode: '', + WarematerialCode:'', + PageSize: 1000, + PageNo: 1, + PurchaseNo:'' + }, + warehouseRules: { + wareLocationCode: [{required: true,message: '鍗曞彿涓嶈兘涓虹┖',trigger: 'blur'}], + // WarematerialCode: [{required: true,message: '鐗╂枡缂栧彿涓嶈兘涓虹┖',trigger: 'blur'}] + }, + options: [{ + text: '鎵撳嵃', + style: { + backgroundColor: '#fc9f35' + } + } + ], + addForm: { //鎵撳嵃璁板綍 + code: '', + name: '', + batchNo: '', + specificationModel: '' + }, + contLabel:1, //鎵撳嵃寮犳暟 + ermNum:'', + detailshow: false, + timer:null, + materlist:{}, + printflag:false + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + methods: { + //鑾峰彇print date print time + getCurrentDate() { + let date = new Date(); + let year = date.getFullYear(); //骞� + let month = date.getMonth() + 1; //鏈� + month = month >= 10 ? month : '0' + month; + let day = date.getDate(); //鏃� + day = day >= 10 ? day : '0' + day; + let hour = date.getHours() //鏃� + hour = hour >= 10 ? hour : '0' + hour; + let min = date.getMinutes(); //鍒� + min = min >= 10 ? min : '0' + min; + let second = date.getSeconds(); //绉� + second = second >= 10 ? second : '0' + second; + return { + date: `${day}.${month}.${year}`, + time: `${hour}:${min}:${second}`, + formate:`${year}/${month}/${day}` + } + }, + //鎵撳嵃 + init(param) { + const arr = ['warematerialCode','batchNo','uncollectedQuantity','supplier']; + Object.keys(this.materlist).forEach(item => { + if(arr.includes(item)) { + if(!this.materlist[item]) { + this.rescode = 400 + this.resmessage = `${item}涓虹┖锛屼笉鑳界户缁墦鍗癭 + this.$refs.resmodal.show = true + return + } + } + }) + // if(this.materlist.uncollectedQuantity<=0){ + // this.detailshow = false + // this.rescode = 400 + // this.resmessage = `鏁伴噺闇�澶т簬0` + // this.$refs.resmodal.show = true + // return + // } + if(!this.contLabel || !this.ermNum){ + uni.showToast({ + title: '鏁伴噺涓嶈兘涓虹┖涓斿ぇ浜�0', + icon: 'none' + }) + return + } + // if(this.ermNum > this.materlist.uncollectedQuantity){ + // uni.showToast({ + // title: '鎵撳嵃鏁伴噺澶т簬鏈鏁伴噺', + // icon: 'none' + // }) + // return + // } + // 娌℃湁渚涘簲鍟嗗瓧娈� supplier + if(param==1){ + this.printComp('REPRINT') + }else{ + this.printBanma('REPRINT') + } + }, + //鑾峰彇鐗╂枡璁板綍 + materialBlur() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + // this.warehouse + getMerterialBaseKuwei({ + 'wareLocationCode':this.warehouse.wareLocationCode, + 'wareMaterialCode':this.warehouse.WarematerialCode, + + }).then(res => { + const result = res.data.rows; + if(result.length == 0) { + this.rescode = 400; + this.resmessage = "姝ょ墿鏂欐棤鐗╂枡璁板綍" + this.$refs.resmodal.show = true + } + this.singlist = result; + }) + } + }) + }, + //鍒犻櫎璇︽儏 + longpredel(index, eindex) { + this.singlist[index].cardNum = true + this.printflag = false + if (eindex == 1) { + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + close(index) { + // this.singlist[index].show = false; + // this.singlist[index].cardNum = false; + // this.$forceUpdate() + }, + beforeDestroy() { + // 閿�姣佸畾鏃跺櫒 + if(this.timer){ + clearTimeout(this.timer) + this.timer = null + } + + } + } + } +</script> + +<style lang="scss"> +.bg_item { + background: #FFEBCD !important; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/print/wms copy.vue b/LA24030_LuLiPackageLine_Pda/pages/print/wms copy.vue new file mode 100644 index 0000000..fda3c90 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/print/wms copy.vue @@ -0,0 +1,647 @@ +<template> + <view class="overflow" style="padding-bottom: 150rpx"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> </block> + <block slot="content">寮傚父澶勭悊</block> + </cu-custom> + <u-form labelPosition="left" label-width="180rpx" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" required class="uFormItem"> + <u-input v-model.trim="warehouse.containerCode" @confirm="getContainerData(1)" + :disabled="kwbhAllowed" placeholder="璇峰綍鍏ユ垨鎵爜" class="width" :focus="curFoucus"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx padding_right30rpx"> + <u-col span="12"> + <u-form-item label="寮傚父鐘舵��:" prop="checkStatus" required class="uFormItem"> + <u-input v-model="warehouse.checkStatusStr" placeholder="璇烽�夋嫨" type="select" @click="show = true" + style="font-weight: bolder; margin-left: 15rpx; font-size: 34rpx" + class="width padding_left30rpx"> + </u-input> + <u-select v-model="show" :list="checkStatuEnums" @confirm="handlerConfirm"></u-select> + </u-form-item> + </u-col> + </u-row> + <!-- v-if="warehouse.containerCode" --> + <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff"> + <u-col span="12"> + <u-form-item label="寮傚父鍘熷洜:" prop="reason" class="uFormItem"> + <u-input @focus="warehouse.reason = ''" v-model.trim="warehouse.reason" placeholder="璇峰~鍐欏紓甯稿師鍥�" + style="font-weight: bolder; margin-left: 15rpx" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <!-- 鍒楄〃 --> + <view class="margin_top10rpx"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + :options="options" @click="longpress" @open="open" @close="close" class="margin_bottom10rpx"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :class="item.checked ? 'bg_item' : ''" + class="fontSize32rpx width margin_auto background_fff padding10 relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex align-center"> + <u-checkbox v-model="item.checked" size="50rpx"></u-checkbox> + <view class="flex justify-center align-center" style=" + background-color: #f18202; + color: #fff; + border-radius: 50vh; + width: 40rpx; + height: 40rpx; + "> + {{ eindex + 1 }} + </view> + <text class="color_f18202 padding_left10rpx"> + {{ item.materialCode }} - {{ item.materialName }} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <text class="color_80 padding_left25rpx"> + 鎵规锛歿{ item.batch }} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="8"> + <text class="color_80 padding_left25rpx"> </text> + </u-col> + <u-col span="4"> + <text class="color_f18202"> 鏁伴噺锛歿{ item.quantity }} </text> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </view> + <modal-code :rescode="rescode" :resmessage="resmessage" ref="resmodal" /> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow = false" mode="bottom"> + <!-- <view class="pop "> --> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{ this.materlist.materialCode }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{ this.materlist.materialName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡灏忕被</text> + <text>{{ this.materlist.materialTypeName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text>{{ this.materlist.batchNo }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{ this.materlist.specificationModel }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏁伴噺</text> + <text>{{ this.materlist.unBindQuantity }}</text> + </view> + <!-- </view> --> + <view class="margin_top140rpx"> + <button-modal :subShow="true" garmenTitle="鎵撳嵃" @submit="init" @reset="rest" /> + </view> + </u-popup> + <button-modal :empTytowerShow="true" cleaningTitle="閲嶇疆" garmenTitle="纭" @submit="submit" @reset="back" /> + </view> +</template> +<script> +import { getContainerMaterial, unbindOrder } from "@/api/putIn/untie.js"; +import BluePrint from "@/pages/print/bluePrint.js"; +import ButtonModal from "../../components/buttonModal.vue"; +import ModalCode from "../../components/ModalCode.vue"; +import { getAttrValue } from "@/utils/tool.js"; +import { + getContainDetail, + onlyUpdateDutyCycle, + getBhbMaterialList, +} from "../../api/putIn/artificial.js"; + +import { + getSGjRuKuMaterialHander, + unAbnormalOrder, +} from "@/api/hander/hander.js"; +export default { + data() { + return { + operator: "", + warehouse: { + containerCode: "", + materialCode: "", + dutyCycle: "", + gridNumber: 1, + useNumber: 0, + exitNumber: 0, + }, + singlist: [], //璇︽儏鍒楄〃 + ordersId: 0, //褰撳墠瀹瑰櫒缁戝畾鐨勪笂鏋跺崟 + rescode: 0, + resmessage: "", + options: [ + // { + // text: "鎵撳嵃", + // style: { + // backgroundColor: "#fc9f35", + // }, + // }, + ], + detailshow: false, + materlist: {}, + curFoucus: true, + timer: null, + timerSm: null, + detailableZb: false, + detailable: false, + gridFocus: false, + gridable: true, + kwbhAllowed: false, + show: false, + checkStatuEnums: [ + // { + // value: "5", + // label: "宸叉姤搴�", + // }, + // { + // value: "6", + // label: "宸查殧绂�", + // }, + { + value: "7", + label: "鍐荤粨", + }, + ], + }; + }, + components: { + ButtonModal, + ModalCode, + }, + onLoad() { + this.operator = JSON.parse(uni.getStorageSync("userInfo")).name; + }, + watch: { + containerCode(val) { + if (!val) { + this.detailable = false; + this.detailableZb = false; + this.warehouse.exitNumber = 0; + } + }, + }, + methods: { + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }); + }, + close(index) { + this.singlist[index].show = false; + }, + //鐗╂枡璇︽儏 + longpress(index, eindex) { + this.materlist = this.singlist[index]; + this.detailshow = true; + }, + //鐗╂枡鐘舵�侀�夋嫨 + handlerConfirm(e) { + this.warehouse.checkStatusStr = e[0].label; + this.checkStatus = e[0].value; + }, + //鏍囩閲嶆柊鎵撳嵃 + init() { + const arr = ["materialCode", "unBindQuantity"]; + const arrzw = ["鐗╂枡缂栧彿", "鏈瑙g粦鏁伴噺"]; + let isAllow = ""; + Object.keys(this.materlist).forEach((item) => { + if (arr.includes(item)) { + if (!this.materlist[item]) { + isAllow = arr.indexOf(item); + return; + } + } + }); + if (isAllow != "") { + this.detailshow = false; + this.rescode = 400; + this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭; + this.$refs.resmodal.show = true; + return; + } + if ( + this.materlist.unBindQuantity <= 0 || + this.materlist.unBindQuantity > this.materlist.quantity + ) { + this.detailshow = false; + this.rescode = 400; + this.resmessage = `鏁伴噺涓嶇鍚堣鑼冿紝涓嶈兘缁х画鎵撳嵃`; + this.$refs.resmodal.show = true; + return; + } + if (!this.materlist.specificationModel) { + this.materlist.specificationModel = ""; + } + let ptintContext = [ + { + type: "text", + x: 0, + y: 0, + text: "", + size: 2, + rotate: 0, + bold: 0, + underline: false, + reverse: false, + }, + { + type: "text", + x: 0, + y: 0, + text: "", + size: 2, + rotate: 0, + bold: 0, + underline: false, + reverse: false, + }, + { + type: "text", + x: 0, + y: 0, + text: "", + size: 2, + rotate: 0, + bold: 0, + underline: false, + reverse: false, + }, + /* 浠ヤ笂绌烘暟鎹紝涓洪槻姝涪鍖呮椂鎵撳嵃涓嶆甯� */ + { type: "line", x1: 3, y1: 3, x2: 565, y2: 3, width: 2 }, + { type: "line", x1: 3, y1: 3, x2: 3, y2: 345, width: 2 }, + { type: "line", x1: 3, y1: 345, x2: 565, y2: 345, width: 2 }, + { type: "line", x1: 565, y1: 345, x2: 565, y2: 3, width: 2 }, + { + type: "text", + x: 80, + y: 15, + text: "鐗ч噹姹借溅瑁呭(姝︽眽)鏈夐檺鍏徃", + size: 3, + rotate: 0, + bold: 1, + underline: false, + reverse: false, + }, + { type: "line", x1: 3, y1: 60, x2: 565, y2: 60, width: 2 }, + { + type: "text", + x: 10, + y: 75, + text: `鐗╂枡缂栧彿: ${this.materlist.materialCode}`, + size: 2, + rotate: 0, + bold: 1, + underline: false, + reverse: false, + }, + { type: "line", x1: 3, y1: 110, x2: 380, y2: 110, width: 2 }, + { + type: "text", + x: 10, + y: 125, + text: `鐗╂枡鍚嶇О: ${this.materlist.materialTypeName || ""}`, + size: 2, + rotate: 0, + bold: 1, + underline: false, + reverse: false, + }, + { type: "line", x1: 3, y1: 160, x2: 380, y2: 160, width: 2 }, + { + type: "text", + x: 10, + y: 175, + text: `鎵规: ${this.materlist.batchNo}`, + size: 2, + rotate: 0, + bold: 1, + underline: false, + reverse: false, + }, + { type: "line", x1: 3, y1: 210, x2: 565, y2: 210, width: 2 }, + { type: "line", x1: 380, y1: 60, x2: 380, y2: 210, width: 2 }, + { + type: "qr", + x: 410, + y: 72, + text: `PARTS NUMBER: ${this.materlist.materialCode},SAP: ${this.materlist.sap_Location || "" + },BOXNUM: ${this.materlist.boxNo || ""},LOT NO: ${this.materlist.batchNo + },QUANTITY: ${this.materlist.unBindQuantity}`, + width: 3, + level: 1, + }, + { + type: "text", + x: 10, + y: 225, + text: `瑙勬牸鍨嬪彿: ${this.materlist.specificationModel.length > 32 + ? this.materlist.specificationModel.substr(0, 32) + : this.materlist.specificationModel + }`, + size: 2, + rotate: 0, + bold: 1, + underline: false, + reverse: false, + }, + { type: "line", x1: 3, y1: 260, x2: 565, y2: 260, width: 2 }, + { + type: "text", + x: 120, + y: 290, + text: "MAKINO J(CHINA) CO.LTD", + size: 3, + rotate: 0, + bold: 1, + underline: false, + reverse: false, + }, + ]; + console.log(ptintContext); + BluePrint.print(this.$store, ptintContext) + .then(() => { + // 鍏抽棴寮规 骞舵仮澶嶆粦鍔ㄥ潡 + this.detailshow = false; + this.addForm.code = this.materlist.materlist; + this.addForm.name = this.materlist.materialName; + this.addForm.batchNo = this.materlist.batchNo; + this.addForm.specificationModel = this.materlist.specificationModel; + addPrintRecord(this.addForm).then((res) => { + console.log(res); + }); + uni.showToast({ + title: "鎵撳嵃鎴愬姛", + duration: 2000, + }); + }) + .catch((err) => { + // uni.showToast({ + // title:'鎵撳嵃澶辫触', + // duration: 2000 + // }) + }); + }, + materialBlur() { + clearTimeout(this.timerSm); + this.timerSm = null; + if (this.warehouse.materialCode == "") { + return; + } + + this.timer = setTimeout(() => { + //澶氭瑙﹀彂bug 寤惰繜bug + //鍒ゆ柇褰撳墠鐗╂枡鏄惁鍦ㄧ洏鐐瑰垪琛ㄤ腑 + const index = this.singlist.findIndex( + (item) => + item.materialCode == this.warehouse.materialCode && + item.batchNo == lotNo + ); + if (index > -1) { + this.singlist[index].checked = 1; + this.singlist.unshift(...this.singlist.splice(index, 1)); + return; + } else { + clearTimeout(this.timer); + this.timer = null; + this.containerBlur(); + } + }, 100); + }, + containerBlur() { + if ( + this.warehouse.containerCode == "" || + this.warehouse.materialCode == "" + ) { + return; + } + getContainerMaterial(this.warehouse).then((res) => { + if (res.data == null || res.data.length == 0) { + this.rescode = 400; + this.resmessage = "鏆傛棤鏁版嵁"; + this.$refs.resmodal.show = true; + return; + } + this.warehouse.dutyCycle = res.data[0].dutyCycle || 0; + //缁欐墍鏈夌殑鏉愭枡涓�涓湭閫変腑鐨勭姸鎬� + res.data.map((item) => { + (item.checked = true), (item.unBindQuantity = ""); + }); + this.singlist.unshift(...res.data); + this.ordersId = res.data[0].ordersId; + }); + }, + //瑙g粦鏁伴噺澶辩劍浜嬩欢 + changeNum(option) { + //鍒ゆ柇鏄惁鍕鹃�夛紝濡傛灉鍕鹃�変簡锛屽氨瑕佸鏁伴噺鏍¢獙 + if (!option.checked) { + return; + } + if (option.unBindQuantity == "") { + this.rescode = 400; + this.resmessage = "瑙g粦鏁伴噺涓嶈兘涓虹┖"; + this.$refs.resmodal.show = true; + } + + if (option.unBindQuantity <= 0) { + this.rescode = 400; + this.resmessage = "瑙g粦鏁伴噺蹇呴』澶т簬0"; + this.$refs.resmodal.show = true; + } + if (option.unBindQuantity > option.quantity) { + this.rescode = 400; + this.resmessage = "瑙g粦鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺"; + this.$refs.resmodal.show = true; + } + if (this.detailable) { + let filterHas = this.singlist.filter( + (item) => item.unBindQuantity == Number(item.quantity) + ); + if (filterHas.length > 0) { + this.warehouse.exitNumber = + this.warehouse.useNumber - filterHas.length; + } + } + }, + //纭瑙g粦 + submit() { + const filterArr = this.singlist.filter((item) => item.checked); + if (filterArr.length <= 0) { + this.rescode = 400; + this.resmessage = "璇烽�夋嫨瑙g粦鐨勭墿鏂欙紒"; + this.$refs.resmodal.show = true; + return; + } + // const warehousOrderDetails = filterArr.reduce((curr, item) => { + // curr.push({ + // ...item, + // }); + // return curr; + // }, []); + const handleArr = []; + filterArr.forEach((item) => { + handleArr.push(item.id); + }); + uni.showModal({ + title: "寮傚父澶勭悊", + content: "鏄惁纭寮傚父澶勭悊锛�", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + unAbnormalOrder({ + checkStatusStr: this.warehouse.checkStatusStr, + reason: this.warehouse.reason, + WmsStockIdList: handleArr, + }).then((res) => { + this.rescode = 200; + this.$refs.resmodal.show = true; + this.resmessage = "寮傚父澶勭悊鎴愬姛"; + this.back(); + }); + } else if (res.cancel) { + } + }, + }); + }, + rest() { }, + //妫�鏌ュ鍣ㄦ爡鏍兼暟 + checkGrid() { }, + //888鑾峰彇瀹瑰櫒鐨勪俊鎭� + getContainerData(param) { + if (this.warehouse.containerCode == "") { + uni.showToast({ + title: "璇锋壂瀹瑰櫒缂栧彿", + icon: "none", + duration: 2000, + }); + return; + } + getSGjRuKuMaterialHander({ + containerCode: this.warehouse.containerCode, + pageSize: 1000, + }).then((res) => { + const result = res.result.items; + console.log("55555555"); + console.log(result); + + debugger; + if (Array.isArray(result) && result.length == 0) { + uni.showToast({ + title: "鏁版嵁涓嶅瓨鍦�", + icon: "none", + duration: 2000, + }); + return; + } + if (result && result.length == 1) { + result[0].checked = true; + } + this.singlist = result; + }); + }, + onlyUpdateDutyCycleClick() { + this.$refs.warehouseRef.setRules(this.warehouseRules); + this.$refs.warehouseRef.validate((valid) => { + if (valid) { + //璇锋眰鍙傛暟 + let params = { + wareContainerCode: this.warehouse.containerCode, + dutyCycle: this.warehouse.dutyCycle, + }; + uni.showModal({ + title: "鎻愮ず", + content: "鏄惁纭浠呮洿鏂扮┖闂村崰姣旀暟鎹紵", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + onlyUpdateDutyCycle(params).then((res) => { + this.warhouseTph = this.warehouse.containerCode; + this.rescode = res.code; + this.resmessage = res.message; + this.$refs.resmodal.show = true; + this.rest(); + }); + } else if (res.cancel) { + } + }, + }); + } + }); + }, + gridBtnClick() { + this.gridable = !this.gridable; + if (!this.gridable) { + this.$nextTick(() => { + this.gridFocus = true; + }); + } else { + this.$nextTick(() => { + this.gridFocus = false; + }); + } + }, + //鍏ㄩ儴鍙栨秷 + back() { + this.ordersId = 0; + this.singlist = []; + this.$refs.warehouseRef.resetFields(); + this.warehouse.containerCode = ""; + this.warehouse.checkStatusStr = ""; + this.warehouse.reason = ""; + }, + }, + unmounted() { + if (this.timer) { + clearTimeout(this.timer); + this.timer = null; + } + }, +}; +</script> +<style lang="scss"> +.content { + height: 500rpx; + overflow-y: scroll; + width: 100%; + padding: 15rpx; + box-sizing: border-box; + + .content-item { + padding: 15rpx; + background-color: #fff; + margin-bottom: 15rpx; + border-radius: 8rpx; + font-size: 32rpx; + } +} + +.bg_item { + background: #ffebcd !important; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/print/wms.vue b/LA24030_LuLiPackageLine_Pda/pages/print/wms.vue new file mode 100644 index 0000000..f701bf6 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/print/wms.vue @@ -0,0 +1,278 @@ +<template> + <view class="overflow" style="padding-bottom: 150rpx"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> </block> + <block slot="content">鐪嬫澘鍗″彨鏂�</block> + </cu-custom> + <u-form + labelPosition="left" + label-width="180rpx" + :model="warehouse" + ref="warehouseRef" + > + <u-row + class="border_bottom margin_top10rpx padding_left25rpx" + style="background-color: #fff" + > + <u-col span="12"> + <u-form-item + label="鐪嬫澘鍗″彿:" + prop="kanBanCardNo" + required + class="uFormItem" + > + <u-input + v-model.trim="warehouse.kanBanCardNo" + :disabled="kwbhAllowed" + @confirm="getContainerData" + placeholder="璇峰綍鍏ユ垨鎵爜" + class="width" + :focus="curFoucus" + > + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <!-- 鍒楄〃 --> + <view class="margin_top10rpx"> + <u-swipe-action + :show="item.show" + :index="eindex" + v-for="(item, eindex) in singlist" + :key="eindex" + :options="options" + @click="longpress" + @open="open" + @close="close" + class="margin_bottom10rpx" + > + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view + :class="item.checked ? 'bg_item' : ''" + class="fontSize32rpx width margin_auto background_fff padding10 relative box_sizing transition" + > + <u-row> + <u-col span="12" class="flex align-center"> + <!-- <u-checkbox v-model="item.checked" size="50rpx"></u-checkbox> --> + <view + class="flex justify-center align-center" + style=" + background-color: #f18202; + color: #fff; + border-radius: 50vh; + width: 40rpx; + height: 40rpx; + " + > + {{ eindex + 1 }} + </view> + <text class="color_f18202 padding_left10rpx"> + {{ item.materialCode }} - {{ item.materialName }} + </text> + </u-col> + </u-row> + + <u-row> + <u-col span="12"> + <text class="color_80 padding_left25rpx"> + 鐪嬫澘鍗★細{{ item.kanBanCardNo }} + </text> + </u-col> + </u-row> + + <u-row> + <u-col span="12"> + <text class="color_80 padding_left25rpx"> + 渚涘簲鍟嗙紪鍙凤細{{ item.supplierCode }} + </text> + </u-col> + </u-row> + + <u-row> + <u-col span="7"> + <text class="color_80 padding_left25rpx"> + 婧愬簱鍖猴細{{ item.sourceAreaCode }} + </text> + </u-col> + <u-col span="5"> + <text class="color_80"> + 鐩爣搴撳尯锛歿{ item.toAreaCode }} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="7"> + <text class="color_80 padding_left25rpx"> + 鐩爣搴撲綅锛歿{ item.toPlaceName }} + </text> + </u-col> + <u-col span="5"> + <text class="color_f18202"> 鏁伴噺锛歿{ item.quantity }} </text> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </view> + <modal-code :rescode="rescode" :resmessage="resmessage" ref="resmodal" /> + + <button-modal + :empTytowerShow="true" + cleaningTitle="閲嶇疆" + garmenTitle="纭" + @submit="submit" + @reset="back" + /> + </view> +</template> +<script> +import ButtonModal from "../../components/buttonModal.vue"; +import ModalCode from "../../components/ModalCode.vue"; +import { + getWmsConfigKbcard, + addKbcardOrderMovement, +} from "@/api/hander/hander.js"; +export default { + data() { + return { + operator: "", + warehouse: { + kanBanCardNo: "", + materialCode: "", + dutyCycle: "", + gridNumber: 1, + useNumber: 0, + exitNumber: 0, + }, + singlist: [], //璇︽儏鍒楄〃 + ordersId: 0, //褰撳墠瀹瑰櫒缁戝畾鐨勪笂鏋跺崟 + rescode: 0, + resmessage: "", + options: [], + detailshow: false, + materlist: {}, + curFoucus: true, + timer: null, + timerSm: null, + detailableZb: false, + detailable: false, + gridFocus: false, + gridable: true, + kwbhAllowed: false, + show: false, + }; + }, + components: { + ButtonModal, + ModalCode, + }, + onLoad() { + this.operator = JSON.parse(uni.getStorageSync("userInfo")).name; + }, + watch: { + kanBanCardNo(val) { + if (!val) { + this.detailable = false; + this.detailableZb = false; + this.warehouse.exitNumber = 0; + } + }, + }, + methods: { + //纭 + submit() { + uni.showModal({ + title: "鐪嬫澘鍗″彨鏂�", + content: "鏄惁纭鐪嬫澘鍗″彨鏂欙紵", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + if (this.singlist.length <= 0 || !this.singlist[0].kanBanCardNo) { + uni.showToast({ + title: "鐪嬫澘鍗″彿涓嶅瓨鍦�", + icon: "none", + duration: 2000, + }); + return; + } + addKbcardOrderMovement({ + KanBanCardNo: this.singlist[0].kanBanCardNo, + }).then((res) => { + this.rescode = 200; + this.$refs.resmodal.show = true; + this.resmessage = "鐪嬫澘鍗″彨鏂欐垚鍔�"; + this.back(); + }); + } else if (res.cancel) { + } + }, + }); + }, + //鑾峰彇瀹瑰櫒鐨勪俊鎭� + getContainerData() { + if (this.warehouse.kanBanCardNo == "") { + uni.showToast({ + title: "璇锋壂鐪嬫澘鍗″彿", + icon: "none", + duration: 2000, + }); + return; + } + getWmsConfigKbcard({ + kanBanCardNo: this.warehouse.kanBanCardNo, + page:1, + pageSize:1 + }).then((res) => { + const result = res.result.items; + this.singlist = []; + if (Array.isArray(result) && result.length == 0) { + uni.showToast({ + title: "鏁版嵁涓嶅瓨鍦�", + icon: "none", + duration: 2000, + }); + return; + } + // if (result && result.length == 1) { + // result[0].checked = true; + // } + this.singlist.push(result[0]); + }); + }, + + //鍏ㄩ儴鍙栨秷 + back() { + this.singlist = []; + this.warehouse.kanBanCardNo = ""; + this.$refs.warehouseRef.resetFields(); + }, + }, + unmounted() {}, +}; +</script> +<style lang="scss"> +.content { + height: 500rpx; + overflow-y: scroll; + width: 100%; + padding: 15rpx; + box-sizing: border-box; + + .content-item { + padding: 15rpx; + background-color: #fff; + margin-bottom: 15rpx; + border-radius: 8rpx; + font-size: 32rpx; + } +} + +.bg_item { + background: #ffebcd !important; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/putIn/artificial/artificial.vue b/LA24030_LuLiPackageLine_Pda/pages/putIn/artificial/artificial.vue new file mode 100644 index 0000000..aefdf6c --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/putIn/artificial/artificial.vue @@ -0,0 +1,450 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">浜哄伐缁勭洏</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <view class="text-bold width fontSize32rpx" style="padding: 10rpx 10rpx;background-color: #d6d6d6;"> + <view class="flex justify-between align-center"> + <text class="width23 padding10">鍏ュ簱鍗曞彿</text> + <text>{{putCode}}</text> + </view> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" required + style="font-size: 16px;font-weight: bold;padding: 0;"> + <input v-model="warehouse.containerCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="focu=true" + @blur="getContainerDetails" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </input> + <u-icon name="close-circle-fill" color="#848484" v-if="warehouse.containerCode && focu" + @click="warehouse.containerCode=''"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鐗╂枡缂栧彿:" + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.materialCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="materialFocus" + @blur="getMaterialDetails" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx "> + </input> + <u-icon name="close-circle-fill" color="#848484" v-if="warehouse.materialCode && focuM" + @click="warehouse.materialCode=''"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" /> + <view v-if="singlist.length>0" :style="'height:calc(100vh - '+(CustomBar+155)+'px'"> + <view class="margin_top10rpx overflow_auto" style="height:calc(100% - 265rpx)"> + <scroll-view scroll-y="true"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpress" @open="open" :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :key="eindex+'singlist'" :class="item.edit?'clickactive':''" + class="fontSize32rpx width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + {{item.warematerialCode}} - {{item.batchNo}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 澶х被锛歿{item.category}} + </view> + </u-col> + <u-col span="6"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 灏忕被锛歿{item.warematerialName}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <input disabled="" + class="border_bottom_f18202 width45 fontSize32rpx text-left" + style="margin:10rpx 0 10rpx 45rpx;" v-model="item.unit" placeholder="鍗曚綅" + /> + </u-col> + <u-col span="5"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.quantity" type="number" placeholder="璇疯緭鍏ョ粍鐩樻暟閲�"/> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </scroll-view> + </view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.warematerialCode}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡澶х被</text> + <text>{{materlist.category}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡灏忕被</text> + <text>{{materlist.warematerialCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏉$爜</text> + <text>{{materlist.barCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + </view> + </u-popup> + </view> + <button-modal :cleaningShow='true' allTitle='鍏ㄩ儴鍙栨秷' cleaningTitle='纭缁勭洏' @allsubmit="reset" @submit='submit' /> + + </view> +</template> + +<script> + import ButtonModal from '../../../components/buttonModal.vue' + import ModalCode from '../../../components/ModalCode.vue' + import { + getOrderNo, + getContainerDetails, + add, + WarematerialCode + } from '../../../api/putIn/artificial.js' + import { + getDate + } from '../../../utils/dateTime.js' + export default { + data() { + return { + modalshow: false, + show: false, + rescode: 0, + resmessage: "", + purchaseNo: '', + putCode: '', //瀹瑰櫒浜岀淮鐮� + detailshow: false, + operator: '', + focu: false, //娓呯┖鎸夐挳闅愭樉 + focuM: false, //鐗╂枡闅愭樉鎸夐挳 + Datetime: getDate(), + singlist: [], //鐗╂枡璇︽儏 + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }, + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + materlist: [], + warehouse: { + containerCode: '', + materialCode: '' + }, + batchNo: '',褰撳墠鎵爜鐨勭墿鏂欑殑鎵规 + warehouseRules: { + containerCode: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }], + materialCode: [{ + required: true, + message: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + containerCodeRules: { + containerCode: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }], + }, + materialCodeRules: { + materialCode: [{ + required: true, + message: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + // this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + this.$refs.warehouseRef.setRules(this.warehouseRules) + this.getOrderNo() + }, + methods: { + //鍏ュ簱鍗曞彿 + getOrderNo() { + getOrderNo().then((res) => { + if (res.code == 200) { + this.putCode = res.data + } else { + this.$refs.resmodal.show = true + } + }) + }, + //鏌ヨ绌烘墭 + getContainerDetails() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focu = false + if (this.warehouse.containerCode !== '') { + getContainerDetails({ + materialCode: this.warehouse.containerCode + }).then((res) => { + if (res.code == 200) { + if (res.data.length == 0) { + this.rescode = 400 + this.resmessage = '鏃犳瀹瑰櫒' + this.$refs.resmodal.show = true + return + } + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + } + }, 200) + } + }) + }, + //鐗╂枡鏌ヨ + getMaterialDetails() { + this.$refs.warehouseRef.setRules(this.materialCodeRules) + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focuM = false + if (this.warehouse.materialCode !== '') { + let params = { + WarematerialCode: this.warehouse.materialCode + } + WarematerialCode(params).then((res) => { + if (res.code == 200) { + // this.singlist=res.data + if (res.data.rows.length == 0) { + this.rescode = 400 + this.resmessage = '鏃犳鐗╂枡' + this.$refs.resmodal.show = true + return + } + res.data.rows.map(item => { + item.batchNo = this.batchNo + item.quantity = '' + return item; + }) + + this.singlist.unshift(...res.data.rows) + let deWeightThree = (val) => { + let map = new Map() + for (let item of val) { + if (!map.has(item.warematerialCode && item.barNo)) { + map.set(item.warematerialCode && item.barNo, + item) + } else { + uni.showModal({ + title: '鎻愮ず', + content: '璇峰嬁閲嶅鎵弿', + showCancel: false + }) + } + } + return [...map.values()] + } + this.singlist = deWeightThree(this.singlist) + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + } + }, 200) + } + }) + }, + //鐗╂枡缂栧彿鑱氱劍浜嬩欢 + materialFocus() { + this.warehouse.materialCode = '' + uni.hideKeyboard() + } + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + if (eindex == 1) { + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + if (val.quantity > val.uncollectedQuantity) { + val.quantity = val.uncollectedQuantity + } + if (val.quantity && val.quantity > 0) { + val.edit = true + this.$forceUpdate() + } else { + val.edit = false + this.$forceUpdate() + } + + }, + //鍏ㄩ儴鍙栨秷 + reset() { + this.singlist.forEach(item => { + item.quantity = "" + item.edit = false + }) + this.$forceUpdate() + }, + //閲嶇疆椤甸潰淇℃伅 + rest() { + this.warehouse.containerCode = '' + this.warehouse.materialCode = '' + this.singlist.forEach(item => { + item.quantity = '' + }) + this.singlist = [] + this.getOrderNo() + }, + //纭 + submit() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + this.$refs.warehouseRef.validate(valid => { + if (valid) { + let arr = this.singlist.filter(item => item.edit) + if (arr.length == 0 && this.singlist.length !== 0) { + uni.showModal({ + title: '鎻愮ず', + content: '鏈~鍐欑粍鐩樻暟閲�', + showCancel: false + }) + return + } + let matatilDetails = [] + arr.forEach(item => { + matatilDetails.push({ + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + wareMaterialCode: item.warematerialCode, + batchNo: item.batchNo, + purchaseNo: item.purchaseNo, + collectNo: item.collectNo, + deliveryNo: item.deliveryNo, + completeQuantity: item.quantity, + quantity: item.quantity + }) + }) + let params = { + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + orderNo: this.putCode, + wareContainerCode: this.warehouse.containerCode, + warehousOrderDetails: matatilDetails, + + } + add(params).then((res) => { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + if (res.code == 200) { + this.rest() + } + }) + } + }) + } + }, + + } +</script> + +<style lang=scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/putIn/empty/empty.vue b/LA24030_LuLiPackageLine_Pda/pages/putIn/empty/empty.vue new file mode 100644 index 0000000..a59c924 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/putIn/empty/empty.vue @@ -0,0 +1,153 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">绌烘墭鍏ュ簱</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <!-- <view class="text-bold width fontSize32rpx" style="padding: 10rpx 10rpx;background-color: #d6d6d6;" + v-if="renameFocus"> + <view class="flex justify-between align-center"> + <text class="width23 padding10">鍏ュ簱鍗曞彿</text> + <text>{{putCode}}</text> + </view> + </view> --> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="ContainerCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.ContainerCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="focu=true" + style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left30rpx"> + </input> + <u-icon name="close-circle-fill" color="#848484" v-if="warehouse.containerCode && focu" + @click="warehouse.containerCode=''"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx" @click="containerScane"></u-icon> + </u-col> + </u-row> + + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鏍呮牸鏁�:" prop="GridNumber" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.GridNumber" type="number" placeholder="璇峰綍鍏ユ爡鏍兼暟" required + style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left30rpx"> + </input> + </u-form-item> + </u-col> + </u-row> + + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鍏ュ簱鍙�:" prop="StorehouseCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.StorehouseCode" placeholder="璇峰綍鍏ユ垨鎵爜" required + style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left30rpx"> + </input> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx" @click="wareScane"></u-icon> + </u-col> + </u-row> + </u-form> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <button-modal :subShow='true' garmenTitle='纭鍏ュ簱' @submit='submit' /> + </view> +</template> + +<script> + import {getDate} from '../../../utils/dateTime.js' + import ModalCode from '../../../components/ModalCode.vue' + import ButtonModal from '../../../components/buttonModal.vue' + import {trayPutStorage} from '@/api/container/index.js' + export default { + data() { + return { + rescode: 0, + resmessage: "", + focu: false, + warehouse: { //鍏ュ簱璇锋眰鍙傛暟 + ContainerCode: '', + StorehouseCode: '', + GridNumber: '1' + }, + warehouseRules: { + ContainerCode: [{required: true,message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖',trigger: 'blur'}], + StorehouseCode: [{required: true,message: '鍏ュ簱鍙d笉鑳戒负绌�',trigger: 'blur'}], + GridNumber: [{required: true,message: '鏍呮牸鏁颁笉鑳戒负绌�',trigger: 'blur'}], + }, + operator: '', // + + }; + }, + components: { + ModalCode, + ButtonModal + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //鍑哄叆搴撳彛鎵弿 + wareScane() { + uni.scanCode({ + scanType: ['barCode','qrCode'], + autoDecodeCharset: true, + success:(res) => { + this.warehouseRules.StorehouseCode = res.result.trim() + }, + fail:(err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${JSON.stringify(err)}` + this.$refs.resmodal.show = true + } + }) + }, + //瀹瑰櫒鎵弿 + containerScane() { + uni.scanCode({ + scanType: ['barCode','qrCode'], + autoDecodeCharset: true, + success:(res) => { + this.warehouse.ContainerCode = res.result + }, + fail:(err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${JSON.stringify(err)}` + this.$refs.resmodal.show = true + } + }) + }, + submit() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + trayPutStorage(this.warehouse).then((res) => { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + this.$refs.warehouseRef.resetFields() + }) + } + }) + } + } + + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/putIn/material/material.vue b/LA24030_LuLiPackageLine_Pda/pages/putIn/material/material.vue new file mode 100644 index 0000000..1aca194 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/putIn/material/material.vue @@ -0,0 +1,377 @@ +<template> + <view class="overflow" style="padding-bottom:100px"> + <!-- 椤堕儴 --> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"></block> + <block slot="content">鐐瑰埌鐐�</block> + </cu-custom> + <!-- 鎿嶄綔浜� --> + <!-- <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> --> + <!-- 閬尅灞� --> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class=""> + <u-form labelPosition="left" :model="warehouse" label-width="260rpx" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item label="鏉ユ簮搴撲綅缂栧彿:" class="uFormItem"> + <u-input v-model.trim="warehouse.placeCode" placeholder="璇峰綍鍏ユ垨鎵爜" + @focus="warehouse.placeCode = ''" class="width padding_left25rpx" :focus="true" + @confirm="materialBlur(1)"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" class="uFormItem"> + <u-input v-model.trim="warehouse.containerCode" placeholder="璇峰綍鍏ユ垨鎵爜" + @focus="warehouse.containerCode = ''" class="width padding_left25rpx" + @confirm="materialBlur(2)"> + </u-input> + </u-form-item> + </u-col> + </u-row> + + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item required label="鐩爣搴撳尯/搴撲綅:" class="uFormItem"> + <u-input v-model.trim="placeCodeTrg" placeholder="璇峰綍鍏ユ垨鎵爜" + @focus="placeCodeTrg = ''" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <view v-for="(item, eindex) in singlist" :key="eindex" class="margin_top10rpx"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpredel" @open="open" @close="close" + :options="options"> + <view v-show="item.placeCode || item.containerCode" + class="fontSize32rpx background_fff padding10" :class="item.isYueku == '鏄�' ? 'bg_item' : ''" + style="width: 100vw"> + <u-row v-show="item.placeCode"> + <u-col span="12"> + <view class="Wb_box"> + <text class="el_batchNo padding_left25rpx"> + 鏉ユ簮搴撲綅锛� + </text> + <text class="el_batchVal"> + + {{ item.placeCode }} + </text> + </view> + </u-col> + </u-row> + <u-row v-show="item.placeCode"> + <u-col span="12"> + <view class="Wb_box"> + <text class="el_batchNo padding_left25rpx"> + 鏉ユ簮搴撲綅鏄惁铏氭嫙锛� + </text> + <text class="el_batchVal"> + {{ item.isVirtually ? "鏄�" : "鍚�" }} + </text> + </view> + </u-col> + </u-row> + <u-row v-show="item.containerCode"> + <u-col span="12"> + <view class="Wb_box"> + <text class="el_batchNo padding_left25rpx"> + 瀹瑰櫒缂栧彿锛� + </text> + <text class="el_batchVal"> + {{ item.containerCode }} + </text> + </view> + </u-col> + </u-row> + + <u-row v-show="item.placeCode || item.placeCode"> + <u-col span="12"> + <view class="Wb_box"> + <text class="el_batchNo padding_left25rpx"> + 鐩爣搴撲綅/搴撳尯锛� + </text> + <text class="el_batchVal"> + {{ placeCodeTrg }} + </text> + </view> + </u-col> + </u-row> + + </view> + </u-swipe-action> + </view> + + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='纭' @submit='submit' @reset='rest' /> + </view> + + </view> +</template> + +<script> +import ButtonModal from '@/components/buttonModal.vue' +import ModalCode from '@/components/ModalCode.vue' +import { getWmsContainerPage, handlePostToPost } from '@/api/hander/hander.js' +import { + getwmsPlace +} from '@/api/putIn/artificial.js' +export default { + data() { + return { + renameFocus: true, + detailshow: false, + rescode: 0, + autoFoucs: true, + resmessage: "", + current: 0, //婊戝潡榛樿鍊� + singlist: [ + { + placeCode: "", + isVirtually: "", + containerCode: "", + isVirtuallyTrg: "", + } + ], //鐗╂枡璇︽儏 + placeCodeTrg:"", + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + snCode: '' + }, + warehouseRules: { + snCode: [{ + required: true, + message: '鐗╂枡璺熻釜鐮佷笉鑳戒负绌�', + trigger: 'blur' + }] + }, + options: [] + }; + }, + components: { + ButtonModal, + ModalCode, + }, + onLoad() { + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //鐗╂枡鏌ヨ + materialBlur(pram) { + if (this.warehouse.placeCode == "" && this.warehouse.containerCode == "") { + this.resmessage = "璇锋壂鏉ユ簮搴撲綅缂栧彿鎴栬�呭鍣ㄧ紪鍙凤紒"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + return + } + + // 1 鏉ユ簮搴撲綅缂栧彿 + if (pram == 1 ) { + this.singlist[0].containerCode = "" + this.warehouse.containerCode ="" + getwmsPlace({ + PlaceCodeForpda: this.warehouse.placeCode, + page: 1, + pageSize: 1 + }).then((res) => { + if (res.code == 200) { + var arrList = res.result.items; + if (pram == 1) { //1 鏉ユ簮搴撲綅缂栧彿 + this.singlist[0].placeCode = ""; + this.singlist[0].isVirtually = ""; + } + if (arrList.length == 0) { + this.resmessage = "鏆傛棤鏁版嵁"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + if (Array.isArray(arrList) && arrList.length >= 1) { + if (arrList[0].isDisabled) { + this.resmessage = "搴撲綅琚鐢ㄤ簡"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + return + } + if (pram == 1) { //1 鏉ユ簮搴撲綅缂栧彿 + this.singlist[0].placeCode = arrList[0].placeCode; + this.singlist[0].isVirtually = arrList[0].isVirtually; + } + } else { + this.resmessage = "鏆傛棤鏁版嵁"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + + } + + // 瀹瑰櫒缂栧彿 + if (pram == 2) { + this.singlist[0].containerCode = "" + this.singlist[0].placeCode = ""; + this.singlist[0].isVirtually = ""; + this.warehouse.placeCode =""; + getWmsContainerPage({ + page: 1, + pageSize: 1, + containerCode: this.warehouse.containerCode + }).then((res) => { + if (res.code == 200) { + var arrList = res.result.items; + if (arrList.length == 0) { + this.resmessage = "鏆傛棤鏁版嵁"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + if (Array.isArray(arrList) && arrList.length >= 1) { + if (arrList[0].isDisabled) { + this.resmessage = "瀹瑰櫒琚鐢ㄤ簡"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + return + } + this.singlist[0].containerCode = arrList[0].containerCode; + } else { + this.resmessage = "鏆傛棤鏁版嵁"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + } + }); + } + + }, + + //鍒犻櫎璇︽儏 + longpredel(index, eindex) { + if (eindex == 0) { + uni.showModal({ + title: "鎻愮ず", + content: "鏄惁纭鍒犻櫎锛�", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + this.singlist.splice(index, 1) + } else if (res.cancel) { + } + }, + }); + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + }, + //鍗$墖閫変腑 + click(e) { + e.cardNum = true + this.$forceUpdate() + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + this.$forceUpdate() + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + + //纭 + submit() { + + if(!this.placeCodeTrg){ + uni.showToast({ + title: "璇锋壂鐮佸簱鍖�/搴撲綅", + icon: "none", + duration: 2000, + }); + } + if(!this.warehouse.placeCode && !this.warehouse.containerCode){ + uni.showToast({ + title: "璇锋壂鐮佹潵婧愬簱浣嶇紪鍙�/瀹瑰櫒缂栧彿", + icon: "none", + duration: 2000, + }); + } + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鐐瑰埌鐐癸紵', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + var param = { + "SourcePlaceCode":this.warehouse.placeCode, + "ContainerCode":this.warehouse.containerCode, + "ToPlaceCode":this.placeCodeTrg, + }; + handlePostToPost(param).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.resmessage = "鐐瑰埌鐐规垚鍔�" + this.renameFocus = true + this.rest() + } + }) + + } else if (res.cancel) { + + } + }) + }); + + }, + //娓呮閫変腑 + rest() { + this.warehouse.placeCode = ''; + this.warehouse.containerCode = ''; + this.placeCodeTrg = ''; + this.autoFoucs = true + this.singlist = [ + { + placeCode: "", + isVirtually: "", + containerCode: "", + isVirtuallyTrg: "", + } + ]; + } + } +} +</script> + +<style lang="scss"> +.title-wrap { + background-color: white; + margin-top: 10px; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/putIn/plane/plane.vue b/LA24030_LuLiPackageLine_Pda/pages/putIn/plane/plane.vue new file mode 100644 index 0000000..46f370c --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/putIn/plane/plane.vue @@ -0,0 +1,324 @@ +<template> + <view class="overflow" style="padding-bottom:20rpx"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">骞冲簱鍏ュ簱</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="搴撲綅缂栧彿:" prop="locationCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.locationCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="warehouse.locationCode = ''" + @blur="getLocationDetails" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left30rpx"> + </input> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鐗╂枡缂栧彿:" style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;;"> + <input v-model="warehouse.materialCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="warehouse.materialCode = ''" + @blur="getMaterialDetails" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left30rpx"> + </input> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view style="margin-bottom: 200rpx;"> + <view v-for="(item, eindex) in singlist" :key="item.code" style="width: 100vw;display: flex;"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" + @open="open" @close='close' :options="options" style="margin-bottom: 10rpx;width: 100vw;"> + <view class="title-wrap fontSize32rpx background_fff" :class="Number(item.quantity) > 0 ? 'bg_item' : '' " style="width: 100vw;"> + <u-row> + <u-col span="1"> + <text class="flex justify-center align-center" style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </text> + </u-col> + <u-col span="10"> + <text class="color_f18202"> + 鐗╂枡缂栧彿锛歿{item.wareMaterialCode}} + </text> + </u-col> + </u-row> + <u-row style="margin-top: 20rpx;"> + <u-col span="6"> + <text class="el_batchNo"> + 鎵规锛歿{item.barNo}} + </text> + </u-col> + <u-col span="6"> + <input class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" v-model="item.quantity" + type="number" @blur="changeNum(item)" :min="1" placeholder="璇疯緭鍏ュ叆搴撴暟閲�" /> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + </view> + <button-modal :subShow="true" garmenTitle="纭鍏ュ簱" :disabled="singlist.length == 0" @submit="submit" /> + + </view> +</template> + +<script> + import ButtonModal from '../../../components/buttonModal.vue' + import ModalCode from '../../../components/ModalCode.vue' + import {addEnterWare} from '../../../api/putIn/material.js' + import {getLocationDetail,entryConfirm} from '../../../api/putIn/plane.js' + import {getOrderNo} from '../../../api/putIn/artificial.js' + import {getDate} from '../../../utils/dateTime.js' + import {getAttrValue} from '../../../utils/tool.js' + export default { + data() { + return { + rescode: 0, + resmessage: "", + detailshow: false, + operator: '', + singlist: [], //鐗╂枡璇︽儏 + orderNo: '', //鍏ュ簱鍗曞彿 + options: [ + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + materlist: [], + warehouse: { + locationCode: '', + materialCode: '' + }, + warehouseRules: { + locationCode: [{required: true,message: '搴撲綅缂栧彿涓嶈兘涓虹┖',trigger: 'blur'}] + }, + barNo: '', //褰撳墠鎵弿鐨勭墿鏂欐爣绛捐幏鍙栧埌鐨勬壒娆� + }; + }, + components: { + ButtonModal, + ModalCode + }, + onLoad(options) { + this.type = options.type + }, + onReady(){ + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + // this.WarehousChangePort() + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + this.getOrderNo() + }, + methods: { + //鑾峰彇鍏ュ簱鍗曞彿 + getOrderNo() { + getOrderNo().then((res) => { + if (res.code == 200) { + this.orderNo = res.data + } else { + this.rescode = 400 + this.resmessage = `${res.code}:${res.message}` + this.$refs.resmodal.show = true + } + }) + }, + //楠岃瘉搴撲綅,鍒ゆ柇搴撲綅淇℃伅鏄惁瀛樺湪 + getLocationDetails() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + getLocationDetail(this.warehouse.locationCode).then((res) => { + if (res.data.rows.length == 0) { + this.rescode = 400 + this.resmessage = '姝ゅ簱浣嶄笉瀛樺湪' + this.$refs.resmodal.show = true + }else if(res.data.rows.length > 1){ + this.rescode = 400 + this.resmessage = '鏌ヨ鍑哄涓簱浣嶏紝璇峰綍鍏ュ畬鏁村簱浣嶇紪鍙�' + this.$refs.resmodal.show = true + } + }) + } + }) + }, + //鐗╂枡缂栧彿楠岃瘉 + getMaterialDetails() { + if(this.warehouse.materialCode == "") { + this.rescode = 400 + this.resmessage = '鐗╂枡缂栧彿涓嶈兘涓虹┖' + this.$refs.resmodal.show = true + return + } + + if(this.warehouse.materialCode.length > 50) { + this.rescode = 400 + this.resmessage = '鎵弿鐨勭墿鏂欐爣绛句笉姝g‘' + this.$refs.resmodal.show = true + return + } + + + //鎵规 + this.barNo = getAttrValue(this.warehouse.materialCode,'LOTNO'); + //鏁伴噺 + var quantity = getAttrValue(this.warehouse.materialCode,'QUANTITY'); + if(!quantity) { + // this.rescode = 400 + // this.resmessage = '鐗╂枡鏍囩涓病鏈夋暟閲忎俊鎭�' + // this.$refs.resmodal.show = true + // return + } + //鐗╂枡缂栧彿 + this.warehouse.materialCode = getAttrValue(this.warehouse.materialCode,'PARTSNUMBER'); + //鍒ゆ柇褰撳墠鐗╂枡 + 鎵规鏄惁瀛樺湪 + const count = this.singlist.findIndex(item =>item.wareMaterialCode == this.warehouse.materialCode); + if(count > -1) { + this.singlist.unshift(...this.singlist.splice(count,1)) + return; + } + + //娣诲姞鏁版嵁 + this.singlist.unshift({ + wareLocationCode: this.warehouse.locationCode, + wareMaterialCode: this.warehouse.materialCode, + barNo: this.barNo, + quantity: quantity, + show: false + }) + + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + this.singlist.splice(index, 1) + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + //鏀瑰彉鍏ュ簱鏁伴噺 + changeNum(val) { + if(val.quantity <= 0 || val.quantity == '') + { + this.rescode = 400 + this.resmessage = '鍏ュ簱鏁伴噺涓嶈兘涓虹┖鎴栬�呭皬浜庣瓑浜�0' + this.$refs.resmodal.show = true + } + + }, + //鍏抽棴鏃� + close(index) { + this.singlist[index].show = false; + }, + rest() { + this.warehouse.materialCode = '' + this.warehouse.locationCode = '' + this.barNo = ""; + this.singlist = [] + }, + //纭 + submit() { + if(this.orderNo == '') { + this.rescode = 400 + this.resmessage = '鐢熸垚鍏ュ簱鍗曞彿澶辫触' + this.$refs.resmodal.show = true + return; + } + //鍒ゆ柇鏉愭枡鍒楄〃涓槸鍚﹀瓨鍦ㄥ叆搴撴暟閲忎笉绗﹀悎瑕佹眰鐨� + const index = this.singlist.findIndex(item =>item.quantity <= 0 || item.quantity == ""); + if(index >= 0) { + this.rescode = 400 + this.resmessage = '鏉愭枡鍒楄〃涓瓨鍦ㄥ叆搴撴暟閲忎负绌烘垨鑰呭皬浜庣瓑浜�0' + this.$refs.resmodal.show = true + return; + } + //鏉愭枡鍒楄〃 + //alert(this.singlist.length); + // let materialList = this.singlist.reduce((curr,item) => { + // curr.push({ + // createdTime: getDate(), + // updatedTime: getDate(), + // createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + // createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + // updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + // updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + // wareMaterialCode: item.wareMaterialCode, + // batchNo:item.barNo, + // completeQuantity: item.quantity, + // quantity: item.quantity + // }) + // },[]) + let materialList = [] + this.singlist.forEach(item => { + materialList.push({ + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + wareMaterialCode: item.wareMaterialCode, + batchNo: item.barNo, + purchaseNo: item.purchaseNo, + collectNo: item.collectNo, + deliveryNo: item.deliveryNo, + completeQuantity: item.quantity, + quantity: item.quantity + }) + }) + //alert(this.materialList.length); + //alert(materialList); + ////debugger + let params = { + createdTime: getDate(), + updatedTime: this.Datetime, + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + orderNo: this.orderNo, + wareLocationCode: this.warehouse.locationCode, + warehousOrderDetails: materialList + } + if(this.warehouse.locationCode != ""){ + entryConfirm(params).then((res) => { + this.orderNo = ''; + this.$refs.resmodal.show = true + this.resmessage = "鍏ュ簱鎴愬姛" + this.rescode = 200 + this.rest(); + }) + } + } + }, + + } +</script> + +<style lang="scss" scoped> +.el_batchNo { + padding: 10rpx 0 10rpx 45rpx; + color: #808080; +} +.bg_item { + background: #FFEBCD !important; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/putIn/putIn.vue b/LA24030_LuLiPackageLine_Pda/pages/putIn/putIn.vue new file mode 100644 index 0000000..439847d --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/putIn/putIn.vue @@ -0,0 +1,66 @@ +<template> + <view class=""> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鍏ュ簱鎿嶄綔</block> + </cu-custom> + <scroll-view scroll-y="true" style="height: 100vh;"> + <view class="margin_top40rpx text_align_center" v-for="(item,index) in list" :key='index'> + <view class="little_card fontSize36rpx" @click="skip(item,index)" :class="active==index?'active':''"> + {{item.name}} + </view> + </view> + </scroll-view> + </view> +</template> + +<script> + export default { + data() { + return { + active: null, + type:'', + list: [ + // { + // name: '浜哄伐缁勭洏', + // pages: 'artificial' + // }, + // { + // name: '瀹瑰櫒瑙g粦', + // pages: 'untie' + // }, + { + name: '绔嬪簱鍏ュ簱', + pages: 'three' + }, { + name: '骞冲簱鍏ュ簱', + pages: 'plane' + }, { + name: '鐗╂枡鍏ュ簱', + pages: 'material' + } + ] + } + }, + onLoad(options) { + this.type = options.type + }, + methods: { + skip(item, index) { + this.active = index + if (item.pages) { + setTimeout(() => { + uni.navigateTo({ + url: `./${item.pages}/${item.pages}?type=${this.type}` + }) + }, 100) + } + } + } + } +</script> + +<style> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/putIn/three/three.vue b/LA24030_LuLiPackageLine_Pda/pages/putIn/three/three.vue new file mode 100644 index 0000000..5d4909c --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/putIn/three/three.vue @@ -0,0 +1,243 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鍏ュ簱</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="wareContainerCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.wareContainerCode" placeholder="璇峰綍鍏ユ垨鎵爜" + @confirm="getWarehouseMaterial" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left30rpx"> + </u-input> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="搴撲綅缂栧彿:" prop="wareLocationCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.wareLocationCode" placeholder="璇峰綍鍏ユ垨鎵爜" required style="font-weight: bolder;margin-left: 15rpx;" class="width padding_left30rpx"> + </u-input> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view style="margin-bottom: 180rpx;margin-top: 15rpx;" v-show="singlist.length > 0"> + <view v-for="(item, eindex) in singlist" :key="eindex" style="width: 100vw;display: flex;"> + <u-swipe-action :show="item.show" :index="eindex" + @click="longpress" @open="open" :options="options" style="margin-bottom: 10rpx;width: 100vw;"> + <view class="title-wrap fontSize32rpx background_fff"> + <u-row class="padding15"> + <u-col span="1"> + <text class="flex justify-center align-center" style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </text> + </u-col> + <u-col span="10"> + <text class="color_f18202">{{item.code}}</text> + </u-col> + </u-row> + <u-row class="padding15"> + <u-col span="8" class="" style="text-align: center;"> + 鎵规锛歿{item.batchNo}} + </u-col> + <u-col span="4" class="color_f18202" style="text-align: right;"> + 鍏ュ簱鏁伴噺锛歿{item.quantity}} + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + </view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.code}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.name}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡绫诲瀷</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏉$爜</text> + <text>{{materlist.barCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍏ュ簱鏁伴噺</text> + <text>{{materlist.quantity}}</text> + </view> + </view> + </u-popup> + <button-modal :subShow='true' garmenTitle='纭鍏ュ簱' @submit='submit' /> + </view> +</template> + +<script> + import ButtonModal from '../../../components/buttonModal.vue' + import ModalCode from '../../../components/ModalCode.vue' + import {getWarehouseMaterial,addWarehouseEstablishment} from '../../../api/putIn/three.js' + + export default { + data() { + return { + rescode: 0, + resmessage: "", + detailshow: false, + singlist: [], //鐗╂枡璇︽儏 + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }], + materlist: {}, + warehouse: { + wareContainerCode: '', + orderNo: '', + wareLocationCode: '' + }, + warehouseRules: { + wareContainerCode: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }], + wareLocationCode:[{ + required: true, + message: '搴撲綅缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + operator: '' + }; + }, + components: { + ButtonModal, + ModalCode + }, + onLoad(option){ + if(option.containerCode) { + this.warehouse.wareContainerCode = option.containerCode + } + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //缁勭洏璁板綍 + getWarehouseMaterial() { + if (this.warehouse.wareContainerCode !== '') { + getWarehouseMaterial(this.warehouse.wareContainerCode).then((res) => { + if (res.code == 200) { + if (res.data.length == 0) { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + this.singlist=[] + return + } + this.singlist = res.data + this.warehouse.orderNo = res.data[0].id + } else { + this.$refs.resmodal.show = true + this.resmessage = res.message + this.rescode = res.code + } + }) + } + }, + //璇︽儏 + longpress(index, eindex) { + this.materlist = this.singlist[index] + this.detailshow = true + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + //纭 + submit() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + if(this.warehouse.orderNo == '') { + this.$refs.resmodal.show = true + this.rescode = 400 + this.resmessage = '缁勭洏id鑾峰彇澶辫触' + return + } + addWarehouseEstablishment(this.warehouse).then((res) => { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + if (res.code == 200) { + this.singlist = [] + this.warehouse.wareContainerCode = '' + this.warehouse.wareLocationCode = '' + this.warehouse.orderNo = '' + } + }) + } + }) + } + } + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/putIn/untie/untie.vue b/LA24030_LuLiPackageLine_Pda/pages/putIn/untie/untie.vue new file mode 100644 index 0000000..dac456a --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/putIn/untie/untie.vue @@ -0,0 +1,392 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">瀹瑰櫒瑙g粦</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <view v-if="renameFocus" class="text-bold width fontSize32rpx" + style="padding: 10rpx 10rpx;background-color: #d6d6d6;"> + <view class="flex justify-between align-center"> + <text class="width23 padding10">鍏ュ簱鍗曞彿</text> + <text>{{putCode}}</text> + </view> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.containerCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="focu=true" + @blur="getUnboundMaterial" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left30rpx"> + </input> + <u-icon name="close-circle-fill" color="#848484" v-if="warehouse.containerCode && focu" + @click="warehouse.containerCode=''"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10" class=""> + <u-form-item label="鐗╂枡缂栧彿:" prop="materialCode" + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <!-- <view class="fontSize32rpx font_weight_bold" style="padding: 0 0 10rpx;"> + 鐗╂枡缂栧彿: + </view> + <view class="flex"> --> + <input v-model="warehouse.materialCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="focuM=true" + @blur="getUnboundMaterial" style="font-weight: 800;margin:15rpx;" + class="width padding_left30rpx fontSize32rpx"> + </input> + <u-icon name="close-circle-fill" color="#848484" v-if="warehouse.materialCode && focuM" + @click="warehouse.materialCode=''"></u-icon> + <!-- </view> --> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" /> + <view v-if="singlist.length>0" :style="'height:calc(100vh - '+(CustomBar+155)+'px'"> + <view class="margin_top10rpx overflow_auto" style="height:calc(100% - 225rpx)"> + <scroll-view scroll-y="true"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpress" @open="open" :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :key="eindex+'singlist'" :class="item.edit?'clickactive':''" + class="fontSize32rpx width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + {{item.code}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 鍚嶇О锛歿{item.name}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <input disabled="" + class="border_bottom_f18202 width45 fontSize32rpx text-left" + style="margin:10rpx 0 10rpx 45rpx;" v-model="item.unit" + @blur="changeNum(item)" placeholder="鍗曚綅"/> + </u-col> + <u-col span="5"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.unquantity" type="number" @blur="changeNum(item)" + placeholder="璇疯緭鍏ヨВ缁戞暟閲�"/> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </scroll-view> + </view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">瀹瑰櫒缂栧彿</text> + <text>{{warehouse.containerCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.code}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.name}}</text> + </view> + <!-- <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡绫诲瀷</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> --> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏉$爜</text> + <text>{{materlist.barCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎬绘暟</text> + <text>{{materlist.quantity}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + </view> + </u-popup> + </view> + <button-modal :cleaningShow='true' allTitle="鍏ㄩ儴瑙g粦" cleaningTitle='纭瑙g粦' @submit='submit' + @allsubmit="allsubmit" /> + + </view> +</template> + +<script> + import ButtonModal from '../../../components/buttonModal.vue' + import ModalCode from '../../../components/ModalCode.vue' + import { + getUnboundMaterial, + updateunbound + } from '../../../api/putIn/untie.js' + export default { + data() { + return { + renameFocus: false, + modalshow: false, + show: false, + rescode: 0, + resmessage: "", + detailshow: false, + operator: '', //鎿嶄綔浜� + focu: false, + focuM: false, + singlist: [ + // { + // "warematerialCode": "string", + // "collectNo": "string", + // "purchaseNo": "string", + // "category": "string", + // "wareMaterialTypeName": "string", + // "specificationModel": "string", + // "long": "string", + // "width": "string", + // "high": "string", + // "weight": "string", + // "barCode": "string", + // "company": "string", + // "uncollectedQuantity": 0, + // "id": 0 + // } + ], //鐗╂枡璇︽儏 + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }], + materlist: [], + warehouse: { + containerCode: '', + materialCode: '' + }, + warehouseRules: { + containerCode: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }], + // materialCode: [{ + // required: true, + // message: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + // trigger: 'blur' + // }] + }, + putCode: '' + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + // this.WarehousChangePort() + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + // this.getOrderNo() + }, + methods: { + //鍏ュ簱鍗曞彿 + // getOrderNo() { + // getOrderNo().then((res) => { + // if (res.code == 200) { + // this.putCode = res.data + // } else { + // this.$refs.resmodal.show = true + // } + // }) + // }, + //鏌ヨ鐗╂枡 + getUnboundMaterial() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focu = false + this.focuM = false + if (this.warehouse.containerCode !== '' || this.warehouse.materialCode !== + '') { + let params = { + wareContainerCode: this.warehouse.containerCode, + materialCode: this.warehouse.materialCode + } + getUnboundMaterial(params).then((res) => { + if (res.code == 200) { + if (res.data.length == 0) { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + this.singlist = [] + } else { + this.singlist = res.data + this.putCode = res.data[0].orderNo + this.renameFocus = true + } + } else { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + } + }) + } + }, 200) + } + }) + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + this.materlist = this.singlist[index] + this.detailshow = true + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + if (val.unquantity && val.unquantity > 0) { + val.edit = true + this.$forceUpdate() + } else { + val.edit = false + this.$forceUpdate() + } + + }, + //鍏ㄩ儴瑙g粦 + allsubmit() { + let arr = this.singlist.filter(item => item.edit) + if (arr.length == this.singlist.length) { + this.submit() + } else { + this.rescode = 400 + this.resmessage = '璇峰~鍐欐墍鏈夎В缁戞暟閲�' + this.$refs.resmodal.show = true + } + }, + //閲嶇疆 + rest() { + this.warehouse.containerCode = '' + this.warehouse.materialCode = '' + this.renameFocus = false + this.singlist = [] + }, + //纭 + submit() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + if (this.singlist.length == 0) { + return + } + let arr = this.singlist.filter(item => item.edit) + if (arr.length == 0 && this.singlist.length !== 0) { + this.rescode = 400 + this.resmessage = '璇峰~鍐欒В缁戞暟閲�' + this.$refs.resmodal.show = true + return + } + let unboundMatatils = [] + let subshow = true + arr.forEach(item => { + if (item.quantity - item.unquantity < 0) { + this.rescode = 400 + this.resmessage = '瑙g粦鏁伴噺涓嶈兘澶т簬鍘熸暟閲�' + this.$refs.resmodal.show = true + subshow = false + return + } + unboundMatatils.push({ + collectNo: item.collectNo, + batchNo: item.batchNo, + id: item.id, + materialCode: item.wareMaterialCode, + quantity: item.quantity, + updateQuantity: item.quantity - item.unquantity + + }) + }) + if (subshow) { + let params = { + wareContainerCode: this.warehouse.containerCode, + ordersNo: this.putCode, + unboundMatatils: unboundMatatils + } + updateunbound(params).then((res) => { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + if (res.code == 200) { + this.rest() + } + }) + } + + } + }) + } + }, + + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/putOut/putOut.vue b/LA24030_LuLiPackageLine_Pda/pages/putOut/putOut.vue new file mode 100644 index 0000000..eaa8cbc --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/putOut/putOut.vue @@ -0,0 +1,70 @@ +<template> + <view class=""> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鍑哄簱鎿嶄綔</block> + </cu-custom> + <scroll-view scroll-y="true" style="height: 100vh;"> + <view class="margin_top40rpx text_align_center" v-for="(item,index) in list" :key='index'> + <view class="little_card fontSize36rpx" @click="skip(item,index)" :class="active==index?'active':''"> + {{item.name}} + </view> + </view> + </scroll-view> + </view> +</template> + +<script> + export default { + data() { + return { + active: null, + type:'', + list: [ + { + name: '鍙栬揣鍗曞嚭搴�', + pages: 'artificial' + }, + { + name: '鐗╂枡鍒嗘嫞', + pages: 'untie' + }, + { + name: '浣欐枡鍥炲簱', + pages: 'three' + }, { + name: '骞冲簱鍑哄簱', + pages: 'plane' + }, { + name: '鐗╂枡鍑哄簱', + pages: 'material' + }, + { + name: '绌烘墭鍥炲簱', + pages: 'material' + } + ] + } + }, + onLoad(options) { + this.type = options.type + }, + methods: { + skip(item, index) { + this.active = index + if (item.pages) { + setTimeout(() => { + uni.navigateTo({ + url: `./${item.pages}/${item.pages}?type=${this.type}` + }) + }, 100) + } + } + } + } +</script> + +<style> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/putaway/putaway.vue b/LA24030_LuLiPackageLine_Pda/pages/putaway/putaway.vue new file mode 100644 index 0000000..33b41be --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/putaway/putaway.vue @@ -0,0 +1,665 @@ +<template> + <view style="padding-bottom:100px"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content"> + <span v-if="this.warehouse.actionType == 3005">鐩樼偣</span> + <span v-if="this.warehouse.actionType == 3003">瀹瑰櫒</span> + 涓婃灦 + </block> + </cu-custom> + <u-form labelPosition="left" label-width="160rpx" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" required class="uFormItem"> + <u-input :focus="curFoucus" v-model.trim="warehouse.containerCode" @confirm="getMaterialDetails(1)" + placeholder="璇锋壂鐮佸綍鍏�" :disabled="kwbhAllowed" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item label="鐩爣搴撳尯:" prop="areaCode" required class="uFormItem"> + <input v-model="warehouse.areaCode" type="select" placeholder="璇烽�夋嫨鐩爣搴撳尯" @focus="containerFocus" + class="width"></input> + <u-action-sheet :list="wolist" v-model="modalshow" @click="confirmXl"></u-action-sheet> + + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鐩爣搴撲綅:" prop="placeCode" class="uFormItem"> + <u-input v-model="warehouse.placeCode" placeholder="璇锋壂鐮佸綍鍏�" + style="font-weight: bolder;margin-left: 15rpx;" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="containerFocus2"> + <span class="fontSize15rpx">鎺ㄨ崘</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + <view class="boxList" v-show="modalshow2" @click="modalshow2 = false" @touchmove.stop> + <view class="innerWrap"> + <ul v-for="(item, eindex) in containerList" :key="eindex"> + <li @click="confirm2(eindex)"> {{ item.text }}</li> + </ul> + </view> + </view> + </u-row> + <!-- <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鍏ュ簱鍙�:" prop="storehouseCode" class="uFormItem"> + <u-input v-model.trim="warehouse.storehouseCode" placeholder="璇锋壂鐮佸綍鍏�" :disabled="kwbhAllowed" + style="font-weight: bolder;margin-left: 15rpx;" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> --> + + + </u-form> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" /> + <view style="margin-bottom: 200rpx;" class="margin_top10rpx"> + <view v-for="(item, eindex) in singlist" :key="eindex" class="margin_bottom10rpx"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" @open="open" @close='close' + :options="options" style="width: 100vw;"> + <view class="title-wrap fontSize32rpx background_fff padding10" + :class="item.enAbled == 0 ? 'bg_item' : ''"> + <u-row> + <u-col span="12" class="flex"> + <text class="flex justify-center align-center circkle06">{{ eindex + 1 }}</text> + <text class="color_f18202 padding_left10rpx"> + {{ item.materialCode }}-{{ item.materialName }} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <text class="color_80 padding_left25rpx"> + 璺熻釜鐮侊細{{ item.snCode }} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="7"> + <text class="color_80 padding_left25rpx"> + 搴撳瓨鐘舵�侊細{{ item.stockStatusName }} + </text> + </u-col> + <u-col span="5"> + <text class="color_f18202"> + 鏁伴噺锛歿{ item.quantity }} + </text> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + </view> + <button-modal :cleaningShow='true' allTitle='閲嶇疆' cleaningTitle='涓婃灦' @allsubmit="reset" @submit='submit' /> + </view> +</template> +<script> +import ButtonModal from '../../components/buttonModal.vue' +import ModalCode from '../../components/ModalCode.vue' +import { + getRecommendList, + getareaTypesList +} from '../../api/putIn/artificial.js' +import { + getPutawayStockQuan, + putawayConfirm +} from '../../api/putaway/putaway.js' +import { + getDate +} from '../../utils/dateTime.js' +import { + getAttrValue +} from '../../utils/tool.js' +import { + getArea +} from '../../api/sort.js' +export default { + data() { + return { + modalshow2: false, + containerList: [], + curFoucus: true, + rescode: 0, + resmessage: "", + putCode: '', //瀹瑰櫒浜岀淮鐮� + detailshow: false, + operator: '', + focu: false, //娓呯┖鎸夐挳闅愭樉 + focuM: false, //鐗╂枡闅愭樉鎸夐挳 + Datetime: getDate(), + singlist: [], //鐗╂枡璇︽儏 + wolist: [], + options: [ + // { + // text: '璇︽儏', + // style: { + // backgroundColor: '#fc9f35' + // } + // } + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + materlist: {}, + warehouse: { + actionType: 3015, //涓婃灦 + containerCode: '', + materialCode: '', + snCode: "", + storehouseCode: "", + placeCode: '', + areaCode: '', + + }, + modalshow: false, + gridable: true, + gridFocus: false, + detailable: false, + detailableZb: false, + batchNo: '', //鎵爜鍒扮殑褰撳墠鐗╂枡鐨勬壒娆� + warehouseRules: { + containerCode: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }], + areaCode: [{ + required: true, + message: '鐩爣搴撳尯涓嶈兘涓虹┖', + trigger: 'blur' + }], + // placeCode: [{ + // required: true, + // message: '鐩爣搴撲綅涓嶈兘涓虹┖', + // trigger: 'blur' + // }] + }, + orderType: 1, + warhouseTph: '', + timerPrint: null, + kwbhAllowed: false, //鏄惁绂佺敤搴撲綅缂栧彿 + arrD: [], + statusTp: { + 'tpStatus': '' + } + }; + }, + components: { + ButtonModal, + ModalCode + }, + onLoad(option) { + if (option) { + if (option.containerCode) { + this.warehouse.containerCode = option.containerCode; + } + if (option.actionType) { + if (option.actionType == 3) { //瀹瑰櫒涓婃灦 BusinessTypeEnum + this.warehouse.actionType = 3003; + } + if (option.actionType == 4) { //鐩樼偣涓婃灦 BusinessTypeEnum + this.warehouse.actionType = 3005; + } + } + } + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + this.getVehicleType(); + }, + computed: { + containerCode() { + return this.warehouse.containerCode + } + }, + watch: { + containerCode(val) { + if (!val) { + this.detailable = false; + this.detailableZb = false; + this.warehouse.exitNumber = 0 + } + }, + singlist(val) { + this.warehouse.exitNumber = val.length + } + }, + methods: { + getVehicleType() { + getareaTypesList().then((res) => { + // if (res.data.rows.length == 0) { + // this.rescode = 400 + // this.resmessage = '鏆傛棤鏁版嵁' + // this.$refs.resmodal.show = true + // return + // } + var arr = res.result.items; + arr.map(item => { + item.text = item.areaCode; + return item; + }) + this.wolist = arr + }) + }, + //瀹瑰櫒绫诲瀷鑱氱劍浜嬩欢 + containerFocus() { + uni.hideKeyboard() + this.modalshow = true + }, + gridBtnClick() { + this.gridable = !this.gridable + if (!this.gridable) { + this.$nextTick(() => { + this.gridFocus = true; + }) + } else { + this.$nextTick(() => { + this.gridFocus = false; + }) + } + }, + //瀹瑰櫒缂栧彿鐐瑰嚮 + containerClick() { + uni.scanCode({ + scanType: ['barCode', 'qrCode'], + autoDecodeCharset: true, + success: (res) => { + this.warehouse.containerCode = res.result + this.containerBlur() + }, + fail: (err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${err}` + this.$refs.resmodal.show = true + } + }) + }, + //瀹瑰櫒澶辩劍浜嬩欢 + containerBlur() { + Promise.all([this.getContainerRecord(), this.getContainerData()]) + }, + //鑾峰彇褰撳墠瀹瑰櫒涓嬬粍鐩樿褰� + getContainerRecord() { + this.kwbhAllowed = false + //姣忔鏌ヨ缃┖鏉愭枡鍒楄〃 + this.singlist = []; + if (this.warehouse.containerCode == '') { + return + } + getContainerRecord({ + containerCode: this.warehouse.containerCode + }).then(res => { + if (res.code == 200) { + this.kwbhAllowed = true + if (Array.isArray(res.data) && res.data.length > 0) { + if (res.data[0].orderNo) { + this.putCode = res.data[0].orderNo; + } + this.warehouse.dutyCycle = res.data[0].dutyCycle; //搴撳瓨鍗犳瘮 銆怑ditby shaocx,2023-05-22銆� + const recordArr = res.data.reduce((curr, item) => { + curr.push({ + code: item.materialCode, + batchNo: item.batchNo, + quantityNow: item.quantity, + quantity: item.quantity, + materialName: item.materialName, + materialTypeName: item.materialTypeName, + specificationModel: item.specificationModel, + id: '', + unionCode: item.unionCode, + replaceMaterialCode: item.replaceMaterialCode, + stockFlagStatus: item.stockFlagStatus, + show: false, + enAbled: 1 //鎺у埗鏁伴噺鏄惁鍙互杈撳叆 + }) + return curr + }, []) + this.singlist.push(...recordArr) + } + } else { + this.kwbhAllowed = false + } + + }) + + }, + //鑾峰彇瀹瑰櫒鐨勪俊鎭� + getContainerData() { + getContainDetail(this.warehouse.containerCode).then(res => { + const result = res.data.rows; + if (Array.isArray(result) && result.length == 1) { + // 铏氭嫙3涓兘涓嶆樉绀猴紱鏂欑锛氭樉绀烘爡鏍硷紱閽㈡墭锛氫笉鏄剧ず绌洪棿鍗犳瘮 + if (res.data.rows[0].isVirtual == 0) { //瀹炵墿 + if (res.data.rows[0].wareContainerType == '299120688255045' || res.data.rows[0] + .wareContainerType == '293486279884869') { // 閽㈠埗瀹瑰櫒 濉戞枡瀹瑰櫒 -鏄剧ず鍗犳瘮 + this.detailableZb = true; + this.detailable = false; + } else { //鏂欑 - 鏄剧ず鏍呮牸鏁� + this.detailableZb = false; + this.detailable = true; + } + } else { + this.detailable = false; + this.detailableZb = false; + } + this.warehouse.gridNumber = res.data.rows[0].gridNumber; + this.warehouse.useNumber = res.data.rows[0].useNumber; + } else { + uni.showToast({ + title: '搴撲綅涓嶅瓨鍦�', + icon: 'none', + duration: 2000 + }); + this.kwbhAllowed = false + } + + }) + }, + //妫�鏌ュ鍣ㄦ爡鏍兼暟 + checkGrid() { + // if(parseInt(this.warehouse.gridNumber) < parseInt(this.warehouse.useNumber) + parseInt(this.warehouse.exitNumber)) { + // this.rescode = 400 + // this.resmessage = '鏍呮牸鎬绘暟涓嶈兘灏忎簬宸茬敤鏁伴噺鍔犱笂鏈鍗犵敤鏁伴噺' + // this.$refs.resmodal.show = true + // } + }, + //妫�鏌ユ湰鍦颁娇鐢ㄦ暟 + checkExit() { + if (parseInt(this.warehouse.exitNumber) > parseInt(this.warehouse.gridNumber)) { + this.rescode = 400 + this.resmessage = '鏈鍗犵敤鏁伴噺涓嶈兘澶т簬鏍呮牸鎬绘暟' + this.$refs.resmodal.show = true + } + }, + //鐗╂枡缂栫爜鐐瑰嚮 + materialClick() { + uni.scanCode({ + scanType: ['barCode', 'qrCode'], + autoDecodeCharset: true, + success: (res) => { + this.warehouse.materialCode = getAttrValue(res.result, 'PARTSNUMBER') + this.batchNo = getAttrValue(res.result, 'LOTNO') + this.getMaterialDetails() + }, + fail: (err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${err}` + this.$refs.resmodal.show = true + } + }) + }, + getMaterialDetails(pram) { + if (!this.warehouse.containerCode) { + uni.showToast({ + title: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + icon: 'none', + duration: 2000 + }) + return + } + // 鏇存崲浜嗗鍣ㄧ紪鍙� + this.singlist = []; + getPutawayStockQuan({ + 'containerCode': this.warehouse.containerCode, + 'SNCode': this.warehouse.snCode + }).then((res) => { + if (res.code == 200) { + if (res.result == null) { + this.rescode = 400 + this.resmessage = '鏌ユ棤鏁版嵁' + this.$refs.resmodal.show = true + return + } else { + if (res.result.details.length == 0) { + console.log("绌烘墭") + return + } else { + console.log("鏈夋枡") + // if (res.result.placeCode) { + // this.warehouse.placeCode = res.result.placeCode; + // } + this.singlist = res.result.details; + } + } + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + + } + }) + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鍒犻櫎锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + this.singlist[index].cardNum = true + if (eindex == 0) { //鍒犻櫎 + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + } else if (res.cancel) { + + } + }) + }); + }, + //缂栬緫鐘舵�佹牱寮� + dc(e) { + e.cardNum = true + this.$forceUpdate() + }, + //鍗$墖閫変腑 + clicki(e) { + e.cardNum = true + this.$forceUpdate() + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.$forceUpdate() + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + + //鍏ㄩ儴鍙栨秷 + reset() { + this.singlist = []; + this.warehouse.containerCode = '' + this.warehouse.snCode = '' + this.warehouse.areaCode = '' + this.warehouse.placeCode = '' + this.$refs.warehouseRef.resetFields(); + this.$forceUpdate() + this.kwbhAllowed = false + }, + //閲嶇疆椤甸潰淇℃伅 + rest() { + this.reset() + }, + //纭 + submit() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + this.$refs.warehouseRef.validate(valid => { + if (valid) { + + let arrN1 = this.singlist.findIndex((v) => v.quantity == '' || v.quantity <= 0) + if (arrN1 > -1) { + //鏆傛椂娉ㄩ噴璇ラ獙璇� 銆怑ditby shaocx,2024-07-28銆� + /* + uni.showToast({ + title: '鐗╂枡搴撳瓨鏁伴噺闇�瑕佸ぇ浜�0', + icon: 'none', + duration: 2000 + }); + return + //*/ + } + + //璇锋眰鍙傛暟 + let params = { + ActionType: this.warehouse.actionType, //涓婃灦 + ContainerCode: this.warehouse.containerCode, + StorehouseCode: this.warehouse.storehouseCode, + PlaceCode: this.warehouse.placeCode, + AreaCode: this.warehouse.areaCode, + } + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭涓婃灦锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + putawayConfirm(params).then(res => { + this.warhouseTph = this.warehouse.containerCode; + this.rescode = res.code; + this.resmessage = res.message || '涓婃灦鎴愬姛锛�'; + this.$refs.resmodal.show = true; + this.rest(); + }) + } else if (res.cancel) { + + } + }) + }); + } + }) + }, + + confirmXl(index) { + this.warehouse.areaCode = this.wolist[index].areaCode; + // this.warehouse.ContainerTypeCode = this.wolist[index].id; + }, + filterMark(stockFlagStatus) { + let str = '' + let arr4 = this.arrD.filter(v => v.value == stockFlagStatus) + if (arr4.length > 0) { + str = arr4[0].title + } + return str + }, + //------鑾峰彇鎺ㄨ崘 + containerFocus2() { + // //debugger + // if(!this.warehouse.areaCode){ + // uni.showToast({ + // title: '璇烽�夋嫨鐩爣搴撳尯锛�', + // icon: 'none', + // duration: 2000 + // }); + // return + // } + getRecommendList({ + 'containerCode': this.warehouse.containerCode, + 'areaCode': this.warehouse.areaCode + }).then(res => { + this.modalshow2 = true; + this.containerList = res.result.reduce((curr, item) => { + curr.push({ + text: item.placeCode, + }) + return curr; + }, []) + }) + }, + //------鑾峰彇鎺ㄨ崘绫诲瀷閫夋嫨 + confirm2(index) { + this.warehouse.placeCode = this.containerList[index].text; + }, + } +} +</script> +<style lang="scss" scoped> +.bg_item { + background: #FFEBCD !important; +} + +.inputGray2 { + line-height: 30px; + border-top: 10rpx solid transparent; +} + +.inputGray { + border-top: 0rpx solid transparent; + +} + + + +.boxList { + transition: all ease 2s; + position: fixed; + bottom: 0; + left: 0; + top: 0; + right: 0; + width: 100%; + height: 100%; + z-index: 999; + background: rgba(0, 0, 0, 0.6); + + .innerWrap { + max-height: 50%; + overflow-y: auto; + background: white; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + + ul { + padding: 0; + margin: 0; + + li { + padding: 0; + margin: 0; + border-bottom: 1px solid #e4e7ed; + list-style-type: none; + display: flex; + flex-direction: row; + line-height: 1; + justify-content: center; + align-items: center; + font-size: 13px; + padding: 14px 0; + flex-direction: column; + } + } + } + +} +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/receive/receive.vue b/LA24030_LuLiPackageLine_Pda/pages/receive/receive.vue new file mode 100644 index 0000000..7bb470d --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/receive/receive.vue @@ -0,0 +1,468 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鍊熺敤褰掕繕</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <!-- <view class="text-bold width fontSize32rpx"> + <view class="flex justify-between align-center" style="padding: 10rpx 10rpx;background-color: #d6d6d6;"> + <text class="width23 padding10">鍊熺敤浜�</text> + <text>{{borrower}}</text> + </view> + <view class="flex justify-between align-center margin_top10rpx" style="padding: 10rpx 10rpx;background-color: #d6d6d6;"> + <text class="width23 padding10">鍊熺敤鍗曞彿</text> + <text>{{borrowNo}}</text> + </view> + </view> --> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鍊熺敤浜�:" prop="containerCode" required + style="font-size: 16px;font-weight: bold;padding: 0;"> + <input v-model="warehouse.containerCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="focu=true" + @blur="getContainerDetails" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </input> + <u-icon name="close-circle-fill" color="#848484" v-if="warehouse.containerCode && focu" + @click="warehouse.containerCode=''"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鍊熺敤鍗曞彿:" prop="materialCode" required + style="font-size: 16px;font-weight: bold;padding: 0;"> + <text class="padding_left30rpx fontSize36rpx" :class="warehouse.materialCode?'':'text-80'" + style="font-weight: bolder;">{{warehouse.materialCode?warehouse.materialCode:'璇烽�夋嫨鍊熺敤鍗曞彿'}}</text> + <u-select v-model="modalshow" :list="wolist" @confirm="confirm"></u-select> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon name="arrow-down" class="padding_left30rpx" @tap="openOrder"></u-icon> + </u-col> + </u-row> + </u-form> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" /> + <view v-if="singlist.length>0" :style="'height:calc(100vh - '+(CustomBar+155)+'px'"> + <view class="margin_top10rpx overflow_auto" style="height:calc(100% - 265rpx)"> + <scroll-view scroll-y="true"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpress" @open="open" @close='close' :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :key="eindex+'singlist'" + :class="item.cardNum?'bd-ffe6c9':item.edit?'clickactive':''" + class="fontSize32rpx width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex align-center"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + {{item.orderNo}} ({{item.wareMaterialCode}}) + <text class="color_666666 padding_left10rpx" v-if="item.barNo"> - + 鎵规锛歿{item.barNo}}</text> + </view> + </u-col> + </u-row> + <u-row> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 澶х被锛歿{item.wareMaterialSubTypeName}} + </view> + </u-col> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 灏忕被锛歿{item.wareMaterialName}} + </view> + </u-col> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 鍊熺敤鏁帮細{{item.quantity}} + </view> + </u-col> + + </u-row> + <u-row> + <u-col span="6"> + <input disabled="" + class="border_bottom_f18202 width45 fontSize32rpx text-left" + style="margin:10rpx 0 10rpx 45rpx;" v-model="item.unit" + placeholder="鍗曚綅" /> + </u-col> + <u-col span="5"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.requantity" type="number" @focus='dc(item)' + @blur="changeNum(item)" @click="clicki(item)" placeholder="璇疯緭鍏ュ綊杩樻暟閲�" /> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </scroll-view> + </view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.wareMaterialCode}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.wareMaterialName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡绫诲瀷</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <!-- <view class="line flex justify-between"> + <text class="text-gray">浠锋牸</text> + <text>{{materlist.price}}</text> + </view> --> + <view class="line flex justify-between"> + <text class="text-gray">鏉$爜</text> + <text>{{materlist.barCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + </view> + </u-popup> + </view> + <button-modal :empTytowerShow='true' garmenTitle='纭' cleaningTitle='閲嶇疆' @reset="reset" @submit='submit' /> + + </view> +</template> + +<script> + import ButtonModal from '@/components/buttonModal.vue' + import ModalCode from '@/components/ModalCode.vue' + import { + selectpeople, + query, + borrowAdd + } from '@/api/receive/receive.js' + import { + getDate + } from '@/utils/dateTime.js' + export default { + data() { + return { + rescode: 0, + resmessage: "", + detailshow: false, + modalshow: false, //鍊熺敤鍗曞彿寮圭獥 + operator: '', + focu: false, //娓呯┖鎸夐挳闅愭樉 + focuM: false, //鐗╂枡闅愭樉鎸夐挳 + Datetime: getDate(), + // borrowNo:'',//鍊熺敤鍗曞彿 + // borrower:'',//鍊熺敤浜� + wolist: [], //鍊熺敤鍗曞彿 + singlist: [ + // { + // "warematerialCode": "string", + // "collectNo": "string", + // "purchaseNo": "string", + // "category": "string", + // "wareMaterialTypeName": "string", + // "specificationModel": "string", + // "long": "string", + // "width": "string", + // "high": "string", + // "weight": "string", + // "barCode": "string", + // "company": "string", + // "uncollectedQuantity": 0, + // "id": 0 + // }, + ], //鐗╂枡璇︽儏 + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }], + materlist: {}, + warehouse: { + containerCode: '', + materialCode: '' + }, + warehouseRules: { + containerCode: [{ + required: true, + message: '鍊熺敤浜轰笉鑳戒负绌�', + trigger: 'blur' + }], + materialCode: [{ + required: true, + message: '鍊熺敤鍗曞彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + containerCodeRules: { + containerCode: [{ + required: true, + message: '鍊熺敤浜轰笉鑳戒负绌�', + trigger: 'blur' + }], + }, + materialCodeRules: { + materialCode: [{ + required: true, + message: '鍊熺敤鍗曞彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + // this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //鏌ヨ鍊熺敤浜� + getContainerDetails() { + this.$refs.warehouseRef.setRules(this.containerCodeRules) + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focu = false + if (this.warehouse.containerCode !== '') { + selectpeople(this.warehouse.containerCode).then((res) => { + if (res.code == 200) { + res.data.forEach((item, index) => { + this.wolist.push({ + key: index + 1, + label: item + }) + }) + if (res.data.length == 0) { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + return + } + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + } + }, 200) + } + }) + }, + //鍊熺敤鍗曞彿 + openOrder() { + if (this.wolist.length == 0) { + this.resmessage = '鏆傛棤鏁版嵁' + this.rescode = 400 + this.$refs.resmodal.show = true + } else { + this.modalshow = true + } + }, + //鍊熺敤鍗曞彿纭 + confirm(e) { + this.warehouse.materialCode = e[0].label + this.getMaterialDetails() + }, + //鐗╂枡鏌ヨ + getMaterialDetails() { + this.$refs.warehouseRef.setRules(this.materialCodeRules) + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focuM = false + if (this.warehouse.materialCode !== '') { + query(this.warehouse.materialCode).then((res) => { + if (res.code == 200) { + this.singlist = res.data.rows + this.singlist.forEach(item => { + item.requantity = item.quantity + if (item.requantity > 0) { + item.edit = true + } + }) + if (res.data.rows.length == 0) { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + return + } + res.data.rows.forEach(item => { + if (item.unquantity > 0) { + item.edit = true + this.$forceUpdate() + } + }) + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + } + }, 200) + } + }) + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + this.singlist[index].cardNum = true + this.materlist = this.singlist[index] + this.detailshow = true + }, + //缂栬緫鐘舵�佹牱寮� + dc(e) { + e.cardNum = true + this.$forceUpdate() + }, + //鍗$墖閫変腑 + clicki(e) { + e.cardNum = true + this.$forceUpdate() + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.$forceUpdate() + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + val.cardNum = false + if (val.requantity && val.requantity > 0) { + val.edit = true + this.$forceUpdate() + } else { + val.edit = false + this.$forceUpdate() + } + + }, + //鍏ㄩ儴鍙栨秷 + reset() { + this.singlist.forEach(item => { + item.unquantity = "" + item.edit = false + }) + this.$forceUpdate() + }, + //閲嶇疆椤甸潰淇℃伅 + rest() { + this.warehouse.containerCode = '' + this.warehouse.materialCode = '' + this.singlist.forEach(item => { + item.requantity = '' + }) + this.singlist = [] + }, + //纭 + submit() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + this.$refs.warehouseRef.validate(valid => { + if (valid) { + let arr = this.singlist.filter(item => item.edit) + if (arr.length == 0 && this.singlist.length !== 0) { + uni.showModal({ + title: '鎻愮ず', + content: '鏈~鍐欏綊杩樻暟閲�', + showCancel: false + }) + return + } + let matatilDetails = [] + arr.forEach(item => { + item.materialCode = item.code + item.completeQuantity = item.unquantity + matatilDetails.push({ + id: item.ordersId, + wareMaterialCode: item.wareMaterialCode, + wareMaterialName: item.wareMaterialName, + batchNo: item.batchNo, + barCode: item.barCode, + quantity: item.requantity + }) + }) + let params = { + createdTime: this.Datetime, + updatedTime: this.Datetime, + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + orderType:12, + orderNo:this.singlist[0].orderNo, + data: matatilDetails + } + borrowAdd(params).then((res) => { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + if (res.code == 200) { + this.rest() + } + }) + } + }) + } + } + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/recommend/recommend.vue b/LA24030_LuLiPackageLine_Pda/pages/recommend/recommend.vue new file mode 100644 index 0000000..ec47b1b --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/recommend/recommend.vue @@ -0,0 +1,642 @@ +<template> + <view style="padding-bottom:100px"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鎺ㄨ崘搴撲綅</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <!-- <view class="text-bold width fontSize32rpx" style="padding: 10rpx 10rpx;background-color: #d6d6d6;"> + <view class="flex justify-between align-center"> + <text class="width23 padding10">鍏ュ簱鍗曞彿</text> + <text>{{putCode}}</text> + </view> + </view> --> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.materialCode" ref="materialRef" placeholder="璇锋壂鐮佸綍鍏�" @focus="warehouse.materialCode = ''" @blur="getMaterialDetails" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + + <!-- <u-col span="2" @tap="containerFocus" > + <br/> + <span class="fontSize15rpx">鎺ㄨ崘</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> --> + <!-- <u-col span="2"> + <button-modal :cleaningShow='true' allTitle='鍏ㄩ儴鍙栨秷' cleaningTitle='纭缁勭洏' @allsubmit="reset" @submit='submit' /> + </u-col> --> + </u-row> + <!-- <u-row class="border_bottom padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="搴撲綅缂栧彿:" prop="containerCode" required style="font-size: 16px;font-weight: bold;padding: 0;"> + <u-input :focus="curFoucus" v-model.trim="warehouse.containerCode" @confirm="containerBlur" placeholder="璇锋壂鐮佸綍鍏�" style="font-weight: bolder;margin-left: 15rpx;" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> --> + + + </u-form> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" /> + <view style="margin-bottom: 200rpx;"> + + <view v-for="(item, eindex) in singlist" :key="item.code" style="width: 100vw;display: flex;"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" + @open="open" @close='close' :options="options" style="margin-bottom: 10rpx;width: 100vw;"> + <view class="title-wrap fontSize32rpx background_fff padding15" :class="Number(item.quantity) > 0 ? 'bg_item' : '' " style="width: 100vw;"> + <u-row> + <u-col span="1"> + <text class="flex justify-center align-center" style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </text> + </u-col> + <u-col span="10"> + <text class="color_f18202"> + {{item.code}}--{{item.batchNo}} + </text> + </u-col> + </u-row> + + <u-row style="margin-top: 20rpx;"> + <u-col span="9"> + <text class="el_batchNo"> + SAP浣嶇疆锛歿{item.sap_Location}} + </text> + </u-col> + <!-- <u-col span="3"> + <input class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" v-model="item.quantity" + type="number" @blur="changeNum(item)" @click="clicki(item)" :min="1" placeholder="璇疯緭鍏ョ粍鐩樻暟閲�" /> + + </u-col> --> + </u-row> + </view> + </u-swipe-action> + </view> + </view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.code}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.name}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡绫诲瀷</text> + <text>{{materlist.materialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + </view> + </u-popup> + + <button-modal :cleaningShow='true' allTitle='鍏ㄩ儴鍙栨秷' cleaningTitle='纭' @allsubmit="reset" @submit='containerFocus'/> + + + <!-- <button-modal :cleaningShow='true' allTitle='鍏ㄩ儴鍙栨秷' cleaningTitle='鍘诲叆搴�' @allsubmit="reset" @submit='submit'/> --> + + <u-select v-model="containerVisible" :list="containerList" @confirm="containerConfirm"></u-select> + + </view> +</template> +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import {getOrderNo,addGroupDisk,getMaterialList, getContainDetail, getContainerRecord ,getRecommendList} from '../../api/putIn/artificial.js' + import {getDate} from '../../utils/dateTime.js' + import {getAttrValue} from '../../utils/tool.js' + export default { + data() { + return { + curFoucus:true,//鑷姩鑱氱劍 銆怑ditby shaocx,2022-11-23銆� + rescode: 0, + resmessage: "", + putCode: '', //瀹瑰櫒浜岀淮鐮� + detailshow: false, + operator: '', + focu: false, //娓呯┖鎸夐挳闅愭樉 + focuM: false, //鐗╂枡闅愭樉鎸夐挳 + Datetime: getDate(), + singlist: [], //鐗╂枡璇︽儏 + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + } + // { + // text: '鍒犻櫎', + // style: { + // backgroundColor: '#fc4b4b' + // } + // } + ], + materlist: {}, + warehouse: { + containerCode: '', + materialCode: '', + gridNumber: 1, + useNumber: 0, + exitNumber: 0, + }, + sap_location:'', + gridable: true, + gridFocus: false, + detailable: false, + batchNo: '', //鎵爜鍒扮殑褰撳墠鐗╂枡鐨勬壒娆� + warehouseRules: { + containerCode: [{ + required: true, + message: '搴撲綅缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }], + // gridNumber: [{required: true,message: '鏍呮牸鎬绘暟涓嶈兘涓虹┖',trigger: 'blur'}], + // exitNumber:[{required: true,message: '鏈鍗犵敤鏁伴噺涓嶈兘涓虹┖',trigger: 'blur'}], + materialCode: [{ + required: true, + message: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + orderType: 1, + containerVisible: false, + containerList: [], + + + }; + }, + components: { + ButtonModal, + ModalCode + }, + onLoad(option) { + + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + // this.getOrderNo() + }, + computed: { + containerCode(){ + return this.warehouse.containerCode + } + }, + watch:{ + containerCode(val){ + if(!val) { + this.detailable = false; + this.warehouse.exitNumber = 0 + } + }, + singlist(val) { + this.warehouse.exitNumber = val.length + } + }, + methods: { + gridBtnClick() { + this.gridable = !this.gridable + if(!this.gridable) { + this.$nextTick(() => { + this.gridFocus = true; + }) + }else { + this.$nextTick(() => { + this.gridFocus = false; + }) + } + }, + //搴撲綅缂栧彿鐐瑰嚮 + containerClick() { + uni.scanCode({ + scanType: ['barCode','qrCode'], + autoDecodeCharset: true, + success:(res) => { + this.warehouse.containerCode = res.result + this.containerBlur() + }, + fail:(err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${err}` + this.$refs.resmodal.show = true + } + }) + }, + //瀹瑰櫒澶辩劍浜嬩欢 + containerBlur(){ + Promise.all([this.getContainerRecord(), this.getContainerData()]) + }, + //鑾峰彇褰撳墠瀹瑰櫒涓嬬粍鐩樿褰� + getContainerRecord(){ + //姣忔鏌ヨ缃┖鏉愭枡鍒楄〃 + this.singlist = []; + if(this.warehouse.containerCode == '') { + // this.rescode = 400 + // this.resmessage = `搴撲綅缂栧彿涓嶈兘涓虹┖` + // this.$refs.resmodal.show = true + return + } + getContainerRecord({ + 'containerCode':this.warehouse.containerCode + }).then(res => { + if(Array.isArray(res.data) && res.data.length > 0) { + if(res.data[0].orderNo){ + this.putCode = res.data[0].orderNo; + } + const recordArr = res.data.reduce((curr,item)=>{ + curr.push({ + code: item.materialCode, + batchNo:item.batchNo, + quantity:item.quantity, + materialName:item.materialName, + materialTypeName:item.materialTypeName, + specificationModel:item.specificationModel, + show: false + }) + return curr + },[]) + this.singlist.push(...recordArr) + } + }) + + }, + //鑾峰彇瀹瑰櫒鐨勪俊鎭� + getContainerData() { + if(this.warehouse.containerCode.length < 5) { + return + } + getContainDetail(this.warehouse.containerCode).then(res => { + const result = res.data.rows; + if(Array.isArray(result) && result.length == 1) { + this.detailable = true; + this.warehouse.gridNumber = res.data.rows[0].gridNumber; + this.warehouse.useNumber = res.data.rows[0].useNumber; + } + + }) + }, + //妫�鏌ュ鍣ㄦ爡鏍兼暟 + checkGrid() { + if(parseInt(this.warehouse.gridNumber) < parseInt(this.warehouse.useNumber) + parseInt(this.warehouse.exitNumber)) { + this.rescode = 400 + this.resmessage = '鏍呮牸鎬绘暟涓嶈兘灏忎簬宸茬敤鏁伴噺鍔犱笂鏈鍗犵敤鏁伴噺' + this.$refs.resmodal.show = true + } + }, + //妫�鏌ユ湰鍦颁娇鐢ㄦ暟 + checkExit() { + if(parseInt(this.warehouse.exitNumber) > parseInt(this.warehouse.gridNumber)) { + this.rescode = 400 + this.resmessage = '鏈鍗犵敤鏁伴噺涓嶈兘澶т簬鏍呮牸鎬绘暟' + this.$refs.resmodal.show = true + } + }, + //鐗╂枡缂栫爜鐐瑰嚮 + materialClick() { + // uni.scanCode({ + // scanType: ['barCode','qrCode'], + // autoDecodeCharset: true, + // success:(res) => { + // this.warehouse.materialCode = getAttrValue(res.result,'PARTSNUMBER') + // this.batchNo = getAttrValue(res.result,'LOTNO') + + + // this.getMaterialDetails() + // }, + // fail:(err) => { + // this.rescode = 400 + // this.resmessage = `鎵弿澶辫触${err}` + // this.$refs.resmodal.show = true + // } + // }) + }, + //鍏ュ簱鍗曞彿 + getOrderNo() { + getOrderNo().then((res) => { + if (res.code == 200) { + this.putCode = res.data + } else { + this.$refs.resmodal.show = true + } + }) + }, + //鐗╂枡鏌ヨ + getMaterialDetails() { + + if(!this.warehouse.materialCode) { + // uni.showModal({ + // title: '鎻愮ず', + // content: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + // showCancel: false + // }) + return + } + + if(this.warehouse.materialCode.length > 50) { + this.batchNo = getAttrValue(this.warehouse.materialCode,'LOTNO') + let quantity = getAttrValue(this.warehouse.materialCode,'QUANTITY') + this.sap_location = getAttrValue(this.warehouse.materialCode,'SAP') || '' + if(quantity == '' || Number(quantity) <= 0) { + // this.rescode = 400 + // this.resmessage = '鏍囩涓棤鏀惰揣鏁伴噺' + // this.$refs.resmodal.show = true + // return + quantity = 0 + } + + + //鎵弿鐨勭墿鏂欐槸鍚︽湁鎵规 + if(!this.batchNo) { + this.rescode = 400 + this.resmessage = '鏃犳壒娆�' + this.$refs.resmodal.show = true + return + } + this.warehouse.materialCode = getAttrValue(this.warehouse.materialCode,'PARTSNUMBER') + + this.singlist = [ + { + 'code':this.warehouse.materialCode, + 'batchNo':this.batchNo, + 'sap_Location':this.sap_location, + } + ] + // if(this.singlist.length > 0) { + // //鍒ゆ柇褰撴鎵弿鐨勭墿鏂欐槸鍚﹀凡瀛樺湪鍚屾壒娆� + // let index = this.singlist.findIndex(item => item.code == this.warehouse.materialCode && item.batchNo == this.batchNo) + // //缃《 + // if(index > -1) { + // //鍚屾壒娆$殑鐗╂枡鏁伴噺鍋氱疮鍔� + // this.singlist[index].quantity = Number(Number(this.singlist[index].quantity) + Number(quantity)).toFixed(3); + // this.singlist.unshift(...this.singlist.splice(index,1)) + // return + // } + // } + return + // debug + getMaterialList({ + Code:this.warehouse.materialCode, + 'Sap_Location':sap_location, + PageNo:1, + PageSize:10 + }).then((res) => { + if (res.code == 200) { + if (res.data.rows.length == 0) { + this.rescode = 400 + this.resmessage = '鏃犳鐗╂枡' + this.$refs.resmodal.show = true + return + }else { + res.data.rows.map(item => { + item.batchNo = this.batchNo + item.sap_Location = sap_location + item.quantity = quantity + item.show = false + return item; + }) + this.singlist.unshift(...res.data.rows) + } + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + } + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + this.singlist[index].cardNum = true + if (eindex == 1) { + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + + }, + //缂栬緫鐘舵�佹牱寮� + dc(e) { + e.cardNum = true + this.$forceUpdate() + }, + //鍗$墖閫変腑 + clicki(e) { + e.cardNum = true + this.$forceUpdate() + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.$forceUpdate() + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + val.cardNum = false + if(!val.quantity) { + uni.showModal({ + title: '鎻愮ず', + content: '缁勭洏鏁伴噺涓嶈兘涓虹┖', + showCancel: false + }) + } + // val.quantity = Number(val.quantity.toString().match(/^\d+(?:\.\d{0,2})?/)) // 淇濈暀涓や綅灏忔暟 + if(val.quantity <0) { + uni.showModal({ + title: '鎻愮ず', + content: '缁勭洏鏁伴噺蹇呴』澶т簬0', + showCancel: false + }) + } + }, + //鍏ㄩ儴鍙栨秷 + reset() { + this.singlist = []; + this.batchNo = ''; + this.sap_location = ''; + this.warehouse.materialCode = ''; + this.$refs.warehouseRef.resetFields(); + this.$forceUpdate() + }, + //閲嶇疆椤甸潰淇℃伅 + rest() { + this.warehouse.containerCode = '' + this.warehouse.materialCode = '' + this.singlist.forEach(item => { + item.quantity = '' + }) + this.singlist = [] + // this.getOrderNo() + }, + //纭 + submit() { + // 璺宠浆鍒扮櫥褰� + uni.redirectTo({ + url: '/pages/artificial/artificial?wareContainerCode='+ this.warehouse.materialCode + }) + // this.$refs.warehouseRef.setRules(this.warehouseRules) + // console.log(this.orderType,'333') + // this.$refs.warehouseRef.validate(valid => { + // if (valid) { + // if(parseInt(this.warehouse.gridNumber) <= 0 || parseInt(this.warehouse.useNumber) < 0) { + // this.rescode = 400 + // this.resmessage = '鏍呮牸鎬绘暟涓嶈兘灏忎簬绛変簬0' + // this.$refs.resmodal.show = true + // return + // } + + // if(parseInt(this.warehouse.useNumber) > parseInt(this.warehouse.gridNumber)) { + // this.rescode = 400 + // this.resmessage = '鏈浣跨敤鏁颁笉鑳藉ぇ浜庢爡鏍兼�绘暟' + // this.$refs.resmodal.show = true + // return + // } + // //鐗╂枡璇︽儏 + // let matatilDetails = this.singlist.reduce((curr,item) => { + // curr.push({ + // createdTime: this.Datetime, + // updatedTime: this.Datetime, + // createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + // createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + // updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + // updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + // wareMaterialCode: item.code, + // batchNo:item.batchNo, + // price:item.price, + // completeQuantity: item.quantity, + // quantity: item.quantity, + // sap_Location:item.sap_Location || '' + // }) + // return curr; + // },[]) + + // //璇锋眰鍙傛暟 + // let params = { + // createdTime: this.Datetime, + // updatedTime: this.Datetime, + // createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + // createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + // updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + // updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + // orderNo: this.putCode, + // orderType: this.orderType, + // wareContainerCode: this.warehouse.containerCode, + // gridNumber: parseInt(this.warehouse.gridNumber), + // useNumber: parseInt(this.warehouse.exitNumber), + // warehousOrderDetails: matatilDetails + // } + + // uni.showModal({ + // title: '鎻愮ず', + // content: '鏄惁纭鍏ュ簱锛�' , + // showCancel: true, + // cancelColor: '#333333', + // success: (res => { + // if (res.confirm) { + // addGroupDisk(params).then(res => { + // this.rescode = res.code + // this.resmessage = res.message + // this.$refs.resmodal.show = true + // this.rest() + // }) + // } else if (res.cancel) { + + // } + // }) + // }); + + + + // } + // }) + }, + //鑾峰彇鎺ㄨ崘 + containerFocus() { + // //debugger + if(this.warehouse.materialCode==''){ + return + } + getRecommendList({ + 'wareMaterialCode':this.warehouse.materialCode, + 'barNo':this.batchNo, + 'sap_Location':this.sap_location + }).then(res => { + this.containerList = res.data.reduce((curr,item) => { + curr.push({ + label: item, + value: item + }) + return curr; + },[]) + this.containerVisible = true; + }) + }, + //瀹瑰櫒閫夋嫨 + containerConfirm(context){ + this.warehouse.OrderNo = context[0].value + if(context[0].value==''){ + return + } + uni.redirectTo({ + url: '/pages/artificial/artificial?wareContainerCode='+ context[0].value + }) + } + } + } +</script> +<style lang="scss" scoped> + .el_batchNo { + padding: 10rpx 0 10rpx 45rpx; + color: #808080; + } + .bg_item { + background: #FFEBCD !important; + } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/resume/pickResume.vue b/LA24030_LuLiPackageLine_Pda/pages/resume/pickResume.vue new file mode 100644 index 0000000..0cc99b1 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/resume/pickResume.vue @@ -0,0 +1,925 @@ +<template> + <view class="overflow overflowWrap"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content"> + <text v-if="totalPages"> ({{ pageNow }}椤�/鍏眥{ totalPages }}椤�/{{ totalTs }}鏉�) </text> + 鍙栬揣鎾ら攢 + </block> + </cu-custom> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class="box20" v-show="renameFocus"> + <u-form :model="warehouse" ref="warehouseRef" labelPosition="left" label-width="180rpx"> + <u-row class="border_bottom margin_top10rpx padding10 fixedBox" :style="{ 'top': barHeight + 'px' }"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" class="formItemWp " style=""> + <u-input v-model="materialCode" @focus="materialCode = ''" placeholder="璇峰綍鍏ユ垨鎵爜" + @blur="getMaterialDetails" class="posRt"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="浜у搧绫诲瀷:" prop="QueryProductType" style="font-weight: bold;padding: 0;"> + <u-input v-model.trim="queryForm.QueryProductType" placeholder="璇峰綍鍏ユ垨閫夋嫨" + class="width padding_left25rpx" + :focus="true" + style="margin-left: 15px;font-size: 18px;" + > + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="showProductTypeList" > + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="宸ュ簭:" prop="QueryProcess" style="font-weight: bold;padding: 0;"> + <u-input v-model.trim="queryForm.QueryProcess" placeholder="璇峰綍鍏ユ垨閫夋嫨" + class="width padding_left25rpx" + :focus="true" + style="margin-left: 15px;font-size: 18px;" + > + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="showProcessList" > + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鏈哄簥鍙�:" prop="equipmentList" required style="font-weight: bold;padding: 0"> + <u-input v-model.trim="warehouse.equipmentList" placeholder="璇峰綍鍏ユ垨鎵爜" + class="width padding_left25rpx" + :focus="true" + style="margin-left: 15px;font-size: 18px;" + > + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="showEquipmentList" > + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + </u-row> + <!-- <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鍙栬揣娉㈡鍙�:" prop="DoOrderNo" style="font-weight: bold;padding: 0;"> + <u-input v-model="warehouse.DoOrderNo" placeholder="璇峰綍鍏ユ垨鎵爜" + class="width padding_left25rpx" + style="margin-left: 15px;font-size: 18px;" + @confirm="orderBlurDo" > + </u-input> + </u-form-item> + </u-col> + </u-row> --> + <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鍙栬揣娉㈡鍙�:" prop="DoOrderNo" required style="font-weight: bold;padding: 0"> + <u-input v-model.trim="warehouse.DoOrderNo" placeholder="璇峰綍鍏ユ垨鎵爜" + class="width padding_left25rpx" + :focus="true" + style="margin-left: 15px;font-size: 18px;" + @confirm="orderBlurDo" > + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="containerFocusDo" > + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + </u-row> + <!-- <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鏈哄簥鍙�:" prop="equipmentList" style="font-weight: bold;padding: 0;"> + <u-input v-model="warehouse.equipmentList" placeholder="璇峰綍鍏ユ垨鎵爜" class="width padding_left25rpx" + style="margin-left: 15px;font-size: 18px;" + @confirm="orderBlurDo" > + </u-input> + </u-form-item> + </u-col> + </u-row> --> + + </u-form> + <view style="margin-bottom: 30px;margin-top: 10rpx; width: 100%;" class="lineht_sm" @touchmove.stop> + <checkbox-group @change="checkboxChange"> + <view v-for="(item, eindex) in singlist" :key="eindex"> + <view class="title-wrap fontSize32rpx background_fff padding10" + style="width: 100vw;" > + <u-row> + <u-col span="12"> + <label class="flex align-center"> + <checkbox :value="item.key" :checked="item.checked"/> + <text class="flex justify-center align-center circkle06">{{ eindex + 1 }}</text> + <view class="color_f18202"> + {{ item.wareMaterialCode }} ({{ item.batchNo }}) + </view> + </label> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="text06"> + 鍙栬揣娉㈡鍙�:{{ item.sortingNo }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + SAP锛歿{ item.sap_Location }} + </view> + </u-col> + <u-col span="6" class="color_80" > + 鏈哄簥鍙凤細{{ item.equipment }} + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="text06"> + 宸ュ簭锛歿{ item.process }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + 搴撲綅缂栧彿锛歿{ item.wareContainerCode }} + </view> + </u-col> + <u-col span="6"> + <view class="color_80" > + 宸插彇璐ф暟锛歿{ item.hasPickQuantity }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + 宸插垎鎷f暟锛歿{ item.hasSortQuantity }} + </view> + </u-col> + </u-row> + </view> + </view> + </checkbox-group> + </view> + <view v-if="singlist.length<=0" style="text-align: center">---鏃犳暟鎹�---</view> + <view v-if="totalPages&&pageNow==totalPages" style="text-align: center">---宸茬粡鍒板簳浜�---</view> + <view class="width height140rpx fixed transformX left50 bottom0 background_fff padding40_0"> + <view class="flex justify-around transition"> + <u-button class="width25 bg-grey" @click="checkAll">鍏ㄩ��</u-button> + <u-button class="width25 bg-grey" @click="rest" style="margin: 0 10px">杩斿洖</u-button> + <u-button v-if="!loading" class="width70 bg-f18202 color_F2F2F2" @click="next">涓嬩竴姝�</u-button> + <u-button v-if="loading" class="width70 bg-f18202 color_F2F2F2" loading>鍔犺浇涓�</u-button> + </view> + </view> + </view> + <view class="box10" v-show="!renameFocus" @touchmove.stop> + <u-row class="border_bottom padding10 box200 background_fff" > + <u-col span="12"> + <u-form-item label="鍘熷洜:" prop="CancelRemark" required class="inp100"> + <u-input v-model="warehouse.CancelRemark" placeholder="璇疯緭鍏ユ挙閿�鍘熷洜"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <scroll-view scroll-y="true"> + <view v-for="(item, eindex) in arr" :key="eindex" style="background-color: #fff;" class="fontSize32rpx margin_top10rpx padding10"> + <u-row> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{ eindex + 1 }} + </view> + <view class="padding_left10rpx color_f18202"> + {{ item.wareMaterialCode }}({{ item.batchNo }}) + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="text06"> + 鍙栬揣娉㈡鍙�:{{ item.sortingNo }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + SAP锛歿{ item.sap_Location }} + </view> + </u-col> + <u-col span="6" class="color_80" > + 鏈哄簥鍙凤細{{ item.equipment }} + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="text06"> + 宸ュ簭锛歿{ item.process }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + 搴撲綅缂栧彿锛歿{ item.wareContainerCode }} + </view> + </u-col> + <u-col span="6"> + <view class="color_80" > + 宸插彇璐ф暟锛歿{ item.hasPickQuantity }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + 宸插垎鎷f暟锛歿{ item.hasSortQuantity }} + </view> + </u-col> + <u-col span="6"> + <view class="color_80" > + + </view> + </u-col> + </u-row> + </view> + </scroll-view> + <view class="width height140rpx fixed transformX left50 bottom0 background_fff padding40_0"> + <view class="flex justify-around transition"> + <u-button v-if="!loading2" class="width25 bg-grey" @click="back">涓婁竴姝�</u-button> + <u-button v-if="loading2" class="width25 bg-grey" loading>鍔犺浇涓�</u-button> + <u-button class="width70 bg-f18202 color_F2F2F2" @click="submit">纭鎾ら攢</u-button> + </view> + </view> + + </view> + + <!-- 3绾ц仈鍔� --> + <cascader ref="cascader" :cascaderData="cascaderData" @confirem="cascaderConfirem" :titleData="titleData"> + </cascader> + + <view class="boxList" v-show="containerVisible" @click="containerVisible = false" @touchmove.stop> + <scroll-view class="innerWrap" > + <ul v-for="(item, eindex) in containerList" :key="eindex"> + <li @click="getOutWarehouse(item.value)"> {{ item.value }}</li> + </ul> + </scroll-view> + </view> + <u-select v-model="containerVisibleDo" :list="containerListDo" @confirm="containerConfirmDo"></u-select> + <u-select v-model="view_selectProductType" :list="data_selectProductTypeList" @confirm="selectProductType"></u-select> + <u-select v-model="view_selectProcess" :list="data_selectProcessList" @confirm="selectProcess"></u-select> + <u-select v-model="view_selectEquipment" :list="data_selectEquipmentList" @confirm="selectEquipment"></u-select> + </view> +</template> +<script> +import cascader from '@/components/cascader.vue'; +import ButtonModal from '../../components/buttonModal.vue' +import ModalCode from '../../components/ModalCode.vue' +import { getOutResumeGroup, reSumeconfirmPick, selectThereQuery } from '../../api/sort.js' +import { getDate } from '../../utils/dateTime.js' +import { getAttrValue } from '../../utils/tool.js' +import Vue from 'vue' +import mixCheckbox from '@/mixins/checkbox.js' +import {getSortNoListForCancelPick,getSortNoListForCancelPickForProductType} from '@/api/deliver.js' +export default { + mixins: [mixCheckbox], + data() { + return { + queryForm:{ + QueryProcess:'', + QueryProductType:'' + }, + containerVisibleDo: false, + containerListDo: [], + view_selectProductType:false, + view_selectProcess:false, + view_selectEquipment:false, + data_selectProductTypeList: [], + data_selectProcessList: [], + data_selectEquipmentList: [], + // 3绾т笅鎷� + cascaderData: [], + titleData: { + 'locationType': 1,// 1:A3鍖哄煙锛�2:A1-A2鍖哄煙 + 'type': "" + }, + category_name: [], + category_ids: '', + // 鐗╂枡绫诲瀷 涓嬫媺 + typeVisible: false, + typeList: [], + showPk: false, //鍙栬揣寮规 + datapick: [], //宸插彇璐ф暟鎹� + containerVisible: false, + containerList: [], + renameFocus: true, + detailshow: false, + rescode: 0, + resmessage: "", + modalshow: false, + action: this.$myHOST + '/sysFileInfo/uploadImages', + singlist: [], //鐗╂枡璇︽儏 + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + containerCode: '', + type: '', + typeName: '', + process: '', + equipmentList: '', + DoOrderNo: '', + CancelRemark:'' + }, + activeIndex: 100, + detailable: false, + materialCode: '', //鐗╂枡缂栧彿 + warehouseRules: {}, + options: [{ + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + }], + operator: '', + Datetime: getDate(), + loading: false, + loading2: false, + currentPage: 1, //椤垫暟 + timerObj: null, + barHeight: '', + pageNow: '', //鎺ュ彛杩斿洖鐨勯〉鏁� + totalPages: '', //椤垫暟 + totalTs: '', //鎺ュ彛杩斿洖鐨勬�绘潯鏁� + }; + }, + components: { + ButtonModal, + ModalCode, + cascader + }, + onReady() { + }, + mounted() { + // 璁剧疆fixed瀹氫綅 + this.barHeight = Vue.prototype.CustomBar || 45 + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + + this.getOutWarehouse('',1) + + this.initData(); + }, + onPullDownRefresh() { + this.$nextTick(function () { + uni.stopPullDownRefresh(); //鍋滄褰撳墠椤甸潰涓嬫媺鍒锋柊 + }); + }, + //涓婃媺鍔犺浇 + onReachBottom() { + let _self = this; + if (this.totalPages && this.pageNow >= this.totalPages) { //鏃犳暟鎹� 涓嶅啀璇锋眰 + console.log("鍒板簳浜�") + return + } + uni.showNavigationBarLoading(); + this.$nextTick(function () { + _self.currentPage++; + _self.getOutWarehouse('', this.e); + uni.hideNavigationBarLoading(); + }); + }, + methods: { + //鍒濆鍖栨暟鎹� + initData() { + getSortNoListForCancelPickForProductType({ + 'OrderType':15 + }).then(res => { + this.data_selectProcessList=res.data.processList; + this.data_selectProductTypeList=res.data.productTypeList; + this.data_selectEquipmentList=res.data.equipmentList; + }) + }, + showProductTypeList(){ + this.view_selectProductType=true; + }, + showProcessList(){ + this.view_selectProcess=true; + }, + showEquipmentList(){ + this.view_selectEquipment=true; + }, + selectProductType(context){ + this.queryForm.QueryProductType = context[0].value; + }, + selectProcess(context){ + this.queryForm.QueryProcess = context[0].value; + }, + selectEquipment(context){ + this.warehouse.equipmentList = context[0].value; + }, + //鎵撳紑3绾у脊妗� + kuweiFocus() { + let param = { + 'SortingOrderNo': this.warehouse.DoOrderNo, + 'PickSortFlag': 1 //1鏄彇璐� 2鏄垎鎷o級 + } + this.$refs.cascader.show(param) + }, + // 3绾у脊妗� 纭 + cascaderConfirem(e) { + console.log(e) + this.category_ids = e.select_ids; + this.category_name = e.select_names; + if(this.warehouse.process != e.process){ // 鍙栬揣鍙兘鍙栫浉鍚屽伐搴忕殑鐗╂枡 + this.arr = [] + // this.arrIds = [] + } + this.warehouse.process = e.process; + this.warehouse.equipmentList = e.equipmentList; + this.warehouse.containerCode = '' + this.singlist = [] + this.totalPages = '' + + this.queryForm.QueryProcess=''; + this.queryForm.QueryProductType=''; + + this.getOutWarehouse('', 1) + }, + //鑾峰彇褰撳墠鍖哄煙鐨勯渶瑕佸彇璐х殑瀹瑰櫒鍒楄〃 + getContainerList() { + selectThereQuery({ + 'process': this.warehouse.process, + "equipmentList": this.warehouse.equipmentList, + 'locationType': this.locationType, // 1:A3鍖哄煙锛�2:A1-A2鍖哄煙 + 'type': this.warehouse.type, + 'SortingOrderNo': this.warehouse.DoOrderNo + }).then(res => { + // 娴嬭瘯 + this.containerList = res.data.reduce((curr, item) => { + curr.push({ + label: item, + value: item + }) + return curr; + }, []) + this.containerVisible = true; + }) + }, + //鏌ヨ鐗╂枡 + getOutWarehouse(context, isFirstParam,materialCode,batchNo) { + if (this.loading || this.loading2) {// 姝e湪鐐瑰嚮 涓嬩竴姝� 鎴栬�� 杩斿洖 + return + } + let isFirstPage = isFirstParam; + if (context) { + this.warehouse.containerCode = context; + isFirstPage = 1 + this.containerVisible = false + } + // this.$refs.warehouseRef.validate(valid => { + // if (valid) { + let params = { + PageNo: this.currentPage, + PageSize: 10, + Equipment: this.warehouse.equipmentList, //鏈哄簥鍙� + 'sortingNo': this.warehouse.DoOrderNo, + PickStatus:0, //蹇呴』鏌ヨ鐘舵�佷负鏈垎鎷� + IsYueKu:false, + WareMaterialCode:materialCode||'', + BatchNo:batchNo||'', + } + if (isFirstPage) { + params.PageNo = 1; + params.PageSize = 10; + this.currentPage = 1; + this.singlist = []; + } + + if (this.totalPages && this.params > this.totalPages) { // 鏃犳暟鎹� 涓嶅啀璇锋眰 + console.log("鏃犳暟鎹� 涓嶅啀璇锋眰") + return + } + getOutResumeGroup(params).then((res) => { + if (res.code == 200) { + let arrRes = res.data.rows; + if (arrRes.length > 0) { + for (let i = 0; i < arrRes.length; i++) { + let item = arrRes[i]; + item.checked = false; + item.sap_Location = item.sap_Location || ''; + item.key = item.id + ''; + // 澶嶅悎id - 鏇存柊鎻愪氦鐗╂枡鏁版嵁 + let idx1 = this.arr.findIndex((v) => v.key == item.key); + if (idx1 > -1) { + item.checked = true // 鎵撻挬 + this.arr[idx1] = item; + }else{ + item.checked = false + } + } + if (this.currentPage != 1) { + this.singlist = this.singlist.concat(res.data.rows); + } else { + this.singlist = res.data.rows; + } + } + this.totalPages = res.data.totalPage + this.pageNow = res.data.pageNo + this.totalTs = res.data.totalRows + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + // } + // }) + }, + //鍒ゆ柇姝ょ墿鏂欑紪鍙锋槸鍚﹀瓨鍦� + getMaterialDetails() { + if (this.materialCode !== '') { + if(this.materialCode && this.materialCode.length > 50){ + let batchNo = getAttrValue(this.materialCode, 'LOTNO') + this.materialCode = getAttrValue(this.materialCode, 'PARTSNUMBER') + let materialCode = this.materialCode; + + // 鏌ユ帴鍙�-鐗╂枡+鎵规 + this.getOutWarehouse('',1,materialCode,batchNo) + }else{ + // 鏌ユ帴鍙�-鐗╂枡 + this.getOutWarehouse('',1,this.materialCode) + } + + // const indexNow = this.singlist.findIndex((item)=>(item.wareMaterialCode == this.materialCode && item.batchNo == batchNo && item.sap_Location == sap_Location)) + // if (indexNow > -1) { + // this.singlist[indexNow].checked = true; + // // 鎵撻挬 骞跺瓨鍒版暟缁勪腑 + // let idx = this.arr.findIndex((v) => v.key == this.singlist[indexNow].key) + // if (idx == -1) { + // this.arr.push(this.singlist[indexNow]) + // } + // this.singlist.unshift(...this.singlist.splice(indexNow, 1)) + // } else { + // uni.showToast({ + // title: `涓嶅瓨鍦ㄧ墿鏂檂, + // icon: 'none' + // }) + // } + } + }, + + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + if (Number(val.uncollectedQuantity) < 0 || val.uncollectedQuantity == '' || val.uncollectedQuantity == undefined) { + uni.showToast({ + title: `鍙栬揣鏁伴噺涓嶈兘灏忎簬0`, + icon: 'none' + }) + return + } + if (Number(val.uncollectedQuantity) > Number(Number(val.quantity - val.hasPickQuantity).toFixed(3)) ) { + uni.showToast({ + title: `鍙栬揣鏁伴噺涓嶈兘澶т簬闇�姹傛暟鍜屽凡鍙栬揣涔嬪樊`, + icon: 'none' + }) + } + }, + //纭 + next() { + console.log('涓嬩竴姝�'); + if (this.arr.length == 0) { + this.rescode = 400 + this.resmessage = `瀹瑰櫒涓嬫病鏈夊彲鍙栬揣鐨勭墿鏂檂 + this.$refs.resmodal.show = true + return + } + + let idxN = this.arr.findIndex((v) => v.uncollectedQuantity <= 0 || v.uncollectedQuantity == ''); + if (idxN > -1) { + uni.showToast({ + title: `${this.arr[idxN].wareMaterialCode}鐗╂枡鍙栬揣鏁伴噺瑕佸ぇ浜�0`, + icon: 'none' + }) + return + } + + if (this.loading) { + return + } + + this.loading = true + console.log(this.arr) + this.$nextTick(() => { + this.timerObj = setTimeout(() => { + this.loading = false + this.renameFocus = false; + clearTimeout(this.timerObj) + this.timerObj = null + }, 100) + }) + + }, + submit() { + let sortingLists = this.arr.reduce((curr, item) => { + curr.push({ + ...item, + PickId: item.id, + }) + return curr + }, []) + if (this.arr.length <= 0) { + return + } + let params = { + CancelRemark:this.warehouse.CancelRemark, + Details:sortingLists + } + console.log(params) + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鎾ら攢鍙栬揣锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + reSumeconfirmPick(params).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.renameFocus = true + this.resetData(); + this.getOutWarehouse('', 1) + } + }) + } else if (res.cancel) { + + } + }) + }); + }, + + //鏁版嵁閲嶇疆 + resetData() { + this.warehouse.DoOrderNo = ''; + this.warehouse.equipmentList = ''; + this.materialCode = ''; + this.arr = []; + this.singlist = []; + }, + rest() { + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭杩斿洖锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + uni.navigateTo({ + url: `/pages/index/index` + }) + } else if (res.cancel) { + + } + }) + }); + + }, + //涓婁竴姝� + back() { + if (this.loading2) { + return + } + this.loading2 = true + this.$nextTick(() => { + this.timerObj = setTimeout(() => { + this.loading2 = false + this.renameFocus = true + clearTimeout(this.timerObj) + this.timerObj = null + }, 100) + }) + }, + // 鍏ㄩ儴鎵撻挬 + checkAll(){ + uni.showModal({ + title: '鎻愮ず', + content: '纭畾鏄惁鍏ㄩ�夛紵', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + this.singlist.forEach((item)=>{ + item.checked=true + let idx = this.arr.findIndex((v) => v.key == item.key) + if (idx == -1) { + this.arr.push(item) + // this.arrIds.push(item.key) + } + }) + } else if (res.cancel) { + + } + }) + }); + }, + //鐩戝惉鍘熺敓杩斿洖閿� + onBackPress(e) { + // 姝ゅ涓�瀹氳return涓簍rue锛屽惁鍒欓〉闈笉浼氳繑鍥炲埌鎸囧畾璺緞 + if(this.warehouse.process==''){ + return false //鍙繑鍥� + }else{ + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭杩斿洖锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + uni.redirectTo({ + url: '/pages/index/index' + }) + } else if (res.cancel) { + + } + }) + }); + return true + } + }, + //鍗曞彿 + orderBlurDo(){ + if(this.warehouse.DoOrderNo == ''){ + return + } + this.getOutWarehouse('',1) + // this.containerFocus() + }, + //瀹瑰櫒鑱氱劍浜嬩欢 + containerFocus() { + this.getOutWarehouse('',1) + }, + //瀹瑰櫒鑱氱劍浜嬩欢 + containerFocusDo() { + console.log( " containerFocusDo ") + getSortNoListForCancelPick({ + 'OrderType':15, + ProductType:this.queryForm.QueryProductType, + Process:this.queryForm.QueryProcess, + Equipment: this.warehouse.equipmentList //鏈哄簥鍙� + }).then(res => { + this.containerListDo = res.data.reduce((curr,item) => { + if(item.clientName==null){ + item.clientName = '' + } + curr.push({ + label: item.sortingOrderNo + '; 鏃堕棿:' + item.sortNoCreateTime + '; 宸ュ簭:' + item.process, + value: item.sortingOrderNo + }) + return curr; + },[]) + this.containerVisibleDo = true; + }) + }, + //瀹瑰櫒閫夋嫨 + containerConfirmDo(context){ + this.warehouse.DoOrderNo = context[0].value + this.orderBlurDo() + } + } +} +</script> + +<style lang="scss" scoped> +.overflowWrap { + position: relative; + padding-top: 50px; + padding-bottom: 100px +} + +.fixedBox { + background: white; + position: fixed; + height: 53px; + overflow: hidden; + left: 0; + z-index: 3; + width: 100%; +} + +.bg_item { + background: #FFEBCD !important; +} + +.gxSbBox { + width: 100%; +} + +.box10 { + margin-top: -45px; +} + + +.boxList { + transition: all ease 2s; + position: fixed; + bottom: 0; + left: 0; + top: 0; + right: 0; + width: 100%; + height: 100%; + z-index: 999; + background: rgba(0, 0, 0, 0.6); + + .innerWrap { + max-height: 80%; + overflow-y: auto; + background: white; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + + ul { + padding: 0; + margin: 0; + + li { + padding: 0; + margin: 0; + border-bottom: 1px solid #e4e7ed; + list-style-type: none; + display: flex; + flex-direction: row; + line-height: 1; + justify-content: center; + align-items: center; + font-size: 13px; + padding: 14px 0; + flex-direction: column; + } + } + } + +} + +.circleCk { + width: 23px; + height: 23px; + border: 1px solid #f18202; + border-radius: 100%; + display: block; + margin: 0 auto; +} + +// 宸﹀彸甯冨眬 涓嬫媺 +.formItemWp { + padding: 0rpx; + border: 1rpx solid transparent; + margin-bottom: 0; + font-size: 16px; + font-weight: bold; + padding: 0 0 10rpx; + + // 鍥炬爣 + .u-icon--right { + position: absolute; + top: 50%; + margin-top: -5px; + right: 0; + } + // input + .posRt { + position: absolute; + top: 0; + left: 0; + text-align: right; + font-size: 32rpx; + display: flex; + height: 100%; + margin-left: 87px; + width: 70%; + } +} +.textAuto{ + color: #808080;width: 60px;display: inline-block; +} +.radioWp{ + margin-right: 10px; +} +.title-wrap{ + border-bottom: 5px solid #F2F2F2; +} +.text06{ + word-wrap: break-word; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/resume/sortResume.vue b/LA24030_LuLiPackageLine_Pda/pages/resume/sortResume.vue new file mode 100644 index 0000000..dd92d4f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/resume/sortResume.vue @@ -0,0 +1,927 @@ +<template> + <view class="overflow overflowWrap"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content"> + <text v-if="totalPages"> ({{ pageNow }}椤�/鍏眥{ totalPages }}椤�/{{ totalTs }}鏉�) </text> + 鍒嗘嫞鎾ら攢 + </block> + </cu-custom> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class="box20" v-show="renameFocus"> + <u-form labelPosition="left" label-width="180rpx" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10 fixedBox" :style="{ 'top': barHeight + 'px' }"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" class="formItemWp " style=""> + <u-input :focus="autoFocus" v-model="materialCode" @focus="materialCode = ''" placeholder="璇峰綍鍏ユ垨鎵爜" + @blur="getMaterialDetails" class="posRt"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="浜у搧绫诲瀷:" prop="QueryProductType" style="font-weight: bold;padding: 0;"> + <u-input v-model.trim="queryForm.QueryProductType" placeholder="璇峰綍鍏ユ垨閫夋嫨" + class="width padding_left25rpx" + :focus="true" + style="margin-left: 15px;font-size: 18px;" + > + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="showProductTypeList" > + <br/> + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="宸ュ簭:" prop="QueryProcess" style="font-weight: bold;padding: 0;"> + <u-input v-model.trim="queryForm.QueryProcess" placeholder="璇峰綍鍏ユ垨閫夋嫨" + class="width padding_left25rpx" + :focus="true" + style="margin-left: 15px;font-size: 18px;" + > + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="showProcessList" > + <br/> + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鏈哄簥鍙�:" prop="equipmentList" required style="font-weight: bold;padding: 0"> + <u-input v-model.trim="warehouse.equipmentList" placeholder="璇峰綍鍏ユ垨鎵爜" + class="width padding_left25rpx" + :focus="true" + style="margin-left: 15px;font-size: 18px;" + > + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="showEquipmentList" > + <br/> + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + </u-row> + <!-- <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="11"> + <u-form-item label="鏈哄簥鍙�:" prop="equipmentList" style="font-weight: bold;padding: 0;"> + <u-input v-model="warehouse.equipmentList" placeholder="璇峰綍鍏ユ垨鎵爜" class="width padding_left25rpx" + style="margin-left: 15px;font-size: 18px;" + @confirm="orderBlurDo" > + </u-input> + </u-form-item> + </u-col> + </u-row> --> + <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鍙栬揣娉㈡鍙�:" prop="DoOrderNo" required style="font-weight: bold;padding: 0"> + <u-input v-model.trim="warehouse.DoOrderNo" placeholder="璇峰綍鍏ユ垨鎵爜" + class="width padding_left25rpx" + :focus="true" + style="margin-left: 15px;font-size: 18px;" + @confirm="orderBlurDo" > + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="containerFocusDo" > + <br/> + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + </u-row> + <!-- <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="11"> + <u-form-item label="鍙栬揣娉㈡鍙�:" prop="DoOrderNo" style="font-weight: bold;padding: 0;"> + <u-input v-model="warehouse.DoOrderNo" placeholder="璇峰綍鍏ユ垨鎵爜" + class="width padding_left25rpx" + style="margin-left: 15px;font-size: 18px;" + @confirm="orderBlurDo" > + </u-input> + </u-form-item> + </u-col> + </u-row> --> + + + + </u-form> + <view style="margin-bottom: 30px;margin-top: 10rpx; width: 100%;" class="lineht_sm" @touchmove.stop> + <checkbox-group @change="checkboxChange"> + <view v-for="(item, eindex) in singlist" :key="eindex"> + <view class="title-wrap fontSize32rpx background_fff padding10" + style="width: 100vw;" > + <u-row> + <u-col span="12"> + <label class="flex align-center"> + <checkbox :value="item.key" :checked="item.checked"/> + <text class="flex justify-center align-center circkle06">{{ eindex + 1 }}</text> + <view class="color_f18202"> + {{ item.wareMaterialCode }} ({{ item.betchNo }}) + </view> + </label> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="text06"> + 鍗曞彿:{{ item.deliveryNo }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="text06"> + 娉㈡鍗曞彿:{{ item.sortOrderNo }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + SAP锛歿{ item.sap_Location }} + </view> + </u-col> + <u-col span="6" class="color_80 text-right" > + 鏈哄簥鍙凤細{{ item.equipment }} + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + 宸ュ簭锛歿{ item.process }} + </view> + </u-col> + <u-col span="6"> + <view class="text06 text-right"> + BOM鍙凤細{{ item.bomNumber }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + + </view> + </u-col> + <u-col span="6"> + <view class="color_f18202 text-right"> + 鍒嗘嫞鏁帮細{{ item.quantity }} + </view> + </u-col> + </u-row> + </view> + </view> + </checkbox-group> + </view> + <view v-if="singlist.length<=0" style="text-align: center">---鏃犳暟鎹�---</view> + <view v-if="totalPages&&pageNow==totalPages" style="text-align: center">---宸茬粡鍒板簳浜�---</view> + <view class="width height140rpx fixed transformX left50 bottom0 background_fff padding40_0"> + <view class="flex justify-around transition"> + <u-button class="width25 bg-grey" @click="checkAll">鍏ㄩ��</u-button> + <u-button class="width25 bg-grey" @click="rest" style="margin: 0 10px">杩斿洖</u-button> + <u-button v-if="!loading" class="width70 bg-f18202 color_F2F2F2" @click="next">涓嬩竴姝{ arr.length }}</u-button> + <u-button v-if="loading" class="width70 bg-f18202 color_F2F2F2" loading>鍔犺浇涓�</u-button> + </view> + </view> + </view> + <view class="box10" v-show="!renameFocus" @touchmove.stop> + <u-row class="border_bottom padding10 box200 background_fff" > + <u-col span="12"> + <u-form-item label="鍘熷洜:" prop="CancelRemark" required class="inp100"> + <u-input v-model="warehouse.CancelRemark" placeholder="璇疯緭鍏ユ挙閿�鍘熷洜"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <scroll-view scroll-y="true"> + <view v-for="(item, eindex) in arr" :key="eindex" style="background-color: #fff;" class="fontSize32rpx"> + <u-row> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{ eindex + 1 }} + </view> + <view class="padding_left10rpx color_f18202"> + {{ item.wareMaterialCode }}({{ item.betchNo }}) + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="text06"> + DO鍗曞彿:{{ item.deliveryNo }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="text06"> + 鍙栬揣娉㈡鍙�:{{ item.sortOrderNo }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + SAP锛歿{ item.sap_Location }} + </view> + </u-col> + <u-col span="6" class="color_80 text-right" > + 鏈哄簥鍙凤細{{ item.equipment }} + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + 宸ュ簭锛歿{ item.process }} + </view> + </u-col> + <u-col span="6"> + <view class="text06 text-right"> + BOM鍙凤細{{ item.bomNumber }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + + </view> + </u-col> + <u-col span="6"> + <view class="text06 text-right"> + 鍒嗘嫞鏁帮細{{ item.quantity }} + </view> + </u-col> + </u-row> + </view> + </scroll-view> + <view class="width height140rpx fixed transformX left50 bottom0 background_fff padding40_0"> + <view class="flex justify-around transition"> + <u-button v-if="!loading2" class="width25 bg-grey" @click="back">涓婁竴姝�</u-button> + <u-button v-if="loading2" class="width25 bg-grey" loading>鍔犺浇涓�</u-button> + <u-button class="width70 bg-f18202 color_F2F2F2" @click="submit">纭鎾ら攢</u-button> + </view> + </view> + + </view> + + <!-- 3绾ц仈鍔� --> + <cascader ref="cascader" :cascaderData="cascaderData" @confirem="cascaderConfirem" :titleData="titleData"> + </cascader> + + <view class="boxList" v-show="containerVisible" @click="containerVisible = false" @touchmove.stop> + <scroll-view class="innerWrap" > + <ul v-for="(item, eindex) in containerList" :key="eindex"> + <li @click="getOutWarehouse(item.value)"> {{ item.value }}</li> + </ul> + </scroll-view> + </view> + <u-select v-model="containerVisibleDo" :list="containerListDo" @confirm="containerConfirmDo"></u-select> + <u-select v-model="view_selectProductType" :list="data_selectProductTypeList" @confirm="selectProductType"></u-select> + <u-select v-model="view_selectProcess" :list="data_selectProcessList" @confirm="selectProcess"></u-select> + <u-select v-model="view_selectEquipment" :list="data_selectEquipmentList" @confirm="selectEquipment"></u-select> + </view> +</template> +<script> +import cascader from '@/components/cascader.vue'; +import ButtonModal from '../../components/buttonModal.vue' +import ModalCode from '../../components/ModalCode.vue' +import { getOutResumeSortGroup, reSumeconfirmSort, selectThereQuery } from '../../api/sort.js' +import { getDate } from '../../utils/dateTime.js' +import { getAttrValue } from '../../utils/tool.js' +import Vue from 'vue' +import mixCheckbox from '@/mixins/checkbox.js' +import {getSortNoListForCancelSort,getSortNoListForCancelSortForProductType} from '@/api/deliver.js' +export default { + mixins: [mixCheckbox], + data() { + return { + queryForm:{ + QueryProcess:'', + QueryProductType:'' + }, + view_selectProductType:false, + view_selectProcess:false, + view_selectEquipment:false, + data_selectProductTypeList: [], + data_selectProcessList: [], + data_selectEquipmentList: [], + containerVisibleDo: false, + containerListDo: [], + // 3绾т笅鎷� + cascaderData: [], + titleData: { + 'locationType': 1,// 1:A3鍖哄煙锛�2:A1-A2鍖哄煙 + 'type': "" + }, + category_name: [], + category_ids: '', + // 鐗╂枡绫诲瀷 涓嬫媺 + typeVisible: false, + typeList: [], + showPk: false, //鍙栬揣寮规 + datapick: [], //宸插彇璐ф暟鎹� + containerVisible: false, + containerList: [], + renameFocus: true, + detailshow: false, + rescode: 0, + resmessage: "", + modalshow: false, + action: this.$myHOST + '/sysFileInfo/uploadImages', + singlist: [], //鐗╂枡璇︽儏 + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + containerCode: '', + type: '', + typeName: '', + process: '', + equipmentList: '', + DoOrderNo: '', + CancelRemark:'' + }, + activeIndex: 100, + detailable: false, + materialCode: '', //鐗╂枡缂栧彿 + warehouseRules: {}, + options: [{ + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + }], + operator: '', + Datetime: getDate(), + loading: false, + loading2: false, + currentPage: 1, //椤垫暟 + timerObj: null, + barHeight: '', + pageNow: '', //鎺ュ彛杩斿洖鐨勯〉鏁� + totalPages: '', //椤垫暟 + totalTs: '', //鎺ュ彛杩斿洖鐨勬�绘潯鏁� + batchNo:'', + autoFocus:true + }; + }, + components: { + ButtonModal, + ModalCode, + cascader + }, + onReady() { + }, + mounted() { + // 璁剧疆fixed瀹氫綅 + this.barHeight = Vue.prototype.CustomBar || 45 + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + // this.getOutWarehouse('',1) + + this.initData(); + }, + onPullDownRefresh() { + this.$nextTick(function () { + uni.stopPullDownRefresh(); //鍋滄褰撳墠椤甸潰涓嬫媺鍒锋柊 + }); + }, + //涓婃媺鍔犺浇 + onReachBottom() { + let _self = this; + if (this.totalPages && this.pageNow >= this.totalPages) { //鏃犳暟鎹� 涓嶅啀璇锋眰 + console.log("鍒板簳浜�") + return + } + uni.showNavigationBarLoading(); + this.$nextTick(function () { + _self.currentPage++; + _self.getOutWarehouse('', this.e); + uni.hideNavigationBarLoading(); + }); + }, + methods: { + //鍒濆鍖栨暟鎹� + initData() { + getSortNoListForCancelSortForProductType({ + 'OrderType':15 + }).then(res => { + this.data_selectProcessList=res.data.processList; + this.data_selectProductTypeList=res.data.productTypeList; + this.data_selectEquipmentList=res.data.equipmentList; + }) + }, + showProductTypeList(){ + this.view_selectProductType=true; + }, + showProcessList(){ + this.view_selectProcess=true; + }, + showEquipmentList(){ + this.view_selectEquipment=true; + }, + selectProductType(context){ + this.queryForm.QueryProductType = context[0].value; + }, + selectProcess(context){ + this.queryForm.QueryProcess = context[0].value; + }, + selectEquipment(context){ + this.warehouse.equipmentList = context[0].value; + }, + //鎵撳紑3绾у脊妗� + kuweiFocus() { + let param = { + 'SortingOrderNo': this.warehouse.DoOrderNo, + 'PickSortFlag': 1 //1鏄彇璐� 2鏄垎鎷o級 + } + this.$refs.cascader.show(param) + }, + // 3绾у脊妗� 纭 + cascaderConfirem(e) { + console.log(e) + this.category_ids = e.select_ids; + this.category_name = e.select_names; + if(this.warehouse.process != e.process){ // 鍙栬揣鍙兘鍙栫浉鍚屽伐搴忕殑鐗╂枡 + this.arr = [] + // this.arrIds = [] + } + this.warehouse.process = e.process; + this.warehouse.equipmentList = e.equipmentList; + this.warehouse.containerCode = '' + this.singlist = [] + this.totalPages = '' + + this.queryForm.QueryProcess=''; + this.queryForm.QueryProductType=''; + + this.getOutWarehouse('', 1) + }, + //鑾峰彇褰撳墠鍖哄煙鐨勯渶瑕佸彇璐х殑瀹瑰櫒鍒楄〃 + getContainerList() { + selectThereQuery({ + 'process': this.warehouse.process, + "equipmentList": this.warehouse.equipmentList, + 'locationType': this.locationType, // 1:A3鍖哄煙锛�2:A1-A2鍖哄煙 + 'type': this.warehouse.type, + 'SortingOrderNo': this.warehouse.DoOrderNo + }).then(res => { + // 娴嬭瘯 + this.containerList = res.data.reduce((curr, item) => { + curr.push({ + label: item, + value: item + }) + return curr; + }, []) + this.containerVisible = true; + }) + }, + //鏌ヨ鐗╂枡 + getOutWarehouse(context, isFirstParam) { + if (this.loading || this.loading2) {// 姝e湪鐐瑰嚮 涓嬩竴姝� 鎴栬�� 杩斿洖 + return + } + let isFirstPage = isFirstParam; + if (context) { + this.warehouse.containerCode = context; + isFirstPage = 1 + this.containerVisible = false + } + // this.$refs.warehouseRef.validate(valid => { + // if (valid) { + if(!this.materialCode){ //鐗╂枡鍙蜂笉瀛樺湪 灏卞垹闄ゆ壒娆� + this.batchNo = '' + } + let params = { + PageNo: this.currentPage, + PageSize: 10, + Equipment: this.warehouse.equipmentList, //鏈哄簥鍙� + SortOrderNo: this.warehouse.DoOrderNo, + SortStatus:1, //宸插垎鎷� + WareMaterialCode:this.materialCode, + BetchNo:this.batchNo, + IsYueKu:false, + IsQueryCancel:true, //琛ㄧず瑕佹煡璇㈠厑璁告挙閿�鐨勬暟鎹� 銆怑ditby shaocx,2023-08-12銆� + } + if (isFirstPage) { + params.PageNo = 1; + params.PageSize = 10; + this.currentPage = 1; + this.singlist = []; + } + + if (this.totalPages && this.params > this.totalPages) { // 鏃犳暟鎹� 涓嶅啀璇锋眰 + console.log("鏃犳暟鎹� 涓嶅啀璇锋眰") + return + } + getOutResumeSortGroup(params).then((res) => { + if (res.code == 200) { + let arrRes = res.data.rows; + if (arrRes.length > 0) { + for (let i = 0; i < arrRes.length; i++) { + let item = arrRes[i]; + item.checked = false; + item.sap_Location = item.sap_Location || ''; + item.key = item.id + ''; + // 澶嶅悎id - 鏇存柊鎻愪氦鐗╂枡鏁版嵁 + let idx1 = this.arr.findIndex((v) => v.key == item.key); + if (idx1 > -1) { + item.checked = true // 鎵撻挬 + this.arr[idx1] = item; + }else{ + item.checked = false + } + } + if (this.currentPage != 1) { + this.singlist = this.singlist.concat(res.data.rows); + } else { + this.singlist = res.data.rows; + } + }else{ + uni.showToast({ + title: `涓嶅瓨鍦ㄧ墿鏂檂, + icon: 'none' + }) + } + this.totalPages = res.data.totalPage + this.pageNow = res.data.pageNo + this.totalTs = res.data.totalRows + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + // } + // }) + }, + //鍒ゆ柇姝ょ墿鏂欑紪鍙锋槸鍚﹀瓨鍦� + getMaterialDetails() { + this.batchNo = getAttrValue(this.materialCode, 'LOTNO') + this.materialCode = getAttrValue(this.materialCode, 'PARTSNUMBER') + if (this.materialCode !== '') { + this.getOutWarehouse('',1) + } + }, + + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + if (Number(val.uncollectedQuantity) < 0 || val.uncollectedQuantity == '' || val.uncollectedQuantity == undefined) { + uni.showToast({ + title: `鍙栬揣鏁伴噺涓嶈兘灏忎簬0`, + icon: 'none' + }) + return + } + if (Number(val.uncollectedQuantity) > Number(Number(val.quantity - val.hasPickQuantity).toFixed(3)) ) { + uni.showToast({ + title: `鍙栬揣鏁伴噺涓嶈兘澶т簬闇�姹傛暟鍜屽凡鍙栬揣涔嬪樊`, + icon: 'none' + }) + } + }, + //纭 + next() { + console.log('涓嬩竴姝�'); + if (this.arr.length == 0) { + this.rescode = 400 + this.resmessage = `瀹瑰櫒涓嬫病鏈夊彲鍙栬揣鐨勭墿鏂檂 + this.$refs.resmodal.show = true + return + } + + let idxN = this.arr.findIndex((v) => v.uncollectedQuantity <= 0 || v.uncollectedQuantity == ''); + if (idxN > -1) { + uni.showToast({ + title: `${this.arr[idxN].wareMaterialCode}鐗╂枡鍙栬揣鏁伴噺瑕佸ぇ浜�0`, + icon: 'none' + }) + return + } + + if (this.loading) { + return + } + + this.loading = true + console.log(this.arr) + this.$nextTick(() => { + this.timerObj = setTimeout(() => { + this.loading = false + this.renameFocus = false; + clearTimeout(this.timerObj) + this.timerObj = null + }, 100) + }) + + }, + submit() { + let sortingLists = this.arr.reduce((curr, item) => { + curr.push({ + ...item, + SortRecordId: item.id, + }) + return curr + }, []) + if (this.arr.length <= 0) { + return + } + let params = { + CancelRemark:this.warehouse.CancelRemark, + Details:sortingLists + } + console.log(params) + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鎾ら攢鍒嗘嫞锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + reSumeconfirmSort(params).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.renameFocus = true + this.resetData(); + this.getOutWarehouse('', 1) + } + }) + } else if (res.cancel) { + + } + }) + }); + }, + + //鏁版嵁閲嶇疆 + resetData() { + this.warehouse.DoOrderNo = ''; + this.warehouse.equipmentList = ''; + this.materialCode = ''; + this.batchNo = ''; + this.arr = []; + this.singlist = []; + this.currentPage = 1 + }, + rest() { + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭杩斿洖锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + uni.navigateTo({ + url: `/pages/index/index` + }) + } else if (res.cancel) { + + } + }) + }); + + }, + //涓婁竴姝� + back() { + if (this.loading2) { + return + } + this.loading2 = true + this.$nextTick(() => { + this.timerObj = setTimeout(() => { + this.loading2 = false + this.renameFocus = true + clearTimeout(this.timerObj) + this.timerObj = null + }, 100) + }) + }, + // 鍏ㄩ儴鎵撻挬 + checkAll(){ + uni.showModal({ + title: '鎻愮ず', + content: '纭畾鏄惁鍏ㄩ�夛紵', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + this.singlist.forEach((item)=>{ + item.checked=true + let idx = this.arr.findIndex((v) => v.key == item.key) + if (idx == -1) { + this.arr.push(item) + // this.arrIds.push(item.key) + } + }) + } else if (res.cancel) { + + } + }) + }); + }, + //鐩戝惉鍘熺敓杩斿洖閿� + onBackPress(e) { + // 姝ゅ涓�瀹氳return涓簍rue锛屽惁鍒欓〉闈笉浼氳繑鍥炲埌鎸囧畾璺緞 + if(this.warehouse.process==''){ + return false //鍙繑鍥� + }else{ + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭杩斿洖锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + uni.redirectTo({ + url: '/pages/index/index' + }) + } else if (res.cancel) { + + } + }) + }); + return true + } + }, + //鍗曞彿 + orderBlurDo(){ + // if(this.warehouse.DoOrderNo == '' && this.singlist.length==0){ + // uni.showToast({ + // title: `璇疯緭鍏ュ彇璐ф尝娆″彿`, + // icon: 'none' + // }) + // return + // } + this.getOutWarehouse('',1) + // this.containerFocus() + }, + //瀹瑰櫒鑱氱劍浜嬩欢 + containerFocus() { + this.getOutWarehouse('',1) + }, + //瀹瑰櫒鑱氱劍浜嬩欢 + containerFocusDo() { + console.log( " containerFocusDo ") + getSortNoListForCancelSort({ + ProductType:this.queryForm.QueryProductType, + Process:this.queryForm.QueryProcess, + Equipment: this.warehouse.equipmentList //鏈哄簥鍙� + }).then(res => { + this.containerListDo = res.data.reduce((curr,item) => { + if(item.clientName==null){ + item.clientName = '' + } + curr.push({ + label: item.sortingOrderNo + '; 鏃堕棿:' + item.sortNoCreateTime + '; 宸ュ簭:' + item.process, + value: item.sortingOrderNo + }) + return curr; + },[]) + this.containerVisibleDo = true; + }) + }, + //瀹瑰櫒閫夋嫨 + containerConfirmDo(context){ + this.warehouse.DoOrderNo = context[0].value + // this.orderBlurDo() + } + } +} +</script> + +<style lang="scss" scoped> +.overflowWrap { + position: relative; + padding-top: 58px; + padding-bottom: 100px +} + +.fixedBox { + background: white; + position: fixed; + height: 53px; + overflow: hidden; + left: 0; + z-index: 3; + width: 100%; +} + +.bg_item { + background: #FFEBCD !important; +} + +.gxSbBox { + width: 100%; +} + +.box10 { + margin-top: -45px; +} + + +.boxList { + transition: all ease 2s; + position: fixed; + bottom: 0; + left: 0; + top: 0; + right: 0; + width: 100%; + height: 100%; + z-index: 999; + background: rgba(0, 0, 0, 0.6); + + .innerWrap { + max-height: 80%; + overflow-y: auto; + background: white; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + + ul { + padding: 0; + margin: 0; + + li { + padding: 0; + margin: 0; + border-bottom: 1px solid #e4e7ed; + list-style-type: none; + display: flex; + flex-direction: row; + line-height: 1; + justify-content: center; + align-items: center; + font-size: 13px; + padding: 14px 0; + flex-direction: column; + } + } + } + +} + +.circleCk { + width: 23px; + height: 23px; + border: 1px solid #f18202; + border-radius: 100%; + display: block; + margin: 0 auto; +} + +// 宸﹀彸甯冨眬 涓嬫媺 +.formItemWp { + padding: 0rpx; + border: 1rpx solid transparent; + margin-bottom: 0; + font-size: 16px; + font-weight: bold; + padding: 0 0 10rpx; + + // 鍥炬爣 + .u-icon--right { + position: absolute; + top: 50%; + margin-top: -5px; + right: 0; + } + // input + .posRt { + position: absolute; + top: 0; + left: 0; + text-align: right; + font-size: 32rpx; + display: flex; + height: 100%; + margin-left: 87px; + width: 70%; + } +} +.textAuto{ + color: #808080;width: 60px;display: inline-block; +} +.radioWp{ + margin-right: 10px; +} +.title-wrap{ + border-bottom: 5px solid #F2F2F2; +} +.text06{ + word-wrap: break-word; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/resume/yukuResume.vue b/LA24030_LuLiPackageLine_Pda/pages/resume/yukuResume.vue new file mode 100644 index 0000000..03f7332 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/resume/yukuResume.vue @@ -0,0 +1,786 @@ +<template> + <view class="overflow overflowWrap"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content"> + <text v-if="totalPages"> ({{ pageNow }}椤�/鍏眥{ totalPages }}椤�/{{ totalTs }}鏉�) </text> + 瓒婂簱鎾ら攢 + </block> + </cu-custom> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class="box20" v-show="renameFocus"> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10 fixedBox" :style="{ 'top': barHeight + 'px' }"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" class="formItemWp " style=""> + <u-input v-model="materialCode" @focus="materialCode = ''" placeholder="璇峰綍鍏ユ垨鎵爜" + @blur="getMaterialDetails" class="posRt"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鍗曞彿:" prop="DoOrderNo" style="font-weight: bold;padding: 0;"> + <u-input v-model="warehouse.DoOrderNo" placeholder="璇峰綍鍏ユ垨鎵爜" + class="width padding_left25rpx" + style="margin-left: 15px;font-size: 18px;" + @confirm="orderBlurDo" > + </u-input> + </u-form-item> + </u-col> + <!-- <u-col span="2" @tap="containerFocusDo" > + <br/> + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> --> + </u-row> + + <u-row class="border_bottom margin_top10rpx padding10 box200" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鏈哄簥鍙�:" prop="equipmentList" style="font-weight: bold;padding: 0;"> + <u-input v-model="warehouse.equipmentList" placeholder="璇峰綍鍏ユ垨鎵爜" class="width padding_left25rpx" + style="margin-left: 15px;font-size: 18px;" + @confirm="orderBlurDo" > + </u-input> + </u-form-item> + </u-col> + </u-row> + + + </u-form> + <view style="margin-bottom: 30px;margin-top: 10rpx; width: 100%;" class="lineht_sm" @touchmove.stop> + <checkbox-group @change="checkboxChange"> + <view v-for="(item, eindex) in singlist" :key="eindex"> + <view class="title-wrap fontSize32rpx background_fff padding10" + style="width: 100vw;" > + <u-row> + <u-col span="12"> + <label class="flex align-center"> + <checkbox :value="item.key" :checked="item.checked"/> + <text class="flex justify-center align-center circkle06">{{ eindex + 1 }}</text> + <view class="color_f18202"> + {{ item.warematerialCode }} ({{ item.batchNo }}) + </view> + </label> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="text06"> + 鍗曞彿锛歿{ item.orderNo }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + SAP锛歿{ item.sap_Location }} + </view> + </u-col> + <u-col span="6" class="color_80 text-right"> + 鏈哄簥鍙凤細{{ item.equipment }} + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + 宸ュ簭锛歿{ item.process }} + </view> + </u-col> + <u-col span="6"> + <view class="color_f18202 text-right"> + 鏁伴噺锛歿{ item.uncollectedQuantity }} + </view> + </u-col> + </u-row> + + </view> + </view> + </checkbox-group> + </view> + <view v-if="singlist.length<=0" style="text-align: center">---鏃犳暟鎹�---</view> + <view v-if="totalPages&&pageNow==totalPages" style="text-align: center">---宸茬粡鍒板簳浜�---</view> + <view class="width height140rpx fixed transformX left50 bottom0 background_fff padding40_0"> + <view class="flex justify-around transition"> + <u-button class="width25 bg-grey" @click="checkAll">鍏ㄩ��</u-button> + <u-button class="width25 bg-grey" @click="rest" style="margin: 0 10px">杩斿洖</u-button> + <u-button v-if="!loading" class="width70 bg-f18202 color_F2F2F2" @click="next">涓嬩竴姝{ arr.length }}</u-button> + <u-button v-if="loading" class="width70 bg-f18202 color_F2F2F2" loading>鍔犺浇涓�</u-button> + </view> + </view> + </view> + <view class="box10" v-show="!renameFocus" @touchmove.stop> + <u-row class="border_bottom padding10 box200 background_fff" > + <u-col span="12"> + <u-form-item label="鍘熷洜:" prop="CancelRemark" required class="inp100"> + <u-input v-model="warehouse.CancelRemark" placeholder="璇疯緭鍏ユ挙閿�鍘熷洜"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <scroll-view scroll-y="true"> + <view v-for="(item, eindex) in arr" :key="eindex" style="background-color: #fff;" class="fontSize32rpx"> + <u-row> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{ eindex + 1 }} + </view> + <view class="padding_left10rpx color_f18202"> + {{ item.warematerialCode }}({{ item.batchNo }}) + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="text06"> + 鍗曞彿:{{ item.orderNo }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + SAP锛歿{ item.sap_Location }} + </view> + </u-col> + <u-col span="6" class="color_80 text-right" > + 鏈哄簥鍙凤細{{ item.equipment }} + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + 宸ュ簭锛歿{ item.process }} + </view> + </u-col> + <u-col span="6"> + <view class="color_f18202 text-right"> + 鏁伴噺锛歿{ item.uncollectedQuantity }} + </view> + </u-col> + </u-row> + </view> + </scroll-view> + <view class="width height140rpx fixed transformX left50 bottom0 background_fff padding40_0"> + <view class="flex justify-around transition"> + <u-button v-if="!loading2" class="width25 bg-grey" @click="back">涓婁竴姝�</u-button> + <u-button v-if="loading2" class="width25 bg-grey" loading>鍔犺浇涓�</u-button> + <u-button class="width70 bg-f18202 color_F2F2F2" @click="submit">纭鎾ら攢</u-button> + </view> + </view> + + </view> + + <!-- 3绾ц仈鍔� --> + <cascader ref="cascader" :cascaderData="cascaderData" @confirem="cascaderConfirem" :titleData="titleData"> + </cascader> + + <view class="boxList" v-show="containerVisible" @click="containerVisible = false" @touchmove.stop> + <scroll-view class="innerWrap" > + <ul v-for="(item, eindex) in containerList" :key="eindex"> + <li @click="getOutWarehouse(item.value)"> {{ item.value }}</li> + </ul> + </scroll-view> + </view> + <u-select v-model="containerVisibleDo" :list="containerListDo" @confirm="containerConfirmDo"></u-select> + </view> +</template> +<script> +import cascader from '@/components/cascader.vue'; +import ButtonModal from '../../components/buttonModal.vue' +import ModalCode from '../../components/ModalCode.vue' +import { getOutYekuGroup, reSumeconfirmYeku, selectThereQuery } from '../../api/sort.js' +import { getDate } from '../../utils/dateTime.js' +import { getAttrValue } from '../../utils/tool.js' +import Vue from 'vue' +import mixCheckbox from '@/mixins/checkbox.js' +import {getQuhuoOrderDo} from '@/api/deliver.js' +export default { + mixins: [mixCheckbox], + data() { + return { + containerVisibleDo: false, + containerListDo: [], + // 3绾т笅鎷� + cascaderData: [], + titleData: { + 'locationType': 1,// 1:A3鍖哄煙锛�2:A1-A2鍖哄煙 + 'type': "" + }, + category_name: [], + category_ids: '', + // 鐗╂枡绫诲瀷 涓嬫媺 + typeVisible: false, + typeList: [], + showPk: false, //鍙栬揣寮规 + datapick: [], //宸插彇璐ф暟鎹� + containerVisible: false, + containerList: [], + renameFocus: true, + detailshow: false, + rescode: 0, + resmessage: "", + modalshow: false, + action: this.$myHOST + '/sysFileInfo/uploadImages', + singlist: [], //鐗╂枡璇︽儏 + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + containerCode: '', + type: '', + typeName: '', + process: '', + equipmentList: '', + DoOrderNo: '', + CancelRemark:'' + }, + activeIndex: 100, + detailable: false, + materialCode: '', //鐗╂枡缂栧彿 + warehouseRules: {}, + options: [{ + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + }], + operator: '', + Datetime: getDate(), + loading: false, + loading2: false, + currentPage: 1, //椤垫暟 + timerObj: null, + barHeight: '', + pageNow: '', //鎺ュ彛杩斿洖鐨勯〉鏁� + totalPages: '', //椤垫暟 + totalTs: '', //鎺ュ彛杩斿洖鐨勬�绘潯鏁� + }; + }, + components: { + ButtonModal, + ModalCode, + cascader + }, + onReady() { + }, + mounted() { + // 璁剧疆fixed瀹氫綅 + this.barHeight = Vue.prototype.CustomBar || 45 + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + + this.getOutWarehouse('',1) + }, + onPullDownRefresh() { + this.$nextTick(function () { + uni.stopPullDownRefresh(); //鍋滄褰撳墠椤甸潰涓嬫媺鍒锋柊 + }); + }, + //涓婃媺鍔犺浇 + onReachBottom() { + let _self = this; + if (this.totalPages && this.pageNow >= this.totalPages) { //鏃犳暟鎹� 涓嶅啀璇锋眰 + console.log("鍒板簳浜�") + return + } + uni.showNavigationBarLoading(); + this.$nextTick(function () { + _self.currentPage++; + _self.getOutWarehouse('', this.e); + uni.hideNavigationBarLoading(); + }); + }, + methods: { + //鎵撳紑3绾у脊妗� + kuweiFocus() { + let param = { + 'SortingOrderNo': this.warehouse.DoOrderNo, + 'PickSortFlag': 1 //1鏄彇璐� 2鏄垎鎷o級 + } + this.$refs.cascader.show(param) + }, + // 3绾у脊妗� 纭 + cascaderConfirem(e) { + console.log(e) + this.category_ids = e.select_ids; + this.category_name = e.select_names; + if(this.warehouse.process != e.process){ // 鍙栬揣鍙兘鍙栫浉鍚屽伐搴忕殑鐗╂枡 + this.arr = [] + // this.arrIds = [] + } + this.warehouse.process = e.process; + this.warehouse.equipmentList = e.equipmentList; + this.warehouse.containerCode = '' + this.singlist = [] + this.totalPages = '' + this.getOutWarehouse('', 1) + }, + //鑾峰彇褰撳墠鍖哄煙鐨勯渶瑕佸彇璐х殑瀹瑰櫒鍒楄〃 + getContainerList() { + selectThereQuery({ + 'process': this.warehouse.process, + "equipmentList": this.warehouse.equipmentList, + 'locationType': this.locationType, // 1:A3鍖哄煙锛�2:A1-A2鍖哄煙 + 'type': this.warehouse.type, + 'SortingOrderNo': this.warehouse.DoOrderNo + }).then(res => { + // 娴嬭瘯 + this.containerList = res.data.reduce((curr, item) => { + curr.push({ + label: item, + value: item + }) + return curr; + }, []) + this.containerVisible = true; + }) + }, + //鏌ヨ鐗╂枡 + getOutWarehouse(context, isFirstParam) { + if (this.loading || this.loading2) {// 姝e湪鐐瑰嚮 涓嬩竴姝� 鎴栬�� 杩斿洖 + return + } + let isFirstPage = isFirstParam; + if (context) { + this.warehouse.containerCode = context; + isFirstPage = 1 + this.containerVisible = false + } + // this.$refs.warehouseRef.validate(valid => { + // if (valid) { + let params = { + PageNo: this.currentPage, + PageSize: 10, + Equipment: this.warehouse.equipmentList, //鏈哄簥鍙� + PurchaseNo: this.warehouse.DoOrderNo, + ItemType: "", + CancelStatus: 0, + IsCancel: false, + // CancelType: 0, + IsYueKu:true + } + if (isFirstPage) { + params.PageNo = 1; + params.PageSize = 10; + this.currentPage = 1; + this.singlist = []; + } + + if (this.totalPages && this.params > this.totalPages) { // 鏃犳暟鎹� 涓嶅啀璇锋眰 + console.log("鏃犳暟鎹� 涓嶅啀璇锋眰") + return + } + getOutYekuGroup(params).then((res) => { + if (res.code == 200) { + let arrRes = res.data.rows; + if (arrRes.length > 0) { + for (let i = 0; i < arrRes.length; i++) { + let item = arrRes[i]; + item.checked = false; + item.sap_Location = item.sap_Location || ''; + item.key = item.id + ''; + // 澶嶅悎id - 鏇存柊鎻愪氦鐗╂枡鏁版嵁 + let idx1 = this.arr.findIndex((v) => v.key == item.key); + if (idx1 > -1) { + item.checked = true // 鎵撻挬 + this.arr[idx1] = item; + }else{ + item.checked = false + } + } + if (this.currentPage != 1) { + this.singlist = this.singlist.concat(res.data.rows); + } else { + this.singlist = res.data.rows; + } + } + this.totalPages = res.data.totalPage + this.pageNow = res.data.pageNo + this.totalTs = res.data.totalRows + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + // } + // }) + }, + //鍒ゆ柇姝ょ墿鏂欑紪鍙锋槸鍚﹀瓨鍦� + getMaterialDetails() { + let batchNo = getAttrValue(this.materialCode, 'LOTNO') + let sap_Location = getAttrValue(this.materialCode, 'SAP') + let quantity = getAttrValue(this.materialCode, 'QUANTITY') || 0 + this.materialCode = getAttrValue(this.materialCode, 'PARTSNUMBER') + let materialCode = this.materialCode; + let containerCode = this.warehouse.containerCode; + if (this.materialCode !== '') { + const indexNow = this.singlist.findIndex((item)=>(item.wareMaterialCode == this.materialCode && item.batchNo == batchNo && item.sap_Location == sap_Location)) + if (indexNow > -1) { + this.singlist[indexNow].checked = true; + // this.singlist[indexNow].uncollectedQuantity = quantity + // 鎵撻挬 骞跺瓨鍒版暟缁勪腑 + let idx = this.arr.findIndex((v) => v.key == this.singlist[indexNow].key) + if (idx == -1) { + this.arr.push(this.singlist[indexNow]) + } + this.singlist.unshift(...this.singlist.splice(indexNow, 1)) + } else { + uni.showToast({ + title: `涓嶅瓨鍦ㄧ墿鏂檂, + icon: 'none' + }) + } + } + }, + + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + if (Number(val.uncollectedQuantity) < 0 || val.uncollectedQuantity == '' || val.uncollectedQuantity == undefined) { + uni.showToast({ + title: `鍙栬揣鏁伴噺涓嶈兘灏忎簬0`, + icon: 'none' + }) + return + } + if (Number(val.uncollectedQuantity) > Number(Number(val.quantity - val.hasPickQuantity).toFixed(3)) ) { + uni.showToast({ + title: `鍙栬揣鏁伴噺涓嶈兘澶т簬闇�姹傛暟鍜屽凡鍙栬揣涔嬪樊`, + icon: 'none' + }) + } + }, + //纭 + next() { + console.log('涓嬩竴姝�'); + if (this.arr.length == 0) { + this.rescode = 400 + this.resmessage = `瀹瑰櫒涓嬫病鏈夊彲鍙栬揣鐨勭墿鏂檂 + this.$refs.resmodal.show = true + return + } + + let idxN = this.arr.findIndex((v) => v.uncollectedQuantity <= 0 || v.uncollectedQuantity == ''); + if (idxN > -1) { + uni.showToast({ + title: `${this.arr[idxN].wareMaterialCode}鐗╂枡鍙栬揣鏁伴噺瑕佸ぇ浜�0`, + icon: 'none' + }) + return + } + + if (this.loading) { + return + } + + this.loading = true + console.log(this.arr) + this.$nextTick(() => { + this.timerObj = setTimeout(() => { + this.loading = false + this.renameFocus = false; + clearTimeout(this.timerObj) + this.timerObj = null + }, 100) + }) + + }, + submit() { + let sortingLists = this.arr.reduce((curr, item) => { + curr.push({ + ...item, + deliveryRecordId: item.id, + }) + return curr + }, []) + if (this.arr.length <= 0) { + return + } + let params = { + cancelAddPODeliveryRemark:this.warehouse.CancelRemark, + cancelDeliveryRecordAddDetails:sortingLists + } + console.log(params) + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鎾ら攢瓒婂簱锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + reSumeconfirmYeku(params).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.renameFocus = true + this.resetData(); + this.getOutWarehouse('', 1) + } + }) + } else if (res.cancel) { + + } + }) + }); + }, + + //鏁版嵁閲嶇疆 + resetData() { + this.warehouse.DoOrderNo = ''; + this.warehouse.equipmentList = ''; + this.materialCode = ''; + this.arr = []; + this.singlist = []; + }, + rest() { + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭杩斿洖锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + uni.navigateTo({ + url: `/pages/index/index` + }) + } else if (res.cancel) { + + } + }) + }); + + }, + //涓婁竴姝� + back() { + if (this.loading2) { + return + } + this.loading2 = true + this.$nextTick(() => { + this.timerObj = setTimeout(() => { + this.loading2 = false + this.renameFocus = true + clearTimeout(this.timerObj) + this.timerObj = null + }, 100) + }) + }, + // 鍏ㄩ儴鎵撻挬 + checkAll(){ + uni.showModal({ + title: '鎻愮ず', + content: '纭畾鏄惁鍏ㄩ�夛紵', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + this.singlist.forEach((item)=>{ + item.checked=true + let idx = this.arr.findIndex((v) => v.key == item.key) + if (idx == -1) { + this.arr.push(item) + // this.arrIds.push(item.key) + } + }) + } else if (res.cancel) { + + } + }) + }); + }, + //鐩戝惉鍘熺敓杩斿洖閿� + onBackPress(e) { + // 姝ゅ涓�瀹氳return涓簍rue锛屽惁鍒欓〉闈笉浼氳繑鍥炲埌鎸囧畾璺緞 + if(this.warehouse.process==''){ + return false //鍙繑鍥� + }else{ + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭杩斿洖锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + uni.redirectTo({ + url: '/pages/index/index' + }) + } else if (res.cancel) { + + } + }) + }); + return true + } + }, + //鍗曞彿 + orderBlurDo(){ + if(this.warehouse.DoOrderNo == '' && this.singlist.length==0){ + uni.showToast({ + title: `璇疯緭鍏ュ彇璐ф尝娆″彿`, + icon: 'none' + }) + return + } + this.getOutWarehouse('',1) + // this.containerFocus() + }, + //瀹瑰櫒鑱氱劍浜嬩欢 + containerFocus() { + this.getOutWarehouse('',1) + }, + //瀹瑰櫒鑱氱劍浜嬩欢 + containerFocusDo() { + console.log( " containerFocusDo ") + getQuhuoOrderDo({ + 'OrderType':15 + }).then(res => { + this.containerListDo = res.data.reduce((curr,item) => { + if(item.clientName==null){ + item.clientName = '' + } + curr.push({ + label: item.sortingOrderNo + '; 鏃堕棿:' + item.deliveryNoCreateTime + '; 瀹㈡埛:' + item.clientName, + value: item.sortingOrderNo + }) + return curr; + },[]) + this.containerVisibleDo = true; + }) + }, + //瀹瑰櫒閫夋嫨 + containerConfirmDo(context){ + this.warehouse.DoOrderNo = context[0].value + // this.orderBlurDo() + } + } +} +</script> + +<style lang="scss" scoped> +.overflowWrap { + position: relative; + padding-top: 58px; + padding-bottom: 100px +} + +.fixedBox { + background: white; + position: fixed; + height: 53px; + overflow: hidden; + left: 0; + z-index: 3; + width: 100%; +} + +.bg_item { + background: #FFEBCD !important; +} + +.gxSbBox { + width: 100%; +} + +.box10 { + margin-top: -45px; +} + + +.boxList { + transition: all ease 2s; + position: fixed; + bottom: 0; + left: 0; + top: 0; + right: 0; + width: 100%; + height: 100%; + z-index: 999; + background: rgba(0, 0, 0, 0.6); + + .innerWrap { + max-height: 80%; + overflow-y: auto; + background: white; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + + ul { + padding: 0; + margin: 0; + + li { + padding: 0; + margin: 0; + border-bottom: 1px solid #e4e7ed; + list-style-type: none; + display: flex; + flex-direction: row; + line-height: 1; + justify-content: center; + align-items: center; + font-size: 13px; + padding: 14px 0; + flex-direction: column; + } + } + } + +} + +.circleCk { + width: 23px; + height: 23px; + border: 1px solid #f18202; + border-radius: 100%; + display: block; + margin: 0 auto; +} + +// 宸﹀彸甯冨眬 涓嬫媺 +.formItemWp { + padding: 0rpx; + border: 1rpx solid transparent; + margin-bottom: 0; + font-size: 16px; + font-weight: bold; + padding: 0 0 10rpx; + + // 鍥炬爣 + .u-icon--right { + position: absolute; + top: 50%; + margin-top: -5px; + right: 0; + } + // input + .posRt { + position: absolute; + top: 0; + left: 0; + text-align: right; + font-size: 32rpx; + display: flex; + height: 100%; + margin-left: 87px; + width: 70%; + } +} +.textAuto{ + color: #808080;width: 60px;display: inline-block; +} +.radioWp{ + margin-right: 10px; +} +.title-wrap{ + border-bottom: 5px solid #F2F2F2; +} +.text06{ + word-wrap: break-word; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/scrap/photo.vue b/LA24030_LuLiPackageLine_Pda/pages/scrap/photo.vue new file mode 100644 index 0000000..208e2c0 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/scrap/photo.vue @@ -0,0 +1,443 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鎶ュ簾鍗曟媿鐓х暀搴�</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class=""> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鎶ュ簾鍗曞彿:" prop="warehouseCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.warehouseCode" @focus="focu=true" placeholder="璇峰綍鍏ユ垨鎵爜" + @blur="getMaterialDetails" class="width padding_left25rpx" + style="font-weight: bolder;margin-left: 30rpx;" /> + <u-icon v-if="warehouse.warehouseCode && focu" @click="warehouse.warehouseCode=''" + name="close-circle-fill" color="#848484"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <scroll-view scroll-y="true" style="height: 67vh;"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpredel" @open="open" @close='close' :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap "> + <view :key="eindex+'singlist'" :class="item.cardNum?'bd-ffe6c9':item.edit?'clickactive':''" + class="fontSize30rpx width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + {{item.wareMaterialCode}} ({{item.wareMaterialName}}) {{item.barNo}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 澶х被锛歿{item.wareMaterialTypeName}} + </view> + </u-col> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 灏忕被锛歿{item.wareMaterialSubTypeName}} + </view> + </u-col> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 鏁伴噺锛歿{item.quantity}} + </view> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </scroll-view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom" v-if="!printflag"> + <!-- <view class="pop "> --> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.wareMaterialCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡澶х被</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡灏忕被</text> + <text>{{materlist.wareMaterialSubTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏉$爜</text> + <text>{{materlist.barCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏁伴噺</text> + <text>{{materlist.quantity}}</text> + </view> + <!-- </view> --> + <!-- <view class="margin_top140rpx"> + <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='init' @reset='rest' /> + </view> --> + </u-popup> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom" v-if="printflag"> + <!-- <view class="pop "> --> + <h2 class="text_align_center">鐗╂枡鏍囩</h2> + <view class="border margin" style="margin-bottom: 0;"> + <h2 class="text_align_center padding_bottom18 padding15 margin_top10rpx margin_bottom10rpx"> + {{materlist.wareMaterialCode}} + </h2> + <view class="margin" style="margin-top: 0;"> + <table border="1" cellpadding='12' width='100%' + style='border-collapse:collapse;color: #515151;'> + <tr> + <th>鐗╂枡澶х被</th> + <th>{{materlist.materialTypeName}}</th> + </tr> + <tr> + <th>鐗╂枡灏忕被</th> + <th>{{materlist.wareMaterialSubTypeName}}</th> + </tr> + <tr> + <th>鐗╂枡瑙勬牸</th> + <th>{{materlist.specificationModel}}</th> + </tr> + </table> + <tki-barcode ref="barcode" onval :val="code" :load-make="true" :opations="barOpations" /> + </view> + </view> + </u-popup> + <!-- <view + class="width fixed bottom140 margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-upload :action="action" :before-upload="beforeUpload" upload-text="棰嗙敤鍗曠収鐗�" :file-list="fileList1" + @on-success="successPic" @on-remove="remove"> + </u-upload> + </view> --> + + <view + class="width fixed bottom140 margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <view class="" style="width: 250rpx;height: 250rpx;border: 1px dashed #aaaaaa;position: relative;"> + <image :src="image" mode="" @click="imgClick(image)" style="width: 100%;height: 100%;"></image> + </view> + <u-icon @click="delimage" name='close-circle-fill' color='red' size='60' v-if="image!==''" + style='position: absolute;left:200rpx;top: 20rpx;'></u-icon> + <view class="" style="color: #aaaaaa;" v-if="image==''"> + <u-icon name="plus" @click='upload' size='48' style='position: absolute;left: 120rpx;top: 100rpx;'> + </u-icon> + <text class="fontSize32rpx" style="position: absolute;left: 85rpx;top: 160rpx;">閫夋嫨鍥剧墖</text> + </view> + </view> + <button-modal :issueShow='true' issueTitle="鎵撳嵃" subTitle='鎻愪氦' restTiltle='閲嶇疆' @reset='reset' + @submit='submit' /> + </view> + </view> +</template> + +<script> + import ButtonModal from '@/components/buttonModal.vue' + import ModalCode from '@/components/ModalCode.vue' + import tkiBarcode from '@/components/tki-barcode/tki-barcode' + import { + pathToBase64 + } from 'image-tools' + import { + query, + imagesUpdate + } from '@/api/scrap.js' + export default { + data() { + return { + detailshow: false, + rescode: 0, + resmessage: "", + current: 0, //婊戝潡榛樿鍊� + printNum: "", //鎵撳嵃鏁伴噺 + focu: false, + printflag: false, //鎵撳嵃/鐗╂枡淇℃伅锛宼rue涓虹墿鏂欎俊鎭� + fileList: [], + fileList1: [], //涓婁紶鍥剧墖鍒楄〃 + lastlist: [], + overlist: [], //鏀惰揣鍒楄〃 + lacklist: [], //缂烘枡鍒楄〃 + flag: true, + action: this.$myHOST + '/sysFileInfo/uploadImages', + singlist: [ + // { + // "id": 0, + // "deliverDate": "string", + // "wareMaterialCode": "string", + // "name": "string", + // "describe": "string", + // "category": "string", + // "materialTypeId": "string", + // "materialTypeName": "string", + // "specificationModel": "string", + // "long": "string", + // "width": "string", + // "high": "string", + // "weight": "string", + // "purchaseNo": "string", + // "barCode": "string", + // "surplusQuantity": 11, + // "unit": "string", + // "basicExpressInfoCode": "string", + // "basicExpressInfoName": "string", + // "deliveryQuantity": "string", + // "goodsQuantity": "string", + // "deliveryNo": "string" + // }, + ], //鐗╂枡璇︽儏 + base: '', + image: '', + lists: [{ + name: '鏀惰揣(50)' + }, { + name: '缂烘枡' + }], + list: [], + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + warehouseCode: '' + }, + warehouseRules: { + warehouseCode: [{ + required: true, + message: '鎶ュ簾鍗曞彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }], + base:'', + operator: '', + QuantityTotal: '', //閫佽揣鎬绘暟 + uncollectedTotal: '', //鏀惰揣鎬绘暟 + lackTotal: '', //缂鸿揣鎬绘暟 + code: '', + barOpations: { + width: 1.8, + height: 120, + fontSize: 24, + fontColor: "#000000", + displayValue: true, + textAlign: "center", + textPosition: "bottom", + textMargin: 5, + background: "#FFFFFF", + margin: 5 + } + }; + }, + components: { + ButtonModal, + ModalCode, + tkiBarcode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + init() { + // this.tomy() + this.printflag = true + this.code = this.materlist.wareMaterialCode // 鐢熸垚涓�缁寸爜鍜屼簩缁寸爜 + }, + upload() { + uni.chooseImage({ + sourceType: ["camera", "album"], + sizeType: "original", + count: 1, + success: (res) => { + pathToBase64(res.tempFilePaths[0]).then(base64 => { + this.image = res.tempFilePaths[0] + this.base=JSON.stringify(base64) + uni.uploadFile({ + url: this.action, + filePath: res.tempFilePaths[0], + formData: { + 'images': JSON.stringify(base64) + }, + success: (res) => { + var str = JSON.parse(res.data) + } + }) + }) + } + }) + }, + delimage() { + this.image = '' + this.$u.toast('绉婚櫎鎴愬姛') + }, + imgClick(url) { + if(this.image!==''){ + var imgArr = []; + imgArr.push(url) + //棰勮鍥剧墖 + uni.previewImage({ + urls: imgArr, + current: imgArr[0] + }); + } + }, + //缂栬緫鐘舵�佹牱寮� + dc(e) { + e.cardNum = true + this.$forceUpdate() + }, + //鐗╂枡鏌ヨ + getMaterialDetails() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focu = false + if (this.warehouse.warehouseCode !== '') { + query(this.warehouse.warehouseCode).then((res) => { + if (res.code == 200) { + this.singlist = res.data.rows + if (res.data.rows.length == 0) { + this.resmessage = '鏆傛棤鏁版嵁' + this.rescode = 400 + this.$refs.resmodal.show = true + } + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + } + + }, 200) + } + }) + }, + //鍒犻櫎璇︽儏 + longpredel(index, eindex) { + this.singlist[index].cardNum = true + this.printflag = false + if (eindex == 1) { + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + }, + //鍗$墖閫変腑 + click(e) { + e.cardNum = true + this.$forceUpdate() + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + this.$forceUpdate() + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + // successPic(data, index, lists, name) { + // this.fileList.push(data.data) + // }, + // //鍒犻櫎鍥剧墖 + // remove(index, lists, name) { + // this.fileList.splice(index, 1) + // }, + //纭鏀惰揣 + submit() { + let params = { + id: this.singlist[0].ordersId, + siteCode: this.base + } + imagesUpdate(params).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.reset() + } + }) + }, + //娓呮閫変腑 + reset() { + this.singlist = [] + this.warehouse.warehouseCode = '' + this.fileList = [] + this.fileList1 = [] + }, + //鎵撳嵃 + onPrint() { + let _this = this + if (!uni.getStorageSync("deviceId")) { + uni.showToast({ + title: '璇疯繛鎺ユ墦鍗版満', + icon: 'error', + duration: 2000 + }) + return + } + this.writeBLECharacteristicValue() + }, + } + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/scrap/scrap.vue b/LA24030_LuLiPackageLine_Pda/pages/scrap/scrap.vue new file mode 100644 index 0000000..3979140 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/scrap/scrap.vue @@ -0,0 +1,711 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鎶ュ簾</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" required + style="font-size: 32rpx;font-weight: bold;padding: 0;"> + <u-input v-model="warehouse.WareContainerCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="warehouse.WareContainerCode=''" + :focus="true" + @blur="checkTask" + class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + <!-- <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> --> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" style="font-size: 32rpx;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.WareMaterialCode" @focus="warehouse.WareMaterialCode = ''" placeholder="璇峰綍鍏ユ垨鎵爜" + @blur="checkTask" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + <!-- <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> --> + </u-row> + + </u-form> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view v-if="singlist.length>0" :style="'height:calc(100vh - '+(CustomBar+225)+'px'"> + <view class="margin_top10rpx overflow_auto" style="height:calc(100% - 30rpx)"> + <scroll-view scroll-y="true"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpress" @open="open" :options="options"> + <view class="item u-border-bottom "> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap itemTap" @tap.stop.prevent="pitch(item)" + :class="item.edit?'clickactive':''"> + <view :key="eindex+'singlist'" + class="fontSize32rpx width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="11" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 40rpx;height: 40rpx;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + {{item.wareMaterialCode}} - {{item.batchNo}} + </view> + </u-col> + <u-col span='1' v-if='sign'> + <u-icon name='question-circle' color='#f18202'></u-icon> + </u-col> + </u-row> + <u-row style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + <u-col span="6"> + <view class="" > + 鐗╂枡鍚嶇О锛歿{item.wareMaterialName}} + </view> + </u-col> + <u-col span="6"> + <view class=""> + 鎶ュ簾鏁伴噺锛歿{item.quantity}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 宸叉姤搴熸暟閲忥細{{item.completeQuantity}} + </view> + </u-col> + <u-col span="5"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.uncollectedQuantity" type="number" + @tap.prevent.stop="" + @blur.stop.prevent="changeNum(item,$event)" placeholder="璇疯緭鍏ユ姤搴熸暟閲�" /> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </scroll-view> + </view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom" :closeable='true'> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <!-- <scroll-view scroll-y="true" style="height: 50vh;"> --> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.wareMaterialCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.wareMaterialName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹瑰櫒缂栧彿</text> + <text>{{materlist.wareContainerCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">搴撳瓨鏁伴噺</text> + <text>{{materlist.quantity}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡澶х被</text> + <text>{{materlist.wareMaterialCategoryName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡灏忕被</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎶ュ簾鍗曞彿</text> + <text>{{materlist.orderNo}}</text> + </view> + + </view> + </u-popup> + </view> + <!-- <button-modal :empTytowerShow='true' cleaningTitle='閲嶇疆' @reset='rest' garmenTitle='纭鎶ュ簾' @submit='submit' /> --> + <button-modal :issueShow='true' issueTitle="鎵撳嵃" subTitle='纭' restTiltle='閲嶇疆' @reset='rest' + @submit='submit' @issue="init"/> + </view> +</template> + +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import BluePrint from '@/pages/print/bluePrint.js' + import {getAttrValue} from '@/utils/tool.js' +import { addPrintRecord } from '../../api/print.js' + + import { + scrapQuery, + confirm + } from '@/api/scrap.js' + export default { + data() { + return { + detailshow: false, + renameFocus: false, + modalshow: false, + issueShow: false, + rescode: 0, + resmessage: "", + focuM: false, + focu: true, + sign: false, //闂鏍囪瘑 + operator: '', + singlist: [], //鐗╂枡璇︽儏 + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }], + materlist: {}, + warehouse: { + 'WareContainerCode':"", + 'WareMaterialCode':"", + 'BatchNo':"" + }, + warehouseRules: { + // Code: [{ + // required: true, + // message: '浜岀淮鐮佷笉鑳戒负绌�', + // trigger: 'blur' + // }] + }, + arr: [], + addForm:{ + // 'code':123 + } + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //楠岃瘉浜岀淮鐮� + checkTask() { + if(this.warehouse.WareContainerCode=='' || this.warehouse.WareMaterialCode==''){ + return + } + if(this.warehouse.WareMaterialCode.length < 50) { + return + } + // 閿欒鐮佹彁绀� + let str = this.warehouse.WareMaterialCode.replace(/\s/g,'') + if(str.indexOf('LOTNO') == -1 || str.indexOf('PARTSNUMBER') == -1){ + uni.showToast({ + title:'浜岀淮鐮佹牸寮忛敊璇�', + icon:'none', + duration: 2000 + }) + return + } + //鑾峰彇鎵规 + this.warehouse.BatchNo = getAttrValue(this.warehouse.WareMaterialCode,'LOTNO') + //鐗╂枡缂栧彿 + this.warehouse.WareMaterialCode = getAttrValue(this.warehouse.WareMaterialCode,'PARTSNUMBER') + // SAP --- && item.sap_Location == SAP + let SAP = getAttrValue(this.warehouse.WareMaterialCode,'SAP') + + this.$refs.warehouseRef.validate(valid => { + if (valid) { + scrapQuery({ + ...this.warehouse, + 'sap_Location':SAP + }).then((res) => { + if (res.code == 200) { + if (res.data.length <= 0) { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + return + } + this.singlist = res.data + this.singlist.forEach(item => { + item.uncollectedQuantity =(Number(item.quantity) -Number( item.completeQuantity) ).toFixed(3) + if (item.quantity) { + item.edit = true + } + }) + } else { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + } + }) + } + }) + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + this.singlist.forEach(item => { + item.materlist = [{ + issue: '' + }] + }) + this.materlist = this.singlist[index] + this.detailshow = true + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val, event) { + //闃叉绌块�� + event.stopPropagation() + if(val==''){ + return + } + // val.uncollectedQuantity = Number(val.uncollectedQuantity.toString().match(/^\d+(?:\.\d{0,2})?/)) // 淇濈暀涓や綅灏忔暟 + if (val.uncollectedQuantity >Number( val.quantity) - Number( val.completeQuantity)){ + this.$refs.resmodal.show = true + this.resmessage = '鏁伴噺澶т簬鎬绘暟鍜屽凡鎶ュ簾鏁伴噺宸�' + this.rescode = 400 + } + }, + rest() { + this.warehouse.WareContainerCode = '' + this.warehouse.WareMaterialCode = '' + this.singlist = [] + }, + //纭 + submit() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + + this.arr = this.singlist.filter(item => item.edit == 1) + if (this.arr == 0) { + this.$refs.resmodal.show = true + this.resmessage = '璇烽�夋嫨鎶ュ簾鐗╂枡' + this.rescode = res.code + return + } + const index = this.arr.findIndex(item => { + return item.uncollectedQuantity == '' || item.uncollectedQuantity == undefined || item.uncollectedQuantity == 0 + }) + if(index > -1) { + this.$refs.resmodal.show = true + this.resmessage = '璇峰~鍐欐姤搴熸暟閲�' + this.rescode = res.code + return + } + + let details = [] + this.arr.forEach(item => { + details.push({ + createdTime: this.Datetime, + updatedTime: this.Datetime, + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + wareContainerCode:item.wareContainerCode, + wareMaterialCode: item.wareMaterialCode, + wareMaterialName: item.wareMaterialName, + price: item.price, + batchNo: item.batchNo, + id:item.id, + completeQuantity:item.completeQuantity, + ordersId:item.ordersId, + quantity: item.uncollectedQuantity, + orderNo: item.orderNo, + sap_Location:item.sap_Location, + scrapMaterialId:item.scrapMaterialId + }) + }) + + uni.showModal({ + title: '鎻愮ず', + content: '纭鎶ュ簾', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + confirm(details).then((res) => { + this.$refs.resmodal.show = true + this.resmessage = res.message + this.rescode = res.code + if (res.code == 200) { + this.rest() + } + }) + } else if (res.cancel) { + + } + }) + }); + + } + }) + }, + + init() { + if (this.singlist.length <= 0) { + this.detailshow = false + this.rescode = 400 + this.resmessage = "娌℃湁闇�瑕佹墦鍗扮殑鐗╂枡" + this.$refs.resmodal.show = true + return + } + this.arrPt = this.singlist.filter((v) => v.edit == true) + if (this.arrPt.length <= 0) { + uni.showToast({ + icon: 'none', + title: '璇烽�変腑鎵撳嵃鐨勭墿鏂欏苟濉啓鏁伴噺', + duration: 2000 + }) + return + } + + let arr3 = this.arrPt.findIndex((v) => v.wareMaterialCode == "" || v.uncollectedQuantity <= 0 || v.uncollectedQuantity == undefined || v.uncollectedQuantity == ''|| v.batchNo == ''|| v.batchNo == null) + + if (arr3 >= 0) { + if (this.arrPt[arr3].wareMaterialCode == '') { + this.detailshow = false + this.rescode = 400 + this.resmessage = `鐗╂枡缂栧彿涓虹┖锛屼笉鑳界户缁墦鍗癭 + this.$refs.resmodal.show = true + } + if (this.arrPt[arr3].batchNo == '' || this.arrPt[arr3].batchNo == null) { + this.detailshow = false + this.rescode = 400 + this.resmessage = `鎵规涓虹┖锛屼笉鑳界户缁墦鍗癭 + this.$refs.resmodal.show = true + } + if (this.arrPt[arr3].uncollectedQuantity <= 0 || this.arrPt[arr3].uncollectedQuantity == undefined || this.arrPt[arr3].uncollectedQuantity == '') { + this.detailshow = false + this.rescode = 400 + this.resmessage = `鏁伴噺澶т簬0` + this.$refs.resmodal.show = true + } + return + } + let arr4 = this.arrPt.findIndex((v) => v.uncollectedQuantity > v.quantity - v.completeQuantity) + if (arr4 >= 0) { + this.detailshow = false + this.rescode = 400 + this.resmessage = `澶т簬鎶ュ簾鏁伴噺涓庡凡鎶ュ簾鏁伴噺涔嬪樊` + this.$refs.resmodal.show = true + return + } + this.print() + }, + + //鎵撳嵃 + print() { + // 鏁扮粍鍙湁涓�涓璞� + this.materlist = this.arrPt[0] + uni.showLoading({//闃叉澶氭鐐瑰嚮 + mask: true, + title: "姝e湪杩炴帴..." + }) + let ptintContext = [{ + type: 'text', + x: 0, + y: 0, + text: '', + size: 2, + rotate: 0, + bold: 0, + underline: false, + reverse: false + }, + { + type: 'text', + x: 0, + y: 0, + text: '', + size: 2, + rotate: 0, + bold: 0, + underline: false, + reverse: false + }, + { + type: 'text', + x: 0, + y: 0, + text: '', + size: 2, + rotate: 0, + bold: 0, + underline: false, + reverse: false + }, + /* 浠ヤ笂绌烘暟鎹紝涓洪槻姝涪鍖呮椂鎵撳嵃涓嶆甯� */ + { + type: 'line', + x1: 3, + y1: 3, + x2: 565, + y2: 3, + width: 2 + }, + { + type: 'line', + x1: 3, + y1: 3, + x2: 3, + y2: 345, + width: 2 + }, + { + type: 'line', + x1: 3, + y1: 345, + x2: 565, + y2: 345, + width: 2 + }, + { + type: 'line', + x1: 565, + y1: 345, + x2: 565, + y2: 3, + width: 2 + }, + { + type: 'text', + x: 80, + y: 15, + text: '鐗ч噹姹借溅瑁呭(姝︽眽)鏈夐檺鍏徃', + size: 3, + rotate: 0, + bold: 1, + underline: false, + reverse: false + }, + { + type: 'line', + x1: 3, + y1: 60, + x2: 565, + y2: 60, + width: 2 + }, + { + type: 'text', + x: 10, + y: 75, + text: `鐗╂枡缂栧彿: ${this.materlist.wareMaterialCode}`, + size: 2, + rotate: 0, + bold: 1, + underline: false, + reverse: false + }, + { + type: 'line', + x1: 3, + y1: 110, + x2: 380, + y2: 110, + width: 2 + }, + { + type: 'text', + x: 10, + y: 125, + text: `鐗╂枡鍚嶇О: ${this.materlist.materialTypeId || ''}`, + size: 2, + rotate: 0, + bold: 1, + underline: false, + reverse: false + }, + { + type: 'line', + x1: 3, + y1: 160, + x2: 380, + y2: 160, + width: 2 + }, + { + type: 'text', + x: 10, + y: 175, + text: `鎵规: ${this.materlist.batchNo}`, + size: 2, + rotate: 0, + bold: 1, + underline: false, + reverse: false + }, + { + type: 'line', + x1: 3, + y1: 210, + x2: 565, + y2: 210, + width: 2 + }, + { + type: 'line', + x1: 380, + y1: 60, + x2: 380, + y2: 210, + width: 2 + }, + { type: 'qr', x: 410, y: 72, text: `PARTS NUMBER: ${this.materlist.wareMaterialCode},SAP: ${this.materlist.sap_Location || ''},LOT NO: ${this.materlist.batchNo},QUANTITY: ${this.materlist.uncollectedQuantity}`, width: 3, level: 1 }, + { + type: 'text', + x: 10, + y: 225, + text: `鏁伴噺(QTY): ${this.materlist.uncollectedQuantity}`, + size: 2, + rotate: 0, + bold: 1, + underline: false, + reverse: false + }, + { + type: 'line', + x1: 3, + y1: 260, + x2: 565, + y2: 260, + width: 2 + }, + { + type: 'text', + x: 160, + y: 278, + text: `鏍囪闂浠禶, + size: 4, + rotate: 0, + bold: 1, + underline: false, + reverse: false + }, + ] + console.log(ptintContext) + // addPrintRecord(this.addForm).then(res => { //娴嬭瘯 + BluePrint.print(this.$store, ptintContext).then((res) => { + this.printHandle() + }).catch((err) => { + uni.hideLoading(); + uni.showToast({ + icon: 'error', + title: '鎵撳嵃澶辫触', + duration: 2000 + }) + }) + }, + printHandle(){ + let routes = getCurrentPages(); // 鑾峰彇褰撳墠鎵撳紑杩囩殑椤甸潰璺敱鏁扮粍 + let curRoute = routes[routes.length - 1].route //鑾峰彇褰撳墠椤甸潰璺敱 + if (curRoute == 'pages/scrap/scrap') { + this.arrPt.splice(0, 1) + if(this.arrPt.length==0){ + uni.hideLoading(); + uni.showToast({ + title: `鎵撳嵃瀹屾垚`, + duration: 2000 + }) + return + } + uni.showLoading({ + mask: true, + title: `鎵撳嵃鎴愬姛锛�${this.materlist.wareMaterialCode}` + }) + this.timer = setTimeout(() => {// 璁剧疆瀹氭椂鍣ㄧ殑浣滅敤锛氳繛鎺ヨ摑鐗欏け璐ヨ烦椤甸潰锛宩s杩愯鏈夋椂鏈夊欢杩燂紝閫犳垚璇诲彇褰撳墠椤甸潰璺敱閿欒 + clearTimeout(this.timer) + this.print() + + // 娣诲姞鎵撳嵃璁板綍锛氬拰鎵撳嵃鍒嗗紑锛屼簰涓嶅共鎵� + this.addForm.code = this.materlist.wareMaterialCode; + this.addForm.name = this.materlist.wareMaterialName; + this.addForm.batchNo = this.materlist.batchNo; + console.log(this.addForm) + //杩欓噷涓嶅啀璁板綍鎵撳嵃璁板綍锛屽洜涓烘湁浜嗘枒椹墦鍗� 銆怑ditby shaocx,2023-05-22銆� + /* + addPrintRecord(this.addForm).then(res => { + if (res.code == 200) { + } else { + uni.hideLoading(); + uni.showToast({ + icon: 'none', + title: '鎵撳嵃璁板綍瀛樺偍澶辫触', + duration: 2000 + }) + } + }) + //*/ + }, 5000) + } + }, + //閫変腑 + pitch(e) { + e.edit = !e.edit + this.arr = this.singlist.filter(item => item.edit) + this.$forceUpdate() + }, + }, + + } +</script> + +<style lang="scss"> + .clickactive { + position: relative; + border: 1px solid #f18202; + border-radius: 5rpx; + background: white !important; + + &::after { + content: ''; + background-image: url("@/static/modal/iconCk.png"); + background-size: cover; + width: 24px; + height: 24px; + display: block; + position: absolute; + right: 0; + bottom: 0; + } + } + + .triangle-topright { + width: 0; + height: 0; + border-top: 37px solid #ffff00; + border-right: 37px solid transparent; + position: absolute; + top: 0; + left: 0px; + } + + .itemTap { + margin-bottom: 10rpx; + } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/sort/index.vue b/LA24030_LuLiPackageLine_Pda/pages/sort/index.vue new file mode 100644 index 0000000..77e637a --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/sort/index.vue @@ -0,0 +1,55 @@ +<template> + <view class=""> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鍒嗘嫞绠$悊</block> + </cu-custom> + <view class="margin_top40rpx text_align_center" v-for="(item,index) in list" :key='index'> + <view class="little_card fontSize36rpx" @click="skip(item,index)" :class="active==index?'active':''"> + {{item.name}} + </view> + </view> + </view> +</template> + +<script> + export default { + data() { + return { + active: null, + type:'', + list: [ + { + name: '绔嬪簱鍒嗘嫞', + pages: './sort' + }, + { + name: '骞冲簱鍒嗘嫞', + pages: './squareSort' + } + ] + } + }, + onLoad(options) { + this.type = options.type + }, + methods: { + skip(item, index) { + this.active = index + if (item.pages) { + setTimeout(() => { + uni.navigateTo({ + url: item.pages + }) + }, 100) + } + } + } + } +</script> + +<style> + +</style> + diff --git a/LA24030_LuLiPackageLine_Pda/pages/sort/kittingSort.vue b/LA24030_LuLiPackageLine_Pda/pages/sort/kittingSort.vue new file mode 100644 index 0000000..df0d75c --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/sort/kittingSort.vue @@ -0,0 +1,641 @@ +<template> + <view style="padding-bottom: 150px" class="boxTip"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> </block> + <block slot="content">瀹瑰櫒涓嬫灦</block> + </cu-custom> + <!-- <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> --> + <u-form + labelPosition="left" + label-width="180rpx" + :model="warehouse" + ref="warehouseRef" + > + <!-- <u-row + class="border_bottom margin_top10rpx padding_left25rpx" + style="background-color: #fff" + > + <u-col span="10"> + <u-form-item + label="鏉ユ簮搴撳尯:" + prop="areaCode" + required + class="uFormItem" + > + <u-input + v-model="warehouse.areaCode" + placeholder="璇锋壂鐮佸綍鍏�" + style="font-weight: bolder; margin-left: 15rpx" + class="width padding_left25rpx" + > + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="containerFocus2"> + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + </u-row> --> + <u-row + class="border_bottom margin_top10rpx padding_left25rpx" + style="background-color: #fff" + > + <u-col span="12"> + <u-form-item + label="鐩爣搴撲綅:" + prop="placeCode" + required + class="uFormItem" + > + <u-input + v-model="warehouse.placeCode" + placeholder="璇锋壂鐮佸綍鍏�" + style="font-weight: bolder; margin-left: 15rpx" + class="width padding_left25rpx" + @confirm="getKwDetails" + > + </u-input> + </u-form-item> + </u-col> + </u-row> + <view + class="boxList" + v-show="modalshow2" + @click="modalshow2 = false" + @touchmove.stop + > + <view class="innerWrap"> + <ul v-for="(item, eindex) in containerList" :key="eindex"> + <li @click="confirm2(eindex)">{{ item.text }}</li> + </ul> + </view> + </view> + <u-row + class="border_bottom margin_top10rpx padding_left25rpx" + style="background-color: #fff" + > + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" class="uFormItem"> + <u-input + v-model="warehouse.snCode" + ref="materialRef" + placeholder="璇锋壂鐮佸綍鍏�" + @focus="warehouse.snCode = ''" + @confirm="getMaterialDetails" + style="font-weight: bolder; margin-left: 15rpx" + class="width padding_left25rpx" + > + </u-input> + </u-form-item> + </u-col> + </u-row> + + <!-- 瀹瑰櫒绫诲瀷 --> + <u-row + class="border_bottom margin_top10rpx padding_left25rpx" + style="background-color: #fff" + > + <u-col span="12"> + <u-form-item label="瀹瑰櫒绫诲瀷:" prop="typeCode" required class="uFormItem"> + <input + v-model="warehouse.typeCode" + type="select" + style="font-weight: bolder; margin-left: 15rpx" + @focus="containerFocusRqlx" + placeholder="璇烽�夋嫨瀹瑰櫒绫诲瀷" + class="width" + /> + <u-action-sheet + :list="wolistRqlx" + v-model="modalshowRqlx" + @click="confirmRqlx" + ></u-action-sheet> + </u-form-item> + </u-col> + </u-row> + </u-form> + + <modal-code :rescode="rescode" :resmessage="resmessage" ref="resmodal" /> + <view style="margin-bottom: 200rpx" class="margin_top10rpx"> + <view + v-for="(item, eindex) in singlist" + :key="eindex" + class="margin_bottom10rpx" + > + <u-swipe-action + :show="item.show" + :index="eindex" + @click="longpress" + @open="open" + @close="close" + :options="options" + style="width: 100vw" + > + <view + class="fontSize32rpx background_fff padding10" + :class="item.enAbled == 0 ? 'bg_item' : ''" + > + <u-row> + <u-col span="12" class="flex"> + <text class="flex justify-center align-center circkle06">{{ + eindex + 1 + }}</text> + <text class="color_f18202 padding_left10rpx"> + {{ item.containerCode }} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="8"> + <text class="color_80 padding_left25rpx"> + 鏄惁铏氭嫙锛歿{ item.isVirtually ? "鏄�" : "鍚�" }} + </text> + </u-col> + <u-col span="4"> + <text class="color_80"> + 鏄惁绂佺敤锛歿{ item.isDisabled ? "鏄�" : "鍚�" }} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <text class="color_80 padding_left25rpx"> + 绫诲瀷鍚嶇О锛歿{ item.containerTypeName }} + </text> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + </view> + <button-modal + :cleaningShow="true" + allTitle="閲嶇疆" + cleaningTitle="纭" + @allsubmit="reset" + @submit="submit" + /> + </view> +</template> +<script> +import ButtonModal from "../../components/buttonModal.vue"; +import ModalCode from "../../components/ModalCode.vue"; +import { + addGroupContainerXiajia, + getareaTypesList, + getwmsPlaceForContainerOff, + getRecommendList, + putContainerConfirm, + getContainerTypeList, + getwmsContainerType, +} from "../../api/putIn/artificial.js"; +import { getDate } from "../../utils/dateTime.js"; + +export default { + data() { + return { + containerList: [], + curFoucus: true, + rescode: 0, + resmessage: "", + putCode: "", //瀹瑰櫒浜岀淮鐮� + detailshow: false, + operator: "", + focu: false, //娓呯┖鎸夐挳闅愭樉 + focuM: false, //鐗╂枡闅愭樉鎸夐挳 + Datetime: getDate(), + singlist: [], //鐗╂枡璇︽儏 + wolist: [], + wolistRqlx: [], + + options: [ + // { + // text: '璇︽儏', + // style: { + // backgroundColor: '#fc9f35' + // } + // } + { + text: "鍒犻櫎", + style: { + backgroundColor: "#fc4b4b", + }, + }, + ], + materlist: {}, + warehouse: { + containerCode: "", + materialCode: "", + storehouseCode: "", + snCode: "", + }, + modalshow: false, + modalshow2: false, + modalshowRqlx: false, + + gridable: true, + gridFocus: false, + detailable: false, + detailableZb: false, + warehouseRules: { + + // areaCode: [ + // { + // required: true, + // message: "鏉ユ簮搴撳尯涓嶈兘涓虹┖", + // trigger: "blur", + // }, + // ], + placeCode: [ + { + required: true, + message: "鐩爣搴撲綅涓嶈兘涓虹┖", + trigger: "blur", + }, + ], + typeCode: [ + { + required: true, + message: "瀹瑰櫒绫诲瀷涓嶈兘涓虹┖", + trigger: "blur", + }, + ], + }, + orderType: 1, + warhouseTph: "", + timerPrint: null, + kwbhAllowed: false, //鏄惁绂佺敤搴撲綅缂栧彿 + arrD: [], + }; + }, + components: { + ButtonModal, + ModalCode, + }, + onLoad(option) { + if (option.orderType) { + this.orderType = option.orderType; + } + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules); + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync("userInfo")).name; + // this.getVehicleType() + this.getContainerType(); //瀹瑰櫒绫诲瀷 + }, + methods: { + //瀹瑰櫒绫诲瀷鑱氱劍浜嬩欢 + containerFocus() { + uni.hideKeyboard(); + this.modalshow = true; + }, + + //瀹瑰櫒绫诲瀷鑱氱劍浜嬩欢 + containerFocusRqlx() { + uni.hideKeyboard(); + this.modalshowRqlx = true; + }, + + //瀹瑰櫒缂栧彿鐐瑰嚮 + containerClick() { + uni.scanCode({ + scanType: ["barCode", "qrCode"], + autoDecodeCharset: true, + success: (res) => { + this.warehouse.containerCode = res.result; + this.containerBlur(); + }, + fail: (err) => { + this.rescode = 400; + this.resmessage = `鎵弿澶辫触${err}`; + this.$refs.resmodal.show = true; + }, + }); + }, + getKwDetails(pram) { + if (!this.warehouse.placeCode) { + uni.showToast({ + title: "鐩爣搴撲綅涓嶈兘涓虹┖", + icon: "none", + duration: 2000, + }); + return; + } + getwmsPlaceForContainerOff({ + // 'PlaceCodeForpda': this.warehouse.placeCode, + placeCode: this.warehouse.placeCode, + page: 1, + pageSize: 1, + }).then((res) => { + if (res.code == 200) { + if (!res.result) { + return; + } + var arrList = res.result.items; + if (arrList.length == 0) { + this.resmessage = "鏆傛棤鏁版嵁"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + if (Array.isArray(arrList) && arrList.length >= 1) { + if (arrList[0].isDisabled) { + this.resmessage = "搴撲綅琚鐢ㄤ簡"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + return; + } + } else { + this.resmessage = "鏆傛棤鏁版嵁"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + } else { + this.resmessage = res.message; + this.rescode = res.code; + this.$refs.resmodal.show = true; + } + }); + }, + getMaterialDetails() { + if (!this.warehouse.snCode) { + uni.showToast({ + title: "鐗╂枡缂栧彿涓嶈兘涓虹┖", + icon: "none", + duration: 2000, + }); + return; + } + getwmsContainerType({ + // 'materialAndSncode': this.warehouse.snCode, + MaterialCode: this.warehouse.snCode, + page: 1, + pageSize: 1, + }).then((res) => { + if (res.code == 200) { + var arrList = [res.result]; + //debugger + if (arrList.length == 0) { + this.resmessage = "鏆傛棤缁戝畾鐨勫鍣ㄧ被鍨�"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + if (Array.isArray(arrList) && arrList.length == 1) { + // this.warehouse.typeCode = arrList[0].typeCode || ""; + this.warehouse.typeCode = arrList[0].containerTypeCode || ""; + this.$forceUpdate(); + } else { + this.resmessage = "鏆傛棤缁戝畾鐨勫鍣ㄧ被鍨�"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + } else { + this.resmessage = "鏆傛棤缁戝畾鐨勫鍣ㄧ被鍨�"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + }); + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + uni.showModal({ + title: "鎻愮ず", + content: "鏄惁纭鍒犻櫎锛�", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + this.singlist[index].cardNum = true; + if (eindex == 0) { + //鍒犻櫎 + this.singlist.splice(index, 1); + } else { + this.materlist = this.singlist[index]; + this.detailshow = true; + } + } else if (res.cancel) { + } + }, + }); + }, + //缂栬緫鐘舵�佹牱寮� + dc(e) { + e.cardNum = true; + this.$forceUpdate(); + }, + //鍗$墖閫変腑 + clicki(e) { + e.cardNum = true; + this.$forceUpdate(); + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.$forceUpdate(); + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }); + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate(); + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + val.cardNum = false; + if (!val.quantity) { + uni.showModal({ + title: "鎻愮ず", + content: "缁勭洏鏁伴噺涓嶈兘涓虹┖", + showCancel: false, + }); + } + if (val.quantity < 0) { + uni.showModal({ + title: "鎻愮ず", + content: "缁勭洏鏁伴噺蹇呴』澶т簬0", + showCancel: false, + }); + } + }, + //鍏ㄩ儴鍙栨秷 + reset() { + this.singlist = []; + this.warehouse.containerCode = ""; + this.warehouse.snCode = ""; + this.warehouse.areaCode = ""; + this.warehouse.placeCode = ""; + this.$refs.warehouseRef.resetFields(); + this.$forceUpdate(); + this.kwbhAllowed = false; + }, + //閲嶇疆椤甸潰淇℃伅 + rest() { + this.reset(); + }, + //纭 + submit() { + this.$refs.warehouseRef.setRules(this.warehouseRules); + this.$refs.warehouseRef.validate((valid) => { + if (valid) { + let arrN1 = this.singlist.findIndex( + (v) => v.quantity == "" || v.quantity <= 0 + ); + if (arrN1 > -1) { + uni.showToast({ + title: "鐗╂枡鏁伴噺闇�瑕佸ぇ浜�0", + icon: "none", + duration: 2000, + }); + return; + } + //鐗╂枡璇︽儏 + let matatilDetails = this.singlist; + // let arrSub = matatilDetails.filter((v) => v.enAbled != 1); + //璇锋眰鍙傛暟 + let params = { + areaCode: this.warehouse.areaCode, //鏉ユ簮搴撳尯 + PlaceCode: this.warehouse.placeCode, + MaterialCode: this.warehouse.snCode, + ContainerTypeCode: this.warehouse.typeCode, + // orderDetails: arrSub + }; + uni.showModal({ + title: "鎻愮ず", + content: "鏄惁纭瀹瑰櫒涓嬫灦锛�", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + addGroupContainerXiajia(params).then((res) => { + this.warhouseTph = this.warehouse.containerCode; + this.rescode = res.code; + this.resmessage = res.message || "涓嬫灦鎴愬姛锛�"; + this.$refs.resmodal.show = true; + this.rest(); + }); + } else if (res.cancel) { + } + }, + }); + } + }); + }, + getVehicleType() { + getareaTypesList().then((res) => { + var arr = res.result.items; + arr.map((item) => { + item.text = item.areaCode; + return item; + }); + this.wolist = arr; + }); + }, + //瀹瑰櫒绫诲瀷 + getContainerType() { + getContainerTypeList().then((res) => { + var arr = res.result.items; + arr.map((item) => { + item.text = item.typeCode; + return item; + }); + this.wolistRqlx = arr; + }); + }, + confirmXl(index) { + this.warehouse.areaCode = this.wolist[index].areaCode; + }, + + containerFocus2() { + this.modalshow2 = true; + getareaTypesList().then((res) => { + var arr = res.result.items; + this.containerList = arr.reduce((curr, item) => { + curr.push({ + text: item.areaCode, + }); + return curr; + }, []); + }); + }, + + confirmRqlx(index) { + this.warehouse.typeCode = this.wolistRqlx[index].text; + }, + + confirm2(index) { + this.warehouse.areaCode = this.containerList[index].text; + }, + }, +}; +</script> +<style lang="scss" scoped> +.bg_item { + background: #ffebcd !important; +} + +.inputGray2 { + line-height: 30px; + border-top: 10rpx solid transparent; +} + +.inputGray { + border-top: 0rpx solid transparent; +} + +.boxList { + transition: all ease 2s; + position: fixed; + bottom: 0; + left: 0; + top: 0; + right: 0; + width: 100%; + height: 100%; + z-index: 999; + background: rgba(0, 0, 0, 0.6); + + .innerWrap { + max-height: 50%; + overflow-y: auto; + background: white; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + + ul { + padding: 0; + margin: 0; + + li { + padding: 0; + margin: 0; + border-bottom: 1px solid #e4e7ed; + list-style-type: none; + display: flex; + flex-direction: row; + line-height: 1; + justify-content: center; + align-items: center; + font-size: 13px; + padding: 14px 0; + flex-direction: column; + } + } + } +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/sort/pickRecord.vue b/LA24030_LuLiPackageLine_Pda/pages/sort/pickRecord.vue new file mode 100644 index 0000000..7cd9342 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/sort/pickRecord.vue @@ -0,0 +1,300 @@ +<template> + <view class="overflow"> + <!-- <cu-custom bgColor="bg-white" :isBack="false"> + <block slot="backText"> + </block> + <block slot="content"> </block> + </cu-custom> --> + <scroll-view scroll-y="true" class="wpPrint "> + <view class="flex justify-center align-cente bgffffff"> + <!-- <view class="succeicon" style="width: 60px;height: 60px;"></view> --> + <view class="txt10">瓒婂簱鍒楄〃</view> + </view> + <view class="bg_item"> + <!-- <view class="wolistWp" v-show="modalshow" :style="{height: mtHeight+'px'}"> + <view :key="index" v-for="(item,index) in singlist" @click="confirm(item)" :class="item.checked?'activeBtn':''"> + <text> {{ item.wareMaterialCode }}--({{ item.quantity }}) </text> + </view> + </view> --> + + <view v-for="(item, eindex) in singlist" :key="eindex" + style="width: 100vw;display: flex;margin: 15rpx auto;"> + <view style="width: 100%;"> + <view class="title-wrap itemTap fontSize32rpx background_fff" + :class="item.checked ? ' clickactive' : ''" @tap.stop.prevent="confirm(item)"> + <u-row> + <u-col span="1"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50%;width: 20px;height: 20px;"> + {{ eindex + 1 }} + </view> + </u-col> + <u-col span="10"> + <view class="color_f18202"> + {{ item.wareMaterialCode }} + </view> + </u-col> + </u-row> + <u-row style="margin-top: 20rpx;"> + <u-col span="12"> + <text class="el_batchNo"> + 鏁伴噺锛歿{item.quantity}} + </text> + </u-col> + </u-row> + </view> + </view> + </view> + <view v-if="singlist.length<=0" style="text-align: center">---鏌ユ棤鏁版嵁---</view> + + </view> + </scroll-view> + + <!-- <button-modal :empTytowerShow='true' cleaningTitle="鍏抽棴" garmenTitle='鍘昏秺搴�' @submit='init' @reset='rest' /> --> + <button-modal :issueShow='true' issueTitle="瓒婂簱" subTitle='鍏ュ簱' restTiltle='鍏抽棴' @reset='rest' + @submit='submit' @issue="init"/> + </view> +</view></template> + +<script> +import ButtonModal from '../../components/buttonModal.vue' +import ModalCode from '../../components/ModalCode.vue' +import { getDate } from '../../utils/dateTime.js' +import {getYKDetailsForMaterGroup} from '../../api/putIn/artificial.js' + +export default { + data() { + return { + containerVisible: false, + containerList: [], + renameFocus: true, + detailshow: false, + rescode: 0, + resmessage: "", + modalshow: true, + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + containerCode: '', + }, + activeIndex: 100, + detailable: false, + materialCode: '', //鐗╂枡缂栧彿 + warehouseRules: { + containerCode: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }], + operator: '', + Datetime: getDate(), + addForm: { //鎵撳嵃璁板綍 + code: '', + name: '', + batchNo: '', + specificationModel: '' + }, + arrPt:[], + ermNum:'', + singlist: [ + // { + // 'checked':false, + // 'wareMaterialCode':12333 + // }, + // { + // 'checked':false, + // 'wareMaterialCode':'dddd' + // }, + ], + wolist: [], + mtHeight: 'auto', + arrIds:[] + + }; + }, + components: { + ButtonModal, + ModalCode + }, + props: { + datapick: { + type: Array, + default: [], + }, + pageNum:{ + type: Number, + default: 0 + }, + dataYkList:{ + type: Array, + default: [], + }, + }, + onReady() { + }, + mounted() { + this.singlist = this.dataYkList + // this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + // this.getYKDetailsForMaterGroup(); + }, + methods: { + getYKDetailsForMaterGroup() { + if(this.datapick && this.datapick.length<=0){ + this.singlist = [] + return + } + getYKDetailsForMaterGroup({ + 'WareMaterialCode':this.datapick.join(',') + }).then((res) => { + if (res.code == 200) { + res.data.forEach((item)=>{ + item.checked = false + }) + this.singlist = res.data || [] + } else { + this.$refs.resmodal.show = true + } + }) + }, + + //杩斿洖 + rest() { + this.singlist = []; + this.$emit('confirmrecord', {}); + }, + init() { + this.singlist.forEach((item)=>{ + if(item.checked){ + this.arrIds.push(item.wareMaterialCode) + } + }) + if(this.arrIds.length<=0){ + return + } + console.log("33333333333333") + console.log(this.arrIds) + uni.navigateTo({ + url: "/pages/crossDock/crossDock?ids=" + [...new Set(this.arrIds)].join(','), + }); + + // uni.showModal({ + // title: "鎻愮ず", + // content: "鏄惁纭瓒婂簱锛�", + // showCancel: true, + // cancelColor: "#333333", + // success: (res) => { + // if (res.confirm) { + + // } else if (res.cancel) { + // } + // }, + // }); + }, + //閫夋嫨 瀹瑰櫒 + confirm(e) { + e.checked = !e.checked + }, + //纭 + submit() { + this.$emit('confirmAdd', 1); + } + } +} +</script> + +<style lang="scss" scoped> +.itemTap{ + padding: 10px; +} +.clickactive { + position: relative; + border: 1px solid #f18202; + border-radius: 5rpx; + background: white !important; + &::after { + content: ''; + background-image: url("@/static/modal/iconCk.png"); + background-size: cover; + width: 24px; + height: 24px; + display: block; + position: absolute; + right: 0; + bottom: 0; + } +} + +.bg_item { + padding-top: 5px; + background: #F2F2F2 !important; + height: 100%; +} + +.wpPrint { + height: calc(100vh); + overflow-y: auto; + padding-bottom: 85px; + .txt10 { + line-height: 45px; + } +} + +.succeicon { + background-image: url("@/static/modal/success.png"); + background-size: cover; +} +</style> + + +<style lang="scss"> + .activeBtn{ + background-color: #f18202; + color: white !important; + } + .myFormItem { + font-size: 32rpx; + font-weight: bold; + padding: 0; + } + + .myInp { + font-weight: bolder; + margin-left: 30rpx; + margin-top: 16rpx; + } + + /deep/.u-drawer__scroll-view { + border-top: 5px solid #d6d6d6; + } + .wolistWp{ + z-index: 999; + // height: 45vh; + padding-top: 10px; + padding-bottom: 20px; + border-top: 1px solid gray; + // border-bottom: 1px solid gray; + overflow: auto; + text-align: left; + view{ + display: inline-block; + border-radius: 3px; + border: 1px solid orange; + width: 40%; + text-align: center; + min-width: 80px; + padding: 5px ; + margin: 8px 3%; + color: #f18202; + text{ + } + } + } + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/sort/pickorder.vue b/LA24030_LuLiPackageLine_Pda/pages/sort/pickorder.vue new file mode 100644 index 0000000..ca4008e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/sort/pickorder.vue @@ -0,0 +1,555 @@ +<template> + <view style="padding-bottom:150px" class="boxTip"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">瀹瑰櫒缁勭洏涓婃灦</block> + </cu-custom> + <!-- <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> --> + <u-form labelPosition="left" label-width="180rpx" :model="warehouse" ref="warehouseRef"> + + <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" required class="uFormItem"> + <u-input :focus="curFoucus" @focus="warehouse.containerCode = ''" + v-model.trim="warehouse.containerCode" @confirm="getMaterialDetails(1)" placeholder="璇锋壂鐮佸綍鍏�" + :disabled="kwbhAllowed" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item label="鐩爣搴撳尯:" prop="areaCode" class="uFormItem"> + <input v-model="warehouse.areaCode" type="select" placeholder="璇烽�夋嫨鐩爣搴撳尯" @focus="containerFocus" + class="width"></input> + <u-action-sheet :list="wolist" v-model="modalshow" @click="confirmXl"></u-action-sheet> + + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鐩爣搴撲綅:" prop="placeCode" class="uFormItem"> + <u-input v-model="warehouse.placeCode" placeholder="璇锋壂鐮佸綍鍏�" + style="font-weight: bolder;margin-left: 15rpx;" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="containerFocus2"> + <span class="fontSize15rpx">鎺ㄨ崘</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + + <view class="boxList" v-show="modalshow2" @click="modalshow2 = false" @touchmove.stop> + <view class="innerWrap"> + <ul v-for="(item, eindex) in containerList" :key="eindex"> + <li @click="confirm2(eindex)"> {{ item.text }}</li> + </ul> + </view> + </view> + </u-row> + + </u-form> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" /> + <view style="margin-bottom: 200rpx;" class="margin_top10rpx"> + <view v-for="(item, eindex) in singlist" :key="eindex" class="margin_bottom10rpx"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" @open="open" @close='close' + :options="options" style="width: 100vw;"> + <view class="fontSize32rpx background_fff padding10" :class="item.enAbled == 0 ? 'bg_item' : ''"> + <u-row> + <u-col span="12" class="flex"> + <text class="flex justify-center align-center circkle06">{{ eindex + 1 }}</text> + <text class="color_f18202 padding_left10rpx"> + {{ item.containerCode }} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="8"> + <text class="color_80 padding_left25rpx"> + 鏄惁铏氭嫙锛歿{ item.isVirtually ? "鏄�" : "鍚�" }} + </text> + </u-col> + <u-col span="4"> + <text class="color_80"> + 鏄惁绂佺敤锛歿{ item.isDisabled ? "鏄�" : "鍚�" }} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <text class="color_80 padding_left25rpx"> + 绫诲瀷鍚嶇О锛歿{ item.containerTypeName }} + </text> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + </view> + <!-- <button-modal :issueShow='true' issueTitle="閲嶇疆" subTitle='缁勭洏' restTiltle='瀹瑰櫒缁勭洏涓婃灦' @reset='submit(1)' + @submit='submit(2)' @issue="reset" /> --> + + <button-modal :cleaningShow='true' allTitle='瀹瑰櫒缁勭洏' cleaningTitle='瀹瑰櫒缁勭洏涓婃灦' @allsubmit="submit(2)" + @submit='submit(1)' /> + + + </view> +</template> +<script> +import ButtonModal from '../../components/buttonModal.vue' +import ModalCode from '../../components/ModalCode.vue' + +import { + addGroupDisk, + getareaTypesList, + getWmsContainer, + getRecommendList +} from '../../api/putIn/artificial.js' +import { + getDate +} from '../../utils/dateTime.js' + +import { + bindputawayConfirm +} from '../../api/putaway/putaway.js' + +export default { + data() { + return { + containerList: [], + curFoucus: true, + rescode: 0, + resmessage: "", + putCode: '', //瀹瑰櫒浜岀淮鐮� + detailshow: false, + operator: '', + focu: false, //娓呯┖鎸夐挳闅愭樉 + focuM: false, //鐗╂枡闅愭樉鎸夐挳 + Datetime: getDate(), + singlist: [], //鐗╂枡璇︽儏 + wolist: [], + options: [ + // { + // text: '璇︽儏', + // style: { + // backgroundColor: '#fc9f35' + // } + // } + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + materlist: {}, + warehouse: { + containerCode: '', + materialCode: '', + storehouseCode: "", + snCode: "", + }, + modalshow: false, + modalshow2: false, + gridable: true, + gridFocus: false, + detailable: false, + detailableZb: false, + batchNo: '', //鎵爜鍒扮殑褰撳墠鐗╂枡鐨勬壒娆� + warehouseRules: {}, + orderType: 1, + warhouseTph: '', + timerPrint: null, + kwbhAllowed: false, //鏄惁绂佺敤搴撲綅缂栧彿 + arrD: [], + statusTp: { + 'tpStatus': '' + } + }; + }, + components: { + ButtonModal, + ModalCode + }, + onLoad(option) { + if (option.orderType) { + this.orderType = option.orderType + } + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + this.getVehicleType() + }, + computed: { + containerCode() { + return this.warehouse.containerCode + } + }, + methods: { + //瀹瑰櫒绫诲瀷鑱氱劍浜嬩欢 + containerFocus() { + uni.hideKeyboard() + this.modalshow = true + }, + //瀹瑰櫒缂栧彿鐐瑰嚮 + containerClick() { + uni.scanCode({ + scanType: ['barCode', 'qrCode'], + autoDecodeCharset: true, + success: (res) => { + this.warehouse.containerCode = res.result + this.containerBlur() + }, + fail: (err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${err}` + this.$refs.resmodal.show = true + } + }) + }, + getMaterialDetails(pram) { + if (!this.warehouse.containerCode) { + uni.showToast({ + title: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + icon: 'none', + duration: 2000 + }) + return + } + var FontContainerList = [] + if(this.singlist.length > 0){ + FontContainerList = this.singlist + } + getWmsContainer({ + 'containerCode': this.warehouse.containerCode, + FontContainerList:FontContainerList + }).then((res) => { + if (res.code == 200) { + var arrList = res.result; + if (arrList == null || arrList.length == 0) { + this.resmessage = "鏆傛棤鏁版嵁"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + if (Array.isArray(arrList) && arrList.length >= 1) { + if (arrList[0].isDisabled) { + this.resmessage = "瀹瑰櫒琚鐢ㄤ簡"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + return + } + arrList.forEach((item) => { + var arrNo = this.singlist.findIndex((v) => v.containerCode == item.containerCode); + if (arrNo == -1) { + this.singlist.unshift(item); + } + }); + } else { + this.resmessage = "鏆傛棤鏁版嵁"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鍒犻櫎锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + this.singlist[index].cardNum = true + if (eindex == 0) { //鍒犻櫎 + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + } else if (res.cancel) { + + } + }) + }); + }, + //缂栬緫鐘舵�佹牱寮� + dc(e) { + e.cardNum = true + this.$forceUpdate() + }, + //鍗$墖閫変腑 + clicki(e) { + e.cardNum = true + this.$forceUpdate() + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.$forceUpdate() + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + val.cardNum = false + if (!val.quantity) { + uni.showModal({ + title: '鎻愮ず', + content: '缁勭洏鏁伴噺涓嶈兘涓虹┖', + showCancel: false + }) + } + if (val.quantity < 0) { + uni.showModal({ + title: '鎻愮ず', + content: '缁勭洏鏁伴噺蹇呴』澶т簬0', + showCancel: false + }) + } + + }, + //鍏ㄩ儴鍙栨秷 + reset() { + this.singlist = []; + this.warehouse.containerCode = '' + this.warehouse.snCode = '' + this.warehouse.areaCode = '' + this.warehouse.placeCode = '' + + this.$refs.warehouseRef.resetFields(); + this.$forceUpdate() + this.kwbhAllowed = false + }, + //閲嶇疆椤甸潰淇℃伅 + rest() { + this.reset() + }, + //纭 + submit(param) { + this.$refs.warehouseRef.setRules(this.warehouseRules) + this.$refs.warehouseRef.validate(valid => { + if (valid) { + var ActionType = ""; + var title = ""; + if (param == 1) { + ActionType = "3002" //瀹瑰櫒缁勭洏涓婃灦 BusinessTypeEnum + title = "鏄惁纭瀹瑰櫒缁勭洏涓婃灦锛�"; + if(!this.warehouse.areaCode){ + uni.showToast({ + title: '璇烽�夋嫨鐩爣搴撳尯锛�', + icon: 'none', + duration: 2000 + }); + return + } + if (this.singlist.length <= 0) { + uni.showToast({ + title: '瀹瑰櫒淇℃伅娌℃湁鎵惧埌锛�', + icon: 'none', + duration: 2000 + }); + return + } + + var orderDetails = JSON.parse(JSON.stringify(this.singlist)); + orderDetails.forEach((item) => { + item.snCode = item.containerCode, + item.containerCode = this.singlist[0].containerCode + }) + let params = { + Flag:2, + ActionType: ActionType, + ContainerCode: this.singlist[0].containerCode, + StorehouseCode: this.warehouse.storehouseCode, + PlaceCode: this.warehouse.placeCode, + AreaCode: this.warehouse.areaCode, + orderDetails: orderDetails + } + uni.showModal({ + title: '鎻愮ず', + content: title, + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + bindputawayConfirm(params).then(res => { + this.warhouseTph = this.warehouse.containerCode; + this.rescode = res.code; + this.resmessage = res.message || '瀹瑰櫒缁勭洏涓婃灦鎴愬姛锛�'; + this.$refs.resmodal.show = true; + this.rest(); + }) + } + }) + }); + + } else { //缁勬嫋 + title = "鏄惁纭缁勭洏锛�"; + //Flag璇锋眰鍙傛暟 鏍囪 + /// 1锛氱墿鏂欑粍鐩� + /// 2锛氬鍣ㄧ粍鐩� + /// 3锛氱墿鏂欒В缁� + /// 4锛氬鍣ㄨВ缁� + this.singlist.forEach((item) => { + item.snCode = item.containerCode + }) + let paramsZp = { + Flag: 2, //2锛氬鍣ㄧ粍鐩� + ContainerCode: this.singlist[this.singlist.length-1].containerCode, + orderDetails: this.singlist + } + uni.showModal({ + title: '鎻愮ず', + content: title, + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + addGroupDisk(paramsZp).then(res => { + this.warhouseTph = this.warehouse.containerCode; + this.rescode = res.code; + this.resmessage = res.message || '缁勭洏鎴愬姛锛�'; + this.$refs.resmodal.show = true; + this.rest(); + }) + } + }) + }); + } + } + }) + }, + + getVehicleType() { + getareaTypesList().then((res) => { + var arr = res.result.items; + arr.map(item => { + item.text = item.areaCode; + return item; + }) + this.wolist = arr + }) + }, + confirmXl(index) { + this.warehouse.areaCode = this.wolist[index].areaCode; + }, + + //------鑾峰彇鎺ㄨ崘 + containerFocus2() { + if (!this.warehouse.areaCode) { + uni.showToast({ + title: '璇烽�夋嫨鐩爣搴撳尯锛�', + icon: 'none', + duration: 2000 + }); + return + } + getRecommendList({ + 'containerCode': this.warehouse.containerCode, + 'areaCode': this.warehouse.areaCode + }).then(res => { + this.modalshow2 = true; + + this.containerList = res.result.reduce((curr, item) => { + curr.push({ + text: item.placeCode, + }) + return curr; + }, []) + }) + }, + //------鑾峰彇鎺ㄨ崘绫诲瀷閫夋嫨 + confirm2(index) { + this.warehouse.placeCode = this.containerList[index].text; + }, + } +} +</script> +<style lang="scss" scoped> +.bg_item { + background: #FFEBCD !important; +} + +.inputGray2 { + line-height: 30px; + border-top: 10rpx solid transparent; +} + +.inputGray { + border-top: 0rpx solid transparent; + +} + + + +.boxList { + transition: all ease 2s; + position: fixed; + bottom: 0; + left: 0; + top: 0; + right: 0; + width: 100%; + height: 100%; + z-index: 999; + background: rgba(0, 0, 0, 0.6); + + .innerWrap { + max-height: 50%; + overflow-y: auto; + background: white; + position: absolute; + bottom: 0; + left: 0; + width: 100%; + + ul { + padding: 0; + margin: 0; + + li { + padding: 0; + margin: 0; + border-bottom: 1px solid #e4e7ed; + list-style-type: none; + display: flex; + flex-direction: row; + line-height: 1; + justify-content: center; + align-items: center; + font-size: 13px; + padding: 14px 0; + flex-direction: column; + } + } + } + +} +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/sort/propComp.vue b/LA24030_LuLiPackageLine_Pda/pages/sort/propComp.vue new file mode 100644 index 0000000..857ca31 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/sort/propComp.vue @@ -0,0 +1,249 @@ +<template> + <u-popup v-model="detailshow" border-radius="14" mode="bottom"> + <view class="pop"> + <scroll-view scroll-y="true" style="height: 90vh;margin-bottom: 140rpx;"> + <br> + <h2 class="text_align_center padding_bottom18 padding15">鍙栬揣鎴愬姛锛�</h2> + <view> + <view> + <view class="btn1" @click="cancelAll">鍏ㄩ儴鍙栨秷</view> + <image class="ingLany" src="/static/lanya.png" mode="aspectFit" @click="getLanya"></image> + + <view class="fontSize32rpx background_fff margin_bottom10rpx" v-for="(item, eindex) in list" + :key="eindex"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="padding10 title-wrap itemTap" @tap.stop.prevent="pitch(item)" + :class="item.edit ? 'clickactive' : ''"> + <u-row> + <u-col span="12"> + <label class="flex align-center"> + <text class="flex justify-center align-center circkle06">{{ eindex + 1 + }}</text> + <view class="color_f18202"> + {{ item.code }} ({{ item.batchNo }}) + </view> + </label> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + DO:{{ item.subOrderNo }} + </view> + </u-col> + <u-col span="6" class="color_80"> + Bom锛歿{ item.bomNumber }} + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + 鏈哄簥鍙凤細{{ item.equipment }} + </view> + </u-col> + <u-col span="6"> + <view class="color_80"> + 宸ュ簭锛歿{ item.process }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + SAP锛歿{ item.sap_Location }} + </view> + </u-col> + <u-col span="6" class="flex"> + <view class="text06"> + 鍙栬揣鏁帮細{{ item.quantity }} + </view> + </u-col> + </u-row> + </view> + </view> + </view> + </view> + <!-- <view v-for="(item, eindex) in [1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,]" :key="eindex"> + <view class="line flex justify-between"> + <text class="text-gray">閰嶉闇�姹傚崟鍙�</text> + <text>{{materlist.deliveryNo}}</text> + </view> --> + </scroll-view> + </view> + <button-modal :issueShow='true' issueTitle="钃濈墮鎵撳嵃" subTitle='鍏抽棴' restTiltle='鏂戦┈鎵撳嵃' @reset='initDg(2)' + @submit='closebox' @issue="initDg(1)" /> + + </u-popup> +</template> + +<script> +import ButtonModal from '@/components/buttonModal.vue' +import ModalCode from '@/components/ModalCode.vue' +export default { + props: { + detailshow: { + type: Boolean + }, + list: { + type: Array + } + }, + data() { + return { + modalshow: false, + show: false, + rescode: 0, + resmessage: "", + operator: '', + pageNo: 1, + checkTotal: 0, + status: "loadmore", + loadText: { + loadmore: '涓婃媺鍔犺浇鏇村', + loading: '鍔姏鍔犺浇涓�', + nomore: '宸茬粡鍒板簳浜�' + }, + containerCode: '', + gridPercentageSy: '', + gridPercentageSy2: '', + arr: JSON.parse(JSON.stringify(this.list)) + }; + }, + components: { + ButtonModal, + ModalCode + }, + onLoad() { + }, + methods: { + cancelAll() { + this.list.forEach((item) => { + item.edit = 0; + }); + this.$forceUpdate(); + }, + //閫変腑 + pitch(e) { + // 鍗曢�� + // this.list.forEach(v=>v.edit=false) + // e.edit = true + // this.$forceUpdate() + // 澶氶�� + e.edit = !e.edit + this.$forceUpdate(); + }, + getLanya() { + uni.navigateTo({ + url: '../print/bluetoothConnection' + }) + }, + + initDg(param) { + this.arr = this.list.filter(item => item.edit) + this.$forceUpdate(); + this.$emit('initDg', param,this.arr); + }, + closebox() { + this.$emit('closebox'); + } + } +} +</script> + +<style lang="scss" scoped> +.btn1 { + position: fixed; + top: 30px; + left: 10px; +} + +// 鐩樼偣涓� +.inventory { + border: 1px solid #08cd39; + border-radius: 40vh; + color: #08cd39; + background-color: #e6ffec; +} + +// 鏈洏鐐� +.noinventory { + border: 1px solid #ff9d0c; + border-radius: 40vh; + color: #ff9d0c; + background-color: #fff7ea; +} + +// 宸茬洏鐐� +.haveinventory { + border: 1px solid #0a8cff; + border-radius: 40vh; + color: #0a8cff; + background-color: #e7f5ff; +} + +.col-0d11c9 { + color: #0d11c9; +} + +.col-0ece3d { + color: #0ece3d; +} + +.col-ff9d0b { + color: #ff9d0b; +} + +.col-0589ff { + color: #0589ff; +} + +.content-item { + width: 98%; + border-radius: 8rpx; + margin: 10rpx auto; +} +</style> +<style lang="scss"> +.clickactive { + position: relative; + border: 1px solid #f18202; + border-radius: 5rpx; + background: white !important; + + &::after { + content: ''; + background-image: url("@/static/modal/iconCk.png"); + background-size: cover; + width: 24px; + height: 24px; + display: block; + position: absolute; + right: 0; + bottom: 0; + } +} + +.triangle-topright { + width: 0; + height: 0; + border-top: 37px solid #ffff00; + border-right: 37px solid transparent; + position: absolute; + top: 0; + left: 0px; +} + +.itemTap { + margin-bottom: 10rpx; +} + +.ingLany { + position: fixed; + right: 10px; + top: 30px; + width: 28px; + height: 28px; + border-radius: 100%; + margin-right: 1%; +} +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/sort/return.vue b/LA24030_LuLiPackageLine_Pda/pages/sort/return.vue new file mode 100644 index 0000000..0d3ae6b --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/sort/return.vue @@ -0,0 +1,216 @@ +<template> + <view class="overflow" style="padding-bottom:100px"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"></block> + <block slot="content">瀹瑰櫒鍥炲簱</block> + </cu-custom> + <!-- <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + 鎿嶄綔浜猴細{{operator}} + </view> --> + <u-form labelPosition="left" label-width="150rpx" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="ContainerCode" required + class="itemWB"> + <input v-model="warehouse.ContainerCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="focu=true" @blur="getConDetail" + style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left30rpx"> + </input> + <u-icon name="close-circle-fill" color="#848484" v-if="warehouse.containerCode && focu" + @click="warehouse.containerCode=''"></u-icon> + </u-form-item> + </u-col> + + </u-row> + + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;" v-show="typePage!=='pk'"> + <u-col span="12"> + <u-form-item label="鍏ュ簱鍙�:" prop="StorehouseCode" required + class="itemWB"> + <input v-model="warehouse.StorehouseCode" placeholder="璇峰綍鍏ユ垨鎵爜" required @focus="warehouse.StorehouseCode=''" + style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left30rpx"> + </input> + </u-form-item> + </u-col> + + </u-row> + </u-form> + <view class="margin_top10rpx"> + <view v-for="(item, eindex) in singlist" :key="eindex" style="width: 100vw;" class="margin_top10rpx"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" :options="[]" style="width: 100vw;"> + <view class="item margin_top10rpx"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap fontSize32rpx background_fff padding10"> + <u-row> + <u-col span="1"> + <text class="flex justify-center align-center" style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 40rpx;height: 40rpx;"> + {{eindex+1}} + </text> + </u-col> + <u-col span="11"> + <text class="color_f18202">{{item.wareMaterialCode}}({{item.barNo}})</text> + </u-col> + </u-row> + <u-row> + <u-col span="7" class="color_80"> + 瀹瑰櫒缂栧彿锛歿{item.wareContainerCode}} + </u-col> + <u-col span="5" class="color_80"> + 鍥炲簱鏁伴噺锛� <text class="color_f18202"> {{item.quantity - item.occQuantity}} </text> + </u-col> + </u-row> + </view> + </view> + </u-swipe-action> + </view> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <button-modal :subShow='true' garmenTitle='纭' @submit='submit' /> + </view> +</template> + +<script> + import ModalCode from '../../components/ModalCode.vue' + import ButtonModal from '../../components/buttonModal.vue' + import {containerReturn,getContainerDetail} from '@/api/sort.js' + export default { + data() { + return { + rescode: 0, + resmessage: "", + focu: false, + singlist: [], //瀹瑰櫒鍐呯墿鏂欒鎯� + warehouse: { //鍏ュ簱璇锋眰鍙傛暟 + ContainerCode: '', + StorehouseCode: '', + TaskType: 0, + AreaTypeEnum:'' + }, + warehouseRules: { + ContainerCode: [{required: true,message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖',trigger: 'blur'}], + StorehouseCode: [{required: true,message: '鍏ュ簱鍙d笉鑳戒负绌�',trigger: 'blur'}], + }, + operator: '', //褰撳墠鐧诲綍浜� + typePage:'', + + }; + }, + components: { + ModalCode, + ButtonModal + }, + onLoad: function (option) { //option涓簅bject绫诲瀷锛屼細搴忓垪鍖栦笂涓〉闈紶閫掔殑鍙傛暟 + //鍥炲簱 + if(option.containerCode) { + this.warehouse.ContainerCode = option.containerCode + } + // 鐩樼偣鍥炲簱 + if(option.taskType) { + this.warehouse.TaskType = parseInt(option.taskType) + } + // 绔嬪簱鍒嗘嫞 鍥炲簱 + if(option.pageType =='lk'){ + this.typePage = 'lk' + this.warehouse.AreaTypeEnum = 1 + } + // 骞冲簱鍒嗘嫞 鍥炲簱 + if(option.pageType =='pk'){ + this.typePage = 'pk' + this.warehouse.StorehouseCode = '1' + this.warehouse.AreaTypeEnum = 2 + }else{ + //涓嶆槸骞冲簱鍒嗘嫞锛屽氨鏄珛搴撳垎鎷� 銆怑ditby shaocx,2022-12-28銆� + this.typePage = 'lk' + this.warehouse.AreaTypeEnum = 1 + } + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //鑾峰彇瀹瑰櫒涓嬬墿鏂欒鎯� + getConDetail(){ + if(this.warehouse.ContainerCode.trim().length > 0) { + getContainerDetail({ContainerCode: this.warehouse.ContainerCode}).then(res => { + console.log(res) + if(Array.isArray(res.data) && res.data.length > 0) { + this.singlist = res.data; + }else { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + this.singlist=[] + } + }) + } + }, + //鍑哄叆搴撳彛鎵弿 + wareScane() { + uni.scanCode({ + scanType: ['barCode','qrCode'], + autoDecodeCharset: true, + success:(res) => { + this.warehouseRules.StorehouseCode = res.result.trim() + }, + fail:(err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${JSON.stringify(err)}` + this.$refs.resmodal.show = true + } + }) + }, + //瀹瑰櫒鎵弿 + containerScane() { + uni.scanCode({ + scanType: ['barCode','qrCode'], + autoDecodeCharset: true, + success:(res) => { + this.warehouse.ContainerCode = res.result + this.getConDetail() + }, + fail:(err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${JSON.stringify(err)}` + this.$refs.resmodal.show = true + } + }) + }, + //瀹瑰櫒鍥炲簱 + submit() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + var param = {} + // 骞冲簱鍒嗘嫞 鍥炲簱锛� 涓嶈鍏ュ簱鍙� + if(this.typePage == 'pk'){ + const { StorehouseCode , ...rest} = this.warehouse + console.log(rest) + param = rest + }else{ + param = this.warehouse + } + containerReturn(param).then((res) => { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + this.warehouse.ContainerCode = '' + this.warehouse.StorehouseCode = '' + // this.warehouse.AreaTypeEnum = '' + this.warehouse.TaskType = 0; + this.singlist = []; + }) + } + + }) + } + } + + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/sort/search.vue b/LA24030_LuLiPackageLine_Pda/pages/sort/search.vue new file mode 100644 index 0000000..b4947b2 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/sort/search.vue @@ -0,0 +1,165 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"></block> + <block slot="content">瀹瑰櫒鍥炲簱</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="ContainerCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.ContainerCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="warehouse.ContainerCode = ''" @blur="getConDetail" + style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left30rpx"> + </input> + <u-icon name="close-circle-fill" color="#848484" v-if="warehouse.containerCode && focu" + @click="warehouse.containerCode=''"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx" @click="containerScane"></u-icon> + </u-col> + </u-row> + </u-form> + <view style="margin-bottom: 180rpx;margin-top: 10rpx;"> + <view v-for="(item, eindex) in singlist" :key="eindex" style="width: 100vw;"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" :options="[]" style="width: 100vw;"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap fontSize32rpx background_fff"> + <view class="fontSize32rpx" style="background-color: #fff;"> + <u-row class="padding15"> + <u-col span="12" class="flex color_f18202"> + <view class="idindex"> + {{eindex+1}} + </view> + <text class="padding_left10rpx">{{item.wareMaterialCode}}</text> + </u-col> + </u-row> + <u-row class="padding15"> + <u-col span="6" class="" style="text-align: right;"> + 鎵规锛歿{item.barNo}} + </u-col> + <u-col span="6" class="color_f18202" style="text-align: right;"> + 鏁伴噺锛歿{item.quantity - item.occQuantity}} + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </view> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <button-modal :subShow='true' garmenTitle='閲嶇疆' @submit='submit' /> + </view> +</template> + +<script> + import ModalCode from '../../components/ModalCode.vue' + import ButtonModal from '../../components/buttonModal.vue' + import {containerReturn,getContainerDetail} from '@/api/sort.js' + export default { + data() { + return { + rescode: 0, + resmessage: "", + focu: false, + singlist: [], //瀹瑰櫒鍐呯墿鏂欒鎯� + warehouse: { //鍏ュ簱璇锋眰鍙傛暟 + ContainerCode: '', + StorehouseCode: '', + TaskType: 0 + }, + warehouseRules: { + ContainerCode: [{required: true,message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖',trigger: 'blur'}], + StorehouseCode: [{required: true,message: '鍏ュ簱鍙d笉鑳戒负绌�',trigger: 'blur'}], + }, + operator: '', //褰撳墠鐧诲綍浜� + + }; + }, + components: { + ModalCode, + ButtonModal + }, + onLoad: function (option) { //option涓簅bject绫诲瀷锛屼細搴忓垪鍖栦笂涓〉闈紶閫掔殑鍙傛暟 + if(option.containerCode) { + this.warehouse.ContainerCode = option.containerCode + } + if(option.taskType) { + this.warehouse.TaskType = parseInt(option.taskType) + } + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + console.log(this.warehouse) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //鑾峰彇瀹瑰櫒涓嬬墿鏂欒鎯� + getConDetail(){ + if(this.warehouse.ContainerCode.trim().length > 0) { + getContainerDetail({ContainerCode: this.warehouse.ContainerCode}).then(res => { + console.log(res) + if(Array.isArray(res.data) && res.data.length > 0) { + this.singlist = res.data; + }else { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + this.singlist=[] + } + }) + } + }, + //鍑哄叆搴撳彛鎵弿 + wareScane() { + uni.scanCode({ + scanType: ['barCode','qrCode'], + autoDecodeCharset: true, + success:(res) => { + this.warehouseRules.StorehouseCode = res.result.trim() + }, + fail:(err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${JSON.stringify(err)}` + this.$refs.resmodal.show = true + } + }) + }, + //瀹瑰櫒鎵弿 + containerScane() { + uni.scanCode({ + scanType: ['barCode','qrCode'], + autoDecodeCharset: true, + success:(res) => { + this.warehouse.ContainerCode = res.result + this.getConDetail() + }, + fail:(err) => { + this.rescode = 400 + this.resmessage = `鎵弿澶辫触${JSON.stringify(err)}` + this.$refs.resmodal.show = true + } + }) + }, + //瀹瑰櫒鍥炲簱 + submit() { + this.singlist = []; + this.warehouse.ContainerCode = '' + } + } + + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/sort/sort.vue b/LA24030_LuLiPackageLine_Pda/pages/sort/sort.vue new file mode 100644 index 0000000..8813656 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/sort/sort.vue @@ -0,0 +1,775 @@ +<template> + <view class="overflow" style="padding-bottom: 100px"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">A1/A2鍒嗘嫞</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <view v-if="!renameFocus" class="text-bold width fontSize32rpx" + style="padding: 10rpx 10rpx;background-color: #d6d6d6;border-bottom: 1px solid #bcbcbc;"> + <view class="flex justify-between align-center"> + <text class="width23 padding10">瀹瑰櫒缂栧彿</text> + <!-- <text>{{warehouse.containerCode}}</text> --> + <text>{{category_ids.join(',')}}</text> + </view> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <!-- 瀹瑰櫒缂栧彿 --> + <u-select v-model="containerVisible" :list="containerList" @confirm="containerConfirm"></u-select> + <!-- 鐗╂枡绫诲瀷 --> + <u-select v-model="typeVisible" :list="typeList" @confirm="typeConfirm"></u-select> + + <u-select v-model="containerVisible" :list="containerList" @confirm="containerConfirm"></u-select> + <view class="" v-if="renameFocus"> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <!-- <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" required + style="font-size: 16px;font-weight: bold;padding: 0;"> + <input v-model="warehouse.containerCode" + @focus="containerFocus" + style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx" + placeholder="璇峰綍鍏ユ垨鎵爜"> + </input> + </u-form-item> + </u-col> + </u-row> --> + + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡绫诲瀷:" prop="typeName" required + style="font-size: 16px;font-weight: bold;padding: 0;"> + <input v-model="warehouse.typeName" @click="typeFocus" + disabled + style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx" + placeholder="璇烽�夋嫨鐗╂枡绫诲瀷"> + </input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12" @tap="kuweiFocus"> + <u-form-item label="搴撲綅缂栧彿:" prop="category_name" required + style="font-size: 16px;font-weight: bold;padding: 0;"> + <view style="padding: 0px;min-height: 20px;" v-if="category_name.length>0"> {{ category_name.join(',') }}</view> + <input v-if="category_name.length==0" + disabled + style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx" + placeholder="璇烽�夋嫨搴撲綅缂栧彿"> + </input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="materialCode" @focus="materialCode = ''" placeholder="璇峰綍鍏ユ垨鎵爜" + @blur="getMaterialDetails" class="width padding_left25rpx" + style="font-weight: bolder;margin-left: 30rpx;"> + </input> + </u-form-item> + </u-col> + </u-row> + <!-- <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> --> + </u-form> + <view style="margin-bottom: 180rpx;margin-top: 10rpx;"> + <view v-for="(item, eindex) in singlist" :key="eindex" style="width: 100vw;display: flex;margin: 15rpx auto;"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" @open="open" :options="options" style="width: 100vw;"> + <view class="title-wrap fontSize32rpx background_fff" :class="item.showItem ? 'bg_item' : ''" style="width: 100vw;"> + <u-row> + <u-col span="1"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50%;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + </u-col> + <u-col span="10"> + <view class="color_f18202"> + {{item.wareMaterialCode}} ({{item.batchNo}}) + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 鍒嗘嫞闇�姹傛暟锛歿{item.quantity}} + </view> + </u-col> + <u-col span="6"> + SAP锛歿{item.sap_Location}} + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 宸插垎鎷f暟锛歿{item.sortingQuantity}} + </view> + </u-col> + + <u-col span="6" class="flex"> + <view class="" style="color: #808080;"> + 瀹為檯鍒嗘嫞鏁帮細 + </view> + <input + class="border_bottom_f18202 text-left color_f18202 fontSize32rpx" + style="background-color: #f2f2f2;height: 70rpx;width: 115rpx;" v-model="item.uncollectedQuantity" + type="number" @blur="changeNum(item)" placeholder="" + /> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + + </view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <scroll-view scroll-y="true" style="height: 50vh;margin-bottom: 140rpx;"> + <view class="line flex justify-between"> + <text class="text-gray">DO鍗曞彿</text> + <text>{{materlist.deliveryNo}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.wareMaterialCode}}</text> + </view> + <!-- <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.materialTypeName}}</text> + </view> --> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.wareMaterialName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text>{{materlist.batchNo}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">宸插垎鎷f暟</text> + <text>{{materlist.sortingQuantity}}</text> + </view> + </scroll-view> + </view> + <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='init' /> + </u-popup> + <button-modal :empTytowerShow='true' cleaningTitle="鍥炲簱" garmenTitle='涓嬩竴姝�' @submit='next' @reset='rest' /> + </view> + <view class="" v-else> + <scroll-view scroll-y="true" style="height: 800rpx;"> + <view v-for="(item,eindex) in arr" :key="eindex" style="background-color: #fff;" class="fontSize32rpx"> + <u-row style='padding: 25rpx 15rpx 0; '> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center " + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="padding_left10rpx color_f18202"> + {{item.wareMaterialCode}} + </view> + </u-col> + + </u-row> + <u-row style='padding: 25rpx 15rpx 0;'> + <u-col span="6" class="flex" style="text-align: right;"> + 闇�姹傚垎鎷o細{{item.quantity}} + </u-col> + <u-col span="6" class=""> + 宸插垎鎷f暟锛歿{item.sortingQuantity}} + </u-col> + </u-row> + <u-row style='padding: 25rpx 15rpx 0;'> + <u-col span="6" class="color_f18202" > + 瀹為檯鍒嗘嫞锛歿{item.uncollectedQuantity}} + </u-col> + <u-col span="6" class="flex"> + <view class="padding_left45rpx"> + 鍓╀綑锛歿{ Number( item.quantity - item.sortingQuantity - item.uncollectedQuantity).toFixed(3) }} + </view> + </u-col> + </u-row> + </view> + <!-- </view> --> + </scroll-view> + <button-modal :empTytowerShow='true' cleaningTitle="涓婁竴姝�" garmenTitle='鍒嗘嫞瀹屾垚' @submit='submit' @reset='back' /> + </view> + + <!-- 3绾ц仈鍔� --> + <cascader ref="cascader" :cascaderData="cascaderData" @confirem="cascaderConfirem" :titleData= "titleData"></cascader> + + </view> + + + +</template> + +<script> + import cascader from '@/components/cascader.vue'; + + import ButtonModal from '../../components/buttonModal.vue' + import {getContainDetail} from '../../api/putIn/artificial.js' + import ModalCode from '../../components/ModalCode.vue' + import {getOutWarehouse,addWarehouseDetails, getContainerQuery,getPickPrintQuery} from '../../api/sort.js' + import {getDate} from '../../utils/dateTime.js' + import {getAttrValue} from '../../utils/tool.js' + import BluePrint from '@/pages/print/bluePrint.js' + export default { + data() { + return { + // 3绾т笅鎷� + cascaderData: [], + titleData:{ + 'locationType':2,// 1:A3鍖哄煙锛�2:A1-A2鍖哄煙 + 'type':"" + }, + category_name: [], + category_ids:'', + // 鐗╂枡绫诲瀷 涓嬫媺 + typeVisible: false, + typeList: [], + + showPk:false, //鍒嗘嫞寮规 + datapick:[], //宸插垎鎷f暟鎹� + + + containerVisible: false, + containerList: [], + renameFocus: true, + detailshow: false, + rescode: 0, + resmessage: "", + modalshow: false, + action: this.$myHOST + '/sysFileInfo/uploadImages', + singlist: [ + // { + // "id": 394312061149253, + // "quantity": 19.11, + // "wareMaterialCode": "18VS020A711-011111", + // "wareContainerCode": "A3080201", + // "wareMaterialName": "SPACER, X LMG\nSPACER, X LMG BLOCK", + // "batchNo": "22222222222", + // "materialTypeName": "", + // "deliveryNo": "qqq", + // "sortingQuantity":2.23, + // "equipment":12, + // "process":124, + // } + ], //鐗╂枡璇︽儏 + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + containerCode: '', + + type:'', + typeName:'', + process:'', + equipmentList:'' + }, + activeIndex: 100, + detailable: false, + materialCode: '', //鐗╂枡缂栧彿 + warehouseRules: { + containerCode: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }], + operator: '', + Datetime: getDate(), + }; + }, + components: { + ButtonModal, + ModalCode, + cascader + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + // this.getOrderNo() + }, + computed: { + containerCode() { + return this.warehouse.containerCode + } + }, + watch: { + containerCode(val) { + if(!val) { + this.detailable = false; + } + } + }, + methods: { + //鐗╂枡 + typeFocus() { + this.typeList = [ + { + label: "鐩稿悓鐗╂枡", + value: 1 + }, + { + label: "涓嶅悓鐗╂枡", + value: 2 + } + ] + this.typeVisible = true; + }, + //鐗╂枡閫夋嫨-纭 + typeConfirm(context){ + this.warehouse.type = context[0].value + this.warehouse.typeName = context[0].label + this.titleData.type = context[0].value + this.getOutWarehouse() + }, + //鎵撳紑3绾у脊妗� + kuweiFocus() { + if(this.titleData.type==''){ + uni.showToast({ + title: '璇烽�夋嫨鐗╂枡绫诲瀷', + icon: 'none' + }) + return + } + this.$refs.cascader.show() + }, + // 3绾у脊妗� 纭 + cascaderConfirem(e) { + console.log(e) + this.category_ids = e.select_ids; + this.category_name = e.select_names; + this.warehouse.process =e.process; + this.warehouse.equipmentList =e.equipmentList; + this.getOutWarehouse() + }, + //鎵撳嵃 + init() { + const arr = ['warematerialCode','batchNo','uncollectedQuantity']; + const arrzw = ['鐗╂枡缂栧彿','鎵规','瀹為檯鍒嗘嫞鏁�'] + let isAllow = '' + Object.keys(this.materlist).forEach(item => { + if(arr.includes(item)) { + if(!this.materlist[item]) { + isAllow = arr.indexOf(item) + // this.rescode = 400 + // this.resmessage = `${item}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.$refs.resmodal.show = true + return + } + } + }) + if(isAllow!=''){ + this.detailshow = false + this.rescode = 400 + this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + this.$refs.resmodal.show = true + return + } + if(this.materlist.uncollectedQuantity > (this.materlist.quantity - this.materlist.sortingQuantity) || this.materlist.uncollectedQuantity==undefined){ + this.detailshow = false + this.rescode = 400 + this.resmessage = `鏁伴噺涓嶇鍚堣鑼冿紝涓嶈兘缁х画鎵撳嵃` + this.$refs.resmodal.show = true + return + } + //鐗╂枡鍚嶇О鏄惁鎹㈣ + let name = this.materlist.wareMaterialName + let name_1 = name.length > 38 ? name.substr(0, 38) : name + let name_2 = name.length > 38 ? name.substr(38) : '' + //渚涘簲鍟嗘槸鍚︽崲琛� + let desc = this.materlist.supplier || '' + let desc_1 = desc.length > 38 ? desc.substr(0, 38) : desc + let desc_2 = desc.length > 38 ? desc.substr(38) : '' + let ptintContext = [ + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + /* 浠ヤ笂绌烘暟鎹紝涓洪槻姝涪鍖呮椂鎵撳嵃涓嶆甯� */ + {type:'line',x1:3,y1:3,x2:570,y2: 3,width:2}, //涓婅竟绾� + {type:'line',x1:3,y1:3,x2:3,y2: 460,width:2},//宸﹁竟绾� + {type:'line',x1:3,y1:458,x2:570,y2: 458,width:2}, //鏈�涓嬭竟绾� + {type:'line',x1:560,y1:3,x2:560,y2:420,width:2}, //鍙宠竟绾� + {type:'text',x:10,y:15,text:`Part:${this.materlist.wareMaterialCode}`,size:3,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:50,x2:565,y2:50,width:2}, + {type:'text',x:10,y:60,text:`Descript:${name_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:10,y:95,text:`${name_2}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:130,x2:565,y2:130,width:2}, + {type:'text',x:10,y:140,text:`Vendor:${desc_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:10,y:175,text:`${desc_2}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:210,x2:565,y2:210,width:2}, + {type:'text',x:10,y:225,text:`DO:${this.materlist.deliveryNo}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:260,x2:350,y2:260,width:2}, + {type:'text',x:10,y:280,text:`Qty:${this.materlist.uncollectedQuantity} ${this.materlist.unit == null ? '' : this.materlist.unit}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:315,x2:350,y2:315,width:2}, + {type:'line',x1:3,y1:360,x2:350,y2:360,width:2}, + {type:'text',x:10,y:375,text:`Print Date:${this.getCurrentDate().date}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:410,x2:350,y2:410,width:2}, + {type:'text',x:10,y:425,text:`Print Time:${this.getCurrentDate().time}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:350,y1:210,x2:350,y2:460,width:2}, + {type:'qr',x:380,y:230,text:`PARTS NUMBER: ${this.materlist.wareMaterialCode},SAP: ${this.materlist.sap_Location || ''},LOT NO: ${this.materlist.batchNo},,QUANTITY: ${this.materlist.uncollectedQuantity}`,width:4,level:1}, + {type:'text',x:405,y:420,text:``,size:2,rotate:0,bold:1,underline:false,reverse:false}, + ] + console.log( ptintContext) + BluePrint.print(this.$store,ptintContext).then(()=>{ + let routes = getCurrentPages(); // 鑾峰彇褰撳墠鎵撳紑杩囩殑椤甸潰璺敱鏁扮粍 + let curRoute = routes[routes.length - 1].route //鑾峰彇褰撳墠椤甸潰璺敱 + console.log(curRoute) + if (curRoute == 'pages/print/bluetoothConnection') {// 杩炴帴钃濈墮澶辫触 璺抽〉闈� + return + } + uni.showToast({ + title:'鎵撳嵃鎴愬姛', + duration:2000 + }) + this.addForm.code = this.materlist.wareMaterialCode; + this.addForm.name = this.materlist.wareMaterialName; + this.addForm.batchNo = this.materlist.batchNo; + this.addForm.specificationModel = this.materlist.specificationModel; + //杩欓噷涓嶅啀璁板綍鎵撳嵃璁板綍锛屽洜涓烘湁浜嗘枒椹墦鍗� 銆怑ditby shaocx,2023-05-22銆� + /* + addPrintRecord(this.addForm).then(res => { + console.log(res); + }) + //*/ + }).catch((err)=>{ + uni.showToast({ + title:'鎵撳嵃澶辫触', + duration: 2000 + }) + }) + }, + //鑾峰彇print date print time + getCurrentDate() { + let date = new Date(); + let year = date.getFullYear(); //骞� + let month = date.getMonth() + 1; //鏈� + month = month >= 10 ? month : '0' + month; + let day = date.getDate(); //鏃� + day = day >= 10 ? day : '0' + day; + let hour = date.getHours() //鏃� + hour = hour >= 10 ? hour : '0' + hour; + let min = date.getMinutes(); //鍒� + min = min >= 10 ? min : '0' + min; + let second = date.getSeconds(); //绉� + second = second >= 10 ? second : '0' + second; + return { + date: `${day}.${month}.${year}`, + time: `${hour}:${min}:${second}`, + formate:`${year}/${month}/${day}` + } + }, + //瀹瑰櫒閫夋嫨 + containerConfirm(context){ + this.warehouse.containerCode = context[0].value + this.getOutWarehouse() + }, + //瀹瑰櫒鑱氱劍浜嬩欢 + containerFocus() { + this.getContainerList() + }, + //鑾峰彇褰撳墠鍖哄煙鐨勯渶瑕佸垎鎷g殑瀹瑰櫒鍒楄〃 + getContainerList() { + getContainerQuery(2).then(res => { + this.containerList = res.data.reduce((curr,item) => { + curr.push({ + label: item, + value: item + }) + return curr; + },[]) + this.containerVisible = true; + }) + }, + //鏌ヨ鐗╂枡 + getOutWarehouse() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + // setTimeout(() => { + this.focu = false + if(!this.category_ids){ + return + } + if(this.warehouse.equipmentList.length==0){ + return + } + let params = { + // WareContainerCode: this.warehouse.containerCode, + type : this.warehouse.type,//1鐩稿悓鐗╂枡锛�2涓嶅悓鐗╂枡锛堜竴涓伐搴忥紝澶氫釜鏈哄簥鍙蜂笅鐨勭浉鍚岀墿鏂欐垨涓嶅悓鐗╂枡锛� + WareContainerCode: this.category_ids.join(","), + locationType:this.titleData.locationType, // 1:A3鍖哄煙锛�2:A1-A2鍖哄煙 + process:this.warehouse.process,//宸ュ簭 + equipmentList:this.warehouse.equipmentList //鏈哄簥鍙� + } + console.log(params ) + getOutWarehouse(params).then((res) => { + if (res.code == 200) { + if(res.data.length == 0) { + this.resmessage = '褰撳墠瀹瑰櫒鏃犲彲鍑虹墿鏂�' + this.rescode = 400 + this.$refs.resmodal.show = true + }else { + + res.data.map(item => { + item.uncollectedQuantity = parseFloat(item.quantity) - parseFloat(item.sortingQuantity) + item.showItem = false + return item + }) + this.singlist = res.data + } + + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + // }, 200) + } + }) + }, + //鍒ゆ柇姝ょ墿鏂欑紪鍙锋槸鍚﹀瓨鍦� + getMaterialDetails() { + this.materialCode = getAttrValue(this.materialCode,'PARTSNUMBER') + // SAP --- && item.sap_Location == SAP + let SAP = getAttrValue(this.materialCode,'SAP') + if (this.materialCode !== '') { + //鑾峰彇褰撳墠鐗╂枡 + 鎵规鐨勬墍鏈夋暟鎹� + const arr = this.singlist.reduce((curr,item,index) => { + if(item.wareMaterialCode == this.materialCode) { + curr.push(index) + } + return curr; + },[]) + + if(arr.length > 0) { + arr.forEach(item => { + this.singlist[item].showItem = true; + this.singlist.unshift(...this.singlist.splice(item, 1)) + }) + }else { + uni.showModal({ + title: '鎻愮ず', + content: '褰撳墠鍒嗘嫞鍗曚腑涓嶉渶鍒嗘嫞姝ょ墿鏂�', + showCancel: false + }) + } + } + }, + //璇︽儏 + longpress(index, eindex) { + this.materlist = this.singlist[index] + this.activeIndex = index; + this.detailshow = true + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + if (parseFloat(val.uncollectedQuantity) < 0 || val.uncollectedQuantity ==''|| val.uncollectedQuantity ==undefined) { + uni.showModal({ + title: '鎻愮ず', + content: '鍒嗘嫞鏁伴噺涓嶈兘灏忎簬0', + showCancel: false + }) + return + } + // val.uncollectedQuantity = Number(val.uncollectedQuantity.toString().match(/^\d+(?:\.\d{0,2})?/)) // 淇濈暀涓や綅灏忔暟 + let num1 = Number(Number(val.quantity) - Number(val.sortingQuantity)).toFixed(3) //蹇呴』淇濈暀3浣嶅皬鏁� -鍚﹀垯浼氶�犳垚鍓╀綑鐗╂枡鏄皬鏁扮殑鏃跺��,鏃犳硶鏀惰揣 + if (parseFloat(val.uncollectedQuantity) > Number(num1) ) { + uni.showModal({ + title: '鎻愮ず', + content: '鍒嗘嫞鏁伴噺涓嶈兘澶т簬闇�姹傛暟鍜屽凡鍒嗘嫞涔嬪樊', + showCancel: false + }) + } + + }, + //纭 + next() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + if(this.singlist.length == 0) { + this.rescode = 400 + this.resmessage = `娆″鍣ㄤ笅娌℃湁鍙垎鎷g殑鐗╂枡` + this.$refs.resmodal.show = true + return + }else { + let count = this.singlist.findIndex(item => item.uncollectedQuantity == '' || parseFloat(item.uncollectedQuantity) <= 0 || parseFloat(item.uncollectedQuantity) > (parseFloat(item.quantity) - parseFloat(item.sortingQuantity) ) ) + + if(count > -1) { + uni.showToast({ + title: `${this.singlist[count].wareMaterialCode}鍒嗘嫞鏁伴噺涓嶅悎瑕佹眰`, + icon:'none' + }) + return + } + this.arr = this.singlist; + this.renameFocus = false; + } + + }else { + this.rescode = 400 + this.resmessage = `琛ㄥ崟楠岃瘉澶辫触锛岃妫�鏌ュ弬鏁版槸鍚︾鍚堣姹俙 + this.$refs.resmodal.show = true + return + } + }); + }, + submit() { + // debug + let sortingLists = this.arr.reduce((curr,item) => { + let {uncollectedQuantity,quantity,...rest} = item + curr.push({ + ...rest, + quality: item.uncollectedQuantity + }) + return curr + },[]) + let params = { + createdTime: this.Datetime, + updatedTime: this.Datetime, + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + // wareContainerCode: this.warehouse.containerCode, + wareContainerCode: this.category_ids.join(','), + sortOrderNo:this.arr[0].sortOrderNo||'', + gridNumber: 1, + useNumber: 0, + sortingLists + } + + uni.showModal({ + title: '鎻愮ず', + content: '纭畾鏄惁鍒嗘嫞锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + addWarehouseDetails(params).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.renameFocus = true + this.resetData(); + this.getRecord(sortingLists)// 璁板綍 + } + }) + } else if (res.cancel) { + + } + }) + }); + }, + + getRecord(params){ + console.log(params) + getPickPrintQuery(params).then((res) => { + if (res.code == 200) { + this.renameFocus = true + this.resetData(); + this.showPk = true; + // res.data = [ + // { + // "createdTime": "2023-03-20T06:05:58.164Z", + // "updatedTime": "2023-03-20T06:05:58.164Z", + // "createdUserId": 0, + // "createdUserName": "string", + // "updatedUserId": 0, + // "updatedUserName": "string", + // "id": 0, + // "ordersId": 0, + // "orderNo": "string", + // "deliveryNo": "string", + // "wareContainerCode": "string", + // "wareContainerName": "string", + // "wareMaterialCode": "string", + // "wareMaterialName": "string", + // "wareMaterialTypeName": "string", + // "wareMaterialSubTypeName": "string", + // "long": 0, + // "width": 0, + // "high": 0, + // "weight": 0, + // "barCode": "string", + // "specificationModel": "string", + // "batchNo": "string", + // "unit": "string", + // "quantity": 0, + // "completeQuantity": 0, + // "remarks": "string", + // "orderStatus": 0, + // "status": 0, + // "orderType": "string", + // "deliveryQuantity": 0, + // "equipment": "string", + // "process": "string", + // "demandDate": "2023-03-20T06:05:58.164Z" + // } + // ] + this.datapick = JSON.stringify(res.data) + } + }) + }, + //鏁版嵁閲嶇疆 + resetData() { + this.warehouse.gridNumber = 1; + this.warehouse.useNumber = 0; + this.warehouse.exitNumber = 0; + this.materialCode = ''; + this.arr = []; + this.singlist = []; + + }, + //鍥炲簱 + rest() { + uni.navigateTo({ + url:`/pages/sort/return?containerCode=${this.warehouse.containerCode}` + }) + + }, + //涓婁竴姝� + back(){ + // uni.navigateTo({ + // url:`/pages/sort/return?containerCode=${this.warehouse.containerCode}` + // }) + this.renameFocus=true + } + } + } +</script> + +<style lang="scss" scoped> + .bg_item { + background: #FFEBCD !important; + } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/sort/sort2.vue b/LA24030_LuLiPackageLine_Pda/pages/sort/sort2.vue new file mode 100644 index 0000000..9fdd71b --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/sort/sort2.vue @@ -0,0 +1,611 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">A1/A2鍒嗘嫞(PO)</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <view v-if="!renameFocus" class="text-bold width fontSize32rpx" + style="padding: 10rpx 10rpx;background-color: #d6d6d6;border-bottom: 1px solid #bcbcbc;"> + <view class="flex justify-between align-center"> + <text class="width23 padding10">瀹瑰櫒缂栧彿</text> + <text>{{warehouse.containerCode}}</text> + </view> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <u-select v-model="containerVisible" :list="containerList" @confirm="containerConfirm"></u-select> + <view class="" v-if="renameFocus"> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" required + style="font-size: 32rpx;font-weight: bold;padding: 0;"> + <input v-model="warehouse.containerCode" + @focus="containerFocus" + style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx" + placeholder="璇峰綍鍏ユ垨鎵爜"> + </input> + <!-- <u-icon name="close-circle-fill" color="#848484" v-if="warehouse.containerCode && focu" + @click="warehouse.containerCode=''"></u-icon> --> + </u-form-item> + </u-col> + <!-- <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx" @click="containerScane"></u-icon> + </u-col> --> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" + style="font-size: 32rpx;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="materialCode" @focus="materialCode = ''" placeholder="璇峰綍鍏ユ垨鎵爜" + @blur="getMaterialDetails" class="width padding_left25rpx" + style="font-weight: bolder;margin-left: 30rpx;"> + </input> + </u-form-item> + </u-col> + <!-- <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> --> + </u-row> + </u-form> + <view style="margin-bottom: 180rpx;margin-top: 10rpx;"> + <view v-for="(item, eindex) in singlist" :key="eindex" style="width: 100vw;display: flex;margin: 15rpx auto;"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" @open="open" :options="options" style="width: 100vw;"> + <view class="title-wrap fontSize32rpx background_fff" :class="item.showItem ? 'bg_item' : ''" style="width: 100vw;"> + <u-row> + <u-col span="1"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50%;width: 40rpx;height: 40rpx;"> + {{eindex+1}} + </view> + </u-col> + <u-col span="10"> + <view class="color_f18202"> + {{item.wareMaterialCode}} ({{item.batchNo}}) + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 鍒嗘嫞闇�姹傛暟锛歿{item.quantity}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 宸插垎鎷f暟锛歿{item.sortingQuantity}} + </view> + </u-col> + + <u-col span="6" class="flex"> + <view class="" style="color: #808080;"> + 瀹為檯鍒嗘嫞鏁帮細 + </view> + <input + class="border_bottom_f18202 text-left color_f18202 fontSize32rpx" + style="background-color: #f2f2f2;height: 70rpx;width: 115rpx;" v-model="item.uncollectedQuantity" + type="number" @blur="changeNum(item)" placeholder="" + /> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + + </view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <scroll-view scroll-y="true" style="height: 50vh;margin-bottom: 140rpx;"> + <view class="line flex justify-between"> + <text class="text-gray">DO鍗曞彿</text> + <text>{{materlist.deliveryNo}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.wareMaterialCode}}</text> + </view> + <!-- <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.materialTypeName}}</text> + </view> --> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.wareMaterialName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text>{{materlist.batchNo}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">宸插垎鎷f暟</text> + <text>{{materlist.sortingQuantity}}</text> + </view> + </scroll-view> + </view> + <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='init' /> + </u-popup> + <button-modal :empTytowerShow='true' cleaningTitle="鍥炲簱" garmenTitle='涓嬩竴姝�' @submit='next' @reset='rest' /> + </view> + <view class="" v-else> + <scroll-view scroll-y="true" style="height: 800rpx;"> + <view v-for="(item,eindex) in arr" :key="eindex" style="background-color: #fff;" class="fontSize32rpx"> + <u-row style='padding: 25rpx 15rpx 0; '> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center " + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 40rpx;height: 40rpx;"> + {{eindex+1}} + </view> + <view class="padding_left10rpx color_f18202"> + {{item.wareMaterialCode}} + </view> + </u-col> + + </u-row> + <u-row style='padding: 25rpx 15rpx 0;'> + <u-col span="6" class="flex" style="text-align: right;"> + 闇�姹傚垎鎷o細{{item.quantity}} + </u-col> + <u-col span="6" class=""> + 宸插垎鎷f暟锛歿{item.sortingQuantity}} + </u-col> + </u-row> + <u-row style='padding: 25rpx 15rpx 0;'> + <u-col span="6" class="color_f18202" > + 瀹為檯鍒嗘嫞锛歿{item.uncollectedQuantity}} + </u-col> + <u-col span="6" class="flex"> + <view class="padding_left45rpx"> + 鍓╀綑锛歿{ Number( item.quantity - item.sortingQuantity - item.uncollectedQuantity).toFixed(3) }} + </view> + </u-col> + </u-row> + </view> + <!-- </view> --> + </scroll-view> + <button-modal :empTytowerShow='true' cleaningTitle="涓婁竴姝�" garmenTitle='鍒嗘嫞瀹屾垚' @submit='submit' @reset='back' /> + </view> + </view> + </view> +</template> + +<script> + import ButtonModal from '../../components/buttonModal.vue' + import {getContainDetail} from '../../api/putIn/artificial.js' + import ModalCode from '../../components/ModalCode.vue' + import {getOutWarehousePO,addWarehouseDetailsPO, getwmsOrderMovementDetails} from '../../api/sort.js' + import {getDate} from '../../utils/dateTime.js' + import {getAttrValue} from '../../utils/tool.js' + import BluePrint from '@/pages/print/bluePrint.js' + export default { + data() { + return { + containerVisible: false, + containerList: [], + renameFocus: true, + detailshow: false, + rescode: 0, + resmessage: "", + modalshow: false, + action: this.$myHOST + '/sysFileInfo/uploadImages', + singlist: [ + // { + // "id": 394312061149253, + // "quantity": 19.11, + // "wareMaterialCode": "18VS020A711-011111", + // "wareContainerCode": "A3080201", + // "wareMaterialName": "SPACER, X LMG\nSPACER, X LMG BLOCK", + // "batchNo": "22222222222", + // "materialTypeName": "", + // "deliveryNo": "qqq", + // "sortingQuantity":2.23 + // } + ], //鐗╂枡璇︽儏 + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + containerCode: '', + }, + activeIndex: 100, + detailable: false, + materialCode: '', //鐗╂枡缂栧彿 + warehouseRules: { + containerCode: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }], + operator: '', + Datetime: getDate(), + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + // this.getOrderNo() + }, + computed: { + containerCode() { + return this.warehouse.containerCode + } + }, + watch: { + containerCode(val) { + if(!val) { + this.detailable = false; + } + } + }, + methods: { + //鎵撳嵃 + init() { + const arr = ['warematerialCode','batchNo','uncollectedQuantity']; + const arrzw = ['鐗╂枡缂栧彿','鎵规','瀹為檯鍒嗘嫞鏁�'] + let isAllow = '' + Object.keys(this.materlist).forEach(item => { + if(arr.includes(item)) { + if(!this.materlist[item]) { + isAllow = arr.indexOf(item) + // this.rescode = 400 + // this.resmessage = `${item}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.$refs.resmodal.show = true + return + } + } + }) + if(isAllow!=''){ + this.detailshow = false + this.rescode = 400 + this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + this.$refs.resmodal.show = true + return + } + if(this.materlist.uncollectedQuantity > (this.materlist.quantity - this.materlist.sortingQuantity)){ + this.detailshow = false + this.rescode = 400 + this.resmessage = `鏁伴噺涓嶇鍚堣鑼冿紝涓嶈兘缁х画鎵撳嵃` + this.$refs.resmodal.show = true + return + } + //鐗╂枡鍚嶇О鏄惁鎹㈣ + let name = this.materlist.wareMaterialName + let name_1 = name.length > 38 ? name.substr(0, 38) : name + let name_2 = name.length > 38 ? name.substr(38) : '' + //渚涘簲鍟嗘槸鍚︽崲琛� + let desc = this.materlist.supplier || '' + let desc_1 = desc.length > 38 ? desc.substr(0, 38) : desc + let desc_2 = desc.length > 38 ? desc.substr(38) : '' + let ptintContext = [ + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + {type:'text',x:0,y:0,text:'',size:2,rotate:0,bold:0,underline:false,reverse:false}, + /* 浠ヤ笂绌烘暟鎹紝涓洪槻姝涪鍖呮椂鎵撳嵃涓嶆甯� */ + {type:'line',x1:3,y1:3,x2:570,y2: 3,width:2}, //涓婅竟绾� + {type:'line',x1:3,y1:3,x2:3,y2: 460,width:2},//宸﹁竟绾� + {type:'line',x1:3,y1:458,x2:570,y2: 458,width:2}, //鏈�涓嬭竟绾� + {type:'line',x1:560,y1:3,x2:560,y2:420,width:2}, //鍙宠竟绾� + {type:'text',x:10,y:15,text:`Part:${this.materlist.wareMaterialCode}`,size:3,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:50,x2:565,y2:50,width:2}, + {type:'text',x:10,y:60,text:`Descript:${name_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:10,y:95,text:`${name_2}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:130,x2:565,y2:130,width:2}, + {type:'text',x:10,y:140,text:`Vendor:${desc_1}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'text',x:10,y:175,text:`${desc_2}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:210,x2:565,y2:210,width:2}, + {type:'text',x:10,y:225,text:`DO:${this.materlist.deliveryNo}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:260,x2:350,y2:260,width:2}, + {type:'text',x:10,y:280,text:`Qty:${this.materlist.uncollectedQuantity} ${this.materlist.unit == null ? '' : this.materlist.unit}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:315,x2:350,y2:315,width:2}, + {type:'line',x1:3,y1:360,x2:350,y2:360,width:2}, + {type:'text',x:10,y:375,text:`Print Date:${this.getCurrentDate().date}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:3,y1:410,x2:350,y2:410,width:2}, + {type:'text',x:10,y:425,text:`Print Time:${this.getCurrentDate().time}`,size:2,rotate:0,bold:1,underline:false,reverse:false}, + {type:'line',x1:350,y1:210,x2:350,y2:460,width:2}, + {type:'qr',x:380,y:230,text:`PARTS NUMBER: ${this.materlist.wareMaterialCode},MATERIAL NAME: ${this.materlist.wareMaterialName},LOT NO: ${this.materlist.batchNo},QUANTITY: ${this.materlist.uncollectedQuantity}`,width:4,level:1}, + {type:'text',x:405,y:420,text:``,size:2,rotate:0,bold:1,underline:false,reverse:false}, + ] + console.log( ptintContext) + BluePrint.print(this.$store,ptintContext).then(()=>{ + let routes = getCurrentPages(); // 鑾峰彇褰撳墠鎵撳紑杩囩殑椤甸潰璺敱鏁扮粍 + let curRoute = routes[routes.length - 1].route //鑾峰彇褰撳墠椤甸潰璺敱 + console.log(curRoute) + if (curRoute == 'pages/print/bluetoothConnection') {// 杩炴帴钃濈墮澶辫触 璺抽〉闈� + return + } + uni.showToast({ + title:'鎵撳嵃鎴愬姛', + duration:2000 + }) + this.addForm.code = this.materlist.wareMaterialCode; + this.addForm.name = this.materlist.wareMaterialName; + this.addForm.batchNo = this.materlist.batchNo; + this.addForm.specificationModel = this.materlist.specificationModel; + //杩欓噷涓嶅啀璁板綍鎵撳嵃璁板綍锛屽洜涓烘湁浜嗘枒椹墦鍗� 銆怑ditby shaocx,2023-05-22銆� + /* + addPrintRecord(this.addForm).then(res => { + console.log(res); + }) + //*/ + }).catch((err)=>{ + uni.showToast({ + title:'鎵撳嵃澶辫触', + duration: 2000 + }) + }) + }, + //鑾峰彇print date print time + getCurrentDate() { + let date = new Date(); + let year = date.getFullYear(); //骞� + let month = date.getMonth() + 1; //鏈� + month = month >= 10 ? month : '0' + month; + let day = date.getDate(); //鏃� + day = day >= 10 ? day : '0' + day; + let hour = date.getHours() //鏃� + hour = hour >= 10 ? hour : '0' + hour; + let min = date.getMinutes(); //鍒� + min = min >= 10 ? min : '0' + min; + let second = date.getSeconds(); //绉� + second = second >= 10 ? second : '0' + second; + return { + date: `${day}.${month}.${year}`, + time: `${hour}:${min}:${second}`, + formate:`${year}/${month}/${day}` + } + }, + //瀹瑰櫒閫夋嫨 + containerConfirm(context){ + this.warehouse.containerCode = context[0].value + this.getOutWarehouse() + }, + //瀹瑰櫒鑱氱劍浜嬩欢 + containerFocus() { + this.getContainerList() + }, + //鑾峰彇褰撳墠鍖哄煙鐨勯渶瑕佸垎鎷g殑瀹瑰櫒鍒楄〃 + getContainerList() { + // //debugger + let param = { + 'locationType':'2' + } + getwmsOrderMovementDetails(param).then(res => { + this.containerList = res.data.reduce((curr,item) => { + curr.push({ + label: item, + value: item + }) + return curr; + },[]) + this.containerVisible = true; + }) + }, + //鏌ヨ鐗╂枡 + getOutWarehouse() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focu = false + if (this.warehouse.containerCode !== '') { + let params = { + WareContainerCode: this.warehouse.containerCode + } + getOutWarehousePO(params).then((res) => { + if (res.code == 200) { + if(res.data.length == 0) { + this.resmessage = '褰撳墠瀹瑰櫒鏃犲彲鍑虹墿鏂�' + this.rescode = 400 + this.$refs.resmodal.show = true + }else { + + res.data.map(item => { + item.uncollectedQuantity = parseFloat(item.quantity) - parseFloat(item.sortingQuantity) + item.showItem = false + return item + }) + this.singlist = res.data + } + + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + } + }, 200) + } + }) + }, + //鍒ゆ柇姝ょ墿鏂欑紪鍙锋槸鍚﹀瓨鍦� + getMaterialDetails() { + this.materialCode = getAttrValue(this.materialCode,'PARTSNUMBER') + if (this.materialCode !== '') { + //鑾峰彇褰撳墠鐗╂枡 + 鎵规鐨勬墍鏈夋暟鎹� + const arr = this.singlist.reduce((curr,item,index) => { + if(item.wareMaterialCode == this.materialCode) { + curr.push(index) + } + return curr; + },[]) + + if(arr.length > 0) { + arr.forEach(item => { + this.singlist[item].showItem = true; + this.singlist.unshift(...this.singlist.splice(item, 1)) + }) + }else { + uni.showModal({ + title: '鎻愮ず', + content: '褰撳墠鍒嗘嫞鍗曚腑涓嶉渶鍒嗘嫞姝ょ墿鏂�', + showCancel: false + }) + } + } + }, + //璇︽儏 + longpress(index, eindex) { + this.materlist = this.singlist[index] + this.activeIndex = index; + this.detailshow = true + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + if (parseFloat(val.uncollectedQuantity) < 0 || val.uncollectedQuantity =='') { + uni.showModal({ + title: '鎻愮ず', + content: '鍒嗘嫞鏁伴噺涓嶈兘灏忎簬0', + showCancel: false + }) + } + // val.uncollectedQuantity = Number(val.uncollectedQuantity.toString().match(/^\d+(?:\.\d{0,2})?/)) // 淇濈暀涓や綅灏忔暟 + let num1 = Number( Number(val.quantity) - Number(val.sortingQuantity)).toFixed(3) //蹇呴』淇濈暀3浣嶅皬鏁� -鍚﹀垯浼氶�犳垚鍓╀綑鐗╂枡鏄皬鏁扮殑鏃跺��,鏃犳硶鏀惰揣 + if (parseFloat(val.uncollectedQuantity) > Number(num1)) { + uni.showModal({ + title: '鎻愮ず', + content: '鍒嗘嫞鏁伴噺涓嶈兘澶т簬闇�姹傛暟鍜屽凡鍒嗘嫞涔嬪樊', + showCancel: false + }) + } + + }, + //纭 + next() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + if(this.singlist.length == 0) { + this.rescode = 400 + this.resmessage = `娆″鍣ㄤ笅娌℃湁鍙垎鎷g殑鐗╂枡` + this.$refs.resmodal.show = true + return + }else { + // let count = this.singlist.findIndex(item => item.uncollectedQuantity == '' || parseFloat(item.uncollectedQuantity) <= 0 || parseFloat(item.uncollectedQuantity) > (parseFloat(item.quantity) - parseFloat(item.sortingQuantity) ) ) + + // if(count > -1) { + // uni.showToast({ + // title: `${this.singlist[count].wareMaterialCode}鍒嗘嫞鏁伴噺涓嶅悎瑕佹眰`, + // icon:'none' + // }) + // return + // } + this.arr = this.singlist; + this.renameFocus = false; + } + + }else { + this.rescode = 400 + this.resmessage = `琛ㄥ崟楠岃瘉澶辫触锛岃妫�鏌ュ弬鏁版槸鍚︾鍚堣姹俙 + this.$refs.resmodal.show = true + return + } + }); + }, + submit() { + let sortingLists = this.arr.reduce((curr,item) => { + curr.push({ + wareMaterialCode: item.wareMaterialCode, + wareMaterialName: item.wareMaterialName, + quality: item.uncollectedQuantity, + betchNo: item.batchNo, + id:item.id + }) + return curr + },[]) + let params = { + createdTime: this.Datetime, + updatedTime: this.Datetime, + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + wareContainerCode: this.warehouse.containerCode, + gridNumber: 1, + useNumber: 0, + sortingLists + } + + uni.showModal({ + title: '鎻愮ず', + content: '纭畾鏄惁鍒嗘嫞锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + addWarehouseDetailsPO(params).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.renameFocus = true + this.resetData(); + } + }) + } else if (res.cancel) { + + } + }) + }); + + + }, + //鏁版嵁閲嶇疆 + resetData() { + this.warehouse.gridNumber = 1; + this.warehouse.useNumber = 0; + this.warehouse.exitNumber = 0; + this.materialCode = ''; + this.arr = []; + this.singlist = []; + + }, + //鍥炲簱 + rest() { + uni.navigateTo({ + url:`/pages/sort/return?containerCode=${this.warehouse.containerCode}` + }) + + }, + //涓婁竴姝� + back(){ + // uni.navigateTo({ + // url:`/pages/sort/return?containerCode=${this.warehouse.containerCode}` + // }) + this.renameFocus=true + } + } + } +</script> + +<style lang="scss" scoped> + .bg_item { + background: #FFEBCD !important; + } +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/sort/squareSort2.vue b/LA24030_LuLiPackageLine_Pda/pages/sort/squareSort2.vue new file mode 100644 index 0000000..0f3d322 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/sort/squareSort2.vue @@ -0,0 +1,797 @@ +<template> + <view class="overflow" style="padding-bottom: 150px"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> </block> + <block slot="content"> + <span v-if="orderType == 1">鏁翠綋鎷h揣</span> + <span v-if="orderType == 2">閫愪欢鎷h揣</span> + </block> + </cu-custom> + <!-- <view class="flex justify-end align-center padding_right30rpx padding10"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{ operator }} </text> + </view> --> + <modal-code ref="resmodal" :rescode="rescode" :resmessage="resmessage" /> + <u-select + v-model="containerVisible" + :list="containerList" + @confirm="containerConfirm" + ></u-select> + <u-select + v-model="containerVisibleDo" + :list="containerListDo" + @confirm="containerConfirmDo" + ></u-select> + <view class="" v-if="renameFocus"> + <u-form + labelPosition="left" + label-width="180rpx" + :model="warehouse" + ref="warehouseRef" + > + <u-row + class="border_bottom margin_top10rpx padding_left25rpx" + style="background-color: #fff" + > + <u-col span="12"> + <u-form-item + label="瀹瑰櫒缂栧彿:" + prop="containerCode" + required + class="uFormItem" + > + <u-input + :focus="curFoucus" + v-model.trim="warehouse.containerCode" + @confirm="getOutWarehouse(1)" + :clearable="false" + @focus="warehouse.containerCode = ''" + placeholder="璇锋壂鐮佸綍鍏�" + > + </u-input> + </u-form-item> + </u-col> + </u-row> + <!-- 閫愪欢鎷h揣2 --> + <u-row + class="border_bottom margin_top10rpx padding_left25rpx" + style="background-color: #fff" + v-if="this.orderType == 2" + > + <u-col span="10"> + <u-form-item label="涓嬫灦鍗曞彿:" prop="DoOrderNo" class="uFormItem"> + <u-input + v-model.trim="warehouse.DoOrderNo" + placeholder="璇峰綍鍏ユ垨鎵爜" + @focus="warehouse.DoOrderNo = ''" + class="width" + :clearable="false" + @confirm="orderBlurDo" + > + </u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="containerFocusDo"> + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="14" class="fontSize15rpx"></u-icon> + </u-col> + </u-row> + + <!-- 閫愪欢鎷h揣2 --> + <u-row + class="border_bottom margin_top10rpx padding_left25rpx" + style="background-color: #fff" + v-if="this.orderType == 2" + > + <u-col span="12"> + <u-form-item label="鐗╂枡璺熻釜鐮�:" class="uFormItem"> + <u-input + v-model="warehouse.SNCode" + @focus="warehouse.SNCode = ''" + placeholder="璇峰綍鍏ユ垨鎵爜" + @confirm="getOutWarehouse" + :clearable="false" + > + </u-input> + </u-form-item> + </u-col> + </u-row> + + <!-- 鏁翠綋鎷h揣1 --> + <u-row + class="border_bottom margin_top10rpx padding_left25rpx" + style="background-color: #fff" + v-if="this.orderType == 1" + > + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" class="uFormItem"> + <u-input + v-model="warehouse.materialCode" + @focus="warehouse.materialCode = ''" + placeholder="璇峰綍鍏ユ垨鎵爜" + @blur="getMaterialDetails" + > + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <view> + <view + v-for="(item, eindex) in singlist" + :key="eindex" + style="width: 100vw; display: flex; margin: 5px auto" + > + <u-swipe-action + :show="item.show" + :index="eindex" + @click="longpress" + @open="open" + :options="options" + style="width: 100vw" + > + <view + class="fontSize32rpx background_fff padding10" + :class="item.showItem ? 'bg_item' : ''" + style="width: 100vw" + > + <u-row> + <u-col span="1"> + <view + class="flex justify-center align-center" + style=" + background-color: #f18202; + color: #fff; + border-radius: 50%; + width: 40rpx; + height: 40rpx; + " + > + {{ eindex + 1 }} + </view> + </u-col> + <u-col span="11"> + <view class="color_f18202"> + {{ item.materialCode }}-{{ item.materialName }} + </view> + </u-col> + </u-row> + <u-row v-if="orderType == 2"> + <u-col span="12"> + <view class="color_80 padding_left25rpx"> + 涓嬫灦鍗曞彿锛歿{ item.relationNo }} + </view> + </u-col> + </u-row> + <u-row v-if="orderType == 2"> + <u-col span="12"> + <view class="color_80 padding_left25rpx"> + 鐗╂枡璺熻釜鐮侊細{{ item.snCode }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="color_80 padding_left25rpx"> + 鍒嗘嫞闇�姹傛暟锛歿{ item.quantity }} + </view> + </u-col> + <u-col span="6"> + <view class="color_80"> + 搴撲綅缂栧彿锛歿{ item.containerCode }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="color_80 padding_left25rpx"> + 宸插垎鎷f暟锛歿{ item.pickQuantity }} + </view> + </u-col> + <u-col span="6" class="flex" v-if="orderType == 1"> + <view class="color_80"> 瀹為檯鍒嗘嫞鏁帮細 </view> + <input + class="border_bottom_f18202 text-left color_f18202 fontSize32rpx" + style=" + background-color: #f2f2f2; + height: 70rpx; + width: 100rpx; + " + v-model="item.uncollectedQuantity" + type="number" + @blur="changeNum(item)" + placeholder="" + /> + </u-col> + + <u-col span="5" class="flex" v-if="orderType == 2"> + <view class="color_f18202"> + 瀹為檯鍒嗘嫞鏁帮細{{ item.uncollectedQuantity }} + </view> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + </view> + <u-popup + v-model="detailshow" + border-radius="14" + @close="detailshow = false" + mode="bottom" + > + <view class="pop"> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <scroll-view + scroll-y="true" + style="height: 50vh; margin-bottom: 140rpx" + > + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{ materlist.materialCode }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{ materlist.materialName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹瑰櫒缂栧彿</text> + <text>{{ materlist.containerCode }}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鍏宠仈鍗曞彿</text> + <text>{{ materlist.relationNo }}</text> + </view> + <view class="line flex justify-between "> + <text class="text-gray">寮傚父鍘熷洜锛�</text> + <input class="textyc" v-model="materlist.exceptionReason"></input> + </view> + <view class="line flex justify-between"> + <text class="text-gray">寮傚父鏁伴噺锛�</text> + <input + type="number" class="textyc" + v-model="materlist.exceptionQuality" + ></input> + </view> + </scroll-view> + </view> + <button-modal + :cleaningShow="true" + allTitle="閲嶇疆" + cleaningTitle="寮傚父姹囨姤" + @allsubmit="init(1)" + @submit="init(2)" + /> + </u-popup> + <button-modal + :empTytowerShow="true" + cleaningTitle="杩斿洖" + garmenTitle="涓嬩竴姝�" + @submit="next" + @reset="rest" + /> + </view> + <view class="" v-if="!renameFocus"> + <view> + <view + v-for="(item, eindex) in arr" + :key="eindex" + class="fontSize32rpx padding10 margin_top10rpx background_fff" + > + <u-row> + <u-col span="12" class="flex"> + <view + class="flex justify-center align-center" + style=" + background-color: #f18202; + color: #fff; + border-radius: 50vh; + width: 20px; + height: 20px; + " + > + {{ eindex + 1 }} + </view> + <view class="padding_left10rpx color_f18202"> + {{ item.materialCode }}-{{ item.materialName }} + </view> + </u-col> + </u-row> + <u-row v-if="orderType == 2"> + <u-col span="12"> + <view class="color_80 padding_left25rpx"> + 涓嬫灦鍗曞彿锛歿{ item.relationNo }} + </view> + </u-col> + </u-row> + <u-row v-if="orderType == 2"> + <u-col span="12"> + <view class="color_80 padding_left25rpx"> + 鐗╂枡璺熻釜鐮侊細{{ item.snCode }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="color_80 padding_left25rpx"> + 搴撲綅缂栧彿锛歿{ item.containerCode }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="8"> + <view class="color_80 padding_left25rpx"> + 闇�姹傚垎鎷o細{{ item.quantity }} + </view> + </u-col> + <u-col span="4" class="color_80"> + 宸插垎鎷f暟锛歿{ item.pickQuantity }} + </u-col> + </u-row> + <u-row> + <u-col span="8"> + <view class="color_80 padding_left25rpx"> + 瀹為檯鍒嗘嫞锛歿{ item.uncollectedQuantity }} + </view> + </u-col> + <u-col span="4"> + <view class="color_f18202"> + 鍓╀綑锛歿{ + Number( + item.quantity - item.pickQuantity - item.uncollectedQuantity + ).toFixed(3) + }} + </view> + </u-col> + </u-row> + </view> + </view> + </view> + <button-modal + v-if="!renameFocus" + :empTytowerShow="true" + cleaningTitle="涓婁竴姝�" + garmenTitle="鍒嗘嫞瀹屾垚" + @submit="submit" + @reset="back" + /> + </view> +</template> + +<script> +import ButtonModal from "../../components/buttonModal.vue"; +import ModalCode from "../../components/ModalCode.vue"; +import { + getOutWarehousePO, + addWarehouseDetailsPO, + addSortExceptionFlagConfirm, +} from "../../api/sort.js"; +import { getDate } from "../../utils/dateTime.js"; +import { getAllOrderDo } from "../../api/deliver.js"; +export default { + data() { + return { + curFoucus: true, + ermNum: "", + contLabel: 1, + containerVisibleDo: false, + containerListDo: [], + containerVisible: false, + containerList: [], + renameFocus: true, + detailshow: false, + rescode: 0, + resmessage: "", + modalshow: false, + action: this.$myHOST + "/sysFileInfo/uploadImages", + singlist: [], //鐗╂枡璇︽儏 + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + containerCode: "", + DoOrderNo: "", + SNCode: "", + }, + activeIndex: 100, + detailable: false, + materialCode: "", //鐗╂枡缂栧彿 + warehouseRules: {}, + options: [ + { + text: "璇︽儏", + style: { + backgroundColor: "#fc9f35", + }, + }, + ], + operator: "", + Datetime: getDate(), + orderType: "", + }; + }, + components: { + ButtonModal, + ModalCode, + }, + onLoad(option) { + if (option.orderType) { + this.orderType = option.orderType; + } + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules); + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync("userInfo")).name; + }, + computed: { + containerCode() { + return this.warehouse.containerCode; + }, + }, + watch: { + containerCode(val) { + if (!val) { + this.detailable = false; + } + }, + }, + methods: { + //DO瀹瑰櫒閫夋嫨 0712 + containerConfirmDo(context) { + this.warehouse.DoOrderNo = context[0].value; + this.orderBlurDo(); + }, + //DO瀹瑰櫒鑱氱劍浜嬩欢 + containerFocusDo() { + getAllOrderDo({ + OrderType: 5, + page: 1, + pageSize: 20, + orderStatus: 1, //澶勭悊涓� + }).then((res) => { + if (res.result && res.result.items) { + var arr = res.result.items; + this.containerListDo = arr.reduce((curr, item) => { + curr.push({ + label: item.orderNo, + // label: item.orderNo + '; 鏃堕棿:' + item.createTime , + value: item.orderNo, + }); + return curr; + }, []); + } + this.containerVisibleDo = true; + }); + }, + // DO鍗曞彿 + orderBlurDo() { + if (this.warehouse.DoOrderNo == "") { + return; + } + this.containerFocus(); + }, + + //鎵撳嵃 + init(param) { + if (param == 1) { + // 閲嶇疆 + this.materlist.exceptionReason = ""; + this.materlist.exceptionQuality = 0; + return; + } + + if (!this.materlist.exceptionReason) { + this.detailshow = false; + this.rescode = 400; + this.resmessage = `寮傚父鍘熷洜涓嶈兘涓虹┖`; + this.$refs.resmodal.show = true; + return; + } + + if (!this.materlist.exceptionQuality) { + this.detailshow = false; + this.rescode = 400; + this.resmessage = `寮傚父鏁伴噺澶т簬0`; + this.$refs.resmodal.show = true; + return; + } + if(Number(this.materlist.exceptionQuality) > Number(this.materlist.uncollectedQuantity) ){ + this.detailshow = false; + this.rescode = 400; + this.resmessage = `寮傚父鏁伴噺澶т簬瀹為檯鍒嗘嫞鏁癭; + this.$refs.resmodal.show = true; + return; + } + if (param == 2) { + // 寮傚父姹囨姤 + this.detailshow = false; + debugger; + addSortExceptionFlagConfirm({ + ContainerCode: this.materlist.containerCode, + ExceptionReason: this.materlist.exceptionReason, + SortExceptionFlagDetailsConfirmList: [ + { + ContainerSortId: this.materlist.id, + ...this.materlist, + }, + ], + }).then((res) => { + this.rescode = res.code; + this.resmessage = res.message; + this.$refs.resmodal.show = true; + if (res.code == 200) { + this.renameFocus = true; + this.resmessage = "寮傚父姹囨姤鎴愬姛"; + this.warehouse.containerCode = this.materlist.containerCode; + this.materlist = {}; + this.getOutWarehouse(1) + } + }); + } + }, + //鑾峰彇print date print time + getCurrentDate() { + let date = new Date(); + let year = date.getFullYear(); //骞� + let month = date.getMonth() + 1; //鏈� + month = month >= 10 ? month : "0" + month; + let day = date.getDate(); //鏃� + day = day >= 10 ? day : "0" + day; + let hour = date.getHours(); //鏃� + hour = hour >= 10 ? hour : "0" + hour; + let min = date.getMinutes(); //鍒� + min = min >= 10 ? min : "0" + min; + let second = date.getSeconds(); //绉� + second = second >= 10 ? second : "0" + second; + return { + date: `${day}.${month}.${year}`, + time: `${hour}:${min}:${second}`, + formate: `${year}/${month}/${day}`, + }; + }, + //瀹瑰櫒閫夋嫨 8888 + containerConfirm(context) { + this.getOutWarehouse(); + }, + //瀹瑰櫒鑱氱劍浜嬩欢 + containerFocus() { + this.getContainerList(); + }, + //鑾峰彇褰撳墠鍖哄煙鐨勯渶瑕佸垎鎷g殑瀹瑰櫒鍒楄〃 + getContainerList() { + if (this.warehouse.DoOrderNo == "") { + uni.showToast({ + title: "璇烽�夋嫨鎴栬�匘O鍗曞彿", + icon: "none", + duration: 2000, + }); + return; + } + this.getOutWarehouse(); + }, + //鏌ヨ鐗╂枡 + getOutWarehouse() { + this.$refs.warehouseRef.validate((valid) => { + if (valid) { + if (!this.warehouse.containerCode) { + uni.showToast({ + title: "瀹瑰櫒缂栧彿蹇呭~锛�", + icon: "none", + duration: 2000, + }); + return; + } + this.focu = false; + let params = { + ContainerCode: this.warehouse.containerCode, + RelationNo: this.warehouse.DoOrderNo, + SNCode: this.warehouse.SNCode, + OrderType: 5, + }; + getOutWarehousePO(params).then((res) => { + if (res.code == 200) { + var resArr = res.result; + if (resArr.length == 0) { + this.resmessage = "鏌ユ棤鐗╂枡鏁版嵁"; + this.rescode = 400; + this.$refs.resmodal.show = true; + this.singlist = []; + } else { + // 鏁翠綋鎷h揣 + if (this.orderType == 1) { + resArr.map((item) => { + item.uncollectedQuantity = Number( + Number(item.quantity) - Number(item.pickQuantity) + ).toFixed(3); + item.showItem = false; + return item; + }); + } + // 閫愪欢鎷h揣 + if (this.orderType == 2) { + resArr.map((item) => { + item.uncollectedQuantity = Number( + Number(item.quantity) - Number(item.pickQuantity) + ).toFixed(3); + item.showItem = false; + return item; + }); + } + this.singlist = resArr; + } + } else { + this.resmessage = res.message; + this.rescode = res.code; + this.$refs.resmodal.show = true; + } + }); + } + }); + }, + //鍒ゆ柇姝ょ墿鏂欑紪鍙锋槸鍚﹀瓨鍦� + getMaterialDetails() { + // this.materialCode = getAttrValue(this.materialCode, 'PARTSNUMBER') + if (this.warehouse.materialCode !== "") { + //鑾峰彇褰撳墠鐗╂枡 + 鎵规鐨勬墍鏈夋暟鎹� + const arr = this.singlist.reduce((curr, item, index) => { + if (item.materialCode == this.warehouse.materialCode) { + curr.push(index); + } + return curr; + }, []); + + if (arr.length > 0) { + arr.forEach((item) => { + this.singlist[item].showItem = true; + this.singlist.unshift(...this.singlist.splice(item, 1)); + }); + } else { + uni.showModal({ + title: "鎻愮ず", + content: "褰撳墠鍒嗘嫞鍗曚腑涓嶉渶鍒嗘嫞姝ょ墿鏂�", + showCancel: false, + }); + } + } + }, + //璇︽儏 + longpress(index, eindex) { + this.singlist[index].exceptionQuality = 0; + this.materlist = this.singlist[index]; + this.activeIndex = index; + this.detailshow = true; + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }); + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + if ( + parseFloat(val.uncollectedQuantity) < 0 || + val.uncollectedQuantity == "" + ) { + uni.showModal({ + title: "鎻愮ず", + content: "鍒嗘嫞鏁伴噺涓嶈兘灏忎簬0", + showCancel: false, + }); + } + // val.uncollectedQuantity = Number(val.uncollectedQuantity.toString().match(/^\d+(?:\.\d{0,2})?/)) // 淇濈暀涓や綅灏忔暟 + // let num1 = Number(Number(val.quantity) - Number(val.sortingQuantity)).toFixed(3) //蹇呴』淇濈暀3浣嶅皬鏁� -鍚﹀垯浼氶�犳垚鍓╀綑鐗╂枡鏄皬鏁扮殑鏃跺��,鏃犳硶鏀惰揣 + // 瓒婂簱-鏁伴噺涓嶈鍏� 閫犳垚bug + if (parseFloat(val.uncollectedQuantity) > Number(val.quantity)) { + uni.showModal({ + title: "鎻愮ず", + content: "鍒嗘嫞鏁伴噺涓嶈兘澶т簬闇�姹傛暟", + showCancel: false, + }); + } + }, + //纭 + next() { + if (this.singlist.length == 0) { + this.rescode = 400; + this.resmessage = `娌℃湁鍙搷浣滅殑鐗╂枡`; + this.$refs.resmodal.show = true; + return; + } else { + if (this.orderType == 1) { + this.arr = this.singlist.reduce((curr, item) => { + let { uncollectedQuantity, quantity, ...rest } = item; + if (Number(item.uncollectedQuantity) > 0) { + curr.push(item); + } + return curr; + }, []); + } else { + this.arr = this.singlist; + } + console.log(this.arr); + this.renameFocus = false; + } + }, + submit() { + let sortingLists = this.arr.reduce((curr, item) => { + let { uncollectedQuantity, quantity, ...rest } = item; + if (Number(item.uncollectedQuantity) > 0) { + curr.push({ + ...rest, + OccQuality: item.uncollectedQuantity, + ContainerSortId: item.id, + }); + } + return curr; + }, []); + if (sortingLists.length <= 0) { + uni.showToast({ + title: "娌℃湁闇�瑕佹彁浜ょ殑鏁版嵁锛�", + icon: "none", + duration: 2000, + }); + return; + } + let params = { + ContainerCode: this.warehouse.containerCode, + SortDetailsConfirmlist: sortingLists, + }; + uni.showModal({ + title: "鎻愮ず", + content: "纭畾鏄惁鍒嗘嫞锛�", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + addWarehouseDetailsPO(params).then((res) => { + this.rescode = res.code; + this.resmessage = res.message; + this.$refs.resmodal.show = true; + if (res.code == 200) { + this.renameFocus = true; + this.resmessage = "鎷h揣鎴愬姛"; + this.resetData(); + } + }); + } else if (res.cancel) { + } + }, + }); + }, + //鏁版嵁閲嶇疆 + resetData() { + this.warehouse.gridNumber = 1; + this.warehouse.useNumber = 0; + this.warehouse.exitNumber = 0; + this.materialCode = ""; + this.arr = []; + this.singlist = []; + }, + //鍥炲簱 + rest() { + uni.navigateTo({ + url: `/pages/index/index`, + }); + }, + //涓婁竴姝� + back() { + this.renameFocus = true; + }, + }, +}; +</script> + +<style lang="scss" scoped> +.bg_item { + background: #ffebcd !important; +} + +.textyc{ + margin-top: 10px; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/former/former.vue b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/former/former.vue new file mode 100644 index 0000000..60042fe --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/former/former.vue @@ -0,0 +1,514 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鏃т欢鏀惰揣</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <view class="text-bold width fontSize32rpx" style="padding: 10rpx 10rpx;background-color: #d6d6d6;"> + <view class="flex justify-between align-center"> + <text class="width23 padding10">鏀惰揣鍗曞彿</text> + <text>{{putCode}}</text> + </view> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class="" v-if="renameFocus"> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鐗╂枡缂栧彿:" prop="warehouseCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.warehouseCode" @focus="focu=true" placeholder="璇峰綍鍏ユ垨鎵爜" + @blur="getMaterialDetails" class="width padding_left25rpx" + style="font-weight: bolder;margin-left: 30rpx;"> + </input> + <u-icon v-if="warehouse.warehouseCode && focu" @click="warehouse.warehouseCode=''" + name="close-circle-fill" color="#848484"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <scroll-view scroll-y="true"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpress" @open="open" @close='close' :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :key="eindex+'singlist'" :class="item.cardNum?'bd-ffe6c9':item.edit?'clickactive':''" + class="fontSize32rpx width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + {{item.code}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 鍚嶇О锛歿{item.name}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <input disabled="" class="border_bottom_f18202 width45 fontSize32rpx text-left" + style="margin:10rpx 0 10rpx 45rpx;" v-model="item.unit" placeholder="鍗曚綅" /> + </u-col> + <u-col span="5"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.quantity" type="number" @focus='dc(item)' + @blur="changeNum(item)" placeholder="璇疯緭鍏ユ敹璐ф暟閲�" /> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </scroll-view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop"> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.code}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡澶х被</text> + <text>{{materlist.category}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡灏忕被</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏉$爜</text> + <text>{{materlist.barCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + <!-- <view class="line flex justify-between"> + <text class="text-gray">閫佽揣鏁伴噺</text> + <text>{{materlist.quantity}}</text> + </view> --> + </view> + <view class="margin_top140rpx"> + <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='print' @reset='rest' /> + </view> + </u-popup> + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='涓嬩竴姝�' @submit='next' @reset='rest' /> + </view> + <view class="" v-else> + <scroll-view scroll-y="true" style="height: 440rpx;"> + <!-- <view class="margin_top10rpx overflow_auto" style="height:calc(100% - 20rpx)"> --> + <view v-for="(item,eindex) in arr" :key="eindex" style="background-color: #fff;"> + <u-row class="padding15"> + <u-col span="6" class="flex"> + <view class="flex justify-center align-center " + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="padding_left10rpx color_f18202"> + {{item.code}} + </view> + </u-col> + <u-col span="6" class="color_f18202" style="text-align: right;"> + 鏀惰揣鏁伴噺锛歿{item.quantity}} + </u-col> + </u-row> + <u-row class="padding15"> + <u-col span="6" class="flex"> + <view class="padding_left45rpx"> + 鍚嶇О锛歿{item.name}} + </view> + </u-col> + <u-col span="6" class="" style="text-align: right;"> + 鍗曚綅锛歿{item.unit}} + </u-col> + </u-row> + </view> + <!-- </view> --> + </scroll-view> + <view class="fontSize32rpx background_fff padding15"> + <u-row> + <u-col span="6" class="text-gray"> + 鏈鏀惰揣鎬绘暟閲� + </u-col> + <u-col span="6" class="font_weight_bold color_f18202" style="text-align: right;"> + {{QuantityTotal}} + </u-col> + </u-row> + </view> + <!-- <view + class="width fixed bottom140 margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-upload :action="action" upload-text="閫佽揣鍗曠収鐗�" :file-list="fileList1" @on-success="successPic" + @on-remove="remove"> + </u-upload> + </view> --> + <view + class="width fixed bottom140 margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <view class="" style="width: 250rpx;height: 250rpx;border: 1px dashed #aaaaaa;position: relative;"> + <image :src="image" mode="" @click="imgClick(image)" style="width: 100%;height: 100%;"></image> + </view> + <u-icon @click="delimage" name='close-circle-fill' color='red' size='60' v-if="image!==''" + style='position: absolute;left:200rpx;top: 20rpx;'></u-icon> + <view class="" style="color: #aaaaaa;" v-if="image==''"> + <u-icon name="plus" @click='upload' size='48' style='position: absolute;left: 120rpx;top: 100rpx;'> + </u-icon> + <text class="fontSize32rpx" style="position: absolute;left: 85rpx;top: 160rpx;">閫夋嫨鍥剧墖</text> + </view> + </view> + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='鏀惰揣瀹屾垚' @submit='submit' + @reset='reset' /> + </view> + + </view> + </view> +</template> + +<script> + import ButtonModal from '../../../components/buttonModal.vue' + import ModalCode from '../../../components/ModalCode.vue' + // import { + // getMaterial + // } from '../../../api/takeMaterial/order.js' + import { + getOrderNo, + getMaterialDetails + } from '../../../api/putIn/artificial.js' + import { + addConfirmReceipt + } from '../../../api/takeMaterial/order.js' + import { + getDate + } from '../../../utils/dateTime.js' + export default { + data() { + return { + renameFocus: true, + detailshow: false, + rescode: 0, + resmessage: "", + focu: false, + putCode: '', + fileList: [], + fileList1: [], + flag: true, + action: this.$myHOST + '/sysFileInfo/uploadImages', + image: '', + base: '', + singlist: [ + // { + // id: 0, + // deliverDate: 1, + // WareMaterialCode: 930112020, + // name: 3, + // describe: 4, + // Category: '闆朵欢', + // MaterialTypeId: '涓昏酱', + // MaterialTypeName: '姘村钩浠�', + // SpecificationModel: 'EM5BG 5X4P-16BK', + // Long: 9, + // Width: 10, + // High: 11, + // Weight: 12, + // PurchaseNo: 5530000622, + // BarCode: 920102, + // Quantity: 15, + // Company: 'EA', + // basicExpressInfoCode: 17, + // BasicExpressInfoName: 'xxxxx', + // DeliveryQuantity: 19, + // GoodsQuantity: 20, + // deliveryNo: 21, + // UncollectedQuantity: '' + // }, + ], //鐗╂枡璇︽儏 + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + warehouseCode: '' + }, + warehouseRules: { + warehouseCode: [{ + required: true, + message: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }, + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + operator: '', + QuantityTotal: '', //搴旀敹璐ф�绘暟 + Datetime: getDate(), + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + this.getOrderNo() + }, + methods: { + //鍏ュ簱鍗曞彿 + getOrderNo() { + getOrderNo().then((res) => { + if (res.code == 200) { + this.putCode = res.data + } else { + this.$refs.resmodal.show = true + } + }) + }, + //鐗╂枡鏌ヨ + getMaterialDetails() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focu = false + if (this.warehouse.warehouseCode !== '') { + let params = { + BarCode: this.warehouse.warehouseCode + } + getMaterialDetails(params).then((res) => { + if (res.code == 200) { + // this.singlist=res.data + res.data.forEach(item => { + this.singlist.push(item) + }) + let deWeightThree = (val) => { + let map = new Map() + for (let item of val) { + if (!map.has(item.code && item.barNo)) { + map.set(item.code && item.barNo, item) + } else { + uni.showModal({ + title: '鎻愮ず', + content: '璇峰嬁閲嶅鎵弿', + showCancel: false + }) + } + } + return [...map.values()] + } + this.singlist = deWeightThree(this.singlist) + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + } + + }, 200) + } + }) + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + if (eindex == 1) { + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + + }, + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + this.$forceUpdate() + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + //缂栬緫鐘舵�佹牱寮� + dc(e) { + e.cardNum = true + this.$forceUpdate() + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + val.cardNum = false + if (val.quantity && val.quantity > 0) { + val.edit = true + this.$forceUpdate() + } else { + val.edit = false + this.$forceUpdate() + } + + }, + // successPic(data, index, lists, name) { + // // console.log(data) + // this.fileList.push(data.data) + // }, + // //鍒犻櫎鍥剧墖 + // remove(index, lists, name) { + // this.fileList.splice(index, 1) + // }, + upload() { + uni.chooseImage({ + sourceType: ["camera", "album"], + sizeType: "original", + count: 1, + success: (res) => { + pathToBase64(res.tempFilePaths[0]).then(base64 => { + this.image = res.tempFilePaths[0] + uni.uploadFile({ + url: this.action, + filePath: res.tempFilePaths[0], + formData: { + 'images': JSON.stringify(base64) + }, + success: (res) => { + var str = JSON.parse(res.data) + } + }) + }) + } + }) + }, + delimage() { + this.image = '' + this.$u.toast('绉婚櫎鎴愬姛') + }, + imgClick(url) { + if (this.image !== '') { + var imgArr = []; + imgArr.push(url) + //棰勮鍥剧墖 + uni.previewImage({ + urls: imgArr, + current: imgArr[0] + }); + } + }, + //纭 + next() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + this.arr = this.singlist.filter(item => item.edit) + if (this.arr.length == 0) { + uni.showModal({ + title: '鎻愮ず', + content: '鏈~鍐欑粍鐩樻暟閲�', + showCancel: false + }) + return + } + this.renameFocus = false + this.QuantityTotal = this.arr.reduce((prev, next) => { + return Number(prev) + Number(next.quantity) + }, 0) + } + }); + }, + submit() { + let criterionReceivingMaterions = [] + this.arr.forEach(item => { + criterionReceivingMaterions.push({ + wareMaterialCode: item.code, + quantity: item.quantity, + barCode: item.barCode + }) + }) + let params = { + createdTime: this.Datetime, + updatedTime: this.Datetime, + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + deliveryNo: this.putCode, + images: this.fileList.toString(), + type: '鏃т欢', + criterionReceivingMaterions + } + addConfirmReceipt(params).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.renameFocus = true + this.singlist = [] + this.getOrderNo() + this.warehouse.warehouseCode = '' + } + }) + }, + //娓呮閫変腑 + rest() { + this.singlist.forEach(item => { + item.quantity = '' + item.edit = false + }) + }, + reset() { + // this.fileList=[] + // this.fileList1=[] + } + } + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/give/give.vue b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/give/give.vue new file mode 100644 index 0000000..ca2a60b --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/give/give.vue @@ -0,0 +1,515 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">褰掕繕浠舵敹璐�</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <view class="text-bold width fontSize32rpx" style="padding: 10rpx 10rpx;background-color: #d6d6d6;"> + <view class="flex justify-between align-center"> + <text class="width23 padding10">褰掕繕鍗曞彿</text> + <text>{{putCode}}</text> + </view> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class="" v-if="renameFocus"> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鍊熺敤浜�:" prop="warehouseCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.warehouseCode" @focus="focu=true" placeholder="璇峰綍鍏ユ垨鎵爜" + @blur="getMaterialDetails" class="width padding_left25rpx" + style="font-weight: bolder;margin-left: 30rpx;"> + </input> + <u-icon v-if="warehouse.warehouseCode && focu" @click="warehouse.warehouseCode=''" + name="close-circle-fill" color="#848484"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <scroll-view scroll-y="true"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpress" @open="open" @close='close' :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :key="eindex+'singlist'" :class="item.cardNum?'bd-ffe6c9':item.edit?'clickactive':''" + class="fontSize32rpx width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + {{item.code}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 鍚嶇О锛歿{item.name}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <input disabled="" class="border_bottom_f18202 width45 fontSize32rpx text-left" + style="margin:10rpx 0 10rpx 45rpx;" v-model="item.unit" placeholder="鍗曚綅" + /> + </u-col> + <u-col span="5"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.quantity" type="number" @focus='dc(item)' + @blur="changeNum(item)" placeholder="璇疯緭鍏ユ敹璐ф暟閲�" /> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </scroll-view> + <u-popup v-model="singshow" border-radius="14" @close="singshow=false" mode="bottom"> + <view class="pop padding_bottom18"> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡</h2> + <view class="flex align-center margin_bottom10rpx margin_auto width80" + style="border:1px solid #d6d6d6;border-radius: 50rpx;"> + <view class="background_fff flex align-center width80 radius justify-start padding_right10rpx" + style="height: 65rpx;margin-left: 25rpx;"> + <u-icon name="search" color="#cacaca" class="padding_left10rpx padding_right10rpx"></u-icon> + <u-input /> + </view> + <button + style="width: 120rpx; height: 53rpx;line-height: 53rpx;font-size: 30rpx;color: #777;border-radius: 50rpx;background-color: #f18202;color: #fff;margin-right: 5rpx;">鎼滅储</button> + </view> + <scroll-view scroll-y="true" style="height: 500rpx;"> + <view class="" v-for="(item,index) in singlist" :key="index"> + <view class="line flex justify-between" style="padding: 0 18%;" @click="active=index" + :class="active==index?'bg-f18202':''"> + <text>鐗╂枡缂栧彿{{index}}</text> + <text>{涓昏酱}</text> + <text>05.03</text> + <text>鍊燂細6</text> + </view> + </view> + </scroll-view> + </view> + </u-popup> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop"> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.code}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡澶х被</text> + <text>{{materlist.name}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡灏忕被</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏉$爜</text> + <text>{{materlist.barCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閫佽揣鏁伴噺</text> + <text>{{materlist.unit}}</text> + </view> + </view> + <view class="margin_top140rpx"> + <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='print' @reset='rest' /> + </view> + </u-popup> + <button-modal :empTytowerShow='true' cleaningTitle="鏌ヨ" garmenTitle='涓嬩竴姝�' @submit='next' @reset='rest' /> + </view> + <view class="" v-else> + <scroll-view scroll-y="true" style="height: 440rpx;"> + <!-- <view class="margin_top10rpx overflow_auto" style="height:calc(100% - 20rpx)"> --> + <view v-for="(item,eindex) in arr" :key="eindex" style="background-color: #fff;"> + <u-row class="padding15"> + <u-col span="6" class="flex"> + <view class="flex justify-center align-center " + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="padding_left10rpx color_f18202"> + {{item.code}} + </view> + </u-col> + <u-col span="6" class="color_f18202" style="text-align: right;"> + 鏀惰揣鏁伴噺锛歿{item.quantity}} + </u-col> + </u-row> + <u-row class="padding15"> + <u-col span="6" class="flex"> + <view class="padding_left45rpx"> + 鍚嶇О锛歿{item.name}} + </view> + </u-col> + <u-col span="6" class="" style="text-align: right;"> + 鍗曚綅锛歿{item.unit}} + </u-col> + </u-row> + </view> + <!-- </view> --> + </scroll-view> + <view class="fontSize32rpx background_fff padding15"> + <u-row> + <u-col span="6" class="text-gray"> + 鏈鏀惰揣鎬绘暟閲� + </u-col> + <u-col span="6" class="font_weight_bold color_f18202" style="text-align: right;"> + {{QuantityTotal}} + </u-col> + </u-row> + </view> + <view + class="width fixed bottom140 margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-upload :action="action" upload-text="閫佽揣鍗曠収鐗�" :file-list="fileList1" @on-success="successPic" + @on-remove="remove"> + </u-upload> + </view> + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='鏀惰揣瀹屾垚' @submit='submit' + @reset='reset' /> + </view> + + </view> + </view> +</template> + +<script> + import ButtonModal from '../../../components/buttonModal.vue' + import ModalCode from '../../../components/ModalCode.vue' + // import { + // getMaterial + // } from '../../../api/takeMaterial/order.js' + import { + getOrderNo, + getMaterialDetails + } from '../../../api/putIn/artificial.js' + import { + addConfirmReceipt + } from '../../../api/takeMaterial/order.js' + import { + getDate + } from '../../../utils/dateTime.js' + export default { + data() { + return { + renameFocus: true, + detailshow: false, + active: null, + singshow: false, + rescode: 0, + resmessage: "", + focu: false, + putCode: '', + fileList: [], + fileList1: [], + flag: true, + action: this.$myHOST + '/sysFileInfo/uploadImages', + singlist: [{ + id: 0, + edit: false, + deliverDate: 1, + WareMaterialCode: 930112020, + name: 3, + describe: 4, + Category: '闆朵欢', + MaterialTypeId: '涓昏酱', + MaterialTypeName: '姘村钩浠�', + SpecificationModel: 'EM5BG 5X4P-16BK', + Long: 9, + Width: 10, + High: 11, + Weight: 12, + PurchaseNo: 5530000622, + BarCode: 920102, + Quantity: 15, + Company: 'EA', + basicExpressInfoCode: 17, + BasicExpressInfoName: 'xxxxx', + DeliveryQuantity: 19, + GoodsQuantity: 20, + deliveryNo: 21, + UncollectedQuantity: '' + }, { + edit: false, + id: 0, + deliverDate: 1, + WareMaterialCode: 930112020, + name: 3, + describe: 4, + Category: '闆朵欢', + MaterialTypeId: '涓昏酱', + MaterialTypeName: '姘村钩浠�', + SpecificationModel: 'EM5BG 5X4P-16BK', + Long: 9, + Width: 10, + High: 11, + Weight: 12, + PurchaseNo: 5530000622, + BarCode: 920102, + Quantity: 15, + Company: 'EA', + basicExpressInfoCode: 17, + BasicExpressInfoName: 'xxxxx', + DeliveryQuantity: 19, + GoodsQuantity: 20, + deliveryNo: 21, + UncollectedQuantity: '' + }, ], //鐗╂枡璇︽儏 + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + warehouseCode: '' + }, + warehouseRules: { + warehouseCode: [{ + required: true, + message: '鍊熺敤浜轰笉鑳戒负绌�', + trigger: 'blur' + }] + }, + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }, + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + operator: '', + QuantityTotal: '', //搴旀敹璐ф�绘暟 + Datetime: getDate(), + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + this.getOrderNo() + }, + methods: { + //鍏ュ簱鍗曞彿 + getOrderNo() { + getOrderNo().then((res) => { + if (res.code == 200) { + this.putCode = res.data + } else { + this.$refs.resmodal.show = true + } + }) + }, + //鐗╂枡鏌ヨ + getMaterialDetails() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focu = false + this.singshow = true + // if (this.warehouse.warehouseCode !== '') { + // let params = { + // BarCode: this.warehouse.warehouseCode + // } + // getMaterialDetails(params).then((res) => { + // if (res.code == 200) { + // // this.singlist=res.data + // res.data.forEach(item => { + // this.singlist.push(item) + // }) + // let deWeightThree = (val) => { + // let map = new Map() + // for (let item of val) { + // if (!map.has(item.code)) { + // map.set(item.code, item) + // } else { + // uni.showModal({ + // title: '鎻愮ず', + // content: '璇峰嬁閲嶅鎵弿', + // showCancel: false + // }) + // } + // } + // return [...map.values()] + // } + // this.singlist = deWeightThree(this.singlist) + // } else { + // this.resmessage = res.message + // this.rescode = res.code + // this.$refs.resmodal.show = true + // } + // }) + // } + + }, 200) + } + }) + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + if (eindex == 1) { + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + + }, + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + this.$forceUpdate() + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + //缂栬緫鐘舵�佹牱寮� + dc(e) { + e.cardNum = true + this.$forceUpdate() + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + val.cardNum = false + if (val.quantity && val.quantity > 0) { + val.edit = true + this.$forceUpdate() + } else { + val.edit = false + this.$forceUpdate() + } + + }, + successPic(data, index, lists, name) { + // console.log(data) + this.fileList.push(data.data) + }, + //鍒犻櫎鍥剧墖 + remove(index, lists, name) { + this.fileList.splice(index, 1) + }, + //纭 + next() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + this.arr = this.singlist.filter(item => item.edit) + if (this.arr.length == 0) { + uni.showModal({ + title: '鎻愮ず', + content: '鏈~鍐欑粍鐩樻暟閲�', + showCancel: false + }) + return + } + this.renameFocus = false + this.QuantityTotal = this.arr.reduce((prev, next) => { + return Number(prev) + Number(next.quantity) + }, 0) + } + }); + }, + submit() { + let criterionReceivingMaterions = [] + this.arr.forEach(item => { + criterionReceivingMaterions.push({ + wareMaterialCode: item.code, + quantity: item.quantity, + barCode: item.barCode + }) + }) + let params = { + createdTime: this.Datetime, + updatedTime: this.Datetime, + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + deliveryNo: this.putCode, + images: this.fileList.toString(), + criterionReceivingMaterions + } + addConfirmReceipt(params).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.renameFocus = true + this.singlist = [] + this.getOrderNo() + this.warehouse.warehouseCode = '' + } + }) + }, + //娓呮閫変腑 + rest() { + this.singlist.forEach(item => { + item.quantity = '' + item.edit = false + }) + }, + reset() { + // this.fileList=[] + // this.fileList1=[] + } + } + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/noOrder/noOrder.vue b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/noOrder/noOrder.vue new file mode 100644 index 0000000..66ff4fb --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/noOrder/noOrder.vue @@ -0,0 +1,469 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">闈炶鍗曚欢鏀惰揣</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <view class="text-bold width fontSize32rpx" style="padding: 10rpx 10rpx;background-color: #d6d6d6;"> + <view class="flex justify-between align-center"> + <text class="width23 padding10">鏀惰揣鍗曞彿</text> + <text>{{putCode}}</text> + </view> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class="" v-if="renameFocus"> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鐗╂枡缂栧彿:" prop="warehouseCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.warehouseCode" @focus="focu=true" placeholder="璇峰綍鍏ユ垨鎵爜" + @blur="getMaterialDetails" class="width padding_left25rpx" + style="font-weight: bolder;margin-left: 30rpx;"> + </input> + <u-icon v-if="warehouse.warehouseCode && focu" @click="warehouse.warehouseCode=''" + name="close-circle-fill" color="#848484"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <scroll-view scroll-y="true"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpress" @open="open" @close='close' :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :key="eindex+'singlist'" :class="item.cardNum?'bd-ffe6c9':item.edit?'clickactive':''" + class="fontSize32rpx width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + {{item.code}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 鍚嶇О锛歿{item.name}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <input disabled="" class="border_bottom_f18202 width45 fontSize32rpx text-left" + style="margin:10rpx 0 10rpx 45rpx;" v-model="item.unit" placeholder="鍗曚綅" + /> + </u-col> + <u-col span="5"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.quantity" type="number" @focus='dc(item)' @click="click(item)" + @blur="changeNum(item)" placeholder="璇疯緭鍏ユ敹璐ф暟閲�"/> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </scroll-view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop"> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.code}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡澶х被</text> + <text>{{materlist.category}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡灏忕被</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏉$爜</text> + <text>{{materlist.barCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + <!-- <view class="line flex justify-between"> + <text class="text-gray">閫佽揣鏁伴噺</text> + <text>{{materlist.unit}}</text> + </view> --> + </view> + <view class="margin_top140rpx"> + <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='print' @reset='rest' /> + </view> + </u-popup> + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='涓嬩竴姝�' @submit='next' @reset='rest' /> + </view> + <view class="" v-else> + <scroll-view scroll-y="true" style="height: 440rpx;"> + <!-- <view class="margin_top10rpx overflow_auto" style="height:calc(100% - 20rpx)"> --> + <view v-for="(item,eindex) in arr" :key="eindex" style="background-color: #fff;"> + <u-row class="padding15"> + <u-col span="6" class="flex"> + <view class="flex justify-center align-center " + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="padding_left10rpx color_f18202"> + {{item.code}} + </view> + </u-col> + <u-col span="6" class="color_f18202" style="text-align: right;"> + 鏀惰揣鏁伴噺锛歿{item.quantity}} + </u-col> + </u-row> + <u-row class="padding15"> + <u-col span="6" class="flex"> + <view class="padding_left45rpx"> + 鍚嶇О锛歿{item.name}} + </view> + </u-col> + <u-col span="6" class="" style="text-align: right;"> + 鍗曚綅锛歿{item.unit}} + </u-col> + </u-row> + </view> + <!-- </view> --> + </scroll-view> + <view class="fontSize32rpx background_fff padding15"> + <u-row> + <u-col span="6" class="text-gray"> + 鏈鏀惰揣鎬绘暟閲� + </u-col> + <u-col span="6" class="font_weight_bold color_f18202" style="text-align: right;"> + {{QuantityTotal}} + </u-col> + </u-row> + </view> + <view + class="width fixed bottom140 margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-upload :action="action" upload-text="閫佽揣鍗曠収鐗�" :file-list="fileList1" @on-success="successPic" + @on-remove="remove"> + </u-upload> + </view> + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='鏀惰揣瀹屾垚' @submit='submit' + @reset='reset' /> + </view> + + </view> + </view> +</template> + +<script> + import ButtonModal from '../../../components/buttonModal.vue' + import ModalCode from '../../../components/ModalCode.vue' + // import { + // getMaterial + // } from '../../../api/takeMaterial/order.js' + import { + getOrderNo, + getMaterialDetails + } from '../../../api/putIn/artificial.js' + import { + addConfirmReceipt + } from '../../../api/takeMaterial/order.js' + import { + getDate + } from '../../../utils/dateTime.js' + export default { + data() { + return { + renameFocus: true, + detailshow: false, + rescode: 0, + resmessage: "", + focu: false, + putCode: '', + fileList: [], + fileList1: [], + flag: true, + action: this.$myHOST + '/sysFileInfo/uploadImages', + singlist: [ + // { + // id: 0, + // deliverDate: 1, + // WareMaterialCode: 930112020, + // name: 3, + // describe: 4, + // Category: '闆朵欢', + // MaterialTypeId: '涓昏酱', + // MaterialTypeName: '姘村钩浠�', + // SpecificationModel: 'EM5BG 5X4P-16BK', + // Long: 9, + // Width: 10, + // High: 11, + // Weight: 12, + // PurchaseNo: 5530000622, + // BarCode: 920102, + // Quantity: 15, + // Company: 'EA', + // basicExpressInfoCode: 17, + // BasicExpressInfoName: 'xxxxx', + // DeliveryQuantity: 19, + // GoodsQuantity: 20, + // deliveryNo: 21, + // UncollectedQuantity: '' + // }, + ], //鐗╂枡璇︽儏 + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + warehouseCode: '' + }, + warehouseRules: { + warehouseCode: [{ + required: true, + message: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }, + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + operator: '', + QuantityTotal: '', //搴旀敹璐ф�绘暟 + Datetime: getDate(), + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + this.getOrderNo() + }, + methods: { + //鍏ュ簱鍗曞彿 + getOrderNo() { + getOrderNo().then((res) => { + if (res.code == 200) { + this.putCode = res.data + } else { + this.$refs.resmodal.show = true + } + }) + }, + click(e){ + e.cardNum=true + this.$forceUpdate() + }, + //鐗╂枡鏌ヨ + getMaterialDetails() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focu = false + if (this.warehouse.warehouseCode !== '') { + let params = { + BarCode: this.warehouse.warehouseCode + } + getMaterialDetails(params).then((res) => { + if (res.code == 200) { + // this.singlist=res.data + res.data.forEach(item => { + this.singlist.push(item) + }) + let deWeightThree = (val) => { + let map = new Map() + for (let item of val) { + if (!map.has(item.code && item.barNo)) { + map.set(item.code && item.barNo, item) + } else { + uni.showModal({ + title: '鎻愮ず', + content: '璇峰嬁閲嶅鎵弿', + showCancel: false + }) + } + } + return [...map.values()] + } + this.singlist = deWeightThree(this.singlist) + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + } + + }, 200) + } + }) + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + this.singlist[index].cardNum=true + if (eindex == 1) { + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + + }, + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + this.$forceUpdate() + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + //缂栬緫鐘舵�佹牱寮� + dc(e) { + e.cardNum = true + this.$forceUpdate() + console.log(11) + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + val.cardNum = false + if (val.quantity && val.quantity > 0) { + val.edit = true + this.$forceUpdate() + } else { + val.edit = false + this.$forceUpdate() + } + + }, + successPic(data, index, lists, name) { + // console.log(data) + this.fileList.push(data.data) + }, + //鍒犻櫎鍥剧墖 + remove(index, lists, name) { + this.fileList.splice(index, 1) + }, + //纭 + next() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + this.arr = this.singlist.filter(item => item.edit) + if (this.arr.length == 0) { + uni.showModal({ + title: '鎻愮ず', + content: '鏈~鍐欑粍鐩樻暟閲�', + showCancel: false + }) + return + } + this.renameFocus = false + this.QuantityTotal = this.arr.reduce((prev, next) => { + return Number(prev) + Number(next.quantity) + }, 0) + } + }); + }, + submit() { + let criterionReceivingMaterions = [] + this.arr.forEach(item => { + criterionReceivingMaterions.push({ + wareMaterialCode: item.code, + quantity: item.quantity, + barCode: item.barCode + }) + }) + let params = { + createdTime: this.Datetime, + updatedTime: this.Datetime, + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + deliveryNo: this.putCode, + images: this.fileList.toString(), + type:'闈炶鍗曟敹璐�', + criterionReceivingMaterions + } + addConfirmReceipt(params).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.renameFocus = true + this.singlist = [] + this.getOrderNo() + this.warehouse.warehouseCode = '' + } + }) + }, + //娓呮閫変腑 + rest() { + this.singlist.forEach(item => { + item.quantity = '' + item.edit = false + }) + }, + reset() { + // this.fileList=[] + // this.fileList1=[] + } + } + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/order/order.vue b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/order/order.vue new file mode 100644 index 0000000..3ec7341 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/order/order.vue @@ -0,0 +1,444 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鏀惰揣</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <view class="text-bold width fontSize32rpx" style="padding: 10rpx 10rpx;background-color: #d6d6d6;"> + <view class="flex justify-between align-center"> + <text class="width23 padding10">鏀惰揣鍗曞彿</text> + <text>{{putCode}}</text> + </view> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class="" v-if="renameFocus"> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鐗╂枡缂栧彿:" prop="warehouseCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.warehouseCode" @focus="focu=true" placeholder="璇峰綍鍏ユ垨鎵爜" + @blur="getMaterialDetails" class="width padding_left25rpx" + style="font-weight: bolder;margin-left: 30rpx;"> + </input> + <u-icon v-if="warehouse.warehouseCode && focu" @click="warehouse.warehouseCode=''" + name="close-circle-fill" color="#848484"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <scroll-view scroll-y="true"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpress" @open="open" :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :key="eindex+'singlist'" :class="item.edit?'clickactive':''" + class="fontSize32rpx width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + {{item.code}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 鍚嶇О锛歿{item.name}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <input disabled="" class="border_bottom_f18202 width45 fontSize32rpx text-left" + style="margin:10rpx 0 10rpx 45rpx;" v-model="item.unit" + @blur="changeNum(item)" placeholder="鍗曚綅"/> + </u-col> + <u-col span="5"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.quantity" type="number" @blur="changeNum(item)" + placeholder="璇疯緭鍏ユ敹璐ф暟閲�" /> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </scroll-view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.code}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.name}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡绫诲瀷</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏉$爜</text> + <text>{{materlist.barCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + + </view> + <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='print' @reset='rest' /> + </u-popup> + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='涓嬩竴姝�' @submit='next' @reset='rest' /> + </view> + <view class="" v-else> + <scroll-view scroll-y="true" style="height: 440rpx;"> + <!-- <view class="margin_top10rpx overflow_auto" style="height:calc(100% - 20rpx)"> --> + <view v-for="(item,eindex) in arr" :key="eindex" style="background-color: #fff;"> + <u-row class="padding15"> + <u-col span="6" class="flex"> + <view class="flex justify-center align-center " + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="padding_left10rpx color_f18202"> + {{item.code}} + </view> + </u-col> + <u-col span="6" class="color_f18202" style="text-align: right;"> + 鏀惰揣鏁伴噺锛歿{item.quantity}} + </u-col> + </u-row> + <u-row class="padding15"> + <u-col span="6" class="flex"> + <view class="padding_left45rpx"> + 鍚嶇О锛歿{item.name}} + </view> + </u-col> + <u-col span="6" class="" style="text-align: right;"> + 鍗曚綅锛歿{item.unit}} + </u-col> + </u-row> + </view> + <!-- </view> --> + </scroll-view> + <view class="fontSize32rpx background_fff padding15"> + <u-row> + <u-col span="6" class="text-gray"> + 鏈鏀惰揣鎬绘暟閲� + </u-col> + <u-col span="6" class="font_weight_bold color_f18202" style="text-align: right;"> + {{QuantityTotal}} + </u-col> + </u-row> + </view> + <view + class="width fixed bottom140 margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-upload :action="action" upload-text="閫佽揣鍗曠収鐗�" :file-list="fileList1" @on-success="successPic" + @on-remove="remove"> + </u-upload> + </view> + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='鏀惰揣瀹屾垚' @submit='submit' @reset='reset' /> + </view> + + </view> + </view> +</template> + +<script> + import ButtonModal from '../../../components/buttonModal.vue' + import ModalCode from '../../../components/ModalCode.vue' + // import { + // getMaterial + // } from '../../../api/takeMaterial/order.js' + import { + getOrderNo, + getMaterialDetails + } from '../../../api/putIn/artificial.js' + import { + addConfirmReceipt + } from '../../../api/takeMaterial/order.js' + import { + getDate + } from '../../../utils/dateTime.js' + export default { + data() { + return { + renameFocus: true, + detailshow: false, + rescode: 0, + resmessage: "", + focu: false, + putCode: '', + fileList: [], + fileList1: [], + flag: true, + action: this.$myHOST + '/sysFileInfo/uploadImages', + singlist: [ + // { + // id: 0, + // deliverDate: 1, + // WareMaterialCode: 930112020, + // name: 3, + // describe: 4, + // Category: '闆朵欢', + // MaterialTypeId: '涓昏酱', + // MaterialTypeName: '姘村钩浠�', + // SpecificationModel: 'EM5BG 5X4P-16BK', + // Long: 9, + // Width: 10, + // High: 11, + // Weight: 12, + // PurchaseNo: 5530000622, + // BarCode: 920102, + // Quantity: 15, + // Company: 'EA', + // basicExpressInfoCode: 17, + // BasicExpressInfoName: 'xxxxx', + // DeliveryQuantity: 19, + // GoodsQuantity: 20, + // deliveryNo: 21, + // UncollectedQuantity: '' + // }, + ], //鐗╂枡璇︽儏 + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + warehouseCode: '' + }, + warehouseRules: { + warehouseCode: [{ + required: true, + message: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }, + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + operator: '', + QuantityTotal: '', //搴旀敹璐ф�绘暟 + Datetime: getDate(), + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + this.getOrderNo() + }, + methods: { + //鍏ュ簱鍗曞彿 + getOrderNo() { + getOrderNo().then((res) => { + if (res.code == 200) { + this.putCode = res.data + } else { + this.$refs.resmodal.show = true + } + }) + }, + //鐗╂枡鏌ヨ + getMaterialDetails() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focu = false + if (this.warehouse.warehouseCode !== '') { + let params = { + BarCode: this.warehouse.warehouseCode + } + getMaterialDetails(params).then((res) => { + if (res.code == 200) { + // this.singlist=res.data + res.data.forEach(item => { + this.singlist.push(item) + }) + let deWeightThree = (val) => { + let map = new Map() + for (let item of val) { + if (!map.has(item.code && item.barNo)) { + map.set(item.code && item.barNo, item) + } else { + uni.showModal({ + title: '鎻愮ず', + content: '璇峰嬁閲嶅鎵弿', + showCancel: false + }) + } + } + return [...map.values()] + } + this.singlist = deWeightThree(this.singlist) + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + } + + }, 200) + } + }) + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + if (eindex == 1) { + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + if (val.quantity && val.quantity > 0) { + val.edit = true + this.$forceUpdate() + } else { + val.edit = false + this.$forceUpdate() + } + + }, + successPic(data, index, lists, name) { + // console.log(data) + this.fileList.push(data.data) + }, + //鍒犻櫎鍥剧墖 + remove(index, lists, name) { + this.fileList.splice(index, 1) + }, + //纭 + next() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + this.arr = this.singlist.filter(item => item.edit) + if (this.arr.length == 0) { + uni.showModal({ + title: '鎻愮ず', + content: '鏈~鍐欑粍鐩樻暟閲�', + showCancel: false + }) + return + } + this.renameFocus = false + this.QuantityTotal = this.arr.reduce((prev, next) => { + return Number(prev) + Number(next.quantity) + }, 0) + } + }); + }, + submit() { + let criterionReceivingMaterions = [] + this.arr.forEach(item => { + criterionReceivingMaterions.push({ + wareMaterialCode: item.code, + quantity: item.quantity, + barCode: item.barCode + }) + }) + let params = { + createdTime: this.Datetime, + updatedTime: this.Datetime, + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + deliveryNo: this.putCode, + images: this.fileList.toString(), + criterionReceivingMaterions + } + addConfirmReceipt(params).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.renameFocus = true + this.singlist = [] + this.getOrderNo() + this.warehouse.warehouseCode = '' + } + }) + }, + //娓呮閫変腑 + rest() { + this.singlist.forEach(item => { + item.quantity = '' + item.edit = false + }) + }, + reset(){ + // this.fileList=[] + // this.fileList1=[] + } + } + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/doYueku.vue b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/doYueku.vue new file mode 100644 index 0000000..81f5d33 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/doYueku.vue @@ -0,0 +1,297 @@ + +<template> + <view class="overflow" style="padding-bottom:100px"> + <!-- 椤堕儴 --> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"></block> + <block slot="content">瓒婂簱-DO</block> + </cu-custom> + <!-- 閬尅灞� --> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <!-- 鏀惰揣 --> + <view class="" v-if="renameFocus"> + <view style="margin-bottom: 180rpx;" v-show="singlist.length > 0"> + <checkbox-group @change="checkboxChange"> + <view v-for="(item, eindex) in singlist" v-if="item.isYueku=='鏄�'" :key="eindex" class="title-wrap"> + <view class=" fontSize32rpx background_fff" :class="item.isYueku=='鏄�'? 'bg_item' : '' " style="width: 100vw;"> + <u-row> + <u-col span="12"> + <label class="flex align-center"> + <checkbox v-show="item.isYueku=='鏄�'" :value="item.key" :checked="item.checked"/> + <text class="flex justify-center align-center circkle06">{{ eindex + 1 }}</text> + <view class="color_f18202 padding_left10rpx" style="flex: 1;word-break: break-all;"> + {{item.wareMaterialCode}} -- 鏄惁妫�楠�: <text style="color: #000;font-weight: bold;">{{item.isCheck ? '鏄�' : '鍚�'}}</text> + </view> + </label> + </u-col> + </u-row> + + <u-row> + <u-col span="6"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + 琛屽彿锛歿{item.ebelp}} + </view> + </u-col> + <u-col span="6"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + SAP锛歿{item.sap_Location}} + </view> + </u-col> + </u-row> + + <u-row> + <u-col span="6"> + <view class="text06 color_18"> + *鏄惁鍙秺搴擄細{{item.isYueku}} + </view> + </u-col> + <u-col span="6"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + 閲囪喘鏁帮細{{item.deliveryQuantity}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="10"> + <view class="flex" style="padding: 5px 0 0px 10px;color: #808080;"> + 鎵规锛歿{ item.batchNo }} + </view> + </u-col> + </u-row> + <u-row> + + <u-col span="6"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + 鍗曚綅锛歿{item.unit}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="7"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + </view> + </u-col> + </u-row> + </view> + </view> + </checkbox-group> + </view> + + <button-modal :empTytowerShow='true' cleaningTitle="杩斿洖" garmenTitle='瓒婂簱' @submit='goYuKu' @reset='rest' /> + </view> + </view> +</template> + +<script> + import ButtonModal from '../../../components/buttonModal.vue' + import ModalCode from '../../../components/ModalCode.vue' + import tkiBarcode from '@/components/tki-barcode/tki-barcode' + import bluet from '@/components/blue.vue' + import mixCheckbox from '@/mixins/checkboxYueKu.js' + export default { + mixins: [mixCheckbox], + data() { + return { + materialCode: '', //鐗╂枡缂栧彿 + renameFocus: true, + detailshow: false, + rescode: 0, + autoFoucs:true, + resmessage: "", + showBtn: 1, + current: 0, //婊戝潡榛樿鍊� + fileList: [], + lastlist: [], + overlist: [], //鏀惰揣鍒楄〃 + lacklist: [], //缂烘枡鍒楄〃 + image: '', //褰撳墠鏄剧ず鐨勫浘鐗囧湴鍧� + action: this.$myHOST + '/sysFileInfo/uploadImages', + singlist: [ + {id:1} + ], //鐗╂枡璇︽儏 + lists: [{ + name: '鏀惰揣(0)' + }, { + name: '缂烘枡' + }], + list: [], + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + PurchaseNo: '', + WareMaterialCode:'',//鐗╂枡缂栫爜 + PageSize: 10000, + PageNo: 1 + }, + warehouseRules: { + PurchaseNo: [{ + required: true, + message: '鍗曞彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }, + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + operator: '', + QuantityTotal: 0, //閫佽揣鎬绘暟 + collectedTotal: 0, //宸叉敹璐ф暟 + uncollectedTotal: 0, //鏀惰揣鎬绘暟 + lackTotal: 0, //缂鸿揣鎬绘暟 + code: '', + addForm: { //鎵撳嵃璁板綍 + code: '', + name: '', + batchNo: '', + specificationModel: '' + }, + lotNo: '', + contLabel:1, //鎵撳嵃寮犳暟 + ermNum:'', + detailshow: false, + timer:null, + printflag:false, + sapLocate:'', + modalshow2: false, + wolist2: [], + DeliveryNo:"" + }; + }, + components: { + ButtonModal, + ModalCode, + tkiBarcode, + bluet + }, + onLoad(option) { + if(option.po) { + this.warehouse.PurchaseNo = option.po + this.warehouse.DeliveryNo = option.do + + this.materialBlur() + } + }, + onReady() { + }, + mounted() { + }, + methods: { + + //鐗╂枡鏌ヨ + materialBlur(param) { + if(this.warehouse.PurchaseNo==''){ + return + } + let arrRows = uni.getStorageSync('yuKuDoList') + + if (Array.isArray(arrRows) && arrRows.length >= 1) { + // 娴嬭瘯 + // res.data.rows[1].isYueku='鏄�' + arrRows.forEach(( item) => { + item.uncollectedQuantity = ''; + item.children = false; + item.SortingOrderDetailsList=[]; + // item.purchaseNo=item.purchaseNo; + // 瓒婂簱 + item.isBig = item.isYueku=='鏄�'?0:1; + item.key = item.wareMaterialCode; + if(item.isYueku == '鏄�'){ + this.arrIds.push(item.wareMaterialCode) + item.checked = true + }else{ + item.checked = false + } + }) + + // 鎺掑簭 鍙互瓒婂簱鐨勭墿鏂欐帓涓婇潰 + arrRows.sort((a,b)=>{ + return a.isBig-b.isBig + }) + + let arr1 = arrRows.filter(item => item.isYueku=='鏄�') + this.singlist = arr1 + + if (this.singlist.length == 0) { + this.resmessage = '鏆傛棤鏁版嵁' + this.rescode = 400 + this.$refs.resmodal.show = true + } + } else { + this.resmessage = '鏆傛棤鏁版嵁' + this.rescode = 400 + this.$refs.resmodal.show = true + } + + }, + + rest() { + uni.navigateTo({ + url: '/pages/takeMaterial/orderpiece/orderpiece?po='+this.warehouse.PurchaseNo+'&do='+this.warehouse.DeliveryNo + }) + }, + reset(back) { + if(back){ + this.autoFoucs = false + } + this.renameFocus = true + }, + beforeDestroy() { + // 閿�姣佸畾鏃跺櫒 + if(this.timer){ + clearTimeout(this.timer) + this.timer = null + } + + }, + goYuKu(){ + if(this.arrIds.length<=0){ + return + } + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭瓒婂簱锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + uni.navigateTo({ + url: '/pages/crossDock/crossDock?ids='+this.arrIds + }) + } else if (res.cancel) { + } + }) + }); + }, + } + } +</script> + +<style lang="scss"> +.title-wrap{ + margin-bottom: 15rpx; + border-bottom: 1px solid #f18202; + border-top: 1px solid #f18202; + padding: 3px; +} +.bg_item { + background: #FFEBCD !important; +} +.qhd_wp{ + padding: 0 20rpx; + border-top: 1px solid #f18202; +} +.detail_btn{ + text-align: right; + padding: 10px; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/orderpiece.vue b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/orderpiece.vue new file mode 100644 index 0000000..def461e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/orderpiece.vue @@ -0,0 +1,1260 @@ +<template> + <view class="overflow" style="padding-bottom: 100px"> + <!-- 椤堕儴 --> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"></block> + <block slot="content">鏍囧噯鏀惰揣</block> + </cu-custom> + <!-- 閬尅灞� --> + <modal-code + ref="resmodal" + :rescode="rescode" + :resmessage="resmessage" + :showBtn="showBtn" + @goYuKu="goYuKu" + /> + <!-- 鏀惰揣 --> + <view class="" v-if="renameFocus"> + <u-form + labelPosition="left" + label-width="180rpx" + :model="warehouse" + ref="warehouseRef" + > + <u-row + class="margin_top10rpx margin_bottom10rpx padding_left25rpx" + style="background-color: #fff" + > + <u-col span="12"> + <u-form-item required label="鐗╂枡璺熻釜鐮�:" class="uFormItem"> + <u-input + v-model.trim="warehouse.barcodeMy" + placeholder="璇峰綍鍏ユ垨鎵爜" + @focus="warehouse.barcodeMy = ''" + class="width padding_left25rpx" + :focus="true" + @confirm="materialBlur(1)" + > + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <view style="margin-bottom: 180rpx" v-show="singlist.length > 0"> + <checkbox-group @change="checkboxChange"> + <view + v-for="(item, eindex) in singlist" + :key="eindex" + class="margin_top10rpx" + > + <u-swipe-action + :show="item.show" + :index="eindex" + @click="longpredel" + @open="open" + @close="close" + :options="options" + > + <view + class="fontSize32rpx background_fff padding10" + :class="item.isYueku == '鏄�' ? 'bg_item' : ''" + style="width: 100vw" + > + <u-row> + <u-col span="12"> + <label class="flex align-center"> + <text + class="flex justify-center align-center circkle06" + >{{ eindex + 1 }}</text + > + <view + class="color_f18202 padding_left10rpx" + style="flex: 1; word-break: break-all" + > + {{ item.materialCode }}-{{ item.materialName }} + </view> + </label> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="padding_left25rpx" style="color: #808080"> + ASN锛歿{ item.asnNo }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="padding_left25rpx" style="color: #808080"> + 渚涘簲鍟嗘壒娆★細{{ item.supplierBatch }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="7"> + <view class="padding_left25rpx" style="color: #808080"> + 鏈�楂樺簱瀛樻暟锛歿{ Number(item.maxImumqty).toFixed(3) }} + </view> + </u-col> + <u-col span="5"> + <view class="" style="color: #808080"> + 搴撳瓨鏁帮細{{ Number(item.stockQty).toFixed(3) }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="7"> + <view class="padding_left25rpx" style="color: #808080"> + 琛屽彿锛歿{ item.asnLineNumber }} + </view> + </u-col> + <u-col span="5"> + <view class="" style="color: #808080"> + 杞崲鐜囷細{{ item.translateRate }} + </view> + </u-col> + </u-row> + + <u-row> + <u-col span="7"> + <view class="padding_left25rpx" style="color: #808080"> + 閲囪喘鍗曚綅锛歿{ item.poUnit }} + </view> + </u-col> + <u-col span="5"> + <view class="" style="color: #808080"> + 搴撳瓨鍗曚綅锛歿{ item.materialUnit }} + </view> + </u-col> + </u-row> + + <u-row> + <u-col span="7"> + <view class="padding_left25rpx" style="color: #808080"> + 閲囪喘鏁伴噺锛歿{ Number(item.poQuantity).toFixed(3) }} + </view> + </u-col> + <u-col span="5"> + <view class="" style="color: #f18202"> + 鏀惰揣鏁伴噺锛歿{ Number(item.quantity).toFixed(3) }} + </view> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + </checkbox-group> + </view> + <u-popup + v-model="detailshow" + border-radius="14" + @close="detailshow = false" + mode="bottom" + > + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <!-- <view class="line flex justify-between"> + <text class="text-gray">鎵撳嵃寮犳暟</text> + <text> + <u-input + v-model.trim="contLabel" + placeholder="璇疯緭鍏ユ墦鍗板紶鏁�" + class="width" + @focus="contLabel = ''" + style="font-size: 36rpx; text-align: right" + > + </u-input> + </text> + </view> --> + <!-- <view class="line flex justify-between"> + <text class="text-gray">鎵撳嵃鏀惰揣鏁伴噺</text> + <text> + <u-input + v-model.trim="ermNum" + placeholder="璇疯緭鍏ユ墦鍗版敹璐ф暟閲�" + class="width" + @focus="ermNum = ''" + style="font-size: 36rpx; text-align: right" + > + </u-input> + </text> + </view> --> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{ materlist.materialCode }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{ materlist.materialName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏀惰揣鏁伴噺</text> + <text>{{ materlist.quantity }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">搴撳瓨鍗曚綅</text> + <text>{{ materlist.materialUnit }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲囪喘鍗曚綅</text> + <text>{{ materlist.poUnit }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">琛屽彿</text> + <text>{{ materlist.asnLineNumber }}</text> + </view> + <!-- <view class="margin_top140rpx"> + <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='init' @reset='rest' /> + <button-modal :cleaningShow='true' allTitle='钃濈墮鎵撳嵃' cleaningTitle='鏂戦┈鎵撳嵃' @allsubmit="init(1)" + @submit='init(2)' /> + </view> --> + </u-popup> + <button-modal + :empTytowerShow="true" + cleaningTitle="閲嶇疆" + garmenTitle="涓嬩竴姝�" + @submit="next" + @reset="resthandle" + /> + <!-- <button-modal :issueShow='true' issueTitle="瓒婂簱" subTitle='涓嬩竴姝�' restTiltle='閲嶇疆' @reset='rest' + @submit='next' @issue="goYuKu"/> --> + </view> + <!-- 纭鏀惰揣 --> + <view class="" v-else> + <u-tabs-swiper + ref="tabs" + :current="current" + @change="tabsChange" + bar-width="75" + :list="lists" + :is-scroll="false" + class="margin_bottom10rpx" + active-color="#f18202" + inactive-color="#f18202" + > + </u-tabs-swiper> + <scroll-view scroll-y="true" style="height: 45vh"> + <!-- <view class="margin_top10rpx overflow_auto" style="height:calc(100% - 20rpx)"> --> + <view + v-if="current == 0" + v-for="(item, eindex) in lastlist" + :key="eindex" + style="background-color: #fff" + class="padding10" + > + <u-row class="padding10"> + <u-col span="12" class="flex" style="align-items: flex-start"> + <view + style=" + background-color: #f18202; + color: #fff; + border-radius: 50%; + width: 20px; + height: 20px; + line-height: 20px; + text-align: center; + " + > + {{ eindex + 1 }} + </view> + <view + class="color_f18202 padding_left10rpx" + style="flex: 1; word-break: break-all" + > + {{ item.materialCode }}-{{ item.materialName }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12" class="text06"> + <view class="padding_left25rpx"> 鍗曞彿锛歿{ item.asnNo }} </view> + </u-col> + </u-row> + <u-row> + <u-col span="7" class="text06"> + <view class="padding_left25rpx"> + 搴撳瓨鍗曚綅锛歿{ item.materialUnit }} + </view> + </u-col> + <u-col span="5" class="text06"> + <view class="" style="color: #808080"> + 閲囪喘鍗曚綅锛歿{ item.poUnit }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="7" class="text06"> + <view class="padding_left25rpx"> + 杞崲鐜囷細{{ item.translateRate }} + </view> + </u-col> + <u-col span="5" class="text06"> + 閲囪喘鏁伴噺锛歿{ Number(item.poQuantity).toFixed(3) }} + </u-col> + </u-row> + <u-row class=""> + <u-col span="7" class="text06"> + <view class="padding_left25rpx"> + + </view> + </u-col> + <u-col span="5" class="color_f18202"> + + 鏀惰揣鏁伴噺锛歿{ Number(item.quantity).toFixed(3) }} + </u-col> + </u-row> + </view> + <view + v-if="current == 1" + v-for="(item, eindex) in lacklist" + :key="eindex" + style="background-color: #fff; margin-top: 6rpx" + > + <u-row class="padding10"> + <u-col span="12" class="flex" style="align-items: flex-start"> + <view + style=" + background-color: #f18202; + color: #fff; + border-radius: 50%; + width: 20px; + height: 20px; + line-height: 20px; + text-align: center; + " + > + {{ eindex + 1 }} + </view> + <view + class="color_f18202 padding_left10rpx" + style="flex: 1; word-break: break-all" + > + {{ item.wareMaterialCode }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="8" class="text06"> 鎵规锛歿{ item.barNo }} </u-col> + <u-col span="4" class="text06 text-right"> + 閲囪喘鏁帮細{{ item.deliveryQuantity }} + </u-col> + </u-row> + <u-row class=""> + <u-col span="4" class="text06"> + 宸叉敹璐ф暟锛歿{ item.goodsQuantity }} + </u-col> + <u-col span="4" class="text06"> + 鏈鏀惰揣鏁帮細{{ item.uncollectedQuantity }} + </u-col> + + </u-row> + </view> + </scroll-view> + <view class="fontSize32rpx"> + <!-- <u-row class="padding15 background_fff" style="margin-bottom: 6rpx"> + <u-col span="6" class="text-gray"> + 閲囪喘鏁�: {{ QuantityTotal }} + </u-col> + <u-col span="6" class="font_weight_bold" style="text-align: right"> + 宸叉敹璐ф暟: {{ collectedTotal }} + </u-col> + </u-row> --> + <u-row class="padding15 background_fff" style="margin-bottom: 6rpx"> + <u-col span="6" class="text-gray"> </u-col> + <u-col + span="6" + class="font_weight_bold color_f18202" + style="text-align: right" + > + 鏈鏀惰揣鏁�: {{ uncollectedTotal }} + <!-- 缂烘枡鎬绘暟: {{ lackTotal }} --> + </u-col> + </u-row> + </view> + + <!-- 鎵归噺鍥剧墖涓婁紶 --> + <view + class="width fixed bottom140 margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition boxImgWrap" + > + <view + class="ImgListBox" + v-for="(item, eindex) in fileListImgSrc" + :key="eindex" + > + <image + class="imgUp" + :src="item.bendiSrc" + mode="" + @click="imgClick(eindex)" + ></image> + <u-icon + @click="delimage(item.resSrc, eindex)" + name="close-circle-fill" + color="red" + size="60" + class="closeIcon" + ></u-icon> + </view> + <view class="addImgBox"> + <u-icon name="plus" @click="upload" size="48"></u-icon> + <text class="fontSize32rpx">閫夋嫨鍥剧墖</text> + </view> + </view> + + <button-modal + :empTytowerShow="true" + cleaningTitle="涓婁竴姝�" + garmenTitle="鏀惰揣瀹屾垚" + @submit="submit" + @reset="reset(1)" + /> + </view> + <u-action-sheet + :list="wolist2" + v-model="modalshow2" + @click="confirm2" + ></u-action-sheet> + + <!-- 娣诲姞鎵规 --> + <u-popup + v-model="detailshowPc" + border-radius="14" + @close="detailshowPc = false" + mode="bottom" + > + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡鎵规淇℃伅</h2> + <!-- <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.wareMaterialCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.name}}</text> + </view> --> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text> + <u-input + v-model.trim="addBatch" + placeholder="璇疯緭鍏ユ壒娆�" + class="width" + @focus="addBatch = ''" + style="font-size: 36rpx; text-align: right" + > + </u-input> + </text> + </view> + <view class="margin_top140rpx"> + <button-modal :subShow="true" garmenTitle="纭" @submit="submitPc" /> + </view> + </u-popup> + </view> +</template> + +<script> +import ButtonModal from "../../../components/buttonModal.vue"; +import ModalCode from "../../../components/ModalCode.vue"; +import tkiBarcode from "@/components/tki-barcode/tki-barcode"; +import bluet from "@/components/blue.vue"; +import BluePrint from "@/pages/print/bluePrint.js"; +import { + getMaterial, + getPurchaseOrderDetail, + addDelivery, + getQhdOrderDetail, + getSapSelect, + addShouhuoJiaoYan, +} from "../../../api/takeMaterial/orderpiece.js"; +import { pathToBase64, base64ToPath } from "image-tools"; +import { addPrintRecord } from "../../../api/print.js"; +import { getAttrValue } from "@/utils/tool.js"; +import { translateapp, translateImg } from "@/utils/compress.js"; +import { deletePicture } from "@/api/deliver.js"; +import printComp from "@/mixins/printPoLabel.js"; +import printBanma from "@/mixins/printBanma.js"; +import mixCheckbox from "@/mixins/checkboxYueKu.js"; + +export default { + mixins: [printComp, printBanma, mixCheckbox], + data() { + return { + materialCode: "", //鐗╂枡缂栧彿 + renameFocus: true, + detailshow: false, + rescode: 0, + autoFoucs: true, + resmessage: "", + showBtn: 0, + current: 0, //婊戝潡榛樿鍊� + fileList: [], + fileListImgSrc: [], //涓婁紶鍥剧墖鍒楄〃 + lastlist: [], + overlist: [], //鏀惰揣鍒楄〃 + lacklist: [], //缂烘枡鍒楄〃 + image: "", //褰撳墠鏄剧ず鐨勫浘鐗囧湴鍧� + action: this.$myHOST + "/api/sysFile/uploadFile", + singlist: [], //鐗╂枡璇︽儏 + lists: [ + { + name: "鏀惰揣(0)", + }, + { + name: "", + }, + ], + list: [], + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + barcodeMy: "", + PageSize: 10000, + PageNo: 1, + }, + warehouseRules: { + barcodeMy: [ + { + required: true, + message: "鏉$爜涓嶈兘涓虹┖", + trigger: "blur", + }, + ], + }, + options: [ + { + text: "璇︽儏", + style: { + backgroundColor: "#fc9f35", + }, + }, + { + text: "鍒犻櫎", + style: { + backgroundColor: "#fc4b4b", + }, + }, + ], + operator: "", + QuantityTotal: 0, //閫佽揣鎬绘暟 + collectedTotal: 0, //宸叉敹璐ф暟 + uncollectedTotal: 0, //鏀惰揣鎬绘暟 + lackTotal: 0, //缂鸿揣鎬绘暟 + code: "", + addForm: { + //鎵撳嵃璁板綍 + code: "", + name: "", + batchNo: "", + specificationModel: "", + }, + lotNo: "", + contLabel: 1, //鎵撳嵃寮犳暟 + ermNum: "", + detailshow: false, + timer: null, + printflag: false, + sapLocate: "", + modalshow2: false, + wolist2: [], + timerT: null, + addBatch: "", + detailshowPc: false, + itemPcAddIndex: "", + }; + }, + components: { + ButtonModal, + ModalCode, + tkiBarcode, + bluet, + }, + onLoad(option) { + // 瓒婂簱杩斿洖 鏌ユ暟鎹� + if (option.po) { + this.warehouse.PurchaseNo = option.po; + this.warehouse.asnNo = option.po; + this.materialBlur(); + } + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules); + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync("userInfo")).name; + // this.getVehicleType2() //SAP涓嬫媺 + }, + methods: { + showDetail(item, eindex) { + if (item.WareMaterialCode == "") { + return; + } + item.childen = !item.childen; + if (this.singlist[eindex].SortingOrderDetailsList.length > 0) { + return; + } + getQhdOrderDetail({ + WareMaterialCode: item.wareMaterialCode, + // 'orderType':this.orderType + }).then((res) => { + if (res.code == 200) { + if (Array.isArray(res.data) && res.data.length >= 0) { + if (res.data.length == 0) { + uni.showToast({ + title: "鏆傛棤鍙栬揣鏁版嵁", + icon: "none", + duration: 2000, + }); + return; + } + res.data.forEach((item) => { + item.uncollectedQuantity = ""; + // return item; + }); + this.singlist[eindex].SortingOrderDetailsList = res.data; + } + } + }); + }, + //鑾峰彇print date print time + getCurrentDate() { + let date = new Date(); + let year = date.getFullYear(); //骞� + let month = date.getMonth() + 1; //鏈� + month = month >= 10 ? month : "0" + month; + let day = date.getDate(); //鏃� + day = day >= 10 ? day : "0" + day; + let hour = date.getHours(); //鏃� + hour = hour >= 10 ? hour : "0" + hour; + let min = date.getMinutes(); //鍒� + min = min >= 10 ? min : "0" + min; + let second = date.getSeconds(); //绉� + second = second >= 10 ? second : "0" + second; + return { + date: `${day}.${month}.${year}`, + time: `${hour}:${min}:${second}`, + formate: `${year}/${month}/${day}`, + }; + }, + //鎵撳嵃 + init(param) { + const arr = ["wareMaterialCode", "barNo", "uncollectedQuantity"]; + const arrzw = ["鐗╂枡缂栧彿", "鎵规", "瀹為檯鏀惰揣鏁�"]; + let isAllow = ""; + Object.keys(this.materlist).forEach((item) => { + if (arr.includes(item)) { + if (!this.materlist[item]) { + isAllow = arr.indexOf(item); + return; + } + } + }); + if (isAllow != "") { + this.detailshow = false; + this.rescode = 400; + this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭; + this.showBtn = 0; + this.$refs.resmodal.show = true; + return; + } + + if (!this.contLabel || !this.ermNum) { + uni.showToast({ + title: "鏁伴噺涓嶈兘涓虹┖涓斿ぇ浜�0", + icon: "none", + }); + return; + } + if (param == 1) { + this.printComp(); + } else { + // 渚涘簲鍟嗙紪鍙� 渚涘簲鍟嗗悕瀛� + if (this.materlist.supplier) { + let arr = this.materlist.supplier.split(" "); + this.materlist.supplier = arr[0]; + this.materlist.supplierName = arr[1]; + } + console.log(this.materlist); + this.printBanma(); + } + }, + //鐗╂枡鏌ヨ + materialBlur(param) { + var pramCd = {}; + if (this.warehouse.barcodeMy && this.warehouse.barcodeMy.length > 0) { + if (this.warehouse.barcodeMy.indexOf(",") != -1) { + pramCd = { + SN_1d: "", + SN_2d: this.warehouse.barcodeMy + }; + } else { + pramCd = { + SN_1d: this.warehouse.barcodeMy, + SN_2d: "", + }; + } + console.log(pramCd) + getPurchaseOrderDetail({ + ...pramCd, + }).then((res) => { + if (res.code == 200) { + var arrList = res.result.items; + if (arrList.length == 0) { + this.resmessage = "鏆傛棤鏁版嵁"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + if (Array.isArray(arrList) && arrList.length >= 1) { + arrList.forEach((item) => { + item.uncollectedQuantity = ""; + item.key = item.id; + }); + var stockQty = arrList[0].stockQty || 0; + var allHe = Number(arrList[0].quantity + stockQty).toFixed(3); + //鏈�楂樺簱瀛榤axImumqty < 鏀惰揣鏁皅uantity + 搴撳瓨鏁皊tockQty + if(arrList[0].maxImumqty && arrList[0].maxImumqty > 0 && + (arrList[0].maxImumqty < allHe)){ + var s1 = `鐗╂枡${arrList[0].materialCode}褰撳墠搴撳瓨${stockQty}鍜屾敹璐ф暟${arrList[0].quantity}涔嬪拰瓒呭嚭鏈�楂樺簱瀛�${arrList[0].maxImumqty}锛屾槸鍚︾户缁敹璐э紵`; + uni.showModal({ + title: "鎻愮ず", + content: s1, + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + arrList.forEach((item) => { + var arrNo = this.singlist.findIndex((v) => v.id == item.id); + if (arrNo == -1) { + this.singlist.unshift(item); + } + }); + } else if (res.cancel) { + } + }, + }); + }else{ + arrList.forEach((item) => { + var arrNo = this.singlist.findIndex((v) => v.id == item.id); + if (arrNo == -1) { + this.singlist.unshift(item); + } + }); + } + } else { + this.resmessage = "鏆傛棤鏁版嵁"; + this.rescode = 400; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + } + }); + } else { + uni.showToast({ + title: "璇锋壂鐮�", + icon: "none", + duration: 2000, + }); + } + + }, + //鍒犻櫎璇︽儏 + longpredel(index, eindex) { + if (eindex == 1) { + this.singlist.splice(index, 1); + } else { + this.materlist = this.singlist[index]; + this.detailshow = true; + } + }, + //鍗$墖閫変腑 + click(e) { + e.cardNum = true; + this.$forceUpdate(); + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }); + this.$forceUpdate(); + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate(); + }, + // tabs閫氱煡swiper鍒囨崲 + tabsChange(index) { + this.current = index; + }, + //鏀瑰彉鏀惰揣鏁伴噺 + changeNum(val) { + val.cardNum = false; + if (!val.uncollectedQuantity) { + this.rescode = 400; + this.resmessage = "鏀惰揣鏁伴噺涓嶈兘涓虹┖涓斿ぇ浜�0"; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + // val.uncollectedQuantity = Number(val.uncollectedQuantity.toString().match(/^\d+(?:\.\d{0,2})?/)) //淇濈暀2浣嶅皬鏁� + let num1 = Number( + Number(val.deliveryQuantity) - Number(val.goodsQuantity) + ).toFixed(3); //蹇呴』淇濈暀3浣嶅皬鏁� -鍚﹀垯浼氶�犳垚鍓╀綑鐗╂枡鏄皬鏁扮殑鏃跺��,鏃犳硶鏀惰揣 + if (Number(val.uncollectedQuantity).toFixed(3) > Number(num1)) { + val.uncollectedQuantity = 0; + this.rescode = 400; + this.resmessage = + "鏀惰揣鏁�" + + val.uncollectedQuantity + + "涓嶈兘澶т簬閲囪喘鎬绘暟" + + val.deliveryQuantity + + "鍑忓凡鏀惰揣鏁�" + + val.goodsQuantity; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + if (val.uncollectedQuantity && val.uncollectedQuantity >= 0) { + val.edit = true; + this.$forceUpdate(); + } + }, + + changeNumIn(val, valParent) { + if (val.uncollectedQuantity === "" || val.uncollectedQuantity < 0) { + this.rescode = 400; + this.resmessage = "鏀惰揣鏁伴噺涓嶈兘涓虹┖"; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + val.uncollectedQuantity = Number( + val.uncollectedQuantity.toString().match(/^\d+(?:\.\d{0,3})?/) + ); //淇濈暀2浣嶅皬鏁� + + if (val.uncollectedQuantity > val.quantity) { + val.uncollectedQuantity = 0; + this.rescode = 400; + this.resmessage = "涓嶈兘澶т簬缂烘枡鏁�"; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + if (val.uncollectedQuantity > valParent.uncollectedQuantity) { + val.uncollectedQuantity = 0; + this.rescode = 400; + this.resmessage = "涓嶈兘澶т簬鏀惰揣鏁�"; + this.showBtn = 0; + this.$refs.resmodal.show = true; + } + }, + upload() { + this.fileList = []; + uni.chooseImage({ + sourceType: ["camera", "album"], + sizeType: "original", //閫夋嫨鍘熷浘 + count: 1, + success: (res) => { + res.tempFilePaths.forEach((item, index) => { + uni.showLoading({ + title: "涓婁紶涓�...", + }); + translateapp(item, 80, (imgUrl) => { + let fileData = [{ uri: imgUrl }]; + uni.uploadFile({ + url: this.action, + files: fileData, //blob: + fileType: "image", + success: (res) => { + uni.hideLoading(); + const resJson = JSON.parse(res.data); + if (resJson.code == 200) { + var jsonImg = resJson.result; + if ( + jsonImg == null || + jsonImg.url == null || + jsonImg.url == "" + ) { + this.image = ""; + this.fileList = []; + this.$u.toast("鍥剧墖涓婁紶鏈嶅姟鍣ㄥけ璐�"); + return; + } + this.fileList.push(jsonImg.url); + this.fileListImgSrc.push({ + resSrc: jsonImg.url, + bendiSrc: item, + }); + } else { + this.$u.toast("鍥剧墖涓婁紶澶辫触"); + this.fileList = []; + this.image = ""; + } + }, + }); + }); + }); + }, + }); + }, + // 鍒犻櫎鍥剧墖 + delimage(filepath, index) { + if (!filepath) { + return; + } + deletePicture({ + id: filepath, + }).then((res) => { + if (res.code == 200) { + this.fileListImgSrc.splice(index, 1); + this.$u.toast("绉婚櫎鍥剧墖鎴愬姛"); + } else { + this.rescode = 400; + this.resmessage = `鍒犻櫎鍥剧墖澶辫触`; + this.$refs.resmodal.show = true; + } + }); + }, + //棰勮鍥剧墖 + imgClick(index) { + var urlsArr = []; + this.fileListImgSrc.forEach((item) => { + urlsArr.push(item.resSrc); + }); + uni.previewImage({ + urls: urlsArr, + current: urlsArr[index], + }); + }, + //鐩戝惉鍘熺敓杩斿洖閿� + onBackPress(e) { + this.delimage(); + }, + //涓嬩竴姝� + next() { + if (this.warehouse.asnNo == "") { + uni.showToast({ + title: "璇疯緭鍏SN鍗曞彿锛�", + icon: "none", + }); + return; + } + this.singlist.forEach((item, index) => { + item.uncollectedQuantity = item.quantity; + }); + // // isBatchMge涓簍rue: 鎵规绠$悊鐨勭墿鏂� 蹇呴』杈撳叆 + // let arrMge = this.singlist.filter((v)=>(v.isBatchMge == 1 && v.barNo==''|| v.isBatchMge == 1 && v.barNo==null)).filter((v2)=>(v2.uncollectedQuantity>0)) + // if(arrMge.length>0){ + // uni.showToast({ + // title: `${arrMge[0].wareMaterialCode}璇峰~鍐欑┖鐨勬壒娆, + // icon:'none' + // }) + // return + // } + this.lastlist = this.singlist.filter((v) => v.uncollectedQuantity > 0); + + this.lacklist = this.singlist.reduce((curr, item) => { + if ( + item.deliveryQuantity - + item.uncollectedQuantity - + item.goodsQuantity > + 0 + ) { + curr.push(item); + } + return curr; + }, []); + + let params2 = []; + + this.lastlist.forEach((item, index) => { + params2.push({ + ...item, + // id: item.id, + // wareMaterialCode: item.wareMaterialCode, + // uncollectedQuantity: item.uncollectedQuantity, + // purchaseNo: this.warehouse.PurchaseNo, + // asnNo: this.warehouse.asnNo,//鍒拌揣鍗曞彿 + // batchNo: item.barNo, + // isCheck: item.isCheck, + // isBatchMge: item.isBatchMge, + // ebelp: item.ebelp, + // sap_Location: item.sap_Location, //sap浣嶇疆 + }); + }); + + // 宸叉敹璐ф暟 + this.QuantityTotal = this.singlist.reduce((prev, next) => { + let num = Number(prev) + Number(next.deliveryQuantity); + return Number(num).toFixed(3); + }, 0); + + this.collectedTotal = this.singlist.reduce((prev, next) => { + let num = Number(prev) + Number(next.goodsQuantity); + return Number(num).toFixed(3); + }, 0); + this.uncollectedTotal = this.singlist.reduce((prev, next) => { + let num = Number(prev) + Number(next.uncollectedQuantity); + return Number(num).toFixed(3); + }, 0); + this.lackTotal = this.singlist.reduce((prev, next) => { + let num = + Number(prev) + + Number(next.deliveryQuantity) - + Number(next.uncollectedQuantity) - + Number(next.goodsQuantity); + return Number(num).toFixed(3); + }, 0); + this.lists[0].name = `鏀惰揣(${this.lastlist.length})`; + // this.lists[1].name = `缂烘枡(${this.lacklist.length})` + this.lists[1].name = ""; + + if (this.uncollectedTotal <= 0) { + uni.showToast({ + title: "鏀惰揣鎬绘暟澶т簬0", + icon: "none", + duration: 2000, + }); + return; + } + + this.renameFocus = false; + + // addShouhuoJiaoYan(params2).then((res) => { + // if (res.code == 200) { + // if (res.data) { + // uni.showModal({ + // title: '鎻愮ず', + // content: `${res.data}锛岀‘璁や笅涓�姝ワ紵`, + // showCancel: true, + // cancelColor: '#333333', + // success: (res => { + // if (res.confirm) { + // this.renameFocus = false; + // } else if (res.cancel) { + // } + // }) + // }); + // } else { + // this.renameFocus = false + // } + // } + // }) + }, + //纭鏀惰揣 + submit() { + if (this.uncollectedTotal <= 0) { + uni.showToast({ + title: "鏀惰揣鎬绘暟澶т簬0", + icon: "none", + duration: 2000, + }); + return; + } + let params = []; + //鍥剧墖鍦板潃 + let idImg = []; + if (this.fileListImgSrc && this.fileListImgSrc.length > 0) { + this.fileListImgSrc.forEach((item) => { + idImg.push(item.resSrc); + }); + } + this.lastlist.forEach((item, index) => { + params.push({ + PDAReceivingActionType: 1, //鏍囧噯鏀惰揣 + OrderAsnDetailsId: item.id, //ASN鍗曟槑缁咺D + createdUserId: JSON.parse(uni.getStorageSync("userInfo")).id, + createdUserName: JSON.parse(uni.getStorageSync("userInfo")).name, + updatedUserId: JSON.parse(uni.getStorageSync("userInfo")).id, + updatedUserName: JSON.parse(uni.getStorageSync("userInfo")).name, + id: item.id, + ...item, + ImageIds: idImg.join(","), //鍥剧墖鍦板潃 + }); + }); + uni.showModal({ + title: "鎻愮ず", + content: "鏄惁纭鏀惰揣锛�", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + addDelivery(params).then((res) => { + this.rescode = res.code; + this.resmessage = res.message || "鏀惰揣鎴愬姛"; + this.$refs.resmodal.show = true; + if (res.code == 200) { + this.showBtn = 0; + this.renameFocus = true; + this.singlist = []; + this.warehouse.barcodeMy = ""; + this.fileList = []; + this.fileListImgSrc = []; + } else { + this.showBtn = 0; + } + }); + } else if (res.cancel) { + } + }, + }); + }, + //娓呮閫変腑 + resthandle(parm) { + uni.showModal({ + title: "鎻愮ず", + content: "鏄惁纭閲嶇疆锛�", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + this.rest(); + } else if (res.cancel) { + } + }, + }); + }, + //娓呮閫変腑 + rest(parm) { + this.warehouse.barcodeMy = ""; + this.autoFoucs = true; + this.singlist = []; + this.asnNo = ""; + this.delimage(); + }, + reset(back) { + if (back) { + this.autoFoucs = false; + } + this.renameFocus = true; + }, + //鎵撳嵃 + onPrint() { + let _this = this; + if (!uni.getStorageSync("deviceId")) { + uni.showToast({ + title: "璇疯繛鎺ユ墦鍗版満", + icon: "error", + duration: 2000, + }); + return; + } + this.writeBLECharacteristicValue(); + }, + beforeDestroy() { + // 閿�姣佸畾鏃跺櫒 + if (this.timer) { + clearTimeout(this.timer); + this.timer = null; + } + }, + //绫诲瀷鑱氱劍浜嬩欢 + containerFocus2() { + uni.hideKeyboard(); + this.modalshow2 = true; + }, + getVehicleType2() { + getSapSelect().then((res) => { + if (res.code == 200) { + const dataT = res.data; + if (dataT && dataT.length == 0) { + this.wolist2 = []; + return; + } + let dataDst = []; + dataT.forEach((item) => { + dataDst.push({ + text: item, + id: item, + }); + }); + this.wolist2 = dataDst; + this.sapLocate = dataDst[0].id; + } + }); + }, + //绫诲瀷閫夋嫨 + confirm2(index) { + // this.warehouse.containerCode = this.wolist2[index].text; + // this.warehouse.containerCode = this.wolist2[index].id; + console.log(this.wolist2[index].text); + this.sapLocate = this.wolist2[index].text; + this.singlist.forEach((item) => { + item.sap_Location = this.wolist2[index].text; + }); + console.log(this.singlist); + this.$forceUpdate(); + }, + goYuKu() { + this.$refs.resmodal.show = false; + uni.navigateTo({ + url: + "/pages/takeMaterial/orderpiece/poYueku?po=" + + this.warehouse.PurchaseNo, + }); + // uni.showModal({ + // title: '鎻愮ず', + // content: '鏄惁纭瓒婂簱锛�', + // showCancel: true, + // cancelColor: '#333333', + // success: (res => { + // if (res.confirm) { + // uni.navigateTo({ + // url: '/pages/crossDock/crossDock?ids='+this.arrIds + // }) + // } else if (res.cancel) { + // } + // }) + // }); + }, + // 娣诲姞鎵规 + addBath(index) { + this.itemPcAddIndex = index; + this.detailshowPc = true; + }, + // 纭 娣诲姞鎵规 + submitPc() { + if (!this.addBatch) { + uni.showToast({ + title: "鎵规鍙蜂笉鑳戒负绌猴紒", + icon: "none", + duration: 2000, + }); + return; + } + let itemNow = JSON.parse( + JSON.stringify(this.singlist[this.itemPcAddIndex]) + ); + itemNow.barNo = this.addBatch; + itemNow.uncollectedQuantity = 1; + this.singlist.splice(this.itemPcAddIndex, 0, itemNow); + this.detailshowPc = false; + }, + }, +}; +</script> + +<style lang="scss"> +.title-wrap { + margin-bottom: 15rpx; + border-bottom: 1px solid #f18202; + border-top: 1px solid #f18202; + padding: 3px; +} + +.bg_item { + background: #ffebcd !important; +} + +.qhd_wp { + padding: 0 20rpx; + border-top: 1px solid #f18202; +} + +.detail_btn { + text-align: right; + padding: 10px; +} + + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/orderpiecePo.vue b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/orderpiecePo.vue new file mode 100644 index 0000000..ef1b4b5 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/orderpiecePo.vue @@ -0,0 +1,1190 @@ +<template> + <view class="overflow" style="padding-bottom:100px"> + <!-- 椤堕儴 --> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"></block> + <block slot="content">鍚庣粦瀹氭敹璐�</block> + </cu-custom> + <!-- 閬尅灞� --> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' :showBtn='showBtn'/> + <!-- 鏀惰揣 --> + <view class="" v-if="renameFocus"> + <u-form labelPosition="left" label-width="150rpx" :model="warehouse" ref="warehouseRef"> +<!-- <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鍦版爣/搴撲綅:" prop="machineToolNo" + > + <u-input v-model.trim="warehouse.machineToolNo" placeholder="璇峰綍鍏ュ湴鏍�/搴撲綅" + class="width padding_left25rpx" @confirm="materialBlur"> + </u-input> + </u-form-item> + </u-col> + </u-row> --> + <u-row class="margin_top10rpx margin_bottom10rpx padding_left25rpx" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="ASN鍗曞彿:" prop="asnNo" required class="uFormItem"> + <u-input v-model.trim="warehouse.asnNo" @confirm="materialBlur" placeholder="璇峰綍鍏ユ垨鎵爜" + @focus="warehouse.asnNo=''" :focus="autoFoucs" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <!-- <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="閲囪喘鍗曞彿:" prop="PurchaseNo" required > + <u-input v-model.trim="warehouse.PurchaseNo" + placeholder="璇峰綍鍏ユ垨鎵爜" + class="width padding_left25rpx" + @confirm="materialBlur"> + </u-input> + </u-form-item> + </u-col> + </u-row> --> + + <!-- <u-row class="border_bottom margin_top10rpx padding10" + style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="SAP浣嶇疆:" prop="sapLocate" required + style="font-size: 32rpx;font-weight: bold;padding: 0;"> + <u-input v-model.trim="sapLocate" + placeholder="璇烽�夋嫨鎴栬緭鍏AP浣嶇疆"></u-input> + </u-form-item> + </u-col> + <u-col span="2" @tap="containerFocus2"> + <span class="fontSize15rpx">閫夋嫨</span> + <u-icon name="arrow-right" size="12" class="fontSize15rpx"></u-icon> + </u-col> + </u-row> --> + <u-row class="margin_top10rpx margin_bottom10rpx padding_left25rpx" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" class="uFormItem"> + <u-input v-model.trim="warehouse.WareMaterialCode" placeholder="璇峰綍鍏ユ垨鎵爜" + class="width padding_left25rpx" @confirm="materialBlur(1)"> + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <view style="margin-bottom: 180rpx;" v-show="singlist.length > 0"> + <checkbox-group @change="checkboxChange"> + <view v-for="(item, eindex) in singlist" :key="eindex" class="margin_top10rpx"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpredel" @open="open" + @close='close' :options="options"> + <view class=" fontSize32rpx background_fff padding10" :class="item.active==true ? 'bg_item' : ''" + style="width: 100vw;"> + <u-row> + <u-col span="12"> + <label class="flex align-center"> + <!-- <checkbox v-show="item.isYueku=='鏄�'" :value="item.key" :checked="item.checked"/> --> + <text class="flex justify-center align-center circkle06">{{ eindex + 1 + }}</text> + <view class="color_f18202 padding_left10rpx" + style="flex: 1;word-break: break-all;"> + {{ item.materialCode }}-{{ item.materialName }} + </view> + </label> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="padding_left25rpx" style="color: #808080;"> + ASN锛歿{ item.asnNo }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="7"> + <view class="padding_left25rpx" style="color: #808080;"> + 渚涘簲鍟嗘壒娆★細{{ item.supplierBatch }} + </view> + </u-col> + <u-col span="5"> + <view class="" style="color: #808080;"> + 闇�姹傛暟锛歿{ Number(item.quantity).toFixed(3) }} + </view> + </u-col> + </u-row> + + <u-row> + <u-col span="7"> + <view class="padding_left25rpx" style="color: #808080;"> + 琛屽彿锛歿{ item.asnLineNumber }} + </view> + </u-col> + <u-col span="5"> + <view class="" style="color: #808080;"> + 宸叉敹鏁帮細{{ Number(item.goodsQuantity).toFixed(3) }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="7"> + <view class="padding_left25rpx" style="color: #808080;"> + 閲囪喘鍗曚綅锛歿{ item.poUnit }} + </view> + </u-col> + <u-col span="5"> + <view class="" style="color: #808080;"> + 搴撳瓨鍗曚綅锛歿{ item.materialUnit }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="5" class="flex"> + <view class="padding_left25rpx" style="color: #808080;"> + 鎹㈢畻鐜�:{{ item.translateRate }} + </view> + </u-col> + <u-col span="7" class="flex" style="margin-bottom: 10px"> + <view class="color_80"> + 鏁伴噺(搴撳瓨鍗曚綅)锛� + </view> + <input + class="border_bottom_f18202 text-left color_f18202 fontSize32rpx" + style="background-color: #f2f2f2;height: 60rpx;width: 155rpx" + v-model.trim="item.uncollectedQuantity" type="number" + @blur="changeNum(item)" @click="click(item)" placeholder="0" /> + </u-col> + </u-row> + + <u-row> + <u-col span="5" class="flex"> + + </u-col> + <u-col span="7" class="flex"> + <view class="color_80"> + 鏁伴噺(閲囪喘鍗曚綅)锛� + </view> + <input + class="border_bottom_f18202 text-left color_f18202 fontSize32rpx" + style="background-color: #f2f2f2;height: 60rpx;width: 155rpx;" + v-model.trim="item.uncollectedQuantity2" type="number" + @blur="changeNum2(item)" @click="click(item)" placeholder="0" /> + </u-col> + </u-row> + </view> + </u-swipe-action> + + </view> + </checkbox-group> + </view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow = false" mode="bottom"> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <!-- <view class="line flex justify-between"> + <text class="text-gray">鎵撳嵃寮犳暟</text> + <text> + <u-input v-model.trim="contLabel" placeholder="璇疯緭鍏ユ墦鍗板紶鏁�" class="width" @focus="contLabel = ''" + style="font-size: 36rpx;text-align: right;"> + </u-input> + </text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵撳嵃鏀惰揣鏁伴噺</text> + <text> + <u-input v-model.trim="ermNum" placeholder="璇疯緭鍏ユ墦鍗版敹璐ф暟閲�" class="width" @focus="ermNum = ''" + style="font-size: 36rpx;text-align: right;"> + </u-input> + </text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏈鏀惰揣鏁伴噺</text> + <text>{{ materlist.uncollectedQuantity }}</text> + </view> --> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{ materlist.wareMaterialCode }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{ materlist.name }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text>{{ materlist.barNo }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{ materlist.specificationModel }}</text> + </view> + <view class="margin_top140rpx"> + <!-- <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='init' @reset='rest' /> --> + <!-- <button-modal :cleaningShow='true' allTitle='钃濈墮鎵撳嵃' cleaningTitle='鏂戦┈鎵撳嵃' @allsubmit="init(1)" + @submit='init(2)' /> --> + </view> + </u-popup> + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='涓嬩竴姝�' @submit='next' @reset='rest' /> + </view> + <!-- 纭鏀惰揣 --> + <view class="" v-else> + <!-- <view class="background_fff padding15 flex justify-between margin_bottom10rpx fontSize32rpx align-center"> + <view class=""> + <text style="color: red;">*</text> + <text class="text-gray">鍗曞彿:</text> + </view> + <view class="font_weight_bold"> + {{ warehouse.asnNo }} + </view> + </view> --> + <u-tabs-swiper ref="tabs" :current="current" @change="tabsChange" bar-width='75' :list="lists" + :is-scroll="false" class='margin_bottom10rpx' active-color='#f18202' inactive-color='#f18202'> + </u-tabs-swiper> + <scroll-view scroll-y="true" style="height: 45vh;"> + <!-- <view class="margin_top10rpx overflow_auto" style="height:calc(100% - 20rpx)"> --> + <view v-if="current == 0" v-for="(item, eindex) in lastlist" :key="eindex" + style="background-color: #fff;" class="margin_top10rpx padding10"> + <u-row> + <u-col span="12" class="flex" style="align-items: flex-start;"> + <view + style="background-color: #f18202;color: #fff;border-radius: 50%;width: 20px;height: 20px;line-height: 20px;text-align: center;"> + {{ eindex + 1 }} + </view> + <view class="color_f18202 padding_left10rpx" style="flex: 1;word-break: break-all;"> + {{ item.materialCode }}-{{ item.materialName }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="8" class="text06"> + ASN锛歿{ item.asnNo }} + </u-col> + <u-col span="4" class=" text06 text-right"> + 渚涘簲鍟嗘壒娆★細{{ item.supplierBatch }} + </u-col> + </u-row> + <u-row> + <u-col span="7" class="text06"> + 闇�姹傛暟锛歿{ Number(item.quantity).toFixed(3) }} + </u-col> + <u-col span="5" class=" text06 text-right"> + 宸叉敹鏁帮細{{ Number(item.goodsQuantity).toFixed(3) }} + </u-col> + </u-row> + <u-row class=""> + <u-col span="7" class="text06"> + 缂鸿揣鏁帮細{{ + Number( + Number(item.quantity) - Number(item.goodsQuantity) + ).toFixed(3) + }} + </u-col> + <u-col span="5" class="color_f18202 text-right"> + 鏈鏀惰揣锛歿{ Number(item.uncollectedQuantity).toFixed(3) }} + </u-col> + </u-row> + </view> + <view v-if='current == 1' v-for="(item, eindex) in lacklist" :key="eindex" + style="background-color: #fff;margin-top: 6rpx;"> + <u-row class="padding15"> + <u-col span="12" class="flex" style="align-items: flex-start;"> + <view + style="background-color: #f18202;color: #fff;border-radius: 50%;width: 20px;height: 20px;line-height: 20px;text-align: center;"> + {{ eindex + 1 }} + </view> + <view class="color_f18202 padding_left10rpx" style="flex: 1;word-break: break-all;"> + {{ item.wareMaterialCode }} -- 鏄惁妫�楠�: <text + style="color: #000;font-weight: bold;">{{ item.isCheck ? '鏄�' : '鍚�' }}</text> + </view> + </u-col> + </u-row> + <u-row> + <u-col span="8" class="text06"> + 鎵规锛歿{ item.barNo }} + </u-col> + <u-col span="4" class=" text06"> + 閲囪喘鏁帮細{{ item.deliveryQuantity }} + </u-col> + </u-row> + <u-row class=""> + <u-col span="4" class="text06"> + 宸叉敹璐ф暟锛歿{ item.goodsQuantity }} + </u-col> + <u-col span="4" class="text06"> + 鏈鏀惰揣鏁帮細{{ item.uncollectedQuantity }} + </u-col> + <u-col span="4" class="color_f18202"> + 缂鸿揣鏁帮細{{ + Number( + Number(item.deliveryQuantity) - Number(item.uncollectedQuantity) - Number(item.goodsQuantity) + ).toFixed(3) + }} + </u-col> + </u-row> + + <!-- 鍙栬揣鍗曞垪琛� --> + <!-- <view class="background_fff qhd_wp" v-show="item.SortingOrderDetailsList.length>0" v-for="(itemIn, eindexIn) in item.SortingOrderDetailsList" :key="eindexIn"> + <u-row> + <u-col span="12"> + <view class="" style="color: #808080;"> + 鍙栬揣鍗曞彿锛歿{ itemIn.orderNo }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="text06"> + 缂烘枡鏁伴噺锛歿{ itemIn.quantity }} + </view> + </u-col> + <u-col span="6" class="color_f18202 text-right"> + 鏈鏀惰揣鏁伴噺锛歿{ itemIn.uncollectedQuantity }} + </u-col> + </u-row> + </view> --> + </view> + </scroll-view> + <view class="fontSize32rpx "> + <u-row class='padding15 background_fff' style='margin-bottom: 6rpx;'> + <u-col span="6" class="text-gray"> + <!-- 閲囪喘鏁�: {{ QuantityTotal }} --> + </u-col> + <u-col span="6" class="font_weight_bold" style="text-align: right;"> + 宸叉敹璐ф暟: {{ collectedTotal }} + </u-col> + </u-row> + <u-row class='padding15 background_fff' style='margin-bottom: 6rpx;'> + <u-col span="6" class="text-gray"> + </u-col> + <u-col span="6" class="font_weight_bold color_f18202" style="text-align: right;"> + 鏈鏀惰揣鏁�: {{ uncollectedTotal }} + <!-- 缂烘枡鎬绘暟: {{ lackTotal }} --> + </u-col> + </u-row> + </view> + <!-- 鎵归噺鍥剧墖涓婁紶 --> + <view + class="width fixed bottom140 margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition boxImgWrap"> + <view class="ImgListBox" v-for="(item, eindex) in fileListImgSrc" :key="eindex"> + <image class="imgUp" :src="item.bendiSrc" mode="" @click="imgClick(eindex)"></image> + <u-icon @click="delimage(item.resSrc,eindex)" name='close-circle-fill' color='red' size='60' class="closeIcon"></u-icon> + </view> + <view class="addImgBox"> + <u-icon name="plus" @click='upload' size='48'></u-icon> + <text class="fontSize32rpx">閫夋嫨鍥剧墖</text> + </view> + </view> + <button-modal :empTytowerShow='true' cleaningTitle="涓婁竴姝�" garmenTitle='鏀惰揣瀹屾垚' @submit='submit' + @reset='reset(1)' /> + </view> + <u-action-sheet :list="wolist2" v-model="modalshow2" @click="confirm2"></u-action-sheet> + + <!-- 娣诲姞鎵规 --> + <u-popup v-model="detailshowPc" border-radius="14" @close="detailshowPc = false" mode="bottom"> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡鎵规淇℃伅</h2> + <!-- <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.wareMaterialCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.name}}</text> + </view> --> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text> + <u-input v-model.trim="addBatch" placeholder="璇疯緭鍏ユ壒娆�" class="width" @focus="addBatch = ''" + style="font-size: 36rpx;text-align: right;"> + </u-input> + </text> + </view> + <view class="margin_top140rpx"> + <button-modal :subShow='true' garmenTitle='纭' @submit='submitPc' /> + </view> + </u-popup> + </view> +</template> + +<script> + import ButtonModal from '../../../components/buttonModal.vue' + import ModalCode from '../../../components/ModalCode.vue' + import tkiBarcode from '@/components/tki-barcode/tki-barcode' + import bluet from '@/components/blue.vue' + import BluePrint from '@/pages/print/bluePrint.js' + import { + getMaterial, + getPurchaseOrderDetail, + addDelivery, + getQhdOrderDetail, + getSapSelect, + addShouhuoJiaoYan + } from '../../../api/takeMaterial/orderpiece.js' + import { + pathToBase64, + base64ToPath + } from 'image-tools' + import { + addPrintRecord + } from '../../../api/print.js' + import { + getAttrValue + } from '@/utils/tool.js' + import { + translateapp, + translateImg + } from '@/utils/compress.js' + import { + deletePicture + } from '@/api/deliver.js' + import printComp from '@/mixins/printPoLabel.js' + import printBanma from '@/mixins/printBanma.js' + import mixCheckbox from '@/mixins/checkboxYueKu.js' + + export default { + mixins: [printComp, printBanma, mixCheckbox], + data() { + return { + materialCode: '', //鐗╂枡缂栧彿 + renameFocus: true, + detailshow: false, + rescode: 0, + autoFoucs: true, + resmessage: "", + showBtn: 0, + current: 0, //婊戝潡榛樿鍊� + fileList: [], + fileListImgSrc: [], //涓婁紶鍥剧墖鍒楄〃 + lastlist: [], + overlist: [], //鏀惰揣鍒楄〃 + lacklist: [], //缂烘枡鍒楄〃 + image: '', //褰撳墠鏄剧ず鐨勫浘鐗囧湴鍧� + action: this.$myHOST + '/api/sysFile/uploadFile', + singlist: [], //鐗╂枡璇︽儏 + lists: [{ + name: '鏀惰揣(0)' + }, { + name: '缂烘枡' + }], + list: [], + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + WareMaterialCode: '', //鐗╂枡缂栫爜 + PageSize: 10000, + PageNo: 1, + asnNo: "", + }, + warehouseRules: { + asnNo: [{ + required: true, + message: '鍗曞彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }, + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + operator: '', + QuantityTotal: 0, //閫佽揣鎬绘暟 + collectedTotal: 0, //宸叉敹璐ф暟 + uncollectedTotal: 0, //鏀惰揣鎬绘暟 + lackTotal: 0, //缂鸿揣鎬绘暟 + code: '', + addForm: { //鎵撳嵃璁板綍 + code: '', + name: '', + batchNo: '', + specificationModel: '' + }, + lotNo: '', + contLabel: 1, //鎵撳嵃寮犳暟 + ermNum: '', + detailshow: false, + timer: null, + printflag: false, + sapLocate: '', + modalshow2: false, + wolist2: [], + timerT: null, + addBatch: '', + detailshowPc: false, + itemPcAddIndex: "" + // orderType:'' + }; + }, + components: { + ButtonModal, + ModalCode, + tkiBarcode, + bluet + }, + onLoad(option) { + // 瓒婂簱杩斿洖 鏌ユ暟鎹� + if (option.po) { + this.warehouse.PurchaseNo = option.po + this.warehouse.asnNo = option.po + this.materialBlur() + } + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + // this.getVehicleType2() //SAP涓嬫媺 + }, + methods: { + showDetail(item, eindex) { + if (item.WareMaterialCode == '') { + return + } + item.childen = !item.childen + if (this.singlist[eindex].SortingOrderDetailsList.length > 0) { + return + } + getQhdOrderDetail({ + 'WareMaterialCode': item.wareMaterialCode, + // 'orderType':this.orderType + }).then((res) => { + if (res.code == 200) { + if (Array.isArray(res.data) && res.data.length >= 0) { + if (res.data.length == 0) { + uni.showToast({ + title: '鏆傛棤鍙栬揣鏁版嵁', + icon: 'none', + duration: 2000 + }) + return + } + res.data.forEach(item => { + item.uncollectedQuantity = ''; + // return item; + }) + this.singlist[eindex].SortingOrderDetailsList = res.data + } + } + }) + }, + //鑾峰彇print date print time + getCurrentDate() { + let date = new Date(); + let year = date.getFullYear(); //骞� + let month = date.getMonth() + 1; //鏈� + month = month >= 10 ? month : '0' + month; + let day = date.getDate(); //鏃� + day = day >= 10 ? day : '0' + day; + let hour = date.getHours() //鏃� + hour = hour >= 10 ? hour : '0' + hour; + let min = date.getMinutes(); //鍒� + min = min >= 10 ? min : '0' + min; + let second = date.getSeconds(); //绉� + second = second >= 10 ? second : '0' + second; + return { + date: `${day}.${month}.${year}`, + time: `${hour}:${min}:${second}`, + formate: `${year}/${month}/${day}` + } + + }, + //鎵撳嵃 + init(param) { + const arr = ['wareMaterialCode', 'barNo', 'uncollectedQuantity']; + const arrzw = ['鐗╂枡缂栧彿', '鎵规', '瀹為檯鏀惰揣鏁�'] + let isAllow = '' + Object.keys(this.materlist).forEach(item => { + if (arr.includes(item)) { + if (!this.materlist[item]) { + isAllow = arr.indexOf(item) + return + } + } + }) + if (isAllow != '') { + this.detailshow = false + this.rescode = 400 + this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + this.showBtn = 0 + this.$refs.resmodal.show = true + return + } + + if (!this.contLabel || !this.ermNum) { + uni.showToast({ + title: '鏁伴噺涓嶈兘涓虹┖涓斿ぇ浜�0', + icon: 'none' + }) + return + } + if (param == 1) { + this.printComp() + } else { + // 渚涘簲鍟嗙紪鍙� 渚涘簲鍟嗗悕瀛� + if (this.materlist.supplier) { + let arr = this.materlist.supplier.split(' ') + this.materlist.supplier = arr[0] + this.materlist.supplierName = arr[1] + } + console.log(this.materlist) + this.printBanma() + } + + }, + //鐗╂枡鏌ヨ + materialBlur(param) { + if (this.warehouse.asnNo == '') { + return + } + // const index = this.singlist.findIndex(item => item.wareMaterialCode === this.warehouse.WareMaterialCode); + // console.log(index) + // if (index > -1) { + // this.singlist.unshift(...this.singlist.splice(index, 1)) + // return + // } else { + // uni.showToast({ + // title: '鏃犳鐗╂枡', + // icon: 'none', + // duration: 2000 + // }) + // } + // if (param && param == 1) { //鐗╂枡鍏ュ彛 + // return + // } + console.log("鏌ヨ") + getPurchaseOrderDetail({ + ...this.warehouse, + MaterialCode: this.warehouse.WareMaterialCode + }).then((res) => { + if (res.code == 200) { + var arrList = res.result.items; + if (Array.isArray(arrList) && arrList.length >= 1) { + arrList.forEach((item) => { + item.uncollectedQuantity = ''; + item.active = false; + }) + // 鎺掑簭 鍙互瓒婂簱鐨勭墿鏂欐帓涓婇潰 + // arrList.sort((a, b) => { + // return a.isBig - b.isBig + // }) + if (this.singlist.length == 0) { + this.singlist = arrList; + } else { + arrList.forEach((item) => { + var arrNo = this.singlist.findLastIndex(v => v.materialCode == item.materialCode); + if (arrNo == -1) { + this.singlist.unshift(item) + }else{ + var itemNow = this.singlist.splice(arrNo, 1); + itemNow[0].active = true + this.singlist.unshift(...itemNow) + } + }) + } + if (this.singlist.length == 0) { + this.resmessage = '鏆傛棤鏁版嵁' + this.rescode = 400 + this.showBtn = 0 + this.$refs.resmodal.show = true + } + } else { + this.resmessage = '鏆傛棤鏁版嵁' + this.rescode = 400 + this.showBtn = 0 + this.$refs.resmodal.show = true + } + } + }) + }, + //鍒犻櫎璇︽儏 + longpredel(index, eindex) { + if (eindex == 1) { + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + + }, + //鍗$墖閫変腑 + click(e) { + // e.cardNum = true + // this.$forceUpdate() + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + this.$forceUpdate() + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + // tabs閫氱煡swiper鍒囨崲 + tabsChange(index) { + this.current = index; + }, + //鏀瑰彉鏀惰揣鏁伴噺 + changeNum(val) { + val.cardNum = false + if (!val.uncollectedQuantity) { + this.rescode = 400 + this.resmessage = '鏀惰揣鏁伴噺涓嶈兘涓虹┖涓斿ぇ浜�0' + this.showBtn = 0 + this.$refs.resmodal.show = true + } + val.uncollectedQuantity = Number(val.uncollectedQuantity.toString().match(/^\d+(?:\.\d{0,3})?/)) //淇濈暀2浣嶅皬鏁� + let num1 = Number(Number(val.quantity) - Number(val.goodsQuantity)).toFixed( + 3) //蹇呴』淇濈暀3浣嶅皬鏁� -鍚﹀垯浼氶�犳垚鍓╀綑鐗╂枡鏄皬鏁扮殑鏃跺��,鏃犳硶鏀惰揣 + if (Number(val.uncollectedQuantity).toFixed(3) > Number(num1)) { + val.uncollectedQuantity = 0; + val.uncollectedQuantity2 = 0; + this.rescode = 400 + this.resmessage = '鏀惰揣鏁颁笉鑳藉ぇ浜庨噰璐�绘暟' + val.quantity + '鍑忓凡鏀惰揣鏁�' + val + .goodsQuantity; + this.showBtn = 0 + this.$refs.resmodal.show = true + } + // if (val.uncollectedQuantity && val.uncollectedQuantity >= 0) { + // val.edit = true + // this.$forceUpdate() + // } + val.uncollectedQuantity2 = Number(val.uncollectedQuantity*val.translateRate).toFixed(3); + }, + //鏀瑰彉鏀惰揣鏁伴噺 + changeNum2(val) { + val.cardNum = false + if (val.uncollectedQuantity2) { + val.uncollectedQuantity = Number(val.uncollectedQuantity2/val.translateRate).toFixed(3); + + let num1 = Number(Number(val.quantity) - Number(val.goodsQuantity)).toFixed( + 3) //蹇呴』淇濈暀3浣嶅皬鏁� -鍚﹀垯浼氶�犳垚鍓╀綑鐗╂枡鏄皬鏁扮殑鏃跺��,鏃犳硶鏀惰揣 + if (Number(val.uncollectedQuantity).toFixed(3) > Number(num1)) { + val.uncollectedQuantity = 0; + val.uncollectedQuantity2 = 0; + this.rescode = 400 + this.resmessage = '鏀惰揣鏁颁笉鑳藉ぇ浜庨噰璐�绘暟' + val.quantity + '鍑忓凡鏀惰揣鏁�' + val + .goodsQuantity; + this.showBtn = 0 + this.$refs.resmodal.show = true + } + + } + }, + + changeNumIn(val, valParent) { + if (val.uncollectedQuantity === '' || val.uncollectedQuantity < 0) { + this.rescode = 400 + this.resmessage = '鏀惰揣鏁伴噺涓嶈兘涓虹┖' + this.showBtn = 0 + this.$refs.resmodal.show = true + } + val.uncollectedQuantity = Number(val.uncollectedQuantity.toString().match(/^\d+(?:\.\d{0,3})?/)) //淇濈暀2浣嶅皬鏁� + if (val.uncollectedQuantity > val.quantity) { + val.uncollectedQuantity = 0; + this.rescode = 400 + this.resmessage = '涓嶈兘澶т簬缂烘枡鏁�' + this.showBtn = 0 + this.$refs.resmodal.show = true + } + if (val.uncollectedQuantity > valParent.uncollectedQuantity) { + val.uncollectedQuantity = 0; + this.rescode = 400 + this.resmessage = '涓嶈兘澶т簬鏀惰揣鏁�' + this.showBtn = 0 + this.$refs.resmodal.show = true + } + }, + upload() { + this.fileList = [] + uni.chooseImage({ + sourceType: ["camera", "album"], + sizeType: "original", //閫夋嫨鍘熷浘 + count: 1, + success: (res) => { + res.tempFilePaths.forEach((item, index) => { + uni.showLoading({ + title: '涓婁紶涓�...' + }) + translateapp(item, 80, imgUrl => { + let fileData = [{ uri: imgUrl }]; + uni.uploadFile({ + url: this.action, + files: fileData,//blob: + fileType: 'image', + success: (res) => { + uni.hideLoading(); + const resJson = JSON.parse(res.data) + if (resJson.code == 200) { + var jsonImg = resJson.result; + if (jsonImg == null || jsonImg.url == null || jsonImg.url == '') { + this.image = '' + this.fileList = [] + this.$u.toast('鍥剧墖涓婁紶鏈嶅姟鍣ㄥけ璐�') + return + } + this.fileList.push(jsonImg.url); + this.fileListImgSrc.push({ + 'resSrc':jsonImg.url, + bendiSrc: item, + }) + } else { + this.$u.toast('鍥剧墖涓婁紶澶辫触') + this.fileList = [] + this.image = '' + } + } + }) + }) + }); + } + }) + }, + // 鍒犻櫎鍥剧墖 + delimage(filepath,index) { + if (!filepath) { + return + } + deletePicture({ + 'id': filepath + }).then(res => { + if (res.code == 200) { + this.fileListImgSrc.splice(index,1) + this.$u.toast('绉婚櫎鍥剧墖鎴愬姛') + } else { + this.rescode = 400 + this.resmessage = `鍒犻櫎鍥剧墖澶辫触` + this.$refs.resmodal.show = true + } + }) + }, + //棰勮鍥剧墖 + imgClick(index) { + var urlsArr = []; + this.fileListImgSrc.forEach(item=>{ + urlsArr.push(item.resSrc); + }) + uni.previewImage({ + urls: urlsArr, + current: urlsArr[index] + }); + }, + //鐩戝惉鍘熺敓杩斿洖閿� + onBackPress(e) { + this.delimage() + }, + //涓嬩竴姝� + next() { + if (this.warehouse.asnNo == '') { + uni.showToast({ + title: '璇疯緭鍏SN鍗曞彿锛�', + icon: 'none' + }) + return + } + + // // isBatchMge涓簍rue: 鎵规绠$悊鐨勭墿鏂� 蹇呴』杈撳叆 + // let arrMge = this.singlist.filter((v)=>(v.isBatchMge == 1 && v.barNo==''|| v.isBatchMge == 1 && v.barNo==null)).filter((v2)=>(v2.uncollectedQuantity>0)) + // if(arrMge.length>0){ + // uni.showToast({ + // title: `${arrMge[0].wareMaterialCode}璇峰~鍐欑┖鐨勬壒娆, + // icon:'none' + // }) + // return + // } + this.lastlist = this.singlist.filter(v => v.uncollectedQuantity > 0); + + + //sap浣嶇疆蹇呭~ + // let arrMgeSap = this.lastlist.filter((v)=>( v.sap_Location == false || v.sap_Location == null)) + // if(arrMgeSap.length>0){ + // uni.showToast({ + // title: `${arrMgeSap[0].wareMaterialCode}璇峰~鍐欑┖鐨凷ap浣嶇疆`, + // icon:'none' + // }) + // return + // } + + this.lacklist = this.singlist.reduce((curr, item) => { + if (item.deliveryQuantity - item.uncollectedQuantity - item.goodsQuantity > 0) { + curr.push(item) + } + return curr; + }, []) + + let params2 = [] + + this.lastlist.forEach((item, index) => { + params2.push({ + ...item + // id: item.id, + // wareMaterialCode: item.wareMaterialCode, + // uncollectedQuantity: item.uncollectedQuantity, + // purchaseNo: this.warehouse.PurchaseNo, + // asnNo: this.warehouse.asnNo,//鍒拌揣鍗曞彿 + // batchNo: item.barNo, + // isCheck: item.isCheck, + // isBatchMge: item.isBatchMge, + // ebelp: item.ebelp, + // sap_Location: item.sap_Location, //sap浣嶇疆 + }) + }) + + // 宸叉敹璐ф暟 + this.QuantityTotal = this.singlist.reduce((prev, next) => { + let num = Number(prev) + Number(next.deliveryQuantity) + return Number(num).toFixed(3) + }, 0) + + this.collectedTotal = this.singlist.reduce((prev, next) => { + let num = Number(prev) + Number(next.goodsQuantity); + return Number(num).toFixed(3) + }, 0) + this.uncollectedTotal = this.singlist.reduce((prev, next) => { + let num = Number(prev) + Number(next.uncollectedQuantity) + return Number(num).toFixed(3) + }, 0) + this.lackTotal = this.singlist.reduce((prev, next) => { + let num = Number(prev) + Number(next.deliveryQuantity) - Number(next + .uncollectedQuantity) - Number(next.goodsQuantity) + return Number(num).toFixed(3) + }, 0) + this.lists[0].name = `鏀惰揣(${this.lastlist.length})` + //this.lists[1].name = `缂烘枡(${this.lacklist.length})` + this.lists[1].name = `` + if (this.uncollectedTotal <= 0) { + uni.showToast({ + title: '鏀惰揣鎬绘暟澶т簬0', + icon: 'none', + duration: 2000 + }) + return + } + + this.renameFocus = false; + + + // addShouhuoJiaoYan(params2).then((res) => { + // if (res.code == 200) { + // if (res.data) { + // uni.showModal({ + // title: '鎻愮ず', + // content: `${res.data}锛岀‘璁や笅涓�姝ワ紵`, + // showCancel: true, + // cancelColor: '#333333', + // success: (res => { + // if (res.confirm) { + // this.renameFocus = false; + // } else if (res.cancel) { + // } + // }) + // }); + // } else { + // this.renameFocus = false + // } + // } + // }) + + }, + //纭鏀惰揣 + submit() { + if (this.uncollectedTotal <= 0) { + uni.showToast({ + title: '鏀惰揣鎬绘暟澶т簬0', + icon: 'none', + duration: 2000 + }) + return + } + let params = [] + //----------鍥剧墖鍦板潃--------------- + let idImg = [] + if (this.fileListImgSrc && this.fileListImgSrc.length > 0) { + this.fileListImgSrc.forEach((item)=>{ + idImg.push(item.resSrc) + }) + } + this.lastlist.forEach((item, index) => { + params.push({ + PDAReceivingActionType: 2, //鍚庣粦瀹氭敹璐� + OrderAsnDetailsId: item.id, //ASN鍗曟槑缁咺D + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + id: item.id, + ...item, + ImageIds: idImg.join(",") //鍥剧墖鍦板潃 + }) + }) + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭鏀惰揣锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + addDelivery(params).then((res) => { + this.rescode = res.code + this.resmessage = res.message || '鏀惰揣鎴愬姛' + this.$refs.resmodal.show = true + if (res.code == 200) { + this.showBtn = 0 + this.renameFocus = true + this.singlist = [] + this.warehouse.asnNo = '' + this.fileList = []; + this.fileListImgSrc = [] + } else { + this.showBtn = 0 + } + }) + } else if (res.cancel) { + } + }) + }); + }, + //娓呮閫変腑 + rest(parm) { + this.warehouse.asnNo = ''; + this.warehouse.WareMaterialCode = ''; + this.autoFoucs = true + this.singlist = []; + this.materialCode = ''; + this.delimage() + }, + reset(back) { + if (back) { + this.autoFoucs = false + } + this.renameFocus = true + }, + //鎵撳嵃 + onPrint() { + let _this = this + if (!uni.getStorageSync("deviceId")) { + uni.showToast({ + title: '璇疯繛鎺ユ墦鍗版満', + icon: 'error', + duration: 2000 + }) + return + } + this.writeBLECharacteristicValue() + }, + beforeDestroy() { + // 閿�姣佸畾鏃跺櫒 + if (this.timer) { + clearTimeout(this.timer) + this.timer = null + } + + }, + //绫诲瀷鑱氱劍浜嬩欢 + containerFocus2() { + uni.hideKeyboard() + this.modalshow2 = true + }, + getVehicleType2() { + getSapSelect().then((res) => { + if (res.code == 200) { + const dataT = res.data + if (dataT && dataT.length == 0) { + this.wolist2 = [] + return + } + let dataDst = [] + dataT.forEach(item => { + dataDst.push({ + 'text': item, + 'id': item + }) + }) + this.wolist2 = dataDst; + this.sapLocate = dataDst[0].id + } + }) + }, + //绫诲瀷閫夋嫨 + confirm2(index) { + // this.warehouse.containerCode = this.wolist2[index].text; + // this.warehouse.containerCode = this.wolist2[index].id; + console.log(this.wolist2[index].text) + this.sapLocate = this.wolist2[index].text + this.singlist.forEach((item) => { + item.sap_Location = this.wolist2[index].text + }) + console.log(this.singlist) + this.$forceUpdate() + + }, + goYuKu() { + this.$refs.resmodal.show = false + uni.navigateTo({ + url: '/pages/takeMaterial/orderpiece/poYueku?po=' + this.warehouse.PurchaseNo + }) + // uni.showModal({ + // title: '鎻愮ず', + // content: '鏄惁纭瓒婂簱锛�', + // showCancel: true, + // cancelColor: '#333333', + // success: (res => { + // if (res.confirm) { + // uni.navigateTo({ + // url: '/pages/crossDock/crossDock?ids='+this.arrIds + // }) + // } else if (res.cancel) { + // } + // }) + // }); + }, + // 娣诲姞鎵规 + addBath(index) { + this.itemPcAddIndex = index; + this.detailshowPc = true + }, + // 纭 娣诲姞鎵规 + submitPc() { + if (!this.addBatch) { + uni.showToast({ + title: '鎵规鍙蜂笉鑳戒负绌猴紒', + icon: 'none', + duration: 2000 + }) + return + } + let itemNow = JSON.parse(JSON.stringify(this.singlist[this.itemPcAddIndex])); + itemNow.barNo = this.addBatch; + itemNow.uncollectedQuantity = 1; + this.singlist.splice(this.itemPcAddIndex, 0, itemNow); + this.detailshowPc = false; + } + } + } +</script> + +<style lang="scss"> + .title-wrap { + // margin-bottom: 15rpx; + // border-bottom: 1px solid #f18202; + // border-top: 1px solid #f18202; + // padding: 3px; + } + + .bg_item { + background: #FFEBCD !important; + } + + .qhd_wp { + padding: 0 20rpx; + border-top: 1px solid #f18202; + } + + .detail_btn { + text-align: right; + padding: 10px; + } +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/poYueku.vue b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/poYueku.vue new file mode 100644 index 0000000..f74ac0e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/orderpiece/poYueku.vue @@ -0,0 +1,295 @@ + +<template> + <view class="overflow" style="padding-bottom:100px"> + <!-- 椤堕儴 --> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"></block> + <block slot="content">瓒婂簱-PO</block> + </cu-custom> + <!-- 閬尅灞� --> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <!-- 鏀惰揣 --> + <view class="" v-if="renameFocus"> + <view style="margin-bottom: 180rpx;" v-show="singlist.length > 0"> + <checkbox-group @change="checkboxChange"> + <view v-for="(item, eindex) in singlist" v-if="item.isYueku=='鏄�'" :key="eindex" class="title-wrap"> + <view class=" fontSize32rpx background_fff" :class="item.isYueku=='鏄�'? 'bg_item' : '' " style="width: 100vw;"> + <u-row> + <u-col span="12"> + <label class="flex align-center"> + <checkbox v-show="item.isYueku=='鏄�'" :value="item.key" :checked="item.checked"/> + <text class="flex justify-center align-center circkle06">{{ eindex + 1 }}</text> + <view class="color_f18202 padding_left10rpx" style="flex: 1;word-break: break-all;"> + {{item.wareMaterialCode}} -- 鏄惁妫�楠�: <text style="color: #000;font-weight: bold;">{{item.isCheck ? '鏄�' : '鍚�'}}</text> + </view> + </label> + </u-col> + </u-row> + + <u-row> + <u-col span="6"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + 琛屽彿锛歿{item.ebelp}} + </view> + </u-col> + <u-col span="6"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + SAP锛歿{item.sap_Location}} + </view> + </u-col> + </u-row> + + <u-row> + <u-col span="6"> + <view class="text06 color_18"> + *鏄惁鍙秺搴擄細{{item.isYueku}} + </view> + </u-col> + <u-col span="6"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + 閲囪喘鏁帮細{{item.deliveryQuantity}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="10"> + <view class="flex" style="padding: 5px 0 0px 10px;color: #808080;"> + 鎵规锛歿{ item.batchNo }} + </view> + </u-col> + </u-row> + <u-row> + + <u-col span="6"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + 鍗曚綅锛歿{item.unit}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="7"> + <view class="" style="padding: 5px 0 0px 10px;color: #808080;"> + </view> + </u-col> + </u-row> + </view> + </view> + </checkbox-group> + </view> + + <button-modal :empTytowerShow='true' cleaningTitle="杩斿洖" garmenTitle='瓒婂簱' @submit='goYuKu' @reset='rest' /> + </view> + </view> +</template> + +<script> + import ButtonModal from '../../../components/buttonModal.vue' + import ModalCode from '../../../components/ModalCode.vue' + import tkiBarcode from '@/components/tki-barcode/tki-barcode' + import bluet from '@/components/blue.vue' + import mixCheckbox from '@/mixins/checkboxYueKu.js' + export default { + mixins: [mixCheckbox], + data() { + return { + materialCode: '', //鐗╂枡缂栧彿 + renameFocus: true, + detailshow: false, + rescode: 0, + autoFoucs:true, + resmessage: "", + showBtn: 1, + current: 0, //婊戝潡榛樿鍊� + fileList: [], + lastlist: [], + overlist: [], //鏀惰揣鍒楄〃 + lacklist: [], //缂烘枡鍒楄〃 + image: '', //褰撳墠鏄剧ず鐨勫浘鐗囧湴鍧� + action: this.$myHOST + '/sysFileInfo/uploadImages', + singlist: [ + + ], //鐗╂枡璇︽儏 + lists: [{ + name: '鏀惰揣(0)' + }, { + name: '缂烘枡' + }], + list: [], + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + PurchaseNo: '', + WareMaterialCode:'',//鐗╂枡缂栫爜 + PageSize: 1000, + PageNo: 1 + }, + warehouseRules: { + PurchaseNo: [{ + required: true, + message: '鍗曞彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }, + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + operator: '', + QuantityTotal: 0, //閫佽揣鎬绘暟 + collectedTotal: 0, //宸叉敹璐ф暟 + uncollectedTotal: 0, //鏀惰揣鎬绘暟 + lackTotal: 0, //缂鸿揣鎬绘暟 + code: '', + addForm: { //鎵撳嵃璁板綍 + code: '', + name: '', + batchNo: '', + specificationModel: '' + }, + lotNo: '', + contLabel:1, //鎵撳嵃寮犳暟 + ermNum:'', + detailshow: false, + timer:null, + printflag:false, + sapLocate:'', + modalshow2: false, + wolist2: [], + }; + }, + components: { + ButtonModal, + ModalCode, + tkiBarcode, + bluet + }, + onLoad(option) { + if(option.po) { + this.warehouse.PurchaseNo = option.po + this.materialBlur() + } + }, + onReady() { + }, + mounted() { + }, + methods: { + + //鐗╂枡鏌ヨ + materialBlur(param) { + if(this.warehouse.PurchaseNo==''){ + return + } + let arrRows = uni.getStorageSync('yuKuPoList') + + if (Array.isArray(arrRows) && arrRows.length >= 1) { + // 娴嬭瘯 + // res.data.rows[1].isYueku='鏄�' + arrRows.forEach(( item) => { + item.uncollectedQuantity = ''; + item.children = false; + item.SortingOrderDetailsList=[]; + item.purchaseNo=this.warehouse.PurchaseNo; + + // 瓒婂簱 + item.isBig = item.isYueku=='鏄�'?0:1; + item.key = item.wareMaterialCode; + if(item.isYueku == '鏄�'){ + this.arrIds.push(item.wareMaterialCode) + item.checked = true + }else{ + item.checked = false + } + + }) + + // 鎺掑簭 鍙互瓒婂簱鐨勭墿鏂欐帓涓婇潰 + arrRows.sort((a,b)=>{ + return a.isBig-b.isBig + }) + + let arr1 = arrRows.filter(item => item.isYueku=='鏄�') + this.singlist = arr1 + + if (this.singlist.length == 0) { + this.resmessage = '鏆傛棤鏁版嵁' + this.rescode = 400 + this.$refs.resmodal.show = true + } + } else { + this.resmessage = '鏆傛棤鏁版嵁' + this.rescode = 400 + this.$refs.resmodal.show = true + } + }, + + rest() { + uni.navigateTo({ + url: '/pages/takeMaterial/orderpiece/orderpiecePo?po='+ this.warehouse.PurchaseNo + }) + }, + reset(back) { + if(back){ + this.autoFoucs = false + } + this.renameFocus = true + }, + beforeDestroy() { + // 閿�姣佸畾鏃跺櫒 + if(this.timer){ + clearTimeout(this.timer) + this.timer = null + } + + }, + goYuKu(){ + if(this.arrIds.length<=0){ + return + } + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭瓒婂簱锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + uni.navigateTo({ + url: '/pages/crossDock/crossDock?ids='+this.arrIds + }) + } else if (res.cancel) { + } + }) + }); + }, + } + } +</script> + +<style lang="scss"> +.title-wrap{ + margin-bottom: 15rpx; + border-bottom: 1px solid #f18202; + border-top: 1px solid #f18202; + padding: 3px; +} +.bg_item { + background: #FFEBCD !important; +} +.qhd_wp{ + padding: 0 20rpx; + border-top: 1px solid #f18202; +} +.detail_btn{ + text-align: right; + padding: 10px; +} +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/return/return.vue b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/return/return.vue new file mode 100644 index 0000000..24c4903 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/return/return.vue @@ -0,0 +1,463 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">閫�璐т欢鏀惰揣</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <view class="text-bold width fontSize32rpx" style="padding: 10rpx 10rpx;background-color: #d6d6d6;"> + <view class="flex justify-between align-center"> + <text class="width23 padding10">鏀惰揣鍗曞彿</text> + <text>{{putCode}}</text> + </view> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class="" v-if="renameFocus"> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="鐗╂枡缂栧彿:" prop="warehouseCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.warehouseCode" @focus="focu=true" placeholder="璇峰綍鍏ユ垨鎵爜" + @blur="getMaterialDetails" class="width padding_left25rpx" + style="font-weight: bolder;margin-left: 30rpx;"> + </input> + <u-icon v-if="warehouse.warehouseCode && focu" @click="warehouse.warehouseCode=''" + name="close-circle-fill" color="#848484"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <scroll-view scroll-y="true"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpress" @open="open" @close='close' :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :key="eindex+'singlist'" :class="item.cardNum?'bd-ffe6c9':item.edit?'clickactive':''" + class="fontSize32rpx width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + {{item.code}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 鍚嶇О锛歿{item.name}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <input disabled="" class="border_bottom_f18202 width45 fontSize32rpx text-left" + style="margin:10rpx 0 10rpx 45rpx;" v-model="item.unit" placeholder="鍗曚綅" + /> + </u-col> + <u-col span="5"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.quantity" type="number" @focus='dc(item)' + @blur="changeNum(item)" placeholder="璇疯緭鍏ユ敹璐ф暟閲�"/> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </scroll-view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop"> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.code}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡澶х被</text> + <text>{{materlist.category}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡灏忕被</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏉$爜</text> + <text>{{materlist.barCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + <!-- <view class="line flex justify-between"> + <text class="text-gray">閫佽揣鏁伴噺</text> + <text>{{materlist.unit}}</text> + </view> --> + </view> + <view class="margin_top140rpx"> + <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='print' @reset='rest' /> + </view> + </u-popup> + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='涓嬩竴姝�' @submit='next' @reset='rest' /> + </view> + <view class="" v-else> + <scroll-view scroll-y="true" style="height: 440rpx;"> + <!-- <view class="margin_top10rpx overflow_auto" style="height:calc(100% - 20rpx)"> --> + <view v-for="(item,eindex) in arr" :key="eindex" style="background-color: #fff;"> + <u-row class="padding15"> + <u-col span="6" class="flex"> + <view class="flex justify-center align-center " + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="padding_left10rpx color_f18202"> + {{item.code}} + </view> + </u-col> + <u-col span="6" class="color_f18202" style="text-align: right;"> + 鏀惰揣鏁伴噺锛歿{item.quantity}} + </u-col> + </u-row> + <u-row class="padding15"> + <u-col span="6" class="flex"> + <view class="padding_left45rpx"> + 鍚嶇О锛歿{item.name}} + </view> + </u-col> + <u-col span="6" class="" style="text-align: right;"> + 鍗曚綅锛歿{item.unit}} + </u-col> + </u-row> + </view> + <!-- </view> --> + </scroll-view> + <view class="fontSize32rpx background_fff padding15"> + <u-row> + <u-col span="6" class="text-gray"> + 鏈鏀惰揣鎬绘暟閲� + </u-col> + <u-col span="6" class="font_weight_bold color_f18202" style="text-align: right;"> + {{QuantityTotal}} + </u-col> + </u-row> + </view> + <view + class="width fixed bottom140 margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-upload :action="action" upload-text="閫佽揣鍗曠収鐗�" :file-list="fileList1" @on-success="successPic" + @on-remove="remove"> + </u-upload> + </view> + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='鏀惰揣瀹屾垚' @submit='submit' + @reset='reset' /> + </view> + + </view> + </view> +</template> + +<script> + import ButtonModal from '../../../components/buttonModal.vue' + import ModalCode from '../../../components/ModalCode.vue' + // import { + // getMaterial + // } from '../../../api/takeMaterial/order.js' + import { + getOrderNo, + getMaterialDetails + } from '../../../api/putIn/artificial.js' + import { + addConfirmReceipt + } from '../../../api/takeMaterial/order.js' + import { + getDate + } from '../../../utils/dateTime.js' + export default { + data() { + return { + renameFocus: true, + detailshow: false, + rescode: 0, + resmessage: "", + focu: false, + putCode: '', + fileList: [], + fileList1: [], + flag: true, + action: this.$myHOST + '/sysFileInfo/uploadImages', + singlist: [ + // { + // id: 0, + // deliverDate: 1, + // WareMaterialCode: 930112020, + // name: 3, + // describe: 4, + // Category: '闆朵欢', + // MaterialTypeId: '涓昏酱', + // MaterialTypeName: '姘村钩浠�', + // SpecificationModel: 'EM5BG 5X4P-16BK', + // Long: 9, + // Width: 10, + // High: 11, + // Weight: 12, + // PurchaseNo: 5530000622, + // BarCode: 920102, + // Quantity: 15, + // Company: 'EA', + // basicExpressInfoCode: 17, + // BasicExpressInfoName: 'xxxxx', + // DeliveryQuantity: 19, + // GoodsQuantity: 20, + // deliveryNo: 21, + // UncollectedQuantity: '' + // }, + ], //鐗╂枡璇︽儏 + arr: [], + materlist: {}, //鐗╂枡璇︽儏鏁版嵁 + warehouse: { + warehouseCode: '' + }, + warehouseRules: { + warehouseCode: [{ + required: true, + message: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }, + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc4b4b' + } + } + ], + operator: '', + QuantityTotal: '', //搴旀敹璐ф�绘暟 + Datetime: getDate(), + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + this.getOrderNo() + }, + methods: { + //涓婃灦鍗曞彿 + getOrderNo() { + getOrderNo().then((res) => { + if (res.code == 200) { + this.putCode = res.data + } else { + this.$refs.resmodal.show = true + } + }) + }, + //鐗╂枡鏌ヨ + getMaterialDetails() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focu = false + if (this.warehouse.warehouseCode !== '') { + let params = { + BarCode: this.warehouse.warehouseCode + } + getMaterialDetails(params).then((res) => { + if (res.code == 200) { + // this.singlist=res.data + res.data.forEach(item => { + this.singlist.push(item) + }) + let deWeightThree = (val) => { + let map = new Map() + for (let item of val) { + if (!map.has(item.code && item.barNo)) { + map.set(item.code && item.barNo, item) + } else { + uni.showModal({ + title: '鎻愮ず', + content: '璇峰嬁閲嶅鎵弿', + showCancel: false + }) + } + } + return [...map.values()] + } + this.singlist = deWeightThree(this.singlist) + } else { + this.resmessage = res.message + this.rescode = res.code + this.$refs.resmodal.show = true + } + }) + } + + }, 200) + } + }) + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + if (eindex == 1) { + this.singlist.splice(index, 1) + } else { + this.materlist = this.singlist[index] + this.detailshow = true + } + + }, + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + this.$forceUpdate() + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + //缂栬緫鐘舵�佹牱寮� + dc(e) { + e.cardNum = true + this.$forceUpdate() + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + val.cardNum = false + if (val.quantity && val.quantity > 0) { + val.edit = true + this.$forceUpdate() + } else { + val.edit = false + this.$forceUpdate() + } + + }, + successPic(data, index, lists, name) { + // console.log(data) + this.fileList.push(data.data) + }, + //鍒犻櫎鍥剧墖 + remove(index, lists, name) { + this.fileList.splice(index, 1) + }, + //纭 + next() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + this.arr = this.singlist.filter(item => item.edit) + if (this.arr.length == 0) { + uni.showModal({ + title: '鎻愮ず', + content: '鏈~鍐欑粍鐩樻暟閲�', + showCancel: false + }) + return + } + this.renameFocus = false + this.QuantityTotal = this.arr.reduce((prev, next) => { + return Number(prev) + Number(next.quantity) + }, 0) + } + }); + }, + submit() { + let criterionReceivingMaterions = [] + this.arr.forEach(item => { + criterionReceivingMaterions.push({ + wareMaterialCode: item.code, + quantity: item.quantity, + barCode: item.barCode + }) + }) + let params = { + createdTime: this.Datetime, + updatedTime: this.Datetime, + createdUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + createdUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + updatedUserId: JSON.parse(uni.getStorageSync('userInfo')).id, + updatedUserName: JSON.parse(uni.getStorageSync('userInfo')).name, + deliveryNo: this.putCode, + images: this.fileList.toString(), + type:'閫�璐�', + criterionReceivingMaterions + } + addConfirmReceipt(params).then((res) => { + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + if (res.code == 200) { + this.renameFocus = true + this.singlist = [] + this.getOrderNo() + this.warehouse.warehouseCode = '' + } + }) + }, + //娓呮閫変腑 + rest() { + this.singlist.forEach(item => { + item.quantity = '' + item.edit = false + }) + }, + reset() { + // this.fileList=[] + // this.fileList1=[] + } + } + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/takeMaterial.vue b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/takeMaterial.vue new file mode 100644 index 0000000..9191e0d --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/takeMaterial/takeMaterial.vue @@ -0,0 +1,70 @@ +<template> + <view class=""> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鏀惰揣绠$悊</block> + </cu-custom> + <scroll-view scroll-y="true" style="height: 100vh;"> + <view class="margin_top40rpx text_align_center" v-for="(item,index) in list" :key="index"> + <view class="little_card fontSize36rpx" @click="skip(item,index)" :class="active==index?'active':''"> + {{item.name}} + </view> + </view> + </scroll-view> + </view> +</template> + +<script> + export default { + data() { + return { + active: null, + list: [ + // { + // name: '鏀惰揣', + // pages: 'order' + // }, + { + name: '璁㈠崟浠舵敹璐�', + pages: 'orderpiece' + }, + // { + // name: '闈炶鍗曚欢(鏁寸)鏀惰揣', + // pages: 'noOrderAll' + // } + // { + // name: '闈炶鍗曚欢鏀惰揣', + // pages: 'noOrder' + // }, + // { + // name: '鏃т欢鏀惰揣', + // pages: 'former' + // }, { + // name: '閫�璐т欢鏀惰揣', + // pages: 'return' + // }, { + // name: '褰掕繕浠舵敹璐�', + // pages: 'give' + // } + ] + } + }, + methods: { + skip(item, index) { + this.active = index + if (item.pages) { + setTimeout(() => { + uni.navigateTo({ + url: `./${item.pages}/${item.pages}` + }) + }, 100) + } + } + } + } +</script> + +<style> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/unpack/plane/plane.vue b/LA24030_LuLiPackageLine_Pda/pages/unpack/plane/plane.vue new file mode 100644 index 0000000..b906533 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/unpack/plane/plane.vue @@ -0,0 +1,301 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鐗╂枡涓嬫灦</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="涓嬫灦鍗曞彿:" prop="Code" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.Code" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="focu=true" @confirm="query" + class="width padding_left25rpx" style="font-weight: bolder;margin-left: 15rpx;"> + </input> + <u-icon name="close-circle-fill" color="#848484" v-if="warehouse.Code && focu" + @click="warehouse.Code=''"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view v-if="singlist.length>0" :style="'height:calc(100vh - '+(CustomBar+155)+'px'"> + <view class="margin_top10rpx overflow_auto" style="height:calc(100% - 20rpx)"> + <scroll-view scroll-y="true" style="height: 60vh;"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpress" @open="open" :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :key="eindex+'singlist'" :class="item.edit?'clickactive':''" + class=" width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <view class="flex justify-between"> + <view + class="flex justify-center align-end height56rpx align-center padding5_10 fontSize32rpx"> + <view class="margin_right10rpx flex align-center justify-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 65rpx;height: 45rpx;"> + {{eindex+1}} + </view> + <text + class="text-gray width23 color_f18202">{{item.wareMaterialCode}}</text> + <text class=" width70"></text> + </view> + <view class=" align-end height56rpx padding5_0 fontSize32rpx color_f18202"> + <text class="">鏁伴噺锛�</text> + <text class="text_overflow text-bold ">{{item.quantity}}</text> + </view> + </view> + <view class="flex justify-between align-center + flex-wrap fontSize32rpx"> + <view class="width33 flex align-center"> + <view class=" text_align_center padding_left25rpx"> + <text class="text-gray">鍚嶇О锛�</text> + <text class="text_overflow text-bold ">{{item.wareMaterialName}}</text> + </view> + </view> + <view class=""> + <!-- 鏁伴噺 --> + <view class=" align-end height56rpx padding5_0"> + <text class=" padding_left30rpx">鍗曚綅锛�</text> + <text class="text_overflow text-bold ">{{item.unit}}</text> + </view> + </view> + </view> + </view> + </view> + </view> + </u-swipe-action> + </scroll-view> + </view> + <view + class="width flex justify-between align-center padding15 fontSize32rpx font_weight_bold fixed background_fff" + style="bottom: 140rpx;border-bottom: 1px solid #C8C9CC;" @tap="modalshow=true"> + <view class="background_fff"> + <view class="width"> + 涓嬫灦鍙o細 + </view> + </view> + <view class=" flex"> + <text v-if="loca" class="padding_right10rpx">{{loca}}</text> + <u-icon v-else name="arrow-down"></u-icon> + </view> + </view> + <u-select v-model="modalshow" :list="wolist" @confirm="confirm"></u-select> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.wareMaterialCode}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.wareMaterialName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡绫诲瀷</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏉$爜</text> + <text>{{materlist.barCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + </view> + </u-popup> + </view> + <button-modal :subShow='true' garmenTitle='纭涓嬫灦' @submit='submit' /> + + </view> +</template> + +<script> + import ButtonModal from '../../../components/buttonModal.vue' + import ModalCode from '../../../components/ModalCode.vue' + import { + query, + issue + } from '../../../api/unpack/plan.js' + export default { + data() { + return { + renameFocus: false, + modalshow: false, + rescode: 0, + resmessage: "", + detailshow: false, + operator: '', + loca: '', //涓嬫灦鍙� + focu: false, + wolist: [{ + value: 1, + label: 801 + }, + { + value: 1, + label: 802 + } + ], //涓嬫灦鍒楄〃 + singlist: [ + // { + // "warematerialCode": "string", + // "collectNo": "string", + // "purchaseNo": "string", + // "category": "string", + // "wareMaterialTypeName": "string", + // "specificationModel": "string", + // "long": "string", + // "width": "string", + // "high": "string", + // "weight": "string", + // "barCode": "string", + // "company": "string", + // "uncollectedQuantity": 0, + // "id": 0 + // } + ], //鐗╂枡璇︽儏 + options: [ + // { + // text: '鍒犻櫎', + // style: { + // backgroundColor: '#ff2323' + // } + // }, + { + text: '璇︽儏', + style: { + backgroundColor: '#35db00' + } + } + ], + materlist: [], + warehouse: { + Code: '' + }, + warehouseRules: { + Code: [{ + required: true, + message: '涓嬫灦鍗曞彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + // this.WarehousChangePort() + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //鏌ヨ鐗╂枡 + query(e) { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focu = false + query(this.warehouse.Code).then((res) => { + if (res.code == 200) { + this.singlist = res.data.rows[0].details + // this.singlist.forEach(item => { + // item.quantity = '' + // item.wareMaterialCode = item.warematerialCode + // }) + } else { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + } + }) + }, 200) + } + }) + }, + //璇︽儏 + longpress(index, eindex) { + // if (eindex == 0) { + // this.singlist.splice(index, 1) + // } else { + this.materlist = this.singlist[index] + // console.log(this.materlist) + this.detailshow = true + // } + + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + //纭疄涓嬫灦 + confirm(e) { + this.loca = e[0].label + }, + //纭 + submit() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + let params = { + gate: this.loca, + orderNo: this.warehouse.Code + } + issue(params).then((res) => { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + if (res.code == 200) { + this.singlist = [] + this.warehouse.Code = '' + } + }) + } + }) + } + }, + + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/unpack/unpack.vue b/LA24030_LuLiPackageLine_Pda/pages/unpack/unpack.vue new file mode 100644 index 0000000..3627a6e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/unpack/unpack.vue @@ -0,0 +1,52 @@ +<template> + <view class=""> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">涓嬫灦鎿嶄綔</block> + </cu-custom> + <scroll-view scroll-y="true" style="height: 100vh;"> + <view class="margin_top40rpx text_align_center" v-for="(item,index) in list" :key="index"> + <view class="little_card fontSize36rpx" @click="skip(item,index)" :class="active==index?'active':''"> + {{item.name}} + </view> + </view> + </scroll-view> + </view> +</template> + +<script> + export default { + data() { + return { + active: null, + list: [ + { + name: '鐗╂枡涓嬫灦', + pages: 'plane' + }, + // { + // name: '鐗╂枡涓嬫灦', + // pages: 'material' + // } + ] + } + }, + methods: { + skip(item, index) { + this.active = index + if (item.pages) { + setTimeout(() => { + uni.navigateTo({ + url: `./${item.pages}/${item.pages}` + }) + }, 100) + } + } + } + } +</script> + +<style> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/untie/checkAllMove.vue b/LA24030_LuLiPackageLine_Pda/pages/untie/checkAllMove.vue new file mode 100644 index 0000000..0f43746 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/untie/checkAllMove.vue @@ -0,0 +1,562 @@ +<template> + <view class="overflow" style="padding-bottom: 100px"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> </block> + <block slot="content">鍐荤粨/瑙e喕</block> + </cu-custom> + <!-- <view + class="flex justify-end align-center padding_right30rpx padding_top12rpx" + > + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{ operator }} </text> + </view> --> + <!-- form --> + <u-form labelPosition="left" label-width="180rpx" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx padding_right30rpx"> + <u-col span="12"> + <u-form-item label="鍐荤粨/瑙e喕:" prop="checkStatus" required + class="uFormItem"> + <u-input v-model="warehouse.checkStatusStr" placeholder="璇烽�夋嫨" type="select" @click="show = true" + style="font-weight: bolder; margin-left: 15rpx; font-size: 34rpx" + class="width padding_left30rpx"> + </u-input> + <u-select v-model="show" :list="checkStatuEnums" @confirm="handlerConfirm"></u-select> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item label="鍦版爣/搴撲綅:" prop="placeCode" class="uFormItem" + > + <u-input v-model="warehouse.placeCode" placeholder="璇峰綍鍏ユ垨鎵爜" + style="font-weight: bolder; margin-left: 15rpx; font-size: 34rpx" + class="width padding_left30rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" class="uFormItem" + > + <u-input v-model="warehouse.containerCode" placeholder="璇峰綍鍏ユ垨鎵爜" + style="font-weight: bolder; margin-left: 15rpx; font-size: 34rpx" + class="width padding_left30rpx"> + </u-input> + </u-form-item> + </u-col> + + </u-row> + + + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + + <u-col span="12"> + <u-form-item label="鐗╂枡璺熻釜鐮�:" prop="snCode" label-width="180rpx" class="uFormItem"> + <u-input v-model="warehouse.snCode" ref="materialRef" placeholder="璇锋壂鐮佸綍鍏�" + style="font-weight: bolder; margin-left: 15rpx" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + + + <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff"> + <u-col span="12"> + <u-form-item label="寮傚父鍘熷洜:" prop="reason" class="uFormItem"> + <u-input @focus="warehouse.reason = ''" v-model.trim="warehouse.reason" placeholder="璇峰~鍐欏紓甯稿師鍥�" + style="font-weight: bolder; margin-left: 15rpx" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + + </u-form> + <!-- 鍒楄〃 --> + <view> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + :options="options" @click="longpress" @open="open" @close="close" style="margin-bottom: 8rpx"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :class="item.checked ? 'bg_item' : ''" + class="fontSize32rpx width margin_auto background_fff padding10 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex align-center"> + <view> + <u-checkbox v-model="item.checked" size="28px"></u-checkbox> + </view> + <view class="flex justify-center align-center" style=" + background-color: #f18202; + color: #fff; + border-radius: 50vh; + width: 20px; + height: 20px; + "> + {{ eindex + 1 }} + </view> + <view class="color_f18202 padding_left10rpx"> + 鐗╂枡缂栧彿锛歿{ item.materialCode }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="8"> + <view class="" style="padding: 10rpx 0 10rpx 10rpx; color: #808080"> + 鎵规锛歿{ item.batchNo }} + </view> + </u-col> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 10rpx; color: #808080"> + 鏁伴噺锛歿{ item.quantity }} + </view> + </u-col> + </u-row> + + <u-row> + <u-col span="4"> 搴撲綅锛歿{ item.containerCode }} </u-col> + <u-col span="5"> SAP浣嶇疆锛歿{ item.sap_Location }} </u-col> + <u-col span="3"> + <view class="" style="padding: 10rpx 0 10rpx 10rpx; color: #808080"> + <u-input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.unBindQuantity" type="number" @blur="changeNum(item)" + placeholder="璇疯緭鍏ョЩ搴撴暟閲�"></u-input> + </view> + </u-col> + </u-row> + + <u-row> + <u-col span="12"> 妫�楠岀姸鎬�: {{ item.checkStatusName }} </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </view> + <modal-code :rescode="rescode" :resmessage="resmessage" ref="resmodal" /> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow = false" mode="bottom"> + <!-- <view class="pop "> --> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{ materlist.materialCode }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{ materlist.materialName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text>{{ materlist.batchNo }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">PO</text> + <text>{{ materlist.purchaseNo }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">琛屽彿</text> + <text>{{ materlist.lineNumber }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">渚涘簲鍟�</text> + <text>{{ materlist.supplierNo }}{{ materlist.supplierName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏁伴噺</text> + <text>{{ materlist.unBindQuantity }}</text> + </view> + <!-- </view> --> + <view class="margin_top140rpx"> + <!-- <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='init' @reset='rest' /> --> + + <button-modal :cleaningShow="true" allTitle="钃濈墮鎵撳嵃" cleaningTitle="鏂戦┈鎵撳嵃" @allsubmit="init(1)" + @submit="init(2)" /> + </view> + </u-popup> + <!-- 搴曢儴纭畾鎸夐挳 --> + <button-modal :empTytowerShow="true" cleaningTitle="杩斿洖" garmenTitle="纭" @submit="submit" @reset="rest" /> + </view> +</template> +<script> +import { + getCheckAllMaterial, + inventoryFrozen, + inventoryUnFrozen, +} from "@/api/putIn/untie.js"; +import BluePrint from "@/pages/print/bluePrint.js"; +import ButtonModal from "../../components/buttonModal.vue"; +import ModalCode from "../../components/ModalCode.vue"; +import { getAttrValue } from "@/utils/tool.js"; +import { addPrintRecord } from "../../api/print.js"; +import printComp from "@/mixins/printLabelSingle.js"; +import printBanma from "@/mixins/printBanma.js"; + +export default { + mixins: [printComp, printBanma], + data() { + return { + operator: "", + warehouse: { + containerCode: "", + materialCode: "", + targetContainerCode: "", + isUseForMove: true, //琛ㄧず鏄� 绉诲簱 銆怑ditby shaocx,2023-05-14銆� + IsCheckAll: true, + checkStatusStr: "", + }, + checkStatus: "", + singlist: [], //璇︽儏鍒楄〃 + rescode: 0, + resmessage: "", + options: [ + { + text: "鎵撳嵃", + style: { + backgroundColor: "#fc9f35", + }, + }, + ], + detailshow: false, + materlist: {}, + checkStatuEnums: [], + show: false, + materialSlip: "", + headerTxt: "", + }; + }, + components: { + ButtonModal, + ModalCode, + }, + onLoad() { + this.operator = JSON.parse(uni.getStorageSync("userInfo")).name; + }, + created() { + this.checkStatuEnums = [ + { + value: "1", + label: "鍐荤粨", + }, + { + value: "2", + label: "瑙e喕", + }, + ]; + }, + methods: { + //鐗╂枡鐘舵�侀�夋嫨 + handlerConfirm(e) { + console.log(e); + this.warehouse.checkStatusStr = e[0].label; + this.checkStatus = e[0].value; + }, + //瑙f瀽鐗╂枡鐮� + analysisMaterialCode() { + // if(this.warehouse.containerCode == '') { + // this.rescode = 400 + // this.resmessage = `璇峰厛褰曞叆褰撳墠搴撲綅` + // this.$refs.resmodal.show = true + // return + // } + ////debugger + if (!this.warehouse.materialCode_Code) { + // uni.showModal({ + // title: '鎻愮ず', + // content: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + // showCancel: false + // }) + this.warehouse.materialCode = ""; + return; + } + if (this.warehouse.materialCode_Code.length > 50) { + this.warehouse.materialCode = getAttrValue( + this.warehouse.materialCode_Code, + "PARTSNUMBER" + ); + //璇锋眰鍚庡彴 + this.containerBlur(); + } + }, + //鍥炲簱 + rest() { + uni.navigateTo({ + //url:`/pages/sort/return?containerCode=${this.warehouse.containerCode}` + url: `/pages/index/index`, + }); + }, + //鑾峰彇print date print time + getCurrentDate() { + let date = new Date(); + let year = date.getFullYear(); //骞� + let month = date.getMonth() + 1; //鏈� + month = month >= 10 ? month : "0" + month; + let day = date.getDate(); //鏃� + day = day >= 10 ? day : "0" + day; + let hour = date.getHours(); //鏃� + hour = hour >= 10 ? hour : "0" + hour; + let min = date.getMinutes(); //鍒� + min = min >= 10 ? min : "0" + min; + let second = date.getSeconds(); //绉� + second = second >= 10 ? second : "0" + second; + return { + date: `${day}.${month}.${year}`, + time: `${hour}:${min}:${second}`, + formate: `${year}/${month}/${day}`, + }; + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }); + }, + close(index) { + this.singlist[index].show = false; + }, + //鐗╂枡璇︽儏 + longpress(index, eindex) { + this.materlist = this.singlist[index]; + this.detailshow = true; + }, + //鏍囩閲嶆柊鎵撳嵃 + init(param) { + const arr = ["materialCode", "unBindQuantity"]; + const arrzw = ["鐗╂枡缂栧彿", "鏈涓嬫灦鏁伴噺"]; + let isAllow = ""; + Object.keys(this.materlist).forEach((item) => { + if (arr.includes(item)) { + if (!this.materlist[item]) { + isAllow = arr.indexOf(item); + // this.rescode = 400 + // this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.resmessage = `${item}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.$refs.resmodal.show = true + return; + } + } + }); + if (isAllow != "") { + this.detailshow = false; + this.rescode = 400; + this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭; + this.$refs.resmodal.show = true; + return; + } + if ( + this.materlist.unBindQuantity <= 0 || + this.materlist.unBindQuantity > this.materlist.quantity + ) { + this.detailshow = false; + this.rescode = 400; + this.resmessage = `鏁伴噺涓嶇鍚堣鑼冿紝涓嶈兘缁х画鎵撳嵃`; + this.$refs.resmodal.show = true; + return; + } + + this.materlist.quantityLable = this.materlist.unBindQuantity; // 鎵撳嵃鏍囪创鏁伴噺 + + if (param == 1) { + this.printComp("", "PO"); + } else { + this.printBanma(); + } + }, + materialBlur() { + if (this.warehouse.materialCode == "") { + return; + } + if (this.warehouse.materialCode.length < 50) { + return; + } + // 閿欒鐮佹彁绀� + let str = this.warehouse.materialCode.replace(/\s/g, ""); + if (str.indexOf("LOTNO") == -1 || str.indexOf("PARTSNUMBER") == -1) { + uni.showToast({ + title: "浜岀淮鐮佹牸寮忛敊璇�", + icon: "none", + duration: 2000, + }); + return; + } + // //debugger + //鑾峰彇鎵规 + let lotNo = getAttrValue(this.warehouse.materialCode, "LOTNO"); + //鐗╂枡缂栧彿 + this.warehouse.materialCode = getAttrValue( + this.warehouse.materialCode, + "PARTSNUMBER" + ); + // SAP --- && item.sap_Location == SAP + let SAP = getAttrValue(this.warehouse.materialCode, "SAP"); + //鍒ゆ柇褰撳墠鐗╂枡鏄惁鍦ㄧ洏鐐瑰垪琛ㄤ腑 + const index = this.singlist.findIndex( + (item) => + item.materialCode == this.warehouse.materialCode && + item.batchNo == lotNo + ); + if (index > -1) { + this.singlist.unshift(...this.singlist.splice(index, 1)); + } else { + this.rescode = 400; + this.resmessage = "姝ゆ壒娆$殑鐗╂枡涓嶅湪鍒楄〃涓�"; + this.$refs.resmodal.show = true; + } + }, + containerBlur() { + if (this.warehouse.materialCode == "" || this.singlist.length > 0) { + return; + } + ////debugger + getCheckAllMaterial(this.warehouse).then((res) => { + if (res.data == null || res.data.length == 0) { + this.rescode = 400; + this.resmessage = + "璇ョ墿鏂�" + this.warehouse.materialCode + "娌℃湁鎵惧埌搴撳瓨"; + this.$refs.resmodal.show = true; + return; + } + //缁欐墍鏈夌殑鏉愭枡涓�涓湭閫変腑鐨勭姸鎬� + res.data.map((item) => { + (item.checked = false), (item.unBindQuantity = ""); + item.IsChange = true; + item.CheckStatus = ""; + }); + this.singlist = res.data; + }); + }, + //瑙g粦鏁伴噺澶辩劍浜嬩欢 + changeNum(option) { + // if(option.unBindQuantity > 0) { + // option.unBindQuantity = Number(option.unBindQuantity.toString().match(/^\d+(?:\.\d{0,2})?/)) // 淇濈暀涓や綅灏忔暟 + // } + + //鍒ゆ柇鏄惁鍕鹃�夛紝濡傛灉鍕鹃�変簡锛屽氨瑕佸鏁伴噺鏍¢獙 + if (!option.checked) { + return; + } + if (option.unBindQuantity == "") { + this.rescode = 400; + this.resmessage = "绉诲簱鏁伴噺涓嶈兘涓虹┖"; + this.$refs.resmodal.show = true; + } + + if (option.unBindQuantity <= 0) { + this.rescode = 400; + this.resmessage = "绉诲簱鏁伴噺蹇呴』澶т簬0"; + this.$refs.resmodal.show = true; + } + + if (option.unBindQuantity > option.quantity) { + this.rescode = 400; + this.resmessage = "绉诲簱鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺"; + this.$refs.resmodal.show = true; + } + }, + resetForm() { + this.warehouse.placeCode = ""; + this.warehouse.containerCode = ""; + this.warehouse.snCode = ""; + this.warehouse.reason ="" + }, + //纭瑙g粦 + submit() { + var count = 0; + if (this.warehouse.placeCode) { + count++; + } + if (this.warehouse.containerCode) { + count++; + } + if (this.warehouse.snCode) { + count++; + } + if (count != 1) { + this.rescode = 400; + this.resmessage = "鍦版爣/搴撲綅,瀹瑰櫒缂栧彿,璺熻釜鐮佸彧鑳借緭鍏ヤ竴椤癸紒"; + this.$refs.resmodal.show = true; + return; + } + if (!this.warehouse.checkStatusStr) { + this.rescode = 400; + this.resmessage = "璇烽�夋嫨鍐荤粨/瑙e喕锛�"; + this.$refs.resmodal.show = true; + return; + } + if(!this.warehouse.reason){ + this.rescode = 400; + this.resmessage = "璇峰~鍐欏紓甯稿師鍥狅紒"; + this.$refs.resmodal.show = true; + return; + } + var str = ""; + const params = { + placeCode: this.warehouse.placeCode, + containerCode: this.warehouse.containerCode, + snCode: this.warehouse.snCode, + reason: this.warehouse.reason + }; + + // 鍐荤粨 + if (this.warehouse.checkStatusStr == '鍐荤粨') { + str = "鏄惁纭鍐荤粨锛�"; + } + + // 瑙e喕 + if (this.warehouse.checkStatusStr == '瑙e喕') { + str = "鏄惁纭瑙e喕锛�"; + } + uni.showModal({ + title: "鎻愮ず", + content: str, + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + // 鍐荤粨 + if (this.warehouse.checkStatusStr == '鍐荤粨') { + inventoryFrozen(params).then((res) => { + this.resmessage = "鍐荤粨鎴愬姛"; + this.rescode = 200; + this.$refs.resmodal.show = true; + this.resetForm(); + }); + } + // 瑙e喕 + if (this.warehouse.checkStatusStr == '瑙e喕') { + inventoryUnFrozen(params).then((res) => { + this.resmessage = "瑙e喕鎴愬姛"; + this.rescode = 200; + this.$refs.resmodal.show = true; + this.resetForm(); + }); + } + } + }, + }); + }, + }, +}; +</script> +<style lang="scss"> +.content { + height: 500rpx; + overflow-y: scroll; + width: 100%; + padding: 15rpx; + box-sizing: border-box; + + .content-item { + padding: 15rpx; + background-color: #fff; + margin-bottom: 15rpx; + border-radius: 8rpx; + font-size: 16px; + } +} + + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/untie/localBind.vue b/LA24030_LuLiPackageLine_Pda/pages/untie/localBind.vue new file mode 100644 index 0000000..786c9aa --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/untie/localBind.vue @@ -0,0 +1,322 @@ +<template> + <view class="overflow" style="padding-bottom: 100px"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> </block> + <block slot="content">搴撲綅缁戝畾</block> + </cu-custom> + <u-form labelPosition="left" label-width="180rpx" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" class="uFormItem" required> + <u-input v-model="warehouse.containerCode" placeholder="璇峰綍鍏ユ垨鎵爜" @confirm="containerBlur" + style="font-weight: bolder; margin-left: 15rpx; font-size: 34rpx" + class="width padding_left30rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item label="搴撲綅缂栧彿:" prop="placeCode" class="uFormItem" required> + <u-input v-model="warehouse.placeCode" placeholder="璇峰綍鍏ユ垨鎵爜" + style="font-weight: bolder; margin-left: 15rpx; font-size: 34rpx" + class="width padding_left30rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <!-- 鍒楄〃 --> + <view> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + :options="options" @click="longpress" @open="open" @close="close" style="margin-bottom: 8rpx"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :class="item.checked ? 'bg_item' : ''" + class="fontSize32rpx width margin_auto background_fff padding10 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex align-center"> + <view> + <!-- <u-checkbox v-model="item.checked" size="28px"></u-checkbox> --> + </view> + <view class="flex justify-center align-center" style=" + background-color: #f18202; + color: #fff; + border-radius: 50vh; + width: 20px; + height: 20px; + "> + {{ eindex + 1 }} + </view> + <view class="color_f18202 padding_left10rpx"> + 鐗╂枡缂栧彿锛歿{ item.materialCode }}-{{ item.materialName }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="8"> + <view class="" style="padding: 10rpx 0 10rpx 10rpx; color: #808080"> + 瀹瑰櫒缂栧彿锛歿{ item.containerCode }} + </view> + </u-col> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 10rpx; color: #808080"> + 鏁伴噺锛歿{ item.quantity }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="" style="padding: 10rpx 0 10rpx 10rpx; color: #808080"> + 鎵规锛歿{ item.batch }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="" style="padding: 10rpx 0 10rpx 10rpx; color: #808080"> + 搴撳瓨鐘舵��: {{ item.stockStatusName }} + </view> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </view> + <modal-code :rescode="rescode" :resmessage="resmessage" ref="resmodal" /> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow = false" mode="bottom"> + <!-- <view class="pop "> --> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{ materlist.materialCode }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{ materlist.materialName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text>{{ materlist.batchNo }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">PO</text> + <text>{{ materlist.purchaseNo }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">琛屽彿</text> + <text>{{ materlist.lineNumber }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">渚涘簲鍟�</text> + <text>{{ materlist.supplierNo }}{{ materlist.supplierName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏁伴噺</text> + <text>{{ materlist.unBindQuantity }}</text> + </view> + <!-- </view> --> + <view class="margin_top140rpx"> + <!-- <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='init' @reset='rest' /> --> + <button-modal :cleaningShow="true" allTitle="钃濈墮鎵撳嵃" cleaningTitle="鏂戦┈鎵撳嵃" @allsubmit="init(1)" + @submit="init(2)" /> + </view> + </u-popup> + <!-- 搴曢儴纭畾鎸夐挳 --> + <button-modal :empTytowerShow="true" cleaningTitle="杩斿洖" garmenTitle="纭" @submit="submit" @reset="rest" /> + </view> +</template> +<script> +import { + bindContainerStock, + placeBind, +} from "@/api/putIn/localBind.js"; +import BluePrint from "@/pages/print/bluePrint.js"; +import ButtonModal from "../../components/buttonModal.vue"; +import ModalCode from "../../components/ModalCode.vue"; +import { getAttrValue } from "@/utils/tool.js"; +import { addPrintRecord } from "../../api/print.js"; +import printComp from "@/mixins/printLabelSingle.js"; +import printBanma from "@/mixins/printBanma.js"; + +export default { + mixins: [printComp, printBanma], + data() { + return { + operator: "", + warehouse: { + containerCode: "", + placeCode: "", + }, + checkStatus: "", + singlist: [], //璇︽儏鍒楄〃 + rescode: 0, + resmessage: "", + options: [ + { + text: "鎵撳嵃", + style: { + backgroundColor: "#fc9f35", + }, + }, + ], + detailshow: false, + materlist: {}, + + }; + }, + components: { + ButtonModal, + ModalCode, + }, + onLoad() { + this.operator = JSON.parse(uni.getStorageSync("userInfo")).name; + }, + created() { + }, + methods: { + //瑙f瀽鐗╂枡鐮� + //鍥炲簱 + rest() { + uni.navigateTo({ + //url:`/pages/sort/return?containerCode=${this.warehouse.containerCode}` + url: `/pages/index/index`, + }); + this.resetForm(); + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }); + }, + close(index) { + this.singlist[index].show = false; + }, + //鐗╂枡璇︽儏 + longpress(index, eindex) { + this.materlist = this.singlist[index]; + this.detailshow = true; + }, + //鏍囩閲嶆柊鎵撳嵃 + init(param) { + const arr = ["materialCode", "unBindQuantity"]; + const arrzw = ["鐗╂枡缂栧彿", "鏈涓嬫灦鏁伴噺"]; + let isAllow = ""; + Object.keys(this.materlist).forEach((item) => { + if (arr.includes(item)) { + if (!this.materlist[item]) { + isAllow = arr.indexOf(item); + // this.rescode = 400 + // this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.resmessage = `${item}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.$refs.resmodal.show = true + return; + } + } + }); + if (isAllow != "") { + this.detailshow = false; + this.rescode = 400; + this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭; + this.$refs.resmodal.show = true; + return; + } + if ( + this.materlist.unBindQuantity <= 0 || + this.materlist.unBindQuantity > this.materlist.quantity + ) { + this.detailshow = false; + this.rescode = 400; + this.resmessage = `鏁伴噺涓嶇鍚堣鑼冿紝涓嶈兘缁х画鎵撳嵃`; + this.$refs.resmodal.show = true; + return; + } + + this.materlist.quantityLable = this.materlist.unBindQuantity; // 鎵撳嵃鏍囪创鏁伴噺 + + if (param == 1) { + this.printComp("", "PO"); + } else { + this.printBanma(); + } + }, + + containerBlur() { + if (this.warehouse.containerCode == "") { + return; + } + ////debugger + bindContainerStock(this.warehouse).then((res) => { + this.singlist = res.result.stockList || []; + }); + }, + resetForm() { + this.warehouse.placeCode = ""; + this.warehouse.containerCode = ""; + this.singlist = [] + }, + //纭瑙g粦 + submit() { + var count = 0; + if (this.warehouse.placeCode) { + count++; + } + if (this.warehouse.containerCode) { + count++; + } + if (count != 2) { + this.rescode = 400; + this.resmessage = "璇疯ˉ鎵簱浣嶇紪鍙锋垨瀹瑰櫒缂栧彿锛�"; + this.$refs.resmodal.show = true; + return; + } + const params = { + placeCode: this.warehouse.placeCode, + containerCode: this.warehouse.containerCode, + }; + uni.showModal({ + title: "鎻愮ず", + content: "搴撲綅缁戝畾", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + // 缁戝畾 + placeBind(params).then((res) => { + this.resmessage = "缁戝畾鎴愬姛"; + this.rescode = 200; + this.$refs.resmodal.show = true; + this.resetForm(); + }); + } + }, + }); + }, + }, +}; +</script> +<style lang="scss"> +.content { + height: 500rpx; + overflow-y: scroll; + width: 100%; + padding: 15rpx; + box-sizing: border-box; + + .content-item { + padding: 15rpx; + background-color: #fff; + margin-bottom: 15rpx; + border-radius: 8rpx; + font-size: 16px; + } +} + + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/untie/localUnBind.vue b/LA24030_LuLiPackageLine_Pda/pages/untie/localUnBind.vue new file mode 100644 index 0000000..7fbce0d --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/untie/localUnBind.vue @@ -0,0 +1,368 @@ +<template> + <view class="overflow" style="padding-bottom: 100px"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> </block> + <block slot="content">搴撲綅瑙g粦</block> + </cu-custom> + <u-form labelPosition="left" label-width="180rpx" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" class="uFormItem" required> + <u-input v-model="warehouse.containerCode" placeholder="璇峰綍鍏ユ垨鎵爜" @confirm="containerBlur" + style="font-weight: bolder; margin-left: 15rpx; font-size: 34rpx" + class="width padding_left30rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx background_fff padding_left25rpx"> + <u-col span="12"> + <u-form-item label="搴撲綅缂栧彿:" prop="placeCode" class="uFormItem" required> + <u-input v-model="warehouse.placeCode" placeholder="璇峰綍鍏ユ垨鎵爜" @confirm="placeCodeBlur" + style="font-weight: bolder; margin-left: 15rpx; font-size: 34rpx" + class="width padding_left30rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <!-- 鍒楄〃 --> + <view> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + :options="options" @click="longpress" @open="open" @close="close" style="margin-bottom: 8rpx"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :class="item.checked ? 'bg_item' : ''" + class="fontSize32rpx width margin_auto background_fff padding10 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex align-center"> + <view class="flex justify-center align-center" style=" + background-color: #f18202; + color: #fff; + border-radius: 50vh; + width: 20px; + height: 20px; + "> + {{ eindex + 1 }} + </view> + <view class="color_f18202 padding_left10rpx"> + 鐗╂枡缂栧彿锛歿{ item.materialCode }}-{{ item.materialName }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="8"> + <view class="" style="padding: 10rpx 0 10rpx 10rpx; color: #808080"> + 瀹瑰櫒缂栧彿锛歿{ item.containerCode }} + </view> + </u-col> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 10rpx; color: #808080"> + 鏁伴噺锛歿{ item.quantity }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="" style="padding: 10rpx 0 10rpx 10rpx; color: #808080"> + 鎵规锛歿{ item.batch }} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + <view class="" style="padding: 10rpx 0 10rpx 10rpx; color: #808080"> + 搴撳瓨鐘舵��: {{ item.stockStatusName }} + </view> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </view> + <modal-code :rescode="rescode" :resmessage="resmessage" ref="resmodal" /> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow = false" mode="bottom"> + <!-- <view class="pop "> --> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{ materlist.materialCode }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{ materlist.materialName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text>{{ materlist.batchNo }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">PO</text> + <text>{{ materlist.purchaseNo }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">琛屽彿</text> + <text>{{ materlist.lineNumber }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">渚涘簲鍟�</text> + <text>{{ materlist.supplierNo }}{{ materlist.supplierName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏁伴噺</text> + <text>{{ materlist.unBindQuantity }}</text> + </view> + <!-- </view> --> + <view class="margin_top140rpx"> + <!-- <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='init' @reset='rest' /> --> + <button-modal :cleaningShow="true" allTitle="钃濈墮鎵撳嵃" cleaningTitle="鏂戦┈鎵撳嵃" @allsubmit="init(1)" + @submit="init(2)" /> + </view> + </u-popup> + <!-- 搴曢儴纭畾鎸夐挳 --> + <button-modal :empTytowerShow="true" cleaningTitle="杩斿洖" garmenTitle="纭" @submit="submit" @reset="rest" /> + </view> +</template> +<script> +import { + getContainerMaterial,getplaceStock,Unfreezeing, +} from "@/api/putIn/localBind.js"; +import BluePrint from "@/pages/print/bluePrint.js"; +import ButtonModal from "../../components/buttonModal.vue"; +import ModalCode from "../../components/ModalCode.vue"; +import { getAttrValue } from "@/utils/tool.js"; +import { addPrintRecord } from "../../api/print.js"; +import printComp from "@/mixins/printLabelSingle.js"; +import printBanma from "@/mixins/printBanma.js"; + +export default { + mixins: [printComp, printBanma], + data() { + return { + operator: "", + warehouse: { + containerCode: "", + placeCode: "", + }, + checkStatus: "", + singlist: [], //璇︽儏鍒楄〃 + rescode: 0, + resmessage: "", + options: [ + { + text: "鎵撳嵃", + style: { + backgroundColor: "#fc9f35", + }, + }, + ], + detailshow: false, + materlist: {}, + + }; + }, + components: { + ButtonModal, + ModalCode, + }, + onLoad() { + this.operator = JSON.parse(uni.getStorageSync("userInfo")).name; + }, + created() { + }, + methods: { + //瑙f瀽鐗╂枡鐮� + //鍥炲簱 + rest() { + uni.navigateTo({ + //url:`/pages/sort/return?containerCode=${this.warehouse.containerCode}` + url: `/pages/index/index`, + }); + this.resetForm(); + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }); + }, + close(index) { + this.singlist[index].show = false; + }, + //鐗╂枡璇︽儏 + longpress(index, eindex) { + this.materlist = this.singlist[index]; + this.detailshow = true; + }, + //鏍囩閲嶆柊鎵撳嵃 + init(param) { + const arr = ["materialCode", "unBindQuantity"]; + const arrzw = ["鐗╂枡缂栧彿", "鏈涓嬫灦鏁伴噺"]; + let isAllow = ""; + Object.keys(this.materlist).forEach((item) => { + if (arr.includes(item)) { + if (!this.materlist[item]) { + isAllow = arr.indexOf(item); + // this.rescode = 400 + // this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.resmessage = `${item}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.$refs.resmodal.show = true + return; + } + } + }); + if (isAllow != "") { + this.detailshow = false; + this.rescode = 400; + this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭; + this.$refs.resmodal.show = true; + return; + } + if ( + this.materlist.unBindQuantity <= 0 || + this.materlist.unBindQuantity > this.materlist.quantity + ) { + this.detailshow = false; + this.rescode = 400; + this.resmessage = `鏁伴噺涓嶇鍚堣鑼冿紝涓嶈兘缁х画鎵撳嵃`; + this.$refs.resmodal.show = true; + return; + } + + this.materlist.quantityLable = this.materlist.unBindQuantity; // 鎵撳嵃鏍囪创鏁伴噺 + + if (param == 1) { + this.printComp("", "PO"); + } else { + this.printBanma(); + } + }, + + containerBlur() { + if (this.warehouse.containerCode == "") { + return; + } + ////debugger + getContainerMaterial(this.warehouse).then((res) => { + console.log('getContainerMaterial',res) + if (res.result.placeCode) { + this.warehouse.placeCode = res.result.placeCode + } + //缁欐墍鏈夌殑鏉愭枡涓�涓湭閫変腑鐨勭姸鎬� + // res.result.map((item) => { + // (item.checked = false), (item.unBindQuantity = ""); + // item.IsChange = true; + // item.CheckStatus = ""; + // }); + this.singlist = res.result.stockList || []; + }); + }, + placeCodeBlur() { + if (this.warehouse.placeCode == "") { + return; + } + ////debugger + getplaceStock(this.warehouse).then((res) => { + // if (res.data == null || res.data.length == 0) { + // this.rescode = 400; + // this.resmessage = + // "璇ョ墿鏂�" + this.warehouse.materialCode + "娌℃湁鎵惧埌搴撳瓨"; + // this.$refs.resmodal.show = true; + // return; + // } + //缁欐墍鏈夌殑鏉愭枡涓�涓湭閫変腑鐨勭姸鎬� + if (res.result.placeCode) { + this.warehouse.containerCode = res.result.stockList[0].containerCode + } + //缁欐墍鏈夌殑鏉愭枡涓�涓湭閫変腑鐨勭姸鎬� + // res.result.map((item) => { + // (item.checked = false), (item.unBindQuantity = ""); + // item.IsChange = true; + // item.CheckStatus = ""; + // }); + this.singlist = res.result.stockList || []; + }); + }, + //瑙g粦鏁伴噺澶辩劍浜嬩欢 + changeNum(option) { + // if(option.unBindQuantity > 0) { + // option.unBindQuantity = Number(option.unBindQuantity.toString().match(/^\d+(?:\.\d{0,2})?/)) // 淇濈暀涓や綅灏忔暟 + // } + + //鍒ゆ柇鏄惁鍕鹃�夛紝濡傛灉鍕鹃�変簡锛屽氨瑕佸鏁伴噺鏍¢獙 + if (!option.checked) { + return; + } + if (option.unBindQuantity == "") { + this.rescode = 400; + this.resmessage = "绉诲簱鏁伴噺涓嶈兘涓虹┖"; + this.$refs.resmodal.show = true; + } + + if (option.unBindQuantity <= 0) { + this.rescode = 400; + this.resmessage = "绉诲簱鏁伴噺蹇呴』澶т簬0"; + this.$refs.resmodal.show = true; + } + + if (option.unBindQuantity > option.quantity) { + this.rescode = 400; + this.resmessage = "绉诲簱鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺"; + this.$refs.resmodal.show = true; + } + }, + resetForm() { + this.warehouse.placeCode = ""; + this.warehouse.containerCode = ""; + this.singlist = [] + }, + //纭瑙g粦 + submit() { + const params = { + placeCode: this.warehouse.placeCode, + containerCode: this.warehouse.containerCode, + }; + uni.showModal({ + title: "鎻愮ず", + content: "搴撲綅瑙g粦", + showCancel: true, + cancelColor: "#333333", + success: (res) => { + if (res.confirm) { + Unfreezeing(params).then((res) => { + this.resmessage = "瑙g粦鎴愬姛"; + this.rescode = 200; + this.$refs.resmodal.show = true; + this.resetForm(); + }); + } + }, + }); + }, + }, +}; +</script> +<style lang="scss"> +.content { + height: 500rpx; + overflow-y: scroll; + width: 100%; + padding: 15rpx; + box-sizing: border-box; + + .content-item { + padding: 15rpx; + background-color: #fff; + margin-bottom: 15rpx; + border-radius: 8rpx; + font-size: 16px; + } +} + + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/untie/outbound.vue b/LA24030_LuLiPackageLine_Pda/pages/untie/outbound.vue new file mode 100644 index 0000000..401bfe6 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/untie/outbound.vue @@ -0,0 +1,263 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">涓嬫灦</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="wareContainerCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.wareContainerCode" placeholder="璇峰綍鍏ユ垨鎵爜" + :focus="true" + @confirm="getWarehouseMaterial" + style="font-weight: bolder;margin-left: 15rpx;" class="width padding_left30rpx"> + </u-input> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="搴撲綅缂栧彿:" prop="wareLocationCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.wareLocationCode" placeholder="璇峰綍鍏ユ垨鎵爜" required + style="font-weight: bolder;margin-left: 15rpx;" class="width padding_left30rpx"> + </u-input> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view style="margin-bottom: 180rpx;margin-top: 15rpx;" v-show="singlist.length > 0"> + <view v-for="(item, eindex) in singlist" :key="eindex" style="width: 100vw;display: flex;"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" @open="open" :options="options" + style="margin-bottom: 10rpx;width: 100vw;"> + <view class="title-wrap fontSize32rpx background_fff"> + <u-row class="padding15"> + <u-col span="1"> + <text class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{ eindex + 1 }} + </text> + </u-col> + <u-col span="10"> + <text class="color_f18202">{{ item.code }}</text> + </u-col> + </u-row> + <u-row class="padding15"> + <u-col span="8" class="" style="text-align: center;"> + 鎵规锛歿{ item.batchNo }} + </u-col> + <u-col span="4" class="color_f18202" style="text-align: right;"> + 涓嬫灦鏁伴噺锛歿{ item.quantity }} + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + </view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow = false" mode="bottom"> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{ materlist.code }}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{ materlist.name }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡绫诲瀷</text> + <text>{{ materlist.wareMaterialTypeName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{ materlist.specificationModel }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{ materlist.long }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{ materlist.width }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{ materlist.high }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{ materlist.weight }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏉$爜</text> + <text>{{ materlist.barCode }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{ materlist.unit }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">涓嬫灦鏁伴噺</text> + <text>{{ materlist.quantity }}</text> + </view> + </view> + </u-popup> + <button-modal :subShow='true' garmenTitle='纭涓嬫灦' @submit='submit' /> + </view> +</template> + +<script> +import ButtonModal from '@/components/buttonModal.vue' +import ModalCode from '@/components/ModalCode.vue' +import { getWarehouseMaterial, outBoundOrder } from '@/api/putIn/three.js' + +export default { + data() { + return { + rescode: 0, + resmessage: "", + detailshow: false, + singlist: [], //鐗╂枡璇︽儏 + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }], + materlist: {}, + warehouse: { + wareContainerCode: '', + orderNo: '', + wareLocationCode: '' + }, + warehouseRules: { + wareContainerCode: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }], + wareLocationCode: [{ + required: true, + message: '搴撲綅缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }] + }, + operator: '' + }; + }, + components: { + ButtonModal, + ModalCode + }, + onLoad(option) { + if (option.containerCode) { + this.warehouse.wareContainerCode = option.containerCode + } + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //缁勭洏璁板綍 + getWarehouseMaterial() { + if (this.warehouse.wareContainerCode !== '') { + getWarehouseMaterial(this.warehouse.wareContainerCode).then((res) => { + if (res.code == 200) { + if (res.data.length == 0) { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + this.singlist = [] + return + } + this.singlist = res.data + this.warehouse.orderNo = res.data[0].id + } else { + this.$refs.resmodal.show = true + this.resmessage = res.message + this.rescode = res.code + } + }) + } + }, + //璇︽儏 + longpress(index, eindex) { + this.materlist = this.singlist[index] + this.detailshow = true + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + //纭 + submit() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + if (this.warehouse.orderNo == '') { + this.$refs.resmodal.show = true + this.rescode = 400 + this.resmessage = '缁勭洏id鑾峰彇澶辫触' + return + } + let param = { + ContainerCode: this.warehouse.wareContainerCode, + orderNo: this.warehouse.orderNo, + LocationCode: this.warehouse.wareLocationCode + } + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭涓嬫灦锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + outBoundOrder(param).then((res) => { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + if (res.code == 200) { + this.singlist = [] + this.warehouse.wareContainerCode = '' + this.warehouse.wareLocationCode = '' + this.warehouse.orderNo = '' + } + }) + + } else if (res.cancel) { + + } + }) + }); + + } + }) + } + } +} +</script> + +<style lang="scss"></style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/untie/untie.vue b/LA24030_LuLiPackageLine_Pda/pages/untie/untie.vue new file mode 100644 index 0000000..57ab0b1 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/untie/untie.vue @@ -0,0 +1,524 @@ +<template> + <view class="overflow" style="padding-bottom: 150rpx"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">鐗╂枡瑙g粦</block> + </cu-custom> + <u-form labelPosition="left" label-width="180rpx" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" required class="uFormItem"> + <u-input v-model.trim="warehouse.containerCode" @confirm="getContainerData(1)" + :disabled="kwbhAllowed" placeholder="璇峰綍鍏ユ垨鎵爜" class="width" :focus="curFoucus"> + </u-input> + </u-form-item> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding_left25rpx" style="background-color: #fff;" + v-if="warehouse.containerCode"> + <u-col span="12"> + <u-form-item label="鐗╂枡璺熻釜鐮�:" class="uFormItem"> + <u-input v-model="warehouse.snCode" ref="materialRef" placeholder="璇锋壂鐮佸綍鍏�" + @focus="warehouse.snCode = ''" @confirm="getContainerData" + style="font-weight: bolder;margin-left: 15rpx;" class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + + </u-form> + <!-- 鍒楄〃 --> + <view class="margin_top10rpx"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + :options="options" @click="longpress" @open="open" @close="close" class="margin_bottom10rpx"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <!-- --> + <view :class="item.checked ? 'bg_item' : ''" + class="fontSize32rpx width margin_auto background_fff padding10 relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex align-center"> + <u-checkbox v-model="item.checked" size="50rpx"></u-checkbox> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 40rpx;height: 40rpx;"> + {{ eindex + 1 }} + </view> + <text class="color_f18202 padding_left10rpx"> + {{ item.materialCode }}({{ item.materialName }}) + </text> + </u-col> + </u-row> + <u-row> + <u-col span="8"> + <text class="color_80 padding_left25rpx"> + 璐ㄦ鐘舵�侊細{{ item.qcStatusName }} + </text> + </u-col> + <u-col span="4"> + <text class="color_80"> + 鎵规锛歿{ item.batch }} + </text> + </u-col> + </u-row> + <u-row> + <u-col span="8"> + <text class="color_80 padding_left25rpx"> + </text> + </u-col> + <u-col span="4"> + <text class="color_f18202"> + 鏁伴噺锛歿{ item.quantity }} + </text> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </view> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" /> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow = false" mode="bottom"> + <!-- <view class="pop "> --> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{ this.materlist.materialCode }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{ this.materlist.materialName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡灏忕被</text> + <text>{{ this.materlist.materialTypeName }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text>{{ this.materlist.batchNo }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{ this.materlist.specificationModel }}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏁伴噺</text> + <text>{{ this.materlist.unBindQuantity }}</text> + </view> + <!-- </view> --> + <view class="margin_top140rpx"> + <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='init' @reset='rest' /> + </view> + </u-popup> + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='鐗╂枡瑙g粦' @submit='submit' @reset='back' /> + + </view> +</template> +<script> +import { getContainerMaterial, unbindOrder } from '@/api/putIn/untie.js' +import BluePrint from '@/pages/print/bluePrint.js' +import ButtonModal from '../../components/buttonModal.vue' +import ModalCode from '../../components/ModalCode.vue' +import { getAttrValue } from '@/utils/tool.js' +import { getContainDetail, onlyUpdateDutyCycle, getBhbMaterialList } from '../../api/putIn/artificial.js' +export default { + data() { + return { + operator: '', + warehouse: { + containerCode: '', + materialCode: '', + dutyCycle: '', + gridNumber: 1, + useNumber: 0, + exitNumber: 0 + }, + singlist: [ + // {} + ], //璇︽儏鍒楄〃 + ordersId: 0, //褰撳墠瀹瑰櫒缁戝畾鐨勪笂鏋跺崟 + rescode: 0, + resmessage: '', + options: [{ + text: '鎵撳嵃', + style: { + backgroundColor: '#fc9f35' + } + } + ], + detailshow: false, + materlist: {}, + curFoucus: true, + timer: null, + timerSm: null, + detailableZb: false, + detailable: false, + gridFocus: false, + gridable: true, + kwbhAllowed: false + } + + }, + components: { + ButtonModal, + ModalCode + }, + onLoad() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + watch: { + containerCode(val) { + if (!val) { + this.detailable = false; + this.detailableZb = false; + this.warehouse.exitNumber = 0 + } + } + }, + methods: { + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + close(index) { + this.singlist[index].show = false; + }, + //鐗╂枡璇︽儏 + longpress(index, eindex) { + this.materlist = this.singlist[index] + this.detailshow = true + }, + //鏍囩閲嶆柊鎵撳嵃 + init() { + const arr = ['materialCode', 'unBindQuantity']; + const arrzw = ['鐗╂枡缂栧彿', '鏈瑙g粦鏁伴噺'] + let isAllow = '' + Object.keys(this.materlist).forEach(item => { + if (arr.includes(item)) { + if (!this.materlist[item]) { + isAllow = arr.indexOf(item) + // this.rescode = 400 + // this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.resmessage = `${item}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.$refs.resmodal.show = true + return + } + } + }) + if (isAllow != '') { + this.detailshow = false + this.rescode = 400 + this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + this.$refs.resmodal.show = true + return + } + if (this.materlist.unBindQuantity <= 0 || this.materlist.unBindQuantity > this.materlist.quantity) { + this.detailshow = false + this.rescode = 400 + this.resmessage = `鏁伴噺涓嶇鍚堣鑼冿紝涓嶈兘缁х画鎵撳嵃` + this.$refs.resmodal.show = true + return + } + if (!this.materlist.specificationModel) { + this.materlist.specificationModel = '' + } + let ptintContext = [ + { type: 'text', x: 0, y: 0, text: '', size: 2, rotate: 0, bold: 0, underline: false, reverse: false }, + { type: 'text', x: 0, y: 0, text: '', size: 2, rotate: 0, bold: 0, underline: false, reverse: false }, + { type: 'text', x: 0, y: 0, text: '', size: 2, rotate: 0, bold: 0, underline: false, reverse: false }, + /* 浠ヤ笂绌烘暟鎹紝涓洪槻姝涪鍖呮椂鎵撳嵃涓嶆甯� */ + { type: 'line', x1: 3, y1: 3, x2: 565, y2: 3, width: 2 }, + { type: 'line', x1: 3, y1: 3, x2: 3, y2: 345, width: 2 }, + { type: 'line', x1: 3, y1: 345, x2: 565, y2: 345, width: 2 }, + { type: 'line', x1: 565, y1: 345, x2: 565, y2: 3, width: 2 }, + { type: 'text', x: 80, y: 15, text: '鐗ч噹姹借溅瑁呭(姝︽眽)鏈夐檺鍏徃', size: 3, rotate: 0, bold: 1, underline: false, reverse: false }, + { type: 'line', x1: 3, y1: 60, x2: 565, y2: 60, width: 2 }, + { type: 'text', x: 10, y: 75, text: `鐗╂枡缂栧彿: ${this.materlist.materialCode}`, size: 2, rotate: 0, bold: 1, underline: false, reverse: false }, + { type: 'line', x1: 3, y1: 110, x2: 380, y2: 110, width: 2 }, + { type: 'text', x: 10, y: 125, text: `鐗╂枡鍚嶇О: ${this.materlist.materialTypeName || ''}`, size: 2, rotate: 0, bold: 1, underline: false, reverse: false }, + { type: 'line', x1: 3, y1: 160, x2: 380, y2: 160, width: 2 }, + { type: 'text', x: 10, y: 175, text: `鎵规: ${this.materlist.batchNo}`, size: 2, rotate: 0, bold: 1, underline: false, reverse: false }, + { type: 'line', x1: 3, y1: 210, x2: 565, y2: 210, width: 2 }, + { type: 'line', x1: 380, y1: 60, x2: 380, y2: 210, width: 2 }, + { type: 'qr', x: 410, y: 72, text: `PARTS NUMBER: ${this.materlist.materialCode},SAP: ${this.materlist.sap_Location || ''},BOXNUM: ${this.materlist.boxNo || ''},LOT NO: ${this.materlist.batchNo},QUANTITY: ${this.materlist.unBindQuantity}`, width: 3, level: 1 }, + { type: 'text', x: 10, y: 225, text: `瑙勬牸鍨嬪彿: ${this.materlist.specificationModel.length > 32 ? this.materlist.specificationModel.substr(0, 32) : this.materlist.specificationModel}`, size: 2, rotate: 0, bold: 1, underline: false, reverse: false }, + { type: 'line', x1: 3, y1: 260, x2: 565, y2: 260, width: 2 }, + { type: 'text', x: 120, y: 290, text: 'MAKINO J(CHINA) CO.LTD', size: 3, rotate: 0, bold: 1, underline: false, reverse: false }, + ] + console.log(ptintContext) + BluePrint.print(this.$store, ptintContext).then(() => { + // 鍏抽棴寮规 骞舵仮澶嶆粦鍔ㄥ潡 + this.detailshow = false + this.addForm.code = this.materlist.materlist; + this.addForm.name = this.materlist.materialName; + this.addForm.batchNo = this.materlist.batchNo; + this.addForm.specificationModel = this.materlist.specificationModel; + addPrintRecord(this.addForm).then(res => { + console.log(res); + }) + uni.showToast({ + title: '鎵撳嵃鎴愬姛', + duration: 2000 + }) + }).catch((err) => { + // uni.showToast({ + // title:'鎵撳嵃澶辫触', + // duration: 2000 + // }) + }) + }, + materialBlur() { + clearTimeout(this.timerSm) + this.timerSm = null + if (this.warehouse.materialCode == '') { + return + } + + this.timer = setTimeout(() => { //澶氭瑙﹀彂bug 寤惰繜bug + //鍒ゆ柇褰撳墠鐗╂枡鏄惁鍦ㄧ洏鐐瑰垪琛ㄤ腑 + const index = this.singlist.findIndex(item => item.materialCode == this.warehouse.materialCode && item.batchNo == lotNo); + if (index > -1) { + this.singlist[index].checked = 1 + this.singlist.unshift(...this.singlist.splice(index, 1)) + return + } else { + clearTimeout(this.timer) + this.timer = null + this.containerBlur() + } + }, 100) + }, + containerBlur() { + if (this.warehouse.containerCode == '' || this.warehouse.materialCode == '') { + return + } + getContainerMaterial(this.warehouse).then(res => { + if (res.data == null || res.data.length == 0) { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + return; + } + this.warehouse.dutyCycle = res.data[0].dutyCycle || 0; + //缁欐墍鏈夌殑鏉愭枡涓�涓湭閫変腑鐨勭姸鎬� + res.data.map(item => { + item.checked = true, + item.unBindQuantity = '' + }) + this.singlist.unshift(...res.data) + this.ordersId = res.data[0].ordersId + }) + }, + //瑙g粦鏁伴噺澶辩劍浜嬩欢 + changeNum(option) { + //鍒ゆ柇鏄惁鍕鹃�夛紝濡傛灉鍕鹃�変簡锛屽氨瑕佸鏁伴噺鏍¢獙 + if (!option.checked) { + return + } + if (option.unBindQuantity == '') { + this.rescode = 400 + this.resmessage = '瑙g粦鏁伴噺涓嶈兘涓虹┖' + this.$refs.resmodal.show = true + } + + if (option.unBindQuantity <= 0) { + this.rescode = 400 + this.resmessage = '瑙g粦鏁伴噺蹇呴』澶т簬0' + this.$refs.resmodal.show = true + } + if (option.unBindQuantity > option.quantity) { + this.rescode = 400 + this.resmessage = '瑙g粦鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺' + this.$refs.resmodal.show = true + } + if (this.detailable) { + let filterHas = this.singlist.filter(item => item.unBindQuantity == Number(item.quantity)); + if (filterHas.length > 0) { + this.warehouse.exitNumber = this.warehouse.useNumber - filterHas.length + } + } + }, + //纭瑙g粦 + submit() { + const filterArr = this.singlist.filter(item => item.checked); + if (filterArr.length <= 0) { + this.rescode = 400 + this.resmessage = '璇烽�夋嫨瑙g粦鐨勭墿鏂欙紒' + this.$refs.resmodal.show = true + return + } + //鍒ゆ柇閫変腑鐨勯噷闈㈡槸鍚﹀瓨鍦ㄨВ缁戠殑鏁伴噺涓嶇鍚堣鑼冪殑 + // const index = filterArr.findIndex(item => item.unBindQuantity == '' || item.unBindQuantity <= 0 || item.unBindQuantity > item.quantity) + // if (index > -1) { + // this.rescode = 400 + // this.resmessage = '瑙g粦鏁伴噺涓嶇鍚堣姹�' + // this.$refs.resmodal.show = true + // return + // } + const warehousOrderDetails = filterArr.reduce((curr, item) => { + curr.push({ + ...item + }) + return curr; + }, []) + const params = { + flag:3,//3锛氱墿鏂欒В缁� + containerCode: this.warehouse.containerCode, + orderDetails: warehousOrderDetails + } + uni.showModal({ + title: '瑙g粦', + content: '鏄惁纭瑙g粦锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + unbindOrder(params).then(res => { + this.rescode = 200 + this.$refs.resmodal.show = true; + this.resmessage = '瑙g粦鎴愬姛' + this.back(); + }) + } else if (res.cancel) { + + } + }) + }); + }, + rest() { + }, + //妫�鏌ュ鍣ㄦ爡鏍兼暟 + checkGrid() { + }, + //鑾峰彇瀹瑰櫒鐨勪俊鎭� + getContainerData(param) { + if (this.warehouse.containerCode == '') { + uni.showToast({ + title: '璇锋壂瀹瑰櫒缂栧彿', + icon: 'none', + duration: 2000 + }); + return + } + // this.kwbhAllowed = false; + getBhbMaterialList({ + 'containerCode': this.warehouse.containerCode, + 'SNCode': this.warehouse.snCode + }).then(res => { + // //debugger + const result = res.result; + if (Array.isArray(result) && result.length == 0) { + uni.showToast({ + title: '鏁版嵁涓嶅瓨鍦�', + icon: 'none', + duration: 2000 + }); + return + // this.kwbhAllowed = true + } + //瀹瑰櫒缂栧彿鍏ュ彛 + // if (param == 1) { + // } + if(res.result && res.result.length==1){ + res.result[0].checked=true; + } + this.singlist = res.result; + + //鐗╂枡鍏ュ彛 鏍规嵁id 鍒ゆ柇鐗╂枡鏄惁瀛樺湪 + // res.result.forEach(item => { + // let index = this.singlist.findIndex(v => v.snCode == item.snCode); + // if (index == -1) { + + // this.singlist.unshift({ + // ...item + // }) + // } + // }); + }) + }, + onlyUpdateDutyCycleClick() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + this.$refs.warehouseRef.validate(valid => { + if (valid) { + //璇锋眰鍙傛暟 + let params = { + wareContainerCode: this.warehouse.containerCode, + dutyCycle: this.warehouse.dutyCycle + } + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭浠呮洿鏂扮┖闂村崰姣旀暟鎹紵', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + onlyUpdateDutyCycle(params).then(res => { + this.warhouseTph = this.warehouse.containerCode + this.rescode = res.code + this.resmessage = res.message + this.$refs.resmodal.show = true + this.rest() + }) + } else if (res.cancel) { + + } + }) + }); + } + }) + }, + gridBtnClick() { + this.gridable = !this.gridable + if (!this.gridable) { + this.$nextTick(() => { + this.gridFocus = true; + }) + } else { + this.$nextTick(() => { + this.gridFocus = false; + }) + } + }, + //鍏ㄩ儴鍙栨秷 + back() { + this.ordersId = 0; + this.singlist = []; + this.$refs.warehouseRef.resetFields(); + this.warehouse.containerCode = '' + } + }, + unmounted() { + if (this.timer) { + clearTimeout(this.timer) + this.timer = null + } + }, +} +</script> +<style lang="scss"> +.content { + height: 500rpx; + overflow-y: scroll; + width: 100%; + padding: 15rpx; + box-sizing: border-box; + + .content-item { + padding: 15rpx; + background-color: #fff; + margin-bottom: 15rpx; + border-radius: 8rpx; + font-size: 32rpx; + } +} + +.bg_item { + background: #FFEBCD !important; +} +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/untie/untie2.vue b/LA24030_LuLiPackageLine_Pda/pages/untie/untie2.vue new file mode 100644 index 0000000..41d3eef --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/untie/untie2.vue @@ -0,0 +1,418 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">瀹瑰櫒瑙g粦</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <view v-if="renameFocus" class="text-bold width fontSize32rpx" + style="padding: 10rpx 10rpx;background-color: #d6d6d6;"> + <view class="flex justify-between align-center"> + <text class="width23 padding10">涓婃灦鍗曞彿</text> + <text>{{putCode}}</text> + </view> + </view> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="瀹瑰櫒缂栧彿:" prop="containerCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <input v-model="warehouse.containerCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="focu=true" + @blur="getUnboundMaterial" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left30rpx"> + </input> + <u-icon name="close-circle-fill" color="#848484" v-if="warehouse.containerCode && focu" + @click="warehouse.containerCode=''"></u-icon> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10" class=""> + <u-form-item label="鐗╂枡缂栧彿:" prop="materialCode" + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <!-- <view class="fontSize32rpx font_weight_bold" style="padding: 0 0 10rpx;"> + 鐗╂枡缂栧彿: + </view> + <view class="flex"> --> + <input v-model="warehouse.materialCode" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="focuM=true" + @blur="getUnboundMaterial" style="font-weight: 800;margin:15rpx;" + class="width padding_left30rpx fontSize32rpx"> + </input> + <u-icon name="close-circle-fill" color="#848484" v-if="warehouse.materialCode && focuM" + @click="warehouse.materialCode=''"></u-icon> + <!-- </view> --> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal" /> + <view v-if="singlist.length>0" :style="'height:calc(100vh - '+(CustomBar+155)+'px'"> + <view class="margin_top10rpx overflow_auto" style="height:calc(100% - 225rpx)"> + <scroll-view scroll-y="true"> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" + @click="longpress" @open="open" @close='close' :options="options"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :key="eindex+'singlist'" + :class="item.cardNum?'bd-ffe6c9':item.edit?'clickactive':''" + class="fontSize32rpx width margin_auto background_fff padding15 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex align-center"> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + {{item.code}} ({{item.name}}) + <text class="color_666666 padding_left10rpx" v-if="item.barNo"> - + 鎵规锛歿{item.barNo}}</text> + </view> + </u-col> + </u-row> + <u-row> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 澶х被锛歿{item.category}} + </view> + </u-col> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 灏忕被锛歿{item.wareMaterialTypeName}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <input disabled="" + class="border_bottom_f18202 width45 fontSize32rpx text-left" + style="margin:10rpx 0 10rpx 45rpx;" v-model="item.unit" placeholder="鍗曚綅"/> + </u-col> + <u-col span="5"> + <input + class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.unquantity" type="number" @focus='dc(item)' @blur="changeNum(item)" @click="click(item)" + placeholder="璇疯緭鍏ヨВ缁戞暟閲�"/> + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </scroll-view> + </view> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <view class="pop "> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">瀹瑰櫒缂栧彿</text> + <text>{{warehouse.containerCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.code}}</text> + </view> + + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.name}}</text> + </view> + <!-- <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡绫诲瀷</text> + <text>{{materlist.wareMaterialTypeName}}</text> + </view> --> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡瑙勬牸</text> + <text>{{materlist.specificationModel}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">闀�(mm)</text> + <text>{{materlist.long}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">瀹�(mm)</text> + <text>{{materlist.width}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">楂�(mm)</text> + <text>{{materlist.high}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">閲嶉噺(kg)</text> + <text>{{materlist.weight}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏉$爜</text> + <text>{{materlist.barCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎬绘暟</text> + <text>{{materlist.quantity}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鍗曚綅</text> + <text>{{materlist.unit}}</text> + </view> + </view> + </u-popup> + </view> + <button-modal :cleaningShow='true' allTitle="鍏ㄩ儴瑙g粦" cleaningTitle='纭瑙g粦' @submit='submit' + @allsubmit="allsubmit" /> + + </view> +</template> + +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import { + getUnboundMaterial, + updateunbound + } from '../../api/putIn/untie.js' + export default { + data() { + return { + renameFocus: false, + modalshow: false, + show: false, + rescode: 0, + resmessage: "", + detailshow: false, + operator: '', //鎿嶄綔浜� + focu: false, + focuM: false, + singlist: [ + // { + // "warematerialCode": "string", + // "collectNo": "string", + // "purchaseNo": "string", + // "category": "string", + // "wareMaterialTypeName": "string", + // "specificationModel": "string", + // "long": "string", + // "width": "string", + // "high": "string", + // "weight": "string", + // "barCode": "string", + // "company": "string", + // "uncollectedQuantity": 0, + // "id": 0 + // } + ], //鐗╂枡璇︽儏 + options: [{ + text: '璇︽儏', + style: { + backgroundColor: '#fc9f35' + } + }], + materlist: [], + warehouse: { + containerCode: '', + materialCode: '' + }, + warehouseRules: { + containerCode: [{ + required: true, + message: '瀹瑰櫒缂栧彿涓嶈兘涓虹┖', + trigger: 'blur' + }], + // materialCode: [{ + // required: true, + // message: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + // trigger: 'blur' + // }] + }, + putCode: '' + }; + }, + components: { + ButtonModal, + ModalCode + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + // this.WarehousChangePort() + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + // this.getOrderNo() + }, + methods: { + //涓婃灦鍗曞彿 + // getOrderNo() { + // getOrderNo().then((res) => { + // if (res.code == 200) { + // this.putCode = res.data + // } else { + // this.$refs.resmodal.show = true + // } + // }) + // }, + //鏌ヨ鐗╂枡 + getUnboundMaterial() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + setTimeout(() => { + this.focu = false + this.focuM = false + if (this.warehouse.containerCode !== '' || this.warehouse.materialCode !== + '') { + let params = { + wareContainerCode: this.warehouse.containerCode, + materialCode: this.warehouse.materialCode + } + getUnboundMaterial(params).then((res) => { + if (res.code == 200) { + if (res.data.length == 0) { + this.rescode = 400 + this.resmessage = '鏆傛棤鏁版嵁' + this.$refs.resmodal.show = true + this.singlist = [] + } else { + this.singlist = res.data + this.putCode = res.data[0].orderNo + this.renameFocus = true + } + } else { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + } + }) + } + }, 200) + } + }) + }, + //鍒犻櫎璇︽儏 + longpress(index, eindex) { + this.singlist[index].cardNum = true + this.materlist = this.singlist[index] + this.detailshow = true + }, + //缂栬緫鐘舵�佹牱寮� + dc(e) { + e.cardNum = true + this.$forceUpdate() + }, + //鍗$墖閫変腑 + click(e) { + e.cardNum = true + this.$forceUpdate() + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].cardNum = true; + this.$forceUpdate() + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + close(index) { + this.singlist[index].show = false; + this.singlist[index].cardNum = false; + this.$forceUpdate() + }, + //鏀瑰彉缁勭洏鏁伴噺 + changeNum(val) { + val.cardNum = false + if (val.unquantity && val.unquantity > 0) { + val.edit = true + this.$forceUpdate() + } else { + val.edit = false + this.$forceUpdate() + } + + }, + //鍏ㄩ儴瑙g粦 + allsubmit() { + let arr = this.singlist.filter(item => item.edit) + if (arr.length == this.singlist.length) { + this.submit() + } else { + this.rescode = 400 + this.resmessage = '璇峰~鍐欐墍鏈夎В缁戞暟閲�' + this.$refs.resmodal.show = true + } + }, + //閲嶇疆 + rest() { + this.warehouse.containerCode = '' + this.warehouse.materialCode = '' + this.renameFocus = false + this.singlist = [] + }, + //纭 + submit() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + if (this.singlist.length == 0) { + return + } + let arr = this.singlist.filter(item => item.edit) + if (arr.length == 0 && this.singlist.length !== 0) { + this.rescode = 400 + this.resmessage = '璇峰~鍐欒В缁戞暟閲�' + this.$refs.resmodal.show = true + return + } + let unboundMatatils = [] + let subshow = true + arr.forEach(item => { + if (item.quantity - item.unquantity < 0) { + this.rescode = 400 + this.resmessage = '瑙g粦鏁伴噺涓嶈兘澶т簬鍘熸暟閲�' + this.$refs.resmodal.show = true + subshow = false + return + } + unboundMatatils.push({ + collectNo: item.collectNo, + batchNo: item.batchNo, + id: item.id, + materialCode: item.wareMaterialCode, + quantity: item.quantity, + updateQuantity: item.quantity - item.unquantity + + }) + }) + if (subshow) { + let params = { + wareContainerCode: this.warehouse.containerCode, + ordersNo: this.putCode, + unboundMatatils: unboundMatatils + } + updateunbound(params).then((res) => { + this.$refs.resmodal.show = true + this.rescode = res.code + this.resmessage = res.message + if (res.code == 200) { + this.rest() + } + }) + } + + } + }) + } + }, + + } +</script> + +<style lang="scss"> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/untie/untieForMove.vue b/LA24030_LuLiPackageLine_Pda/pages/untie/untieForMove.vue new file mode 100644 index 0000000..846ef00 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/untie/untieForMove.vue @@ -0,0 +1,501 @@ +<template> + <view class="overflow" style="padding-bottom: 100px"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">绉诲簱</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <!-- form --> + <u-form labelPosition="left" label-width="150rpx" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡鐮�:" style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.materialCode_Code" + ref="materialRef" placeholder="璇锋壂鐮佸綍鍏�" + :focus="true" + @blur="analysisMaterialCode" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" prop="materialCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.materialCode" placeholder="璇峰綍鍏ユ垨鎵爜" + style="font-weight: bolder;margin-left: 15rpx;font-size: 34rpx;" + class="width padding_left30rpx" + @confirm="containerBlur"> + </u-input> + </u-form-item> + </u-col> + <u-col span="12"> + <u-form-item label="鐩爣搴撲綅:" prop="targetContainerCode" required + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.targetContainerCode" placeholder="璇峰綍鍏ユ垨鎵爜" + style="font-weight: bolder;margin-left: 15rpx;font-size: 34rpx;" + class="width padding_left30rpx" + > + </u-input> + </u-form-item> + </u-col> + + <u-col span="12"> + <u-form-item label="鐗╂枡鍗曟嵁:" prop="materialSlip" + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.materialSlip" placeholder="璇峰綍鍏ユ垨鎵爜" + style="font-weight: bolder;margin-left: 15rpx;font-size: 34rpx;" + class="width padding_left30rpx" + > + </u-input> + </u-form-item> + </u-col> + + <u-col span="12"> + <u-form-item label="鍗曟嵁澶囨敞:" prop="headerTxt" + style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.headerTxt" placeholder="璇峰綍鍏ユ垨鎵爜" + style="font-weight: bolder;margin-left: 15rpx;font-size: 34rpx;" + class="width padding_left30rpx" + > + </u-input> + </u-form-item> + </u-col> + <!-- <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鐗╂枡缂栧彿:" style="font-size: 16px;font-weight: bold;padding: 0 0 10rpx;"> + <u-input v-model="warehouse.materialCode" placeholder="璇锋壂鐮佸綍鍏�" @blur="materialBlur" :clearable="false" style="font-weight: bolder;margin-left: 15rpx;" + @focus="warehouse.materialCode=''" + class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> --> + </u-row> + </u-form> + <!-- 鍒楄〃 --> + <view> + <u-swipe-action :show="item.show" :index="eindex" v-for="(item, eindex) in singlist" :key="eindex" :options="options" + @click="longpress" @open="open" @close="close" + style="margin-bottom: 8rpx;"> + <view class="item u-border-bottom"> + <!-- 姝ゅ眰wrap鍦ㄦ涓哄繀鍐欑殑锛屽惁鍒欏彲鑳戒細鍑虹幇鏍囬瀹氫綅閿欒 --> + <view class="title-wrap"> + <view :class="item.checked ? 'bg_item' : ''" + class="fontSize32rpx width margin_auto background_fff padding10 border_radius margin_bottom10rpx relative box_sizing transition"> + <u-row> + <u-col span="12" class="flex align-center"> + <view> + <u-checkbox v-model="item.checked" size="28px"></u-checkbox> + </view> + <view class="flex justify-center align-center" + style="background-color: #f18202;color: #fff;border-radius: 50vh;width: 20px;height: 20px;"> + {{eindex+1}} + </view> + <view class="color_f18202 padding_left10rpx"> + 鐗╂枡缂栧彿锛歿{item.materialCode}} + </view> + </u-col> + </u-row> + <u-row> + <u-col span="8"> + <view class="" style="padding: 10rpx 0 10rpx 10rpx;color: #808080;"> + 鎵规锛歿{item.batchNo}} + </view> + </u-col> + <u-col span="4"> + <view class="" style="padding: 10rpx 0 10rpx 10rpx;color: #808080;"> + 鏁伴噺锛歿{item.quantity}} + </view> + </u-col> + </u-row> + + <u-row> + <u-col span="4"> + 搴撲綅锛歿{item.containerCode}} + </u-col> + <u-col span="5"> + SAP浣嶇疆锛歿{item.sap_Location}} + </u-col> + <u-col span="3"> + <view class="" style="padding: 10rpx 0 10rpx 10rpx;color: #808080;"> + <u-input class="border_bottom_f18202 width text-left fontSize32rpx padding_left10rpx" + v-model="item.unBindQuantity" type="number" @blur="changeNum(item)" + placeholder="璇疯緭鍏ョЩ搴撴暟閲�" ></u-input> + </view> + </u-col> + </u-row> + <u-row> + <u-col span="12"> + 妫�楠岀姸鎬�: {{item.checkStatusName}} + </u-col> + </u-row> + </view> + </view> + </view> + </u-swipe-action> + </view> + <modal-code :rescode='rescode' :resmessage='resmessage' ref="resmodal"/> + <u-popup v-model="detailshow" border-radius="14" @close="detailshow=false" mode="bottom"> + <!-- <view class="pop "> --> + <h2 class="text_align_center padding_bottom18 padding15">鐗╂枡淇℃伅</h2> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡缂栧彿</text> + <text>{{materlist.materialCode}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鐗╂枡鍚嶇О</text> + <text>{{materlist.materialName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鎵规</text> + <text>{{materlist.batchNo}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">PO</text> + <text>{{materlist.purchaseNo}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">琛屽彿</text> + <text>{{materlist.lineNumber}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">渚涘簲鍟�</text> + <text>{{materlist.supplierNo}}{{materlist.supplierName}}</text> + </view> + <view class="line flex justify-between"> + <text class="text-gray">鏁伴噺</text> + <text>{{materlist.unBindQuantity}}</text> + </view> + <!-- </view> --> + <view class="margin_top140rpx"> + <!-- <button-modal :subShow='true' garmenTitle='鎵撳嵃' @submit='init' @reset='rest' /> --> + + <button-modal :cleaningShow='true' allTitle='钃濈墮鎵撳嵃' cleaningTitle='鏂戦┈鎵撳嵃' @allsubmit="init(1)" @submit='init(2)'/> + + </view> + </u-popup> + <!-- 搴曢儴纭畾鎸夐挳 --> + <button-modal :empTytowerShow='true' cleaningTitle="杩斿洖" garmenTitle='绉诲簱' @submit='submit' @reset='rest' /> + </view> +</template> +<script> + import {getContainerMaterial, inventoryTransfer} from '@/api/putIn/untie.js' + import BluePrint from '@/pages/print/bluePrint.js' + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import {getAttrValue} from '@/utils/tool.js' + import {addPrintRecord} from '../../api/print.js' + import printComp from '@/mixins/printLabelSingle.js' + import printBanma from '@/mixins/printBanma.js' + + export default { + mixins: [printComp,printBanma], + data() { + return { + operator: '', + warehouse: { + containerCode: '', + materialCode: '', + targetContainerCode:'', + materialSlip:"", + headerTxt:"", + isUseForMove:true //琛ㄧず鏄� 绉诲簱 銆怑ditby shaocx,2023-05-14銆� + }, + singlist:[], //璇︽儏鍒楄〃 + rescode: 0, + resmessage: '', + options: [{ + text: '鎵撳嵃', + style: { + backgroundColor: '#fc9f35' + } + } + ], + detailshow: false, + materlist: {} + } + + }, + components: { + ButtonModal, + ModalCode + }, + onLoad() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + onReady() { + + }, + methods: { + //瑙f瀽鐗╂枡鐮� + analysisMaterialCode() { + ////debugger + if(!this.warehouse.materialCode_Code) { + // uni.showModal({ + // title: '鎻愮ず', + // content: '鐗╂枡缂栧彿涓嶈兘涓虹┖', + // showCancel: false + // }) + this.warehouse.materialCode=''; + return + } + if(this.warehouse.materialCode_Code.length > 50) { + this.warehouse.materialCode = getAttrValue(this.warehouse.materialCode_Code,'PARTSNUMBER') + //璇锋眰鍚庡彴 + this.containerBlur(); + } + }, + //鍥炲簱 + rest() { + uni.navigateTo({ + //url:`/pages/sort/return?containerCode=${this.warehouse.containerCode}` + url:`/pages/index/index` + }) + + }, + //鑾峰彇print date print time + getCurrentDate() { + let date = new Date(); + let year = date.getFullYear(); //骞� + let month = date.getMonth() + 1; //鏈� + month = month >= 10 ? month : '0' + month; + let day = date.getDate(); //鏃� + day = day >= 10 ? day : '0' + day; + let hour = date.getHours() //鏃� + hour = hour >= 10 ? hour : '0' + hour; + let min = date.getMinutes(); //鍒� + min = min >= 10 ? min : '0' + min; + let second = date.getSeconds(); //绉� + second = second >= 10 ? second : '0' + second; + return { + date: `${day}.${month}.${year}`, + time: `${hour}:${min}:${second}`, + formate:`${year}/${month}/${day}` + } + + }, + // 濡傛灉鎵撳紑涓�涓殑鏃跺�欙紝涓嶉渶瑕佸叧闂叾浠栵紝鍒欐棤闇�瀹炵幇鏈柟娉� + open(index) { + // 鍏堝皢姝e湪琚搷浣滅殑swipeAction鏍囪涓烘墦寮�鐘舵�侊紝鍚﹀垯鐢变簬props鐨勭壒鎬ч檺鍒讹紝 + // 鍘熸湰涓�'false'锛屽啀娆¤缃负'false'浼氭棤鏁� + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + close(index) { + this.singlist[index].show = false; + }, + //鐗╂枡璇︽儏 + longpress(index, eindex) { + this.materlist = this.singlist[index] + this.detailshow = true + }, + //鏍囩閲嶆柊鎵撳嵃 + init(param) { + const arr = ['materialCode','unBindQuantity']; + const arrzw = ['鐗╂枡缂栧彿','鏈涓嬫灦鏁伴噺'] + let isAllow = '' + Object.keys(this.materlist).forEach(item => { + if(arr.includes(item)) { + if(!this.materlist[item]) { + isAllow = arr.indexOf(item) + // this.rescode = 400 + // this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.resmessage = `${item}涓虹┖锛屼笉鑳界户缁墦鍗癭 + // this.$refs.resmodal.show = true + return + } + } + }) + if(isAllow!=''){ + this.detailshow = false + this.rescode = 400 + this.resmessage = `${arrzw[isAllow]}涓虹┖锛屼笉鑳界户缁墦鍗癭 + this.$refs.resmodal.show = true + return + } + if(this.materlist.unBindQuantity <= 0 || this.materlist.unBindQuantity > this.materlist.quantity){ + this.detailshow = false + this.rescode = 400 + this.resmessage = `鏁伴噺涓嶇鍚堣鑼冿紝涓嶈兘缁х画鎵撳嵃` + this.$refs.resmodal.show = true + return + } + + + this.materlist.quantityLable = this.materlist.unBindQuantity // 鎵撳嵃鏍囪创鏁伴噺 + + if(param==1){ + this.printComp('','PO') + }else{ + this.printBanma() + } + + }, + materialBlur() { + if(this.warehouse.materialCode==''){ + return + } + if(this.warehouse.materialCode.length < 50) { + return + } + // 閿欒鐮佹彁绀� + let str = this.warehouse.materialCode.replace(/\s/g,'') + if(str.indexOf('LOTNO') == -1 || str.indexOf('PARTSNUMBER') == -1){ + uni.showToast({ + title:'浜岀淮鐮佹牸寮忛敊璇�', + icon:'none', + duration: 2000 + }) + return + } + // //debugger + //鑾峰彇鎵规 + let lotNo = getAttrValue(this.warehouse.materialCode,'LOTNO') + //鐗╂枡缂栧彿 + this.warehouse.materialCode = getAttrValue(this.warehouse.materialCode,'PARTSNUMBER') + // SAP --- && item.sap_Location == SAP + let SAP = getAttrValue(this.warehouse.materialCode,'SAP') + //鍒ゆ柇褰撳墠鐗╂枡鏄惁鍦ㄧ洏鐐瑰垪琛ㄤ腑 + const index = this.singlist.findIndex(item => item.materialCode == this.warehouse.materialCode && item.batchNo == lotNo); + if(index > -1) { + this.singlist.unshift(...this.singlist.splice(index,1)) + }else { + this.rescode = 400 + this.resmessage = '姝ゆ壒娆$殑鐗╂枡涓嶅湪鍒楄〃涓�' + this.$refs.resmodal.show = true + } + }, + containerBlur() { + if(this.warehouse.materialCode == '' || this.singlist.length > 0) { + return + } + ////debugger + getContainerMaterial(this.warehouse).then(res => { + if(res.data==null || res.data.length == 0) { + this.rescode = 400 + this.resmessage = '璇ョ墿鏂�'+this.warehouse.materialCode+'娌℃湁鎵惧埌搴撳瓨' + this.$refs.resmodal.show = true + return + } + //缁欐墍鏈夌殑鏉愭枡涓�涓湭閫変腑鐨勭姸鎬� + res.data.map(item => { + item.checked = false, + item.unBindQuantity = '' + }) + this.singlist = res.data; + }) + }, + //瑙g粦鏁伴噺澶辩劍浜嬩欢 + changeNum(option) { + // if(option.unBindQuantity > 0) { + // option.unBindQuantity = Number(option.unBindQuantity.toString().match(/^\d+(?:\.\d{0,2})?/)) // 淇濈暀涓や綅灏忔暟 + // } + + //鍒ゆ柇鏄惁鍕鹃�夛紝濡傛灉鍕鹃�変簡锛屽氨瑕佸鏁伴噺鏍¢獙 + if(!option.checked){ + return + } + if(option.unBindQuantity == '') { + this.rescode = 400 + this.resmessage = '绉诲簱鏁伴噺涓嶈兘涓虹┖' + this.$refs.resmodal.show = true + } + + if(option.unBindQuantity <= 0) { + this.rescode = 400 + this.resmessage = '绉诲簱鏁伴噺蹇呴』澶т簬0' + this.$refs.resmodal.show = true + } + + if(option.unBindQuantity > option.quantity) { + this.rescode = 400 + this.resmessage = '绉诲簱鏁伴噺涓嶈兘澶т簬搴撳瓨鏁伴噺' + this.$refs.resmodal.show = true + } + }, + //纭瑙g粦 + submit() { + if(this.warehouse.targetContainerCode==''){ + this.rescode = 400 + this.resmessage = '鐩爣搴撲綅涓嶈兘涓虹┖' + this.$refs.resmodal.show = true + return + } + const filterArr = this.singlist.filter(item => item.checked); + //鍒ゆ柇閫変腑鐨勯噷闈㈡槸鍚﹀瓨鍦ㄨВ缁戠殑鏁伴噺涓嶇鍚堣鑼冪殑 + const index = filterArr.findIndex(item => item.unBindQuantity == '' || item.unBindQuantity <= 0 || item.unBindQuantity > item.quantity) + if(index > -1) { + this.rescode = 400 + this.resmessage = '绉诲簱鏁伴噺涓嶇鍚堣姹�' + this.$refs.resmodal.show = true + return + } + + const warehousOrderDetails = filterArr.reduce((curr,item) => { + curr.push({ + containerCode:item.containerCode, + targetContainerCode:this.warehouse.targetContainerCode, + materialCode:item.materialCode, + batchNo: item.batchNo, + quantity: Number(item.unBindQuantity), + remarks: '', + sap_Location:item.sap_Location, + id:item.id||'', + materialSlip:this.warehouse.materialSlip, + headerTxt:this.warehouse.headerTxt + }) + return curr; + },[]) + const params = warehousOrderDetails + + uni.showModal({ + title: '鎻愮ず', + content: '鏄惁纭绉诲簱锛�', + showCancel: true, + cancelColor: '#333333', + success: (res => { + if (res.confirm) { + inventoryTransfer(params).then(res => { + this.singlist = []; + this.warehouse.containerCode = '' + this.warehouse.materialSlip = '' + this.warehouse.headerTxt = '' + this.rescode = 200 + this.resmessage = '绉诲簱鎴愬姛' + this.$refs.resmodal.show = true + + //閲嶆柊鍔犺浇鏁版嵁 + this.containerBlur(); + }) + } else if (res.cancel) { + } + }) + }); + } + } + } +</script> +<style lang="scss"> + .content { + height: 500rpx; + overflow-y: scroll; + width: 100%; + padding: 15rpx; + box-sizing: border-box; + .content-item { + padding: 15rpx; + background-color: #fff; + margin-bottom: 15rpx; + border-radius: 8rpx; + font-size: 16px; + } + } + .bg_item { + background: #FFEBCD !important; + } +</style> \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/pages/wareTool/borrow.vue b/LA24030_LuLiPackageLine_Pda/pages/wareTool/borrow.vue new file mode 100644 index 0000000..d997aef --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/wareTool/borrow.vue @@ -0,0 +1,278 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">宸ラ噺鍏峰�熺敤</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class=""> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="10"> + <u-form-item label="宸ラ噺鍏风紪鍙�:" prop="code" required + style="font-size: 16px;font-weight: bold;padding: 0;"> + <input v-model="warehouse.code" placeholder="璇峰綍鍏ユ垨鎵爜" @focus="warehouse.code = ''" + @blur="getOutWarehouse" style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </input> + </u-form-item> + </u-col> + <u-col span="2"> + <u-icon class="iconfont icon-saoma fontSize60rpx"></u-icon> + </u-col> + </u-row> + </u-form> + <view class="ware_content"> + <view v-for="(item, eindex) in singlist" :key="item.code" style="margin-top: 10rpx;"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" @open="open" :options="options" style="width: 100vw;"> + <view class="ware_item" :class="item.showItem ? 'bg_item' : ''" style="width: 100vw;"> + <u-row> + <u-col span="1"> + <view class="circle"> + {{eindex+1}} + </view> + </u-col> + <u-col span="10"> + <view class="color_f18202"> + {{item.code}} ({{item.name}}) + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 搴撳瓨鏁帮細{{item.exitQuantity}} + </view> + </u-col> + <u-col span="6" class="flex"> + <view class="" style="color: #808080;"> + 鍊熺敤鏁帮細 + </view> + <input + class="border_bottom_f18202 text-left color_f18202 fontSize32rpx" + style="background-color: #f2f2f2;height: 70rpx;width: 115rpx;" v-model="item.quantity" + type="number" @focus="item.quantity = ''" @blur="changeNum(item)" + /> + </u-col> + </u-row> + + <u-row> + <u-col span="6" class="flex"> + <view class="" style="color: #808080;padding: 10rpx 0 10rpx 45rpx;"> + 鍊熺敤浜猴細 + </view> + <u-input + class="border_bottom_f18202 text-left color_f18202 fontSize32rpx" + type="select" + placeholder="璇烽�夋嫨" + style="background-color: #f2f2f2;height: 70rpx;width: 115rpx;" v-model="item.createdUserName" + @click="selectPerson(eindex)"/> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + </view> + <u-select v-model="show" :list="borrowPersonList" value-name="name" label-name="name" @confirm="confirm"></u-select> + <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='鎻愪氦' @submit='submit' @reset='rest' /> + </view> + </view> + </view> +</template> + +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import {getWarePersonList,getWareCount,wareBorrow} from '../../api/wareTool/index.js' + import {getDate} from '../../utils/dateTime.js' + export default { + data() { + return { + renameFocus: true, + rescode: 0, + resmessage: "", + singlist: [], //鐗╂枡璇︽儏 + options: [ + { + text: '鍒犻櫎', + style: { + backgroundColor: '#fc9f35' + } + } + ], + warehouse: { + code: '' + }, + warehouseRules: { + code: [{ + required: true, + message: '宸ラ噺鍏风紪鍙蜂笉鑳戒负绌�', + trigger: 'blur' + }], + }, + activeIndex: 100, + show: false, + borrowPersonList: [], + operator: '', + }; + }, + components: { + ButtonModal, + ModalCode + }, + onLoad(){ + //鑾峰彇鍊熺敤浜哄垪琛� + this.getPersonList(); + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //鑾峰彇鍊熺敤浜哄垪琛� + getPersonList() { + getWarePersonList().then(res => { + if(res.data.rows.length == 0){ + return; + } + this.borrowPersonList = res.data.rows; + }) + }, + //鍊熺敤鏁板垽鏂� + changeNum(item) { + if(item.quantity > item.exitQuantity) { + this.rescode = 400 + this.resmessage = `鍊熺敤鏁颁笉鑳藉ぇ浜庡簱瀛樻暟` + this.$refs.resmodal.show = true + item.quantity = ''; + } + }, + // 鍊熺敤浜洪�夋嫨 + selectPerson(index) { + this.activeIndex = index; + this.show = true; + }, + //鍊熺敤浜虹‘瀹� + confirm(con) { + this.singlist[this.activeIndex].createdUserName = con[0].value; + }, + //鏌ヨ鐗╂枡 + getOutWarehouse() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + //鍒ゆ柇褰撳墠缂栧彿鏄惁瀛樺湪 + let count = this.singlist.findIndex(item => item.code == this.warehouse.code); + if(count > -1) { + this.singlist.unshift(...this.singlist.splice(count,1)) + return; + } + getWareCount(this.warehouse).then(res => { + if(res.data.rows.length == 0) { + this.rescode = 400 + this.resmessage = `缂栧彿涓�${warehouse.code}宸ラ噺鍏锋棤搴撳瓨鎴栦笉瀛樺湪` + this.$refs.resmodal.show = true + } + res.data.rows.map(item => { + item.createdUserName = ''; + item.exitQuantity = item.quantity; + item.show = false; + item.showItem = false; + }) + this.singlist.push(...res.data.rows); + }) + }else { + this.rescode = 400 + this.resmessage = `宸ラ噺鍏风紪鍙蜂笉鑳戒负绌篳 + this.$refs.resmodal.show = true + } + }) + }, + //鎵撳紑褰撳墠锛屽叧闂叾浠� + open(index) { + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + // 鐐瑰嚮浜嬩欢 + longpress(index,eindex){ + this.singlist.splice(eindex,1); + }, + submit() { + //鍊熺敤浜烘槸鍚﹀瓨鍦ㄤ负绌� + const index = this.singlist.findIndex(item => item.createdUserName == ''); + if(index > -1) { + this.rescode = 400 + this.resmessage = `瀛樺湪鍊熺敤浜轰负绌篳 + this.$refs.resmodal.show = true + return; + } + + //鍊熺敤鏁伴噺鏍¢獙 + const count = this.singlist.findIndex(item => item.quantity <= 0 || item.quantity > item.exitQuantity || item.quantity == ''); + if(count > -1) { + this.rescode = 400 + this.resmessage = `鍊熺敤鏁伴噺瀛樺湪寮傚父` + this.$refs.resmodal.show = true + return; + } + + this.singlist.map(item => { + item.createdTime = getDate(); + }) + + wareBorrow(this.singlist).then(res => { + this.rescode = 200 + this.resmessage = `鍊熺敤鎴愬姛` + this.$refs.resmodal.show = true + }) + this.rest(); + + }, + //閲嶇疆 + rest() { + this.singlist = []; + this.warehouse.code = ''; + this.activeIndex = 100; + } + } + } +</script> + +<style lang="scss" scoped> + .ware_content { + width: 100vw; + height: auto; + margin: 15rpx 0 160rpx 0; + .ware_item { + background: #fff; + margin: 10rpx auto; + padding: 8rpx; + font-size: 16px; + box-sizing: border-box; + .circle { + width: 40rpx; + height: 40rpx; + border-radius: 50%; + background: #f18202; + color: #fff; + font-size: 30rpx; + line-height:40rpx; + text-align: center; + } + .u-col { + font-size: 40rpx; + } + } + } + .bg_item { + background: #FFEBCD !important; + } + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/pages/wareTool/index.vue b/LA24030_LuLiPackageLine_Pda/pages/wareTool/index.vue new file mode 100644 index 0000000..178ee0f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/pages/wareTool/index.vue @@ -0,0 +1,278 @@ +<template> + <view class="overflow"> + <cu-custom bgColor="bg-white" :isBack="true"> + <block slot="backText"> + </block> + <block slot="content">宸ラ噺鍏峰綊杩�</block> + </cu-custom> + <view class="flex justify-end align-center padding_right30rpx padding_top12rpx"> + <text class="fontSize12rpx"> 鎿嶄綔浜猴細{{operator}} </text> + </view> + <modal-code ref="resmodal" :rescode='rescode' :resmessage='resmessage' /> + <view class=""> + <u-form labelPosition="top" :model="warehouse" ref="warehouseRef"> + <u-row class="border_bottom margin_top10rpx padding10" style="background-color: #fff;"> + <u-col span="12"> + <u-form-item label="鍊熺敤浜�:" prop="name" required + style="font-size: 16px;font-weight: bold;padding: 0;"> + <u-input v-model="warehouse.name" @click="showPerson = true" type="select" placeholder="閫夋嫨鍊熺敤浜�" + style="font-weight: bolder;margin-left: 15rpx;" + class="width padding_left25rpx"> + </u-input> + </u-form-item> + </u-col> + </u-row> + </u-form> + <view class="ware_content"> + <view v-for="(item, eindex) in singlist" :key="item.code" style="margin-top: 10rpx;"> + <u-swipe-action :show="item.show" :index="eindex" @click="longpress" @open="open" :options="options" style="width: 100vw;"> + <view class="ware_item" :class="item.showItem ? 'bg_item' : ''" style="width: 100vw;"> + <u-row> + <u-col span="1"> + <view class="circle"> + {{eindex+1}} + </view> + </u-col> + <u-col span="10"> + <view class="color_f18202"> + {{item.code}} ({{item.name}}) + </view> + </u-col> + </u-row> + <u-row> + <u-col span="6"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 鍊熺敤鏁帮細{{item.borrowQuantity}} + </view> + </u-col> + <u-col span="6"> + <view class="" style="padding: 10rpx 0 10rpx 45rpx;color: #808080;"> + 宸插綊杩樻暟锛歿{item.returnQuantity}} + </view> + </u-col> + </u-row> + + <u-row> + <u-col span="6" class="flex"> + <view class="" style="color: #808080;"> + 鏈褰掕繕鏁帮細 + </view> + <input + class="border_bottom_f18202 text-left color_f18202 fontSize32rpx" + style="background-color: #f2f2f2;height: 70rpx;width: 115rpx;" v-model="item.returnNum" + type="number" @focus="item.returnNum = ''" @blur="changeNum(item)" + /> + </u-col> + <u-col span="6" class="flex"> + <view class="" style="color: #808080;padding: 10rpx 0 10rpx 45rpx;"> + 褰掕繕浜猴細 + </view> + <u-input + class="border_bottom_f18202 text-left color_f18202 fontSize32rpx" + type="select" + placeholder="璇烽�夋嫨" + style="background-color: #f2f2f2;height: 70rpx;width: 115rpx;" v-model="item.createdUserName" + @click="selectPerson(eindex)"/> + </u-col> + </u-row> + </view> + </u-swipe-action> + </view> + </view> + <u-select v-model="show" :list="borrowPersonList" value-name="name" label-name="name" @confirm="confirm"></u-select> + <u-select v-model="showPerson" :list="borrowPersonList" value-name="name" label-name="name" @confirm="confirmPerson"></u-select> + <!-- <button-modal :empTytowerShow='true' cleaningTitle="閲嶇疆" garmenTitle='鎻愪氦' @submit='submit' @reset='rest' /> --> + </view> + </view> + </view> +</template> + +<script> + import ButtonModal from '../../components/buttonModal.vue' + import ModalCode from '../../components/ModalCode.vue' + import {getUnReturnList,getWarePersonList,wareReturn} from '../../api/wareTool/index.js' + import {getDate} from '../../utils/dateTime.js' + export default { + data() { + return { + renameFocus: true, + rescode: 0, + resmessage: "", + singlist: [], //鐗╂枡璇︽儏 + options: [ + { + text: '褰掕繕', + style: { + backgroundColor: '#fc9f35' + } + } + ], + showPerson: false, //閫夋嫨鍊熺敤浜� + warehouse: { + name: '' + }, + warehouseRules: { + name: [{ + required: true, + message: '鍊熺敤浜轰笉鑳戒负绌�', + trigger: 'blur' + }], + }, + activeIndex: 100, + show: false, + borrowPersonList: [], + operator: '', + }; + }, + components: { + ButtonModal, + ModalCode + }, + onLoad(){ + //鑾峰彇鍊熺敤浜哄垪琛� + this.getPersonList(); + }, + onReady() { + this.$refs.warehouseRef.setRules(this.warehouseRules) + }, + mounted() { + this.operator = JSON.parse(uni.getStorageSync('userInfo')).name + }, + methods: { + //鑾峰彇鍊熺敤浜�/褰掕繕鍒楄〃 + getPersonList() { + getWarePersonList().then(res => { + if(res.data.rows.length == 0){ + return; + } + this.borrowPersonList = res.data.rows; + }) + }, + //鍊熺敤浜洪�夋嫨 + confirmPerson(con) { + this.warehouse.name = con[0].value; + this.getOutWarehouse(); + }, + //褰掕繕鏁� + changeNum(item) { + let num1 = Number(Number(item.borrowQuantity) - Number(item.returnQuantity)).toFixed(3) //蹇呴』淇濈暀3浣嶅皬鏁� -鍚﹀垯浼氶�犳垚鍓╀綑鐗╂枡鏄皬鏁扮殑鏃跺��,鏃犳硶鏀惰揣 + if(Number(item.returnNum) > Number(num1)) { + this.rescode = 400 + this.resmessage = `鏈褰掕繕鏁颁笉鑳藉ぇ浜庡�熺敤鏁板噺鍘诲凡褰掕繕鏁癭 + this.$refs.resmodal.show = true + item.returnNum = ''; + } + }, + // 鍊熺敤浜洪�夋嫨 + selectPerson(index) { + this.activeIndex = index; + this.show = true; + }, + //鍊熺敤浜虹‘瀹� + confirm(con) { + this.singlist[this.activeIndex].createdUserName = con[0].value; + }, + //鑾峰彇褰撳墠鍊熺敤浜哄悕涓嬪�熺敤宸ラ噺鍏峰垪琛� + getOutWarehouse() { + this.$refs.warehouseRef.validate(valid => { + if (valid) { + getUnReturnList(this.warehouse).then(res => { + if(res.data.rows.length == 0) { + this.rescode = 400 + this.resmessage = `褰撳墠鍊熺敤浜烘病鏈夐渶瑕佸綊杩樺伐閲忓叿` + this.$refs.resmodal.show = true + return; + } + + const index = res.data.rows.reduce((curr,item) => { + if(item.borrowQuantity == item.returnQuantity) { + curr++ + } + return curr; + },0) + if(index == res.data.rows.length) { + this.rescode = 400 + this.resmessage = `褰撳墠鍊熺敤浜烘病鏈夐渶瑕佸綊杩樺伐閲忓叿` + this.$refs.resmodal.show = true + return; + } + + res.data.rows.map(item => { + item.returnNum = ''; + item.createdUserName = ''; + item.show = false; + item.showItem = false; + }) + + this.singlist = res.data.rows.filter(item => item.borrowQuantity != item.returnQuantity) + }) + } + }) + }, + //鎵撳紑褰撳墠锛屽叧闂叾浠� + open(index) { + this.singlist[index].show = true; + this.singlist.map((val, idx) => { + if (index != idx) this.singlist[idx].show = false; + }) + }, + // 鐐瑰嚮浜嬩欢 + longpress(index,eindex){ + const matInfo = this.singlist[eindex]; + if(matInfo.returnNum == '' || matInfo.returnNum <= 0 || matInfo.createdUserName == '') { + this.rescode = 400 + this.resmessage = `褰掕繕鏁伴噺鎴栬�呭綊杩樹汉鏁版嵁寮傚父` + this.$refs.resmodal.show = true + return; + } + + const arr = [{ + orderId: matInfo.id, + quantity: matInfo.returnNum, + returnId: this.borrowPersonList.find(person => person.name == matInfo.createdUserName).nickName, + returnName: matInfo.createdUserName, + remark: "string" + }] + + wareReturn(arr).then(res => { + this.rescode = 200 + this.resmessage = `褰掕繕鎴愬姛` + this.$refs.resmodal.show = true + this.getOutWarehouse(); + }) + } + } + } +</script> + +<style lang="scss" scoped> + .ware_content { + width: 100vw; + height: auto; + margin: 15rpx 0 10rpx 0; + .ware_item { + background: #fff; + margin: 10rpx auto; + padding: 8rpx; + font-size: 16px; + box-sizing: border-box; + .circle { + width: 40rpx; + height: 40rpx; + border-radius: 50%; + background: #f18202; + color: #fff; + font-size: 30rpx; + line-height:40rpx; + text-align: center; + } + .u-col { + font-size: 40rpx; + } + } + } + .bg_item { + background: #FFEBCD !important; + } + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/static/index/1.png b/LA24030_LuLiPackageLine_Pda/static/index/1.png new file mode 100644 index 0000000..ee5b55e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/1.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/index/artificial.png b/LA24030_LuLiPackageLine_Pda/static/index/artificial.png new file mode 100644 index 0000000..f111424 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/artificial.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/index/borrow.png b/LA24030_LuLiPackageLine_Pda/static/index/borrow.png new file mode 100644 index 0000000..f697459 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/borrow.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/index/callTray.png b/LA24030_LuLiPackageLine_Pda/static/index/callTray.png new file mode 100644 index 0000000..775c4be --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/callTray.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/index/cancel.png b/LA24030_LuLiPackageLine_Pda/static/index/cancel.png new file mode 100644 index 0000000..7b800bd --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/cancel.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/index/free.png b/LA24030_LuLiPackageLine_Pda/static/index/free.png new file mode 100644 index 0000000..07e3ef1 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/free.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/index/material.png b/LA24030_LuLiPackageLine_Pda/static/index/material.png new file mode 100644 index 0000000..1f8b876 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/material.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/index/ping.png b/LA24030_LuLiPackageLine_Pda/static/index/ping.png new file mode 100644 index 0000000..6e3eb23 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/ping.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/index/putIn.png b/LA24030_LuLiPackageLine_Pda/static/index/putIn.png new file mode 100644 index 0000000..f433198 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/putIn.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/index/receive.png b/LA24030_LuLiPackageLine_Pda/static/index/receive.png new file mode 100644 index 0000000..10053e1 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/receive.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/index/sort.png b/LA24030_LuLiPackageLine_Pda/static/index/sort.png new file mode 100644 index 0000000..e138d10 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/sort.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/index/takeMaterial.png b/LA24030_LuLiPackageLine_Pda/static/index/takeMaterial.png new file mode 100644 index 0000000..dd7ab33 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/takeMaterial.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/index/tou.png b/LA24030_LuLiPackageLine_Pda/static/index/tou.png new file mode 100644 index 0000000..8545474 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/tou.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/index/untie.png b/LA24030_LuLiPackageLine_Pda/static/index/untie.png new file mode 100644 index 0000000..05683e6 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/untie.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/index/ware.png b/LA24030_LuLiPackageLine_Pda/static/index/ware.png new file mode 100644 index 0000000..89c4432 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/index/ware.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/lanya.png b/LA24030_LuLiPackageLine_Pda/static/lanya.png new file mode 100644 index 0000000..614cee8 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/lanya.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/logo.jpg b/LA24030_LuLiPackageLine_Pda/static/logo.jpg new file mode 100644 index 0000000..da49afa --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/logo.jpg Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/modal/error.png b/LA24030_LuLiPackageLine_Pda/static/modal/error.png new file mode 100644 index 0000000..2c3637e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/modal/error.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/modal/iconCk.png b/LA24030_LuLiPackageLine_Pda/static/modal/iconCk.png new file mode 100644 index 0000000..0627360 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/modal/iconCk.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/static/modal/success.png b/LA24030_LuLiPackageLine_Pda/static/modal/success.png new file mode 100644 index 0000000..472b1ce --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/static/modal/success.png Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/store/index.js b/LA24030_LuLiPackageLine_Pda/store/index.js new file mode 100644 index 0000000..5ece09f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/store/index.js @@ -0,0 +1,16 @@ +import Vuex from 'vuex' +import user from './modules/user.js' +import syetemO from './modules/system.js' +import print from './modules/print.js' + +export default function(Vue){ + Vue.use(Vuex); + + const store = new Vuex.Store({ + modules:{ + user,system:syetemO,print + } + }) + + return store +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/store/modules/print.js b/LA24030_LuLiPackageLine_Pda/store/modules/print.js new file mode 100644 index 0000000..f514289 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/store/modules/print.js @@ -0,0 +1,26 @@ +export default { + namespaced: true, + state: () => ({ + deviceId:'', + blueInfo:null + }), + mutations: { + setDeviceId(state,val){ + state.deviceId = val; + }, + setBlueInfo(state,obj){ + state.blueInfo = obj; + } + }, + actions: { + + }, + getters: { + getDeviceId(state){ + return state.deviceId; + }, + getBlueInfo(state){ + return state.blueInfo; + } + } +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/store/modules/system.js b/LA24030_LuLiPackageLine_Pda/store/modules/system.js new file mode 100644 index 0000000..f59174e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/store/modules/system.js @@ -0,0 +1,15 @@ +export default { + namespaced: true, + state: () => ({ + + }), + mutations: { + + }, + actions: { + + }, + getters: { + + } +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/store/modules/user.js b/LA24030_LuLiPackageLine_Pda/store/modules/user.js new file mode 100644 index 0000000..f59174e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/store/modules/user.js @@ -0,0 +1,15 @@ +export default { + namespaced: true, + state: () => ({ + + }), + mutations: { + + }, + actions: { + + }, + getters: { + + } +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/store/node_modules.rar b/LA24030_LuLiPackageLine_Pda/store/node_modules.rar new file mode 100644 index 0000000..00afd85 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/store/node_modules.rar Binary files differ diff --git a/LA24030_LuLiPackageLine_Pda/styles/iconfont/iconfont.css b/LA24030_LuLiPackageLine_Pda/styles/iconfont/iconfont.css new file mode 100644 index 0000000..0823ca1 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/styles/iconfont/iconfont.css @@ -0,0 +1,79 @@ +@font-face { + font-family: "iconfont"; + /* Project id 3363024 */ + /* Color fonts */ + src: + url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAAyAAAsAAAAAGUwAAAwxAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHFQGYACEWgqiKJxbATYCJANECyQABCAFhGcHggsbmBUzo8LGAYggmyb7rxLoqZG3fACNpZ06RTs1CYjNHVBHSu3PLTtIAgKmXKhbGowkj4euw20XOp4ZSjk9bvovBiS1hNBSvQVKU3Hq1LZhMyPI765jSBUZhYm40onKhwD+ftS8nwG6vIIrsEBVtlbFdSd8eHZApdHvCqwHdaqcfHLLhiGBYQQgbSy9FKa214A4cHx73kI8v80d+PtmQCiTkJeTWABq6NbEm00b45h6Wgfu7a+1V3ubP0GFwjAIxzpx6vZw3sEH3iBxAVAoInCdCglkdKeqTtQIX3OXM2/tzrakKJtsdglMvNPOwFvH7N8fBUAAIGQpAy9p2nQBoVtmrxNEQ5E1IeDVHNqqqTIDwcIETfCACLQ81ktmQmgywAD4Gj4PAJhEPz/0E8iDAAAYlgJyWx1W1FZwWOx/X5d6O0lfO1LXC06dIEeKxYxZwk1yxpn0AYtUbqKuP7OMRiWRRPFOTH5d2tnJy/t29IlFa9hodBYU/gderlCq1BqtTm8wmgSJlFCciNyB4/PKiQjORKZqOSByVc6BQbFTfBBOSfSHUxED4dTEIN5liiEIpyWGw+mIkXB6YjScgRgLZyTG2WwpCTAIoCSBSHQ0DtjOlMGMl1jAGvkzylVEPaNtC5NcUF6h8UD28MhUNKPnqi72hpV2A+Zcq8StVY1rLqXWiV2LeE0rtpBqDcG34+w0yRLZ76HEa81h38+DnVRkEbPQ1tXfrmoVuQbxxhzyPCABM0mqk/sOEQIviKR8cXzEGHysNe8iQuHvfwbA0W2f049TiQVh2+EL+gq/JM9t8he/oi/Qc1NxJrd5Ni5E/jTNBnEgQ1K+uaSAizSPcg7JoTwt4sLGOmRX6E7dmjt2qu7EKsNJw+czO0bL7jLLNV+X0gzmLvW46tHKZYulhFmjKuWA7SEcnEXXjyqVmivTfu17eRMZ5Agss7rNpenG1PVrlm/AflIcNjHdYvbLYXb+DHa5KUtGtXlh2gCxXKVFRcnmWQBApcd1kDxt90I+ATORbaTgN3c883SEkOQAQLnGg7UAZRiftEH987PM3tluf065GTfjZniWd7HBC605ntRVT/0RFTD4blN2Pwyb6xSDxyjUZ6nAiwsWI0ZcL1ghVAiqjVG2x79MjF1C28EyImjublDYWQJ12C5BNEuKh14v61oQMGNdJVSslxwAWaPhjKlsPKNdPq4kz8e5WXVsidZTZMCwHEXHYj7gYXld7R40WeQqeE92FcW6tQKg+OKzx+vvnttGCMMQEDJNm2lKxSq9hgTsSAOYZkxANumkZuVb2tmyrqpgAzKXA/Sb/FWwCcvOuKu+DqGhLvPqoSJSEABgLWJ3PdvA6fp5hlUnM4BNSA14v8DX9mDxp8ESaY8nvF9UdR52YbqCV/4YyAfm9fTgrPu/jkfpibrKTWqaNVcKY5cquzk2gjv8oLJ73OMNhAEP4mojlfVrFjsagq3l0XZdt9lcT6XhCEiYkl9Prta3qd/J3TDSOzq9+K325UelR3hEaUpuSKkvTIzvmP3KLPaKDgs8HZD53KW0EZwUCQVuI+VlZZJuw+H9WeSGtEr/9cbddpVonQ2kWq39G5BfFCiXHfK4hLq6mWKOvzv74+0seNYeSNpCnWJ3bAQG1VFbAKEjhFQ739cGztmB6Sdd/V1Cv9UnyiCWxXZiq8OXXabbFPUldY00Yb6vtRxpp9G4W+18qE7e2as1PLXpFXOg88b2fwRA5cFpM/MAjFDGgsXAzN+N1mVp1iFNvhnCJ2unHdKKtDMOtJhcNFiD/5pIaze91/wS/srf+r6AnvgL7x5PbX5n2eznz+F/WHLotaI2Ouh9+DEscD5ty5xvWreNL57SUhoMKZ0T26uoV+FJ7gpSgpcpxIplYixYGN6Yin7hutCcuGO//IGqc4xyHSc35l4WXW2zdbnGK7mGbC5A5VA51y/ncgxD2/FmheQ9beXqkJxzqbDT4EqxutP37LxUfetZI6pWS5alDnYw7Qvlhwpl3PjeWzN3y6b06LSikj9n5CBH13xjbq4pv8Jh+71U12/eU3GJ6lTqE0t9+X2TKuPEYZOG6emLEp+dV9qNuvXaJvLT+puvPqN2u5hrq5RKu6y5PdNVJ/a9S5R7UkoFFKFb0xBptDQEM+oHHV5jMIUsfpQujp6353dk7ZkX7RUiM982CUnoZ6182akhKniuWsD9pFe9g9fSS60Gf9FLS4JJph85Ui8zsad0bE42aqRMn2A6lWCU6Y/CRXjqZSPvy5jdIxVbpxKsCVvjrlt7H5W2j8UvEBLiAr4jBtwa8bpNThlEa0X42WSg6T30No8nLtAXiPF4I90IAoO/c4olzmEzdKvjSKfeOewq5qys0bz2pCGKbTOYx2seM72h4dw6fFLzYdHTbzG34j6HddJWpKwbLhz+oJ+B1D2c+1BHGsbcXCRGmpGPKRRO2AxhFuF+uhEHv25rQg7NGuQgGxSLfSG51bFrYmdw17I4sKmbVq4M3uRrPuibh/yzwtqln6PhiwYpaO5TZh7p7xV643Fsg/G4kISHP/so21urpixtJ8oSoyqkDaJCOTqvbqTTrPcoNBdtO8Ov8cD2g3wxY4nzLB0lCD9ben7DehV/oemAXQ0LISHCCy9Fk7VTso9tnybpLLS6NoLA+O96xWJnppl8GDgnZOstbLPpE06Kr7L7Mx2sokZLR1NBhhaGgYJkQhbfKl5GJB/F6LX01bMdC3RU6Tq6LqNu3FavDJYXMZ0VsBmJMR2FK4UdYwDcHsSaHwTwEZ+YMcvtax+lTRIzh5N20Y4R3eFiD+wdLBz739nkJk0TNBH85aYYAJR3Cm/p9R/hZqDVOH7YqGktp8AkQxhEkcoQrXji0N/z/35cxGg+XnNAYFA+045dHdu7fdycKdA0ivATGryRyCAacQ3h/5ToWu/n60o00v5jY/cSfpGf2Is754pUkzx7TlebHNsasRWT7/wcjk92DrAqXcWNHFWC7qNk3MSnyvUvpJ+gFb7q//FDHyvB1+UxTWGUmZkxwvigsLUoe252td6BgVYflpqvltxFp7q4Dhz4e31ojT1ZvjzkmV7MAHmxU5lURv85WEKcJ6j21HFjFzljk3rxYn8U79rcn6gh90Fv/tInVZvFtCe7nNeR7SUZ2jSWbdqUZT8M74OWe2LI0NYluNCXpEqZTyKu1D9rRLIORVmYgg3C2RCGNBNYhqREoyjcLY9EEMisyKYTgximU9G0FXzM08ev+zMbzePiK6xy7MDHAzxphU2u50dHiVP1gfJsSsXp8Yfs6awms+G0u4gKkULp3Qwki3z/RYQ3mbT1HnpMNkPEC4kR61cSCyVwc+oxiZEAO3ypHz2UjSivqWIGHtZx63vrPjquSxy9LuabOJgMTgxVheFhXUITg4Di1/6JUD5w1YPKy/H8NZwnhmSfDNORs0hdGFsUxpGZKzOsiA0YxWpWEDGcZzAY9B8BIPA8S0aiqc+2rAdSUudBegSRAHJceB/2AxCYnb5AasFrSvrKZ2b6BOkF871yzyTNOzRJromigVwwS2R0DQqiAq2alH5ETv5Vcipg6WeVV4aVfBOo/6hsdr/oXoCGwKRsyb1+CstwXAYE/A2SV5HNAWQ+dH+XDwCVRamPzymAVehHOQLIDBj4G2QWAH+M5AjdN6vSzNyfPir9CoDxxQAS5SgFFBxTAjBB5MADx9IAQir15YPQ3BBQhgMAWMMgAEJaEwALtQcQcDwFKDjeCsBEeAE8cPwXQOBCyLUFYYNF6bGZvTYr070PU2NxOe3SeunRdrJV+erNnrBSzuZpqEExk52R5a/W2pw2j4zzNPSsknu9dsbucTkYzez2bPX1LsbtcdXaLN6Maq/XrcjMtEedJ8PicgAlDxsz7zWkFaO7PnFrWLg42cf3er++Tmyq+NQz8zAijng0OAwePSNbhiwGpJWdTP1mpG2DnqrIeZHYMWfwYJUDQ7OgAfXzCheGO7qslo1lm5GhWqDMTSHzOJ6dVc4wrzpa/HYAQCAfPxVgCIHQ/YxMzCysCAqNweLw4RleyovUAdUfPqg62OqnFa1g51CD8LqGJkGaF9TM0yJJNNpf2q2jGoqwofXn2bfqs9ccZVV2i7S/BR/buEsCGnpu4/yxdaMiWuRFoTkbWnLdhIY2mzuHt5xWB83SnW/U2BgBAAA=') format('woff2'); +} + +.iconfont { + font-family: "iconfont" !important; + font-size: 16px; + font-style: normal; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.icon-yichang:before { + content: "\e6a2"; +} + +.icon-wancheng:before { + content: "\e6a3"; +} + +.icon-saoma:before { + content: "\e749"; +} + +.icon-fanhui:before { + content: "\e600"; +} + +.icon-shouhuoguanli:before { + content: "\e685"; +} + +.icon-rukucaozuo:before { + content: "\e686"; +} + +.icon-pandianguanli1:before { + content: "\e698"; +} + +.icon-gongliangjuguanli:before { + content: "\e699"; +} + +.icon-jieyongguanli1:before { + content: "\e69a"; +} + +.icon-kuaidiguanli:before { + content: "\e69b"; +} + +.icon-wentibiaoji:before { + content: "\e69c"; +} + +.icon-baofeiguanli:before { + content: "\e69d"; +} + +.icon-tuihuoguanli1:before { + content: "\e69e"; +} + +.icon-fahuoguanli1:before { + content: "\e69f"; +} + +.icon-chukucaozuo:before { + content: "\e6a0"; +} + +.icon-biaoqianguanli1:before { + content: "\e6a1"; +} diff --git a/LA24030_LuLiPackageLine_Pda/styles/iconfont/iconfont.js b/LA24030_LuLiPackageLine_Pda/styles/iconfont/iconfont.js new file mode 100644 index 0000000..0850468 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/styles/iconfont/iconfont.js @@ -0,0 +1 @@ +!function(a){var l,t,h,i,F,o='<svg><symbol id="icon-yichang" viewBox="0 0 1177 1024"><path d="M1045.162667 851.797333L234.325333 853.333333a17.066667 17.066667 0 0 1-14.677333-25.6L624.298667 124.416a17.066667 17.066667 0 0 1 29.525333 0l406.186667 701.781333a17.066667 17.066667 0 0 1-14.848 25.6z" fill="#FFC0C0" ></path><path d="M135.338667 921.6a34.133333 34.133333 0 0 1-29.525334-17.066667 34.133333 34.133333 0 0 1 0-34.133333L538.282667 119.466667a34.133333 34.133333 0 0 1 29.696-17.066667A34.133333 34.133333 0 0 1 597.333333 119.466667l434.346667 750.933333a34.133333 34.133333 0 0 1-29.525333 51.2H135.338667zM567.978667 136.533333L135.338667 887.466667h866.816z" fill="#FF1229" ></path><path d="M568.661333 665.6a17.066667 17.066667 0 0 1-17.066666-17.066667V409.6a17.066667 17.066667 0 0 1 34.133333 0v238.933333a17.066667 17.066667 0 0 1-17.066667 17.066667z" fill="#FF1229" ></path><path d="M568.661333 725.333333m-25.6 0a25.6 25.6 0 1 0 51.2 0 25.6 25.6 0 1 0-51.2 0Z" fill="#FF1229" ></path></symbol><symbol id="icon-wancheng" viewBox="0 0 1177 1024"><path d="M110.933333 196.266667m-76.8 0a76.8 76.8 0 1 0 153.6 0 76.8 76.8 0 1 0-153.6 0Z" fill="#FFE4C5" ></path><path d="M110.933333 281.6a85.333333 85.333333 0 1 1 85.333334-85.333333 85.333333 85.333333 0 0 1-85.333334 85.333333z m0-153.6a68.266667 68.266667 0 1 0 68.266667 68.266667 68.266667 68.266667 0 0 0-68.266667-68.266667z" fill="#F18201" ></path><path d="M358.4 119.466667m-42.666667 0a42.666667 42.666667 0 1 0 85.333334 0 42.666667 42.666667 0 1 0-85.333334 0Z" fill="#FFE4C5" ></path><path d="M358.4 170.666667a51.2 51.2 0 1 1 51.2-51.2 51.2 51.2 0 0 1-51.2 51.2z m0-85.333334a34.133333 34.133333 0 1 0 34.133333 34.133334 34.133333 34.133333 0 0 0-34.133333-34.133334z" fill="#F18201" ></path><path d="M605.866667 588.8m-384 0a384 384 0 1 0 768 0 384 384 0 1 0-768 0Z" fill="#FFE4C5" ></path><path d="M865.28 819.2a17.066667 17.066667 0 0 1-10.922667-4.096 17.066667 17.066667 0 0 1-2.048-23.893333 366.08 366.08 0 0 0 51.2-80.384 329.216 329.216 0 0 0 13.653334-33.109334 17.066667 17.066667 0 1 1 32.085333 11.605334 389.461333 389.461333 0 0 1-14.848 36.010666 398.165333 398.165333 0 0 1-56.32 87.722667 17.066667 17.066667 0 0 1-12.8 6.144zM955.733333 571.733333a17.066667 17.066667 0 0 1-17.066666-17.066666 366.933333 366.933333 0 0 0-705.024-142.848 17.066667 17.066667 0 1 1-31.402667-13.312A401.066667 401.066667 0 0 1 972.8 554.666667a17.066667 17.066667 0 0 1-17.066667 17.066666zM571.733333 955.733333A401.408 401.408 0 0 1 170.666667 554.666667a17.066667 17.066667 0 0 1 34.133333 0 366.933333 366.933333 0 0 0 586.410667 294.058666 17.066667 17.066667 0 1 1 20.48 27.306667A396.629333 396.629333 0 0 1 571.733333 955.733333z" fill="#F18201" ></path><path d="M541.184 669.696a59.050667 59.050667 0 0 1-40.277333-15.872l-143.872-132.096a25.6 25.6 0 0 1 34.133333-37.717333l143.872 132.096a8.533333 8.533333 0 0 0 6.144 2.389333 8.704 8.704 0 0 0 5.802667-2.901333l215.722666-234.154667a25.6 25.6 0 0 1 37.717334 34.133333L585.216 650.24a59.050667 59.050667 0 0 1-41.472 19.285333zM878.933333 230.4a17.066667 17.066667 0 0 1-12.117333-4.949333 17.066667 17.066667 0 0 1 0-24.234667l68.266667-68.266667a17.066667 17.066667 0 1 1 24.234666 24.234667l-68.266666 68.266667a17.066667 17.066667 0 0 1-12.117334 4.949333zM1083.733333 418.133333a17.066667 17.066667 0 0 1-12.117333-4.949333 17.066667 17.066667 0 0 1 0-24.234667l34.133333-34.133333a17.066667 17.066667 0 0 1 24.234667 24.234667l-34.133333 34.133333a17.066667 17.066667 0 0 1-12.117334 4.949333z" fill="#F18201" ></path></symbol><symbol id="icon-saoma" viewBox="0 0 1024 1024"><path d="M928.016126 543.908618 95.983874 543.908618c-17.717453 0-31.994625-14.277171-31.994625-31.994625S78.26642 479.919368 95.983874 479.919368l832.032253 0c17.717453 0 31.994625 14.277171 31.994625 31.994625S945.73358 543.908618 928.016126 543.908618z" ></path><path d="M832.032253 928.016126 639.892491 928.016126c-17.717453 0-31.994625-14.277171-31.994625-31.994625s14.277171-31.994625 31.994625-31.994625l191.967747 0c17.717453 0 31.994625-14.277171 31.994625-31.994625l0-159.973123c0-17.717453 14.277171-31.994625 31.994625-31.994625s31.994625 14.277171 31.994625 31.994625l0 159.973123C928.016126 884.840585 884.840585 928.016126 832.032253 928.016126z" ></path><path d="M351.94087 928.016126l-159.973123 0c-52.980346 0-95.983874-43.003528-95.983874-95.983874l0-159.973123c0-17.717453 14.277171-31.994625 31.994625-31.994625S159.973123 654.341676 159.973123 672.05913l0 159.973123c0 17.717453 14.449185 31.994625 31.994625 31.994625l159.973123 0c17.717453 0 31.994625 14.277171 31.994625 31.994625C383.935495 913.738955 369.658324 928.016126 351.94087 928.016126z" ></path><path d="M127.978498 383.935495c-17.717453 0-31.994625-14.277171-31.994625-31.994625l0-159.973123c0-52.980346 43.003528-95.983874 95.983874-95.983874l159.973123 0c17.717453 0 31.994625 14.277171 31.994625 31.994625S369.658324 159.973123 351.94087 159.973123l-159.973123 0c-17.545439 0-31.994625 14.449185-31.994625 31.994625l0 159.973123C159.973123 369.658324 145.695952 383.935495 127.978498 383.935495z" ></path><path d="M896.021502 383.935495c-17.717453 0-31.994625-14.277171-31.994625-31.994625l0-159.973123c0-17.545439-14.277171-31.994625-31.994625-31.994625L639.892491 159.973123c-17.717453 0-31.994625-14.277171-31.994625-31.994625s14.277171-31.994625 31.994625-31.994625l191.967747 0c52.980346 0 95.983874 43.003528 95.983874 95.983874l0 159.973123C928.016126 369.658324 913.738955 383.935495 896.021502 383.935495z" ></path></symbol><symbol id="icon-fanhui" viewBox="0 0 1024 1024"><path d="M624.788992 204.047974 585.205965 164.464026 219.560038 530.185011 585.205965 895.864013 624.788992 856.280986 298.663014 530.16105Z" ></path></symbol><symbol id="icon-shouhuoguanli" viewBox="0 0 1024 1024"><path d="M509.44 510.836364m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M811.985455 709.818182H294.865455V282.763636H226.909091a18.618182 18.618182 0 0 1-20.014546-16.989091 18.618182 18.618182 0 0 1 20.014546-16.98909h107.52V674.909091h477.556364zM294.865455 709.818182h79.36v27.927273a23.272727 23.272727 0 0 1-23.272728 23.272727h-32.814545a23.272727 23.272727 0 0 1-23.272727-23.272727v-27.927273zM732.625455 709.818182h79.36v27.927273a23.272727 23.272727 0 0 1-23.272728 23.272727h-32.814545a23.272727 23.272727 0 0 1-23.272727-23.272727v-27.927273z" fill="#FFFFFF" ></path><path d="M764.741818 282.065455H420.770909a46.545455 46.545455 0 0 0-46.545454 46.545454v265.774546a46.545455 46.545455 0 0 0 46.545454 46.545454h343.970909a46.545455 46.545455 0 0 0 46.545455-46.545454V328.610909a46.545455 46.545455 0 0 0-46.545455-46.545454z m-102.167273 97.745454h-139.636363a23.272727 23.272727 0 0 1 0-46.545454h139.636363a23.272727 23.272727 0 0 1 0 46.545454z" fill="#FFFFFF" ></path></symbol><symbol id="icon-rukucaozuo" viewBox="0 0 1024 1024"><path d="M512 510.836364m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M814.545455 404.712727a23.272727 23.272727 0 0 1-10.705455-2.792727l-283.461818-148.945455a17.454545 17.454545 0 0 0-16.523637 0l-283.461818 148.945455a23.272727 23.272727 0 0 1-21.643636-41.192727l283.461818-148.945455a64.698182 64.698182 0 0 1 59.810909 0l283.461818 148.945455a23.272727 23.272727 0 0 1 9.774546 31.418182 23.272727 23.272727 0 0 1-20.712727 12.567272z" fill="#FFFFFF" ></path><path d="M529.687273 232.727273a36.770909 36.770909 0 0 0-35.374546 0l-224.349091 123.810909v344.901818a37.934545 37.934545 0 0 0 37.236364 38.167273h409.6a37.701818 37.701818 0 0 0 37.236364-38.167273V356.538182z m85.876363 339.083636h-158.254545v23.272727a4.887273 4.887273 0 0 1-7.68 3.723637l-62.603636-50.967273a4.654545 4.654545 0 0 1 0-7.214545l62.603636-50.967273a4.654545 4.654545 0 0 1 7.68 3.490909v31.418182h158.254545a23.272727 23.272727 0 0 1 0 46.545454z" fill="#FFFFFF" ></path></symbol><symbol id="icon-pandianguanli1" viewBox="0 0 1024 1024"><path d="M505.716364 505.716364m-488.727273 0a488.727273 488.727273 0 1 0 977.454545 0 488.727273 488.727273 0 1 0-977.454545 0Z" fill="#F18202" ></path><path d="M785.454545 394.24L516.654545 217.832727a20.712727 20.712727 0 0 0-21.876363 0L226.210909 394.24a26.298182 26.298182 0 0 0-8.610909 33.047273 20.945455 20.945455 0 0 0 27.229091 10.705454l2.327273-1.163636 251.810909-165.701818a11.869091 11.869091 0 0 1 13.498182 0l251.810909 165.701818a20.945455 20.945455 0 0 0 28.392727-6.981818 12.567273 12.567273 0 0 0 0-2.56 25.832727 25.832727 0 0 0-8.378182-33.047273z" fill="#FFFFFF" ></path><path d="M715.636364 442.181818l-193.861819-125.672727a31.185455 31.185455 0 0 0-33.512727 0L294.4 442.181818a37.701818 37.701818 0 0 0-16.290909 31.883637v284.858181a34.909091 34.909091 0 0 0 32.814545 37.236364H558.545455s11.403636-63.767273 27.927272-82.618182 145.454545-162.909091 145.454546-162.909091v-77.265454a37.469091 37.469091 0 0 0-16.290909-31.185455z m-288.581819 290.909091a8.843636 8.843636 0 0 1-8.145454 9.076364h-75.636364a9.076364 9.076364 0 0 1-8.610909-9.076364v-86.109091a9.076364 9.076364 0 0 1 8.610909-9.076363H418.909091a8.610909 8.610909 0 0 1 8.145454 9.076363v85.410909z m0-134.749091a8.610909 8.610909 0 0 1-8.145454 9.076364h-75.636364a9.076364 9.076364 0 0 1-8.610909-9.076364V512a9.076364 9.076364 0 0 1 8.610909-9.076364H418.909091a8.843636 8.843636 0 0 1 8.145454 9.076364v85.410909z m121.25091 134.749091a8.843636 8.843636 0 0 1-8.378182 9.076364h-76.8a8.378182 8.378182 0 0 1-8.145455-9.076364v-86.109091a8.610909 8.610909 0 0 1 8.145455-9.076363h75.869091a8.843636 8.843636 0 0 1 8.145454 9.076363z m0-134.749091a8.843636 8.843636 0 0 1-8.378182 9.076364h-76.8a8.378182 8.378182 0 0 1-8.145455-9.076364V512a8.610909 8.610909 0 0 1 8.145455-9.076364h75.869091a8.843636 8.843636 0 0 1 8.145454 9.076364z m242.967272 11.636364V605.090909a62.603636 62.603636 0 0 0-9.076363-14.429091 38.865455 38.865455 0 0 0-10.705455-9.774545l-6.283636-2.094546a14.661818 14.661818 0 0 0-6.283637-1.396363h-6.749091A23.272727 23.272727 0 0 0 744.727273 581.818182l-6.283637 6.283636-6.283636 6.516364 42.356364 46.545454 3.490909-3.490909 3.490909-3.956363 4.887273-5.352728a19.549091 19.549091 0 0 0 4.887272-12.8 49.105455 49.105455 0 0 0 0-6.050909z m-159.418182 96.814545l-12.334545 14.196364-6.516364 7.214545a57.483636 57.483636 0 0 0-4.887272 6.283637c0 2.094545-2.094545 4.421818-3.025455 6.516363a34.443636 34.443636 0 0 0-2.792727 6.749091 69.818182 69.818182 0 0 1-3.723637 13.498182l-3.490909 13.730909a49.338182 49.338182 0 0 1-2.327272 10.007273 12.8 12.8 0 0 0 0 9.309091 8.843636 8.843636 0 0 0 8.145454 2.094545 64.930909 64.930909 0 0 0 9.076364-2.327272l12.567273-3.956364 12.8-4.887273 9.30909-4.421818a33.745455 33.745455 0 0 0 6.05091-3.956364 35.141818 35.141818 0 0 0 5.352727-4.887272l5.585454-6.050909 12.101819-13.498182 16.290909-17.92 18.152727-20.247273 48.407273-54.458182-42.356364-46.545454z" fill="#FFFFFF" ></path></symbol><symbol id="icon-gongliangjuguanli" viewBox="0 0 1024 1024"><path d="M512 499.432727m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M470.341818 503.854545a41.658182 41.658182 0 0 0 83.316364 0 37.701818 37.701818 0 0 0-6.050909-20.247272h-71.214546a37.701818 37.701818 0 0 0-6.050909 20.247272z" fill="#FFFFFF" ></path><path d="M597.410909 483.607273a73.309091 73.309091 0 0 1 2.792727 20.247272 88.203636 88.203636 0 0 1-176.407272 0 73.309091 73.309091 0 0 1 2.792727-20.247272H232.727273V744.727273a46.545455 46.545455 0 0 0 46.545454 46.545454h465.454546a46.545455 46.545455 0 0 0 46.545454-46.545454V483.607273zM279.272727 308.363636h465.454546a46.545455 46.545455 0 0 1 46.545454 46.545455v106.821818H232.727273v-106.821818a46.545455 46.545455 0 0 1 46.545454-46.545455z" fill="#FFFFFF" ></path><path d="M635.112727 308.363636h-46.545454V269.963636a52.363636 52.363636 0 0 0-2.094546-13.963636h-148.945454a52.363636 52.363636 0 0 0-2.094546 14.894545v38.4h-46.545454V269.963636c0-36.072727 16.523636-61.44 40.029091-61.44h166.167272c23.272727 0 40.029091 25.367273 40.029091 61.44z" fill="#FFFFFF" ></path></symbol><symbol id="icon-jieyongguanli1" viewBox="0 0 1024 1024"><path d="M515.490909 510.836364m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M801.745455 527.592727a795.229091 795.229091 0 0 1-152.203637-66.56c-33.745455-15.825455-53.061818-3.025455-131.025454 15.127273a753.803636 753.803636 0 0 1-111.476364 20.014545 46.545455 46.545455 0 0 0 28.858182 60.276364c25.832727 8.610909 121.018182 0 145.687273-5.12 11.869091-1.861818 13.498182 13.032727 0 27.927273a228.072727 228.072727 0 0 1-82.385455 38.4 205.265455 205.265455 0 0 1-101.236364-5.818182 682.356364 682.356364 0 0 0-135.68-60.509091c-53.527273-12.8-48.64 35.374545-48.64 35.374546s99.84 67.956364 131.025455 85.410909 78.894545 63.767273 121.250909 60.276363 194.792727-44.683636 228.305455-40.261818c14.661818 2.094545 37.934545 8.378182 59.810909 13.963636h1.629091a16.058182 16.058182 0 0 0 5.585454 0 18.152727 18.152727 0 0 0 15.36-9.076363 48.64 48.64 0 0 0 2.327273-4.887273 897.396364 897.396364 0 0 0 39.330909-139.636364 23.272727 23.272727 0 0 0-15.825455-26.530909z m-506.647273-158.487272h252.043636a40.029091 40.029091 0 0 0 0-79.825455H295.098182a40.029091 40.029091 0 0 0 0 79.825455z" fill="#FFFFFF" ></path></symbol><symbol id="icon-kuaidiguanli" viewBox="0 0 1024 1024"><path d="M512 512m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M791.272727 395.636364H232.727273a23.272727 23.272727 0 0 0-23.272728 23.272727v325.818182a23.272727 23.272727 0 0 0 23.272728 23.272727h558.545454a23.272727 23.272727 0 0 0 23.272728-23.272727V418.909091a23.272727 23.272727 0 0 0-23.272728-23.272727z m-488.727272 162.909091h93.090909a23.272727 23.272727 0 0 1 0 46.545454h-93.090909a23.272727 23.272727 0 0 1 0-46.545454z m186.181818 139.636363h-186.181818a23.272727 23.272727 0 0 1 0-46.545454h186.181818a23.272727 23.272727 0 0 1 0 46.545454zM522.705455 372.363636h272.290909c8.610909 0 13.730909-6.283636 9.309091-11.170909l-94.72-101.701818a12.334545 12.334545 0 0 0-9.076364-3.490909h-177.803636zM501.294545 256H323.490909a12.334545 12.334545 0 0 0-9.076364 3.490909l-94.72 101.701818c-4.421818 4.887273 0 11.170909 9.309091 11.170909h272.290909z" fill="#FFFFFF" ></path></symbol><symbol id="icon-wentibiaoji" viewBox="0 0 1024 1024"><path d="M505.949091 506.414545m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M397.032727 397.963636h-73.774545a266.007273 266.007273 0 0 1 10.24-82.152727 153.134545 153.134545 0 0 1 56.087273-75.403636 172.450909 172.450909 0 0 1 56.087272-28.625455A227.607273 227.607273 0 0 1 512 201.774545a186.181818 186.181818 0 0 1 124.043636 41.89091 152.436364 152.436364 0 0 1 53.527273 122.414545 133.818182 133.818182 0 0 1-17.454545 69.818182 378.88 378.88 0 0 1-61.207273 69.818182 397.730909 397.730909 0 0 0-46.545455 48.64 173.149091 173.149091 0 0 0-26.763636 104.727272h-74.24a242.734545 242.734545 0 0 1 17.454545-103.098181 369.570909 369.570909 0 0 1 62.138182-77.032728c24.436364-25.832727 39.563636-41.890909 45.149091-48.64a107.054545 107.054545 0 0 0 21.876364-67.956363 95.185455 95.185455 0 0 0-20.247273-60.276364 96.581818 96.581818 0 0 0-81.221818-35.141818 97.047273 97.047273 0 0 0-95.418182 52.829091 171.52 171.52 0 0 0-16.058182 78.196363z m145.92 327.447273v85.410909h-79.592727v-85.410909z" fill="#FFFFFF" ></path></symbol><symbol id="icon-baofeiguanli" viewBox="0 0 1024 1024"><path d="M509.44 512m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M253.44 262.749091h512a23.272727 23.272727 0 0 1 23.272727 23.272727V302.545455h-558.545454v-16.523637a23.272727 23.272727 0 0 1 23.272727-23.272727zM492.916364 222.72h33.28a23.272727 23.272727 0 0 1 23.272727 23.272727v16.523637h-79.825455v-16.523637a23.272727 23.272727 0 0 1 23.272728-23.272727zM453.818182 638.836364a94.487273 94.487273 0 0 0 51.432727 15.127272 96.581818 96.581818 0 0 0 96.349091-95.418181 94.487273 94.487273 0 0 0-15.127273-51.432728z" fill="#FFFFFF" ></path><path d="M270.196364 322.56v432.174545a46.545455 46.545455 0 0 0 46.545454 46.545455h385.629091a46.545455 46.545455 0 0 0 46.545455-46.545455V322.56z m235.054545 377.949091a142.894545 142.894545 0 1 1 142.894546-141.963636 142.894545 142.894545 0 0 1-142.894546 141.963636z" fill="#FFFFFF" ></path><path d="M505.250909 461.265455A95.650909 95.650909 0 0 0 421.701818 605.090909l130.792727-130.792727a95.650909 95.650909 0 0 0-47.243636-13.032727z" fill="#FFFFFF" ></path></symbol><symbol id="icon-tuihuoguanli1" viewBox="0 0 1024 1024"><path d="M512 512m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M522.705455 372.363636h272.290909c8.610909 0 13.730909-6.283636 9.309091-11.170909l-94.72-101.701818a12.334545 12.334545 0 0 0-9.076364-3.490909h-177.803636zM501.294545 256H323.490909a12.334545 12.334545 0 0 0-9.076364 3.490909l-94.72 101.701818c-4.421818 4.887273 0 11.170909 9.309091 11.170909h272.290909zM791.272727 395.636364H232.727273a23.272727 23.272727 0 0 0-23.272728 23.272727v325.818182a23.272727 23.272727 0 0 0 23.272728 23.272727h558.545454a23.272727 23.272727 0 0 0 23.272728-23.272727V418.909091a23.272727 23.272727 0 0 0-23.272728-23.272727zM533.876364 693.76h-84.945455a3.723636 3.723636 0 0 1-3.723636-3.723636V651.636364a3.723636 3.723636 0 0 1 3.723636-3.723637h87.970909A43.985455 43.985455 0 0 0 581.818182 605.090909a30.487273 30.487273 0 0 0-1.163637-9.076364 43.985455 43.985455 0 0 0-21.178181-26.530909 40.494545 40.494545 0 0 0-16.756364-6.050909 61.905455 61.905455 0 0 0-6.516364 0h-34.909091v25.134546a4.189091 4.189091 0 0 1-4.18909 3.956363h-1.861819l-97.512727-53.527272a5.352727 5.352727 0 0 1-2.094545-7.214546 5.585455 5.585455 0 0 1 1.861818-2.094545l97.512727-58.414546a4.421818 4.421818 0 0 1 5.818182 1.396364 6.749091 6.749091 0 0 1 0 2.094545V512H512a258.327273 258.327273 0 0 1 37.934545 0 91.229091 91.229091 0 0 1 68.421819 48.872727 108.218182 108.218182 0 0 1 10.007272 46.545455 90.065455 90.065455 0 0 1-94.487272 86.341818z" fill="#FFFFFF" ></path></symbol><symbol id="icon-fahuoguanli1" viewBox="0 0 1024 1024"><path d="M512 510.836364m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M521.774545 372.363636h282.065455c8.378182 0 13.498182-6.283636 9.076364-10.938181l-93.090909-101.236364a11.869091 11.869091 0 0 0-8.843637-3.490909h-189.207273zM506.181818 256H316.509091a11.869091 11.869091 0 0 0-8.843636 3.490909l-93.09091 101.236364c-4.421818 4.654545 0 10.938182 9.076364 10.938182h282.530909zM787.549091 395.636364H232.727273a23.272727 23.272727 0 0 0-23.272728 23.272727v323.258182a23.272727 23.272727 0 0 0 23.272728 23.272727h554.821818a23.272727 23.272727 0 0 0 23.272727-23.272727V418.909091a23.272727 23.272727 0 0 0-23.272727-23.272727z m-120.087273 186.181818l-84.712727 69.818182a3.258182 3.258182 0 0 1-5.352727-2.327273V605.090909h-218.065455a7.912727 7.912727 0 0 1-7.912727-7.912727v-34.210909a7.912727 7.912727 0 0 1 7.912727-7.912728h218.065455v-46.545454a3.258182 3.258182 0 0 1 5.352727-2.56l84.712727 69.818182a3.025455 3.025455 0 0 1 0 6.050909z" fill="#FFFFFF" ></path></symbol><symbol id="icon-chukucaozuo" viewBox="0 0 1024 1024"><path d="M512 510.836364m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M814.545455 404.712727a23.272727 23.272727 0 0 1-10.705455-2.792727l-283.461818-148.945455a17.454545 17.454545 0 0 0-16.523637 0l-283.461818 148.945455a23.272727 23.272727 0 0 1-21.643636-41.192727l283.461818-148.945455a64.698182 64.698182 0 0 1 59.810909 0l283.461818 148.945455a23.272727 23.272727 0 0 1 9.774546 31.418182 23.272727 23.272727 0 0 1-20.712727 12.567272z" fill="#FFFFFF" ></path><path d="M529.687273 232.727273a36.770909 36.770909 0 0 0-35.374546 0l-224.349091 123.810909v344.901818a37.934545 37.934545 0 0 0 37.236364 38.167273h409.6a37.701818 37.701818 0 0 0 37.236364-38.167273V356.538182z m107.287272 315.810909l-62.603636 50.967273a4.654545 4.654545 0 0 1-7.447273-3.723637v-23.272727h-158.254545a23.272727 23.272727 0 0 1 0-46.545455h158.254545v-32.581818a4.654545 4.654545 0 0 1 7.447273-3.490909l62.603636 50.967273a4.654545 4.654545 0 0 1 0 7.214545z" fill="#FFFFFF" ></path></symbol><symbol id="icon-biaoqianguanli1" viewBox="0 0 1024 1024"><path d="M518.283636 512m-488.727272 0a488.727273 488.727273 0 1 0 977.454545 0 488.727273 488.727273 0 1 0-977.454545 0Z" fill="#F18202" ></path><path d="M395.636364 209.454545h246.458181a46.545455 46.545455 0 0 1 46.545455 46.545455v29.090909H349.090909V256a46.545455 46.545455 0 0 1 46.545455-46.545455zM660.48 455.214545h-279.272727a29.323636 29.323636 0 0 0-30.021818 28.625455v294.865455A36.770909 36.770909 0 0 0 387.956364 814.545455h264.843636a36.770909 36.770909 0 0 0 37.701818-35.84V483.84a29.323636 29.323636 0 0 0-30.021818-28.625455z m-46.545455 250.647273H425.890909a23.272727 23.272727 0 1 1 0-46.545454h188.974546a23.272727 23.272727 0 0 1 0 46.545454z m0-95.418182H425.890909a23.272727 23.272727 0 0 1 0-46.545454h188.974546a23.272727 23.272727 0 0 1 0 46.545454z" fill="#FFFFFF" ></path><path d="M744.727273 303.941818H291.374545a37.701818 37.701818 0 0 0-37.701818 37.934546v151.272727a37.469091 37.469091 0 0 0 37.701818 37.701818h37.934546v-56.552727a37.934545 37.934545 0 0 1 37.701818-37.934546h302.545455a37.934545 37.934545 0 0 1 37.934545 37.934546v56.552727H744.727273a37.701818 37.701818 0 0 0 37.701818-37.701818v-151.272727A37.934545 37.934545 0 0 0 744.727273 303.941818z m-8.843637 69.818182a23.272727 23.272727 0 1 1 23.272728-23.272727 23.272727 23.272727 0 0 1-22.574546 23.272727z" fill="#FFFFFF" ></path></symbol></svg>',e=(e=document.getElementsByTagName("script"))[e.length-1].getAttribute("data-injectcss"),d=function(a,l){l.parentNode.insertBefore(a,l)};if(e&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(a){console&&console.log(a)}}function n(){F||(F=!0,h())}function p(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(p,50)}n()}l=function(){var a,l=document.createElement("div");l.innerHTML=o,o=null,(l=l.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",l=l,(a=document.body).firstChild?d(l,a.firstChild):a.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(l,0):(t=function(){document.removeEventListener("DOMContentLoaded",t,!1),l()},document.addEventListener("DOMContentLoaded",t,!1)):document.attachEvent&&(h=l,i=a.document,F=!1,p(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,n())})}(window); \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/styles/iconfont/iconfont.json b/LA24030_LuLiPackageLine_Pda/styles/iconfont/iconfont.json new file mode 100644 index 0000000..2a206b3 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/styles/iconfont/iconfont.json @@ -0,0 +1,121 @@ +{ + "id": "3363024", + "name": "makio", + "font_family": "iconfont", + "css_prefix_text": "icon-", + "description": "", + "glyphs": [ + { + "icon_id": "29564608", + "name": "寮傚父", + "font_class": "yichang", + "unicode": "e6a2", + "unicode_decimal": 59042 + }, + { + "icon_id": "29564609", + "name": "瀹屾垚", + "font_class": "wancheng", + "unicode": "e6a3", + "unicode_decimal": 59043 + }, + { + "icon_id": "577354", + "name": "鎵爜", + "font_class": "saoma", + "unicode": "e749", + "unicode_decimal": 59209 + }, + { + "icon_id": "7418", + "name": "杩斿洖", + "font_class": "fanhui", + "unicode": "e600", + "unicode_decimal": 58880 + }, + { + "icon_id": "29343964", + "name": "鏀惰揣绠$悊", + "font_class": "shouhuoguanli", + "unicode": "e685", + "unicode_decimal": 59013 + }, + { + "icon_id": "29343965", + "name": "涓婃灦鎿嶄綔", + "font_class": "rukucaozuo", + "unicode": "e686", + "unicode_decimal": 59014 + }, + { + "icon_id": "29343966", + "name": "鐩樼偣绠$悊", + "font_class": "pandianguanli1", + "unicode": "e698", + "unicode_decimal": 59032 + }, + { + "icon_id": "29343967", + "name": "宸ラ噺鍏风鐞�", + "font_class": "gongliangjuguanli", + "unicode": "e699", + "unicode_decimal": 59033 + }, + { + "icon_id": "29343968", + "name": "鍊熺敤绠$悊", + "font_class": "jieyongguanli1", + "unicode": "e69a", + "unicode_decimal": 59034 + }, + { + "icon_id": "29343969", + "name": "蹇�掔鐞�", + "font_class": "kuaidiguanli", + "unicode": "e69b", + "unicode_decimal": 59035 + }, + { + "icon_id": "29343970", + "name": "闂鏍囪", + "font_class": "wentibiaoji", + "unicode": "e69c", + "unicode_decimal": 59036 + }, + { + "icon_id": "29343971", + "name": "鎶ュ簾绠$悊", + "font_class": "baofeiguanli", + "unicode": "e69d", + "unicode_decimal": 59037 + }, + { + "icon_id": "29343972", + "name": "閫�璐х鐞�", + "font_class": "tuihuoguanli1", + "unicode": "e69e", + "unicode_decimal": 59038 + }, + { + "icon_id": "29343973", + "name": "鍙戣揣绠$悊", + "font_class": "fahuoguanli1", + "unicode": "e69f", + "unicode_decimal": 59039 + }, + { + "icon_id": "29343974", + "name": "涓嬫灦鎿嶄綔", + "font_class": "chukucaozuo", + "unicode": "e6a0", + "unicode_decimal": 59040 + }, + { + "icon_id": "29343975", + "name": "鏍囩绠$悊", + "font_class": "biaoqianguanli1", + "unicode": "e6a1", + "unicode_decimal": 59041 + } + ] +} diff --git a/LA24030_LuLiPackageLine_Pda/styles/iconfont/svg.js b/LA24030_LuLiPackageLine_Pda/styles/iconfont/svg.js new file mode 100644 index 0000000..9d62c9d --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/styles/iconfont/svg.js @@ -0,0 +1 @@ +!function(a){var l,t,h,i,F,o='<svg><symbol id="icon-yichang" viewBox="0 0 1177 1024"><path d="M1045.162667 851.797333L234.325333 853.333333a17.066667 17.066667 0 0 1-14.677333-25.6L624.298667 124.416a17.066667 17.066667 0 0 1 29.525333 0l406.186667 701.781333a17.066667 17.066667 0 0 1-14.848 25.6z" fill="#FFC0C0" ></path><path d="M135.338667 921.6a34.133333 34.133333 0 0 1-29.525334-17.066667 34.133333 34.133333 0 0 1 0-34.133333L538.282667 119.466667a34.133333 34.133333 0 0 1 29.696-17.066667A34.133333 34.133333 0 0 1 597.333333 119.466667l434.346667 750.933333a34.133333 34.133333 0 0 1-29.525333 51.2H135.338667zM567.978667 136.533333L135.338667 887.466667h866.816z" fill="#FF1229" ></path><path d="M568.661333 665.6a17.066667 17.066667 0 0 1-17.066666-17.066667V409.6a17.066667 17.066667 0 0 1 34.133333 0v238.933333a17.066667 17.066667 0 0 1-17.066667 17.066667z" fill="#FF1229" ></path><path d="M568.661333 725.333333m-25.6 0a25.6 25.6 0 1 0 51.2 0 25.6 25.6 0 1 0-51.2 0Z" fill="#FF1229" ></path></symbol><symbol id="icon-wancheng" viewBox="0 0 1177 1024"><path d="M110.933333 196.266667m-76.8 0a76.8 76.8 0 1 0 153.6 0 76.8 76.8 0 1 0-153.6 0Z" fill="#FFE4C5" ></path><path d="M110.933333 281.6a85.333333 85.333333 0 1 1 85.333334-85.333333 85.333333 85.333333 0 0 1-85.333334 85.333333z m0-153.6a68.266667 68.266667 0 1 0 68.266667 68.266667 68.266667 68.266667 0 0 0-68.266667-68.266667z" fill="#F18201" ></path><path d="M358.4 119.466667m-42.666667 0a42.666667 42.666667 0 1 0 85.333334 0 42.666667 42.666667 0 1 0-85.333334 0Z" fill="#FFE4C5" ></path><path d="M358.4 170.666667a51.2 51.2 0 1 1 51.2-51.2 51.2 51.2 0 0 1-51.2 51.2z m0-85.333334a34.133333 34.133333 0 1 0 34.133333 34.133334 34.133333 34.133333 0 0 0-34.133333-34.133334z" fill="#F18201" ></path><path d="M605.866667 588.8m-384 0a384 384 0 1 0 768 0 384 384 0 1 0-768 0Z" fill="#FFE4C5" ></path><path d="M865.28 819.2a17.066667 17.066667 0 0 1-10.922667-4.096 17.066667 17.066667 0 0 1-2.048-23.893333 366.08 366.08 0 0 0 51.2-80.384 329.216 329.216 0 0 0 13.653334-33.109334 17.066667 17.066667 0 1 1 32.085333 11.605334 389.461333 389.461333 0 0 1-14.848 36.010666 398.165333 398.165333 0 0 1-56.32 87.722667 17.066667 17.066667 0 0 1-12.8 6.144zM955.733333 571.733333a17.066667 17.066667 0 0 1-17.066666-17.066666 366.933333 366.933333 0 0 0-705.024-142.848 17.066667 17.066667 0 1 1-31.402667-13.312A401.066667 401.066667 0 0 1 972.8 554.666667a17.066667 17.066667 0 0 1-17.066667 17.066666zM571.733333 955.733333A401.408 401.408 0 0 1 170.666667 554.666667a17.066667 17.066667 0 0 1 34.133333 0 366.933333 366.933333 0 0 0 586.410667 294.058666 17.066667 17.066667 0 1 1 20.48 27.306667A396.629333 396.629333 0 0 1 571.733333 955.733333z" fill="#F18201" ></path><path d="M541.184 669.696a59.050667 59.050667 0 0 1-40.277333-15.872l-143.872-132.096a25.6 25.6 0 0 1 34.133333-37.717333l143.872 132.096a8.533333 8.533333 0 0 0 6.144 2.389333 8.704 8.704 0 0 0 5.802667-2.901333l215.722666-234.154667a25.6 25.6 0 0 1 37.717334 34.133333L585.216 650.24a59.050667 59.050667 0 0 1-41.472 19.285333zM878.933333 230.4a17.066667 17.066667 0 0 1-12.117333-4.949333 17.066667 17.066667 0 0 1 0-24.234667l68.266667-68.266667a17.066667 17.066667 0 1 1 24.234666 24.234667l-68.266666 68.266667a17.066667 17.066667 0 0 1-12.117334 4.949333zM1083.733333 418.133333a17.066667 17.066667 0 0 1-12.117333-4.949333 17.066667 17.066667 0 0 1 0-24.234667l34.133333-34.133333a17.066667 17.066667 0 0 1 24.234667 24.234667l-34.133333 34.133333a17.066667 17.066667 0 0 1-12.117334 4.949333z" fill="#F18201" ></path></symbol><symbol id="icon-saoma" viewBox="0 0 1024 1024"><path d="M928.016126 543.908618 95.983874 543.908618c-17.717453 0-31.994625-14.277171-31.994625-31.994625S78.26642 479.919368 95.983874 479.919368l832.032253 0c17.717453 0 31.994625 14.277171 31.994625 31.994625S945.73358 543.908618 928.016126 543.908618z" ></path><path d="M832.032253 928.016126 639.892491 928.016126c-17.717453 0-31.994625-14.277171-31.994625-31.994625s14.277171-31.994625 31.994625-31.994625l191.967747 0c17.717453 0 31.994625-14.277171 31.994625-31.994625l0-159.973123c0-17.717453 14.277171-31.994625 31.994625-31.994625s31.994625 14.277171 31.994625 31.994625l0 159.973123C928.016126 884.840585 884.840585 928.016126 832.032253 928.016126z" ></path><path d="M351.94087 928.016126l-159.973123 0c-52.980346 0-95.983874-43.003528-95.983874-95.983874l0-159.973123c0-17.717453 14.277171-31.994625 31.994625-31.994625S159.973123 654.341676 159.973123 672.05913l0 159.973123c0 17.717453 14.449185 31.994625 31.994625 31.994625l159.973123 0c17.717453 0 31.994625 14.277171 31.994625 31.994625C383.935495 913.738955 369.658324 928.016126 351.94087 928.016126z" ></path><path d="M127.978498 383.935495c-17.717453 0-31.994625-14.277171-31.994625-31.994625l0-159.973123c0-52.980346 43.003528-95.983874 95.983874-95.983874l159.973123 0c17.717453 0 31.994625 14.277171 31.994625 31.994625S369.658324 159.973123 351.94087 159.973123l-159.973123 0c-17.545439 0-31.994625 14.449185-31.994625 31.994625l0 159.973123C159.973123 369.658324 145.695952 383.935495 127.978498 383.935495z" ></path><path d="M896.021502 383.935495c-17.717453 0-31.994625-14.277171-31.994625-31.994625l0-159.973123c0-17.545439-14.277171-31.994625-31.994625-31.994625L639.892491 159.973123c-17.717453 0-31.994625-14.277171-31.994625-31.994625s14.277171-31.994625 31.994625-31.994625l191.967747 0c52.980346 0 95.983874 43.003528 95.983874 95.983874l0 159.973123C928.016126 369.658324 913.738955 383.935495 896.021502 383.935495z" ></path></symbol><symbol id="icon-fanhui" viewBox="0 0 1024 1024"><path d="M624.788992 204.047974 585.205965 164.464026 219.560038 530.185011 585.205965 895.864013 624.788992 856.280986 298.663014 530.16105Z" ></path></symbol><symbol id="icon-shouhuoguanli" viewBox="0 0 1024 1024"><path d="M509.44 510.836364m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M811.985455 709.818182H294.865455V282.763636H226.909091a18.618182 18.618182 0 0 1-20.014546-16.989091 18.618182 18.618182 0 0 1 20.014546-16.98909h107.52V674.909091h477.556364zM294.865455 709.818182h79.36v27.927273a23.272727 23.272727 0 0 1-23.272728 23.272727h-32.814545a23.272727 23.272727 0 0 1-23.272727-23.272727v-27.927273zM732.625455 709.818182h79.36v27.927273a23.272727 23.272727 0 0 1-23.272728 23.272727h-32.814545a23.272727 23.272727 0 0 1-23.272727-23.272727v-27.927273z" fill="#FFFFFF" ></path><path d="M764.741818 282.065455H420.770909a46.545455 46.545455 0 0 0-46.545454 46.545454v265.774546a46.545455 46.545455 0 0 0 46.545454 46.545454h343.970909a46.545455 46.545455 0 0 0 46.545455-46.545454V328.610909a46.545455 46.545455 0 0 0-46.545455-46.545454z m-102.167273 97.745454h-139.636363a23.272727 23.272727 0 0 1 0-46.545454h139.636363a23.272727 23.272727 0 0 1 0 46.545454z" fill="#FFFFFF" ></path></symbol><symbol id="icon-rukucaozuo" viewBox="0 0 1024 1024"><path d="M512 510.836364m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M814.545455 404.712727a23.272727 23.272727 0 0 1-10.705455-2.792727l-283.461818-148.945455a17.454545 17.454545 0 0 0-16.523637 0l-283.461818 148.945455a23.272727 23.272727 0 0 1-21.643636-41.192727l283.461818-148.945455a64.698182 64.698182 0 0 1 59.810909 0l283.461818 148.945455a23.272727 23.272727 0 0 1 9.774546 31.418182 23.272727 23.272727 0 0 1-20.712727 12.567272z" fill="#FFFFFF" ></path><path d="M529.687273 232.727273a36.770909 36.770909 0 0 0-35.374546 0l-224.349091 123.810909v344.901818a37.934545 37.934545 0 0 0 37.236364 38.167273h409.6a37.701818 37.701818 0 0 0 37.236364-38.167273V356.538182z m85.876363 339.083636h-158.254545v23.272727a4.887273 4.887273 0 0 1-7.68 3.723637l-62.603636-50.967273a4.654545 4.654545 0 0 1 0-7.214545l62.603636-50.967273a4.654545 4.654545 0 0 1 7.68 3.490909v31.418182h158.254545a23.272727 23.272727 0 0 1 0 46.545454z" fill="#FFFFFF" ></path></symbol><symbol id="icon-pandianguanli1" viewBox="0 0 1024 1024"><path d="M505.716364 505.716364m-488.727273 0a488.727273 488.727273 0 1 0 977.454545 0 488.727273 488.727273 0 1 0-977.454545 0Z" fill="#F18202" ></path><path d="M785.454545 394.24L516.654545 217.832727a20.712727 20.712727 0 0 0-21.876363 0L226.210909 394.24a26.298182 26.298182 0 0 0-8.610909 33.047273 20.945455 20.945455 0 0 0 27.229091 10.705454l2.327273-1.163636 251.810909-165.701818a11.869091 11.869091 0 0 1 13.498182 0l251.810909 165.701818a20.945455 20.945455 0 0 0 28.392727-6.981818 12.567273 12.567273 0 0 0 0-2.56 25.832727 25.832727 0 0 0-8.378182-33.047273z" fill="#FFFFFF" ></path><path d="M715.636364 442.181818l-193.861819-125.672727a31.185455 31.185455 0 0 0-33.512727 0L294.4 442.181818a37.701818 37.701818 0 0 0-16.290909 31.883637v284.858181a34.909091 34.909091 0 0 0 32.814545 37.236364H558.545455s11.403636-63.767273 27.927272-82.618182 145.454545-162.909091 145.454546-162.909091v-77.265454a37.469091 37.469091 0 0 0-16.290909-31.185455z m-288.581819 290.909091a8.843636 8.843636 0 0 1-8.145454 9.076364h-75.636364a9.076364 9.076364 0 0 1-8.610909-9.076364v-86.109091a9.076364 9.076364 0 0 1 8.610909-9.076363H418.909091a8.610909 8.610909 0 0 1 8.145454 9.076363v85.410909z m0-134.749091a8.610909 8.610909 0 0 1-8.145454 9.076364h-75.636364a9.076364 9.076364 0 0 1-8.610909-9.076364V512a9.076364 9.076364 0 0 1 8.610909-9.076364H418.909091a8.843636 8.843636 0 0 1 8.145454 9.076364v85.410909z m121.25091 134.749091a8.843636 8.843636 0 0 1-8.378182 9.076364h-76.8a8.378182 8.378182 0 0 1-8.145455-9.076364v-86.109091a8.610909 8.610909 0 0 1 8.145455-9.076363h75.869091a8.843636 8.843636 0 0 1 8.145454 9.076363z m0-134.749091a8.843636 8.843636 0 0 1-8.378182 9.076364h-76.8a8.378182 8.378182 0 0 1-8.145455-9.076364V512a8.610909 8.610909 0 0 1 8.145455-9.076364h75.869091a8.843636 8.843636 0 0 1 8.145454 9.076364z m242.967272 11.636364V605.090909a62.603636 62.603636 0 0 0-9.076363-14.429091 38.865455 38.865455 0 0 0-10.705455-9.774545l-6.283636-2.094546a14.661818 14.661818 0 0 0-6.283637-1.396363h-6.749091A23.272727 23.272727 0 0 0 744.727273 581.818182l-6.283637 6.283636-6.283636 6.516364 42.356364 46.545454 3.490909-3.490909 3.490909-3.956363 4.887273-5.352728a19.549091 19.549091 0 0 0 4.887272-12.8 49.105455 49.105455 0 0 0 0-6.050909z m-159.418182 96.814545l-12.334545 14.196364-6.516364 7.214545a57.483636 57.483636 0 0 0-4.887272 6.283637c0 2.094545-2.094545 4.421818-3.025455 6.516363a34.443636 34.443636 0 0 0-2.792727 6.749091 69.818182 69.818182 0 0 1-3.723637 13.498182l-3.490909 13.730909a49.338182 49.338182 0 0 1-2.327272 10.007273 12.8 12.8 0 0 0 0 9.309091 8.843636 8.843636 0 0 0 8.145454 2.094545 64.930909 64.930909 0 0 0 9.076364-2.327272l12.567273-3.956364 12.8-4.887273 9.30909-4.421818a33.745455 33.745455 0 0 0 6.05091-3.956364 35.141818 35.141818 0 0 0 5.352727-4.887272l5.585454-6.050909 12.101819-13.498182 16.290909-17.92 18.152727-20.247273 48.407273-54.458182-42.356364-46.545454z" fill="#FFFFFF" ></path></symbol><symbol id="icon-gongliangjuguanli" viewBox="0 0 1024 1024"><path d="M512 499.432727m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M470.341818 503.854545a41.658182 41.658182 0 0 0 83.316364 0 37.701818 37.701818 0 0 0-6.050909-20.247272h-71.214546a37.701818 37.701818 0 0 0-6.050909 20.247272z" fill="#FFFFFF" ></path><path d="M597.410909 483.607273a73.309091 73.309091 0 0 1 2.792727 20.247272 88.203636 88.203636 0 0 1-176.407272 0 73.309091 73.309091 0 0 1 2.792727-20.247272H232.727273V744.727273a46.545455 46.545455 0 0 0 46.545454 46.545454h465.454546a46.545455 46.545455 0 0 0 46.545454-46.545454V483.607273zM279.272727 308.363636h465.454546a46.545455 46.545455 0 0 1 46.545454 46.545455v106.821818H232.727273v-106.821818a46.545455 46.545455 0 0 1 46.545454-46.545455z" fill="#FFFFFF" ></path><path d="M635.112727 308.363636h-46.545454V269.963636a52.363636 52.363636 0 0 0-2.094546-13.963636h-148.945454a52.363636 52.363636 0 0 0-2.094546 14.894545v38.4h-46.545454V269.963636c0-36.072727 16.523636-61.44 40.029091-61.44h166.167272c23.272727 0 40.029091 25.367273 40.029091 61.44z" fill="#FFFFFF" ></path></symbol><symbol id="icon-jieyongguanli1" viewBox="0 0 1024 1024"><path d="M515.490909 510.836364m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M801.745455 527.592727a795.229091 795.229091 0 0 1-152.203637-66.56c-33.745455-15.825455-53.061818-3.025455-131.025454 15.127273a753.803636 753.803636 0 0 1-111.476364 20.014545 46.545455 46.545455 0 0 0 28.858182 60.276364c25.832727 8.610909 121.018182 0 145.687273-5.12 11.869091-1.861818 13.498182 13.032727 0 27.927273a228.072727 228.072727 0 0 1-82.385455 38.4 205.265455 205.265455 0 0 1-101.236364-5.818182 682.356364 682.356364 0 0 0-135.68-60.509091c-53.527273-12.8-48.64 35.374545-48.64 35.374546s99.84 67.956364 131.025455 85.410909 78.894545 63.767273 121.250909 60.276363 194.792727-44.683636 228.305455-40.261818c14.661818 2.094545 37.934545 8.378182 59.810909 13.963636h1.629091a16.058182 16.058182 0 0 0 5.585454 0 18.152727 18.152727 0 0 0 15.36-9.076363 48.64 48.64 0 0 0 2.327273-4.887273 897.396364 897.396364 0 0 0 39.330909-139.636364 23.272727 23.272727 0 0 0-15.825455-26.530909z m-506.647273-158.487272h252.043636a40.029091 40.029091 0 0 0 0-79.825455H295.098182a40.029091 40.029091 0 0 0 0 79.825455z" fill="#FFFFFF" ></path></symbol><symbol id="icon-kuaidiguanli" viewBox="0 0 1024 1024"><path d="M512 512m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M791.272727 395.636364H232.727273a23.272727 23.272727 0 0 0-23.272728 23.272727v325.818182a23.272727 23.272727 0 0 0 23.272728 23.272727h558.545454a23.272727 23.272727 0 0 0 23.272728-23.272727V418.909091a23.272727 23.272727 0 0 0-23.272728-23.272727z m-488.727272 162.909091h93.090909a23.272727 23.272727 0 0 1 0 46.545454h-93.090909a23.272727 23.272727 0 0 1 0-46.545454z m186.181818 139.636363h-186.181818a23.272727 23.272727 0 0 1 0-46.545454h186.181818a23.272727 23.272727 0 0 1 0 46.545454zM522.705455 372.363636h272.290909c8.610909 0 13.730909-6.283636 9.309091-11.170909l-94.72-101.701818a12.334545 12.334545 0 0 0-9.076364-3.490909h-177.803636zM501.294545 256H323.490909a12.334545 12.334545 0 0 0-9.076364 3.490909l-94.72 101.701818c-4.421818 4.887273 0 11.170909 9.309091 11.170909h272.290909z" fill="#FFFFFF" ></path></symbol><symbol id="icon-wentibiaoji" viewBox="0 0 1024 1024"><path d="M505.949091 506.414545m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M397.032727 397.963636h-73.774545a266.007273 266.007273 0 0 1 10.24-82.152727 153.134545 153.134545 0 0 1 56.087273-75.403636 172.450909 172.450909 0 0 1 56.087272-28.625455A227.607273 227.607273 0 0 1 512 201.774545a186.181818 186.181818 0 0 1 124.043636 41.89091 152.436364 152.436364 0 0 1 53.527273 122.414545 133.818182 133.818182 0 0 1-17.454545 69.818182 378.88 378.88 0 0 1-61.207273 69.818182 397.730909 397.730909 0 0 0-46.545455 48.64 173.149091 173.149091 0 0 0-26.763636 104.727272h-74.24a242.734545 242.734545 0 0 1 17.454545-103.098181 369.570909 369.570909 0 0 1 62.138182-77.032728c24.436364-25.832727 39.563636-41.890909 45.149091-48.64a107.054545 107.054545 0 0 0 21.876364-67.956363 95.185455 95.185455 0 0 0-20.247273-60.276364 96.581818 96.581818 0 0 0-81.221818-35.141818 97.047273 97.047273 0 0 0-95.418182 52.829091 171.52 171.52 0 0 0-16.058182 78.196363z m145.92 327.447273v85.410909h-79.592727v-85.410909z" fill="#FFFFFF" ></path></symbol><symbol id="icon-baofeiguanli" viewBox="0 0 1024 1024"><path d="M509.44 512m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M253.44 262.749091h512a23.272727 23.272727 0 0 1 23.272727 23.272727V302.545455h-558.545454v-16.523637a23.272727 23.272727 0 0 1 23.272727-23.272727zM492.916364 222.72h33.28a23.272727 23.272727 0 0 1 23.272727 23.272727v16.523637h-79.825455v-16.523637a23.272727 23.272727 0 0 1 23.272728-23.272727zM453.818182 638.836364a94.487273 94.487273 0 0 0 51.432727 15.127272 96.581818 96.581818 0 0 0 96.349091-95.418181 94.487273 94.487273 0 0 0-15.127273-51.432728z" fill="#FFFFFF" ></path><path d="M270.196364 322.56v432.174545a46.545455 46.545455 0 0 0 46.545454 46.545455h385.629091a46.545455 46.545455 0 0 0 46.545455-46.545455V322.56z m235.054545 377.949091a142.894545 142.894545 0 1 1 142.894546-141.963636 142.894545 142.894545 0 0 1-142.894546 141.963636z" fill="#FFFFFF" ></path><path d="M505.250909 461.265455A95.650909 95.650909 0 0 0 421.701818 605.090909l130.792727-130.792727a95.650909 95.650909 0 0 0-47.243636-13.032727z" fill="#FFFFFF" ></path></symbol><symbol id="icon-tuihuoguanli1" viewBox="0 0 1024 1024"><path d="M512 512m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M522.705455 372.363636h272.290909c8.610909 0 13.730909-6.283636 9.309091-11.170909l-94.72-101.701818a12.334545 12.334545 0 0 0-9.076364-3.490909h-177.803636zM501.294545 256H323.490909a12.334545 12.334545 0 0 0-9.076364 3.490909l-94.72 101.701818c-4.421818 4.887273 0 11.170909 9.309091 11.170909h272.290909zM791.272727 395.636364H232.727273a23.272727 23.272727 0 0 0-23.272728 23.272727v325.818182a23.272727 23.272727 0 0 0 23.272728 23.272727h558.545454a23.272727 23.272727 0 0 0 23.272728-23.272727V418.909091a23.272727 23.272727 0 0 0-23.272728-23.272727zM533.876364 693.76h-84.945455a3.723636 3.723636 0 0 1-3.723636-3.723636V651.636364a3.723636 3.723636 0 0 1 3.723636-3.723637h87.970909A43.985455 43.985455 0 0 0 581.818182 605.090909a30.487273 30.487273 0 0 0-1.163637-9.076364 43.985455 43.985455 0 0 0-21.178181-26.530909 40.494545 40.494545 0 0 0-16.756364-6.050909 61.905455 61.905455 0 0 0-6.516364 0h-34.909091v25.134546a4.189091 4.189091 0 0 1-4.18909 3.956363h-1.861819l-97.512727-53.527272a5.352727 5.352727 0 0 1-2.094545-7.214546 5.585455 5.585455 0 0 1 1.861818-2.094545l97.512727-58.414546a4.421818 4.421818 0 0 1 5.818182 1.396364 6.749091 6.749091 0 0 1 0 2.094545V512H512a258.327273 258.327273 0 0 1 37.934545 0 91.229091 91.229091 0 0 1 68.421819 48.872727 108.218182 108.218182 0 0 1 10.007272 46.545455 90.065455 90.065455 0 0 1-94.487272 86.341818z" fill="#FFFFFF" ></path></symbol><symbol id="icon-fahuoguanli1" viewBox="0 0 1024 1024"><path d="M512 510.836364m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M521.774545 372.363636h282.065455c8.378182 0 13.498182-6.283636 9.076364-10.938181l-93.090909-101.236364a11.869091 11.869091 0 0 0-8.843637-3.490909h-189.207273zM506.181818 256H316.509091a11.869091 11.869091 0 0 0-8.843636 3.490909l-93.09091 101.236364c-4.421818 4.654545 0 10.938182 9.076364 10.938182h282.530909zM787.549091 395.636364H232.727273a23.272727 23.272727 0 0 0-23.272728 23.272727v323.258182a23.272727 23.272727 0 0 0 23.272728 23.272727h554.821818a23.272727 23.272727 0 0 0 23.272727-23.272727V418.909091a23.272727 23.272727 0 0 0-23.272727-23.272727z m-120.087273 186.181818l-84.712727 69.818182a3.258182 3.258182 0 0 1-5.352727-2.327273V605.090909h-218.065455a7.912727 7.912727 0 0 1-7.912727-7.912727v-34.210909a7.912727 7.912727 0 0 1 7.912727-7.912728h218.065455v-46.545454a3.258182 3.258182 0 0 1 5.352727-2.56l84.712727 69.818182a3.025455 3.025455 0 0 1 0 6.050909z" fill="#FFFFFF" ></path></symbol><symbol id="icon-chukucaozuo" viewBox="0 0 1024 1024"><path d="M512 510.836364m-488.727273 0a488.727273 488.727273 0 1 0 977.454546 0 488.727273 488.727273 0 1 0-977.454546 0Z" fill="#F18202" ></path><path d="M814.545455 404.712727a23.272727 23.272727 0 0 1-10.705455-2.792727l-283.461818-148.945455a17.454545 17.454545 0 0 0-16.523637 0l-283.461818 148.945455a23.272727 23.272727 0 0 1-21.643636-41.192727l283.461818-148.945455a64.698182 64.698182 0 0 1 59.810909 0l283.461818 148.945455a23.272727 23.272727 0 0 1 9.774546 31.418182 23.272727 23.272727 0 0 1-20.712727 12.567272z" fill="#FFFFFF" ></path><path d="M529.687273 232.727273a36.770909 36.770909 0 0 0-35.374546 0l-224.349091 123.810909v344.901818a37.934545 37.934545 0 0 0 37.236364 38.167273h409.6a37.701818 37.701818 0 0 0 37.236364-38.167273V356.538182z m107.287272 315.810909l-62.603636 50.967273a4.654545 4.654545 0 0 1-7.447273-3.723637v-23.272727h-158.254545a23.272727 23.272727 0 0 1 0-46.545455h158.254545v-32.581818a4.654545 4.654545 0 0 1 7.447273-3.490909l62.603636 50.967273a4.654545 4.654545 0 0 1 0 7.214545z" fill="#FFFFFF" ></path></symbol><symbol id="icon-biaoqianguanli1" viewBox="0 0 1024 1024"><path d="M518.283636 512m-488.727272 0a488.727273 488.727273 0 1 0 977.454545 0 488.727273 488.727273 0 1 0-977.454545 0Z" fill="#F18202" ></path><path d="M395.636364 209.454545h246.458181a46.545455 46.545455 0 0 1 46.545455 46.545455v29.090909H349.090909V256a46.545455 46.545455 0 0 1 46.545455-46.545455zM660.48 455.214545h-279.272727a29.323636 29.323636 0 0 0-30.021818 28.625455v294.865455A36.770909 36.770909 0 0 0 387.956364 814.545455h264.843636a36.770909 36.770909 0 0 0 37.701818-35.84V483.84a29.323636 29.323636 0 0 0-30.021818-28.625455z m-46.545455 250.647273H425.890909a23.272727 23.272727 0 1 1 0-46.545454h188.974546a23.272727 23.272727 0 0 1 0 46.545454z m0-95.418182H425.890909a23.272727 23.272727 0 0 1 0-46.545454h188.974546a23.272727 23.272727 0 0 1 0 46.545454z" fill="#FFFFFF" ></path><path d="M744.727273 303.941818H291.374545a37.701818 37.701818 0 0 0-37.701818 37.934546v151.272727a37.469091 37.469091 0 0 0 37.701818 37.701818h37.934546v-56.552727a37.934545 37.934545 0 0 1 37.701818-37.934546h302.545455a37.934545 37.934545 0 0 1 37.934545 37.934546v56.552727H744.727273a37.701818 37.701818 0 0 0 37.701818-37.701818v-151.272727A37.934545 37.934545 0 0 0 744.727273 303.941818z m-8.843637 69.818182a23.272727 23.272727 0 1 1 23.272728-23.272727 23.272727 23.272727 0 0 1-22.574546 23.272727z" fill="#FFFFFF" ></path></symbol></svg>',e=(e=document.getElementsByTagName("script"))[e.length-1].getAttribute("data-injectcss"),d=function(a,l){l.parentNode.insertBefore(a,l)};if(e&&!a.__iconfont__svg__cssinject__){a.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(a){console&&console.log(a)}}function n(){F||(F=!0,h())}function p(){try{i.documentElement.doScroll("left")}catch(a){return void setTimeout(p,50)}n()}l=function(){var a,l=document.createElement("div");l.innerHTML=o,o=null,(l=l.getElementsByTagName("svg")[0])&&(l.setAttribute("aria-hidden","true"),l.style.position="absolute",l.style.width=0,l.style.height=0,l.style.overflow="hidden",l=l,(a=document.body).firstChild?d(l,a.firstChild):a.appendChild(l))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(l,0):(t=function(){document.removeEventListener("DOMContentLoaded",t,!1),l()},document.addEventListener("DOMContentLoaded",t,!1)):document.attachEvent&&(h=l,i=a.document,F=!1,p(),i.onreadystatechange=function(){"complete"==i.readyState&&(i.onreadystatechange=null,n())})}(window); diff --git a/LA24030_LuLiPackageLine_Pda/styles/index.css b/LA24030_LuLiPackageLine_Pda/styles/index.css new file mode 100644 index 0000000..bd5e768 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/styles/index.css @@ -0,0 +1,784 @@ +.box_sizing { + box-sizing: border-box; +} +.clickactive{ + background-color: #ffe6c9 !important; +} + +.line{ + min-height: 43px; + line-height: 43px; + padding: 0 15px; + background-color: #FFFFFF; + border-bottom:1px solid #E4E4E4; +} +.idindex{ + width: 35rpx; + height: 35rpx; + background-color: #f18202; + color: #fff; + text-align: center; + line-height:35rpx; + border-radius: 50%; + /* margin-right: 10rpx; */ +} + +.little_card{ + color: #f69e02; + border: 1px solid #f69e02; + margin: 55rpx 30rpx; + padding: 25rpx; + box-sizing: border-box; + border-radius: 10rpx; +} + +.active{ + background:linear-gradient(to right,#fdd800,#f28b02) ; + color: #fff; + border: none; +} +.bg-f18202{ + background-color: #f18202 !important; + color: #fff !important; +} +.bg-ffe6c9{ + background-color: #ffe6c9; + border: 1px solid #f18202; + color: #f18202; +} +.bd-ffe6c9{ + border: 1px solid #f18202; +} +.height { + height: 100%; +} + +.height75 { + height: 75%; +} + +.height70 { + height: 70%; +} + +.height50 { + height: 50%; +} + +.height30 { + height: 30%; +} + +.height10 { + height: 10%; +} + +.height160rpx { + height: 80px; +} +.height140rpx { + height: 70px; +} +.height100rpx { + height: 50px; +} + +.height84rpx { + height: 42px; +} + +.height80rpx { + height: 40px; +} + +.height74rpx { + height: 74rpx; +} + +.height64rpx { + height: 64rpx; +} + +.height56rpx { + height: 56rpx; +} + +.height300rpx { + height: 200px; +} + +.height_calc315 { + height: calc(100vh - 700rpx); +} +.height_calc215 { + height: calc(100vh - 580rpx); +} +.height_calc550rpx { + height: calc(100vh - 560rpx); +} +.height_calc510rpx{ + height: calc(100vh - 510rpx); +} +.height_calc497 { + height: calc(100vh - 340rpx); +} + +.height_calc175 { + height: calc(100vh - 400rpx); +} + +.height_calc220 { + height: calc(100vh - 440rpx); +} + +.width { + width: 100%; +} + +.width99 { + width: 99%; +} + +.width96 { + width: 96%; +} +.width95 { + width: 95%; +} +.width94 { + width: 94%; +} + +.width90 { + width: 90%; +} + +.width80 { + width: 80%; +} + +.width70 { + width: 70%; +} +.width67{ + width: 67%; +} +.width60 { + width: 60%; +} + +.width50 { + width: 50%; +} + +.width49 { + width: 49%; +} +.width45 { + width: 45%; +} +.width40 { + width: 40%; +} + +.width31 { + width: 31%; +} +.width33 { + width: 33%; +} +.width30 { + width: 30%; +} + +.width25 { + width: 25%; +} + +.width23 { + width: 23%; +} + +.width19 { + width: 19%; +} + +.width10 { + width: 10%; +} + +.width56rpx { + width: 56rpx; +} + +.width80rpx { + width: 80rpx; +} + +.width130rpx { + width: 130rpx; +} + +.width150rpx { + width: 150rpx; +} + +.width200rpx { + width: 200rpx; +} +.width320rpx{ + width: 320rpx; +} +.margin_auto { + margin: auto; +} +.margin_0_25rpx{ + margin: 0 25rpx; +} +.margin_top1 { + margin-top: 1%; +} + +.margin_top5 { + margin-top: 5%; +} + +.margin_top4rpx { + margin-top: 4rpx; +} + +.margin_top10rpx { + margin-top: 5px; +} + +.margin_top20rpx { + margin-top: 20rpx; +} + +.margin_top30rpx { + margin-top: 30rpx; +} + +.margin_top40rpx { + margin-top:40rpx; +} +.margin_top140rpx{ + margin-top: 140rpx; +} +.margin_left10rpx { + margin-left: 10rpx; +} + +.margin_left30rpx { + margin-left: 30rpx; +} + +.margin_right10rpx { + margin-right: 10rpx; +} + +.margin_right30rpx { + margin-right: 30rpx; +} + +.margin_bottom10rpx { + margin-bottom: 10rpx; +} + +.margin_bottom25rpx { + margin-bottom: 25rpx; +} + +.margin_bottom30rpx { + margin-bottom: 30rpx; +} +.margin_bottom4rpx { + margin-bottom: 4rpx; +} + +.margin_bottom50rpx { + margin-bottom: 25px; +} +.margin_bottom18{ + margin-bottom: 18%; +} +.margin_bottom13{ + margin-bottom: 13%; +} +.padding_top12rpx{ + padding-top: 6px; +} +.padding_right10rpx { + padding-right: 5px; +} +.padding_right30rpx { + padding-right: 15px; +} + +.padding_left10rpx { + padding-left: 5px; +} +.padding_left25rpx{ + padding-left: 14px; +} +.padding_left30rpx { + padding-left: 15px; +} +.padding_left80rpx { + padding-left: 40px; +} +.padding_left67rpx { + padding-left: 33px; +} +.padding_left45rpx{ + padding-left: 22px; +} +.padding5_0{ + padding: 5rpx 0; +} +.padding_up_down25 { + padding: 12px 0; +} +.padding_up_down20 { + padding: 10px 0; +} + +.padding_bottom { + padding-bottom: 4px; +} +.padding_bottom18 { + padding-bottom: 9px; +} +.padding10 { + padding: 5px; +} + +.padding0_8 { + padding: 0 4px; +} + +.padding5_10 { + padding: 5rpx 5px; +} +.padding15 { + padding: 7px; +} + +.padding { + padding: 25rpx; +} + +.padding40_0 { + padding: 7px 0; +} +.padding20_0 { + padding: 20px 0; +} + +.padding_surround { + padding: 20rpx 0 10rpx 20rpx; +} + +.padding_surround2 { + padding: 10rpx 15rpx; +} + +.relative { + position: relative; +} + +.absolute { + position: absolute; +} + +.fixed { + position: fixed; +} +.top0{ + top: 0; +} +.top10rpx { + top: 10rpx; +} + +.top50 { + top: 50%; +} + +.top90rpx { + top: 40px; +} +.top25rpx{ + top: 12px; +} +.right20rpx { + right: 10px; +} +.right100rpx { + right: 50px; +} +.right10rpx { + right: 5px; +} + +.right { + right: 0; +} + + +.left50 { + left: 50%; +} +.left { + left: 80%; +} +.bottom0 { + bottom: 0; +} +.bottom25 { + bottom: 25rpx; +} +.bottom110 { + bottom: 110rpx; +} +.bottom140 { + bottom: 70px; +} +.bottom148{ + bottom: 148rpx; +} +.transformY { + transform: translateY(-50%); +} + +.transformX { + transform: translateX(-50%); +} + +.transform { + transform: translate(-50%, -50%); +} + +.transformtopleft { + top: 50%; + left: 50%; + transform: translate(-50%, -50%); +} + +.transition { + transition: all 0.2s; +} + +.transition_rotate180 { + transform: rotate(-180deg); + transition: all 0.3s; +} + +.transition_rotate0 { + transform: rotate(0deg); + transition: all 0.3s; +} + +.fixed { + position: fixed; +} + +.flex { + display: flex; +} + +.flex-sub { + flex: 1; +} + +.flex-auto { + flex: auto; +} + +.flex-direction { + flex-direction: column; +} + +.flex-column-reverse { + flex-direction: column-reverse; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.align-start { + align-items: flex-start; +} + +.align-baseline { + align-items: baseline; +} + +.align-end { + align-items: flex-end; +} + +.align-center { + align-items: center; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} + +.color_666666 { + color: #666666; +} + +.color_333333 { + color: #333333; +} +.color_217ebe{ + color: #217ebe; +} +.color_1989FA { + color: #1989FA; +} + +.color_F2F2F2 { + color: #F2F2F2; +} + +.color_8799a3 { + color: #8799a3; +} + +.color_E4E4E4 { + color: #E4E4E4; +} + +.color_1cbbb4 { + color: #1cbbb4; +} +.color_f18202{ + color:#f18202; + word-break: break-all; +} +.fontSize24rpx { + font-size: 12px; +} + +.fontSize28rpx { + font-size: 14px; +} + +.fontSize30rpx { + font-size: 15px; +} +.fontSize32rpx { + font-size: 16px; +} +.fontSize12rpx{ + font-size: 12px !important; +} +.fontSize36rpx { + font-size: 18px; +} + +.fontSize38rpx { + font-size: 19px; +} + +.fontSize43rpx { + font-size: 22px; +} + +.fontSize42rpx { + font-size: 21px; +} + +.fontSize56rpx { + font-size: 28px; +} + +.fontSize60rpx { + font-size: 30px; +} +.fontSize80rpx { + font-size: 40px; +} + +.font_weight_bold { + font-weight: bold; +} + +.box_shadow { + box-shadow: 0 0 4px #666666; +} + +.border { + border: 2rpx solid #E4E4E4; +} +.borderE4 { + border: 4rpx solid #E4E4E4; +} +.border000{ + border: 1px solid #000000; +} +.border_facd91{ + border: 3px solid #facd91; + box-sizing: border-box; +} +.border_top { + border-top: 2rpx solid #E4E4E4; +} + +.border_buttom { + border-bottom: 2rpx solid #E4E4E4; +} + +.border_left { + border-left: 2rpx solid #E4E4E4; +} + +.border_right { + border-right: 2rpx solid #E4E4E4; +} + +.border_top_F2F2F2 { + border-top: 2rpx solid #F2F2F2; +} +.border_top12_F2F2F2{ + border-top: 12rpx solid #F2F2F2; +} +.border_1989FA{ + border: 4rpx solid #f69e02; + border-radius: 8rpx; +} +.border_left_1989FA { + border-left: 8rpx solid #f69e02; + /* border-right: 8rpx solid #f69e02; */ +} + +.border_bottom_F2F2F2 { + border-bottom: 6rpx solid #F2F2F2; +} +.border_bottom_FFF { + border-bottom: 6rpx solid #FFF; +} +.border_bottom12_F2F2F2 { + border-bottom: 12rpx solid #F2F2F2; +} +.border_bottom2_F2F2F2 { + border-bottom: 2rpx solid #F2F2F2; +} + +.border_bottom_fff { + border-bottom: 2rpx solid #fff; +} + +.border_bottom_1989FA { + border-bottom: 6rpx solid #1989FA; +} +.border_bottom_f18202 { + border-bottom: 1px solid #f18202; +} +.border_bottom2_1989FA { + border-bottom: 2rpx solid #1989FA; +} + +.border_bottom_345 { + border-bottom: 2rpx solid #aaaaaa; +} + +.border_bottom_f69e02 { + border-bottom: 2rpx solid #f69e02; +} +.border_radius { + border-radius: 6rpx; +} +.border_radius10 { + border-radius: 10rpx; +} + +.border_radius50 { + border-radius: 50%; +} + +.background_fff { + background-color: #fff; +} +.background_ddd{ + background-color: #dddddd; +} +.background_1989FA { + background-color: #1989FA; +} +.background_217ebe{ + background-color: #217ebe; +} +.background_rgba000 { + background:rgba(0,0,0,0.5); + +} +.background_rgb129{ + background: rgba(0, 129, 255,0.1); +} +.background_coverno { + background-size: 100% 100%; + background-repeat: no-repeat; +} + +.outline { + outline: 1px solid; +} + +.overflow_hidden { + overflow: hidden; +} + +.overflow_auto { + overflow: auto; +} +.text-80{ + color: #808080; +} +.text_align_center { + text-align: center; +} + +.text_overflow { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} +.text_shadow10rpx{ + text-shadow: 10rpx 10rpx 10rpx; +} +.opacity_0 { + opacity: 0; +} + +.opacity_1 { + opacity: 1; +} +.line_height90{ + line-height: 45px; +} + +.inp100{ + font-size: 16px;font-weight: bold; + padding: 0 !important; +} diff --git a/LA24030_LuLiPackageLine_Pda/styles/main.css b/LA24030_LuLiPackageLine_Pda/styles/main.css new file mode 100644 index 0000000..e1e3210 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/styles/main.css @@ -0,0 +1,4135 @@ +body { + background-color: #f1f1f1; + font-size: 14px; + color: #333333; + font-family: Helvetica Neue, Helvetica, sans-serif; +} +view, +scroll-view, +swiper, +button, +input, +textarea, +label, +navigator, +image { + box-sizing: border-box; +} + +.round { + border-radius: 5000upx; +} + +.radius { + border-radius: 6upx; +} + +/* ================== + 鍥剧墖 + ==================== */ + +image { + /* max-width: 100%; */ + display: inline-block; + position: relative; + z-index: 0; +} + +image.loading::before { + content: ""; + background-color: #f5f5f5; + display: block; + position: absolute; + width: 100%; + height: 100%; + z-index: -2; +} + +image.loading::after { + content: "\e7f1"; + font-family: "cuIcon"; + position: absolute; + top: 0; + left: 0; + width: 32upx; + height: 32upx; + line-height: 32upx; + right: 0; + bottom: 0; + z-index: -1; + font-size: 32upx; + margin: auto; + color: #ccc; + -webkit-animation: cuIcon-spin 2s infinite linear; + animation: cuIcon-spin 2s infinite linear; + display: block; +} + +.response { + width: 100%; +} + +/* ================== + 寮�鍏� + ==================== */ + +switch, +checkbox, +radio { + position: relative; +} + +switch::after, +switch::before { + font-family: "cuIcon"; + content: "\e645"; + position: absolute; + color: #ffffff !important; + top: 0%; + left: 0upx; + font-size: 26upx; + line-height: 26px; + width: 50%; + text-align: center; + pointer-events: none; + transform: scale(0, 0); + transition: all 0.3s ease-in-out 0s; + z-index: 9; + bottom: 0; + height: 26px; + margin: auto; +} + +switch::before { + content: "\e646"; + right: 0; + transform: scale(1, 1); + left: auto; +} + +switch[checked]::after, +switch.checked::after { + transform: scale(1, 1); +} + +switch[checked]::before, +switch.checked::before { + transform: scale(0, 0); +} + +/* #ifndef MP-ALIPAY */ +radio::before, +checkbox::before { + font-family: "cuIcon"; + content: "\e645"; + position: absolute; + color: #ffffff !important; + top: 50%; + margin-top: -8px; + right: 5px; + font-size: 32upx; + line-height: 16px; + pointer-events: none; + transform: scale(1, 1); + transition: all 0.3s ease-in-out 0s; + z-index: 9; +} + +radio .wx-radio-input, +checkbox .wx-checkbox-input, +radio .uni-radio-input, +checkbox .uni-checkbox-input { + margin: 0; + width: 24px; + height: 24px; +} + +checkbox.round .wx-checkbox-input, +checkbox.round .uni-checkbox-input { + border-radius: 100upx; +} + +/* #endif */ + +switch[checked]::before { + transform: scale(0, 0); +} + +switch .wx-switch-input, +switch .uni-switch-input { + border: none; + padding: 0 24px; + width: 48px; + height: 26px; + margin: 0; + border-radius: 100upx; +} + +switch .wx-switch-input:not([class*="bg-"]), +switch .uni-switch-input:not([class*="bg-"]) { + background: #8799a3 !important; +} + +switch .wx-switch-input::after, +switch .uni-switch-input::after { + margin: auto; + width: 26px; + height: 26px; + border-radius: 100upx; + left: 0upx; + top: 0upx; + bottom: 0upx; + position: absolute; + transform: scale(0.9, 0.9); + transition: all 0.1s ease-in-out 0s; +} + +switch .wx-switch-input.wx-switch-input-checked::after, +switch .uni-switch-input.uni-switch-input-checked::after { + margin: auto; + left: 22px; + box-shadow: none; + transform: scale(0.9, 0.9); +} + +radio-group { + display: inline-block; +} + + + +switch.radius .wx-switch-input::after, +switch.radius .wx-switch-input, +switch.radius .wx-switch-input::before, +switch.radius .uni-switch-input::after, +switch.radius .uni-switch-input, +switch.radius .uni-switch-input::before { + border-radius: 10upx; +} + +/* switch .wx-switch-input::before, +radio.radio::before, +checkbox .wx-checkbox-input::before, +radio .wx-radio-input::before, +switch .uni-switch-input::before, +radio.radio::before, +checkbox .uni-checkbox-input::before, +radio .uni-radio-input::before { + display: none; +} */ + +radio.radio[checked]::after, +radio.radio .uni-radio-input-checked::after { + content: ""; + background-color: transparent; + display: block; + position: absolute; + width: 8px; + height: 8px; + z-index: 999; + top: 0upx; + left: 0upx; + right: 0; + bottom: 0; + margin: auto; + border-radius: 200upx; + /* #ifndef MP */ + border: 7px solid #ffffff !important; + /* #endif */ + + /* #ifdef MP */ + border: 8px solid #ffffff !important; + /* #endif */ +} + +.switch-sex::after { + content: "\e71c"; +} + +.switch-sex::before { + content: "\e71a"; +} + +.switch-sex .wx-switch-input, +.switch-sex .uni-switch-input { + background: #e54d42 !important; + border-color: #e54d42 !important; +} + +.switch-sex[checked] .wx-switch-input, +.switch-sex.checked .uni-switch-input { + background: #0081ff !important; + border-color: #0081ff !important; +} + +switch.red[checked] .wx-switch-input.wx-switch-input-checked, +checkbox.red[checked] .wx-checkbox-input, +radio.red[checked] .wx-radio-input, +switch.red.checked .uni-switch-input.uni-switch-input-checked, +checkbox.red.checked .uni-checkbox-input, +radio.red.checked .uni-radio-input { + background-color: #e54d42 !important; + border-color: #e54d42 !important; + color: #ffffff !important; +} + +switch.orange[checked] .wx-switch-input, +checkbox.orange[checked] .wx-checkbox-input, +radio.orange[checked] .wx-radio-input, +switch.orange.checked .uni-switch-input, +checkbox.orange.checked .uni-checkbox-input, +radio.orange.checked .uni-radio-input { + background-color: #f37b1d !important; + border-color: #f37b1d !important; + color: #ffffff !important; +} + +switch.yellow[checked] .wx-switch-input, +checkbox.yellow[checked] .wx-checkbox-input, +radio.yellow[checked] .wx-radio-input, +switch.yellow.checked .uni-switch-input, +checkbox.yellow.checked .uni-checkbox-input, +radio.yellow.checked .uni-radio-input { + background-color: #fbbd08 !important; + border-color: #fbbd08 !important; + color: #333333 !important; +} + +switch.olive[checked] .wx-switch-input, +checkbox.olive[checked] .wx-checkbox-input, +radio.olive[checked] .wx-radio-input, +switch.olive.checked .uni-switch-input, +checkbox.olive.checked .uni-checkbox-input, +radio.olive.checked .uni-radio-input { + background-color: #8dc63f !important; + border-color: #8dc63f !important; + color: #ffffff !important; +} + +switch.green[checked] .wx-switch-input, +switch[checked] .wx-switch-input, +checkbox.green[checked] .wx-checkbox-input, +checkbox[checked] .wx-checkbox-input, +radio.green[checked] .wx-radio-input, +radio[checked] .wx-radio-input, +switch.green.checked .uni-switch-input, +switch.checked .uni-switch-input, +checkbox.green.checked .uni-checkbox-input, +checkbox.checked .uni-checkbox-input, +radio.green.checked .uni-radio-input, +radio.checked .uni-radio-input { + background-color: #39b54a !important; + border-color: #39b54a !important; + color: #ffffff !important; + border-color: #39B54A !important; +} + +switch.cyan[checked] .wx-switch-input, +checkbox.cyan[checked] .wx-checkbox-input, +radio.cyan[checked] .wx-radio-input, +switch.cyan.checked .uni-switch-input, +checkbox.cyan.checked .uni-checkbox-input, +radio.cyan.checked .uni-radio-input { + background-color: #1cbbb4 !important; + border-color: #1cbbb4 !important; + color: #ffffff !important; +} + +switch.blue[checked] .wx-switch-input, +checkbox.blue[checked] .wx-checkbox-input, +radio.blue[checked] .wx-radio-input, +switch.blue.checked .uni-switch-input, +checkbox.blue.checked .uni-checkbox-input, +radio.blue.checked .uni-radio-input { + background-color: #0081ff !important; + border-color: #0081ff !important; + color: #ffffff !important; +} + +switch.purple[checked] .wx-switch-input, +checkbox.purple[checked] .wx-checkbox-input, +radio.purple[checked] .wx-radio-input, +switch.purple.checked .uni-switch-input, +checkbox.purple.checked .uni-checkbox-input, +radio.purple.checked .uni-radio-input { + background-color: #6739b6 !important; + border-color: #6739b6 !important; + color: #ffffff !important; +} + +switch.mauve[checked] .wx-switch-input, +checkbox.mauve[checked] .wx-checkbox-input, +radio.mauve[checked] .wx-radio-input, +switch.mauve.checked .uni-switch-input, +checkbox.mauve.checked .uni-checkbox-input, +radio.mauve.checked .uni-radio-input { + background-color: #9c26b0 !important; + border-color: #9c26b0 !important; + color: #ffffff !important; +} + +switch.pink[checked] .wx-switch-input, +checkbox.pink[checked] .wx-checkbox-input, +radio.pink[checked] .wx-radio-input, +switch.pink.checked .uni-switch-input, +checkbox.pink.checked .uni-checkbox-input, +radio.pink.checked .uni-radio-input { + background-color: #e03997 !important; + border-color: #e03997 !important; + color: #ffffff !important; +} + +switch.brown[checked] .wx-switch-input, +checkbox.brown[checked] .wx-checkbox-input, +radio.brown[checked] .wx-radio-input, +switch.brown.checked .uni-switch-input, +checkbox.brown.checked .uni-checkbox-input, +radio.brown.checked .uni-radio-input { + background-color: #a5673f !important; + border-color: #a5673f !important; + color: #ffffff !important; +} + +switch.grey[checked] .wx-switch-input, +checkbox.grey[checked] .wx-checkbox-input, +radio.grey[checked] .wx-radio-input, +switch.grey.checked .uni-switch-input, +checkbox.grey.checked .uni-checkbox-input, +radio.grey.checked .uni-radio-input { + background-color: #8799a3 !important; + border-color: #8799a3 !important; + color: #ffffff !important; +} + +switch.gray[checked] .wx-switch-input, +checkbox.gray[checked] .wx-checkbox-input, +radio.gray[checked] .wx-radio-input, +switch.gray.checked .uni-switch-input, +checkbox.gray.checked .uni-checkbox-input, +radio.gray.checked .uni-radio-input { + background-color: #f0f0f0 !important; + border-color: #f0f0f0 !important; + color: #333333 !important; +} + +switch.black[checked] .wx-switch-input, +checkbox.black[checked] .wx-checkbox-input, +radio.black[checked] .wx-radio-input, +switch.black.checked .uni-switch-input, +checkbox.black.checked .uni-checkbox-input, +radio.black.checked .uni-radio-input { + background-color: #333333 !important; + border-color: #333333 !important; + color: #ffffff !important; +} + +switch.white[checked] .wx-switch-input, +checkbox.white[checked] .wx-checkbox-input, +radio.white[checked] .wx-radio-input, +switch.white.checked .uni-switch-input, +checkbox.white.checked .uni-checkbox-input, +radio.white.checked .uni-radio-input { + background-color: #ffffff !important; + border-color: #ffffff !important; + color: #333333 !important; +} + +/* ================== + 杈规 + ==================== */ + +/* -- 瀹炵嚎 -- */ + +.solid, +.solid-top, +.solid-right, +.solid-bottom, +.solid-left, +.solids, +.solids-top, +.solids-right, +.solids-bottom, +.solids-left, +.dashed, +.dashed-top, +.dashed-right, +.dashed-bottom, +.dashed-left { + position: relative; +} + +.solid::after, +.solid-top::after, +.solid-right::after, +.solid-bottom::after, +.solid-left::after, +.solids::after, +.solids-top::after, +.solids-right::after, +.solids-bottom::after, +.solids-left::after, +.dashed::after, +.dashed-top::after, +.dashed-right::after, +.dashed-bottom::after, +.dashed-left::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border-radius: inherit; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; +} + +.solid::after { + border: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-top::after { + border-top: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-right::after { + border-right: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-bottom::after { + border-bottom: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solid-left::after { + border-left: 1upx solid rgba(0, 0, 0, 0.1); +} + +.solids::after { + border: 8upx solid #eee; +} + +.solids-top::after { + border-top: 8upx solid #eee; +} + +.solids-right::after { + border-right: 8upx solid #eee; +} + +.solids-bottom::after { + border-bottom: 8upx solid #eee; +} + +.solids-left::after { + border-left: 8upx solid #eee; +} + +/* -- 铏氱嚎 -- */ + +.dashed::after { + border: 1upx dashed #ddd; +} + +.dashed-top::after { + border-top: 1upx dashed #ddd; +} + +.dashed-right::after { + border-right: 1upx dashed #ddd; +} + +.dashed-bottom::after { + border-bottom: 1upx dashed #ddd; +} + +.dashed-left::after { + border-left: 1upx dashed #ddd; +} + +/* -- 闃村奖 -- */ + +.shadow[class*='white'] { + --ShadowSize: 0 1upx 6upx; +} + +.shadow-lg { + --ShadowSize: 0upx 40upx 100upx 0upx; +} + +.shadow-warp { + position: relative; + box-shadow: 0 0 10upx rgba(0, 0, 0, 0.1); +} + +.shadow-warp:before, +.shadow-warp:after { + position: absolute; + content: ""; + top: 20upx; + bottom: 30upx; + left: 20upx; + width: 50%; + box-shadow: 0 30upx 20upx rgba(0, 0, 0, 0.2); + transform: rotate(-3deg); + z-index: -1; +} + +.shadow-warp:after { + right: 20upx; + left: auto; + transform: rotate(3deg); +} + +.shadow-blur { + position: relative; +} + +.shadow-blur::before { + content: ""; + display: block; + background: inherit; + filter: blur(10upx); + position: absolute; + width: 100%; + height: 100%; + top: 10upx; + left: 10upx; + z-index: -1; + opacity: 0.4; + transform-origin: 0 0; + border-radius: inherit; + transform: scale(1, 1); +} + +/* ================== + 鎸夐挳 + ==================== */ + +.cu-btn { + position: relative; + border: 0upx; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + padding: 0 50upx; + font-size: 28upx; + height: 64upx; + line-height: 1; + text-align: center; + text-decoration: none; + overflow: visible; + margin-left: initial; + transform: translate(0upx, 0upx); + margin-right: initial; +} + +.cu-btn::after { + display: none; +} + +.cu-btn:not([class*="bg-"]) { + background-color: #f0f0f0; +} + +.cu-btn[class*="line"] { + background-color: transparent; +} + +.cu-btn[class*="line"]::after { + content: " "; + display: block; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border: 1upx solid currentColor; + transform: scale(0.5); + transform-origin: 0 0; + box-sizing: border-box; + border-radius: 12upx; + z-index: 1; + pointer-events: none; +} + +.cu-btn.round[class*="line"]::after { + border-radius: 1000upx; +} + +.cu-btn[class*="lines"]::after { + border: 6upx solid currentColor; +} + +.cu-btn[class*="bg-"]::after { + display: none; +} + +.cu-btn.sm { + padding: 0 20upx; + font-size: 20upx; + height: 48upx; +} + +.cu-btn.lg { + padding: 0 40upx; + font-size: 32upx; + height: 80upx; +} + +.cu-btn.cuIcon.sm { + width: 48upx; + height: 48upx; +} + +.cu-btn.cuIcon { + width: 64upx; + height: 64upx; + border-radius: 500upx; + padding: 0; +} + +button.cuIcon.lg { + width: 80upx; + height: 80upx; +} + +.cu-btn.shadow-blur::before { + top: 4upx; + left: 4upx; + filter: blur(6upx); + opacity: 0.6; +} + +.cu-btn.button-hover { + transform: translate(1upx, 1upx); +} + +.block { + display: block; +} + +.cu-btn.block { + display: flex; +} + +.cu-btn[disabled] { + opacity: 0.6; + color: #ffffff; +} + +/* ================== + 寰界珷 + ==================== */ + +.cu-tag { + font-size: 24upx; + vertical-align: middle; + position: relative; + display: inline-flex; + align-items: center; + justify-content: center; + box-sizing: border-box; + padding: 0upx 16upx; + height: 48upx; + font-family: Helvetica Neue, Helvetica, sans-serif; + white-space: nowrap; +} + +.cu-tag:not([class*="bg"]):not([class*="line"]) { + background-color: #f1f1f1; +} + +.cu-tag[class*="line-"]::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border: 1upx solid currentColor; + transform: scale(0.5); + transform-origin: 0 0; + box-sizing: border-box; + border-radius: inherit; + z-index: 1; + pointer-events: none; +} + +.cu-tag.radius[class*="line"]::after { + border-radius: 12upx; +} + +.cu-tag.round[class*="line"]::after { + border-radius: 1000upx; +} + +.cu-tag[class*="line-"]::after { + border-radius: 0; +} + +.cu-tag+.cu-tag { + margin-left: 10upx; +} + +.cu-tag.sm { + font-size: 20upx; + padding: 0upx 12upx; + height: 32upx; +} + +.cu-capsule { + display: inline-flex; + vertical-align: middle; +} + +.cu-capsule+.cu-capsule { + margin-left: 10upx; +} + +.cu-capsule .cu-tag { + margin: 0; +} + +.cu-capsule .cu-tag[class*="line-"]:last-child::after { + border-left: 0upx solid transparent; +} + +.cu-capsule .cu-tag[class*="line-"]:first-child::after { + border-right: 0upx solid transparent; +} + +.cu-capsule.radius .cu-tag:first-child { + border-top-left-radius: 6upx; + border-bottom-left-radius: 6upx; +} + +.cu-capsule.radius .cu-tag:last-child::after, +.cu-capsule.radius .cu-tag[class*="line-"] { + border-top-right-radius: 12upx; + border-bottom-right-radius: 12upx; +} + +.cu-capsule.round .cu-tag:first-child { + border-top-left-radius: 200upx; + border-bottom-left-radius: 200upx; + text-indent: 4upx; +} + +.cu-capsule.round .cu-tag:last-child::after, +.cu-capsule.round .cu-tag:last-child { + border-top-right-radius: 200upx; + border-bottom-right-radius: 200upx; + text-indent: -4upx; +} + +.cu-tag.badge { + border-radius: 200upx; + position: absolute; + top: -10upx; + right: -10upx; + font-size: 20upx; + padding: 0upx 10upx; + height: 28upx; + color: #ffffff; +} + +.cu-tag.badge:not([class*="bg-"]) { + background-color: #dd514c; +} + +.cu-tag:empty:not([class*="cuIcon-"]) { + padding: 0upx; + width: 16upx; + height: 16upx; + top: -4upx; + right: -4upx; +} + +.cu-tag[class*="cuIcon-"] { + width: 32upx; + height: 32upx; + top: -4upx; + right: -4upx; +} + +/* ================== + 澶村儚 + ==================== */ + +.cu-avatar { + font-variant: small-caps; + margin: 0; + padding: 0; + display: inline-flex; + text-align: center; + justify-content: center; + align-items: center; + background-color: #ccc; + color: #ffffff; + white-space: nowrap; + position: relative; + width: 64upx; + height: 64upx; + background-size: cover; + background-position: center; + vertical-align: middle; + font-size: 1.5em; +} + +.cu-avatar.sm { + width: 48upx; + height: 48upx; + font-size: 1em; +} + +.cu-avatar.lg { + width: 96upx; + height: 96upx; + font-size: 2em; +} + +.cu-avatar.xl { + width: 128upx; + height: 128upx; + font-size: 2.5em; +} + +.cu-avatar .avatar-text { + font-size: 0.4em; +} + +.cu-avatar-group { + direction: rtl; + unicode-bidi: bidi-override; + padding: 0 10upx 0 40upx; + display: inline-block; +} + +.cu-avatar-group .cu-avatar { + margin-left: -30upx; + border: 4upx solid #f1f1f1; + vertical-align: middle; +} + +.cu-avatar-group .cu-avatar.sm { + margin-left: -20upx; + border: 1upx solid #f1f1f1; +} + +/* ================== + 杩涘害鏉� + ==================== */ + +.cu-progress { + overflow: hidden; + height: 28upx; + background-color: #ebeef5; + display: inline-flex; + align-items: center; + width: 100%; +} + +.cu-progress+view, +.cu-progress+text { + line-height: 1; +} + +.cu-progress.xs { + height: 10upx; +} + +.cu-progress.sm { + height: 20upx; +} + +.cu-progress view { + width: 0; + height: 100%; + align-items: center; + display: flex; + justify-items: flex-end; + justify-content: space-around; + font-size: 20upx; + color: #ffffff; + transition: width 0.6s ease; +} + +.cu-progress text { + align-items: center; + display: flex; + font-size: 20upx; + color: #333333; + text-indent: 10upx; +} + +.cu-progress.text-progress { + padding-right: 60upx; +} + +.cu-progress.striped view { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 72upx 72upx; +} + +.cu-progress.active view { + animation: progress-stripes 2s linear infinite; +} + +@keyframes progress-stripes { + from { + background-position: 72upx 0; + } + + to { + background-position: 0 0; + } +} + +/* ================== + 鍔犺浇 + ==================== */ + +.cu-load { + display: block; + line-height: 3em; + text-align: center; +} + +.cu-load::before { + font-family: "cuIcon"; + display: inline-block; + margin-right: 6upx; +} + +.cu-load.loading::before { + content: "\e67a"; + animation: cuIcon-spin 2s infinite linear; +} + +.cu-load.loading::after { + content: "鍔犺浇涓�..."; +} + +.cu-load.over::before { + content: "\e64a"; +} + +.cu-load.over::after { + content: "娌℃湁鏇村浜�"; +} + +.cu-load.erro::before { + content: "\e658"; +} + +.cu-load.erro::after { + content: "鍔犺浇澶辫触"; +} + +.cu-load.load-cuIcon::before { + font-size: 32upx; +} + +.cu-load.load-cuIcon::after { + display: none; +} + +.cu-load.load-cuIcon.over { + display: none; +} + +.cu-load.load-modal { + position: fixed; + top: 0; + right: 0; + bottom: 140upx; + left: 0; + margin: auto; + width: 260upx; + height: 260upx; + background-color: #ffffff; + border-radius: 10upx; + box-shadow: 0 0 0upx 2000upx rgba(0, 0, 0, 0.5); + display: flex; + align-items: center; + flex-direction: column; + justify-content: center; + font-size: 28upx; + z-index: 9999; + line-height: 2.4em; +} + +.cu-load.load-modal [class*="cuIcon-"] { + font-size: 60upx; +} + +.cu-load.load-modal image { + width: 70upx; + height: 70upx; +} + +.cu-load.load-modal::after { + content: ""; + position: absolute; + background-color: #ffffff; + border-radius: 50%; + width: 200upx; + height: 200upx; + font-size: 10px; + border-top: 6upx solid rgba(0, 0, 0, 0.05); + border-right: 6upx solid rgba(0, 0, 0, 0.05); + border-bottom: 6upx solid rgba(0, 0, 0, 0.05); + border-left: 6upx solid #f37b1d; + animation: cuIcon-spin 1s infinite linear; + z-index: -1; +} + +.load-progress { + pointer-events: none; + top: 0; + position: fixed; + width: 100%; + left: 0; + z-index: 2000; +} + +.load-progress.hide { + display: none; +} + +.load-progress .load-progress-bar { + position: relative; + width: 100%; + height: 4upx; + overflow: hidden; + transition: all 200ms ease 0s; +} + +.load-progress .load-progress-spinner { + position: absolute; + top: 10upx; + right: 10upx; + z-index: 2000; + display: block; +} + +.load-progress .load-progress-spinner::after { + content: ""; + display: block; + width: 24upx; + height: 24upx; + -webkit-box-sizing: border-box; + box-sizing: border-box; + border: solid 4upx transparent; + border-top-color: inherit; + border-left-color: inherit; + border-radius: 50%; + -webkit-animation: load-progress-spinner 0.4s linear infinite; + animation: load-progress-spinner 0.4s linear infinite; +} + +@-webkit-keyframes load-progress-spinner { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes load-progress-spinner { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +/* ================== + 鍒楄〃 + ==================== */ +.grayscale { + filter: grayscale(1); +} + +.cu-list+.cu-list { + margin-top: 30upx +} + +.cu-list>.cu-item { + transition: all .6s ease-in-out 0s; + transform: translateX(0upx) +} + +.cu-list>.cu-item.move-cur { + transform: translateX(-100upx) +} + +.cu-list>.cu-item .move { + position: absolute; + right: 0; + display: flex; + width: 100upx; + height: 100%; + transform: translateX(100%) +} + +.cu-list>.cu-item .move view { + display: flex; + flex: 1; + justify-content: center; + align-items: center +} + +.cu-list.menu-avatar { + overflow: hidden; +} + +.cu-list.menu-avatar>.cu-item { + position: relative; + display: flex; + padding-right: 10upx; + height: 140upx; + background-color: #ffffff; + justify-content: flex-end; + align-items: center +} + +.cu-list.menu-avatar>.cu-item>.cu-avatar { + position: absolute; + left: 30upx +} + +.cu-list.menu-avatar>.cu-item .flex .text-cut { + max-width: 510upx +} + +.cu-list.menu-avatar>.cu-item .content { + position: absolute; + left: 146upx; + width: calc(100% - 96upx - 60upx - 120upx - 20upx); + line-height: 1.6em; +} + +.cu-list.menu-avatar>.cu-item .content.flex-sub { + width: calc(100% - 96upx - 60upx - 20upx); +} + +.cu-list.menu-avatar>.cu-item .content>view:first-child { + font-size: 30upx; + display: flex; + align-items: center +} + +.cu-list.menu-avatar>.cu-item .content .cu-tag.sm { + display: inline-block; + margin-left: 10upx; + height: 28upx; + font-size: 16upx; + line-height: 32upx +} + +.cu-list.menu-avatar>.cu-item .action { + width: 100upx; + text-align: center +} + +.cu-list.menu-avatar>.cu-item .action view+view { + margin-top: 10upx +} + +.cu-list.menu-avatar.comment>.cu-item .content { + position: relative; + left: 0; + width: auto; + flex: 1; +} + +.cu-list.menu-avatar.comment>.cu-item { + padding: 30upx 30upx 30upx 120upx; + height: auto +} + +.cu-list.menu-avatar.comment .cu-avatar { + align-self: flex-start +} + +.cu-list.menu>.cu-item { + position: relative; + display: flex; + padding: 0 30upx; + min-height: 100upx; + background-color: #ffffff; + justify-content: space-between; + align-items: center +} + +.cu-list.menu>.cu-item:last-child:after { + border: none +} + +.cu-list.menu-avatar>.cu-item:after, +.cu-list.menu>.cu-item:after { + position: absolute; + top: 0; + left: 0; + box-sizing: border-box; + width: 200%; + height: 200%; + border-bottom: 1upx solid #ddd; + border-radius: inherit; + content: " "; + transform: scale(.5); + transform-origin: 0 0; + pointer-events: none +} + +.cu-list.menu>.cu-item.grayscale { + background-color: #f5f5f5 +} + +.cu-list.menu>.cu-item.cur { + background-color: #fcf7e9 +} + +.cu-list.menu>.cu-item.arrow { + padding-right: 90upx +} + +.cu-list.menu>.cu-item.arrow:before { + position: absolute; + top: 0; + right: 30upx; + bottom: 0; + display: block; + margin: auto; + width: 30upx; + height: 30upx; + color: #8799a3; + content: "\e6a3"; + text-align: center; + font-size: 34upx; + font-family: cuIcon; + line-height: 30upx +} + +.cu-list.menu>.cu-item button.content { + padding: 0; + background-color: transparent; + justify-content: flex-start +} + +.cu-list.menu>.cu-item button.content:after { + display: none +} + +.cu-list.menu>.cu-item .cu-avatar-group .cu-avatar { + border-color: #ffffff +} + +.cu-list.menu>.cu-item .content>view:first-child { + display: flex; + align-items: center +} + +.cu-list.menu>.cu-item .content>text[class*=cuIcon] { + display: inline-block; + margin-right: 10upx; + width: 1.6em; + text-align: center +} + +.cu-list.menu>.cu-item .content>image { + display: inline-block; + margin-right: 10upx; + width: 1.6em; + height: 1.6em; + vertical-align: middle +} + +.cu-list.menu>.cu-item .content { + font-size: 30upx; + line-height: 1.6em; + flex: 1 +} + +.cu-list.menu>.cu-item .content .cu-tag.sm { + display: inline-block; + margin-left: 10upx; + height: 28upx; + font-size: 16upx; + line-height: 32upx +} + +.cu-list.menu>.cu-item .action .cu-tag:empty { + right: 10upx +} + +.cu-list.menu { + display: block; + overflow: hidden +} + +.cu-list.menu.sm-border>.cu-item:after { + left: 30upx; + width: calc(200% - 120upx) +} + +.cu-list.grid>.cu-item { + position: relative; + display: flex; + padding: 20upx 0 30upx; + transition-duration: 0s; + flex-direction: column +} + +.cu-list.grid>.cu-item:after { + position: absolute; + top: 0; + left: 0; + box-sizing: border-box; + width: 200%; + height: 200%; + border-right: 1px solid rgba(0, 0, 0, .1); + border-bottom: 1px solid rgba(0, 0, 0, .1); + border-radius: inherit; + content: " "; + transform: scale(.5); + transform-origin: 0 0; + pointer-events: none +} + +.cu-list.grid>.cu-item text { + display: block; + margin-top: 10upx; + color: #888; + font-size: 26upx; + line-height: 40upx +} + +.cu-list.grid>.cu-item [class*=cuIcon] { + position: relative; + display: block; + margin-top: 20upx; + width: 100%; + font-size: 48upx +} + +.cu-list.grid>.cu-item .cu-tag { + right: auto; + left: 50%; + margin-left: 20upx +} + +.cu-list.grid { + background-color: #ffffff; + text-align: center +} + +.cu-list.grid.no-border>.cu-item { + padding-top: 10upx; + padding-bottom: 20upx +} + +.cu-list.grid.no-border>.cu-item:after { + border: none +} + +.cu-list.grid.no-border { + padding: 20upx 10upx +} + +.cu-list.grid.col-3>.cu-item:nth-child(3n):after, +.cu-list.grid.col-4>.cu-item:nth-child(4n):after, +.cu-list.grid.col-5>.cu-item:nth-child(5n):after { + border-right-width: 0 +} + +.cu-list.card-menu { + overflow: hidden; + margin-right: 30upx; + margin-left: 30upx; + border-radius: 20upx +} + + +/* ================== + 鎿嶄綔鏉� + ==================== */ + +.cu-bar { + display: flex; + position: relative; + align-items: center; + min-height: 100upx; + justify-content: space-between; +} + +.cu-bar .action { + display: flex; + align-items: center; + height: 100%; + justify-content: center; + max-width: 100%; +} + +.cu-bar .action.border-title { + position: relative; + top: -10upx; +} + +.cu-bar .action.border-title text[class*="bg-"]:last-child { + position: absolute; + bottom: -0.5rem; + min-width: 2rem; + height: 6upx; + left: 0; +} + +.cu-bar .action.sub-title { + position: relative; + top: -0.2rem; +} + +.cu-bar .action.sub-title text { + position: relative; + z-index: 1; +} + +.cu-bar .action.sub-title text[class*="bg-"]:last-child { + position: absolute; + display: inline-block; + bottom: -0.2rem; + border-radius: 6upx; + width: 100%; + height: 0.6rem; + left: 0.6rem; + opacity: 0.3; + z-index: 0; +} + +.cu-bar .action.sub-title text[class*="text-"]:last-child { + position: absolute; + display: inline-block; + bottom: -0.7rem; + left: 0.5rem; + opacity: 0.2; + z-index: 0; + text-align: right; + font-weight: 900; + font-size: 36upx; +} + +.cu-bar.justify-center .action.border-title text:last-child, +.cu-bar.justify-center .action.sub-title text:last-child { + left: 0; + right: 0; + margin: auto; + text-align: center; +} + +.cu-bar .action:first-child { + margin-left: 30upx; + font-size: 30upx; +} + +.cu-bar .action text.text-cut { + text-align: left; + width: 100%; +} + +.cu-bar .cu-avatar:first-child { + margin-left: 20upx; +} + +.cu-bar .action:first-child>text[class*="cuIcon-"] { + margin-left: -0.3em; + margin-right: 0.3em; +} + +.cu-bar .action:last-child { + margin-right: 30upx; +} + +.cu-bar .action>text[class*="cuIcon-"], +.cu-bar .action>view[class*="cuIcon-"] { + font-size: 36upx; +} + +.cu-bar .action>text[class*="cuIcon-"]+text[class*="cuIcon-"] { + margin-left: 0.5em; +} + +.cu-bar .content { + position: absolute; + text-align: center; + /* width: calc(100% - 340upx); */ + left: 0; + right: 0; + bottom: 0; + top: 0; + margin: auto; + height: 30px; + font-size: 20px; + line-height: 30px; + font-weight: 600; + cursor: none; + pointer-events: none; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.cu-bar.ios .content { + bottom: 7px; + height: 30px; + font-size: 16px; + line-height: 30px; +} + +.cu-bar.btn-group { + justify-content: space-around; +} + +.cu-bar.btn-group button { + padding: 20upx 32upx; +} + +.cu-bar.btn-group button { + flex: 1; + margin: 0 20upx; + max-width: 50%; +} + +.cu-bar .search-form { + background-color: #f5f5f5; + line-height: 64upx; + height: 64upx; + font-size: 24upx; + color: #333333; + flex: 1; + display: flex; + align-items: center; + margin: 0 30upx; +} + +.cu-bar .search-form+.action { + margin-right: 30upx; +} + +.cu-bar .search-form input { + flex: 1; + padding-right: 30upx; + height: 64upx; + line-height: 64upx; + font-size: 26upx; + background-color: transparent; +} + +.cu-bar .search-form [class*="cuIcon-"] { + margin: 0 0.5em 0 0.8em; +} + +.cu-bar .search-form [class*="cuIcon-"]::before { + top: 0upx; +} + +.cu-bar.fixed, +.nav.fixed { + position: fixed; + width: 100%; + top: 0; + z-index: 1024; + box-shadow: 0 1upx 6upx rgba(0, 0, 0, 0.1); +} + +.cu-bar.foot { + position: fixed; + width: 100%; + bottom: 0; + z-index: 1024; + box-shadow: 0 -1upx 6upx rgba(0, 0, 0, 0.1); +} + +.cu-bar.tabbar { + padding: 0; + height: calc(100upx + env(safe-area-inset-bottom) / 2); + padding-bottom: calc(env(safe-area-inset-bottom) / 2); +} + +.cu-tabbar-height { + min-height: 100upx; + height: calc(100upx + env(safe-area-inset-bottom) / 2); +} + +.cu-bar.tabbar.shadow { + box-shadow: 0 -1upx 6upx rgba(0, 0, 0, 0.1); +} + +.cu-bar.tabbar .action { + font-size: 22upx; + position: relative; + flex: 1; + text-align: center; + padding: 0; + display: block; + height: auto; + line-height: 1; + margin: 0; + background-color: inherit; + overflow: initial; +} + +.cu-bar.tabbar.shop .action { + width: 140upx; + flex: initial; +} + +.cu-bar.tabbar .action.add-action { + position: relative; + z-index: 2; + padding-top: 50upx; +} + +.cu-bar.tabbar .action.add-action [class*="cuIcon-"] { + position: absolute; + width: 70upx; + z-index: 2; + height: 70upx; + border-radius: 50%; + line-height: 70upx; + font-size: 50upx; + top: -35upx; + left: 0; + right: 0; + margin: auto; + padding: 0; +} + +.cu-bar.tabbar .action.add-action::after { + content: ""; + position: absolute; + width: 100upx; + height: 100upx; + top: -50upx; + left: 0; + right: 0; + margin: auto; + box-shadow: 0 -3upx 8upx rgba(0, 0, 0, 0.08); + border-radius: 50upx; + background-color: inherit; + z-index: 0; +} + +.cu-bar.tabbar .action.add-action::before { + content: ""; + position: absolute; + width: 100upx; + height: 30upx; + bottom: 30upx; + left: 0; + right: 0; + margin: auto; + background-color: inherit; + z-index: 1; +} + +.cu-bar.tabbar .btn-group { + flex: 1; + display: flex; + justify-content: space-around; + align-items: center; + padding: 0 10upx; +} + +.cu-bar.tabbar button.action::after { + border: 0; +} + +.cu-bar.tabbar .action [class*="cuIcon-"] { + width: 100upx; + position: relative; + display: block; + height: auto; + margin: 0 auto 10upx; + text-align: center; + font-size: 40upx; +} + +.cu-bar.tabbar .action .cuIcon-cu-image { + margin: 0 auto; +} + +.cu-bar.tabbar .action .cuIcon-cu-image image { + width: 50upx; + height: 50upx; + display: inline-block; +} + +.cu-bar.tabbar .submit { + align-items: center; + display: flex; + justify-content: center; + text-align: center; + position: relative; + flex: 2; + align-self: stretch; +} + +.cu-bar.tabbar .submit:last-child { + flex: 2.6; +} + +.cu-bar.tabbar .submit+.submit { + flex: 2; +} + +.cu-bar.tabbar.border .action::before { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + transform: scale(0.5); + transform-origin: 0 0; + border-right: 1upx solid rgba(0, 0, 0, 0.1); + z-index: 3; +} + +.cu-bar.tabbar.border .action:last-child:before { + display: none; +} + +.cu-bar.input { + padding-right: 20upx; + background-color: #ffffff; +} + +.cu-bar.input input { + overflow: initial; + line-height: 64upx; + height: 64upx; + min-height: 64upx; + flex: 1; + font-size: 30upx; + margin: 0 20upx; +} + +.cu-bar.input .action { + margin-left: 20upx; +} + +.cu-bar.input .action [class*="cuIcon-"] { + font-size: 48upx; +} + +.cu-bar.input input+.action { + margin-right: 20upx; + margin-left: 0upx; +} + +.cu-bar.input .action:first-child [class*="cuIcon-"] { + margin-left: 0upx; +} + +.cu-custom { + display: block; + position: relative; +} + +.cu-custom .cu-bar .content { + width: calc(100% - 100px); +} + +/* #ifdef MP-ALIPAY */ +.cu-custom .cu-bar .action .cuIcon-back { + opacity: 0; +} + +/* #endif */ + +.cu-custom .cu-bar .content image { + height: 60upx; + width: 240upx; +} + +.cu-custom .cu-bar { + min-height: 0px; + /* #ifdef MP-WEIXIN */ + padding-right: 220upx; + /* #endif */ + /* #ifdef MP-ALIPAY */ + padding-right: 150upx; + /* #endif */ + box-shadow: 0upx 0upx 0upx; + z-index: 9999; +} + +.cu-custom .cu-bar .border-custom { + position: relative; + background: rgba(0, 0, 0, 0.15); + border-radius: 1000upx; + height: 30px; +} + +.cu-custom .cu-bar .border-custom::after { + content: " "; + width: 200%; + height: 200%; + position: absolute; + top: 0; + left: 0; + border-radius: inherit; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; + border: 1upx solid #ffffff; + opacity: 0.5; +} + +.cu-custom .cu-bar .border-custom::before { + content: " "; + width: 1upx; + height: 110%; + position: absolute; + top: 22.5%; + left: 0; + right: 0; + margin: auto; + transform: scale(0.5); + transform-origin: 0 0; + pointer-events: none; + box-sizing: border-box; + opacity: 0.6; + background-color: #ffffff; +} + +.cu-custom .cu-bar .border-custom text { + display: block; + flex: 1; + margin: auto !important; + text-align: center; + font-size: 34upx; +} + +/* ================== + 瀵艰埅鏍� + ==================== */ + +.nav { + white-space: nowrap; +} + +::-webkit-scrollbar { + display: none; +} + +.nav .cu-item { + height: 90upx; + display: inline-block; + line-height: 90upx; + /* margin: 0 10upx; */ + padding: 0 20upx; +} + +.nav .cu-item.cur { + border-bottom: 4upx solid; +} + +/* ================== + 鏃堕棿杞� + ==================== */ + +.cu-timeline { + display: block; + background-color: #ffffff; +} + +.cu-timeline .cu-time { + width: 120upx; + text-align: center; + padding: 20upx 0; + font-size: 26upx; + color: #888; + display: block; +} + +.cu-timeline>.cu-item { + padding: 30upx 30upx 30upx 120upx; + position: relative; + display: block; + z-index: 0; +} + +.cu-timeline>.cu-item:not([class*="text-"]) { + color: #ccc; +} + +.cu-timeline>.cu-item::after { + content: ""; + display: block; + position: absolute; + width: 1upx; + background-color: #ddd; + left: 60upx; + height: 100%; + top: 0; + z-index: 8; +} + +.cu-timeline>.cu-item::before { + font-family: "cuIcon"; + display: block; + position: absolute; + top: 36upx; + z-index: 9; + background-color: #ffffff; + width: 50upx; + height: 50upx; + text-align: center; + border: none; + line-height: 50upx; + left: 36upx; +} + +.cu-timeline>.cu-item:not([class*="cuIcon-"])::before { + content: "\e763"; +} + +.cu-timeline>.cu-item[class*="cuIcon-"]::before { + background-color: #ffffff; + width: 50upx; + height: 50upx; + text-align: center; + border: none; + line-height: 50upx; + left: 36upx; +} + +.cu-timeline>.cu-item>.content { + padding: 30upx; + border-radius: 6upx; + display: block; + line-height: 1.6; +} + +.cu-timeline>.cu-item>.content:not([class*="bg-"]) { + background-color: #f1f1f1; + color: #333333; +} + +.cu-timeline>.cu-item>.content+.content { + margin-top: 20upx; +} + +/* ================== + 鑱婂ぉ + ==================== */ + +.cu-chat { + display: flex; + flex-direction: column; +} + +.cu-chat .cu-item { + display: flex; + padding: 30upx 30upx 70upx; + position: relative; +} + +.cu-chat .cu-item>.cu-avatar { + width: 80upx; + height: 80upx; +} + +.cu-chat .cu-item>.main { + max-width: calc(100% - 260upx); + margin: 0 40upx; + display: flex; + align-items: center; +} + +.cu-chat .cu-item>image { + height: 320upx; +} + +.cu-chat .cu-item>.main .content { + padding: 20upx; + border-radius: 6upx; + display: inline-flex; + max-width: 100%; + align-items: center; + font-size: 30upx; + position: relative; + min-height: 80upx; + line-height: 40upx; + text-align: left; +} + +.cu-chat .cu-item>.main .content:not([class*="bg-"]) { + background-color: #ffffff; + color: #333333; +} + +.cu-chat .cu-item .date { + position: absolute; + font-size: 24upx; + color: #8799a3; + width: calc(100% - 320upx); + bottom: 20upx; + left: 160upx; +} + +.cu-chat .cu-item .action { + padding: 0 30upx; + display: flex; + align-items: center; +} + +.cu-chat .cu-item>.main .content::after { + content: ""; + top: 27upx; + transform: rotate(45deg); + position: absolute; + z-index: 100; + display: inline-block; + overflow: hidden; + width: 24upx; + height: 24upx; + left: -12upx; + right: initial; + background-color: inherit; +} + +.cu-chat .cu-item.self>.main .content::after { + left: auto; + right: -12upx; +} + +.cu-chat .cu-item>.main .content::before { + content: ""; + top: 30upx; + transform: rotate(45deg); + position: absolute; + z-index: -1; + display: inline-block; + overflow: hidden; + width: 24upx; + height: 24upx; + left: -12upx; + right: initial; + background-color: inherit; + filter: blur(5upx); + opacity: 0.3; +} + +.cu-chat .cu-item>.main .content:not([class*="bg-"])::before { + background-color: #333333; + opacity: 0.1; +} + +.cu-chat .cu-item.self>.main .content::before { + left: auto; + right: -12upx; +} + +.cu-chat .cu-item.self { + justify-content: flex-end; + text-align: right; +} + +.cu-chat .cu-info { + display: inline-block; + margin: 20upx auto; + font-size: 24upx; + padding: 8upx 12upx; + background-color: rgba(0, 0, 0, 0.2); + border-radius: 6upx; + color: #ffffff; + max-width: 400upx; + line-height: 1.4; +} + +/* ================== + 鍗$墖 + ==================== */ + +.cu-card { + display: block; + overflow: hidden; +} + +.cu-card>.cu-item { + display: block; + background-color: #ffffff; + overflow: hidden; + border-radius: 10upx; + margin: 30upx; +} + +.cu-card>.cu-item.shadow-blur { + overflow: initial; +} + +.cu-card.no-card>.cu-item { + margin: 0upx; + border-radius: 0upx; +} + +.cu-card .grid.grid-square { + margin-bottom: -20upx; +} + +.cu-card.case .image { + position: relative; +} + +.cu-card.case .image image { + width: 100%; +} + +.cu-card.case .image .cu-tag { + position: absolute; + right: 0; + top: 0; +} + +.cu-card.case .image .cu-bar { + position: absolute; + bottom: 0; + width: 100%; + background-color: transparent; + padding: 0upx 30upx; +} + +.cu-card.case.no-card .image { + margin: 30upx 30upx 0; + overflow: hidden; + border-radius: 10upx; +} + +.cu-card.dynamic { + display: block; +} + +.cu-card.dynamic>.cu-item { + display: block; + background-color: #ffffff; + overflow: hidden; +} + +.cu-card.dynamic>.cu-item>.text-content { + padding: 0 30upx 0; + max-height: 6.4em; + overflow: hidden; + font-size: 30upx; + margin-bottom: 20upx; +} + +.cu-card.dynamic>.cu-item .square-img { + width: 100%; + height: 200upx; + border-radius: 6upx; +} + +.cu-card.dynamic>.cu-item .only-img { + width: 100%; + height: 320upx; + border-radius: 6upx; +} + +/* card.dynamic>.cu-item .comment { + padding: 20upx; + background-color: #f1f1f1; + margin: 0 30upx 30upx; + border-radius: 6upx; +} */ + +.cu-card.article { + display: block; +} + +.cu-card.article>.cu-item { + padding-bottom: 30upx; +} + +.cu-card.article>.cu-item .title { + font-size: 30upx; + font-weight: 900; + color: #333333; + line-height: 100upx; + padding: 0 30upx; +} + +.cu-card.article>.cu-item .content { + display: flex; + padding: 0 30upx; +} + +.cu-card.article>.cu-item .content>image { + width: 240upx; + height: 6.4em; + margin-right: 20upx; + border-radius: 6upx; +} + +.cu-card.article>.cu-item .content .desc { + flex: 1; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.cu-card.article>.cu-item .content .text-content { + font-size: 28upx; + color: #888; + height: 4.8em; + overflow: hidden; +} + +/* ================== + 琛ㄥ崟 + ==================== */ + +.cu-form-group { + background-color: #ffffff; + padding: 1upx 30upx; + display: flex; + align-items: center; + min-height: 100upx; + justify-content: space-between; +} + +.cu-form-group+.cu-form-group { + border-top: 1upx solid #eee; +} + +.cu-form-group .title { + text-align: justify; + padding-right: 30upx; + font-size: 30upx; + position: relative; + height: 60upx; + line-height: 60upx; +} + +.cu-form-group input { + flex: 1; + font-size: 30upx; + color: #555; + padding-right: 20upx; +} + +.cu-form-group>text[class*="cuIcon-"] { + font-size: 36upx; + padding: 0; + box-sizing: border-box; +} + +.cu-form-group textarea { + margin: 32upx 0 30upx; + height: 4.6em; + width: 100%; + line-height: 1.2em; + flex: 1; + font-size: 28upx; + padding: 0; +} + +.cu-form-group.align-start .title { + height: 1em; + margin-top: 32upx; + line-height: 1em; +} + +.cu-form-group picker { + flex: 1; + padding-right: 40upx; + overflow: hidden; + position: relative; +} + +.cu-form-group picker .picker { + line-height: 100upx; + font-size: 28upx; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + width: 100%; + text-align: right; +} + +.cu-form-group picker::after { + font-family: cuIcon; + display: block; + content: "\e6a3"; + position: absolute; + font-size: 34upx; + color: #8799a3; + line-height: 100upx; + width: 60upx; + text-align: center; + top: 0; + bottom: 0; + right: -20upx; + margin: auto; +} + +.cu-form-group textarea[disabled], +.cu-form-group textarea[disabled] .placeholder { + color: transparent; +} + +/* ================== + 妯℃�佺獥鍙� + ==================== */ + +.cu-modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1110; + opacity: 0; + outline: 0; + text-align: center; + -ms-transform: scale(1.185); + transform: scale(1.185); + backface-visibility: hidden; + perspective: 2000upx; + background: rgba(0, 0, 0, 0.6); + transition: all 0.3s ease-in-out 0s; + pointer-events: none; +} + +.cu-modal::before { + content: "\200B"; + display: inline-block; + height: 100%; + vertical-align: middle; +} + +.cu-modal.show { + opacity: 1; + transition-duration: 0.3s; + -ms-transform: scale(1); + transform: scale(1); + overflow-x: hidden; + overflow-y: auto; + pointer-events: auto; +} + +.cu-dialog { + position: relative; + display: inline-block; + vertical-align: middle; + margin-left: auto; + margin-right: auto; + width: 680upx; + max-width: 100%; + background-color: #f8f8f8; + border-radius: 10upx; + overflow: hidden; +} + +.cu-modal.bottom-modal::before { + vertical-align: bottom; +} + +.cu-modal.bottom-modal .cu-dialog { + width: 100%; + height: 200rpx; + border-radius: 10rpx; +} + +.cu-modal.bottom-modal { + margin-bottom: -1000upx; +} + +.cu-modal.bottom-modal.show { + margin-bottom: 0; +} + +.cu-modal.drawer-modal { + transform: scale(1); + display: flex; +} + +.cu-modal.drawer-modal .cu-dialog { + height: 100%; + min-width: 200upx; + border-radius: 0; + margin: initial; + transition-duration: 0.3s; +} + +.cu-modal.drawer-modal.justify-start .cu-dialog { + transform: translateX(-100%); +} + +.cu-modal.drawer-modal.justify-end .cu-dialog { + transform: translateX(100%); +} + +.cu-modal.drawer-modal.show .cu-dialog { + transform: translateX(0%); +} +.cu-modal .cu-dialog>.cu-bar:first-child .action{ + min-width: 100rpx; + margin-right: 0; + min-height: 100rpx; +} +/* ================== + 杞挱 + ==================== */ +swiper .a-swiper-dot { + display: inline-block; + width: 16upx; + height: 16upx; + background: rgba(0, 0, 0, .3); + border-radius: 50%; + vertical-align: middle; +} + +swiper[class*="-dot"] .wx-swiper-dots, +swiper[class*="-dot"] .a-swiper-dots, +swiper[class*="-dot"] .uni-swiper-dots { + display: flex; + align-items: center; + width: 100%; + justify-content: center; +} + +swiper.square-dot .wx-swiper-dot, +swiper.square-dot .a-swiper-dot, +swiper.square-dot .uni-swiper-dot { + background-color: #ffffff; + opacity: 0.4; + width: 10upx; + height: 10upx; + border-radius: 20upx; + margin: 0 8upx !important; +} + +swiper.square-dot .wx-swiper-dot.wx-swiper-dot-active, +swiper.square-dot .a-swiper-dot.a-swiper-dot-active, +swiper.square-dot .uni-swiper-dot.uni-swiper-dot-active { + opacity: 1; + width: 30upx; +} + +swiper.round-dot .wx-swiper-dot, +swiper.round-dot .a-swiper-dot, +swiper.round-dot .uni-swiper-dot { + width: 10upx; + height: 10upx; + position: relative; + margin: 4upx 8upx !important; +} + +swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active::after, +swiper.round-dot .a-swiper-dot.a-swiper-dot-active::after, +swiper.round-dot .uni-swiper-dot.uni-swiper-dot-active::after { + content: ""; + position: absolute; + width: 10upx; + height: 10upx; + top: 0upx; + left: 0upx; + right: 0; + bottom: 0; + margin: auto; + background-color: #ffffff; + border-radius: 20upx; +} + +swiper.round-dot .wx-swiper-dot.wx-swiper-dot-active, +swiper.round-dot .a-swiper-dot.a-swiper-dot-active, +swiper.round-dot .uni-swiper-dot.uni-swiper-dot-active { + width: 18upx; + height: 18upx; +} + +.screen-swiper { + min-height: 250rpx; + /* height: 100%; */ +} + +.screen-swiper image, +.screen-swiper video, +.swiper-item image, +.swiper-item video { + width: 100%; + display: block; + height: 100%; + margin: 0; + pointer-events: none; +} + +.card-swiper { + height: 420upx !important; +} + +.card-swiper swiper-item { + width: 610upx !important; + left: 70upx; + box-sizing: border-box; + padding: 40upx 0upx 70upx; + overflow: initial; +} + +.card-swiper swiper-item .swiper-item { + width: 100%; + display: block; + height: 100%; + border-radius: 10upx; + transform: scale(0.9); + transition: all 0.2s ease-in 0s; + overflow: hidden; +} + +.card-swiper swiper-item.cur .swiper-item { + transform: none; + transition: all 0.2s ease-in 0s; +} + + +.tower-swiper { + height: 420upx; + position: relative; + max-width: 750upx; + overflow: hidden; +} + +.tower-swiper .tower-item { + position: absolute; + width: 300upx; + height: 380upx; + top: 0; + bottom: 0; + left: 50%; + margin: auto; + transition: all 0.2s ease-in 0s; + opacity: 1; +} + +.tower-swiper .tower-item.none { + opacity: 0; +} + +.tower-swiper .tower-item .swiper-item { + width: 100%; + height: 100%; + border-radius: 6upx; + overflow: hidden; +} + +/* ================== + 姝ラ鏉� + ==================== */ + +.cu-steps { + display: flex; +} + +scroll-view.cu-steps { + display: block; + white-space: nowrap; +} + +scroll-view.cu-steps .cu-item { + display: inline-block; +} + +.cu-steps .cu-item { + flex: 1; + text-align: center; + position: relative; + min-width: 100upx; +} + +.cu-steps .cu-item:not([class*="text-"]) { + color: #8799a3; +} + +.cu-steps .cu-item [class*="cuIcon-"], +.cu-steps .cu-item .num { + display: block; + font-size: 40upx; + line-height: 80upx; +} + +.cu-steps .cu-item::before, +.cu-steps .cu-item::after, +.cu-steps.steps-arrow .cu-item::before, +.cu-steps.steps-arrow .cu-item::after { + content: ""; + display: block; + position: absolute; + height: 0px; + width: calc(100% - 80upx); + border-bottom: 1px solid #ccc; + left: calc(0px - (100% - 80upx) / 2); + top: 40upx; + z-index: 0; +} + +.cu-steps.steps-arrow .cu-item::before, +.cu-steps.steps-arrow .cu-item::after { + content: "\e6a3"; + font-family: 'cuIcon'; + height: 30upx; + border-bottom-width: 0px; + line-height: 30upx; + top: 0; + bottom: 0; + margin: auto; + color: #ccc; +} + +.cu-steps.steps-bottom .cu-item::before, +.cu-steps.steps-bottom .cu-item::after { + bottom: 40upx; + top: initial; +} + +.cu-steps .cu-item::after { + border-bottom: 1px solid currentColor; + width: 0px; + transition: all 0.3s ease-in-out 0s; +} + +.cu-steps .cu-item[class*="text-"]::after { + width: calc(100% - 80upx); + color: currentColor; +} + +.cu-steps .cu-item:first-child::before, +.cu-steps .cu-item:first-child::after { + display: none; +} + +.cu-steps .cu-item .num { + width: 40upx; + height: 40upx; + border-radius: 50%; + line-height: 40upx; + margin: 20upx auto; + font-size: 24upx; + border: 1px solid currentColor; + position: relative; + overflow: hidden; +} + +.cu-steps .cu-item[class*="text-"] .num { + background-color: currentColor; +} + +.cu-steps .cu-item .num::before, +.cu-steps .cu-item .num::after { + content: attr(data-index); + position: absolute; + left: 0; + right: 0; + top: 0; + bottom: 0; + margin: auto; + transition: all 0.3s ease-in-out 0s; + transform: translateY(0upx); +} + +.cu-steps .cu-item[class*="text-"] .num::before { + transform: translateY(-40upx); + color: #ffffff; +} + +.cu-steps .cu-item .num::after { + transform: translateY(40upx); + color: #ffffff; + transition: all 0.3s ease-in-out 0s; +} + +.cu-steps .cu-item[class*="text-"] .num::after { + content: "\e645"; + font-family: 'cuIcon'; + color: #ffffff; + transform: translateY(0upx); +} + +.cu-steps .cu-item[class*="text-"] .num.err::after { + content: "\e646"; +} + +/* ================== + 甯冨眬 + ==================== */ + +/* -- flex寮规�у竷灞� -- */ + +.flex { + display: flex; +} + +.basis-xs { + flex-basis: 20%; +} + +.basis-sm { + flex-basis: 40%; +} + +.basis-df { + flex-basis: 50%; +} + +.basis-lg { + flex-basis: 60%; +} + +.basis-xl { + flex-basis: 80%; +} + +.flex-sub { + flex: 1; +} + +.flex-twice { + flex: 2; +} + +.flex-treble { + flex: 3; +} + +.flex-direction { + flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.align-start { + align-items: flex-start; +} + +.align-end { + align-items: flex-end; +} + +.align-center { + align-items: center; +} + +.align-stretch { + align-items: stretch; +} + +.self-start { + align-self: flex-start; +} + +.self-center { + align-self: flex-center; +} + +.self-end { + align-self: flex-end; +} + +.self-stretch { + align-self: stretch; +} + +.align-stretch { + align-items: stretch; +} + +.justify-start { + justify-content: flex-start; +} + +.justify-end { + justify-content: flex-end; +} + +.justify-center { + justify-content: center; +} + +.justify-between { + justify-content: space-between; +} + +.justify-around { + justify-content: space-around; +} + +/* grid甯冨眬 */ + +.grid { + display: flex; + flex-wrap: wrap; +} + +.grid.grid-square { + overflow: hidden; +} + +.grid.grid-square .cu-tag { + position: absolute; + right: 0; + top: 0; + border-bottom-left-radius: 6upx; + padding: 6upx 12upx; + height: auto; + background-color: rgba(0, 0, 0, 0.5); +} + +.grid.grid-square>view>text[class*="cuIcon-"] { + font-size: 52upx; + position: absolute; + color: #8799a3; + margin: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} + +.grid.grid-square>view { + margin-right: 20upx; + margin-bottom: 20upx; + border-radius: 6upx; + position: relative; + overflow: hidden; +} +.grid.grid-square>view.bg-img image { + width: 100%; + height: 100%; + position: absolute; +} +.grid.col-1.grid-square>view { + padding-bottom: 100%; + height: 0; + margin-right: 0; +} + +.grid.col-2.grid-square>view { + padding-bottom: calc((100% - 20upx)/2); + height: 0; + width: calc((100% - 20upx)/2); +} + +.grid.col-3.grid-square>view { + padding-bottom: calc((100% - 40upx)/3); + height: 0; + width: calc((100% - 40upx)/3); +} + +.grid.col-4.grid-square>view { + padding-bottom: calc((100% - 60upx)/4); + height: 0; + width: calc((100% - 60upx)/4); +} + +.grid.col-5.grid-square>view { + padding-bottom: calc((100% - 80upx)/5); + height: 0; + width: calc((100% - 80upx)/5); +} + +.grid.col-2.grid-square>view:nth-child(2n), +.grid.col-3.grid-square>view:nth-child(3n), +.grid.col-4.grid-square>view:nth-child(4n), +.grid.col-5.grid-square>view:nth-child(5n) { + margin-right: 0; +} + +.grid.col-1>view { + width: 100%; +} + +.grid.col-2>view { + width: 50%; +} + +.grid.col-3>view { + width: 33.33%; +} + +.grid.col-4>view { + width: 25%; +} + +.grid.col-5>view { + width: 20%; +} + +/* -- 鍐呭杈硅窛 -- */ + +.margin-0 { + margin: 0; +} + +.margin-xs { + margin: 10upx; +} + +.margin-sm { + margin: 20upx; +} + +.margin { + margin: 30upx; +} + +.margin-lg { + margin: 40upx; +} + +.margin-xl { + margin: 50upx; +} + +.margin-top-xs { + margin-top: 10upx; +} + +.margin-top-sm { + margin-top: 20upx; +} + +.margin-top { + margin-top: 30upx; +} + +.margin-top-lg { + margin-top: 40upx; +} + +.margin-top-xl { + margin-top: 50upx; +} + +.margin-right-xs { + margin-right: 10upx; +} + +.margin-right-sm { + margin-right: 20upx; +} + +.margin-right { + margin-right: 30upx; +} + +.margin-right-lg { + margin-right: 40upx; +} + +.margin-right-xl { + margin-right: 50upx; +} + +.margin-bottom-xs { + margin-bottom: 10upx; +} + +.margin-bottom-sm { + margin-bottom: 20upx; +} + +.margin-bottom { + margin-bottom: 30upx; +} + +.margin-bottom-lg { + margin-bottom: 40upx; +} + +.margin-bottom-xl { + margin-bottom: 50upx; +} + +.margin-left-xs { + margin-left: 10upx; +} + +.margin-left-sm { + margin-left: 20upx; +} + +.margin-left { + margin-left: 30upx; +} + +.margin-left-lg { + margin-left: 40upx; +} + +.margin-left-xl { + margin-left: 50upx; +} + +.margin-lr-xs { + margin-left: 10upx; + margin-right: 10upx; +} + +.margin-lr-sm { + margin-left: 20upx; + margin-right: 20upx; +} + +.margin-lr { + margin-left: 30upx; + margin-right: 30upx; +} + +.margin-lr-lg { + margin-left: 40upx; + margin-right: 40upx; +} + +.margin-lr-xl { + margin-left: 50upx; + margin-right: 50upx; +} + +.margin-tb-xs { + margin-top: 10upx; + margin-bottom: 10upx; +} + +.margin-tb-sm { + margin-top: 20upx; + margin-bottom: 20upx; +} + +.margin-tb { + margin-top: 30upx; + margin-bottom: 30upx; +} + +.margin-tb-lg { + margin-top: 40upx; + margin-bottom: 40upx; +} + +.margin-tb-xl { + margin-top: 50upx; + margin-bottom: 50upx; +} + +.padding-0 { + padding: 0; +} + +.padding-xs { + padding: 10upx; +} + +.padding-sm { + padding: 20upx; +} + +.padding { + padding: 30upx; +} + +.padding-lg { + padding: 40upx; +} + +.padding-xl { + padding: 15upx 25upx; +} + +.padding-top-xs { + padding-top: 10upx; +} + +.padding-top-sm { + padding-top: 20upx; +} + +.padding-top { + padding-top: 30upx; +} + +.padding-top-lg { + padding-top: 40upx; +} + +.padding-top-xl { + padding-top: 50upx; +} + +.padding-right-xs { + padding-right: 10upx; +} + +.padding-right-sm { + padding-right: 20upx; +} + +.padding-right { + padding-right: 30upx; +} + +.padding-right-lg { + padding-right: 40upx; +} + +.padding-right-xl { + padding-right: 50upx; +} + +.padding-bottom-xs { + padding-bottom: 10upx; +} + +.padding-bottom-sm { + padding-bottom: 20upx; +} + +.padding-bottom { + padding-bottom: 30upx; +} + +.padding-bottom-lg { + padding-bottom: 40upx; +} + +.padding-bottom-xl { + padding-bottom: 50upx; +} + +.padding-left-xs { + padding-left: 10upx; +} + +.padding-left-sm { + padding-left: 20upx; +} + +.padding-left { + padding-left: 30upx; +} + +.padding-left-lg { + padding-left: 40upx; +} + +.padding-left-xl { + padding-left: 50upx; +} + +.padding-lr-xs { + padding-left: 10upx; + padding-right: 10upx; +} + +.padding-lr-sm { + padding-left: 20upx; + padding-right: 20upx; +} + +.padding-lr { + padding-left: 30upx; + padding-right: 30upx; +} + +.padding-lr-lg { + padding-left: 40upx; + padding-right: 40upx; +} + +.padding-lr-xl { + padding-left: 50upx; + padding-right: 50upx; +} + +.padding-tb-xs { + padding-top: 10upx; + padding-bottom: 10upx; +} + +.padding-tb-sm { + padding-top: 20upx; + padding-bottom: 20upx; +} + +.padding-tb { + padding-top: 30upx; + padding-bottom: 30upx; +} + +.padding-tb-lg { + padding-top: 40upx; + padding-bottom: 40upx; +} + +.padding-tb-xl { + padding-top: 50upx; + padding-bottom: 50upx; +} + +/* -- 娴姩 -- */ + +.cf::after, +.cf::before { + content: " "; + display: table; +} + +.cf::after { + clear: both; +} + +.fl { + float: left; +} + +.fr { + float: right; +} + +/* ================== + 鑳屾櫙 + ==================== */ + +.line-red::after, +.lines-red::after { + border-color: #e54d42; +} + +.line-orange::after, +.lines-orange::after { + border-color: #f37b1d; +} + +.line-yellow::after, +.lines-yellow::after { + border-color: #fbbd08; +} + +.line-olive::after, +.lines-olive::after { + border-color: #8dc63f; +} + +.line-green::after, +.lines-green::after { + border-color: #39b54a; +} + +.line-cyan::after, +.lines-cyan::after { + border-color: #1cbbb4; +} + +.line-blue::after, +.lines-blue::after { + border-color: #0081ff; +} + +.line-purple::after, +.lines-purple::after { + border-color: #6739b6; +} + +.line-mauve::after, +.lines-mauve::after { + border-color: #9c26b0; +} + +.line-pink::after, +.lines-pink::after { + border-color: #e03997; +} + +.line-brown::after, +.lines-brown::after { + border-color: #a5673f; +} + +.line-grey::after, +.lines-grey::after { + border-color: #8799a3; +} + +.line-gray::after, +.lines-gray::after { + border-color: #aaaaaa; +} + +.line-black::after, +.lines-black::after { + border-color: #333333; +} + +.line-white::after, +.lines-white::after { + border-color: #ffffff; +} + +.bg-red { + background-color: #e54d42; + color: #ffffff; +} + +.bg-orange { + background-color: #f37b1d; + color: #ffffff; +} + +.bg-yellow { + background-color: #fbbd08; + color: #333333; +} + +.bg-olive { + background-color: #8dc63f; + color: #ffffff; +} + +.bg-green { + background-color: #39b54a; + color: #ffffff; +} + +.bg-cyan { + background-color: #1cbbb4; + color: #ffffff; +} + +.bg-blue { + background-color: #0081ff; + color: #ffffff; +} + +.bg-purple { + background-color: #6739b6; + color: #ffffff; +} + +.bg-mauve { + background-color: #9c26b0; + color: #ffffff; +} + +.bg-pink { + background-color: #e03997; + color: #ffffff; +} + +.bg-brown { + background-color: #a5673f; + color: #ffffff; +} + +.bg-grey { + background-color: #fff; + color: #f18202; + border: 1px solid #f18202; +} + +.bg-gray { + background-color: #f0f0f0; + color: #333333; +} + +.bg-black { + background-color: #333333; + color: #ffffff; +} + +.bg-white { + background-color: #ffffff; + color: #666666; +} +.bg-green{ + background-color: #58D9B2; + /* background-image: linear-gradient(rgba(0, 0, 0, 1), rgba(0, 0, 0, 0.01)); */ + color: #ffffff; +} +.bg-shadeTop { + background-image: linear-gradient(rgba(0, 0, 0, 1), rgba(0, 0, 0, 0.01)); + color: #ffffff; +} + +.bg-shadeBottom { + background-image: linear-gradient(rgba(0, 0, 0, 0.01), rgba(0, 0, 0, 1)); + color: #ffffff; +} + +.bg-red.light { + color: #e54d42; + background-color: #fadbd9; +} + +.bg-orange.light { + color: #f37b1d; + background-color: #fde6d2; +} + +.bg-yellow.light { + color: #fbbd08; + background-color: #fef2ced2; +} + +.bg-olive.light { + color: #8dc63f; + background-color: #e8f4d9; +} + +.bg-green.light { + color: #39b54a; + background-color: #d7f0dbff; +} + +.bg-cyan.light { + color: #1cbbb4; + background-color: #d2f1f0; +} + +.bg-blue.light { + color: #0081ff; + background-color: #cce6ff; +} + +.bg-purple.light { + color: #6739b6; + background-color: #e1d7f0; +} + +.bg-mauve.light { + color: #9c26b0; + background-color: #ebd4ef; +} + +.bg-pink.light { + color: #e03997; + background-color: #f9d7ea; +} + +.bg-brown.light { + color: #a5673f; + background-color: #ede1d9; +} + +.bg-grey.light { + color: #8799a3; + background-color: #e7ebed; +} + +.bg-gradual-red { + background-image: linear-gradient(45deg, #f43f3b, #ec008c); + color: #ffffff; +} + +.bg-gradual-orange { + background-image: linear-gradient(45deg, #ff9700, #ed1c24); + color: #ffffff; +} + +.bg-gradual-green { + background-image: linear-gradient(45deg, #39b54a, #8dc63f); + color: #ffffff; +} + +.bg-gradual-purple { + background-image: linear-gradient(45deg, #9000ff, #5e00ff); + color: #ffffff; +} + +.bg-gradual-pink { + background-image: linear-gradient(45deg, #ec008c, #6739b6); + color: #ffffff; +} + +.bg-gradual-blue { + background-image: linear-gradient(45deg, #0081ff, #1cbbb4); + color: #ffffff; +} + +.shadow[class*="-red"] { + box-shadow: 6upx 6upx 8upx rgba(204, 69, 59, 0.2); +} + +.shadow[class*="-orange"] { + box-shadow: 6upx 6upx 8upx rgba(217, 109, 26, 0.2); +} + +.shadow[class*="-yellow"] { + box-shadow: 6upx 6upx 8upx rgba(224, 170, 7, 0.2); +} + +.shadow[class*="-olive"] { + box-shadow: 6upx 6upx 8upx rgba(124, 173, 55, 0.2); +} + +.shadow[class*="-green"] { + box-shadow: 6upx 6upx 8upx rgba(48, 156, 63, 0.2); +} + +.shadow[class*="-cyan"] { + box-shadow: 6upx 6upx 8upx rgba(28, 187, 180, 0.2); +} + +.shadow[class*="-blue"] { + box-shadow: 6upx 6upx 8upx rgba(0, 102, 204, 0.2); +} + +.shadow[class*="-purple"] { + box-shadow: 6upx 6upx 8upx rgba(88, 48, 156, 0.2); +} + +.shadow[class*="-mauve"] { + box-shadow: 6upx 6upx 8upx rgba(133, 33, 150, 0.2); +} + +.shadow[class*="-pink"] { + box-shadow: 6upx 6upx 8upx rgba(199, 50, 134, 0.2); +} + +.shadow[class*="-brown"] { + box-shadow: 6upx 6upx 8upx rgba(140, 88, 53, 0.2); +} + +.shadow[class*="-grey"] { + box-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.shadow[class*="-gray"] { + box-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.shadow[class*="-black"] { + box-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2); +} + +.shadow[class*="-white"] { + box-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2); +} + +.text-shadow[class*="-red"] { + text-shadow: 6upx 6upx 8upx rgba(204, 69, 59, 0.2); +} + +.text-shadow[class*="-orange"] { + text-shadow: 6upx 6upx 8upx rgba(217, 109, 26, 0.2); +} + +.text-shadow[class*="-yellow"] { + text-shadow: 6upx 6upx 8upx rgba(224, 170, 7, 0.2); +} + +.text-shadow[class*="-olive"] { + text-shadow: 6upx 6upx 8upx rgba(124, 173, 55, 0.2); +} + +.text-shadow[class*="-green"] { + text-shadow: 6upx 6upx 8upx rgba(48, 156, 63, 0.2); +} + +.text-shadow[class*="-cyan"] { + text-shadow: 6upx 6upx 8upx rgba(28, 187, 180, 0.2); +} + +.text-shadow[class*="-blue"] { + text-shadow: 6upx 6upx 8upx rgba(0, 102, 204, 0.2); +} + +.text-shadow[class*="-purple"] { + text-shadow: 6upx 6upx 8upx rgba(88, 48, 156, 0.2); +} + +.text-shadow[class*="-mauve"] { + text-shadow: 6upx 6upx 8upx rgba(133, 33, 150, 0.2); +} + +.text-shadow[class*="-pink"] { + text-shadow: 6upx 6upx 8upx rgba(199, 50, 134, 0.2); +} + +.text-shadow[class*="-brown"] { + text-shadow: 6upx 6upx 8upx rgba(140, 88, 53, 0.2); +} + +.text-shadow[class*="-grey"] { + text-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.text-shadow[class*="-gray"] { + text-shadow: 6upx 6upx 8upx rgba(114, 130, 138, 0.2); +} + +.text-shadow[class*="-black"] { + text-shadow: 6upx 6upx 8upx rgba(26, 26, 26, 0.2); +} + +.bg-img { + background-size: cover; + background-position: center; + background-repeat: no-repeat; +} + +.bg-mask { + background-color: #333333; + position: relative; +} + +.bg-mask::after { + content: ""; + border-radius: inherit; + width: 100%; + height: 100%; + display: block; + background-color: rgba(0, 0, 0, 0.4); + position: absolute; + left: 0; + right: 0; + bottom: 0; + top: 0; +} + +.bg-mask view, +.bg-mask cover-view { + z-index: 5; + position: relative; +} + +.bg-video { + position: relative; +} + +.bg-video video { + display: block; + height: 100%; + width: 100%; + -o-object-fit: cover; + object-fit: cover; + position: absolute; + top: 0; + z-index: 0; + pointer-events: none; +} + +/* ================== + 鏂囨湰 + ==================== */ + +.text-xs { + font-size: 20upx; +} + +.text-sm { + font-size: 24upx; +} + +.text-df { + font-size: 28upx; +} + +.text-lg { + font-size: 32upx; +} + +.text-xl { + font-size: 36upx; +} + +.text-xxl { + font-size: 44upx; +} + +.text-sl { + font-size: 80upx; +} + +.text-xsl { + font-size: 120upx; +} + +.text-Abc { + text-transform: Capitalize; +} + +.text-ABC { + text-transform: Uppercase; +} + +.text-abc { + text-transform: Lowercase; +} + +.text-price::before { + content: "楼"; + font-size: 80%; + margin-right: 4upx; +} + +.text-cut { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.text-bold { + font-weight: bold; +} + +.text-center { + text-align: center; +} + +.text-content { + line-height: 1.6; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right !important; +} + +.text-red, +.line-red, +.lines-red { + color: #e54d42; +} + +.text-orange, +.line-orange, +.lines-orange { + color: #44D8A8; +} + +.text-yellow, +.line-yellow, +.lines-yellow { + color: #fbbd08; +} + +.text-olive, +.line-olive, +.lines-olive { + color: #8dc63f; +} + +.text-green, +.line-green, +.lines-green { + color: #39b54a; +} + +.text-cyan, +.line-cyan, +.lines-cyan { + color: #1cbbb4; +} + +.text-blue, +.line-blue, +.lines-blue { + color: #0081ff; +} + +.text-purple, +.line-purple, +.lines-purple { + color: #6739b6; +} + +.text-mauve, +.line-mauve, +.lines-mauve { + color: #9c26b0; +} + +.text-pink, +.line-pink, +.lines-pink { + color: #e03997; +} + +.text-brown, +.line-brown, +.lines-brown { + color: #a5673f; +} + +.text-grey, +.line-grey, +.lines-grey { + color: #8799a3; +} + +.text-gray, +.line-gray, +.lines-gray { + color: #aaaaaa; +} + +.text-black, +.line-black, +.lines-black { + color: #333333; +} + +.text-white, +.line-white, +.lines-white { + color: #ffffff; +} + +.text10{ + word-break:break-all; + line-height: 15px; +} +.box200 .u-form-item{ + line-height: 15px !important; +} +.box200 .u-form-item .u-input__input{ + /* min-height: 25px !important; */ +} +.box200 .u-form-item .u-form-item--left__content__label{ + line-height: 20px; +} +.lineht_sm{ + line-height: 15px !important; +} +.lineht_sm2{ + line-height: 20px !important; +} +.text06{ + color: #808080; + word-wrap: break-word; +} +.color_80{ + color: #808080; +} +.color_18{ + color: #f18202; +} +.circkle06{ + background-color: #f18202 !important; + color: #fff; + border-radius: 50%; + width: 20px;height: 20px; + display: inline-block; +} + +/* 鐏拌壊input */ +.inputGray{ + background-color: #f2f2f2;height: 70rpx; + width: 155rpx; + flex: .6; + text-indent: 20rpx; +} +/* 鐏拌壊input */ +.inputGray2{ + height: 70rpx;width: 115rpx; +} + + +/* 鍥剧墖涓婁紶 */ +.addImgBox{ + width: 200rpx;height: 200rpx; + border: 1px dashed #aaaaaa;position: relative; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column;color: #aaaaaa; +} +.imgUp{ + width: 100%;height: 100%; +} +.ImgListBox{ + width: 200rpx;height: 200rpx;border: 1px dashed #aaaaaa;position: relative; + margin-right: 20rpx; + margin-bottom: 20rpx; +} +.closeIcon{ + position: absolute;left:140rpx;top: 5rpx; +} +.boxImgWrap{ + display: flex; + flex-wrap: wrap; +} +.uFormItem{ + font-size: 32rpx;font-weight: bold;padding: 0 0 10rpx; +} + + + + + +//----------------鐗ч噹鏍峰紡 + + +.text10 { + word-break: break-all; + line-height: 15px; +} + +.box200 .u-form-item { + line-height: 15px !important; +} + +.box200 .u-form-item .u-input__input { + /* min-height: 25px !important; */ +} + +.box200 .u-form-item .u-form-item--left__content__label { + line-height: 20px; +} + +.lineht_sm { + line-height: 15px !important; +} + +.lineht_sm2 { + line-height: 20px !important; +} + +.text06 { + padding: 2px 0 5px 5px; + color: #808080; + word-wrap: break-word; +} + +.color_80 { + color: #808080; +} + +.color_18 { + color: #f18202; +} + +.circkle06 { + background-color: #f18202 !important; + color: #fff; + border-radius: 50%; + width: 20px; + height: 20px; +} + +.inp100 { + font-size: 16px; + font-weight: bold; + padding: 0 !important; +} + +/* formItem 鏍峰紡 */ +.itemWB { + font-size: 32rpx !important; + font-weight: bold !important; + padding: 0 0 10rpx !important; +} + +.bg_item { + background: #FFEBCD !important; + padding: 15rpx 0; +} + +/* 鍒楄〃鏍峰紡 */ +.Wb_box { + line-height: 45rpx; + font-size: 30rpx; + vertical-align: middle; + display: flex; +} + +.el_batchNo { + color: #808080; + /* width: 70px; */ + text-align: right; +} + +.el_batchVal { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + flex: 1; +} + +.bg_ffffff { + background: #ffffff; +} + +.width {} + +.subTitle { + font-size: 28rpx; + color: #808080; + display: block; +} +.text88{ + padding: 10px; +} +/* 鐏拌壊input */ +.inputGray{ + background-color: #f2f2f2;height: 70rpx; + width: 155rpx; + flex: .6; + text-indent: 20rpx; +} +/* 鐏拌壊input */ +.inputGray2{ + height: 70rpx;width: 115rpx; +} + +/* 鍥剧墖涓婁紶 */ +.addImgBox{ + width: 200rpx;height: 200rpx; + border: 1px dashed #aaaaaa;position: relative; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column;color: #aaaaaa; +} +.imgUp{ + width: 100%;height: 100%; +} +.ImgListBox{ + width: 200rpx;height: 200rpx;border: 1px dashed #aaaaaa;position: relative; + margin-right: 20rpx; + margin-bottom: 20rpx; +} +.closeIcon{ + position: absolute;left:140rpx;top: 5rpx; +} +.boxImgWrap{ + display: flex; + flex-wrap: wrap; +} + + +.boxTip .uni-scroll-view,.boxTip .uni-scroll-view-content{ + /* height: calc(90vh) !important; + overflow: auto !important; */ +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/uni.scss b/LA24030_LuLiPackageLine_Pda/uni.scss new file mode 100644 index 0000000..3c79a32 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/uni.scss @@ -0,0 +1,103 @@ +/** + * 杩欓噷鏄痷ni-app鍐呯疆鐨勫父鐢ㄦ牱寮忓彉閲� + * + * uni-app 瀹樻柟鎵╁睍鎻掍欢鍙婃彃浠跺競鍦猴紙https://ext.dcloud.net.cn锛変笂寰堝涓夋柟鎻掍欢鍧囦娇鐢ㄤ簡杩欎簺鏍峰紡鍙橀噺 + * 濡傛灉浣犳槸鎻掍欢寮�鍙戣�咃紝寤鸿浣犱娇鐢╯css棰勫鐞嗭紝骞跺湪鎻掍欢浠g爜涓洿鎺ヤ娇鐢ㄨ繖浜涘彉閲忥紙鏃犻渶 import 杩欎釜鏂囦欢锛夛紝鏂逛究鐢ㄦ埛閫氳繃鎼Н鏈ㄧ殑鏂瑰紡寮�鍙戞暣浣撻鏍间竴鑷寸殑App + * + */ + +/** + * 濡傛灉浣犳槸App寮�鍙戣�咃紙鎻掍欢浣跨敤鑰咃級锛屼綘鍙互閫氳繃淇敼杩欎簺鍙橀噺鏉ュ畾鍒惰嚜宸辩殑鎻掍欢涓婚锛屽疄鐜拌嚜瀹氫箟涓婚鍔熻兘 + * + * 濡傛灉浣犵殑椤圭洰鍚屾牱浣跨敤浜唖css棰勫鐞嗭紝浣犱篃鍙互鐩存帴鍦ㄤ綘鐨� scss 浠g爜涓娇鐢ㄥ涓嬪彉閲忥紝鍚屾椂鏃犻渶 import 杩欎釜鏂囦欢 + */ +/* uni.scss 鏂囦欢 寮曞叆uView鐨勫叏灞�SCSS涓婚鏂囦欢 */ +@import 'uview-ui/theme.scss'; +// @import "@/uni_modules/uview-ui/theme.scss"; +/* 棰滆壊鍙橀噺 */ + +/* 琛屼负鐩稿叧棰滆壊 */ +$uni-color-primary: #007aff; +$uni-color-success: #4cd964; +$uni-color-warning: #f0ad4e; +$uni-color-error: #dd524d; + +/* 鏂囧瓧鍩烘湰棰滆壊 */ +$uni-text-color:#333;//鍩烘湰鑹� +$uni-text-color-inverse:#fff;//鍙嶈壊 +$uni-text-color-grey:#999;//杈呭姪鐏拌壊锛屽鍔犺浇鏇村鐨勬彁绀轰俊鎭� +$uni-text-color-placeholder: #808080; +$uni-text-color-disable:#c0c0c0; + +/* 鑳屾櫙棰滆壊 */ +$uni-bg-color:#ffffff; +$uni-bg-color-grey:#f8f8f8; +$uni-bg-color-hover:#f1f1f1;//鐐瑰嚮鐘舵�侀鑹� +$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//閬僵棰滆壊 + +/* 杈规棰滆壊 */ +$uni-border-color:#c8c7cc; + +/* 灏哄鍙橀噺 */ + +/* 鏂囧瓧灏哄 */ +$uni-font-size-sm:12px; +$uni-font-size-base:14px; +$uni-font-size-lg:16px; + +/* 鍥剧墖灏哄 */ +$uni-img-size-sm:40rpx; +$uni-img-size-base:52rpx; +$uni-img-size-lg:80rpx; + +/* Border Radius */ +$uni-border-radius-sm: 4rpx; +$uni-border-radius-base: 6rpx; +$uni-border-radius-lg: 12rpx; +$uni-border-radius-circle: 50%; + +/* 姘村钩闂磋窛 */ +$uni-spacing-row-sm: 10px; +$uni-spacing-row-base: 20rpx; +$uni-spacing-row-lg: 30rpx; + +/* 鍨傜洿闂磋窛 */ +$uni-spacing-col-sm: 8rpx; +$uni-spacing-col-base: 16rpx; +$uni-spacing-col-lg: 24rpx; + +/* 閫忔槑搴� */ +$uni-opacity-disabled: 0.3; // 缁勪欢绂佺敤鎬佺殑閫忔槑搴� + +/* 鏂囩珷鍦烘櫙鐩稿叧 */ +$uni-color-title: #2C405A; // 鏂囩珷鏍囬棰滆壊 +$uni-font-size-title:20px; +$uni-color-subtitle: #555555; // 浜岀骇鏍囬棰滆壊 +$uni-font-size-subtitle:18px; +$uni-color-paragraph: #3F536E; // 鏂囩珷娈佃惤棰滆壊 +$uni-font-size-paragraph:15px; +// 鍘婚櫎鍝嶅簲寮� +::v-deep .u-form-item{ + line-height: 30px; +} +::v-deep .u-input__input{ + min-height: 36px !important; + font-size: 12px !important; +} +::v-deep .u-form-item__message{ + font-size: 12px !important; +} +.uni-input-input{ + // font-size: 15px !important; +} +.u-size-default{ + height: 40px !important; + font-size: 15px; +} +// 鏀瑰彉鏁翠綋甯冨眬鐨勫瓧浣� +uni-view, uni-text{ + font-size: 15px; +} +.u-form-item{ + line-height: 35px !important; +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/utils/compress.js b/LA24030_LuLiPackageLine_Pda/utils/compress.js new file mode 100644 index 0000000..366913f --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/compress.js @@ -0,0 +1,102 @@ +/** + * APP绔浘鐗囧帇缂� + * 鍙傛暟璇存槑锛� + * img 鍥剧墖url + * scale缂╂斁姣斾緥 1-100 + * callback 鍥炶皟璁剧疆杩斿洖鍊� +*/ +export function translateapp(img, scale, callback) { + // #ifdef APP-PLUS + uni.showLoading({ + title: '涓婁紶涓�...' + }) + plus.io.resolveLocalFileSystemURL(img, (entry) => { //閫氳繃URL鍙傛暟鑾峰彇鐩綍瀵硅薄鎴栨枃浠跺璞� + entry.file((file) => { // 鍙�氳繃entry瀵硅薄鎿嶄綔鍥剧墖 + console.log('鍘嬬缉鍓嶅浘鐗囦俊鎭�:' + JSON.stringify(file)); //鍘嬬缉鍓嶅浘鐗囦俊鎭� + if (file.size > 500000) { // 濡傛灉澶т簬500Kb杩涜鍘嬬缉 + console.log("澶т簬kb") + plus.zip.compressImage({ // 5+ plus.zip.compressImage 浜嗚В涓�涓嬶紝鏈夎缁嗙殑绀轰緥 + src: img, //src: 鍘嬬缉鍘熷鍥剧墖鐨勮矾寰� + dst: img.replace('.png', 'makino.png').replace('.PNG', + 'makino.PNG').replace('.jpg', 'makino.jpg') + .replace('.JPG', 'makino.JPG'), + width: '80%', //dst: (String 绫诲瀷 )鍘嬬缉杞崲鐩爣鍥剧墖鐨勮矾寰勶紝杩欓噷鍏堝湪鍚庨潰鍘熷鍚嶅悗闈㈠姞涓�涓獃asuo鍖哄垎涓�涓� + height: '80%', //width,height: (String 绫诲瀷 )缂╂斁鍥剧墖鐨勫搴�,楂樺害 + quality: 80, //quality: (Number 绫诲瀷 )鍘嬬缉鍥剧墖鐨勮川閲� + overwrite: true, //overwrite: (Boolean 绫诲瀷 )瑕嗙洊鐢熸垚鏂版枃浠� + // format:'jpg' //format: (String 绫诲瀷 )鍘嬬缉杞崲鍚庣殑鍥剧墖鏍煎紡 + }, (event) => { + console.log('鍘嬬缉鍚庡浘鐗囦俊鎭�:' + JSON.stringify(event)); + //杩斿洖鍘嬬缉鍚庣殑鍥剧墖璺緞 + uni.hideLoading(); + callback(event.target); + }, function(err) { + console.log('Resolve file URL failed: ' + err.message); + uni.hideLoading(); + }); + } else { //else灏忎簬500kb璺宠繃鍘嬬缉锛岀洿鎺ヨ繑鍥炵幇鏈夌殑src + console.log("灏忎簬kb") + uni.hideLoading(); + callback(img); + } + }); + }, (e) => { // 杩斿洖閿欒淇℃伅 + console.log('Resolve file URL failed: ' + e.message); + uni.hideLoading(); + }); + // #endif + // #ifndef APP-PLUS + // translateImg(img, scale, 'blob' , callback) + callback(img); + // #endif +} +/** +* H5绔浘鐗囧帇缂� +* 鍙傛暟璇存槑锛� +* imgSrc 鍥剧墖url +* scale缂╂斁姣斾緥 0-1 +* type 杩斿洖鍥剧墖绫诲瀷 榛樿blob +* callback 鍥炶皟璁剧疆杩斿洖鍊� +*/ +export function translateImg(imgSrc, scale, type , callback) { +var img = new Image(); +img.src = imgSrc; +img.onload = function() { + var that = this; + var h = that.height; // 榛樿鎸夋瘮渚嬪帇缂� + var w = that.width; + var canvas = document.createElement('canvas'); + var ctx = canvas.getContext('2d'); + var width = document.createAttribute("width"); + width.nodeValue = w; + var height = document.createAttribute("height"); + height.nodeValue = h; + canvas.setAttributeNode(width); + canvas.setAttributeNode(height); + ctx.drawImage(that, 0, 0, w,h); + var base64 = canvas.toDataURL('image/jpeg', scale);//鍘嬬缉姣斾緥 + canvas = null; + if(type == 'base64'){ + callback(base64); + }else{ + var blob = base64ToBlob(base64); + var blobUrl = window.URL.createObjectURL(blob);//blob鍦板潃 + callback(blobUrl); + } +} +} +// base杞珺lob +export function base64ToBlob(base64) { +var arr = base64.split(','), + mime = arr[0].match(/:(.*?);/)[1], + bstr = atob(arr[1]), + n = bstr.length, + u8arr = new Uint8Array(n); +while (n--) { + u8arr[n] = bstr.charCodeAt(n); +} +return new Blob([u8arr], { + type: mime +}); +} + diff --git a/LA24030_LuLiPackageLine_Pda/utils/dateTime.js b/LA24030_LuLiPackageLine_Pda/utils/dateTime.js new file mode 100644 index 0000000..01a7bcd --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/dateTime.js @@ -0,0 +1,16 @@ +/** + * @description 鑾峰彇骞存湀鏃� 鏃跺垎绉� + * @returns {string} yyyy-MM-dd hh:mm:ss + */ +export function getDate() { + const date = new Date(); + let str = date.getFullYear() + '-' + addZero(date.getMonth() + 1) + '-' + addZero(date.getDate()); + + // if (option && option.full) { + str += ' ' + addZero(date.getHours()) + ':' + addZero(date.getMinutes()) + ':' + addZero(date.getSeconds()); + // } + return str; +} +const addZero = function(date) { + return date > 9 ? date : '0'+date; +}; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/utils/md5.js b/LA24030_LuLiPackageLine_Pda/utils/md5.js new file mode 100644 index 0000000..92f901d --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/md5.js @@ -0,0 +1,261 @@ +/* + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +/* + * Configurable variables. You may need to tweak these to be compatible with + * the server-side, but the defaults work in most cases. + */ +var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ +var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ +var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ + +/* + * These are the functions you'll usually want to call + * They take string arguments and return either hex or base-64 encoded strings + */ +function hex_md5(s){ return binl2hex(core_md5(str2binl(s), s.length * chrsz));} +function b64_md5(s){ return binl2b64(core_md5(str2binl(s), s.length * chrsz));} +function str_md5(s){ return binl2str(core_md5(str2binl(s), s.length * chrsz));} +function hex_hmac_md5(key, data) { return binl2hex(core_hmac_md5(key, data)); } +function b64_hmac_md5(key, data) { return binl2b64(core_hmac_md5(key, data)); } +function str_hmac_md5(key, data) { return binl2str(core_hmac_md5(key, data)); } + +/* + * Perform a simple self-test to see if the VM is working + */ +function md5_vm_test() +{ + return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; +} + +/* + * Calculate the MD5 of an array of little-endian words, and a bit length + */ +function core_md5(x, len) +{ + /* append padding */ + x[len >> 5] |= 0x80 << ((len) % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + + a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); + d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); + c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); + b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); + a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); + d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); + c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); + b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); + a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); + d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); + c = md5_ff(c, d, a, b, x[i+10], 17, -42063); + b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); + a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); + d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); + c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); + b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); + + a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); + d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); + c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); + b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); + a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); + d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); + c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); + b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); + a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); + d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); + c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); + b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); + a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); + d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); + c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); + b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); + + a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); + d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); + c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); + b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); + a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); + d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); + c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); + b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); + a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); + d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); + c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); + b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); + a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); + d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); + c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); + b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); + + a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); + d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); + c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); + b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); + a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); + d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); + c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); + b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); + a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); + d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); + c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); + b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); + a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); + d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); + c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); + b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + } + return Array(a, b, c, d); + +} + +/* + * These functions implement the four basic operations the algorithm uses. + */ +function md5_cmn(q, a, b, x, s, t) +{ + return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); +} +function md5_ff(a, b, c, d, x, s, t) +{ + return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); +} +function md5_gg(a, b, c, d, x, s, t) +{ + return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); +} +function md5_hh(a, b, c, d, x, s, t) +{ + return md5_cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5_ii(a, b, c, d, x, s, t) +{ + return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); +} + +/* + * Calculate the HMAC-MD5, of a key and some data + */ +function core_hmac_md5(key, data) +{ + var bkey = str2binl(key); + if(bkey.length > 16) bkey = core_md5(bkey, key.length * chrsz); + + var ipad = Array(16), opad = Array(16); + for(var i = 0; i < 16; i++) + { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + + var hash = core_md5(ipad.concat(str2binl(data)), 512 + data.length * chrsz); + return core_md5(opad.concat(hash), 512 + 128); +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function bit_rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* + * Convert a string to an array of little-endian words + * If chrsz is ASCII, characters >255 have their hi-byte silently ignored. + */ +function str2binl(str) +{ + var bin = Array(); + var mask = (1 << chrsz) - 1; + for(var i = 0; i < str.length * chrsz; i += chrsz) + bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (i%32); + return bin; +} + +/* + * Convert an array of little-endian words to a string + */ +function binl2str(bin) +{ + var str = ""; + var mask = (1 << chrsz) - 1; + for(var i = 0; i < bin.length * 32; i += chrsz) + str += String.fromCharCode((bin[i>>5] >>> (i % 32)) & mask); + return str; +} + +/* + * Convert an array of little-endian words to a hex string. + */ +function binl2hex(binarray) +{ + var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; + var str = ""; + for(var i = 0; i < binarray.length * 4; i++) + { + str += hex_tab.charAt((binarray[i>>2] >> ((i%4)*8+4)) & 0xF) + + hex_tab.charAt((binarray[i>>2] >> ((i%4)*8 )) & 0xF); + } + return str; +} + +/* + * Convert an array of little-endian words to a base-64 string + */ +function binl2b64(binarray) +{ + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var str = ""; + for(var i = 0; i < binarray.length * 4; i += 3) + { + var triplet = (((binarray[i >> 2] >> 8 * ( i %4)) & 0xFF) << 16) + | (((binarray[i+1 >> 2] >> 8 * ((i+1)%4)) & 0xFF) << 8 ) + | ((binarray[i+2 >> 2] >> 8 * ((i+2)%4)) & 0xFF); + for(var j = 0; j < 4; j++) + { + if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; + else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); + } + } + return str; +} + +// 鍦╩d5.js 鐨勬渶鍚庡姞鍏� 鏆撮湶鐨勬柟娉� +module.exports = { + hex_md5 +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/utils/mixin.js b/LA24030_LuLiPackageLine_Pda/utils/mixin.js new file mode 100644 index 0000000..94e0987 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/mixin.js @@ -0,0 +1,82 @@ +import {utf8ByteToUnicodeStr} from "./utf8ByteToUnicodeStr.js" +var main, receiver, filter; +var ScanDeviceClass = plus.android.importClass("android.device.ScanDevice"); +var scanDevice; +export const mixin={ + data() { + return { + PhoneModel:'' + } + }, + created() { + let _this=this + uni.getSystemInfo({ + success: function(e) { + _this.PhoneModel=e.model + if(e.model=='PDA'){ + scanDevice = new ScanDeviceClass(); + scanDevice.openScan(); // 鎵撳紑鎵弿 + scanDevice.setOutScanMode(0); // 鎵弿妯″紡 + _this.initScan(); + _this.registerScan(); + } + }}) + + + }, + onHide: function() { + if(this.PhoneModel=='PDA'){this.unregisterScan()} + + }, + destroyed() { + if(this.PhoneModel=='PDA'){this.unregisterScan()} + + }, + methods: { + //PDA骞挎挱鎵爜 + initScan() { + let _this = this; + main = plus.android.runtimeMainActivity(); //鑾峰彇activity + var IntentFilter = plus.android.importClass( + "android.content.IntentFilter", + ); + filter = new IntentFilter(); + filter.addAction("scan.rcv.message"); // 鎹綘鐨勫箍鎾姩浣� + receiver = plus.android.implements( + "io.dcloud.feature.internal.reflect.BroadcastReceiver", { + onReceive: function(context, intent) { + plus.android.importClass(intent); + let code = intent.getByteArrayExtra("barocode"); + // let codeStr = String.fromCharCode(...code); + + let codeStr = utf8ByteToUnicodeStr(code); + let arr = codeStr.split(',') + console.log("codeStr:", codeStr); + if(arr.length==2){ + _this.loginform = { + account: arr[0], + passWord: arr[1] + } + _this.register() + }else{ + console.log(codeStr) + _this.sacncode=codeStr + _this.$emit('scancode',_this.sacncode) + } + scanDevice.stopScan(); // 鍋滄鎵弿 + }, + }, + ); + }, + registerScan() { + main.registerReceiver(receiver, filter); + }, + unregisterScan() { + main.unregisterReceiver(receiver); + }, + startScan() { + scanDevice.stopScan(); // 鍋滄鎵弿 + scanDevice.startScan(); // 寮�濮嬫壂鎻� + }, + } +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/utils/print/Blue.js b/LA24030_LuLiPackageLine_Pda/utils/print/Blue.js new file mode 100644 index 0000000..79d39d0 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/print/Blue.js @@ -0,0 +1,554 @@ +import printerUtil from '@/components/print/printerutil.js' +const PrinterJobs = require('@/components/print/printerjobs.js') +// import { +// getDate +// } from '@/utils/dateTime.js' +export default { + data() { + return { + + list: [], + deviceId: '', + serviceId: '', + characteristics: [], + characteristicId: '', + deviceslist: [] + } + }, + onShow() { + this.list = [] + this.deviceslist = [] + + }, + methods: { + //鍒濆鍖栬摑鐗欒澶� + openBluetoothAdapter() { + let _this = this + uni.openBluetoothAdapter({ + success: (res) => { //宸叉墦寮� + uni.getBluetoothAdapterState({ //钃濈墮鐨勫尮閰嶇姸鎬� + success: (res1) => { + console.log(res1, '鏈満璁惧鐨勮摑鐗欏凡鎵撳紑') + // 寮�濮嬫悳绱㈣摑鐗欒澶� + + _this.startBluetoothDeviceDiscovery() + uni.setStorageSync('blueShow', true) + }, + fail(error) { + uni.showToast({ + icon: 'none', + title: '鏌ョ湅鎵嬫満钃濈墮鏄惁鎵撳紑err' + }); + } + }); + + }, + fail: err => { //鏈墦寮� + uni.setStorageSync('blueShow', false) + uni.showToast({ + icon: 'none', + title: '鏌ョ湅鎵嬫満钃濈墮鏄惁鎵撳紑' + }); + } + }) + }, + // 寮�濮嬫悳绱㈣摑鐗欒澶� + startBluetoothDeviceDiscovery() { + uni.startBluetoothDevicesDiscovery({ + success: (res) => { + // 鍙戠幇澶栧洿璁惧 + uni.showLoading({ + title: '鍔犺浇涓�', + mask: true + }); + this.onBluetoothDeviceFound() + }, + fail: err => { + console.log(err, '閿欒淇℃伅') + } + }) + }, + // 鍙戠幇澶栧洿璁惧 + onBluetoothDeviceFound() { + uni.onBluetoothDeviceFound((res) => { + this.deviceslist.length > 0 ? uni.hideLoading() : '' + if (this.deviceslist.indexOf(res.devices[0].deviceId) == -1) { + this.deviceslist.push(res.devices[0].deviceId) + if (res.devices[0].name != "") { + uni.hideLoading(); + this.list.push({ + name: res.devices[0].name, + deviceId: res.devices[0].deviceId + }) + } + } + }) + }, + //鑾峰彇鍦ㄨ摑鐗欐ā鍧楃敓鏁堟湡闂存墍鏈夊凡鍙戠幇鐨勮摑鐗欒澶囥�傚寘鎷凡缁忓拰鏈満澶勪簬杩炴帴鐘舵�佺殑璁惧銆� + getBluetoothDevices() { + console.log("鑾峰彇钃濈墮璁惧"); + uni.getBluetoothDevices({ + success: res => { + console.log('鑾峰彇钃濈墮璁惧鎴愬姛:'); + console.log(res.devices); + } + }); + }, + //閫夋嫨璁惧杩炴帴鍚eviceId浼犺繘鏉� + createBLEConnection(deviceId) { + //data閲岄潰寤虹珛涓�涓猟eviceId锛屽瓨鍌ㄨ捣鏉� + let _this = this + uni.showLoading({ + title: '杩炴帴钃濈墮涓�...', + mask: true + }); + this.stopBluetoothDevicesDiscovery() + + this.deviceId = deviceId, + //杩炴帴钃濈墮 + uni.createBLEConnection({ + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: deviceId, + success(res) { + uni.hideLoading(); + // uni.showToast({ + // icon: 'none', + // title: '钃濈墮杩炴帴鎴愬姛' + // }); + uni.setStorageSync("deviceId", deviceId) //鎶婂凡缁忚繛鎺ョ殑钃濈墮璁惧淇℃伅鏀惧叆缂撳瓨 + + setTimeout(() => { + _this.getBLEDeviceServices(deviceId) + }, 1000) + + }, + fail(res) { + uni.showToast({ + icon: 'none', + title: '钃濈墮杩炴帴澶辫触' + }); + } + }) + }, + // 鍋滄鎼滃钃濈墮璁惧 + stopBluetoothDevicesDiscovery() { + uni.stopBluetoothDevicesDiscovery({ + success: e => { + this.loading = false + console.log('鍋滄鎼滅储钃濈墮璁惧:' + e.errMsg); + }, + fail: e => { + console.log('鍋滄鎼滅储钃濈墮璁惧澶辫触锛岄敊璇爜锛�' + e.errCode); + } + }); + }, + //鑾峰彇钃濈墮鐗瑰緛 + getBLEDeviceCharacteristics(deviceId, serviceId,callback) { + console.log("杩涘叆鐗瑰緛"); + setTimeout(() => { + uni.getBLEDeviceCharacteristics({ + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: deviceId, + // 杩欓噷鐨� serviceId 闇�瑕佸湪 getBLEDeviceServices 鎺ュ彛涓幏鍙� + serviceId: serviceId, + success: (res) => { + console.log(res, '鐗瑰緛getBLEDeviceCharacteristics') + this.characteristics = res.characteristics + + let _noCharacteristics = true; + console.log('characteristics闀垮害锛�'+res.characteristics.length) + for (let i=0;i<res.characteristics.length;i++) { + console.log(`characteristics${i}鐨剈uid锛�${res.characteristics[i].uuid}`) + if (res.characteristics[i].uuid.indexOf("FF02") != -1) { + this.characteristicId = res.characteristics[i].uuid + uni.setStorageSync("characteristicId", res.characteristics[i].uuid) //鎶婂凡缁忚繛鎺ョ殑钃濈墮璁惧鏍囪瘑鏀惧叆缂撳瓨 + uni.setStorageSync("serviceId",serviceId) //鎶婂凡缁忚繛鎺ョ殑钃濈墮璁惧ID鏀惧叆缂撳瓨 + setTimeout(() => { + uni.hideLoading(); + this.BottomShow = false + this.DrawerModalL = false + }, 1000) + _noCharacteristics=false; + callback && callback(true) + break; + } + } + if (_noCharacteristics) { + callback && callback(false) + } + }, + fail: (res) => { + console.log(res) + callback && callback(false) + } + }) + }, 1000) + }, + // 鍚敤 notify 鍔熻兘 + notifyBLECharacteristicValueChange(characteristicId) { + let _this = this + console.log('deviceId' + _this.deviceId) + console.log('serviceId' + _this.serviceId) + console.log('characteristicId' + characteristicId) + // _this.fanhui() + uni.notifyBLECharacteristicValueChange({ + state: true, // 鍚敤 notify 鍔熻兘 + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: this.deviceId, + // 杩欓噷鐨� serviceId 闇�瑕佸湪 getBLEDeviceServices 鎺ュ彛涓幏鍙� + serviceId: this.serviceId, + // 杩欓噷鐨� characteristicId 闇�瑕佸湪 getBLEDeviceCharacteristics 鎺ュ彛涓幏鍙� + characteristicId: characteristicId, + success: (res) => { + if (this.blueFlag == true) { + this.writeBLECharacteristicValue() + } else { + uni.showLoading({ + title: '钃濈墮鏈嶅姟鑾峰彇鎴愬姛锛岃鎵撳嵃', + mask: true, + }); + } + + setTimeout(() => { + uni.hideLoading(); + }, 1000) + // _this.fanhui() + this.print = "鎵撳嵃" + this.BottomShow = false + + console.log('notifyBLECharacteristicValueChange success', res.errMsg) + }, + fail: (res) => { + uni.showLoading({ + title: '钃濈墮鏈嶅姟鑾峰彇鎴愬姛锛岃鎵撳嵃', + mask: true, + }); + setTimeout(() => { + uni.hideLoading(); + }, 1000) + _this.print = "鎵撳嵃" + _this.BottomShow = false + + // _this.fanhui() + console.log('notifyBLECharacteristicValueChange fail', res.errMsg) + } + }) + }, + //鑾峰彇钃濈墮鐨勬墍鏈夋湇鍔� + getBLEDeviceServices(deviceId) { + uni.showLoading({ + title: '姝e湪鑾峰彇钃濈墮鏈嶅姟...', + mask: true, + }); + setTimeout(() => { + uni.getBLEDeviceServices({ + // 杩欓噷鐨� deviceId 闇�瑕佸凡缁忛�氳繃 createBLEConnection 涓庡搴旇澶囧缓绔嬮摼鎺� + deviceId: deviceId, + success: (res) => { + uni.showLoading({ + title: '鑾峰彇涓紝璇风◢鍚�...', + mask: true, + }); + let _noSer = true; + console.log('services闀垮害锛�'+res.services.length) + for (let i=0;i<res.services.length;i++) { + console.log(`services${i}鐨剈uid锛�${res.services[i].uuid}`) + if (res.services[i].uuid.indexOf("FF00") != -1) { + _noSer = false; + this.serviceId = res.services[i].uuid; + //鑾峰彇鐗瑰緛 + this.getBLEDeviceCharacteristics(deviceId, res.services[i].uuid,(fxx)=>{ + if (fxx) { + uni.hideLoading() + uni.showToast({ + title: '钃濈墮杩炴帴鎴愬姛锛�', + icon: 'none', + duration: 2000 + }) + } else { + uni.hideLoading() + uni.showToast({ + title: '鍙栫壒寰佺爜澶辫触', + icon: 'error', + duration: 2000 + }) + } + }) + break; + } + } + if (_noSer) { + uni.hideLoading() + uni.showToast({ + title: '鍙栬摑鐗欐湇鍔″け璐�', + icon: 'error', + duration: 2000 + }) + } + }, + fail:()=>{ + uni.hideLoading() + uni.showToast({ + title: '鑾峰彇钃濈墮鏈嶅姟澶辫触', + icon: 'error', + duration: 2000 + }) + } + }) + }, 1000) + }, + //鍐欏叆钃濈墮 + writeBLECharacteristicValue() { + // this.printflag = false + uni.showLoading({ + title: '鎵撳嵃涓�...', + mask:true + }); + + + let deviceId = uni.getStorageSync('deviceId') + let serviceId = uni.getStorageSync('serviceId') + let characteristicId = uni.getStorageSync('characteristicId') + const printerJobs = new PrinterJobs(); + printerJobs + .label_set_page(576, 400) + //杈规 + .drawLine(1, 0, 0, 570, 0) + .drawLine(1, 0, 0, 0, 360) + .drawLine(1, 570, 0, 570, 360) + .drawLine(1, 0, 360, 570, 360) + // 鍐呴儴妯嚎 + .drawLine(1, 0, 52, 400, 52) //绗竴琛� + .drawLine(1, 0, 104, 400, 104) //绗簩琛� + .drawLine(1, 0, 156, 570, 156) //绗笁琛� + .drawLine(1, 0, 208, 570, 208) //绗洓琛� + .drawLine(1, 0, 260, 570, 260) //绗簲琛� + .drawLine(1, 0, 312, 570, 312) //绗叚琛� + .drawLine(1, 120, 0, 120, 360) // 绗竴鏍圭珫绾� + // .drawLine(1, 220, 208, 220, 312) // 绗簩鏍圭珫绾� + // .drawLine(1, 300, 208, 300, 312) // 绗笁鏍圭珫绾� + .drawLine(1, 400, 0, 400, 156) // 绗洓鏍圭珫绾� + // 1 鍘熷 鏄惁绮椾綋\瀛椾綋澶у皬\鏄惁鏃嬭浆瑙掑害\璧峰妯潗鏍嘰璧峰绾靛潗鏍嘰瀛楃涓� + .drawText(10, 20, "鍒朵欢鐘舵��", 24, 0, 0, false, false) + .drawText(130, 20, this.stateText, 24, 0, 0, false, false) + // 2 + .drawText(10, 72, "缁勭洏鍗曞彿", 24, 0, 0, false, false) + .drawText(130, 72, this.cvi, 24, 0, 0, false, false) + // 3 + .drawText(10, 124, "鐢熶骇鐝嚎", 24, 0, 0, false, false) + .drawText(130, 124, this.singlist.createLine, 24, 0, 0, false, false) + // 4 + .drawText(10, 176, "闆朵欢1", 24, 0, 0, false, false) + .drawText(130, 176, this.singlist.itemDes, 24, 0, 0, false, false) + // 5 + .drawText(10, 225, "闆朵欢2", 24, 0, 0, false, false) + .drawText(130, 225, this.singlist.itemName, 24, 0, 0, false, false) + // 6 + .drawText(10, 280, "闆朵欢3", 24, 0, 0, false, false) + .drawText(130, 280, this.singlist.itemNum, 24, 0, 0, false, false) + // 7 + .drawText(10, 332, "鐢熶骇鏃ユ湡", 24, 0, 0, false, false) + .drawText(130, 332, this.singlist.updateTime, 24, 0, 0, + false, false) + // .drawText(440, 332, item.user, 24, 0, 0, false, false) + // 浜岀淮鐮� + .drawQrCode(426, 14, this.containerCode, 0, 5, 1) + // .drawText(434, 310, this.containerCode, 1, 0, 0, false, false) + .label_print(0, 1); + let buffer = printerJobs.buffer(); + + /* this._writeBLECharacteristicValue(deviceId, serviceId, characteristicId, buffer,(f)=>{ + uni.hideLoading(); + if (!f) { + uni.showModal({ + title:'绯荤粺鎻愮ず', + content:'钃濈墮浼犺緭閿欒锛�', + showCancel:false + }) + } + + }) */ + + // 寤鸿姣忔鍐欏叆涓嶈秴杩�20瀛楄妭,鍒嗗寘澶勭悊 + /* let _i = 0,_length = buffer.byteLength,___continue = true; + const maxChunk = 20; + while (_i<_length) { + if (!___continue) { + uni.hideLoading(); + uni.showModal({ + title:'绯荤粺鎻愮ず', + content:'钃濈墮浼犺緭閿欒锛�', + showCancel:false + }) + break; + } + + + if (!_writing) { + _writing = true; + let subPackage = buffer.slice(_i, (_i + maxChunk <= _length ? (_i + maxChunk) : _length)); + this._writeSubBLECharacteristicValue(deviceId, serviceId, characteristicId, subPackage,_i,(flagx)=>{ + if (!flagx) { + ___continue = false; + } else { + if (_i + maxChunk >= _length) { + uni.hideLoading(); + } + _i = _i + maxChunk; + } + _writing = false; + }) + } + } */ + + + const maxChunk = 20; + const delay = 15; + let _writing = false; + let length = buffer.byteLength; + let pakageLen = Math.trunc(length/maxChunk); + if (length%maxChunk!==0) pakageLen=pakageLen+1; + console.log(`鍏�${length}瀛楄妭锛屽垎${pakageLen}鍖卄) + /* let i=0; + let _errFlag = false; + while (i<pakageLen) { + if (_errFlag) { + uni.hideLoading() + uni.showToast({ + title: '鎵撳嵃鍑洪敊', + icon: 'error', + duration: 2000 + }) + break; + } + + if (!_writing) { + _writing = true; + let startI = i*maxChunk; + console.log(`绗�${i}鍒嗗寘鍙戦�侊紝寮�濮嬪瓧鑺�${startI}`) + let subPackage = buffer.slice(startI, startI + maxChunk <= length ? (startI + maxChunk) : length); + this._writeBLECharacteristicValue(deviceId, serviceId, characteristicId, subPackage,(f)=>{ + console.log(`绗�${i}鍖呰繑鍥�${f}`) + if (f) { + if (i===pakageLen-1) { + uni.hideLoading(); + } + i++ + } else { + _errFlag = true; + } + _writing = false; + }) + } + } */ + + let successArr = []; + for (let i = 0, j = 0; i < length; i += maxChunk, j++) { + let subPackage = buffer.slice(i, i + maxChunk <= length ? (i + maxChunk) : length); + //_count = j; + setTimeout(() => { + console.log(`绗�${j+1}鍒嗗寘鍙戦�侊紝寮�濮嬪瓧鑺�${i}`) + this._writeBLECharacteristicValue(deviceId, serviceId, characteristicId, subPackage,(f)=>{ + console.log(`${j+1}杩斿洖${f}`) + if (f) { + successArr.push(j+1) + } + if (j===pakageLen-1) { + uni.hideLoading(); + uni.showModal({ + title:'鎵撳嵃鎻愮ず', + content:`钃濈墮浼犺緭鍒�${pakageLen}鍖咃紝鎴愬姛浼犺緭${successArr.length}涓寘锛屼緷娆′负锛�${successArr.join(",")}銆俙, + showCancel:false + }) + } + }) + }, j * delay); + } + }, + // 骞惰璋冪敤澶氭浼氬瓨鍦ㄥ啓澶辫触鐨勫彲鑳芥�э紝寤舵椂璋冪敤 + _writeSubBLECharacteristicValue(deviceId, serviceId, characteristicId,subPackage,index,callback){ + this._writeBLECharacteristicValue(deviceId, serviceId, characteristicId, subPackage,callback) + /* if (index===0) { + this._writeBLECharacteristicValue(deviceId, serviceId, characteristicId, subPackage,callback) + } else { + setTimeout(()=>{ + this._writeBLECharacteristicValue(deviceId, serviceId, characteristicId, subPackage,callback) + },50) + } */ + }, + //鍐欏叆钃濈墮 + _writeBLECharacteristicValue(deviceId, serviceId, characteristicId, buffer,callback) { + //console.log('start writeBLECharacteristicValue') + uni.writeBLECharacteristicValue({ + deviceId: deviceId, + serviceId: serviceId, + characteristicId: characteristicId, + value: buffer, + success(res) { + + //console.log('writeBLECharacteristicValue success', res.errMsg) + callback && callback(true) + }, + fail(res) { + //console.log('writeBLECharacteristicValue fail') + //console.log(JSON.stringify(res)) + //console.log(JSON.stringify(buffer)) + callback && callback(false) + } + }) + }, + //闀挎寜浜嬩欢 + longpress(item, index) { + let _this = this + if (uni.getStorageSync('deviceId')) { + uni.showToast({ + title: '钃濈墮宸茶繛鎺ワ紒', + icon: 'none', + duration: 2000 + }) + return + } + // uni.showModal({ + // title: '鎻愮ず', + // content: '鏄惁杩炴帴钃濈墮:' + item.name, + // showCancel: true, + // cancelColor: '#333333', + // success: (res => { + // if (res.confirm) { + _this.stopBluetoothDevicesDiscovery() + uni.setStorageSync('itemblue', item.name) + this.itemblue = item.name + _this.createBLEConnection(item.deviceId) + + // } else if (res.cancel) { + // uni.showToast({ + // title: '宸插彇娑堣繛鎺�', + // duration: 2000, + // icon: 'none' + // }) + // } + // }) + // }); + }, + // 鐐瑰嚮鏂紑钃濈墮杩炴帴 + tomy() { + var _this = this + + uni.closeBluetoothAdapter({ + success(res) { + uni.removeStorageSync('deviceId') + uni.removeStorageSync("serviceId"); + uni.removeStorageSync("characteristicId"); + _this.openBluetoothAdapter() + } + }) + + }, + //杩斿洖 + // fanhui() { + // uni.navigateTo({ + // url: './printing' + // }) + // }, + } +} diff --git a/LA24030_LuLiPackageLine_Pda/utils/print/bluetooth.js b/LA24030_LuLiPackageLine_Pda/utils/print/bluetooth.js new file mode 100644 index 0000000..6e7b288 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/print/bluetooth.js @@ -0,0 +1,267 @@ +class Bluetooth { + + constructor() { + this.isOpenBle = false; + this.deviceId = ""; + this.serviceId = ""; + this.writeId = ""; + this.notifyId = ""; + this.openBluetoothAdapter(); + } + + showToast(title) { + uni.showToast({ + title: title, + icon: 'none', + 'duration': 2000 + }); + } + + openBluetoothAdapter() { + return new Promise((resolve, reject) => { + uni.openBluetoothAdapter({ + success: res => { + this.isOpenBle = true; + this.showToast("鍒濆鍖栬摑鐗欐ā鍧楁垚鍔�"); + resolve(res); + }, + fail: err => { + this.showToast(`鍒濆鍖栬摑鐗欐ā鍧楀け璐 + JSON.stringify(err)); + reject(err); + }, + }); + }); + + } + + startBluetoothDevicesDiscovery() { + if (!this.isOpenBle) { + this.showToast(`鍒濆鍖栬摑鐗欐ā鍧楀け璐) + return; + } + + let self = this; + uni.showLoading({ + title: '钃濈墮鎼滅储涓�' + }) + return new Promise((resolve, reject) => { + setTimeout(() => { + uni.startBluetoothDevicesDiscovery({ + success: res => { + resolve(res) + }, + fail: res => { + self.showToast(`鎼滅储璁惧澶辫触` + JSON.stringify(err)); + reject(err); + } + }) + }, 300); + }); + } + + stopBluetoothDevicesDiscovery() { + let self = this; + return new Promise((resolve, reject) => { + uni.stopBluetoothDevicesDiscovery({ + success: e => { + uni.hideLoading(); + }, + fail: e => { + uni.hideLoading(); + self.showToast(`鍋滄鎼滅储钃濈墮璁惧澶辫触` + JSON.stringify(err)); + } + }) + }); + } + + createBLEConnection() { + //璁惧deviceId + let deviceId = this.deviceId; + let self = this; + + uni.showLoading({ + mask: true, + title: '璁惧埆杩炴帴涓�,璇风◢鍊�...' + }) + return new Promise((resolve, reject) => { + uni.createBLEConnection({ + deviceId, + success: (res) => { + console.log("res:createBLEConnection " + JSON.stringify(res)); + resolve(res) + }, + fail: err => { + uni.hideLoading(); + self.showToast(`鍋滄鎼滅储钃濈墮璁惧澶辫触` + JSON.stringify(err)); + reject(err); + } + }) + }); + } + + //鑾峰彇钃濈墮璁惧鎵�鏈夋湇鍔�(service) + getBLEDeviceServices() { + let _serviceList = []; + let deviceId = this.deviceId; + let self = this; + + return new Promise((resolve, reject) => { + setTimeout(() => { + uni.getBLEDeviceServices({ + deviceId, + success: res => { + for (let service of res.services) { + if (service.isPrimary) { + this.getBLEDeviceCharacteristics(deviceId锛宺es.services[i].uuid) + + _serviceList.push(service); + return + } + } + uni.hideLoading(); + console.log("_serviceList: " + JSON.stringify(_serviceList)); + resolve(_serviceList) + }, + fail: err => { + uni.hideLoading(); + self.showToast(`鑾峰彇璁惧Services` + JSON.stringify(err)); + reject(err); + }, + }) + }, 500); + }); + } + + //鑾峰彇钃濈墮璁惧鏌愪釜鏈嶅姟涓墍鏈夌壒寰佸��(characteristic) + getBLEDeviceCharacteristics(deviceId锛宻erviceId) { + let deviceId = deviceId; + let serviceId = serviceId; + + let self = this; + return new Promise((resolve, reject) => { + uni.getBLEDeviceCharacteristics({ + deviceId, + serviceId, + success: res => { + for (let _obj of res.characteristics) { + //鑾峰彇notify + if (_obj.properties.notify) { + self.notifyId = _obj.uuid; + uni.setStorageSync('notifyId', self.notifyId); + } + //鑾峰彇writeId + if (_obj.properties.write) { + self.writeId = _obj.uuid; + uni.setStorageSync('writeId', self.writeId); + } + } + + //console.log("res:getBLEDeviceCharacteristics " + JSON.stringify(res)); + let result = { + 'notifyId': self.notifyId, + 'writeId': self.writeId + }; + self.showToast(`鑾峰彇鏈嶅姟涓墍鏈夌壒寰佸�糘K,${JSON.stringify(result)}`); + resolve(result) + }, + fail: err => { + self.showToast(`getBLEDeviceCharacteristics` + JSON.stringify(err)); + reject(err); + } + }) + }); + } + + //鏂紑鑱旈摼鎺� + closeBLEConnection() { + let deviceId = this.deviceId; + uni.closeBLEConnection({ + deviceId, + success(res) { + console.log(res) + } + }) + } + + notifyBLECharacteristicValue() { + let deviceId = this.deviceId; + let serviceId = this.serviceId; + let characteristicId = this.notifyId; + + uni.notifyBLECharacteristicValueChange({ + state: true, // 鍚敤 notify 鍔熻兘 + deviceId, + serviceId, + characteristicId, + success(res) { + uni.onBLECharacteristicValueChange(function(res) { + + }); + }, + fail(res) { + console.log('notifyBLECharacteristicValueChange failed:' + res.errMsg); + + } + }); + } + + writeBLECharacteristicValue(buffer) { + let deviceId = this.deviceId; + let serviceId = this.serviceId; + let characteristicId = this.writeId; + + console.log("this: " + JSON.stringify(this)); + + return new Promise((resolve, reject) => { + uni.writeBLECharacteristicValue({ + deviceId, + serviceId, + characteristicId, + value: buffer, + success(res) { + console.log('message鍙戦�佹垚鍔�', JSON.stringify(res)); + resolve(res); + }, + fail(err) { + console.log('message鍙戦�佸け璐�', JSON.stringify(err)); + reject(err); + } + }); + }); + } + + closeBluetoothAdapter() { + uni.closeBluetoothAdapter({ + success: res => { + console.log(res) + } + }); + } + + //鑻PP鍦ㄤ箣鍓嶅凡鏈夋悳绱㈣繃鏌愪釜钃濈墮璁惧锛屽苟鎴愬姛寤虹珛杩炴帴锛屽彲鐩存帴浼犲叆涔嬪墠鎼滅储鑾峰彇鐨� deviceId 鐩存帴灏濊瘯杩炴帴璇ヨ澶囷紝鏃犻渶杩涜鎼滅储鎿嶄綔銆� + reconnect() { + (async () => { + try { + this.deviceId = this.deviceId || uni.getStorageSync("deviceId"); + this.serviceId = this.serviceId || uni.getStorageSync("serviceId"); + + let result1 = await this.createBLEConnection(); + console.log("createBLEConnection: " + JSON.stringify(result1)); + + let result2 = await this.getBLEDeviceServices(); + console.log("getBLEDeviceServices: " + JSON.stringify(result2)); + + let result3 = await this.getBLEDeviceCharacteristics(); + console.log("getBLEDeviceCharacteristics: " + JSON.stringify(result3)); + + // this.writeId = uni.getStorageSync("writeId"); + // this.notifyId = uni.getStorageSync("notifyId"); + } catch (err) { + console.log("err: " + JSON.stringify(err)); + } + + })(); + } +} + +export default Bluetooth; diff --git a/LA24030_LuLiPackageLine_Pda/utils/print/bluetoothPrinter/bluetoothPrinter.vue b/LA24030_LuLiPackageLine_Pda/utils/print/bluetoothPrinter/bluetoothPrinter.vue new file mode 100644 index 0000000..8183fd0 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/print/bluetoothPrinter/bluetoothPrinter.vue @@ -0,0 +1,22 @@ +<template> + <view> + + </view> +</template> + +<script> + export default { + data() { + return { + + } + }, + methods: { + + } + } +</script> + +<style> + +</style> diff --git a/LA24030_LuLiPackageLine_Pda/utils/print/commands.js b/LA24030_LuLiPackageLine_Pda/utils/print/commands.js new file mode 100644 index 0000000..3401e76 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/print/commands.js @@ -0,0 +1,193 @@ +/** + * 淇敼鑷猦ttps://github.com/song940/node-escpos/blob/master/commands.js + * ESC/POS _ (Constants) + */ +var _ = { + LF: [0x0a], + FS: [0x1c], + FF: [0x0c], + GS: [0x1d], + DLE: [0x10], + EOT: [0x04], + NUL: [0x00], + ESC: [0x1b], + EOL: '\n', +}; + +/** + * [FEED_CONTROL_SEQUENCES Feed control sequences] + * @type {Object} + */ +_.FEED_CONTROL_SEQUENCES = { + CTL_LF: [0x0a], // Print and line feed + CTL_GLF: [0x4a, 0x00], // Print and feed paper (without spaces between lines) + CTL_FF: [0x0c], // Form feed + CTL_CR: [0x0d], // Carriage return + CTL_HT: [0x09], // Horizontal tab + CTL_VT: [0x0b], // Vertical tab +}; + +_.CHARACTER_SPACING = { + CS_DEFAULT: [0x1b, 0x20, 0x00], + CS_SET: [0x1b, 0x20] +}; + +_.LINE_SPACING = { + LS_DEFAULT: [0x1b, 0x32], + LS_SET: [0x1b, 0x33] +}; + +/** + * [HARDWARE Printer hardware] + * @type {Object} + */ +_.HARDWARE = { + HW_INIT: [0x1b, 0x40], // Clear data in buffer and reset modes + HW_SELECT: [0x1b, 0x3d, 0x01], // Printer select + HW_RESET: [0x1b, 0x3f, 0x0a, 0x00], // Reset printer hardware +}; + +/** + * [CASH_DRAWER Cash Drawer] + * @type {Object} + */ +_.CASH_DRAWER = { + CD_KICK_2: [0x1b, 0x70, 0x00], // Sends a pulse to pin 2 [] + CD_KICK_5: [0x1b, 0x70, 0x01], // Sends a pulse to pin 5 [] +}; + +/** + * [MARGINS Margins sizes] + * @type {Object} + */ +_.MARGINS = { + BOTTOM: [0x1b, 0x4f], // Fix bottom size + LEFT: [0x1b, 0x6c], // Fix left size + RIGHT: [0x1b, 0x51], // Fix right size +}; + +/** + * [PAPER Paper] + * @type {Object} + */ +_.PAPER = { + PAPER_FULL_CUT: [0x1d, 0x56, 0x00], // Full cut paper + PAPER_PART_CUT: [0x1d, 0x56, 0x01], // Partial cut paper + PAPER_CUT_A: [0x1d, 0x56, 0x41], // Partial cut paper + PAPER_CUT_B: [0x1d, 0x56, 0x42], // Partial cut paper +}; + +/** + * [TEXT_FORMAT Text format] + * @type {Object} + */ +_.TEXT_FORMAT = { + TXT_NORMAL: [0x1b, 0x21, 0x00], // Normal text + TXT_2HEIGHT: [0x1b, 0x21, 0x10], // Double height text + TXT_2WIDTH: [0x1b, 0x21, 0x20], // Double width text + TXT_4SQUARE: [0x1b, 0x21, 0x30], // Double width & height text + + TXT_UNDERL_OFF: [0x1b, 0x2d, 0x00], // Underline font OFF + TXT_UNDERL_ON: [0x1b, 0x2d, 0x01], // Underline font 1-dot ON + TXT_UNDERL2_ON: [0x1b, 0x2d, 0x02], // Underline font 2-dot ON + TXT_BOLD_OFF: [0x1b, 0x45, 0x00], // Bold font OFF + TXT_BOLD_ON: [0x1b, 0x45, 0x01], // Bold font ON + TXT_ITALIC_OFF: [0x1b, 0x35], // Italic font ON + TXT_ITALIC_ON: [0x1b, 0x34], // Italic font ON + + TXT_FONT_A: [0x1b, 0x4d, 0x00], // Font type A + TXT_FONT_B: [0x1b, 0x4d, 0x01], // Font type B + TXT_FONT_C: [0x1b, 0x4d, 0x02], // Font type C + + TXT_ALIGN_LT: [0x1b, 0x61, 0x00], // Left justification + TXT_ALIGN_CT: [0x1b, 0x61, 0x01], // Centering + TXT_ALIGN_RT: [0x1b, 0x61, 0x02], // Right justification +}; + +/** + * [BARCODE_FORMAT Barcode format] + * @type {Object} + */ +_.BARCODE_FORMAT = { + BARCODE_TXT_OFF: [0x1d, 0x48, 0x00], // HRI barcode chars OFF + BARCODE_TXT_ABV: [0x1d, 0x48, 0x01], // HRI barcode chars above + BARCODE_TXT_BLW: [0x1d, 0x48, 0x02], // HRI barcode chars below + BARCODE_TXT_BTH: [0x1d, 0x48, 0x03], // HRI barcode chars both above and below + + BARCODE_FONT_A: [0x1d, 0x66, 0x00], // Font type A for HRI barcode chars + BARCODE_FONT_B: [0x1d, 0x66, 0x01], // Font type B for HRI barcode chars + + BARCODE_HEIGHT: function (height) { // Barcode Height [1-255] + return [0x1d, 0x68, height]; + }, + BARCODE_WIDTH: function (width) { // Barcode Width [2-6] + return [0x1d, 0x77, width]; + }, + BARCODE_HEIGHT_DEFAULT: [0x1d, 0x68, 0x64], // Barcode height default:100 + BARCODE_WIDTH_DEFAULT: [0x1d, 0x77, 0x01], // Barcode width default:1 + + BARCODE_UPC_A: [0x1d, 0x6b, 0x00], // Barcode type UPC-A + BARCODE_UPC_E: [0x1d, 0x6b, 0x01], // Barcode type UPC-E + BARCODE_EAN13: [0x1d, 0x6b, 0x02], // Barcode type EAN13 + BARCODE_EAN8: [0x1d, 0x6b, 0x03], // Barcode type EAN8 + BARCODE_CODE39: [0x1d, 0x6b, 0x04], // Barcode type CODE39 + BARCODE_ITF: [0x1d, 0x6b, 0x05], // Barcode type ITF + BARCODE_NW7: [0x1d, 0x6b, 0x06], // Barcode type NW7 + BARCODE_CODE93: [0x1d, 0x6b, 0x48], // Barcode type CODE93 + BARCODE_CODE128: [0x1d, 0x6b, 0x49], // Barcode type CODE128 +}; + +/** + * [IMAGE_FORMAT Image format] + * @type {Object} + */ +_.IMAGE_FORMAT = { + S_RASTER_N: [0x1d, 0x76, 0x30, 0x00], // Set raster image normal size + S_RASTER_2W: [0x1d, 0x76, 0x30, 0x01], // Set raster image double width + S_RASTER_2H: [0x1d, 0x76, 0x30, 0x02], // Set raster image double height + S_RASTER_Q: [0x1d, 0x76, 0x30, 0x03], // Set raster image quadruple +}; + +/** + * [BITMAP_FORMAT description] + * @type {Object} + */ +_.BITMAP_FORMAT = { + BITMAP_S8: [0x1b, 0x2a, 0x00], + BITMAP_D8: [0x1b, 0x2a, 0x01], + BITMAP_S24: [0x1b, 0x2a, 0x20], + BITMAP_D24: [0x1b, 0x2a, 0x21] +}; + +/** + * [GSV0_FORMAT description] + * @type {Object} + */ +_.GSV0_FORMAT = { + GSV0_NORMAL: [0x1d, 0x76, 0x30, 0x00], + GSV0_DW: [0x1d, 0x76, 0x30, 0x01], + GSV0_DH: [0x1d, 0x76, 0x30, 0x02], + GSV0_DWDH: [0x1d, 0x76, 0x30, 0x03] +}; + +/** + * [BEEP description] + * @type {string} + */ +_.BEEP = [0x1b, 0x42]; // Printer Buzzer pre hex + +/** + * [COLOR description] + * @type {Object} + */ + +_.COLOR = { + 0: [0x1b, 0x72, 0x00], // black + 1: [0x1b, 0x72, 0x01] // red +}; + +/** + * [exports description] + * @type {[type]} + */ +module.exports = _; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/utils/print/gbk.js b/LA24030_LuLiPackageLine_Pda/utils/print/gbk.js new file mode 100644 index 0000000..6749c80 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/print/gbk.js @@ -0,0 +1,201 @@ +/*! + * gbk.js v0.3.0 + * Homepage https://github.com/cnwhy/GBK.js + * License MIT + */ + +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.GBK = factory()); +}(this, (function () { 'use strict'; + + var GBK = function (gbk_us) { + var arr_index = 0x8140; //33088; + var gbk = { + decode: function (arr) { + var str = ""; + for (var n = 0, max = arr.length; n < max; n++) { + var code = arr[n] & 0xff; + if (code > 0x80 && n + 1 < max) { + var code1 = arr[n + 1] & 0xff; + if(code1 >= 0x40){ + code = gbk_us[(code << 8 | code1) - arr_index]; + n++; + } + } + str += String.fromCharCode(code); + } + return str; + }, + encode: function (str) { + str += ''; + var gbk = []; + var wh = '?'.charCodeAt(0); //gbk涓病鏈夌殑瀛楃鐨勬浛鎹㈢ + for (var i = 0; i < str.length; i++) { + var charcode = str.charCodeAt(i); + if (charcode < 0x80) gbk.push(charcode); + else { + var gcode = gbk_us.indexOf(charcode); + if (~gcode) { + gcode += arr_index; + gbk.push(0xFF & (gcode >> 8), 0xFF & gcode); + } else { + gbk.push(wh); + } + } + } + return gbk; + } + }; + return gbk; + }; + var gbk = GBK; + + var URI = function(GBK){ + var passChars = '!\'()*-._~'; + var otherPassChars = '#$&+,/:;=?@'; + function getModue(passChars){ + var passBits = passChars.split('').sort(); + var isPass = function (s){ + return ~passChars.indexOf(s) || /[0-9a-zA-Z]/.test(s) + }; + return { + encode:function(str){ + return (str+'').replace(/./g,function(v){ + if(isPass(v)) return v; + var bitArr = GBK.encode(v); + for(var i=0; i<bitArr.length; i++){ + bitArr[i] = '%' + ('0'+bitArr[i].toString(16)).substr(-2).toUpperCase(); + } + return bitArr.join(''); + }) + }, + decode:function(enstr){ + enstr = String(enstr); + var outStr = ''; + for(var i=0; i<enstr.length; i++){ + var char = enstr.charAt(i); + if(char === '%' && i + 2 < enstr.length){ + var code1 = parseInt(enstr.substr(i+1,2),16); + if(!isNaN(code1)){ + var _i = i + 2; + if(code1 > 0x80){ + var code2; + if(enstr.charAt(_i+1) === '%'){ + code2 = parseInt(enstr.substr(_i+2,2),16); + _i += 3; + }else{ + code2 = enstr.charCodeAt(_i+1); + _i += 1; + } + if(code2 >= 0x40){ + i = _i; + outStr += GBK.decode([code1,code2]); + continue; + } + }else{ + i += 2; + outStr += String.fromCharCode(code1); + continue; + } + } + } + outStr += char; + } + return outStr; + + } + } + } + + var URIComponent = getModue(passChars); + var URI = getModue(passChars + otherPassChars); + + return { + encodeURI:URI.encode, + decodeURI:URI.decode, + encodeURIComponent:URIComponent.encode, + decodeURIComponent:URIComponent.decode + } + }; + + var src = function (gbk_us){ + var gbk$$1 = gbk(gbk_us); + gbk$$1.URI = URI(gbk$$1); + return gbk$$1; + }; + + // 澶氳繘鍒惰浆鎹㈠悗鐨勬暟瀛楄繕鍘熷嚱鏁� 鏋勫缓鏃朵細鏇挎崲鍗犱綅绗� + var Fn_Hex_decode = function decode(){ + var n = 0, str = arguments[0]; + for (var i = 0,w = str.length; i < w; i++) { + var code = str.charCodeAt(i); + if(code < 38 || code > 126) return NaN; + n += (code - 38) * Math.pow(89, w - i - 1); + } + return n; + }; + + // 瑙e帇Unicode缂栫爜瀛楃涓插嚱鏁� 鏋勫缓鏃朵細鏇挎崲鍗犱綅绗� + var Fn_unzip = function unZip() { + return arguments[0].replace(/\x23(\d+)\x24/g, function (a, b) { + return Array(+b + 4).join("#"); + }) + .replace(/[\x26-\x7e]\x25[\x26-\x7e]/g,function(a){ + var b = a.substr(0,1).charCodeAt(0) + ,e = a.substr(2).charCodeAt(0) + ,str = String.fromCharCode(b); + while(b++<e){ + str += String.fromCharCode(b); + } + return str; + }) + .replace(/\x23/g, "###") + .replace(/([\x26-\x7e]{2})\x21([\x26-\x7e\x23]+)(?:\x20|$)/g, function (all, hd, dt) { + return dt.replace(/./g, function (a) { + if (a != "#") { + return hd + a; + } else { + return a; + } + }); + }) + .match(/.../g); + }; + + function gbkArray(gbkArr) { + var data = []; + for (var i = 0x81, k = 0; i <= 0xfe; i++) { + if (data.length > 0) { + data.length += 0x40 + 1; + } + for (var j = 0x40; j <= 0xfe; j++) { + if ( + (j == 0x7f) || + ((0xa1 <= i && i <= 0xa7) && j <= 0xa0) || + ((0xaa <= i && i <= 0xaf) && j >= 0xa1) || + (0xf8 <= i && j >= 0xa1) + ) { + data.push(undefined); + continue; + } + var hex = gbkArr[k++]; + var key = Fn_Hex_decode(hex); + data.push(key ? key : undefined); + } + } + return data; + } + var GBK$1 = function () { + // 鐢熸垚鎸塆Bk缂栫爜椤烘暟鎺掑垪鐨勭紪鐮佹槧灏勬暟缁� 鏋勫缓鏃朵細鏇挎崲 zipData 鐨勫崰浣嶇 + var gbk_us = gbkArray(Fn_unzip("(T!HJ%LUX]e%gilotuwy{} (U!)-%/137>BDGHO%RTUW%\\_a%jl%rtw} (V!*+-0%27>C%EHJ%MP%R\\`cdfn%ptvz{} (W!()*,/3%579;=%CFGM%QWX\\^cdg%ilnprtvy%} (X!&')%.468CDHJLMOPSTWY%\\_b%dg%ilnprtuwxz%|~ (Y!'(*+-469%=?%GI%KO%RT%V[%_bdikmnptuy{}~ (Z!&')+%-/%;>@ACE%GKMNPR%TW[_%ikmo%rt%vy%{} ([!'(%+-%024%;=%BD%LO%QSTX%[]^`%ce%y{} (\\!()+%/1%7:%LN%SU%WY%cf%im%prt%xz%~ (]!&'%*-%/1%68%EG%cgloqs%uwx|%~ (^!')%-/02356;>FJKOPRSVWZ%]_`dfi%kmor%vyz (_!'+%-124%68;=@ACE%MOQRUVX%]_adegjqwx|~ (`!&)*-%/689;%=?%ADFIKLNOVX^%cehilmoq%uwyz|%~ (a!'),%/124%=?AD%HJ%PRSU%[]e%ho%qu%~ (b!()*,%.024%79;%=?A%FH%KM%WY%`c%ei%loq%tvy%| (c!'*+-.1346%8:%<>%GKLOQSUZ%\\_cghjltwy{| (d!(,/1%4679=>@D%JLMOQRTVWZ]`%ce%km%pr%tvy%} (e!+,-/0279%;>?DQW[%]_bdhqu%wy (f!&().47:;>ACEFHIKMP%SU^a%egikm%tx}~ (g!)*,.02%58<>BCGI%MPY[]`%bdeginpuv (h!(*-2%6=>A%CF%KMPRT%WZ\\%`deg%ln%qswxz{} (i!&+-%/1%469;>@AD%HJ%MP%TV%Y[\\abdh%mrsvx~ (j!&,%.0235%7:;>@%FH%PRTVXZ\\_%cf%hjkn%puw%{~ (k!').04578;=?%CFI%NQRTW%^`acdg%ilmo%ru%wz|~ (l!&(*%,.%9=%ACDHIK%OQS%U[%^`%ce%hk%ru%{~ (m!&')%79%CE%KM%PR%^`%hjkmnqxz%~ (n!&(*+./2%478<%>ACG%WYZ\\%^`%cgmnp%txy{} (o!&'%)+,.5%9;<EFHJOQS%UWX[%]`%dj%mp%tw%} (p!&'%)/2469%;=?%AC%KN%TVWZ[]`aefhk%mo%vxz%} (q!&'(,-/024%69%;=?%AC%EG%IK%NPSTV%Z\\%`b%eg%tv%| (r!&'(*+-%/1%57%<>%BE%UWZ\\^%`b%il%ps%ux%~ (s!&)%:<%?A%CE%OQ%SU%bd%ilnpqstvwy%~ (t!&')+,.%246%9=>ACDF%ILNRVXY[\\ac%fiklprsvxy (u!&(%,.013%?BDG%IK%MRVXY[%^abeg%jl%ostyz}~ (v!'(%,.013%9;%=@%CIJMOR%VXZ[]%_a%lnp%rtv~ (w!&(%+-/%24%689<=?A%CE%KNPR%VX%Z\\%`bcf%oq%tv%|~ (x!&'(*+-%5:;=%@B%SU%[^%km%svxy{%~ (y!&(),%1346%:<>@B%DF%HKMNPQSU%Y[%qs%~ (z!()%ACEFH%OQ%_bfnpqwx{}~ ({!&)+-%023569=ADEG%IKMV^%`c%fhinq%swxz (|!&'%)+%-/2%:>@ADEG%KMO%U[\\^`acefi%lnpquwy|%~ (}!&(+-%02%578:%<HIKLQRW%Y[%]_%bdgil%ruw%} (~!'(%*,/%35%7:;>?AI%MP%TVZ%\\^`be%hjlnoq%vx%} )&!&'%+-%356:<>?ABD%MO%TWX[%`b%fhj%mopr%vx{}~ )'!&)%-/%69%@BCG%QSTVX%bdghj%mo%{}~ )(!&'%9;%=?%WY%eg%mo%{} ))!'(+,2458=>@%DGHLOQ%SUVZ[_f%mp%twxz%~ )*!()-%025%:<%BE%IKLNOR%`dfhmp%rtwx{%} )+!(.137%:>%BD%HJP%SU%^a%fjkm%pr%} ),!&(%02568%:B%DFI%KMOQSVWY%[^%aehikmo%uxz%|~ )-!&'%358=%@B%DGIKLORSVX%Z\\^a%cgjq%suwxz~ ).!&(%+-%2467:%?AC%FI%MRSUVY^%`e%gijmnpqstwz{}~ )/!&()+,.9%;=>BCEIJLPQT%V^%`b%fh%loprv%|~ )0!'(*,-/%1457%:>?GJKMNPWY%[^%acdg%jlnp%ruwz{}~ )1!')*.035%79:=%DG%IL%PR%TVWY[^a%ejqruwx{%~ )2!&)%,.1%37%;=%@B%EHILO%QS%eg%nprtvwy%{}~ )3!&'%*,%/1%47%=?%BDF%XZ[]%ac%jl%txy{%~ )4!&'%+-%24%68%<>A%EHJ%Z\\%ik%su%z|~ )5!/058%:<?B%EGIK%NQRT%X^`%bfklq%suvx%~ )6!'(+4578:;=>@D%FH%KN%SW\\_%afijlmp%su%wy%{} )7!(*+-59;?GHJKNTUZ\\_b%ejm%pt%wyz|%~ )8!&(%*-78:=%?ABD%ILMO%RUXY[b%eg%nqu%wy{%} )9!'(*%-014%79;%>CEIK%MOQ%WY\\^cgijmnqsuw%{} ):!&')%+02%46%<>AC%GJKM%PRTVX%[]bce%ilmpqt%y|~ );!()%+-%/14%9;%?ABDFHIOQ%WY[%]_%ce%lnp%rt%} )<!()%.035%=@ADEG%JL%PR%UWX\\^%acfhj%lnpqs%y|~ )=!'(%*-%13%579;%SU%\\^%eg%km%xz%~ )>!'(+%.2578;%?ABEFHIKM%ORSUWZ%\\_`b%eh%jlnpqs%~ )?!&'(*%,/%146%8:<?@BDEHJLNPS%Z\\]`%bdi%lorsu%wz%~ )@!&'(*,-34;%>ABD%HJMNP%RTVY%[_%ac%egj%mor%uwy{| )A!'(%+-/024%:=>@AHIK%NPRSUWY%]a%cehik%mo%qsuvx%{}~ )B!&')%,/%35%=@%DF%JL%OQ%TV%oqu%|~ )C!&(%-/34689;?%EJLMO%QTV%XZ\\^%ceglnpqt%wyz|} )D!&)*,/0279:<%@BG%IKLPQSVY[]%`beghjkmoq%tv%y{~ )E!'+%-0258:=>@E%LNQ%Za%cgkmopr%tvwyz~ )F!()%/14%79@CEGHK%OQ%SU%[^%dg%imnrz~ )G!'),0%9DF%MOR%Z\\^a%hj%ln%pr%{}~ )H!&*%-/2357%@BD%IKMO%RTUWXZ\\%`bce%nps%uw%y|~ )I!&'(*%,.%2479;%FI%KM%TVWY%[]%`b%dfhik%{}~ )J!'(*+.01346%9;<>?A%EIJL%NPRTY%[]%befhil%uxy{}~ )K!&()+,.%02%68%?ACEG%IK%PR%TW%bd%gi%rtv%~ )L!&(%36%;=?%DFH%KMO%QS%Y\\%`bce%ln%twy%} )M!&'(*%46%<>?A%CE%GI%QSV%Z\\%ce%lnq%~ )N!&'%~ )O!&'%178:%CE%HJM%OQ%TVWZ\\]_%jl%sz{}~ )P!&'%136%9>AEG%JMNP%RU%Y[%bd%koq%wy|} )Q!&'%*,.018:<%@B%IL%NP%RTV%XZ%\\^%dh%lnrw|%~ )R!'*,2%48:=>@%CEFJ%LOR%VX%Z]_%aijl%nr%vxz|~ )S!&(%*-.2589;<?@C%FHJ%LNPVZ]^b%ehn%qt%vy{%} )T!&'-%/1249;<>ABGINTUWXZ[]%_bd%fh%kmqrt%y{}~ )U!()+,02%46;<>@EHLQ%TWY[]^`acdg%il%oqru%wy%} )V!&')*-.02359%=?EHOPSTVWYZ\\%ad%fk%mp%su%xz}~ )W!&),-/1%479:<>%@BDG%NP%SUY\\]_bcefhilp%rtvxz{} )X!&'(*,%36%=@%CFHJKM%OQ%[]^`%nq%suxy{%~ )Y!&)%/1%35689;<>@AC%FHKMPQTV%X[%^`%bd%fhjnpqs%u{ )Z!&)%24%79%@B%DFGI%MO%QU%^`%bd%gkmoqstv%|~ )[!&'%+.%024%=?%ACE%GI%KM%RU%WY[%]_ac%ik%mpqu%~ )\\!&'(*%-/%35%?ABDEG%LNP%UW%]`%jlo%z}~ )]!&'%DF%MP%VX%hj%ln%~ )^!&()+%8:%EIL%ORT%VX\\%_a%cf%hj%lnrsuvy%~ )_!&'%,246%8<@AF%IKM%Y\\^%`b%eglpr%xz|%~ )`!'(%14%8:;=@D%NP%W[%^`%mo%rtvx%~ )a!&'%+-/%359%=?%AD%GIKLN%SU%Y[%^`%ce%gj%nq%wy%{}~ )b!&'%)+-%/1%9;%DF%JM%VX%[]_%df%oq%|~ )c!&'%:<%EGIK%MP%RXZ\\^%dg%il%oq%suvxz|~ )d!()*-/%25689;%=@%BGHJ%NQSUVX%ce%psv%xz )e!&'%,1%35%8;=?%BDFG 'W!,-. &(+&.'&-~&'u'W!/1 ')>.<V')!@PBCFG 'W!@A4%;BC<= &'~&(!Kk '/!J;< '.!~| '/!>= '.u'/!K. '0`'/!94 '1t'0T'/!?Bu`\\Q1t '0!)* '/!xy2IH ';!*( &'}')!\\] '+{.;U&'q.>!&' ')Z&'t',5':!GF '9!eiha`;:ML ')e'-!XVWY 'W?'-!67%?#3$ '6!-.%@ '5!rs%~ '6!&'%, '5!^_%g## ']!67%?## '-!&'%1## .;!RST .>+.;!VW%~ .<!&'%U .>)'W!mn%~ 'X!&'%f#8$t%~ 'Y!&'%p#5$ &0!=>%MO%U#5$]%mo%u#4$ .9!89<=BC@AD%G##>?:;4#67#6$ &1!cd%hTi%~ &2!&'%)#12$*%/K0%I#10$ &.!()7 ')!=?O_ '+}',('-!\\]%_ '/!)37fz{ '0z'8!CD%ft%~ '9!&'%)-%/VW|%~ ':!&J '0P'W!>IJ#8$ &(!uU &+7&(T&).&(]&)6&(\\&)F&(a&+9&(`&)h&(g&+;&(f&*-&(n&+=&(m&+!?ACE &(!p^ &,a-Qc&)!_c -Qd&,q#1$'Z!&'%J#18$ 'W!MN%U '^`'a!@AN%PSv 'b!'*+. .93.>!(*# ',@']G#'):#0$'Yv'X!no 'Y!wx 'W2'X!pq .9!LM%UW%Z\\%ik%n -R!*+%6 'W3#10$'7!LM%~ '8!&'%>#12$ )e!HIKN%SVWabei%lnp%uw%y{%~ )f!'+%-23679%;@BCEFHIM%PS%_abdf%ik%rt%~ )g!(*%79%=?@BDFGIJL%OQ%TV%XZ[]%bdfgkn%prsv%y{}~ )h!&'(,-/3%9;%>@B%EGIK%MO%RT%cehil%or%z}~ )i!&'%)+,/13579:?%CE%HJ%\\^`eh%tvwy%} )j!'(%,.13%57%9;<>@%JLN%UY%hj%~ )k!&')%1357;=%CF%IKN%TV%Y[%bdfhj%mqstv%z|} )l!'+1369:<>%ACDFGJM%PR%UZ%ad%fh%npr%tw%{}~ )m!&()+%.0%2479<?@BFJ%NQZ[^_c%ejopr%uw{}~ )n!'(*%,047%:=>@%CEFHIMOQ%TVX%Z\\%_aeg%ilnrswyz|} )o!()+%-/346%=@%EGI%MOQ%TV%\\^%`b%iklnq%suw{|~ )p!&()+-.013%<>%FHILN%WYZ\\ (iC*r5(pM)89(gy(h[(gk)p*)o>*A;)s|*9E)ui)cO*s5*ux)R/({@(Z*)7s)B.(~d*4~)F{*42)@K)pg(_l)>Q)a|*2'*Jb(\\0(u2)4?)\\@*9t)8])5n(eJ(f+)|s(^7)mH))<)7>*Yr*ua)6M*2O(o@*t|*0J)cV)oo)E[)op);L(XR*W~)7F)z6)?3)hN);2)66*8L*xa)Dd)cf)61)76(Wo)k9(cY(a_*.d*b,))v)G`)Jk*6R*.k)HS)vH*E'*oR([d*U/*:L*4b(bm*L>(a&)p!]`bdelnrsu%wy%} )q!&'%-035%7:;=?@BCEFJLN%X[%^ac%egj%lnp%ty{}~ )r!&)+%-/%69%@C *B**t=(Yf(qR*{F({T)6!th )BK*V+++A)b})DT)um)12(c!`& *^r*4P*Wv*mT(Z=)e4(t-)1k)`B*K0(tz*:])Cj)}<)&|*/8)l*)TJ*[[*`!0t +3')Q4*cF)}()-`)v**@.*A<)Q!596 ))I)*v)nD*q<)>X),G).P*_0(s@*7;*a^*rQ*v?*_J*/W*X,)5](YH(e5(cm*_!9:< *a,)F:)-N*6j*JF+,1)3Y(`E)nu)-P)?.)\\_)Z'({u);N(^!A| )EP(T_)yA*{Q)_5)r!DE%GKNPQT%_a%ch%jm%rvwz%~ )s!&'%,/12469;%=?@BD%HJLN%Z\\%df%hk%or )mi)*e)gu*=C)<Z)7R*mh)T7(ci(b+):n*mu)~O(Wj))c*8V*5A*6\\)Wn)Sx*~=)8f(ck(hL*JC(pj(TS))K)Ow*'H*bn)/H)=:)f/*KF)D5)5i*W{)rS*Zw*eB)-M*=?*@y*z>(dx*E0)PD)1!mh )^Z*:;*8Q(Vg)SU*Bu)<z*)0)Ks)C7*;^(dK)}j(Y0(^X)UG(}G*[b):1(e&*;!AK )Eq)v7);C(|=(~@))6*TK)70)F'*V,):_)9r*G2*{`*T{*/a*nL(V;*q_*y+)@U)f))s!tvx}~ )t!&')*,.%18%=?@C%EHJNPSU%WY]_`cdf%hjkrtv%y{}~ )u!&')+-/04%8:%EK%RT%WY%_ (nv(|{)*'*p'([V*3}(d8)>Y)lB(i*(ZQ*Y,)6G*mQ)C[(ky)[T))*(f9)^m*^P)62)<Q)9[)-_)[n*bz*7\\*_A(|v)AX).|)S7*r>*Y(*JJ)<>)yh(pX)Lv)5,(fL(UE)z*)1i)[j*T>)6B*`V*~U)y\\(e`)n?)7k(c()Rg*_p),X*~:*2q+3k(Xj(}?*Xd*1T)?G)_?(]j(^~*D_)&Z({W)7'*d@)lq*ZZ)z?)2()~4(V[*/9)rl(TW*7f(`7(_m)M5(d^*[|*n^*sl)YY*rZ)J))u!`abdfgklnp%ruyz|~ )v!')+%28%;=%@BCE%GI%KO%RT%VY%[]%jl%np%tvxy{|~ )w!&'%*,%.0%6 )tu(\\&)se):o*N`(t*):B)(~){E)Ie(W[*8Y(j8(Tx)mR){])*!Qy *q>(`5(f=)^e)9.*n~(oe)@n)Ig*d[(hY)W=*.I*IY)5O*/1)mY*;=)vD*si*_/)2o)kM*T1)Ov(`T*XP)O3*3G*>{(n-(bn(Vb(Ta(_D*(G*d_*&i(YL*[t*&C){b);m)&g(\\**51)nL*(i)W6*1o)D6(zh(|V)vN)<[):r)9b)8<*ns);3*_O)}h)nt)5o(tM(fJ)P2([z)5P))n)P?(Vw*X7*Ji)-i*`f)w!78%<>%GI%MO%]_%cgil%oqt%|~ )x!&)*2457:%=?A%GJL%PSTW%Z\\%_a%c )/R*2s)7/(U&(cd*b~)9p*4J)@/)R5(X()1n)W+*TB),v*Ef)-7)82(^&*;v)G=(_s)8t*[=(ZB(~G)xH(|Z(`J)zZ)1<*a2)pp).B)-{)ov*[a)^J)om)}])s8(_f*ar(qU(X0)Z3*_{)>G)}/)e0)VG*1n(yJ)6x)++(nl*?3)}@))e),\\*`J*/U*y')9:)Y_)ut)_;(^D*uF(p5)l2(W~)l5)+-)1f(u-)Vc)Px)ue(eY*sr(_!>t )9A(eg*mF*Tg*Ys)cW)u{*G_*_~*Tq(e=)x!de%jl%wy%~ )y!&'%*,%047:<=?@BDF%HKLNOQ%VX%Z]`bdfi%oqrtvwy|} )z!&'%)+.%24578:; (TG)q/(eK*m<*xV+2S*o.({Q*S_(T!hb (^x*>m)47(ai)F>(Xy)0D(_.)Ts(^()6Y)?9*rW*UQ*`O)m|*c*)rJ)Q2)dO)eX*T_(qf)r`*XL)DA*oA*3w)+<)Wk(u_)|\\)s{*o<)Pn)?O*/O(q7(]v*qn(|W(s((f,*[g)>a*x_(my*mP)q>*`y)9?(gq(t!@` (o~*\\N)Cs*ZH*8U(`[)1p(qF*F@)&;+0<(YM*x}*Sv(w@)0O(d:)6?*a.*c/*{T)0B*2B(]d*2i(|r*{J)U-(Uy)z!<>@AC%QS%UWY]_%df%oq%uw%~ ){!&'%57%9;A%DHKMO%RT%VYZ_%adgh *X0(e.*0B)}c(WK(U<*qO)T*)h1*C6))N)lg*21)L')t3*mE*-4(_T)_h(e**_e*:q*X))dt*{B)T0(o-*9z)?[*4.)5[*r((uu(W:*S|*.T)>9*=U*uI(iZ*ye*4)(c9*Ta(e}*4>)+5)Sf*X9*9s*d.(f-)Q{(_y*.Q(oB)`C)S,*(9(tq(W8)/1)2K*(Z(Tv(|_)E7*FD)&C*ne*yU)mS)`&*`Z(^{*/^*Sz(to(_W(X=(f*(tQ)>r*4(({,)69)7,*^z)*4)R&)}:(WJ(Ya)CK){!ijmo%qt%xz%~ )|!&'%+-%79%BDEG%JNOQT%Y[]%ehikm%ortvy%{} )}!&'*%,.0135%7;=A )Uj)VM)x`*K6),T)l()6]*^o(Yx*eW)?I*5!Z| )+2*5{*Xt(a0*MY*XK(t3([\\(Vl*qk)cT*6K*Wx(|**S`*r:(uT*/[(g;(ld(kU*TI)>4)JQ*mL)po)Xz)*a)kn)D+)E])|l*3z*Xv)2F)y>)>]*Xc(^T(`4*mU*/y*3x*.L(~C)Wy)DE*&;)o}+&I*6a*0|*),):}*oQ)z^(fN(h7)O^):`)4}+04*4w)m=(a3*uT*>e)Fo*F&*qP*s1*nF(Tp(ea*.s)Fl*Z-*2K)C2)+0*1H)}!CDFH%KMOQS%XZ\\^abgikmprsuw%~ )~!&'(*+./13578:<%?A%GIJL%NQS%VY%[^%`i%kmnp%rt%{}~ *&&(pL*2u)Gq))-)>6(a`)0F+4-(X}*\\H(^8({b),P))1)Re)7[*Wz(^=*m\\(bf)SM*:M)eC(p,)Di*X-(tE*_-*=*(g@)~H(Wk)Sk(zt(vE+2X(eA*Ee*~r*UB*3~)>@*x^(n6*sd(`H)k2(`j(|?)7l*L.(UC)7:)/\\)H{(^?({O(^l*N<)~\\*{[*08)1o)^'*X/(]n)*n*`S)ix*N>(ni)tz)-6+42*qI*^R+'T*TE)oj)Fu)Eh*Z8*X5(`W*^t)Yr)HN*n_*bs(n9)E(*K~*_X(gs*&!'*%-/%246%:=>@%BD%FI%KM%OQRT%XZ%]_a%hj%lopr%wy%~ *'!&')%.124%@B%GK +&)(zy)Us)R-(V9({j*~Q*d7)3v*b5*v{(f/)VX(|0(_p(j**0=*2&)<i)8^)@:)43)0f)`3)R!^P (tU)DR*8J(sT(l|*Uu)QK*bc(uJ*2M(eT)Ue(fy(j=*<3*=2)Fk)y6(g7(X7(ee)pk*V;*qQ)Sa)V[*Xk*L<+0[*X:(l-+1o)my)-l)eL)0A(hN(V<)LG*J?)0+*^Z(go)_Z*Dm+06)U&({F),U*.<(j)(Y8)fG(f@(dP(ZI(ek(g'(U;)//)ib(su*>u*4e*G])e<*(z)XG*'!LM%UW%{~ *(!&'%*.%8:%@CDFI%KPQSV%Y[%]_`d%hjk ),d*DB(h~)6g(V&)SX)5S*9x(h)(c])fQ)Yi)l8(`,(b~*TA)KF)-n)/2)W8(o2)O4)gi)G-*_i*/T)8s)0|(hv)n5*Um)`>)VF({])*j*;g)2s+1b)v}*G@*'0)oy(_c)1v)`u)A3)*;)0&*Tr)^K)86*^s).H)0;*Eo(ms)Pz)0m)35(cX)1`)AV*X?)yu(WU)_k)RN*Sp*TV*.r*;y)@X(wu+'Z)UM)WA*UL)U7(WT)^F*<s)52)1Q*tQ*X')xI(_n(nz(q+)Cx)lu)z\\)yg)~P*(!opr%tvy{~ *)!&'%+/12458%>@%EG%NPQS%`b%vxz%} **!&'(*%,.%4 *3i*{:*`1)\\M*Sb+/q(v`*/!*J (ef)Df)HY*^{*'V*sc(e')/W)mb)Ry(d)(y2*.A)85(_S*55))9*@7)6C(^L(zs(WI)x>(`\\)18)UJ({!{y *S!^m )@+).W*r;(u`*/(*.D(kP)EC(t_(XU({m(aa*;o*xj*X>)l/*mq(Zw)z[(W2)EB*~H(y*)P5)pj(o=(|t)}N*qC)`w(^H*4-*97(uE*/E*;<)HA)Ex)v4)uS)7M)8r)~;(Yv(a+(_B*;e)KQ*g=*ZC*X1*N;*o/)~h(W1**!56%km%tv%~ *+!&'%= ([<*8P(`k*{D)WZ)Xv)VJ),7(\\s(vP(|d)UB)Rf)m**?<)GB(t|*So(c/*dE*rC*AH)I:)w+)`O*4z(V8*bP)UC*~N(v{(mQ):d*nJ)sy(Y.*5E)eM*NL*{O*/u*.x(a@)>T*dI*^!im (eH){\\):L)9])ox)yp*J5*r,)5F(al*9I)G.)DU)9/)rR)|Z)TV*.m*N](vD)5.*Bo*9l)lI(ZO(V_)mI*TO(}O))F)}_)?F*eL(V^)Tz*M2*)~*o'(VY*U3*_l*u^)A;)xR*_b)_n)Ut*+!>?%JL%RT%~ *,!&'%F (}B(as*;[(^.*:|)rB)Af++l(V@)1J*(!nc *.i(V)*R|)A_*xh*uD(r[)>g*o])-h)mm*uA)|!LK (_3)_1){^):I){<*.:)gP*w&(U2)^S(UJ*d&(d_)>L)@0*7!u~ (g9(}6)m>*v2)7B)eE)ma(}J*~C*=-(}E(g+)sw(U+)S\\*37)7<)9&))0(^C*Z!+l *o0(Yz(eB)1g)_.(a()8a+0:(w:(ZV)qw(d-*.|)<2)>&)6L)9P(ZD)cS*NC(_&*S}*.w(o**=/*mZ(^g(ex)&N*,!GH%~ *-!&'%-/%35%9;%P (YS)|P)UV*bg*~Y(iy(gA(cp(gZ),=):H)JF(_b)36(_}(q[(b@(o1)tB)qK)+M)3E*)7)5w)6Z(V6)^p*29)7a)_f*uK(oZ*:I)E{)Hv)vX*xw)yI(sr(g^(eL)W~(]p(`U({Y*Tb*43(i<(p0)0L(o4(f1){@)0)(zd)9_)6c(e@)6&({~)E;(h?){e*:T*dK)+)*Ki(t^(p8)7x*Z6*4s(o:)~2(Y2).v({t)OP(c0)}d)e.)Fy)t4)qv)@@(_((U|)pm(~k){k*?&(tt+'Y([W*-!QR%tv%~ *.!&'%46%8HNUVp~ */!-:KQ_xz|%~ *0!&'%)+.%7:; *{])2N)Xt(oG)@O)8W(n,)7V)6,)+i*qc(of)73(j'*Fc*5u*_4(i_*<m)DJ*XV*@5(x,)FB)7P*&P*q`(^<)\\)*U;):\\*NB)4G*/G)_D)Y})hf)Jc)eh)+`*bT)CU)Uf)8o(at)d'*27(XN(vY*d>)_[)V@(b:(U=*t;*on*A})vM**-(]F(ou)<o*3h*(+)T?)Hr)J-(_*(dN)H))dF+1l*&S)ed)y3)ZR)hg)D3*eG++X)wf*<E*;i(el)FJ(U*(d?(ar)ts(d<(`C([_(Xm(YY*0!>AC%FHK%OS%UWX[]%`b%eghj%qsuw%{}~ *1!&'(*+/12457%=@B%FIJMOQ%SU%XZ\\^%befh%mqr )n-)|8*(B)SS*sS(a\\)j2(h;(Yr*31*<n*_o*oq)+_)/N)VB))`)>V*5c*nX)/})_>*.]*(^(_<)G[*(a*96(Tj*^p*eJ)An(VB*Ti)<V*3'(\\X)m;)bE(|C*_N)[L(Us)</*od)+l)?;(`1*KG)_J(ad)ez)i;)D|)vz*tZ(Tz*bA+,9)Vn(_N*XA(ez)78)gl*=T*t:+3p*mv(Wq*1)(_?)^P*rk(~Y*xf(eC(Vx)Y4)hj)K*)uG*{d)lV(`2)no)U=)F&(^9+4,*3((gD)}P)|,*1!svwy%|~ *2!(*%03%58=%@DEGIPQS%UWYZa%fhjoprtvwz{}~ *3!&+%.02%468%EH%MO%Z *r|(og)7L*r=)JK(vx):a*&5)ZN*rA*9m(cq*xe)+&)^d)9k(cs*DC++5+11)uh*tv*Z=*XB+0v)[D)xU)-9*r<)5J*~>(er*n7(Y,)?g(}!jf */V*DE)R6)-o)gA)Y|*/@)&9)8,(zz)Y~(d+(U^)9X)lb)6d*^X(Wa(Ve)ST*.P*Sw*>'*HJ*0?*`s*n})~d*~k*K}*>G)Tp*~P*.v(uU+1Y)gU)t6*Dv*~!6L (kb(et(pU(U]+1D(ce*_Y*54)ry*{g*F0)Yy*@k)C:)30)Zj*3![^_begj%oqrtv{ *4!'*%,0479:<=?IK%OS%Y\\cdfgjry{} *5!&)%,.%02367@BDF%HJ%VXY[^%`bd%hj *U4*9Y*;@)q2)Qs).d*<y)f>*:s*nt)Q;)si*my(c~*:p(^^)*,*V>*X8(U5)ge)E&)G_*dJ*tM)a4)SO)qI(xT*oB)Q/*0v)@p(|.(v-(x\\*q!7F (W'*=o*?J)Mp)px*o1)f.)H'(zo)qo*dn*uL*)3*`/*U'),b*'|)yP*N?)Sz*F^({})*1)HJ)q`*/6(^a(]r(b1(wD*/F*uM*:E):.)rk*Bv)yJ)X+)+/(uf*@i)^H)Qq)7))pX)>J)1/*qL)@W*H/+/s*nG(ej(g(*U7);~*5!kl%prtx%z} *6!()*-%13%68:<%>ADEG%JSU%Y[]%`bd%iklp%tvwy{}~ *7!&'%+-%25%8=>@%BDF%L )<&*C^)L>*6n)vk);o+'l)6|)Ci*<g(s'+1v)SY)Z_(|<*rB*To)c})E\\)71)d&(V=(v:)Q-(rk)BE)*D(bG)2|)Cf)q.)rM)d,)ze)7i(h<(fT*mS*b)(w7*.M)Qv(U0(uC*2F(tn(cf)l4*s[(m_)81*5<)0U*qH)Vy(ff*{V(^Q(yR*5((u{*tW(ZZ)T:(}A)7I(XB(cN*6M*`>)YR*A*)72)*c)vA)<b)93)/'(w3*dS+/o(}D)8`*2x({4(ig*o!KN )V()1()El)eJ(_P({8*7!MN%[]%_abdg%kn%svx| *8!'(%+./135%:=@D%GINRZ\\]_%cefhjl%np%wy{%~ *9!'(%.0 )7Q)T3)cy)60*ma*.W*5>)UO(^h),A(uA(ak)/D(u@)B-*DD)mC)8;)4[*)F*T^(h8)O9+/u)Pm*B{(fY([M)SR(ic*Y[)cJ))])/G)i>)77)9J)cj)-|)X4)U:)=T)[>)pq)vS)q<)lQ(`>(e8(U@)+4)?c*2`*4Z)6^(g1(`B)_0*Jk*Yx)T6(f|*4^(q**Ky*XT*r`*cz(XK)SI(jW)p_)te)6k)_{)[t)-Q*@D)H[)uX*&Y*6z)CI+0F)8x)v3(oR)tG*t})6!<n (aI)i=)Q7*9!12%48<%?BCGHJL%NPSWZ%]abegijny|} *:!()*-.01347>DGHKPU%XZ%\\^`acdfhj%nxy{~ *;!'(+-.2%;>?CEGLPR (i]*5i)mV)pG(cH)n)(\\y(}F*S)*&)([&)ce*~a*y_)ZA)k8)x9)<4)s3)7f*xq*X+(gl*35(U?(oM*:g*=p)*b(_`)kL*T((}T(oD)TQ*xg(wa)ti+'\\*_|*(E(`p)5m*nT(VZ*<B*>k*=L*?c(p^)Cr(n?)A^)Ub*U<)Bt)]E)C])OL)FI)56(v/(TI(_7)ZE)E^)S=(^B)HL(tm)Oy)lc)&a*5;+3<)?y)w!rk *~[*Xw(~.(UK(W<(f3(tw)tA(lV)Qt*_U),@)S+)T8*Sh)9H*;!STVWYZ]_%chj%nrw *<!,-%256:%@CDF%IK%MP%SUVY[]%ch%kqwz{~ *=!&')+,.013%68:<%>AE%GI%KN%P )0I)U9)d:)6)*m!Ax (cR*_R)~9(Vs*U1(Uk+1r*m!df (`g)[B*aB)UA*U?(qB)'F)O!2[ )E6(f_*6&*0t(rq*A6),w)6e)Ld*o:)>m)0])G?)s5(UA(Y1))/*v*)<Y*1g)&@(YX){S(_z*:r(TZ)/a){I*mY(Y>(VF)y^)i<(bL*:')=&)y5(|;)S/*u=*^e)R)(Zn(d5)WO)<{)Ad)R7)1E*xW*T[)*u)iD){=)yC(T^*b7)hd)RI(mo*cx)Ss*Y2(cI*Ea)C0*\\K(}M*~;)Wj*=!QRV%Z]%_a%cehj%msu%z|%~ *>!()%-3%:<%AC%EH%OQ%Z\\%`bg%jln%rtx%z|~ *?!(*,- (e3(wQ+3w*YJ(dq(nD*y.)D(*do)Sw(^4)mn)7])dq(`R(a^*/{)^o)o*(d*+0A)K-)uJ*s]*K^*13)`_)b:(^U)E_)k:(sc)=l(mL*Sf*{K)63*.o)1y)_o(sk(V!UN ).X*vy(W6*Sa(_v(uW*.E)5p(Va)@.)5**;M*?z*;x*Gv)ad)YN({p*.l(^c):()E`*3f*;N*IL(]7({1(uO*_B(U`)Rd(^1*LQ*^Y*q}*AI)if*nj*q?)VI*:S),n)<?)Tg*>2*6@++w(r6*X[(TO(dw*?!./%24%7;>@%GIKLN%QS%_abdf%hlmoqstv%y|} *@!&'*,-/%469:<?%CE%GI%SUVX%Z (WY)>^)G+(js(Tm):s*~d)6.(y+)ig*99)VL)Ho(\\e*<J)t7)C~(`S)SG*.K(\\9(i^)a.)}o)AB)h+*:Y)D.(}v(`:)aM*JI*q9*rK)<r*Xa*7,(i})R\\)5c*/o(rj(W_(i?*XO)A<(TP(|x*Kx)G|)8_)z,)_i*9T(bb*w/(|o(h:*b;*.g(u/*XJ*Eb*8!,- *Xf);J(|b)2x)V,)wh*S{)tl)l0(g&(Ws*\\G)W;(w;*._)x/)S6({X(x8)kp*4B)2u)Wa(so)k!u{ )d7(cV*/4*@![\\%ce%hjl%npqs%vxz%~ *A!&'%),%5=%AC%FJ%TVWY%\\^%bd%fh%prt%w{|~ *B!&' )qA)pt(a**4`(n_))P(tW)eZ)?_)Xp*T;(}=*De(cP)t()7h)@?(VT*yf*Dt({U*T*(eO)sp(Xa(}S*~@(v?),L)wd(sj(T\\)F2(Ux)7W*P[*`U(b')@x(j|(lZ*`:(Vi(Xo*eE*{E)Qo))J)/u({[*N@*T9)>1)5g*{k({?(|])9@(i'(e4)nq(^I*A+)E.)H4)PC)6U*^}(e1*82)Vt)m3(US*XN({')ao*BU)B!(p *0Z*FB+1k+2e(}c)Cm*`()FD)DD)5))|C(r])+L)>k)Zp*B!(),.%46%@C%IK%MOQ%SW%\\^`%fh%np%twxz|%~ *C!&'(*%02%57%E )0.(`Q*2C);Z*JN)l&))M)FF)7^*t`(e))c[*Te)R;)rH)z-(f2)s:*xZ*8<*TX)u1)CR)_C)?Q)<B(k})/O)y9(eU(Tc)P4*3c(|X(k*(mp(W!uw *{G));)Dc*2n)/4*xb*`9({B*Sy*TY):{*8x)=2(kD*:=*d9(Y`*)w*`W*(O(\\q(r))YG({v*T-*3`*dL*?M)~R*Dq*s!(, */&+&D)uj(~-)zv*`z*sD)x0(zi)8p)|x*@))H.(hX*/j)hq*)y*n[)5\\(q}(Vj({:(uF(r,*C!FGI%KM%QS%]_%bd%suw%~ *D!&'%+-%/1%@FGI%MO%QS%UW%^ )g')8/*[@*Z]*4R*:B)6o(eM)TE*d2(tP)/3)Rw(o0);P*X*)nv)Z((o>)MD)n;)[S*U8*Tl(oI)QO*Jp)v6)9Z(eV)_/)Rk(r0);0(q3)Ha*6m(hb*)-(ZH*\\V)Vo*YF)_m)9G)V>)Yl*/'*=g)Fv*`;)V{*rl*Se(t})d>*C1*6P)m`*PR)H0(`n*Zp*nk):/*xx*[9(iu(X5)C=(l})1U)V8(`](}N(tO)WE(rC)l-)kr)0E*84*5q)7{)DF*_s)qz*ZA*X4*mt))^(d;(f0)_E*D!acdf%lw%} *E!)*%-/1%69%=@AFHIMNR%TV%Z\\%^`cghmnp%ruwx{%~ *F!'(%*,%.17%9<%?ACF%HMNP%SVX )RG),4([3(VA)+C)8K*8g*`R)G**dB)sA(ei*n6)-H)|R)GP)8V)}f*.y)n&([N)6X(tZ*`G(_k)y;){G(n:)-v*`L)U~(}e(n[(em(]y)X>(mw)9`*xs*6Q*FW*LV*`8(e{(}t*79)7@)5t*5\\+0,*r6*~!8F )IU(ur)7=(i7)8'(gr*Et)U8(vw)k<*Jz)O|(t<*UW),l)Xo)gc*x](T~)_y({C)us)8N)AJ)p/)1K({R(wd(TM*6')Rq)gE(V5)Dn*09)-d)@C)CY).c(uQ(vu*F![]_abfh%jl%oqrtuwxz%|~ *G!&)%/3468%;=%?AC%HJKO%VXZ%\\^`%ch%jmoprsuw%{}~ *H!&(%.0%4 )(n).9(d'*vx*_n)Fx(n0(i()1_(U')[3*/5*:5*=q(vH(W!Ze (}C*.F)Ch*@r(fw)lL*4G(i{+'g(X/)Ww*Tw(|g)3>(cz)nj)Ws*D~)?)*qJ*.S(f?)zR*)a*q=(k(*1P)kD)8.*FY)VD){c)5-)?C(cv):@)S1))3(f`*m[(U9)Rh*TP(}P)@)*9c)H((f!B8 )Q+)Ox(V()8S(cW*8>(WH(Y7(oA)5&*tB)AT)d.(bg(ab)0x*TS)@])ai)Du*MR)u.)t2)A`(l)(f<*n{)d?*H!5679:>@%BDF%IKLNOQ%UW%Y\\%`d%jl%oq%tv%y{%} *I!&'%/1%46%9;%@B%IKN%QS%WZ )yx)0H))T)0b*6o(t;)1\\)aT)_q)YB)RW)dE)MH*K2))u(UM(xu(j<*n=)Tl*)R*s6)5+*.`)ru*Dr(c2*tb*_')Aw)&4(Y))eY(TQ(d\\(t5(ep)98*o)(]m(Vm++P*.>(gc*W}*J2*8W*qA)V1),c(y5)A.*r_)gj)fA(du*6L*{Z*10({a*r!mF *.Y)q8(dX*ow*{n)~l*Lp)XI(UN*1c)x6*TJ)1s(gx(V?*xY))?)L~(\\M(en*Ul*>1)u9*tH(`d(h@(m8*nZ)V+({l)Vi)AC*I![\\%hj%oqrt%vx%z}~ *J!&'%),%13468%>DEHKMOQ%TV%Z^adeghjl%oq%su%y{%~ *K!&(*%/ (|m(zm)FT*3s(iq)|~)>C)I|(V/)OY*G7*uv(c^)80);@*b0)?>*4E*Tt(^e)H1(d.*I0)4=)Sr)TP*U-(}V*BP*9v*nf)O5*_,)?R)/-).N(Yj*I|)@h*67)f<)1z(^@(`+(on)-F*b(*J**df)*g)D4)/Y(vG(]i(_i*4|(bp)S'*sa)aZ(WL(Yw*1-)C{(je*nb)y8*Jt*.}(rw)5(*tD*DN(k_*x[)-t*Su*?u*d+(e6)@6)*~)lY)0=**l(xA*/!+. *^S(jG({Z)1,)?m)g>*K!13%57%;=%@B%EHILMO%RT%VX[\\_%cefkln%twz%| *L!&')+%-/%57%;=@%DH%LN%PR%UX%[]%_ac *`A)oU)qi*.t*u_*BA(zv){:*t.*Iw(b3)a_).5)@5*TF(|Y*~9))))PB)Rb*S!jl *`B*_V(dA)7&+/!v} (fD(Tq*:+)cw*E7)&i*J7)VR*sb(g|(V.*Ss)`2(gh*qX)_a)WC)pi(Tk)tI*FT(~U),3*Nz*x|*q])^i)Sm(tj)9a)q|*J+)ZS*9:(qa)bL(dB)tO*s^(hS)-J)`Y({k*T~*~V)P<(tT+0&)y_)DM)6/(XQ)mE*0r)T`*r))R.(W+)mv(^G)Fj)Z}*a_*6B(uc)i~*L!de%lnoq%~ *M!&'%03%8:%MO%QSUWXZ%t );M(},*aD){W*U.(vN(gW*7y*<+*MT*26)IX(l<*2l)cU*eI(_)(UL*xU)9N(T`(eS)C1*5v(tB)VU(TF(sx(cJ):5*nK(Y&(WE*JA*xp(t]*a6)ys(V~*4t)m5)S0({S(v\\)-A)I-*Du(ZJ)):(UF)sq(Vy*9A)6T)@\\*ap(}~(VS)-]*7?*`p*3a)mO(V:*KY)26)P~).Q(U6)pc)Y:*TG*Sk*T!n5 ),?*22*1[*.h*;J*<'(mu)Pp*w,*r*(vo(e|*nP)W5({|*{C(}>),R*s-*M!uv%~ *N!&'%:=GM%OQ%SUWY%\\^a%df%hj%ln%y{%~ *O!&')%> (d&*:_)LN(x6+0g)+**/i*<u*>!./ *;|*G0*__*Xb)pa)-U*xv)uH)@i(h1)7O(XE*7<)ml)+N*sj*ZX*F;(g:)TH)V/)R?)0X(b/)k~)*l(WS)0y).r(}))l.*b4*ms)d~)Sg)X)*cv)CG(e!(P (X3*eD*TU(d~)*k*_S)W.(U{)p[)JU*DR)2A*8&(X;(Yg*`v++0)20)W!g^ *r{(Uu(wL*t,(TT(~+)y1({>*TQ*1L)gC(pi*9R*bG(e^*a&(j[)&=).,)2/)OD)e]*46*PQ*O!?@%^`%hj%~ *P!&'%@B%H )Up(|1*KZ*xd*Uv*~7+0*)WT(^p(]h(p-*J_(dU):S*_&(n)(f\\(nB)fR)Y(*/Y*_m*:?)2f)/Z*rX)C.*.@*Y!1j *mX(~_*(T)CF)1&*qT*2N(U~*bm(bh*r^(]f*_a*As*d1)AE*w.(ze(c,)tm)D')Fp(gt)^Y({g*^g(^Y(nd(g\\)=f)Ar*X!^C *5:*>v*aL*)6(_r*CH)E/)@2)\\.*E?*[v(lX*`X)ot)^Q)b\\*W|)7S(`3)TR*X<)/@(rv)3\\)C<*X`)5j(jS)Wm)Ck*^Q*P!IJ%PS%Z\\%~ *Q!&'%R *n;*qG)qh)F8)Jw(g6(U:)_:*T,);^)?-({<){J(Zj(|F)sI)QA*PA*(H)Sl)ph)?K*_()''(}Z*D,)F;(co)54)|F)XL*/>)L<)|M)-T)Zr),])9D)VK)D;(TN))X*X&(Vk*4D)o&*s9)7E)@v)6A)Sj*Xu)a7*0Q(]k*3d(eI*aM)6[(hD*F2*_**2;*nq*@o*_j)UU)h.)?A)q_)kZ)t\\*7t*Ww*m;(Y/)Dz)m]*T.*tK)8@*oH*r+*?i)84)r()-e)e\\(Uv)/F)>o)7Y)Ou)>:*Q!ST%uw%~ *R!&'%;=%[ ))o)mk*bW*S~*9d)E))>*(f5*FZ)ss*4&*5-)RH(U8*.a*3))q4)I5)PO)6*(Zl(Xf(n|)7q)Ot*Ye(eG)@1*.R).b)8+)9o*7!lm *0V))d)&,(`P)Aj)ya)z9*X()^t)mx)Yv)Si){X(Ts)p^).k*mR*JU*.b)yE*4C*eH(W!-R *8?(fl))&)U.*T0*(U*^^*3u))b(g=)pJ({P)A,*~n)hA)F]*Ev)Co)f=*T!\\? *`H)|f)_])a>)7.)s7(kx(U(*>a)E}(aj*E[*X.*nR)}e*R!\\]%{}~ *S!&'(*%\\inx *T!+4Nm *U)(X1)T=)x.*~E)6V)cH)7g(TY)tK*^V)<]*XZ*&()GC)*s*KJ(uS)<K(sm)d{)I6*o&*`5*XX(oC*/A*Tj(_9)8Z)7C(cb)G&)i**:o*cy(i=)r')^W)UF(^E(gS*XD(vs)Yc)Vg(zl**)(Vh*(-)Yk(z`*7c)WW(zg+&t)HV*Zx({N*/=)/m*.O*b?*Xp(tu):,)yW*YZ(ca)?q)x'*T)*r1*.^*mn*-u(k{*d])C>*0R(|h*aT)@q)).(X2)Ej([1(X>(o3)+=#2$*U!CD%KM%PSUVX%_a%df%kn%tw%} *V!&'%)-%3568%:=?%EG%IK%_ (Uz(TR(]e(TV),<(cT(T[(V,(Td+'J(z|(lW(Tn)y2(U,(b}(U4(tS)cY(c})Qp(mt*4h*{l)Q3)re+2\\(T|(V3+2U(U!IV (V'*9O(zk(ie(kV(VX(d!CSY[d *uP*X](c)(eR(c!5=M *X\\(c!ur (_!u{ (`!(GMYZfx{v *?`(a!>CBQT (^N*0<(V!OW]V|u (W&(Vr(W!V.] (XF(W!0`bDf (X!@I )>3(X!<? *V!`a%~ *W!&'%f (X!A9 (W!mx (X!XVskeq`] (Y3(X^(Y5(Xv(Y!oqsNcleZh (Z!(Y| (Y|(Z!\\?^].L<UX ([U(Zs([,(Z!x~ ([!CR|~ (\\!'8T (]+(\\!kjdl (]!,0 (Vq)RD(X!:G (YW+43)RM*'}(^:))E+1g*{m(^M(t:(b!au *O((bx(_^(t?(]z(V4(]{(VG*JL*K)(VI*5?*KW)xQ(zD*I:*1G(^!w} (_!0/ *W!gh%uy *X!QRW_eh%jlnoqrx%~ *Y!&')*-%03%79:<%EG%IK%WY]^`bdg%iln%qtwy%{ (_:(^!bnq *S!]cdgqrt *T!&'/326%8:<=@CDHLMRTWZ]`cdfhkpsuvx%z} *U&*T|*U!(*%,02569:=>@A (cx(d0*q!lqp *r'*qy*r!328?JU]bhj~ *s!*4M *a!vz|x *b!2':9<@ *Y|*Z!&'*.%03%57;<>%@BDJL%RT%VY[\\^%ac%jnor%vy{~ *[!'()+%-01348:;A%EH%MO%Z\\]_`cf *b!>6UKDVJMYlhb]aqu *c!+1OKP^\\fps (`'(th(a!cmn (b&(hQ(b!8>X (e<)be)s[),1(_!ho +'G(dl),>)lW))7(o/(p!3+ (rV(s!;DP (n!ehfoujk (o?(n!w~ (o!LhNi_^KPYV (p!7. (oo(p!<Y1> (ov(p!*_bdc\\B~y (q)(p!ng *[!hjl%prsuw%y{}~ *\\!&'%*-%/1%79;%FIJLMO%UW%ik%~ *]!&' (q!<>. (pw(q!1OJuQ (r!=DYarX *{}+2^)4t*9!@DFVQoKUX^`r *:!&, *9w*:!68Q *9!_~u *:!9:/ *9!p{hqf *:!2< *9k*:!OweR}uJb@FziA *;!&/ *:t*;!)* *:!NC *;!1fpq *:v*<N*;!QIF *<W*;!sDd\\XtU,uBOH{z *]!()%~ *^!&'%. *;!}0~ *<!(&)*l4op\\fOXA8re9t7TZdvx} *=!dH; (q8*=!{n@`9 *>!&B *=!ti7Brf[\\M( *<|*>0*=!SD *>!f[dc} *?!89+:) *>!FPs *?!'=? *>!;w *?!r~ *@!(> *?n*@+*?!{pk *@8*?!RjeH *@!=;d )kc*A7*@H*A8*@w*A9*^!/0%OTjv| *_!.1%35%8;=%@C%FHIK%MPQTWZ%^`cghkqrtx} *`!')*,%.2%467?@DFKMP *A!U: *@!WT *A!XGgc]y )s0*A!Bqz *B!JN-5 *Ax*B!TB+_]Vyg *C!)LtRvc *D0),!;E (t!bg *2m(t{(u'(t~(bw(}!'*19 )5h)6!-b~ )7!4DAX )83)7`)8!J\\T )9e):U)9!)2Fl )8~)9!dB )8z)9!ft ):!QW?^ )9|):!=- );X)9!~v );!KG ):!jz );&):k);!,'d )<1);s)<C*`!QT[%]_%dh%loqruwx{}~ *a!'(%+-3%589;%@CEFH%KN%RU%[]`c%fhik%oqsuwy{}~ *b!&*+-%/138=BCEF )<!'deFgm} )=!+86]y )>)),H).])ko),N(cn(e!NZFEXosc (f!OV%XZG (e~(f![]'6 (g!-? (f!{uh (g!EF/ (f!zj (g!H{Xm_}RQ~ (h&(fv(gN(h'(g!fjw (h!+,. (g!TUO (h/(gz(h!0m9rOfEtuacy| (i`(j!/U (i!Bf:N8I5 *b!HILNOQ%SXZ%\\^%`d%fi%koprtv%y{%} *c!&'%),%.02%EG%JL%NQ%[]_%eg%oq (i!0On%p,)U (j!+r (i|(j!QY( (iz(j?(iw(j!v1 (it(k&(j!]^49 (k!1> (ji(kf(jq(k!23 (jt(k-(j!}d (k!6,9: (j!lm (k!/<+ *^~(k!eOSHkjEGnt (l!F'E (ks(l!;PGJ:BtR_Yijs (m!(Dilrv (n!1'5;@FEX ))!Wa\\Yy )*!*+ *c!rtu~ *d!'(%*,-/034:%<?AGN%PT%XZ\\^bcg%mp%ux%} *e!&'+%.1%46%ACFKM%VX%` )*!&3CJMP (~!8&9<B4DE=FHaNiXW]Omcp~ )&7(~w)&!8UVzy )'()&!wqYn )'!R8.7fUiWeEDcn| )(!:> *U~)(!Xf )-!W[fkmpy} ).!'38@G *J@)-E)d!ruy|} )e!/-:9>T[U^`cm_of *e!ab%~ *f!&'%g )eg)f!*&4 )ev)f!10(5L8?KDc`js )g!&)8 *8;(tK*yn(t!J( *{!8<%AILRUY\\_befh%j )*o)+')*z)+!,;6OKTI *XS)+!hgq~ ),'*73).!OTaZ )/5).y)/6).!lo )/!078 ).!ux )/!*KgXMA?[]<qS )0!QRTS )/t*f!hi%~ *g!&'%<>%VX%p )0!CVos )1-)0!v\\ket )1!l;1]XFZ4 )2!GM<J )1t)2!'5Rq )3!Czbu )4!,Ij ).h*sP*q!8:@BDEKMRSUWY%\\^ad%fhi (Tr)c])51)R!<[cQ )S!Q3>B: )R!op{} )S!4W~ )T))S[)T!LMF, )S`)T!5+O@C )S_)T!(DS *g!qr%vx%~ *h!&'%79%y )U5)T!|a )U!?D )T!\\Ync )U!'I*1 )To)U!KNP/ )V4)Uk)V!AC )UZ)V!67 )U!X\\x_ )Wd)V!jh )W!(X )Vb)W!*[0' )V|)W`)VN)WV)VQ)Wu)X!_?\\ )YJ)X!PwDE )W!|o )X5)Y!wI0x )Zl)Y!z=?USOoLg'Z7 )[!H,- )Z!cT8nu )[!1Z )Z!iHh )[!osr^Xb` )\\^*h!z{%~ *i!&'%TV%~ *j!&') )\\!V4FCOn{km| )]!NWOmi )^!*9 ({!7;LJ\\o )l,*~h);:(|!BL *L\\(|N*[<*Qv*_!Gdfv *`&*_!uzw *`+*_y*`!=<C^IENYmneg| *a!01/G7A: )BP*a!S\\agbj )-!4;:< (}@(gV(}!U^ ({((}!hk *1K),!gfj *9;),y+'S(}s(u!NPZvwp *j!*+%LN%~ *k!&'%.0%2 (ud(v>(u!xkq (v!F& (u|(v!K2yzQ|WLm (w'(v}(w!MO,>.[ (x)(w!epW} (x7*4p(x!l]9< (y!'T (xt(y!;= (xz(y!ILZ?OAEr (z!'&BGP (|!sz (z!ju ({*(z!acr *~!?ABDIGJKORTZ\\]`be%gijlmoq *.!9;=?BC *k!34%:<%~ *l!&'%: *.!GJXZ%\\cefjnquz{ */!),/023N7;<?B%DHILMPRSXZ]\\`b%hk%np%tv )*i)l|)(|)l;*at)g!HKh\\Y )h0)g|)h2)g!qmz )h!*)F: *x\\)h!kJH? )gt)h!Sp )i!2c.-0864 *l!;<%IK%vx%~ *m!&'%7DIKz *n!)-.4@Uvz )h!|{ )i!Id_]a )j&)iu)j!-K=/06:MWX?V )k()ji*v!|}~ )D!18C-N )E1)D!lOX} )E3)DZ)E!4*9 )D!p\\a )E|)F<)Ed)F=)E!u< )F?)E!eAf?i )F3)E!ODn )FA)EM)F!0ef )G!:;(< )Fw)G!>] )FP)G!/@ )Ft)GA)F!sq}|\\ )H6)G!iNQmE )HC)J=)H})I!GH )Hz*o!(4>DILV[aouvx%~ *p!&(%s )IL)Hq)I!3) )J&)Hd)I8)J@)Ia)J/)Ij)J!,S:OgG )I\\)KB)J!VW )KD)J!X52Hjv )K1)J!z| )K!J'7@U )Jd)KV)J\\)Ku)LL)Kc)L!45 )M))Kh)L!a[ )Md)L!mxR )M!R= )L!ZEu )M!@UTm[o )f!Je )P!:;@=KLFSTZc *^!UW[%]_`bacdfhklnqu *p!tu%~ *q!&'%6;NVbgjmor%xz%|~ *r!&-%0479@DEG%IL%PR%TVY[\\ac%gin%z} *s!&' *^!wxy *_!)+ *\\j)5!'37;>=A@H *7`)k!EJUegi )>/)@!789Sb )DW)@!L^I )^`)C5)@!f}z )A&)@~*2<)A!OD1?FQGgt| )B!>4Urs} )C'*X!236;=@EFHIGMUY *N!AD%FH%K )d!3d )c{)d!+4CDIPRTW )7r)8C)9h*s!)+.%02378:%CE%LNOQRTUWX\\_`eghmnpqs%|~ *t!&'%+/%24%689<>%ACFGIN%PT%VXY[%_acd );E)=,*2:)Q!JS]UYegfmux%z )R!(0+19 )>!0Pf )c!kptN *DV(`0*3!|yp *4@)CH*4!A5/18;k%n_FH]Q[ )CN*4!aouxq *5!89 *4v*5')CS*5=*Ue*5!aIWC]sw~ *6!F+,C2;NO?9 (q~(xw*6!ZTc )Ym*6!u| *7E)Cd*7!C4 *t!ef%moprsuw%{~ *u!&'(*%<?@BCEGHJNOQ%SU%]`b%fh%oq%uwy%{~ *v!'()+%/ *7:*6x)O!6IKUXk *y!XYZ\\`a )Pl),})P{*Nm)?2+3=)?!5^hfenptx )^![wqx )_!=B9-3jL )`!9<?XZ )a!C,8 )`n)aB)`s)a!HJh )b!*, )a!xp )b!WK^p )c!;F )^G)`A)a6)b0)5!ZY_de )w!ejps )x!,- )w})x!+3(1@8KV[kx )y+).!\\[ *v!01346%<>@BCEG%wz *w!'(%+-0%G )/n)0!63@ )/s)0!2< )1+)2!-4 )3!+wk )4!@F{ *3!]\\ )SA)TK)WF)t!+-5>LMF )?M)t!bQRn%pTqZaX^ )u!*I23 )t[)u,)t|)u!(Fwovcx} )v!&5<(W\\Lou )w/)vw)w!=NH^ +4.+2!>@A )q!1DM9GHZbYmfux )r!78.*AO *w!HI%~ *x!&'%N )r!ILftdgsx )s!-.>CK )l!7=KHEXov )m'*0!@IG *Oi*0!P\\Yaif )p!f~ *Ii*m!89:>=?@BCGJHM%OVW^]`_bcegi%moprw{%~ *n!&'(*%,/%13258%:<>?ABD *x!OP%Tknruy *y!*/%TVW[]^b%dg%mp%~ *z!&'%5 *n!CEHIM%OQSVWY]\\`acdg%il%pruw%y| *o!+,*-2357%9=?@C6E%GJMOPS%UW%Z\\_`^bce%mpr%t; )s!uz *sf)y!Me[c~ )'A)y!{z )z!=3 *z!67%:<=?%[]%~ *{!&'(+%79;HMNPSWX^ )z!XVp +1m*{z){6)oz)p!',2= )k!46 )l)+/!prx%| +0!)(-/.01589;=%@BCEHLNQ%SUZ]%chdj )m!68:DAPGWX\\hUTgfzq )n!.31/62N<GJ[KPWbUpc`d *{!aco%y{|~ *|!&'%u )nf)o.)n!mk )o2)n!x{ )o!1'50 )n~)o!?PFNH]a *1Y)|S){!>?FLN[lfrnsy *J!BGP[]` *K!'K<ANgShjv *L!F( *Km*L**Ku*L!ME?G6`Wbm *M!9N )m/*4i)p!KM )sj*2!HJLRVX[%]_^gAky| *3!*/FN *MV*x!X`c *|!vw%~ *}!&'%| *x!ilmotz{~ *y!&(),- *D!AH`bsnpo *E!C(&G8B>E.DQ_PiKULJdjO *F!+34/5 *Ek*FU*Ey*F6*E!zsl *F!EI:JLOKe}`gp\\ *G!'1 *F!vsky *G!(k *Fd*G!fgdIY5Wt<LeMBN| *H!?8b *}!}~ *~!&'%5<MSWX^_cps%y|%~ +&!&*,.%0457%;>%ACE%HJ%OQS%VX%[]_a%ikm%su%w *HV*G!qn *H!=' *Gl*H!;u<EC[cMaPZkzp~ *I!MJ5ARXps */w*0!*,- *80)|!gjupq )}))|w)}?)||)}![L>-BE498GR2lnY )~0)}!`qt )~!)6 )}v)~!-,KabsgXc@eW]fo *&3)~|*&!.?<GHLn`^qxm +&!xz%~ +'!&(%*,%68%:<%FHIK%RU%X^b%dfhjkm%~ +(!&'%: *'!(3/AJI *7!wz{}e *I{*8!ABCMOHKX[ST^dikoz *9!&/ *J!\\cf *K!]d *M1*1!,.6>?A *(,)>D*(!AMLNRblmqw|}xu *)!.? *95)B?*1!N]dtpux} *2)*)O**u*+!KS *-:*.5+1!VR *Xs*Y!+;8X *X!gm *U!RT *c!w}{| *d8+(!;<%~ +)!&'%A *d!65D=CQRFHM`Ydaevw~ *e!()*0/5 *U`+0u*Y_*Z!9S *[!N^ *Y!\\fcak}~ *Z!(, *Y!uv *Z)*Ym*Z!:EF1GI2WKbkmz|q} *[!/5.*2&>67FG?ekqdiz *\\!+0,8: *V!*4<7JF )?=*N!PXTV +)!BC%~ +*!&'%H *N!_ei *O_*R<*u>*t!-73JELSRnqt *u)+3!loq%vx +2!CPR *s!VYZko )sM*s}*g!Ww *h8*iU*j(*k/*jM*l!Jw ++!369%< )zB++!?BD%FHINOR%WY%]_abd%kn%qx%{~ +,&+*!IJ%~ ++!&'%/12478=>@CGJ%MQ^`cmr%v|} +,!,-56;<'%+.%02%478:= *u!gp|} *v!&A=5DF *~!{z +&(+0O+&!'+-2163<=B +'!][_a`ei *yo*z!;\\ *{!*) +&!PRW`\\l^jy +'!'+7; +1![\\ *-.+0!y~ +1!&)0 *k;+1!;=y%{~} +2!'.,*/4gqt~| +3!)*0 +,!>?%~ +-!&'%~ +.!&'%~ +/!&'%ntw~ +0!'+237DGI%KMPTV%Y\\efik%twxz%} +1!'(*%/2%:<>%CE%QS%UWXZ]%ac%fh%jnpqs%uwx| +2!&()+-0%35%=?BD%OQTVWY%[]_%dfh%prsu%{} +3!&(+%/1%;>%jmny%~ +4!&'%+/%14%8 .*f.+!Zv .,!oy .-!;<%>@BCGN%PRSV%X -R!XY%~ -S!&'%N")); + var gbk = src(gbk_us); + return gbk; + }(); + + var gbk_build = GBK$1; + + return gbk_build; + +}))); \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/utils/print/printerjobs.js b/LA24030_LuLiPackageLine_Pda/utils/print/printerjobs.js new file mode 100644 index 0000000..75618b2 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/print/printerjobs.js @@ -0,0 +1,460 @@ +const commands = require('./commands'); +const gbk = require('./gbk'); + +const printerJobs = function() { + this._queue = Array.from(commands.HARDWARE.HW_INIT); + this._enqueue = function(cmd) { + this._queue.push.apply(this._queue, cmd); + } +}; + +/** + * 澧炲姞鎵撳嵃鍐呭 + * @param {string} content 鏂囧瓧鍐呭 + */ +printerJobs.prototype.text = function(content) { + if (content) { + let uint8Array = gbk.encode(content); + let encoded = Array.from(uint8Array); + this._enqueue(encoded); + } + return this; +}; + +/** + * 鎵撳嵃鏂囧瓧 + * @param {string} content 鏂囧瓧鍐呭 + */ +printerJobs.prototype.print = function(content) { + this.text(content); + this._enqueue(commands.LF); + return this; +}; + + +printerJobs.prototype.printQrcode = function(content) { + + if (content) { + const cmds = [].concat([27, 97, 1], [29, 118, 48, 0, 30, 0, 240, 0], content, [27, 74, 3], [27, 64]); + this._enqueue(cmds); + this._enqueue(commands.LF); + } + + return this; +}; + + + +/** + * 鎵撳嵃鏂囧瓧骞舵崲琛� + * @param {string} content 鏂囧瓧鍐呭 + */ +printerJobs.prototype.println = function(content = '') { + return this.print(content + commands.EOL); +}; + +/** + * 璁剧疆瀵归綈鏂瑰紡 + * @param {string} align 瀵归綈鏂瑰紡 LT/CT/RT + */ +printerJobs.prototype.setAlign = function(align) { + this._enqueue(commands.TEXT_FORMAT['TXT_ALIGN_' + align.toUpperCase()]); + return this; +}; + +/** + * 璁剧疆瀛椾綋 + * @param {string} family A/B/C + */ +printerJobs.prototype.setFont = function(family) { + this._enqueue(commands.TEXT_FORMAT['TXT_FONT_' + family.toUpperCase()]); + return this; +}; + +/** + * 璁惧畾瀛椾綋灏哄 + * @param {number} width 瀛椾綋瀹藉害 1~2 + * @param {number} height 瀛椾綋楂樺害 1~2 + */ +printerJobs.prototype.setSize = function(width, height) { + if (2 >= width && 2 >= height) { + this._enqueue(commands.TEXT_FORMAT.TXT_NORMAL); + if (2 === width && 2 === height) { + this._enqueue(commands.TEXT_FORMAT.TXT_4SQUARE); + } else if (1 === width && 2 === height) { + this._enqueue(commands.TEXT_FORMAT.TXT_2HEIGHT); + } else if (2 === width && 1 === height) { + this._enqueue(commands.TEXT_FORMAT.TXT_2WIDTH); + } + } + return this; +}; + +/** + * 璁惧畾瀛椾綋鏄惁鍔犵矖 + * @param {boolean} bold + */ +printerJobs.prototype.setBold = function(bold) { + if (typeof bold !== 'boolean') { + bold = true; + } + this._enqueue(bold ? commands.TEXT_FORMAT.TXT_BOLD_ON : commands.TEXT_FORMAT.TXT_BOLD_OFF); + return this; +}; + +/** + * 璁惧畾鏄惁寮�鍚笅鍒掔嚎 + * @param {boolean} underline + */ +printerJobs.prototype.setUnderline = function(underline) { + if (typeof underline !== 'boolean') { + underline = true; + } + this._enqueue(underline ? commands.TEXT_FORMAT.TXT_UNDERL_ON : commands.TEXT_FORMAT.TXT_UNDERL_OFF); + return this; +}; + +/** + * 璁剧疆琛岄棿璺濅负 n 鐐硅,榛樿鍊艰闂磋窛鏄� 30 鐐� + * @param {number} n 0鈮鈮�255 + */ +printerJobs.prototype.setLineSpacing = function(n) { + if (n === undefined || n === null) { + this._enqueue(commands.LINE_SPACING.LS_DEFAULT); + } else { + this._enqueue(commands.LINE_SPACING.LS_SET); + this._enqueue([n]); + } + return this; +}; + +/** + * 鎵撳嵃绌鸿 + * @param {number} n + */ +printerJobs.prototype.lineFeed = function(n = 1) { + return this.print(new Array(n).fill(commands.EOL).join('')); +}; + + +/** + * 璁剧疆鏀惧ぇ鍊嶆暟 + * @param x 0-7 瀛楃瀹芥斁澶у�嶆暟 + * @param y 0-7 瀛楃楂樻斁澶у�嶆暟 + */ +printerJobs.prototype.setCharacterMultiple = function ( x, y) { + this._enqueue([0x1d, 0x21]); + if (0 <= x && x <= 7 && 0 <= y && y <= 7) { + var cmd = x * 16 + y; + this._enqueue([cmd]); + } + return this; +}; + + /** + * * 鎵撳嵃浜岀淮鐮� + * @param content 鏉$爜鏁版嵁 + * @param barcodeType 鏉$爜绫诲瀷锛� + * 0锛歅DF417锛� 1锛欴ATAMATRIX 锛� 2锛歈RCODE銆� + * @param param1锛宲aram2锛宲aram3 鏉$爜鍙傛暟锛� + * 涓変釜鍙傛暟琛ㄧず涓嶅悓鐨勬剰鎬濓細 + * 1. PDF417 + * param1锛氳〃绀烘瘡琛屽瓧绗︽暟锛�1<=n<=30銆� + * param2锛氳〃绀虹籂閿欑瓑绾э紝0<=n<=8銆� + * param3锛氳〃绀虹旱鍚戞斁澶у�嶆暟銆� + * 2. DATAMATRIX + * param1锛氳〃绀哄浘褰㈤珮锛�0<=n<=144(0:鑷姩閫夋嫨)銆� + * param2锛氳〃绀哄浘褰㈠锛�8<=n<=144(param1 涓� 0鏃�,鏃犳晥)銆� + * param3锛氳〃绀虹旱鍚戞斁澶у�嶆暟銆� + * 3. QRCODE + * param1锛氳〃绀哄浘褰㈢増鏈彿锛�1<=n<=30(0:鑷姩閫夋嫨)銆� + * param2锛氳〃绀虹籂閿欑瓑绾э紝n = 76,77,81,72(L:7%,M:15%,Q:25%,H:30%)銆� + * param3锛氳〃绀虹旱鍚戞斁澶у�嶆暟銆� + * + */ +printerJobs.prototype.printQrcode = function (content, barcodeType, param1, param2, param3) { + var str = content; + var length = str.replace(/[^\u0000-\u00ff]/g, "aa").length; + this._enqueue([0x1d,0x5a]); + this._enqueue([barcodeType]); + this._enqueue([0x1b, 0x5a]); + this._enqueue([param1]); + this._enqueue([param2]); + this._enqueue([param3]); + this._enqueue([length%256]); + this._enqueue([length/256]); + this.print(content); + return this; +}; + +printerJobs.prototype.queryStatus = function () { + this._enqueue([0x10, 0x04,0x02]); + return this; +}; + +/** + * 娓呯┖浠诲姟 + */ +printerJobs.prototype.clear = function () { + this._queue = Array.from(commands.HARDWARE.HW_INIT); + return this; +}; + +/** + * 杩斿洖ArrayBuffer + */ +printerJobs.prototype.buffer = function () { + return new Uint8Array(this._queue).buffer; +}; + + +/** + * CPCL鎵撳嵃 + */ + +/** + * 璁剧疆鏍囩瀹介珮 蹇呴』鍦ㄥ紑澶磋缃� + * width:80mm 涓�576锛�58mm涓�384 + */ +printerJobs.prototype.label_set_page = function (width,height) { + var content= "! 0 200 200 " + height + " 1\r\nPAGE-WIDTH " + width + "\r\n"; + console.log('page鍐呭锛�') + console.log(content) + this.text(content); + return this; +}; + +/** + * 鎵撳嵃琛ㄦ牸 + * lineWidth:杈规绾挎潯瀹藉害0-1 + * top_left_x:宸︿笂瑙扻鍧愭爣 + * top_left_y:宸︿笂瑙扽鍧愭爣 + * bottom_right_x:鍙充笅瑙扻鍧愭爣 + * bottom_right_y:鍙充笅瑙扻鍧愭爣 + */ +printerJobs.prototype.drawbox = function (lineWidth, top_left_x, top_left_y, bottom_right_x, bottom_right_y) { + var content = "BOX " + top_left_x + " " + top_left_y + " " + bottom_right_x + " " + bottom_right_y + " " + lineWidth + "\r\n"; + this.text(content); + return this; +}; + +/** + * 鏍囩鎵撳嵃 蹇呴』鍦ㄧ粨灏捐皟鐢� + * @param horizontal 0:姝e父鎵撳嵃锛屼笉鏃嬭浆锛�1锛氭暣涓〉闈㈤『鏃堕拡鏃嬭浆180掳鍚庯紝鎵撳嵃 + * @param skip 0锛氭墦鍗扮粨鏉熷悗涓嶅畾浣嶏紝鐩存帴鍋滄锛�1锛氭墦鍗扮粨鏉熷悗瀹氫綅鍒版爣绛惧垎鍓茬嚎锛屽鏋滄棤缂濋殭锛屾渶澶ц繘绾�260mm鍚庡仠姝� + */ +printerJobs.prototype.label_print = function (horizontal, skip) { + var horizontal1; + var str; + switch (horizontal) { + case 0: + horizontal1 = 0; + break; + case 1: + horizontal1 = 1; + break; + case 2: + horizontal1 = 2; + break; + default: + horizontal1 = 0; + } + + if (skip == 1) { + str = "PR " + horizontal1 + "\r\nFORM\r\nPRINT\r\n"; + } else { + str = "PR " + horizontal1 + "\r\nPRINT\r\n"; + } + this.text(str); + console.log(str) + return this; +}; + +/** + * 鎵撳嵃涓�缁寸爜 + * @param start_x 鎵撳嵃鐨勮捣濮嬫í鍧愭爣 + * @param start_y 鎵撳嵃鐨勮捣濮嬬旱鍧愭爣 + * @param text 瀛楃涓� + * @param type 鏉$爜绫诲瀷 + * 0锛欳ODE39锛�1锛欳ODE128锛�2锛欳ODE93锛�3锛欳ODEBAR锛�4锛欵AN8锛�5锛欵AN13锛�6锛歎PCA + * ;7:UPC-E;8:ITF + * @param rotate 鏃嬭浆瑙掑害 0锛氫笉鏃嬭浆锛�1 鏃嬭浆 + * @param linewidth 鏉$爜瀹藉害 + * @param height 鏉$爜楂樺害 + */ +printerJobs.prototype.drawBarCode = function (start_x, start_y, text, barcodeType, rotate, linewidth, height) { + var str1 = "B"; + if (rotate) { + str1 = "VB"; + } + + var st1 = "128"; + if (barcodeType == 0) { + st1 = "39"; + } else if (barcodeType == 1) { + st1 = "128"; + } else if (barcodeType == 2) { + st1 = "93"; + } else if (barcodeType == 3) { + st1 = "CODABAR"; + } else if (barcodeType == 4) { + st1 = "EAN8"; + } else if (barcodeType == 5) { + st1 = "EAN13"; + } else if (barcodeType == 6) { + st1 = "UPCA"; + } else if (barcodeType == 7) { + st1 = "UPCE"; + } + + var content = str1 + " " + st1 + " " + linewidth + " 0 " + height + " " + start_x + " " + start_y + " " + text + "\r\n"; + + this.text(content); + return this; +}; + +/** + * 鎵撳嵃浜岀淮鐮� + * @param start_x 浜岀淮鐮佽捣濮嬩綅缃� + * @param start_y 浜岀淮鐮佺粨鏉熶綅缃� + * @param text 浜岀淮鐮佸唴瀹� + * @param rotate 鏃嬭浆瑙掑害 + * @param ver : QrCode瀹藉害(2-15) + * @param lel : QrCode绾犻敊绛夌骇(0-20) + */ +printerJobs.prototype.drawQrCode = function ( start_x, start_y, text, rotate, ver, lel) { + var str1 = "B"; + if (rotate != 0) { + str1 = "VB"; + } + var content = str1 + " QR " + start_x + " " + start_y + " " + " M " + " " + 2 + " " + "U" + " " + ver + " " + "\r\n" + "MA," + text + "\r\n" + "ENDQR" + "\r\n"; + + this.text(content); + return this; +}; + +/** + * 鎵撳嵃鏂囧瓧 + * + * @param text_x 璧峰妯潗鏍� + * @param text_y 璧峰绾靛潗鏍� + * @param text 瀛楃涓� + * @param fontSize 瀛椾綋澶у皬 20:20鐐归樀 1锛�16鐐归樀锛�2锛�24鐐归樀锛�3锛�32鐐归樀锛�4锛�24鐐归樀鏀惧ぇ涓�鍊嶏紱5锛�32鐐归樀鏀惧ぇ涓�鍊� + * 6锛�24鐐归樀鏀惧ぇ涓ゅ�嶏紱7锛�32鐐归樀鏀惧ぇ涓ゅ�嶏紱鍏朵粬锛�24鐐归樀 + * @param rotate 鏃嬭浆瑙掑害 0锛氫笉鏃嬭浆锛�1锛�90搴︼紱2锛�180掳锛�3:270掳 + * @param bold 鏄惁绮椾綋 0锛氬彇娑堬紱1锛氳缃� + * @param underline 鏄湁鏈変笅鍒掔嚎 false:娌℃湁锛泃rue锛氭湁 + * @param reverse 鏄惁鍙嶇櫧 false锛氫笉鍙嶇櫧锛泃rue锛氬弽鐧� + */ +printerJobs.prototype.drawText = function ( text_x, text_y, text, fontSize, rotate, bold, reverse, underline) { + var st1 = ""; + if (rotate == 0) { + st1 = "T"; + } else if (rotate == 1) { + st1 = "T90"; + } else if (rotate == 2) { + st1 = "T180"; + } else if (rotate == 3) { + st1 = "T270"; + } + var rev = 0; + var und = 0; + if (reverse) { + rev = 1; + } + if (underline) { + und = 1; + } + var st2 = 24; + var st3 = 0; + if (fontSize == 20) { + st2 = 20; + st3 = 0; + } else if (fontSize == 1) { + st2 = 55; + st3 = 0; + } else if (fontSize == 2) { + st2 = 24; + st3 = 0; + } else if (fontSize == 3) { + st2 = 55; + st3 = 11; + } else if (fontSize == 4) { + st2 = 24; + st3 = 11; + } else if (fontSize == 5) { + st2 = 55; + st3 = 33; + } else if (fontSize == 6) { + st2 = 24; + st3 = 22; + } else if (fontSize == 7) { + st2 = 55; + st3 = 77; + } + var content = "SETBOLD " + bold + "\r\n" + "IT " + rev + "\r\n" + "UT " + und + "\r\n" + st1 + " " + st2 + " " + st3 + " " + text_x + " " + text_y + " " + text + "\r\n"; + + this.text(content); + return this; +}; + +/** + * 鎵撳嵃鍙嶆樉 + */ +printerJobs.prototype.inverse = function ( var1, var2, var3, var4, width) { + var str1 = "IL"; + var x0 = var1; + var y0 = var2; + var x1 = var3; + var y1 = var4; + var w = width; + if (var1 == var3) { + x0 = var1; y0 = var2; + x1 = var1 + width; + y1 = var2; + w = var4 - var2; + } + var content = str1 + " " + x0 + " " + y0 + " " + x1 + " " + y1 + " " + w + "\r\n"; + + this.text(content); + return this; +}; + +/** + * 绾挎潯 + * + * @param lineWidth 绾挎潯瀹藉害 + * @param start_x 绾挎潯璧峰鐐箈鍧愭爣 + * @param start_y 绾挎潯璧峰鐐箉鍧愭爣 + * @param end_x 绾挎潯缁撴潫鐐箈鍧愭爣 + * @param end_y 绾挎潯缁撴潫鐐箉鍧愭爣 + * @param fullline true:瀹炵嚎 false:?铏氱嚎 + */ +printerJobs.prototype.drawLine = function ( width, x0, y0, x1, y1) { + var content = "LINE " + x0 + " " + y0 + " " + x1 + " " + y1 + " " + width + "\r\n"; + + + this.text(content); + return this; +}; + + + + + +/** + * 娓呯┖浠诲姟 + */ +printerJobs.prototype.clear = function() { + this._queue = Array.from(commands.HARDWARE.HW_INIT); + return this; +}; + +/** + * 杩斿洖ArrayBuffer + */ +printerJobs.prototype.buffer = function() { + return new Uint8Array(this._queue).buffer; +}; + +module.exports = printerJobs; diff --git a/LA24030_LuLiPackageLine_Pda/utils/print/printerutil.js b/LA24030_LuLiPackageLine_Pda/utils/print/printerutil.js new file mode 100644 index 0000000..c541aae --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/print/printerutil.js @@ -0,0 +1,91 @@ +// 鎵撳嵃鏈虹焊瀹�58mm锛岄〉鐨勫搴�384锛屽瓧绗﹀搴︿负1锛屾瘡琛屾渶澶氱洓鏀�32涓瓧绗� +const PAGE_WIDTH = 384; +const MAX_CHAR_COUNT_EACH_LINE = 32; + +/** + * @param str + * @returns {boolean} str鏄惁鍏ㄦ槸涓枃 + */ +function isChinese(str) { + return /^[\u4e00-\u9fa5]$/.test(str); +} + +/** + * 杩斿洖瀛楃涓插搴�(1涓腑鏂�=2涓嫳鏂囧瓧绗�) + * @param str + * @returns {number} + */ +function getStringWidth(str) { + let width = 0; + for (let i = 0, len = str.length; i < len; i++) { + width += isChinese(str.charAt(i)) ? 2 : 1; + } + return width; +} + +/** + * 鍚屼竴琛岃緭鍑簊tr1, str2锛宻tr1灞呭乏, str2灞呭彸 + * @param {string} str1 鍐呭1 + * @param {string} str2 鍐呭2 + * @param {number} fontWidth 瀛楃瀹藉害 1/2 + * @param {string} fillWith str1 str2涔嬮棿鐨勫~鍏呭瓧绗� + * + */ +function inline(str1, str2, fillWith = ' ', fontWidth = 1) { + const lineWidth = MAX_CHAR_COUNT_EACH_LINE / fontWidth; + // 闇�瑕佸~鍏呯殑瀛楃鏁伴噺 + let fillCount = lineWidth - (getStringWidth(str1) + getStringWidth(str2)) % lineWidth; + let fillStr = new Array(fillCount).fill(fillWith.charAt(0)).join(''); + return str1 + fillStr + str2; +} + +/** + * 鐢ㄥ瓧绗﹀~鍏呬竴鏁磋 + * @param {string} fillWith 濉厖瀛楃 + * @param {number} fontWidth 瀛楃瀹藉害 1/2 + */ +function fillLine(fillWith = '-', fontWidth = 1) { + const lineWidth = MAX_CHAR_COUNT_EACH_LINE / fontWidth; + return new Array(lineWidth).fill(fillWith.charAt(0)).join(''); +} + +/** + * 鏂囧瓧鍐呭灞呬腑锛屽乏鍙崇敤瀛楃濉厖 + * @param {string} str 鏂囧瓧鍐呭 + * @param {number} fontWidth 瀛楃瀹藉害 1/2 + * @param {string} fillWith str1 str2涔嬮棿鐨勫~鍏呭瓧绗� + */ +function fillAround(str, fillWith = '-', fontWidth = 1) { + const lineWidth = MAX_CHAR_COUNT_EACH_LINE / fontWidth; + let strWidth = getStringWidth(str); + // 鍐呭宸茬粡瓒呰繃涓�琛屼簡锛屾病蹇呰濉厖 + if (strWidth >= lineWidth) { + return str; + } + // 闇�瑕佸~鍏呯殑瀛楃鏁伴噺 + let fillCount = lineWidth - strWidth; + // 宸︿晶濉厖鐨勫瓧绗︽暟閲� + let leftCount = Math.round(fillCount / 2); + // 涓や晶鐨勫~鍏呭瓧绗︼紝闇�瑕佽�冭檻宸﹁竟闇�瑕佸~鍏咃紝鍙宠竟涓嶉渶瑕佸~鍏呯殑鎯呭喌 + let fillStr = new Array(leftCount).fill(fillWith.charAt(0)).join(''); + return fillStr + str + fillStr.substr(0, fillCount - leftCount); +} + +// ArrayBuffer杞�16杩涘害瀛楃涓茬ず渚� +function ab2hex(buffer) { + const hexArr = Array.prototype.map.call( + new Uint8Array(buffer), + function(bit) { + return ('00' + bit.toString(16)).slice(-2) + } + ) + return hexArr.join(',') +} + + +module.exports = { + inline: inline, + fillLine: fillLine, + fillAround: fillAround, + ab2hex:ab2hex, +}; diff --git a/LA24030_LuLiPackageLine_Pda/utils/print/util.js b/LA24030_LuLiPackageLine_Pda/utils/print/util.js new file mode 100644 index 0000000..49cb9bb --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/print/util.js @@ -0,0 +1,66 @@ +const formatTime = date => { + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + + return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':') +} + +const formatNumber = n => { + n = n.toString() + return n[1] ? n : '0' + n +} + + +//4鍚�1 +function convert4to1(res) { + let arr = []; + for (let i = 0; i < res.length; i++) { + if (i % 4 == 0) { + let rule = 0.29900 * res[i] + 0.58700 * res[i + 1] + 0.11400 * res[i + 2]; + if (rule > 200) { + res[i] = 0; + } else { + res[i] = 1; + } + arr.push(res[i]); + } + } + return arr; +} + +//8鍚�1 +function convert8to1(arr) { + let data = []; + for (let k = 0; k < arr.length; k += 8) { + let temp = arr[k] * 128 + arr[k + 1] * 64 + arr[k + 2] * 32 + arr[k + 3] * 16 + arr[k + 4] * 8 + arr[k + 5] * 4 + + arr[k + 6] * 2 + arr[k + 7] * 1 + data.push(temp); + } + return data; +} + +//鎴戠殑鍥剧墖瀹藉害鏄�240锛岄偅涔堟嫾鎺ョ殑鎸囦护灏辨槸[29, 118, 48, 0, 30, 0, 240, 0] +//鎴戠殑鍥剧墖瀹藉害鏄�160锛岄偅涔堟嫾鎺ョ殑鎸囦护灏辨槸[29, 118, 48, 0, 20, 0, 160, 0] +//琛ュ厖涓�鐐癸紝鎵撳嵃闈炰簩缁寸爜鐨勫浘鐗囷紝瀹藉害涓�瀹氳鏄�24鐨勫�嶆暟锛屼笉鐒舵墦鍗颁篃浼氬嚭鐜颁贡鐮� +function toArrayBuffer(res) { + let arr = convert4to1(res.data); + let data = convert8to1(arr); + let cmds = [].concat([27, 97, 1], [29, 118, 48, 0, 30, 0, 240, 0], data, [27, 74, 3], [27, 64]); + return new Uint8Array(cmds).buffer; +} + +function zip_image(res) { + let arr = convert4to1(res.data); + let data = convert8to1(arr); + return data; +} + +module.exports = { + formatTime: formatTime, + toArrayBuffer: toArrayBuffer, + zip_image: zip_image, +} diff --git a/LA24030_LuLiPackageLine_Pda/utils/print/weapp.qrcode.esm.js b/LA24030_LuLiPackageLine_Pda/utils/print/weapp.qrcode.esm.js new file mode 100644 index 0000000..7231270 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/print/weapp.qrcode.esm.js @@ -0,0 +1,5 @@ +/** + * weapp.qrcode.js v1.0.0 (https://github.com/yingye/weapp-qrcode#readme) + */ + +var hasOwn=Object.prototype.hasOwnProperty,toStr=Object.prototype.toString,defineProperty=Object.defineProperty,gOPD=Object.getOwnPropertyDescriptor,isArray=function(t){return"function"==typeof Array.isArray?Array.isArray(t):"[object Array]"===toStr.call(t)},isPlainObject=function(t){if(!t||"[object Object]"!==toStr.call(t))return!1;var e,r=hasOwn.call(t,"constructor"),o=t.constructor&&t.constructor.prototype&&hasOwn.call(t.constructor.prototype,"isPrototypeOf");if(t.constructor&&!r&&!o)return!1;for(e in t);return void 0===e||hasOwn.call(t,e)},setProperty=function(t,e){defineProperty&&"__proto__"===e.name?defineProperty(t,e.name,{enumerable:!0,configurable:!0,value:e.newValue,writable:!0}):t[e.name]=e.newValue},getProperty=function(t,e){if("__proto__"===e){if(!hasOwn.call(t,e))return;if(gOPD)return gOPD(t,e).value}return t[e]},extend=function t(){var e,r,o,n,i,a,s=arguments[0],u=1,l=arguments.length,h=!1;for("boolean"==typeof s&&(h=s,s=arguments[1]||{},u=2),(null==s||"object"!=typeof s&&"function"!=typeof s)&&(s={});u<l;++u)if(null!=(e=arguments[u]))for(r in e)o=getProperty(s,r),s!==(n=getProperty(e,r))&&(h&&n&&(isPlainObject(n)||(i=isArray(n)))?(i?(i=!1,a=o&&isArray(o)?o:[]):a=o&&isPlainObject(o)?o:{},setProperty(s,{name:r,newValue:t(h,a,n)})):void 0!==n&&setProperty(s,{name:r,newValue:n}));return s};function QR8bitByte(t){this.mode=QRMode.MODE_8BIT_BYTE,this.data=t}function QRCode(t,e){this.typeNumber=t,this.errorCorrectLevel=e,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=new Array}QR8bitByte.prototype={getLength:function(t){return this.data.length},write:function(t){for(var e=0;e<this.data.length;e++)t.put(this.data.charCodeAt(e),8)}},QRCode.prototype={addData:function(t){var e=new QR8bitByte(t);this.dataList.push(e),this.dataCache=null},isDark:function(t,e){if(t<0||this.moduleCount<=t||e<0||this.moduleCount<=e)throw new Error(t+","+e);return this.modules[t][e]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var t=1;for(t=1;t<40;t++){for(var e=QRRSBlock.getRSBlocks(t,this.errorCorrectLevel),r=new QRBitBuffer,o=0,n=0;n<e.length;n++)o+=e[n].dataCount;for(n=0;n<this.dataList.length;n++){var i=this.dataList[n];r.put(i.mode,4),r.put(i.getLength(),QRUtil.getLengthInBits(i.mode,t)),i.write(r)}if(r.getLengthInBits()<=8*o)break}this.typeNumber=t}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(t,e){this.moduleCount=4*this.typeNumber+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(t,e),this.typeNumber>=7&&this.setupTypeNumber(t),null==this.dataCache&&(this.dataCache=QRCode.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,e)},setupPositionProbePattern:function(t,e){for(var r=-1;r<=7;r++)if(!(t+r<=-1||this.moduleCount<=t+r))for(var o=-1;o<=7;o++)e+o<=-1||this.moduleCount<=e+o||(this.modules[t+r][e+o]=0<=r&&r<=6&&(0==o||6==o)||0<=o&&o<=6&&(0==r||6==r)||2<=r&&r<=4&&2<=o&&o<=4)},getBestMaskPattern:function(){for(var t=0,e=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=QRUtil.getLostPoint(this);(0==r||t>o)&&(t=o,e=r)}return e},createMovieClip:function(t,e,r){var o=t.createEmptyMovieClip(e,r);this.make();for(var n=0;n<this.modules.length;n++)for(var i=1*n,a=0;a<this.modules[n].length;a++){var s=1*a;this.modules[n][a]&&(o.beginFill(0,100),o.moveTo(s,i),o.lineTo(s+1,i),o.lineTo(s+1,i+1),o.lineTo(s,i+1),o.endFill())}return o},setupTimingPattern:function(){for(var t=8;t<this.moduleCount-8;t++)null==this.modules[t][6]&&(this.modules[t][6]=t%2==0);for(var e=8;e<this.moduleCount-8;e++)null==this.modules[6][e]&&(this.modules[6][e]=e%2==0)},setupPositionAdjustPattern:function(){for(var t=QRUtil.getPatternPosition(this.typeNumber),e=0;e<t.length;e++)for(var r=0;r<t.length;r++){var o=t[e],n=t[r];if(null==this.modules[o][n])for(var i=-2;i<=2;i++)for(var a=-2;a<=2;a++)this.modules[o+i][n+a]=-2==i||2==i||-2==a||2==a||0==i&&0==a}},setupTypeNumber:function(t){for(var e=QRUtil.getBCHTypeNumber(this.typeNumber),r=0;r<18;r++){var o=!t&&1==(e>>r&1);this.modules[Math.floor(r/3)][r%3+this.moduleCount-8-3]=o}for(r=0;r<18;r++){o=!t&&1==(e>>r&1);this.modules[r%3+this.moduleCount-8-3][Math.floor(r/3)]=o}},setupTypeInfo:function(t,e){for(var r=this.errorCorrectLevel<<3|e,o=QRUtil.getBCHTypeInfo(r),n=0;n<15;n++){var i=!t&&1==(o>>n&1);n<6?this.modules[n][8]=i:n<8?this.modules[n+1][8]=i:this.modules[this.moduleCount-15+n][8]=i}for(n=0;n<15;n++){i=!t&&1==(o>>n&1);n<8?this.modules[8][this.moduleCount-n-1]=i:n<9?this.modules[8][15-n-1+1]=i:this.modules[8][15-n-1]=i}this.modules[this.moduleCount-8][8]=!t},mapData:function(t,e){for(var r=-1,o=this.moduleCount-1,n=7,i=0,a=this.moduleCount-1;a>0;a-=2)for(6==a&&a--;;){for(var s=0;s<2;s++)if(null==this.modules[o][a-s]){var u=!1;i<t.length&&(u=1==(t[i]>>>n&1)),QRUtil.getMask(e,o,a-s)&&(u=!u),this.modules[o][a-s]=u,-1==--n&&(i++,n=7)}if((o+=r)<0||this.moduleCount<=o){o-=r,r=-r;break}}}},QRCode.PAD0=236,QRCode.PAD1=17,QRCode.createData=function(t,e,r){for(var o=QRRSBlock.getRSBlocks(t,e),n=new QRBitBuffer,i=0;i<r.length;i++){var a=r[i];n.put(a.mode,4),n.put(a.getLength(),QRUtil.getLengthInBits(a.mode,t)),a.write(n)}var s=0;for(i=0;i<o.length;i++)s+=o[i].dataCount;if(n.getLengthInBits()>8*s)throw new Error("code length overflow. ("+n.getLengthInBits()+">"+8*s+")");for(n.getLengthInBits()+4<=8*s&&n.put(0,4);n.getLengthInBits()%8!=0;)n.putBit(!1);for(;!(n.getLengthInBits()>=8*s||(n.put(QRCode.PAD0,8),n.getLengthInBits()>=8*s));)n.put(QRCode.PAD1,8);return QRCode.createBytes(n,o)},QRCode.createBytes=function(t,e){for(var r=0,o=0,n=0,i=new Array(e.length),a=new Array(e.length),s=0;s<e.length;s++){var u=e[s].dataCount,l=e[s].totalCount-u;o=Math.max(o,u),n=Math.max(n,l),i[s]=new Array(u);for(var h=0;h<i[s].length;h++)i[s][h]=255&t.buffer[h+r];r+=u;var f=QRUtil.getErrorCorrectPolynomial(l),g=new QRPolynomial(i[s],f.getLength()-1).mod(f);a[s]=new Array(f.getLength()-1);for(h=0;h<a[s].length;h++){var c=h+g.getLength()-a[s].length;a[s][h]=c>=0?g.get(c):0}}var d=0;for(h=0;h<e.length;h++)d+=e[h].totalCount;var R=new Array(d),m=0;for(h=0;h<o;h++)for(s=0;s<e.length;s++)h<i[s].length&&(R[m++]=i[s][h]);for(h=0;h<n;h++)for(s=0;s<e.length;s++)h<a[s].length&&(R[m++]=a[s][h]);return R};for(var QRMode={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},QRErrorCorrectLevel={L:1,M:0,Q:3,H:2},QRMaskPattern={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},QRUtil={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(t){for(var e=t<<10;QRUtil.getBCHDigit(e)-QRUtil.getBCHDigit(QRUtil.G15)>=0;)e^=QRUtil.G15<<QRUtil.getBCHDigit(e)-QRUtil.getBCHDigit(QRUtil.G15);return(t<<10|e)^QRUtil.G15_MASK},getBCHTypeNumber:function(t){for(var e=t<<12;QRUtil.getBCHDigit(e)-QRUtil.getBCHDigit(QRUtil.G18)>=0;)e^=QRUtil.G18<<QRUtil.getBCHDigit(e)-QRUtil.getBCHDigit(QRUtil.G18);return t<<12|e},getBCHDigit:function(t){for(var e=0;0!=t;)e++,t>>>=1;return e},getPatternPosition:function(t){return QRUtil.PATTERN_POSITION_TABLE[t-1]},getMask:function(t,e,r){switch(t){case QRMaskPattern.PATTERN000:return(e+r)%2==0;case QRMaskPattern.PATTERN001:return e%2==0;case QRMaskPattern.PATTERN010:return r%3==0;case QRMaskPattern.PATTERN011:return(e+r)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(e/2)+Math.floor(r/3))%2==0;case QRMaskPattern.PATTERN101:return e*r%2+e*r%3==0;case QRMaskPattern.PATTERN110:return(e*r%2+e*r%3)%2==0;case QRMaskPattern.PATTERN111:return(e*r%3+(e+r)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}},getErrorCorrectPolynomial:function(t){for(var e=new QRPolynomial([1],0),r=0;r<t;r++)e=e.multiply(new QRPolynomial([1,QRMath.gexp(r)],0));return e},getLengthInBits:function(t,e){if(1<=e&&e<10)switch(t){case QRMode.MODE_NUMBER:return 10;case QRMode.MODE_ALPHA_NUM:return 9;case QRMode.MODE_8BIT_BYTE:case QRMode.MODE_KANJI:return 8;default:throw new Error("mode:"+t)}else if(e<27)switch(t){case QRMode.MODE_NUMBER:return 12;case QRMode.MODE_ALPHA_NUM:return 11;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 10;default:throw new Error("mode:"+t)}else{if(!(e<41))throw new Error("type:"+e);switch(t){case QRMode.MODE_NUMBER:return 14;case QRMode.MODE_ALPHA_NUM:return 13;case QRMode.MODE_8BIT_BYTE:return 16;case QRMode.MODE_KANJI:return 12;default:throw new Error("mode:"+t)}}},getLostPoint:function(t){for(var e=t.getModuleCount(),r=0,o=0;o<e;o++)for(var n=0;n<e;n++){for(var i=0,a=t.isDark(o,n),s=-1;s<=1;s++)if(!(o+s<0||e<=o+s))for(var u=-1;u<=1;u++)n+u<0||e<=n+u||0==s&&0==u||a==t.isDark(o+s,n+u)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<e-1;o++)for(n=0;n<e-1;n++){var l=0;t.isDark(o,n)&&l++,t.isDark(o+1,n)&&l++,t.isDark(o,n+1)&&l++,t.isDark(o+1,n+1)&&l++,0!=l&&4!=l||(r+=3)}for(o=0;o<e;o++)for(n=0;n<e-6;n++)t.isDark(o,n)&&!t.isDark(o,n+1)&&t.isDark(o,n+2)&&t.isDark(o,n+3)&&t.isDark(o,n+4)&&!t.isDark(o,n+5)&&t.isDark(o,n+6)&&(r+=40);for(n=0;n<e;n++)for(o=0;o<e-6;o++)t.isDark(o,n)&&!t.isDark(o+1,n)&&t.isDark(o+2,n)&&t.isDark(o+3,n)&&t.isDark(o+4,n)&&!t.isDark(o+5,n)&&t.isDark(o+6,n)&&(r+=40);var h=0;for(n=0;n<e;n++)for(o=0;o<e;o++)t.isDark(o,n)&&h++;return r+=10*(Math.abs(100*h/e/e-50)/5)}},QRMath={glog:function(t){if(t<1)throw new Error("glog("+t+")");return QRMath.LOG_TABLE[t]},gexp:function(t){for(;t<0;)t+=255;for(;t>=256;)t-=255;return QRMath.EXP_TABLE[t]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)},i=0;i<8;i++)QRMath.EXP_TABLE[i]=1<<i;for(i=8;i<256;i++)QRMath.EXP_TABLE[i]=QRMath.EXP_TABLE[i-4]^QRMath.EXP_TABLE[i-5]^QRMath.EXP_TABLE[i-6]^QRMath.EXP_TABLE[i-8];for(i=0;i<255;i++)QRMath.LOG_TABLE[QRMath.EXP_TABLE[i]]=i;function QRPolynomial(t,e){if(void 0==t.length)throw new Error(t.length+"/"+e);for(var r=0;r<t.length&&0==t[r];)r++;this.num=new Array(t.length-r+e);for(var o=0;o<t.length-r;o++)this.num[o]=t[o+r]}function QRRSBlock(t,e){this.totalCount=t,this.dataCount=e}function QRBitBuffer(){this.buffer=new Array,this.length=0}function utf16to8(t){var e,r,o,n;for(e="",o=t.length,r=0;r<o;r++)(n=t.charCodeAt(r))>=1&&n<=127?e+=t.charAt(r):n>2047?(e+=String.fromCharCode(224|n>>12&15),e+=String.fromCharCode(128|n>>6&63),e+=String.fromCharCode(128|n>>0&63)):(e+=String.fromCharCode(192|n>>6&31),e+=String.fromCharCode(128|n>>0&63));return e}function drawQrcode(t){t=t||{},(t=extend(!0,{width:256,height:256,x:0,y:0,typeNumber:-1,correctLevel:QRErrorCorrectLevel.H,background:"#ffffff",foreground:"#000000",image:{imageResource:"",dx:0,dy:0,dWidth:100,dHeight:100}},t)).canvasId||t.ctx?function(){var e,r=new QRCode(t.typeNumber,t.correctLevel);r.addData(utf16to8(t.text)),r.make(),e=t.ctx?t.ctx:t._this?wx.createCanvasContext&&wx.createCanvasContext(t.canvasId,t._this):wx.createCanvasContext&&wx.createCanvasContext(t.canvasId);for(var o=t.width/r.getModuleCount(),n=t.height/r.getModuleCount(),i=0;i<r.getModuleCount();i++)for(var a=0;a<r.getModuleCount();a++){var s=r.isDark(i,a)?t.foreground:t.background;e.setFillStyle(s);var u=Math.ceil((a+1)*o)-Math.floor(a*o),l=Math.ceil((i+1)*o)-Math.floor(i*o);e.fillRect(Math.round(a*o)+t.x,Math.round(i*n)+t.y,u,l)}t.image.imageResource&&e.drawImage(t.image.imageResource,t.image.dx,t.image.dy,t.image.dWidth,t.image.dHeight);e.draw(!1,function(e){t.callback&&t.callback(e)})}():console.warn("please set canvasId or ctx!")}QRPolynomial.prototype={get:function(t){return this.num[t]},getLength:function(){return this.num.length},multiply:function(t){for(var e=new Array(this.getLength()+t.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<t.getLength();o++)e[r+o]^=QRMath.gexp(QRMath.glog(this.get(r))+QRMath.glog(t.get(o)));return new QRPolynomial(e,0)},mod:function(t){if(this.getLength()-t.getLength()<0)return this;for(var e=QRMath.glog(this.get(0))-QRMath.glog(t.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(o=0;o<t.getLength();o++)r[o]^=QRMath.gexp(QRMath.glog(t.get(o))+e);return new QRPolynomial(r,0).mod(t)}},QRRSBlock.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],QRRSBlock.getRSBlocks=function(t,e){var r=QRRSBlock.getRsBlockTable(t,e);if(void 0==r)throw new Error("bad rs block @ typeNumber:"+t+"/errorCorrectLevel:"+e);for(var o=r.length/3,n=new Array,i=0;i<o;i++)for(var a=r[3*i+0],s=r[3*i+1],u=r[3*i+2],l=0;l<a;l++)n.push(new QRRSBlock(s,u));return n},QRRSBlock.getRsBlockTable=function(t,e){switch(e){case QRErrorCorrectLevel.L:return QRRSBlock.RS_BLOCK_TABLE[4*(t-1)+0];case QRErrorCorrectLevel.M:return QRRSBlock.RS_BLOCK_TABLE[4*(t-1)+1];case QRErrorCorrectLevel.Q:return QRRSBlock.RS_BLOCK_TABLE[4*(t-1)+2];case QRErrorCorrectLevel.H:return QRRSBlock.RS_BLOCK_TABLE[4*(t-1)+3];default:return}},QRBitBuffer.prototype={get:function(t){var e=Math.floor(t/8);return 1==(this.buffer[e]>>>7-t%8&1)},put:function(t,e){for(var r=0;r<e;r++)this.putBit(1==(t>>>e-r-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),t&&(this.buffer[e]|=128>>>this.length%8),this.length++}};export default drawQrcode; \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/utils/request.js b/LA24030_LuLiPackageLine_Pda/utils/request.js new file mode 100644 index 0000000..0755a3e --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/request.js @@ -0,0 +1,92 @@ +// 鍚屾椂鍙戦�佸紓姝ヨ姹傜殑娆℃暟锛岄槻姝竴娆$偣鍑绘湁澶氭璇锋眰 +let ajaxTime = 0; +// export const baseUrl = 'http://10.10.14.91:5005' //鏈満娴嬭瘯鐜 +//export const baseUrl = 'http://localhost:5005' //鏈満娴嬭瘯鐜 +export const baseUrl = 'http://172.17.1.111:5005' //鏈満娴嬭瘯鐜 +// 鍏叡鐨剅equest鏂规硶 +export function request(option) { + //璇锋眰澶�.nql銆併�傦紝 + const header = {}; + // 杩斿洖鏂瑰紡 + header['Content-Type'] = option.contentType || 'application/json'; + // 鍒ゆ柇鏄惁鏄櫥褰曡姹傦紝涓嶆槸鍦╤eader涓姞涓妕oken + if (option.url != '/login') { + header['token'] = uni.getStorageSync('token') ? 'Bearer ' + uni.getStorageSync('token') : ''; + header.Authorization = uni.getStorageSync('token') ? 'Bearer ' + uni.getStorageSync('token') : '' + } + ajaxTime++; + // 鏄剧ず鍔犺浇涓晥鏋� + uni.showLoading({ + title: '鍔犺浇涓�...', + mask: true + }); + + return new Promise((resolve, reject) => { + uni.request({ + url: baseUrl + option.url, + method: option.method || 'POST', + data: option.data || {}, + header, + timeout: 45000, //45绉� + success: (res) => { + if(res.statusCode === 200) { + const result = res.data; + if (result.code === 200 || result.code === 204) { + // 璇锋眰鐘舵�佹甯革紝杩斿洖鏁版嵁 + resolve(result) + } else if (result.code === 401) { + //token澶辨晥锛屾竻闄oken鍏抽棴褰撳墠椤甸潰锛岃烦杞埌鐧诲綍 + uni.showModal({ + title: '鎻愮ず', + content: 'token澶辨晥锛岃閲嶆柊鐧婚檰', + showCancel: false + }) + // 娓呮token + uni.removeStorageSync('token') + // 璺宠浆鍒扮櫥褰� + uni.redirectTo({ + url: '/pages/login/login' + }) + } else { + uni.showModal({ + title: '鎻愮ず', + content: `${result.code}:${JSON.stringify(result.message)}`, + showCancel: false + }) + // 寮傚父锛岃繑鍥炲紓甯竎ode鍜宮essage + reject(result) + } + + }else { + uni.showModal({ + title: '鎻愮ず', + content: `${res.statusCode}:${JSON.stringify(res.errMsg)}`, + showCancel: false + }) + + const {statusCode,errMsg} = res; + reject({statusCode,errMsg}) + } + }, + fail: (err) => { + // 璇锋眰澶辫触 + //reject(err); + uni.showModal({ + title: '鎻愮ず', + content: `缃戠粶閿欒`, + showCancel: false + }) + }, + complete: () => { + // 璇锋眰瀹屾垚鍚庡垽鏂姸鎬� + ajaxTime--; + // 鍙湁鍊肩瓑浜�0锛屾墠娓呴櫎杞湀鏁堟灉 + if (ajaxTime == 0) { + uni.hideLoading() + } + } + }) + }) +} + +// export default request diff --git a/LA24030_LuLiPackageLine_Pda/utils/tool.js b/LA24030_LuLiPackageLine_Pda/utils/tool.js new file mode 100644 index 0000000..083ffc7 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/tool.js @@ -0,0 +1,51 @@ +/** + * 鎵爜鍚庤幏鍙栨寚瀹氱殑鐗╂枡鐨勫睘鎬� + * @param {Object} str 鎵弿寰楀埌鐨勫瓧绗︿覆 + * @param {Object} attr 闇�瑕佽幏鍙栧埌鐨勫睘鎬у�� + */ +export function getAttrValue(targetStr,attr) { + let endStr = ''; + // let targetStr = str.replace(/\s/g,'') + //瀛楃涓叉媶鍒嗘暟缁� + const targetArr = targetStr.split(',') + //寰幆鏁扮粍 + for(let i=0;i<targetArr.length;i++) { + let itemK = targetArr[i].replace(/\s/g,'') //鐗╂枡鍚┖鏍糱ug - E18VS300C002-00 n + if(itemK.startsWith(attr)) { + let arr = targetArr[i].split(':') + endStr = arr[1].trim() //鍘绘帀鍓嶅悗绌烘牸 + break; + } + } + return endStr +} + +/** + * @param {Object} str 鎵弿鍒扮殑瀛楃涓� + * @param {Object} attr 鑾峰彇鐨勫睘鎬� + */ +export function getNewAttrValue(str,attr) { + const arr = []; + //鏇挎崲绌哄瓧绗� + let targetStr = str.replace(/\s/g,'') + //鑾峰彇鐗╂枡缂栧彿 + const startIndex = targetStr.indexOf('PARTSNUMBER:') + //鐗╂枡鍚嶇О + const middleIndex = targetStr.indexOf('MATERIALNAME:') + //鎵规 + const endIndex = targetStr.indexOf('LOTNO:') + //鍩庡競 + const lastIndex = targetStr.indexOf('City:WH') + + arr.push(targetStr.slice(startIndex+1,middleIndex),targetStr.slice(middleIndex+1,endIndex),targetStr.slice(endIndex+1,lastIndex)) + console.log(arr) + if(attr = 'PARTSNUMBER') { + return arr[0] || '' + }else if(arrt = 'MATERIALNAME') { + return arr[1] || '' + }else if(attr = 'LOTNO') { + return arr[2] || '' + }else { + return '' + } +} \ No newline at end of file diff --git a/LA24030_LuLiPackageLine_Pda/utils/utf8ByteToUnicodeStr.js b/LA24030_LuLiPackageLine_Pda/utils/utf8ByteToUnicodeStr.js new file mode 100644 index 0000000..dbc56d3 --- /dev/null +++ b/LA24030_LuLiPackageLine_Pda/utils/utf8ByteToUnicodeStr.js @@ -0,0 +1,51 @@ +export function utf8ByteToUnicodeStr(utf8Bytes) { + var unicodeStr = ""; + for (var pos = 0; pos < utf8Bytes.length; ) { + var flag = utf8Bytes[pos]; + var unicode = 0; + if (flag >>> 7 === 0) { + unicodeStr += String.fromCharCode(utf8Bytes[pos]); + pos += 1; + } else if ((flag & 0xfc) === 0xfc) { + unicode = (utf8Bytes[pos] & 0x3) << 30; + unicode |= (utf8Bytes[pos + 1] & 0x3f) << 24; + unicode |= (utf8Bytes[pos + 2] & 0x3f) << 18; + unicode |= (utf8Bytes[pos + 3] & 0x3f) << 12; + unicode |= (utf8Bytes[pos + 4] & 0x3f) << 6; + unicode |= utf8Bytes[pos + 5] & 0x3f; + unicodeStr += String.fromCodePoint(unicode); + pos += 6; + } else if ((flag & 0xf8) === 0xf8) { + unicode = (utf8Bytes[pos] & 0x7) << 24; + unicode |= (utf8Bytes[pos + 1] & 0x3f) << 18; + unicode |= (utf8Bytes[pos + 2] & 0x3f) << 12; + unicode |= (utf8Bytes[pos + 3] & 0x3f) << 6; + unicode |= utf8Bytes[pos + 4] & 0x3f; + unicodeStr += String.fromCodePoint(unicode); + pos += 5; + } else if ((flag & 0xf0) === 0xf0) { + unicode = (utf8Bytes[pos] & 0xf) << 18; + unicode |= (utf8Bytes[pos + 1] & 0x3f) << 12; + unicode |= (utf8Bytes[pos + 2] & 0x3f) << 6; + unicode |= utf8Bytes[pos + 3] & 0x3f; + unicodeStr += String.fromCodePoint(unicode); + pos += 4; + } else if ((flag & 0xe0) === 0xe0) { + unicode = (utf8Bytes[pos] & 0x1f) << 12; + unicode |= (utf8Bytes[pos + 1] & 0x3f) << 6; + unicode |= utf8Bytes[pos + 2] & 0x3f; + unicodeStr += String.fromCharCode(unicode); + pos += 3; + } else if ((flag & 0xc0) === 0xc0) { + //110 + unicode = (utf8Bytes[pos] & 0x3f) << 6; + unicode |= utf8Bytes[pos + 1] & 0x3f; + unicodeStr += String.fromCharCode(unicode); + pos += 2; + } else { + unicodeStr += String.fromCharCode(utf8Bytes[pos]); + pos += 1; + } + } + return unicodeStr; +} \ No newline at end of file -- Gitblit v1.9.3