huangxw 1 tydzień temu
rodzic
commit
4fef480005

+ 7 - 6
src/pages.json

@@ -458,12 +458,6 @@
         {
             "root": "plant/print",
             "pages": [
-                {
-                    "path": "print-steps/index",
-                    "style": {
-                        "navigationBarTitleText": "打印步骤"
-                    }
-                },
                 // 自行打印
                 {
                     "path": "print-self/index",
@@ -477,6 +471,13 @@
                     "style": {
                         "navigationBarTitleText": "区间打印"
                     }
+                },
+                // 全部打印
+                {
+                    "path": "print-all/index",
+                    "style": {
+                        "navigationBarTitleText": "全部打印"
+                    }
                 }
             ]
         },

+ 1 - 1
src/plant/packaging/detail/models/print-info-page.vue

@@ -57,7 +57,7 @@
                              <view class="pt-20 d-flex">
                                 <view class="flex1"></view>
                                 <view class="d-flex a-c">
-                                    <up-button :customStyle="formItemBtnListStyle" class="ml-20" color="#18BECA">全部打印</up-button>
+                                    <up-button @click="$u.route({ url: '/plant/print/print-all/index', params: item })" :customStyle="formItemBtnListStyle" class="ml-20" color="#18BECA">全部打印</up-button>
                                     <up-button @click="$u.route({ url: '/plant/print/print-range/index', params: item })" :customStyle="formItemBtnListStyle" class="ml-20" color="#37A954">区间打印</up-button>
                                 </view>
                             </view>

+ 1 - 0
src/plant/packaging/list/index.vue

@@ -36,6 +36,7 @@
                                             showBatchInfo = true;
                                         "
                                         color="#18BECA"
+                                        :customStyle="formItemBtnListStyle"
                                         >查看批次信息</up-button>
                                     <template v-if="item.refType == '2'">
                                         <up-button :customStyle="formItemBtnListStyle" v-if="+item?.actualCount - item?.printCount" @click.stop="$u.route({ url: '/plant/print/print-self/index', params: { packId: item?.id, autoRelationId: item?.autoRelationId, unit: item?.unit, printedCount: item?.actualCount - item?.printCount } })" class="ml-10" color="#37A954">立即打印</up-button>

+ 1 - 1
src/plant/print/models/connect-printer.vue

@@ -16,7 +16,7 @@
                 {{ isSearching ? '搜索中...' : '开始搜索' }}
             </up-button>
             <view class="d-flex a-c j-c">
-                <up-button @click="prevSteps" class="mr-30" plain type="primary">上一步</up-button>
+                <up-button v-if="prevStepValue" @click="prevSteps" class="mr-30" plain type="primary">上一步</up-button>
                 <up-button @click="nextSteps" type="primary">下一步</up-button>
             </view>
         </view>

+ 80 - 47
src/plant/print/print-steps/index.vue → src/plant/print/print-all/index.vue

@@ -1,21 +1,19 @@
 <template>
-    <z-paging ref="paging" bgColor="#fff" safe-area-inset-bottom scroll-with-animation>
+    <z-paging ref="paging" bgColor="#f7f7f7" safe-area-inset-bottom scroll-with-animation>
         <template #top>
             <ut-navbar :title="stepsObject[currentStep].title" :fixed="false" border :breadcrumb="false"></ut-navbar>
-            <view class="pd-24">
-                <ut-steps-title :stepsObject="stepsObject"></ut-steps-title>
-            </view>
-            <view class="pd-5 bg-#f7f7f7"></view>
+            <view class="pd-5"></view>
         </template>
         <view>
-            <view v-show="currentStep === 'connect'">
+    
+            <view v-show="currentStep === 'connect'" class="bg-fff">
                 <!-- 业务组件链接打印机 -->
-                <connect-printer :info="stepsObject[currentStep]" @next="nextSteps" @prev="prevSteps" prevStepValue="confirm" nextStepValue="print"></connect-printer>
+                <connect-printer :info="stepsObject[currentStep]" @next="nextSteps" nextStepValue="print"></connect-printer>
             </view>
-            <view v-show="currentStep === 'print'">
+            <view v-show="currentStep === 'print'" class="bg-fff">
                 <!-- 业务组件打印 -->
                 <!-- 打印写入打印机 -->
