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/templates/sharecomponent/actioncomponent/verifyprint/index.jsx | 130 +++++++++++++-- src/views/printTemplate/option.js | 18 ++ src/views/printTemplate/mutilform/index.jsx | 2 src/views/systemfunc/sidemenu/config.jsx | 4 src/utils/utils.js | 2 src/tabviews/zshare/actionList/printbutton/index.jsx | 295 +++++++++++++++++++++++++++++++----- src/views/login/index.jsx | 15 + 7 files changed, 398 insertions(+), 68 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 = {} diff --git a/src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx index 1c8b257..324f63b 100644 --- a/src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx +++ b/src/templates/sharecomponent/actioncomponent/verifyprint/index.jsx @@ -213,6 +213,20 @@ changePrintMode = (e) => { let value = e.target.value + if (value === 'RFID') { + this.setState({linkType: 'USB', port: 255}, () => { + this.props.form.setFieldsValue({ + linkType: 'USB' + }) + }) + } else if (this.state.printMode === 'RFID') { + this.setState({linkType: 'system'}, () => { + this.props.form.setFieldsValue({ + linkType: 'system' + }) + }) + } + this.setState({ printMode: value }) @@ -227,6 +241,14 @@ if (value === 'system') { this.props.form.setFieldsValue({ linkUrl: '127.0.0.1:13529' + }) + } else if (value === 'USB') { + this.props.form.setFieldsValue({ + port: '255' + }) + } else if (value === 'network') { + this.props.form.setFieldsValue({ + port: '9100' }) } }) @@ -262,11 +284,12 @@ <Radio.Group onChange={this.changePrintMode}> <Radio value="normal">鏍囧噯</Radio> <Radio value="custom">鑷畾涔�</Radio> + <Radio value="RFID">RFID</Radio> </Radio.Group> )} </Form.Item> </Col> - <Col span={8}> + {printMode !== 'RFID' ? <Col span={8}> <Form.Item label="閾炬帴绫诲瀷"> {getFieldDecorator('linkType', { initialValue: linkType || 'system' @@ -277,9 +300,21 @@ </Radio.Group> )} </Form.Item> - </Col> + </Col> : <Col span={8}> - <Form.Item label={'閾炬帴鍦板潃'}> + <Form.Item label="閾炬帴绫诲瀷"> + {getFieldDecorator('linkType', { + initialValue: linkType || 'USB' + })( + <Radio.Group onChange={this.changeLinkType}> + <Radio value="USB">USB</Radio> + <Radio value="network">缃戠粶绔彛</Radio> + </Radio.Group> + )} + </Form.Item> + </Col>} + {printMode !== 'RFID' ? <Col span={8}> + <Form.Item label="閾炬帴鍦板潃"> {getFieldDecorator('linkUrl', { initialValue: verify.linkUrl || '127.0.0.1:13529', rules: [ @@ -290,7 +325,20 @@ ] })(<Input placeholder="" autoComplete="off" disabled={linkType === 'system'} />)} </Form.Item> - </Col> + </Col> : + <Col span={8}> + <Form.Item label={'绔彛'}> + {getFieldDecorator('port', { + initialValue: verify.port || '255', + rules: [ + { + required: true, + message: '璇疯緭鍏ョ鍙�!' + } + ] + })(<Input placeholder="" autoComplete="off" />)} + </Form.Item> + </Col>} {printMode === 'custom' ? <Col span={24}> <Form.Item label={'澶勭悊鍑芥暟'} className="printFunc"> {getFieldDecorator('printFunc', { @@ -306,7 +354,60 @@ )} </Form.Item> </Col> : null} + {printMode === 'RFID' ? <Col span={8}> + <Form.Item label={ + <Tooltip placement="topLeft" title="鐢ㄤ簬鍗曚綅鎹㈢畻銆�"> + <QuestionCircleOutlined className="mk-form-tip" /> + 鍒嗚鲸鐜� + </Tooltip> + }> + {getFieldDecorator('DPI', { + initialValue: verify.DPI || '300' + })( + <Radio.Group> + <Radio value="203">203</Radio> + <Radio value="300">300</Radio> + <Radio value="600">600</Radio> + </Radio.Group> + )} + </Form.Item> + </Col> : null} + {printMode === 'RFID' ? <Col span={8}> + <Form.Item label={ + <Tooltip placement="topLeft" title="闇�瑕佸瓨璐嚦鑺墖涓殑鍊硷紝璇峰~鍐欏搴旂殑瀛楁鍚嶏紝娉ㄦ剰澶у皬鍐欍��"> + <QuestionCircleOutlined className="mk-form-tip" /> + 鎵撳嵃鍊� + </Tooltip> + }> + {getFieldDecorator('valueField', { + initialValue: verify.valueField || '', + rules: [ + { + required: true, + message: '璇疯緭鍏ュ瓧娈靛悕!' + } + ] + })(<Input placeholder="" autoComplete="off" disabled={linkType === 'system'} />)} + </Form.Item> + </Col> : null} {printMode === 'normal' ? <Col span={8}> + <Form.Item label={ + <Tooltip placement="topLeft" title="鎵撳嵃鍒楄〃涓虹┖鏃讹紝鏄惁鎻愮ず鐢ㄦ埛銆�"> + <QuestionCircleOutlined className="mk-form-tip" /> + 绌哄�兼彁绀� + </Tooltip> + }> + {getFieldDecorator('emptyTip', { + initialValue: verify.emptyTip || 'true' + })( + <Radio.Group> + <Radio value="true">鏄�</Radio> + <Radio value="false">鍚�</Radio> + </Radio.Group> + )} + </Form.Item> + </Col> : null} + {printMode !== 'custom' ? <Col span={8}> <Form.Item label="鎵撳嵃妯℃澘"> {getFieldDecorator('Template', { initialValue: verify.Template || '', @@ -331,25 +432,8 @@ </Select> )} </Form.Item> - </Col> : null } - {printMode === 'normal' ? <Col span={8}> - <Form.Item label={ - <Tooltip placement="topLeft" title="鎵撳嵃鍒楄〃涓虹┖鏃讹紝鏄惁鎻愮ず鐢ㄦ埛銆�"> - <QuestionCircleOutlined className="mk-form-tip" /> - 绌哄�兼彁绀� - </Tooltip> - }> - {getFieldDecorator('emptyTip', { - initialValue: verify.emptyTip || 'true' - })( - <Radio.Group> - <Radio value="true">鏄�</Radio> - <Radio value="false">鍚�</Radio> - </Radio.Group> - )} - </Form.Item> </Col> : null} - {printMode === 'normal' ? <Col span={8}> + {printMode !== 'custom' ? <Col span={8} offset={printMode === 'RFID' ? 16 : 0}> <img className="legend" src={this.state.selectimg} alt=""/> </Col> : null } </Row> @@ -360,7 +444,7 @@ 鎵撳嵃绫诲瀷 {verify.printerTypeList.length ? <span className="count-tip">{verify.printerTypeList.length}</span> : null} </span> - } key="2"> + } disabled={printMode === 'RFID'} key="2"> <Form {...formItemLayout}> <Row gutter={24}> <Col span={24} className="print-tip"> diff --git a/src/utils/utils.js b/src/utils/utils.js index 434200c..e92cda2 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -2185,7 +2185,7 @@ style.color = mark.color innerStyle = {color: mark.color} } else if (type === 'background') { - style.background = mark.color + style.backgroundColor = mark.color if (mark.fontColor) { style.color = mark.fontColor innerStyle = {color: mark.fontColor} diff --git a/src/views/login/index.jsx b/src/views/login/index.jsx index a84496f..fada920 100644 --- a/src/views/login/index.jsx +++ b/src/views/login/index.jsx @@ -74,6 +74,21 @@ // 鐧诲綍鎻愪氦 let res = await Api.getusermsg(param.username, param.password, false, ipAddress, city) if (res.status) { + if (res.check_mob) { + let loginWays = this.state.loginWays.filter(item => item.type === 'sms_vcode') + + if (loginWays.length > 0) { + this.setState({loginWays: null, isDisabled: false}, () => { + this.setState({loginWays: loginWays}) + }) + Modal.warning({ + title: '涓虹‘璁ゆ槸鎮ㄦ湰浜烘搷浣滐紝璇蜂娇鐢ㄦ墜鏈虹煭淇¢獙璇佺爜杩涜韬唤璁よ瘉', + okText: '鐭ラ亾浜�' + }) + return + } + } + sessionStorage.setItem('UserID', res.UserID) sessionStorage.setItem('LoginUID', res.LoginUID) sessionStorage.setItem('User_Name', res.UserName) diff --git a/src/views/printTemplate/mutilform/index.jsx b/src/views/printTemplate/mutilform/index.jsx index d9d7a0e..ba52c7b 100644 --- a/src/views/printTemplate/mutilform/index.jsx +++ b/src/views/printTemplate/mutilform/index.jsx @@ -196,7 +196,7 @@ initialValue: item.initval, rules: [ { - required: true, + required: item.required, message: '璇疯緭鍏�' + item.label + '!' } ] diff --git a/src/views/printTemplate/option.js b/src/views/printTemplate/option.js index 24e4b88..f634781 100644 --- a/src/views/printTemplate/option.js +++ b/src/views/printTemplate/option.js @@ -268,6 +268,15 @@ initval: config.rotate || 0, required: false, options: Rotate + }, + { + type: 'number', + key: 'gap', + label: '闂撮殭', + initval: config.gap || '', + tooltip: 'RFID鏍囩闂撮殭銆�', + min: 0, + required: false } ] } @@ -637,6 +646,15 @@ required: true }, { + type: 'number', + key: 'narrowWidth', + label: '鍗曞厓瀹藉害', + initval: item.narrowWidth, + tooltip: '娉細RFID鏉$爜鍗曞厓瀹藉害锛岄粯璁ゅ�间负2銆�', + precision: 0, + required: false + }, + { type: 'select', key: 'background', label: '鑳屾櫙鑹�', diff --git a/src/views/systemfunc/sidemenu/config.jsx b/src/views/systemfunc/sidemenu/config.jsx index 6726114..1e5c708 100644 --- a/src/views/systemfunc/sidemenu/config.jsx +++ b/src/views/systemfunc/sidemenu/config.jsx @@ -41,8 +41,8 @@ MenuName: '鏍囩椤电鐞�', }, { src: '', - PageParam: {OpenType: 'newtab', Template: 'CommonTable'}, - type: 'CommonTable', + PageParam: {OpenType: 'newtab', Template: 'BaseTable'}, + type: 'BaseTable', MenuID: '1578900109100np8aqd0a77q3na46oas', MenuNo: 'sPrintTemplateM', MenuName: '鏍囩鎵撳嵃妯℃澘', -- Gitblit v1.8.0