| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
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; |  |                         //这里不再记录打印记录,因为有了斑马打印 【Editby 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 = ''; |  |                             //这里不再记录打印记录,因为有了斑马打印 【Editby 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> | 
 |