From f5062c2c10b26a50e9cc38bf37d02b3ce4603206 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期三, 07 十二月 2022 19:00:16 +0800 Subject: [PATCH] 2022-12-07 --- src/tabviews/zshare/actionList/printbutton/index.jsx | 295 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 254 insertions(+), 41 deletions(-) diff --git a/src/tabviews/zshare/actionList/printbutton/index.jsx b/src/tabviews/zshare/actionList/printbutton/index.jsx index 0e665c5..988c039 100644 --- a/src/tabviews/zshare/actionList/printbutton/index.jsx +++ b/src/tabviews/zshare/actionList/printbutton/index.jsx @@ -183,11 +183,7 @@ // 鏁版嵁閫夋嫨绫诲瀷鏍¢獙 this.actionSettingError() return - } else if ( - !btn.verify || - (btn.verify.printMode === 'normal' && (!btn.verify.Template || !btn.verify.linkUrl)) || - (btn.verify.printMode === 'custom' && (!btn.verify.printFunc || !btn.verify.linkUrl)) - ) { + } else if (!btn.verify || !btn.verify.printMode) { notification.warning({ top: 92, message: '璇峰畬鍠勬墦鍗伴獙璇佷俊鎭紒', @@ -232,10 +228,20 @@ } } + triggerPrint = (data, formlist = []) => { + const { btn } = this.props + + if (btn.verify.printMode === 'RFID') { + this.triggerRFIDPrint(data, formlist) + } else { + this.triggerNormalPrint(data, formlist) + } + } + /** * @description 瑙﹀彂鎵撳嵃 */ - triggerPrint = (data, formlist = []) => { + triggerNormalPrint = (data, formlist) => { const { btn } = this.props let formdata = {} let baseCount = 1 @@ -378,7 +384,7 @@ param.rduri = window.GLOB.mainSystemApi } - Api.genericInterface(param).then(result => { + Api.getSystemCacheConfig(param).then(result => { result.tempId = tempId resolve(result) }) @@ -448,6 +454,109 @@ } } else { this.execError(errorMsg) + } + }) + } + + /** + * @description 瑙﹀彂RFID鎵撳嵃 + */ + triggerRFIDPrint = (data, formlist) => { + const { btn } = this.props + let formdata = {} + let list = [] + + formlist.forEach(_data => { + formdata[_data.key] = _data.value + }) + + new Promise(resolve => { + if (btn.intertype === 'system') { // 浣跨敤绯荤粺鏃讹紝鐩存帴浠庤〃鏍兼垨琛ㄥ崟涓�夊彇鏁版嵁 + if (btn.Ot === 'notRequired') { + if (formlist.length > 0) { + list = [formdata] + } + } else { + data.forEach(cell => { + let _cell = {...cell, ...formdata} + list.push(_cell) + }) + } + + resolve(true) + } else { + this.getprintdata(btn, data, formdata, formlist).then(result => { + if (result.next) { + result.list.forEach(cell => { + // 绯荤粺鎵撳嵃鏁版嵁锛屾牎楠宒ata瀛楁 + if (!cell.data || cell.data.length === 0) return + + cell.data.forEach(m => { + let _cell = {...m, ...formdata} + list.push(_cell) + }) + }) + } + + resolve(result.next) + }) + } + }).then(res => { + // 鑾峰彇鎵撳嵃妯℃澘 getTemp + if (!res) return false + + if (list.length === 0) { + notification.warning({ + top: 92, + message: '鏈幏鍙栧埌鎵撳嵃鏁版嵁锛�', + duration: 5 + }) + return false + } + + let param = { + func: 's_PrintTemplateMGetData', + Type: 'Y', + // ID: tempId, // 娣诲姞妯℃澘鏃讹紝淇濆瓨鍙婃煡璇娇鐢ㄦā鏉垮弬鏁� + PrintTempNO: btn.verify.Template + } + + if (window.GLOB.mainSystemApi) { // 浠庡崟鐐圭櫥褰曟湇鍔″櫒鍙栨墦鍗伴厤缃俊鎭� + param.rduri = window.GLOB.mainSystemApi + } + + return Api.getSystemCacheConfig(param) + }).then(result => { + if (!result) { + this.setState({ loading: false }) + return + } + + if (!result.ConfigParam) { + notification.warning({ + top: 92, + message: '鏈幏鍙栧埌鎵撳嵃妯℃澘淇℃伅锛�', + duration: 5 + }) + this.setState({ loading: false }) + } else { + let configParam = '' + try { + configParam = JSON.parse(window.decodeURIComponent(window.atob(result.ConfigParam))) + } catch (e) { + configParam = '' + } + + if (!configParam) { + notification.warning({ + top: 92, + message: '鎵撳嵃妯℃澘瑙f瀽閿欒锛�', + duration: 5 + }) + this.setState({ loading: false }) + } else { + this.execRfidPrint(list, configParam) + } } }) } @@ -1087,48 +1196,152 @@ } } - // execRfidPrint = () => { - // let type = 'HF' - // let printparamsJsonArray = [] + execRfidPrint = (list, template) => { + const { btn } = this.props - // let mm = 12 - // if (type === 'HF') { - // printparamsJsonArray.push({PTK_OpenUSBPort: 255}); // 鎵撳紑鎵撳嵃鏈篣SB绔彛 - // printparamsJsonArray.push({PTK_ClearBuffer: ''}); // 娓呯┖缂撳瓨 - // printparamsJsonArray.push({PTK_SetDarkness: 10}); // 璁剧疆鎵撳嵃榛戝害 鍙栧�艰寖鍥� 0-20 - // printparamsJsonArray.push({PTK_SetPrintSpeed: 4}); // 璁剧疆鎵撳嵃閫熷害 - // printparamsJsonArray.push({PTK_SetDirection: 'B'}); // 璁剧疆鎵撳嵃鏂瑰悜 - // printparamsJsonArray.push({PTK_SetLabelHeight: 25*mm + ","+ 10*mm +","+ 0 +","+ false}); // 璁剧疆鏍囩楂樺害銆侀棿闅欏強鍋忕Щ - // printparamsJsonArray.push({PTK_SetLabelWidth: 60*mm}); // 璁剧疆鏍囩瀹藉害 - // printparamsJsonArray.push({PTK_SetRFID: 0+","+0+","+0+","+0+","+0}); // UHF RFID鎵撳嵃璁剧疆 - // printparamsJsonArray.push({PTK_RWRFIDLabel: 1+","+0+","+0+","+4+","+1+',EEBA99192945C746'}); - // printparamsJsonArray.push({PTK_DrawText_TrueType: "50,10,36,0,寰蒋闆呴粦,1,700,0,0,0,鍖椾含鏄庣鏈夐檺鍏徃"}); - // // printparamsJsonArray.push({PTK_DrawText_TrueType: x+","+y+","+FHeight+","+FWidth+","+FType+","+Fspin+","+FWeight+","+FItalic+","+FUnline+","+FStrikeOut+","+data}); - // // printparamsJsonArray.push({PTK_EncodeRFIDPC:'mkA040'}); - // printparamsJsonArray.push({PTK_PrintLabel:1+","+1}); - // printparamsJsonArray.push({PTK_CloseUSBPort: ""}); // 鍏抽棴USB閫氳绔彛 - // } + list = list.filter(item => !!item[btn.verify.valueField]) - // let data = { - // reqParam: '1', - // printparams: JSON.stringify(printparamsJsonArray) - // // printparams: JSON.stringify([{PTK_OpenUSBPort: 255},{PTK_ErrorReport_USBInterrupt: 'status:'},{PTK_GetPrinterDPI: 'DPI:'},{PTK_CloseUSBPort: ''}]) - // // printparams: JSON.stringify([{PTK_OpenUSBPort: 255},{PTK_RFIDCalibrate: ''},{PTK_CloseUSBPort: ''}]) - // } + if (list.length === 0) { + notification.warning({ + top: 92, + message: '鏈幏鍙栧埌鎵撳嵃鏁版嵁锛�', + duration: 5 + }) + this.setState({ loading: false }) + return + } - // Api.postekPrint(data).then(result => { + let width = template.width + let height = template.height + let gap = template.gap || 0 + let mm = 12 - // }) - // } + if (btn.verify.DPI === '203') { + mm = 8 + } else if (btn.verify.DPI === '600') { + mm = 24 + } + + let items = [] + template.elements.forEach(element => { + if (!['text', 'barcode', 'qrcode'].includes(element.type)) return + + let _field = element.field + + if (_field === 'other_field') { + _field = element.cusfield || '' + } + + let item = { + type: element.type, + value: element.value || '', + field: _field + } + + if (item.type === 'text') { + let size = Math.floor(4 * mm * (element.fontSize || 12) / 12) + let fontWeight = 400 + if (element.fontWeight === 'bold') { + fontWeight = 600 + } else if (element.fontWeight === 'bolder') { + fontWeight = 800 + } else if (element.fontWeight === 'lighter') { + fontWeight = 300 + } + item.draw = `${element.left * mm},${element.top * mm},${size},0,${element.fontFamily || '寰蒋闆呴粦'},${element.align === 'center' ? 5 : 1},${fontWeight},0,0,0,` + } else if (item.type === 'barcode') { + let codeType = 1 + if (element.barcodeType === 'EAN13') { + codeType = 'E30' + } + let narrowWidth = element.narrowWidth || 2 + let horizontal = element.narrowWidth || 2 + let vertical = Math.ceil(element.barcodeHeight * mm) + + item.draw = `${element.left * mm},${element.top * mm},0,${codeType},${narrowWidth},${horizontal},${vertical},${element.barcodeLabel === 'true' ? 'B' : 'N'},` + } else if (item.type === 'qrcode') { + let r = Math.ceil(element.qrcodeWidth / 2) + + item.draw = `${element.left * mm},${element.top * mm},0,0,0,${r},0,0,8,` + } + + items.push(item) + }) + + let ip = '192.168.1.2' + let params = list.map(cell => { + let array = [] + let value = cell[btn.verify.valueField] + + if (btn.verify.linkType !== 'USB') { + array.push({PTK_Connect_Timer: `${ip},${btn.verify.port},5`}); // 鎵撳紑鎵撳嵃鏈虹綉缁滅鍙� + } else { + array.push({PTK_OpenUSBPort: btn.verify.port}); // 鎵撳紑鎵撳嵃鏈篣SB绔彛 + } + + array.push({PTK_ClearBuffer: ''}); // 娓呯┖缂撳瓨 + array.push({PTK_SetDirection: 'B'}); // 璁剧疆鎵撳嵃鏂瑰悜 + array.push({PTK_SetLabelHeight: height * mm + ',' + gap * mm + ',' + 0 + ',' + false}); // 璁剧疆鏍囩楂樺害銆侀棿闅欏強鍋忕Щ + array.push({PTK_SetLabelWidth: width * mm}); // 璁剧疆鏍囩瀹藉害 + array.push({PTK_SetRFID: '0,0,0,0,0'}); // UHF RFID鎵撳嵃璁剧疆 + array.push({PTK_RWRFIDLabel: '1,0,0,4,1,' + value}); + + items.forEach(m => { + let val = '' + if (m.field) { + val = cell[m.field] + } else { + val = m.value + } + + if (!val && val !== 0) return + + if (m.type === 'text') { + array.push({PTK_DrawText_TrueType: m.draw + val}); + } else if (m.type === 'barcode') { + array.push({PTK_DrawBarcode: m.draw + val}); + } else if (m.type === 'qrcode') { + array.push({PTK_DrawBar2D_QR: m.draw + val}); + } + }) + + array.push({PTK_PrintLabel: '1,1'}); + array.push({PTK_CloseUSBPort: ''}); // 鍏抽棴USB閫氳绔彛 + + return { + reqParam: '1', + printparams: JSON.stringify(array) + } + }) + + this.loopRFIDPrint(params) + } + + loopRFIDPrint = (params) => { + let param = params.shift() + + Api.postekPrint(param).then(res => { + if (res.retval === '0') { + if (params.length === 0) { + this.execSuccess({ ErrCode: 'S', message: '', ErrMesg: '鎵撳嵃璇锋眰宸插彂鍑恒��', status: true }) + } else { + setTimeout(() => { + this.loopRFIDPrint(params) + }, 200) + } + } else { + if (res.retval === '30021') { + res.msg = res.msg.replace(/PTK_ClearBuffer[\s\S]*/, '') + } + + this.execError({ErrCode: 'N', message: res.msg}) + } + }) + } execPrint = (list, template, formdata) => { const { btn } = this.props let _errors = [] - - // if (btn) { - // this.execRfidPrint() - // return - // } let defaultPrinter = btn.verify.defaultPrinter || 'lackprinter' let printers = {} -- Gitblit v1.8.0