From 725fa19bd1de756196d102b8cd9c30a62afb3eef Mon Sep 17 00:00:00 2001 From: lb Date: Wed, 16 Aug 2023 16:56:16 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=89=B9=E9=87=8F=E6=89=93=E5=8D=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/PrintDom.vue | 8 ++-- src/views/atomViews/ListViewWithHead.vue | 37 +++++++++++++--- src/views/modules/pms/pallet/config.js | 55 +++++++++++++----------- 3 files changed, 66 insertions(+), 34 deletions(-) diff --git a/src/components/PrintDom.vue b/src/components/PrintDom.vue index 0f4f876..dcd5c84 100644 --- a/src/components/PrintDom.vue +++ b/src/components/PrintDom.vue @@ -193,6 +193,7 @@ export default { this.dataForm = res.data; await this.printByLocalData(res.data); + await this.getPrintStatus(id); }, async printByLocalData(data) { @@ -201,7 +202,6 @@ export default { // 绘制HU号 await this.paintQrCode(data.hu || "- 无HU数据 -"); await this.handlePrint(); - await this.getPrintStatus(); }, initPrintPlugin() { @@ -267,7 +267,7 @@ export default { }); }, - getPrintStatus() { + getPrintStatus(id) { return new Promise((resolve, reject) => { if (!this.jobId || !this.lodop) reject(-1); this.lodop.SET_PRINT_MODE("CATCH_PRINT_STATUS", true); @@ -278,7 +278,7 @@ export default { // 打印成功 this.sendSuccess() .then(() => { - this.$message.success("打印成功"); + this.$message.success(`打印 ${id} 成功`); this.$emit("refresh-list"); resolve(); }) @@ -287,7 +287,7 @@ export default { reject(err); }); } else { - this.$message.error("打印失败"); + this.$message.error(`打印 ${id} 失败`); } }; this.lodop.GET_VALUE("PRINT_STATUS_OK", this.jobId); diff --git a/src/views/atomViews/ListViewWithHead.vue b/src/views/atomViews/ListViewWithHead.vue index 7f7201c..fee7d5e 100644 --- a/src/views/atomViews/ListViewWithHead.vue +++ b/src/views/atomViews/ListViewWithHead.vue @@ -622,12 +622,7 @@ export default { cancelButtonText: "我再想想", type: "warning", }) - .then(() => { - this.printDOMmount = true; - this.$nextTick(() => { - this.$refs["print"].print(data); - }); - }) + .then(this.printOnce.bind(null, data)) .catch((err) => { // console.log("cancel ", err); }); @@ -719,9 +714,39 @@ export default { }); }); break; + case "打印": + return this.$confirm("开始打印么", "提示", { + confirmButtonText: "确认", + cancelButtonText: "我再想想", + type: "warning", + }) + .then(() => { + console.log("打印如下这些 ids:", this.tableSelectedIds); + // this.tableSelectedIds.reduce(async (id, _) => { + // await this.printOnce(id); + // }) + this.tableSelectedIds.forEach(async (id) => { + await this.printOnce(id); + }) + }) + .catch((err) => { + this.$message.error(`批量打印出错: ${err}`); + }); } }, + /** 打印一次 */ + printOnce(id) { + return new Promise((resolve) => { + this.printDOMmount = true; + this.$nextTick(async () => { + console.log("[Print] 打印项:", id); + await this.$refs["print"].print(id); + resolve(); + }); + }); + }, + /** 导航器的操作 */ handleSizeChange(val) { // val 是新值 diff --git a/src/views/modules/pms/pallet/config.js b/src/views/modules/pms/pallet/config.js index 75582c4..41c3fb9 100644 --- a/src/views/modules/pms/pallet/config.js +++ b/src/views/modules/pms/pallet/config.js @@ -1,20 +1,20 @@ import TableOperaionComponent from "@/components/noTemplateComponents/operationComponent"; import request from "@/utils/request"; import { timeFilter, dictFilter } from "@/utils/filters"; -import { getDictDataList } from '@/utils'; - +import { getDictDataList } from "@/utils"; // import StateSelect from '@/components/StateSelect.vue'; export default function () { const tableProps = [ { type: "index", label: "序号" }, + { type: "selection" }, { prop: "code", label: "流水号" }, { prop: "carCode", label: "窑车号" }, { prop: "orderCode", label: "订单号" }, { prop: "realQty", label: "数量" }, - { prop: "typeDictValue", label: "类型", filter: dictFilter('pallet_type') }, - { prop: "stifling", label: "熏蒸", filter: val => val != null ? ['非熏蒸', '熏蒸'][val] : '-' }, + { prop: "typeDictValue", label: "类型", filter: dictFilter("pallet_type") }, + { prop: "stifling", label: "熏蒸", filter: (val) => (val != null ? ["非熏蒸", "熏蒸"][val] : "-") }, { prop: "printTime", label: "打印时间", filter: timeFilter }, { prop: "createTime", label: "添加时间", filter: timeFilter }, { @@ -25,7 +25,7 @@ export default function () { subcomponent: TableOperaionComponent, options: [ { name: "print", label: "打印", icon: "printer" }, - { name: "view-car-record", label: "窑车记录", emitField: 'hisId', icon: "shopping-cart-1" }, + { name: "view-car-record", label: "窑车记录", emitField: "hisId", icon: "shopping-cart-1" }, ], }, ]; @@ -38,19 +38,19 @@ export default function () { fn: () => this.$http.get("/pms/car/page", { params: { page: 1, limit: 999 } }), bind: { placeholder: "请选择窑车号", - filterable: true + filterable: true, }, }, { prop: "orderId", label: "订单号", - fieldOptionLabel: 'code', + fieldOptionLabel: "code", // fieldOptionValue: 'id', select: [], fn: () => this.$http.post("/pms/order/pageView", { page: 1, limit: 999 }), bind: { placeholder: "请选择订单号", - filterable: true + filterable: true, }, }, { @@ -59,6 +59,15 @@ export default function () { name: "查询", }, }, + { + button: { + type: "primary", + name: "打印", + }, + bind: { + plain: true, + }, + }, ]; const dialogJustFormConfigs = { @@ -74,17 +83,17 @@ export default function () { rules: { required: true, message: "必填项不能为空", trigger: "blur" }, elparams: { disabled: true, - } + }, }, { select: true, label: "状态", prop: "stateDictValue", - options: getDictDataList('car_state').map(i => ({ label: i.dictLabel, value: i.dictValue })), + options: getDictDataList("car_state").map((i) => ({ label: i.dictLabel, value: i.dictValue })), rules: { required: true, message: "必填项不能为空", trigger: "blur" }, elparams: { - fliterable: true - } + fliterable: true, + }, }, ], [ @@ -97,16 +106,16 @@ export default function () { rules: { required: true, message: "必填项不能为空", trigger: "blur" }, elparams: { // fliterable: true - - } + }, }, { label: "查看载砖详情", button: true, - onClick: function (id) { // 必须用 function 形式 - console.log(`查看载砖详情`, id) - this.$emit('emit-data', { type: 'to-car-payload', data: id }) - } + onClick: function (id) { + // 必须用 function 形式 + console.log(`查看载砖详情`, id); + this.$emit("emit-data", { type: "to-car-payload", data: id }); + }, }, ], ], @@ -119,7 +128,7 @@ export default function () { }; const carPayloadDialogConfigs = { - dialogWidth: '70%', + dialogWidth: "70%", carPayloadDialog: true, clickModalToClose: false, tableConfig: { @@ -142,8 +151,6 @@ export default function () { }, }; - - return { carPayloadDialogConfigs, dialogConfigs: dialogJustFormConfigs, @@ -156,11 +163,11 @@ export default function () { fields: headFormFields, // 名称是由 BaseSearchForm.vue 组件固定的 }, urls: { - base: '/pms/carHistory', - payload: '/pms/carHandle', // hisId 查询 载砖详情 + base: "/pms/carHistory", + payload: "/pms/carHandle", // hisId 查询 载砖详情 page: "/pms/pallet/pageView", pageIsPostApi: true, - printLog: '/pms/pallet/print', // post + printLog: "/pms/pallet/print", // post }, }; }