-                <print-wrapper :info="stepsObject[currentStep]" @test="printTest" @prev="prevSteps" prevStepValue="connect"></print-wrapper>
+                <print-wrapper :info="stepsObject[currentStep]" :printCount="form?.printCount" @test="printTest" @prev="prevSteps" @print="printCodes" prevStepValue="connect"></print-wrapper>
             </view>
         </view>
     </z-paging>
@@ -27,19 +25,39 @@ import { tem30x30, tem60x40, tem60x60 } from '../models/print-tem';
 import PrintWrapper from '../models/print-wrapper.vue';
 import { writeBLECharacteristicSend } from '@/utils/blue-device-services';
 import jpPrinter from '../models/tspl';
+import { useClientRequest } from '@/utils/request';
+import RangePrint from '../models/range-print.vue';
+const printSpec = ref('30x30');
+const printCodes = async (data: any) => {
+    printSpec.value = data.printSpec;
+    // 检查是否正在打印
+    if (isPrinting.value) {
+        uni.showToast({ icon: 'none', title: '当前打印任务未完成,请稍后' });
+        return;
+    }
+    isPrinting.value = true;
+
+    getPrintCodeList();
+};
+
+// 打印列表
+const getPrintCodeList = async () => {
+    const res = await useClientRequest
+        .get(`/plt-api/app/printLog/getPrintCodeList/${opts.value?.id}`, {
+            start: opts.value?.startSn,
+            end: opts.value?.endSn,
+        })
+        .catch((err) => {
+            isPrinting.value = false;
+        });
+    if (!res || res.code !== 200) {
+        isPrinting.value = false;
+        return;
+    }
+    prepareSend(res?.data, printSpec.value)
+};
 const stepsObject = reactive<any>({
-    check: {
-        title: '核对信息',
-        value: 'check',
-        status: 'completed', // 为开始、进行中、已完成 三种状态分别值为 'not-started'、'in-progress'、'completed'
-        sort: 0,
-    },
-    confirm: {
-        title: '确认数量',
-        value: 'confirm',
-        status: 'completed', // 为开始、进行中、已完成 三种状态分别值为 'not-started'、'in-progress'、'completed'
-        sort: 1,
-    },
+
     connect: {
         title: '连接打印机',
         value: 'connect',
@@ -53,12 +71,14 @@ const stepsObject = reactive<any>({
         sort: 3,
     },
 });
-// 打印模式
-const mode = ref('self'); // 自行打印, 区间打印 值分别为 self, range
 const currentStep = ref('connect');
-const paging = ref(null);
 const isPrinting = ref(false);
-onLoad((options: any) => {});
+const opts = ref<any>(null);
+onLoad((options: any) => {
+    console.log(options);
+    opts.value = options;
+    getBatchInfo()
+});
 const nextSteps = (data: any) => {
     if (!data.info || !data?.info?.value) return;
     stepsObject[data?.info?.value] = {
@@ -67,42 +87,52 @@ const nextSteps = (data: any) => {
     stepsObject[data?.nextStepValue].status = 'in-progress';
     currentStep.value = data?.nextStepValue;
 };
+const info = ref<any>(null);
+const form = ref<any>(null);
+const getFormData = (data: any) => {
+    console.log(data);
+    
+    form.value = data;
+};
 const prevSteps = (data: any) => {
     currentStep.value = data?.prevStepValue;
 };
 const testList = reactive([
     {
-        pm: '三七',
-        zl: '20g',
-        scrq: '2012.09.18',
-        zzph: 87391273912,
-        cj: '云南省文山市县中药材有限公司',
-        zsm: 'QX0000005600000318',
-        qr: 'https://t.zycpzs.cn/?c=QCCS412507030000101ND'
+        padSn: '0000002',
+        prefix: 'PCC1W1260311',
+        sn: 2,
+        traceCode: 'PCC1W12603110000002AV',
+        url: 'https://t.yujin.shuziyunyao.com/pt?c=PCC1W12603110000002AV',
     },
 ]);
 const printTest = (data: any) => {
+    const device = stepsObject['connect']?.device;
+    if (!device) {
+        uni.showToast({ icon: 'none', title: '未连接设备' });
+        return;
+    }
     // 检查是否正在打印
     if (isPrinting.value) {
         uni.showToast({ icon: 'none', title: '当前打印任务未完成,请稍后' });
         return;
     }
+    isPrinting.value = true;
     // 测试数据
     prepareSend(testList, data.printSpec);
 };
 // 打印写入
 const prepareSend = (list: any[], spec: string = '30x30') => {
     if (spec == '30x30') {
-        // 判断idx是否是奇数
         writeSend30x30(list);
     }
     if (spec == '60x40') {
         // 40x40
-        writeSendCommand(list, '60x40', 0)
+        writeSendCommand(list, '60x40', 0);
     }
     if (spec == '60x60') {
         // 30x30
-        writeSendCommand(list, '60x60', 0)
+        writeSendCommand(list, '60x60', 0);
     }
 };
 const writeSend30x30 = (list: any[]) => {
@@ -115,14 +145,11 @@ const writeSend30x30 = (list: any[]) => {
         }
         return acc;
     }, []);
-    writeSendCommand(arr, '30x30', 0)
+    writeSendCommand(arr, '30x30', 0);
 };
 // writeSend
 const writeSendCommand = async (list: any[], spec: string = '30x30', idx = 0) => {
     // 首次调用时设置打印状态为进行中
-    if (idx === 0) {
-        isPrinting.value = true;
-    }
     let command = new jpPrinter();
     if (spec == '30x30') {
         // 判断idx是否是奇数
@@ -130,7 +157,7 @@ const writeSendCommand = async (list: any[], spec: string = '30x30', idx = 0) =>
         command.setGap(10);
         command.setCls();
         command.setDirection(1);
-        command = tem30x30(command, list[idx]);
+        command = tem30x30(command, list[idx], info.value);
     }
     if (spec == '60x40') {
         // 判断idx是否是奇数
@@ -138,7 +165,7 @@ const writeSendCommand = async (list: any[], spec: string = '30x30', idx = 0) =>
         command.setGap(10);
         command.setCls();
         command.setDirection(1);
-        command = tem60x40(command, list[idx]);
+        command = tem60x40(command, list[idx], info.value);
     }
     if (spec == '60x60') {
         // 判断idx是否是奇数
@@ -146,16 +173,16 @@ const writeSendCommand = async (list: any[], spec: string = '30x30', idx = 0) =>
         command.setGap(10);
         command.setCls();
         command.setDirection(1);
-        command = tem60x60(command, list[idx]);
+        command = tem60x60(command, list[idx], info.value);
     }
-    command.setPagePrint()
+    command.setPagePrint();
     const device = stepsObject['connect']?.device;
     if (!device) {
         uni.showToast({ icon: 'none', title: '未连接设备' });
         return;
     }
     console.log(command.getData());
-    
+
     await writeBLECharacteristicSend({
         deviceId: device.deviceId,
         serviceId: device.serviceId,
@@ -163,16 +190,22 @@ const writeSendCommand = async (list: any[], spec: string = '30x30', idx = 0) =>
         uint8Array: command.getData(),
     });
     if (list.length - 1 > idx) {
-        writeSendCommand(list, spec, idx + 1)
+        writeSendCommand(list, spec, idx + 1);
     } else {
         // 打印完成,重置状态
         isPrinting.value = false;
         uni.showToast({
             icon: 'none',
-            title: '打印完成'
-        })
+            title: '打印完成',
+        });
     }
 };
+// 获取批次信息接口
+const getBatchInfo = async () => {
+    const res = await useClientRequest.get(`/plt-api/app/packTask/getPackTraceSimpleInfo/${opts.value?.packId}`);
+    if (!res?.data) return
+    info.value = res?.data;
+}
 // 如果是 30x30
 </script>
 <style lang="scss" scoped></style>

+ 1 - 2
src/plant/print/print-range/index.vue

@@ -78,8 +78,7 @@ const stepsObject = reactive<any>({
         sort: 3,
     },
 });
-
-const currentStep = ref('print');
+const currentStep = ref('range');
 const isPrinting = ref(false);
 const opts = ref<any>(null);
 onLoad((options: any) => {