From 24842b40de5cd60700bf69dfd38a0332f5431e36 Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 23 五月 2025 10:55:07 +0800 Subject: [PATCH] Merge branch 'master' into positec --- src/tabviews/zshare/actionList/printbutton/index.jsx | 588 +++++++++++++++++++++++++++++++++++++++------------------- 1 files changed, 397 insertions(+), 191 deletions(-) diff --git a/src/tabviews/zshare/actionList/printbutton/index.jsx b/src/tabviews/zshare/actionList/printbutton/index.jsx index 2e24601..8b330d2 100644 --- a/src/tabviews/zshare/actionList/printbutton/index.jsx +++ b/src/tabviews/zshare/actionList/printbutton/index.jsx @@ -8,6 +8,7 @@ import Utils from '@/utils/utils.js' import asyncSpinComponent from '@/utils/asyncSpinComponent' import { updateForm } from '@/utils/utils-update.js' +import UtilsDM from '@/utils/utils-datamanage.js' import MKEmitter from '@/utils/events.js' import MkIcon from '@/components/mk-icon' // import './index.scss' @@ -37,7 +38,8 @@ loading: false, disabled: false, hidden: false, - autoMatic: false + autoMatic: false, + dict: window.GLOB.dict } UNSAFE_componentWillMount () { @@ -130,34 +132,33 @@ /** * @description 瑙﹀彂鎸夐挳鎿嶄綔 */ - actionTrigger = (triggerId, record, type) => { - const { BID, btn, selectedData, setting } = this.props - const { loading, disabled } = this.state + actionTrigger = (triggerId, record, type, lid) => { + const { BID, btn, selectedData, setting, LID } = this.props + const { loading, disabled, dict } = this.state if (loading || disabled) return if (triggerId && btn.uuid !== triggerId) return + if (type === 'linkbtn' && !btn.$toolbtn && LID !== lid) return if (setting.supModule && !BID) { notification.warning({ top: 92, - message: '闇�瑕佷笂绾т富閿�硷紒', + message: setting.supModTip || dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) - return - } else if (type === 'linkbtn' && !btn.$toolbtn && !is(fromJS(selectedData || []), fromJS(record))) { return } this.setState({autoMatic: type === 'autoMatic'}) - let _this = this + let that = this let data = record || selectedData || [] if (btn.Ot !== 'notRequired' && data.length === 0) { // 闇�瑕侀�夋嫨琛屾椂锛屾牎楠屾暟鎹� notification.warning({ top: 92, - message: '璇烽�夋嫨琛岋紒', + message: dict['select_row'] || '璇烽�夋嫨琛岋紒', duration: 5 }) return @@ -165,21 +166,7 @@ // 闇�瑕侀�夋嫨鍗曡鏃讹紝鏍¢獙鏁版嵁 notification.warning({ top: 92, - message: '璇烽�夋嫨鍗曡鏁版嵁锛�', - duration: 5 - }) - return - } else if (!btn.verify || !btn.verify.printMode) { - notification.warning({ - top: 92, - message: '璇峰畬鍠勬墦鍗伴獙璇佷俊鎭紒', - duration: 5 - }) - return - } else if (btn.intertype === 'system' && btn.verify.dataType === 'custom' && (!btn.verify.setting || btn.verify.columns.length === 0)) { - notification.warning({ - top: 92, - message: '鑷畾涔夋墦鍗版暟鎹璁剧疆鏁版嵁婧愶紒', + message: dict['select_single_row'] || '璇烽�夋嫨鍗曡鏁版嵁锛�', duration: 5 }) return @@ -193,6 +180,7 @@ let modal = this.state.btnconfig if (!modal && btn.modal) { modal = this.handleModelConfig(btn.modal) + modal.uuid = btn.uuid } this.setState({ @@ -204,12 +192,14 @@ } else if (btn.execMode === 'prompt') { this.setState({ loading: true }) confirm({ - title: '纭畾瑕佹墽琛屽悧?', + title: dict['exec_sure'] || '纭畾瑕佹墽琛屽悧?', + okText: dict['ok'] || '纭畾', + cancelText: dict['cancel'] || '鍙栨秷', onOk() { - _this.triggerPrint(data) + that.triggerPrint(data) }, onCancel() { - _this.setState({ loading: false }) + that.setState({ loading: false }) } }) } else { @@ -270,6 +260,9 @@ Object.keys(cell).forEach(key => { let _key = key.toLowerCase() + + if (/^\$/.test(_key)) return + _cell[_key] = cell[key] }) @@ -405,7 +398,6 @@ errorMsg = { ErrCode: 'N', message: _temp.error, - ErrMesg: _temp.error, status: false } } else { @@ -506,7 +498,7 @@ if (list.length === 0) { notification.warning({ top: 92, - message: '鏈幏鍙栧埌鎵撳嵃鏁版嵁锛�', + message: window.GLOB.dict['no_data'] || '鏈幏鍙栧埌鎵撳嵃鏁版嵁锛�', duration: 5 }) return false @@ -533,7 +525,7 @@ if (!result.ConfigParam) { notification.warning({ top: 92, - message: '鏈幏鍙栧埌鎵撳嵃妯℃澘淇℃伅锛�', + message: window.GLOB.dict['no_print_temp'] || '鏈幏鍙栧埌鎵撳嵃妯℃澘淇℃伅锛�', duration: 5 }) this.setState({ loading: false }) @@ -565,16 +557,66 @@ execCustomPrint = (printlist, formdata) => { const { btn } = this.props - this.execSuccess({ - ErrCode: '-1', - message: '', - status: true - }) + let callback = null + let printReject = null + let skip = false + let send = false + + let data = fromJS({ + data: printlist, + form: formdata + }).toJS() + + if (!window.GLOB.errorLog) { + printReject = (msg) => { + if (send) return + + send = true + data.message = msg + + window.mkInfo(JSON.stringify(data)) + } + } else { + printReject = (msg) => { + if (send) return + + send = true + data.message = msg + + let param = { + func: 's_special_error_note_log', + api_url: btn.logLabel, + error_code: 507, + error_time: moment().format('YYYY-MM-DD HH:mm:ss'), + api_param: JSON.stringify(data) + } + Api.genericInterface(param) + } + } + + if (/callback\(\)/.test(btn.verify.printFunc)) { + callback = () => { + if (skip) return + skip = true + + this.execSuccess({ + ErrCode: '-1', + message: '', + status: true + }) + } + } else { + this.execSuccess({ + ErrCode: '-1', + message: '', + status: true + }) + } try { // eslint-disable-next-line - let func = new Function('data', 'form', 'printer', 'notification', 'Api', 'systemType', btn.verify.printFunc) - func(printlist, formdata, btn.verify, notification, Api, window.GLOB.systemType) + let func = new Function('data', 'form', 'printer', 'notification', 'Api', 'systemType', 'callback', 'printReject', btn.verify.printFunc) + func(printlist, formdata, btn.verify, notification, Api, window.GLOB.systemType, callback, printReject) // 鑷畾涔夋墦鍗扮ず渚� // let defaultPrinter = printer.defaultPrinter || 'lackprinter' @@ -770,18 +812,13 @@ } catch (e) { console.warn(e) - try { - // eslint-disable-next-line - let evalfunc = eval('(true && function (data, form, printer, notification, Api, systemType) {' + btn.verify.printFunc + '})') - evalfunc(printlist, formdata, btn.verify, notification, Api, window.GLOB.systemType) - } catch (error) { - console.warn(error) - notification.warning({ - top: 92, - message: '鑷畾涔夊嚱鏁版墽琛岄敊璇紒', - duration: 5 - }) - } + notification.warning({ + top: 92, + message: window.GLOB.dict['func_error'] || '鑷畾涔夊嚱鏁版墽琛岄敊璇紒', + duration: 5 + }) + + printReject(window.GLOB.dict['func_error'] || '鑷畾涔夊嚱鏁版墽琛岄敊璇紒') } } @@ -903,6 +940,14 @@ if (btn.intertype === 'inner') { params = params.map(_param => { _param.func = btn.innerFunc + + if (btn.recordUser === 'true') { + _param.username = sessionStorage.getItem('User_Name') || '' + _param.fullname = sessionStorage.getItem('Full_Name') || '' + } + if (btn.dataM === 'true') { + _param.dataM = sessionStorage.getItem('dataM') === 'true' ? 'Y' : '' + } return _param }) @@ -919,7 +964,7 @@ Promise.all(deffers).then(result => { let errorMsg = '' result.forEach(res => { - if (!res.status) { + if (!res.status && !errorMsg) { errorMsg = res } }) @@ -945,12 +990,71 @@ getDefaultSql = (formlist, data, ID) => { const { BID, btn, columns } = this.props + if (window.backend && window.GLOB.CacheData.has('sql_' + btn.uuid)) { + let setting = {...btn.verify.setting} + setting.interType = 'system' + setting.uuid = btn.uuid + + let _param = UtilsDM.getQueryDataParams(setting, [], setting.order, 1, 9999, BID, ID) + let item = window.GLOB.CacheData.get('sql_' + btn.uuid) + + _param.data[0].exps = _param.data[0].exps.filter(n => n.key !== 'mk_search') + let formkeys = [] + + formlist.forEach(form => { + if (!item.reps.includes(form.key)) return + + formkeys.push(form.key) + + let val = form.value + if (form.type === 'number' || form.type === 'rate') { + if (isNaN(val) || val === '') { + val = 0 + } + } else if (['date', 'datemonth'].includes(form.type)) { + val = val || '1949-10-01' + } + + _param.data[0].exps.push({ + key: 'mk_' + form.key + '_mk', + value: val + }) + }) + + if (data && columns && columns.length > 0) { + let datavars = {} + + Object.keys(data).forEach(key => { + datavars[key.toLowerCase()] = data[key] + }) + + columns.forEach(col => { + if (!item.reps.includes(col.field) || formkeys.includes(col.field)) return + if (!col.datatype) return + + let _key = col.field.toLowerCase() + let _val = datavars.hasOwnProperty(_key) ? datavars[_key] : '' + + if (/^date/ig.test(col.datatype) && !_val) { + _val = '1949-10-01' + } + + _param.data[0].exps.push({ + key: 'mk_' + col.field + '_mk', + value: _val + }) + }) + } + + return _param + } + let arrFields = btn.verify.columns.map(col => col.field).join(',') let param = { func: 'sPC_Get_TableData', obj_name: 'data', - exec_type: 'y', + exec_type: window.GLOB.execType || 'y', arr_field: arrFields, default_sql: btn.verify.setting.defaultSql } @@ -976,10 +1080,15 @@ let _dataresource = btn.verify.setting.dataresource let _customScript = '' - + let _tailScript = '' btn.verify.scripts && btn.verify.scripts.forEach(script => { - if (script.status !== 'false') { + if (script.status === 'false') return + if (script.position !== 'back') { _customScript += ` + ${script.sql} + ` + } else { + _tailScript += ` ${script.sql} ` } @@ -989,16 +1098,40 @@ _dataresource = '' } + let custompage = false + + if (/order\s+by\s+sort_id\s*$/i.test(_dataresource)) { + custompage = true + } else if (/@pageSize@|@orderBy@|@mk_total/i.test(_dataresource + _customScript + _tailScript)) { + custompage = true + } + + let isDataM = sessionStorage.getItem('dataM') === 'true' + let regoptions = [ + { reg: /@orderBy@/ig, value: btn.verify.setting.order }, + { reg: /@pageSize@/ig, value: '9999' }, + { reg: /@pageIndex@/ig, value: '1'}, + { reg: /@ID@/ig, value: `'${ID}'`}, + { reg: /@BID@/ig, value: `'${BID || ''}'`}, + { reg: /@LoginUID@/ig, value: `'${sessionStorage.getItem('LoginUID') || ''}'`}, + { reg: /@SessionUid@/ig, value: `'${localStorage.getItem('SessionUid') || ''}'`}, + { reg: /@UserID@/ig, value: `'${sessionStorage.getItem('UserID') || ''}'`}, + { reg: /@Appkey@/ig, value: `'${window.GLOB.appkey || ''}'`}, + { reg: /@lang@/ig, value: `'${sessionStorage.getItem('lang')}'`}, + { reg: /@typename@/ig, value: `'admin'`}, + { reg: /\$@/ig, value: isDataM ? '/*' : ''}, + { reg: /@\$/ig, value: isDataM ? '*/' : ''}, + { reg: /@datam@/ig, value: isDataM ? `'Y'` : `''`}, + ] + + regoptions.forEach(item => { + _dataresource = _dataresource.replace(item.reg, item.value) + _customScript = _customScript.replace(item.reg, item.value) + _tailScript = _tailScript.replace(item.reg, item.value) + }) + if (/\s/.test(_dataresource)) { _dataresource = '(' + _dataresource + ') tb' - } - - if (sessionStorage.getItem('dataM') === 'true') { // 鏁版嵁鏉冮檺 - _dataresource = _dataresource.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'') - _customScript = _customScript.replace(/\$@/ig, '/*').replace(/@\$/ig, '*/').replace(/@datam@/ig, '\'Y\'') - } else { - _dataresource = _dataresource.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'') - _customScript = _customScript.replace(/@\$|\$@/ig, '').replace(/@datam@/ig, '\'\'') } let initsql = `declare @ErrorCode nvarchar(50),@retmsg nvarchar(4000),@UserName nvarchar(50),@FullName nvarchar(50),@RoleID nvarchar(512),@mk_departmentcode nvarchar(512),@mk_organization nvarchar(512),@mk_user_type nvarchar(20),@mk_nation nvarchar(50),@mk_province nvarchar(50),@mk_city nvarchar(50),@mk_district nvarchar(50),@mk_address nvarchar(100) @@ -1012,13 +1145,11 @@ formlist.forEach(form => { let _key = form.key.toLowerCase() - if (_vars.includes(_key)) return - _vars.push(_key) if (form.type === 'number' || form.type === 'rate') { let val = form.value - if (isNaN(val)) { + if (isNaN(val) || val === '') { val = 0 } _initvars.push(`@${_key}=${val}`) @@ -1028,7 +1159,7 @@ _initvars.push(`@${_key}='${form.value}'`) } - if (form.fieldlen && form.fieldlen > 2048) { + if (form.fieldlen && form.fieldlen > 4000) { form.fieldlen = 'max' } @@ -1086,7 +1217,6 @@ select ${_initvars.join(',')} ` } - if (_customScript) { _customScript = `${initsql} @@ -1094,49 +1224,40 @@ ` } - _dataresource = _dataresource.replace(/@select\$|\$select@/ig, '') - _customScript = _customScript.replace(/@select\$|\$select@/ig, '') - _dataresource = _dataresource.replace(/\$sum@/ig, '/*') - _dataresource = _dataresource.replace(/@sum\$/ig, '*/') - _customScript = _customScript.replace(/\$sum@/ig, '/*') - _customScript = _customScript.replace(/@sum\$/ig, '*/') - - _dataresource = _dataresource.replace(/@ID@/ig, `'${ID}'`) - _customScript = _customScript.replace(/@ID@/ig, `'${ID}'`) - _dataresource = _dataresource.replace(/@BID@/ig, `'${BID || ''}'`) - _customScript = _customScript.replace(/@BID@/ig, `'${BID || ''}'`) - _dataresource = _dataresource.replace(/@LoginUID@/ig, `'${sessionStorage.getItem('LoginUID') || ''}'`) - _customScript = _customScript.replace(/@LoginUID@/ig, `'${sessionStorage.getItem('LoginUID') || ''}'`) - _dataresource = _dataresource.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`) - _customScript = _customScript.replace(/@SessionUid@/ig, `'${localStorage.getItem('SessionUid') || ''}'`) - _dataresource = _dataresource.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`) - _customScript = _customScript.replace(/@UserID@/ig, `'${sessionStorage.getItem('UserID') || ''}'`) - _dataresource = _dataresource.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`) - _customScript = _customScript.replace(/@Appkey@/ig, `'${window.GLOB.appkey || ''}'`) - _dataresource = _dataresource.replace(/@typename@/ig, `'admin'`) - _customScript = _customScript.replace(/@typename@/ig, `'admin'`) - - let LText = '' if (_dataresource) { - LText = `/*system_query*/select ${arrFields} from (select ${arrFields} ,ROW_NUMBER() over(order by ${btn.verify.setting.order}) as rows from ${_dataresource}) tmptable order by tmptable.rows ` + if (custompage) { + LText = `/*system_query*/select ${arrFields} from ${_dataresource} ` + } else { + LText = `/*system_query*/select ${arrFields} from (select ${arrFields} ,ROW_NUMBER() over(order by ${btn.verify.setting.order}) as rows from ${_dataresource}) tmptable order by tmptable.rows ` + } } if (_customScript) { if (LText) { LText = `${LText} + ${_tailScript} aaa: if @ErrorCode!='' insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,'${sessionStorage.getItem('UserID') || ''}' ` } else { _customScript = `${_customScript} + ${_tailScript} aaa: if @ErrorCode!='' insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,'${sessionStorage.getItem('UserID') || ''}' ` } + } else if (_tailScript) { + LText = `${initsql} + ${LText} + ${_tailScript} + aaa: + if @ErrorCode!='' + insert into tmp_err_retmsg (ID, ErrorCode, retmsg, CreateUserID) select @time_id@,@ErrorCode, @retmsg,'${sessionStorage.getItem('UserID') || ''}' + ` } else { LText = `${initsql} ${LText} @@ -1144,17 +1265,17 @@ } // 娴嬭瘯绯荤粺鎵撳嵃鏌ヨ璇彞 - if (window.GLOB.debugger === true || (window.debugger === true && window.GLOB.sysType !== 'cloud')) { - _customScript && console.info(`${btn.logLabel ? `/*${btn.logLabel} 鑷畾涔夎剼鏈�*/\n` : ''}${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`) - LText && console.info(`${btn.logLabel ? `/*${btn.logLabel} 鏁版嵁婧�*/\n` : ''}` + LText.replace(/\n\s{8}/ig, '\n')) + if (window.GLOB.debugger === true) { + _customScript && window.mkInfo(`${btn.logLabel ? `/*${btn.logLabel} 鑷畾涔夎剼鏈�*/\n` : ''}${LText ? '' : '/*涓嶆墽琛岄粯璁ql*/\n'}${_customScript}`) + LText && window.mkInfo(`${btn.logLabel ? `/*${btn.logLabel} 鏁版嵁婧�*/\n` : ''}` + LText.replace(/\n\s{8}/ig, '\n')) } if (btn.logLabel) { param.menuname = btn.logLabel } - param.custom_script = Utils.formatOptions(_customScript) - param.LText = Utils.formatOptions(LText) + param.custom_script = Utils.formatOptions(_customScript, param.exec_type) + param.LText = Utils.formatOptions(LText, param.exec_type) param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') param.secretkey = Utils.encrypt('', param.timestamp) @@ -1210,41 +1331,27 @@ // 澶栭儴璇锋眰 _outParam = JSON.parse(JSON.stringify(res)) - if (window.GLOB.mkHS) { - if (btn.sysInterface === 'true' && window.GLOB.cloudServiceApi) { - res.rduri = window.GLOB.cloudServiceApi - res.userid = sessionStorage.getItem('CloudUserID') || '' - res.LoginUID = sessionStorage.getItem('CloudLoginUID') || '' - } else if (btn.sysInterface !== 'true') { - if (window.GLOB.systemType === 'production' && btn.proInterface) { - res.rduri = btn.proInterface - } else { - res.rduri = btn.interface - } + if (btn.sysInterface === 'true') { + if (window.GLOB.mainSystemApi) { + res.rduri = window.GLOB.mainSystemApi } - } else { - if (btn.sysInterface === 'true') { - if (window.GLOB.mainSystemApi) { - res.rduri = window.GLOB.mainSystemApi - } - } else if (btn.sysInterface === 'external') { - if (window.GLOB.systemType === 'production') { - res.$token = btn.exProInterface || '' - } else { - res.$token = btn.exInterface || '' - } - ver_token = true + } else if (btn.sysInterface === 'external') { + if (window.GLOB.systemType === 'production') { + res.$token = btn.exProInterface || '' } else { - if (window.GLOB.systemType === 'production' && btn.proInterface) { - res.rduri = btn.proInterface - } else { - res.rduri = btn.interface - } + res.$token = btn.exInterface || '' + } + ver_token = true + } else { + if (window.GLOB.systemType === 'production' && btn.proInterface) { + res.rduri = btn.proInterface + } else { + res.rduri = btn.interface + } - let host = window.GLOB.baseurl.replace(/http(s):\/\//, '') - if (res.rduri.indexOf(host) === -1 && /\/dostars/.test(res.rduri)) { - res.$login = true - } + let host = window.GLOB.baseurl.replace(/http(s):\/\//, '') + if (res.rduri.indexOf(host) === -1 && /\/dostars/.test(res.rduri)) { + res.$login = true } } @@ -1256,7 +1363,8 @@ }).then(response => { if (!response || response.ErrCode === 'LoginError') return - if (ver_token && response.ErrMesg === 'token_error') { + if (ver_token && response.ErrCode === 'token_error') { + response.ErrCode = 'E' this.execError(response) _resolve({next: false, list: []}) } else if (btn.callbackFunc) { @@ -1332,7 +1440,7 @@ let imgs = [] if (!res.ConfigParam) { - error = '鏈幏鍙栧埌鎵撳嵃妯℃澘淇℃伅锛�' + error = window.GLOB.dict['no_print_temp'] || '鏈幏鍙栧埌鎵撳嵃妯℃澘淇℃伅锛�' } else { try { configParam = JSON.parse(window.decodeURIComponent(window.atob(res.ConfigParam))) @@ -1433,8 +1541,13 @@ if (item.Field) { fields.push(item.Field) // 鏉$爜浜岀淮鐮佸瓧娈典笉鍙负绌� - if (item.Type === 'qrcode' || item.Type === 'barcode') { + if (item.Type === 'barcode') { nonEFields.push(item.Field) + } + } else if (!item.Value) { + // 鏉$爜浜岀淮鐮佸唴瀹逛笉鍙负绌� + if (item.Type === 'barcode') { + error = '妯℃澘涓潯鐮�/浜岀淮鐮佸唴瀹逛笉鍙负绌猴紒' } } @@ -1489,7 +1602,7 @@ if (list.length === 0) { notification.warning({ top: 92, - message: '鏈幏鍙栧埌鎵撳嵃鏁版嵁锛�', + message: window.GLOB.dict['no_data'] || '鏈幏鍙栧埌鎵撳嵃鏁版嵁锛�', duration: 5 }) this.setState({ loading: false }) @@ -1608,7 +1721,7 @@ Api.postekPrint(param).then(res => { if (res.retval === '0') { if (params.length === 0) { - this.execSuccess({ ErrCode: 'S', message: '鎵撳嵃璇锋眰宸插彂鍑恒��', status: true }) + this.execSuccess({ ErrCode: 'S', message: window.GLOB.dict['print_out'] || '鎵撳嵃璇锋眰宸插彂鍑恒��', status: true }) } else { setTimeout(() => { this.loopRFIDPrint(params) @@ -1626,6 +1739,43 @@ execPrint = (list, template) => { const { btn } = this.props + const { dict } = this.state + + let printReject = null + let send = false + + let data = fromJS({ + data: list, + template: template + }).toJS() + + if (!window.GLOB.errorLog) { + printReject = (msg) => { + if (send) return + + send = true + data.message = msg + + window.mkInfo(JSON.stringify(data)) + } + } else { + printReject = (msg) => { + if (send) return + + send = true + data.message = msg + + let param = { + func: 's_special_error_note_log', + api_url: btn.logLabel, + error_code: 507, + error_time: moment().format('YYYY-MM-DD HH:mm:ss'), + api_param: JSON.stringify(data) + } + Api.genericInterface(param) + } + } + let _errors = [] let defaultPrinter = btn.verify.defaultPrinter || 'lackprinter' @@ -1726,13 +1876,13 @@ if (btn.verify.emptyTip === 'false') { this.execSuccess({ ErrCode: '-1', - message: '鏈幏鍙栧埌鎵撳嵃淇℃伅锛�', + message: dict['no_data'] || '鏈幏鍙栧埌鎵撳嵃淇℃伅锛�', status: true }) } else { this.execError({ ErrCode: 'N', - message: '鏈幏鍙栧埌鎵撳嵃淇℃伅锛�', + message: dict['no_data'] || '鏈幏鍙栧埌鎵撳嵃淇℃伅锛�', status: false }) } @@ -1746,7 +1896,7 @@ lackerror.push(`鏁版嵁涓湭鑾峰彇鍒版ā鏉匡紙${err.title}锛�${err.lacks.join('銆�')} 瀛楁`) } if (err.emptys.length > 0) { - emptyerror.push(`鏁版嵁涓ā鏉匡紙${err.title}锛� ${err.emptys.join('銆�')} 瀛楁涓嶅彲涓虹┖`) + emptyerror.push(dict['not_empty'] ? `${err.title}: ${err.emptys.join('銆�')} ${dict['not_empty']}` : `鏁版嵁涓ā鏉匡紙${err.title}锛� ${err.emptys.join('銆�')} 瀛楁涓嶅彲涓虹┖`) } }) @@ -1767,26 +1917,35 @@ return } + if (printerList.length === 0) { + this.execSuccess({ + ErrCode: '-1', + message: dict['no_data'] || '鏈幏鍙栧埌鎵撳嵃淇℃伅锛�', + status: true + }) + return + } + if (!socket || socket.readyState !== 1 || socket.url !== 'ws://' + btn.verify.linkUrl) { socket = new WebSocket('ws://' + btn.verify.linkUrl) } else { - this.syncMessageSend(printerList) - - this.execSuccess({ - ErrCode: 'S', - message: '鎵撳嵃璇锋眰宸插彂鍑恒��', - status: true + this.syncMessageSend(printerList, () => { + this.execSuccess({ + ErrCode: 'S', + message: dict['print_out'] || '鎵撳嵃璇锋眰宸插彂鍑恒��', + status: true + }) }) } // 鎵撳紑Socket socket.onopen = () =>{ - this.syncMessageSend(printerList) - - this.execSuccess({ - ErrCode: 'S', - message: '鎵撳嵃璇锋眰宸插彂鍑恒��', - status: true + this.syncMessageSend(printerList, () => { + this.execSuccess({ + ErrCode: 'S', + message: dict['print_out'] || '鎵撳嵃璇锋眰宸插彂鍑恒��', + status: true + }) }) } // 鐩戝惉娑堟伅 @@ -1829,29 +1988,40 @@ message: data.message, status: false }) + + printReject(data.message) } } socket.onerror = () => { this.execError({ ErrCode: 'N', - message: '鏃犳硶杩炴帴鍒�:' + btn.verify.linkUrl, + message: (dict['un_connect'] || '鏃犳硶杩炴帴鍒�') + ':' + btn.verify.linkUrl, status: false }) } } - syncMessageSend = (list) => { + syncMessageSend = (list, callback) => { let param = list.shift() - if (socket && param) { - socket.send(JSON.stringify(param)) + if (socket) { + try { + socket.send(JSON.stringify(param)) + } catch(e) { + console.warn('鎵撳嵃璇锋眰鍙戦�佸け璐ワ紒') + } } - if (list && list.length > 0) { - setTimeout(() => {this.syncMessageSend(list)}, 3000) + if (list.length > 0) { + setTimeout(() => { + this.syncMessageSend(list, callback) + }, 3000) + } else { + callback() } } + /** * @description 鎿嶄綔鎴愬姛鍚庡鐞� * 1銆乪xcel瀵煎嚭锛屾垚鍔熷悗鍙栨秷瀵煎嚭鎸夐挳鍔犺浇涓姸鎬� @@ -1862,17 +2032,18 @@ */ execSuccess = (res = {}) => { const { btn } = this.props - const { autoMatic, btnconfig } = this.state + const { autoMatic, btnconfig, dict } = this.state if ((res.ErrCode === 'S' || !res.ErrCode) || autoMatic) { // 鎵ц鎴愬姛 notification.success({ top: 92, - message: res.message || '鎵ц鎴愬姛锛�', + message: res.message || dict['exc_success'] || '鎵ц鎴愬姛锛�', duration: btn.verify && btn.verify.stime ? btn.verify.stime : 2 }) } else if (res.ErrCode === 'Y') { // 鎵ц鎴愬姛 Modal.success({ - title: res.message || '鎵ц鎴愬姛锛�' + title: res.message || dict['exc_success'] || '鎵ц鎴愬姛锛�', + okText: dict['got_it'] || '鐭ラ亾浜�' }) } else if (res.ErrCode === '-1') { // 瀹屾垚鍚庝笉鎻愮ず @@ -1911,7 +2082,7 @@ */ execError = (res) => { const { btn } = this.props - const { btnconfig, autoMatic } = this.state + const { btnconfig, autoMatic, dict } = this.state if (!['LoginError', 'C', '-2', 'E', 'N', 'F', 'NM'].includes(res.ErrCode)) { res.ErrCode = 'E' @@ -1919,23 +2090,24 @@ if (res.ErrCode === 'E' && !autoMatic) { Modal.error({ - title: res.message || '鎵ц澶辫触锛�', + title: res.message || dict['exc_fail'] || '鎵ц澶辫触锛�', + okText: dict['got_it'] || '鐭ラ亾浜�' }) } else if (res.ErrCode === 'N' || autoMatic) { notification.error({ top: 92, - message: res.message || '鎵ц澶辫触锛�', + message: res.message || dict['exc_fail'] || '鎵ц澶辫触锛�', duration: btn.verify && btn.verify.ntime ? btn.verify.ntime : 10 }) } else if (res.ErrCode === 'F') { notification.error({ className: 'notification-custom-error', top: 92, - message: res.message || '鎵ц澶辫触锛�', + message: res.message || dict['exc_fail'] || '鎵ц澶辫触锛�', duration: btn.verify && btn.verify.ftime ? btn.verify.ftime : 10 }) } else if (res.ErrCode === 'NM') { - message.error(res.message || '鎵ц澶辫触锛�') + message.error(res.message || dict['exc_fail'] || '鎵ц澶辫触锛�') } this.setState({ @@ -1947,6 +2119,8 @@ MKEmitter.emit('autoExecOver', btn.uuid, 'error') return } + + if (res.ErrCode === '-2') return if (btnconfig && btnconfig.setting && btnconfig.setting.errFocus) { MKEmitter.emit('mkFC', 'focus', btnconfig.setting.errFocus) @@ -2040,6 +2214,7 @@ } else { _LongParam = updateForm(_LongParam) _LongParam = this.handleModelConfig(_LongParam) + _LongParam.uuid = btn.uuid this.setState({ btnconfig: _LongParam @@ -2081,8 +2256,8 @@ } modelconfirm = () => { - const { btnconfig, selines } = this.state - let _this = this + const { btnconfig, selines, dict } = this.state + let that = this let result = [] let _data = {} let BData = {} @@ -2114,6 +2289,10 @@ let key = item.field.toLowerCase() let _readin = item.readin !== 'false' + if (item.type === 'linkMain' && item.verifyVal === 'true') { + _item.$verify = true + _item.label = item.label + } if (_item.type === 'date') { // 鏃堕棿鍏煎 _item.precision = item.precision || 'day' } else if (_item.type === 'datetime') { @@ -2154,10 +2333,41 @@ _item.value = _item.value.replace(/\t+|\v+/g, '') // 鍘婚櫎鍒惰〃绗� if (item.interception !== 'false') { // 鍘婚櫎棣栧熬绌烘牸 - _item.value = _item.value.replace(/(^\s*|\s*$)/g, '') + if (item.interception === 'func') { + try { + // eslint-disable-next-line + let func = new Function('value', 'data', item.func) + _item.value = func(_item.value, _data) + _item.value = _item.value !== undefined ? _item.value : '' + } catch (e) { + console.warn(e) + _item.value = '' + } + } else if (item.interception === 'charTure') { + let str = _item.value.replace(/(^\s*|\s*$)/g, '') + let result = '' + for (let i = 0 ; i < str.length; i++) { + let code = str.charCodeAt(i) + if (code >= 65281 && code <= 65373) { + result += String.fromCharCode(str.charCodeAt(i) - 65248) + } else if (code === 12288) { + result += String.fromCharCode(str.charCodeAt(i) - 12288 + 32) + } else { + result += str.charAt(i) + } + } + _item.value = result + } else { + _item.value = _item.value.replace(/(^\s*|\s*$)/g, '') + } } - if (_item.type === 'text' && /@appkey@|@SessionUid@|@bid@/ig.test(_item.value)) { // 鐗规畩瀛楁鏇挎崲 - _item.value = _item.value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey).replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')).replace(/^(\s*)@bid@(\s*)$/ig, (this.props.BID || '')) + if (_item.type === 'text') { + if (/@appkey@|@SessionUid@|@bid@/ig.test(_item.value)) { // 鐗规畩瀛楁鏇挎崲 + _item.value = _item.value.replace(/^(\s*)@appkey@(\s*)$/ig, window.GLOB.appkey).replace(/^(\s*)@SessionUid@(\s*)$/ig, (localStorage.getItem('SessionUid') || '')).replace(/^(\s*)@bid@(\s*)$/ig, (this.props.BID || '')) + } + if (/@currentYear@/ig.test(_item.value)) { // 绯荤粺鍙橀噺鏇挎崲 + _item.value = _item.value.replace(/@currentYear@/ig, moment().format('YYYY')) + } } if (_item.type === 'text' && item.lenControl && item.lenControl !== 'limit') { if (item.lenControl === 'left') { @@ -2198,12 +2408,14 @@ this.execSubmit(selines, () => {}, result) } else { confirm({ - title: '纭畾瑕佹墽琛屽悧?', + title: dict['exec_sure'] || '纭畾瑕佹墽琛屽悧?', + okText: dict['ok'] || '纭畾', + cancelText: dict['cancel'] || '鍙栨秷', onOk() { - _this.triggerPrint(selines, result) + that.triggerPrint(selines, result) }, onCancel() { - _this.setState({ loading: false }) + that.setState({ loading: false }) } }) } @@ -2214,7 +2426,7 @@ */ getModels = () => { const { BID, btn } = this.props - const { btnconfig } = this.state + const { btnconfig, dict } = this.state if (!this.state.visible || !btnconfig || !btnconfig.setting) return null @@ -2232,6 +2444,13 @@ clickouter = true } + if (btnconfig.setting.icon) { + title = <> + <span className={'mk-modal-icon-' + btnconfig.setting.iconType} style={{background: btnconfig.setting.iconColor || 'unset', color: btnconfig.setting.iconColor || 'inherit'}}><MkIcon type={btnconfig.setting.icon}/></span> + {title} + </> + } + return ( <Modal title={title} @@ -2241,6 +2460,8 @@ visible={this.state.visible} confirmLoading={this.state.confirmLoading} width={width} + okText={dict['ok'] || '纭畾'} + cancelText={dict['cancel'] || '鍙栨秷'} maskStyle={btnconfig.setting.moveable === 'true' ? {backgroundColor: 'rgba(0, 0, 0, 0.15)'} : null} onOk={this.handleOk} onCancel={this.handleCancel} @@ -2302,39 +2523,24 @@ if (hidden) return null let label = '' - let icon = '' - let type = 'link' - let className = '' - if (btn.show === 'button') { - label = btn.label - icon = btn.icon || '' - } else if (btn.show === 'link') { - label = <span>{btn.label}{btn.icon ? <MkIcon style={{marginLeft: '8px'}} type={btn.icon}/> : ''}</span> - icon = '' + if (btn.show === 'link') { + label = <span>{btn.label}{btn.icon ? <MkIcon style={{marginLeft: '8px'}} type={btn.icon} /> : ''}</span> } else if (btn.show === 'icon') { - icon = btn.icon || '' - } else if (!btn.$toolbtn) { - icon = btn.icon || '' - label = btn.label - className = 'mk-btn mk-' + btn.class + label = !loading ? <MkIcon type={btn.icon} /> : null } else { - type = '' - icon = btn.icon || '' - label = btn.label - className = 'mk-btn mk-' + btn.class + label = <span>{!loading && btn.icon ? <MkIcon style={{marginRight: '8px'}} type={btn.icon} /> : ''}{btn.label}</span> } return <> <Button - type={type} + type="link" id={'button' + btn.uuid} title={disabled ? (btn.reason || '') : (btn.show === 'icon' ? btn.label : '')} loading={loading} disabled={disabled} style={btn.style || null} - icon={icon} - className={className} + className={btn.hover || ''} onClick={(e) => {e.stopPropagation(); this.actionTrigger()}} >{label}</Button> <span onClick={(e) => {e.stopPropagation()}}>{this.getModels()}</span> -- Gitblit v1.8.0