From 6ca240a14ccf55d4e0a94fff77e95f64db2cdfcc Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 11 十月 2024 17:34:25 +0800 Subject: [PATCH] 2024-10-11 --- src/tabviews/zshare/mutilform/index.jsx | 216 ++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 186 insertions(+), 30 deletions(-) diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx index f82ecc8..5d4e1e1 100644 --- a/src/tabviews/zshare/mutilform/index.jsx +++ b/src/tabviews/zshare/mutilform/index.jsx @@ -4,9 +4,9 @@ import { Form, Row, Col, notification, Tooltip, Rate } from 'antd' import { QuestionCircleOutlined, StarFilled } from '@ant-design/icons' import moment from 'moment' +import md5 from 'md5' import Api from '@/api' -import { formRule } from '@/utils/option.js' import Utils from '@/utils/utils.js' import asyncComponent from '@/utils/asyncComponent' import MKEmitter from '@/utils/events.js' @@ -48,7 +48,8 @@ timestamp: '', n_id: '', focusId: '', - reFocusId: '' + reFocusId: '', + dict: window.GLOB.dict } record = {} @@ -56,6 +57,7 @@ componentDidMount () { const { action, unload } = this.props + const { dict } = this.state let data = {} let BData = {} @@ -68,11 +70,18 @@ let fieldMap = new Map() let check = action.setting.formType === 'check' - if (this.props.data) { + if (this.props.data && !this.props.data.$$empty) { Object.keys(this.props.data).forEach(key => { data[key.toLowerCase()] = this.props.data[key] }) + } else if (action.uuid && sessionStorage.getItem('local_' + action.uuid)) { + let _data = JSON.parse(sessionStorage.getItem('local_' + action.uuid)) + + Object.keys(_data).forEach(key => { + data[key.toLowerCase()] = _data[key] + }) } + if (this.props.BData) { Object.keys(this.props.BData).forEach(key => { BData[key.toLowerCase()] = this.props.BData[key] @@ -132,6 +141,8 @@ } else if (item.type === 'datetime') { item.type = 'date' item.precision = 'second' + } else if (item.type === 'fileupload') { + item.fieldlength = item.fieldlength || 512 } if (!item.field || !['text', 'number', 'switch', 'check', 'rate', 'select', 'popSelect', 'link', 'cascader', 'linkMain', 'funcvar', 'date', 'datemonth', 'radio', 'checkbox', 'checkcard', 'fileupload', 'textarea', 'multiselect', 'brafteditor', 'color', 'vercode'].includes(item.type)) return false @@ -145,6 +156,7 @@ // 鏁版嵁鑷姩濉厖 let readin = item.readin !== 'false' + item.local = item.readin === 'local' item.readin = item.readin !== 'false' && item.readin !== 'top' item.readonly = check || item.readonly === 'true' item.writein = item.writein !== 'false' @@ -326,14 +338,14 @@ if (item.required === 'true') { item.rules.push({ required: true, - message: item.label + '涓嶅彲涓虹┖!' + message: item.label + (dict['not_empty'] || '涓嶅彲涓虹┖锛�') }) } item.rules.push({ validator: (rule, value, callback) => { if (/'/.test(value)) { - callback('涓嶅彲浣跨敤鑻辨枃鐘舵�佺殑鍗曞紩鍙凤紒') + callback(dict['single_quot'] || '涓嶅彲浣跨敤鑻辨枃鐘舵�佺殑鍗曞紩鍙凤紒') // } else if (/--/.test(value)) { // callback('涓嶅彲浣跨敤 -- 锛�') } else { @@ -345,7 +357,7 @@ if (!item.lenControl || item.lenControl === 'limit') { item.rules.push({ max: item.fieldlength, - message: formRule.input.formMessage.replace('@max', item.fieldlength) + message: (dict['max_char'] || '鏈�澶欯max涓瓧绗�').replace('@max', item.fieldlength) }) } @@ -357,7 +369,7 @@ } item.rules.push({ pattern: reg, - message: item.regularText || formRule.input.numbermsg + message: item.regularText || dict['enter_num'] || '璇疯緭鍏ユ暟瀛楋紒' }) } else if (item.regular === 'letter') { let reg = /^[a-zA-Z]*$/ @@ -366,7 +378,7 @@ } item.rules.push({ pattern: reg, - message: item.regularText || formRule.input.lettermsg + message: item.regularText || dict['enter_letter'] || '璇疯緭鍏ュ瓧姣嶏紒' }) } else if (item.regular === 'letter_number') { let reg = /^[a-zA-Z0-9]*$/ @@ -375,7 +387,7 @@ } item.rules.push({ pattern: reg, - message: item.regularText || '璇疯緭鍏ユ暟瀛楁垨瀛楁瘝' + message: item.regularText || dict['enter_num_letter'] || '璇疯緭鍏ユ暟瀛楁垨瀛楁瘝' }) } else if (item.regular === 'letter&number') { let reg = /^[a-zA-Z0-9@_.]*$/ @@ -384,24 +396,24 @@ } item.rules.push({ pattern: reg, - message: item.regularText || '璇疯緭鍏ユ暟瀛椼�佸瓧姣嶄互鍙夽_.' + message: item.regularText || dict['enter_num_letter_char'] || '璇疯緭鍏ユ暟瀛椼�佸瓧姣嶄互鍙夽_.' }) } else if (item.regular === 'phone') { item.rules.push({ pattern: /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/, - message: item.regularText || '璇锋纭緭鍏ユ墜鏈哄彿' + message: item.regularText || dict['phone_error'] || '璇锋纭緭鍏ユ墜鏈哄彿' }) } else if (item.regular === 'email') { item.rules.push({ pattern: /^([a-zA-Z0-9._-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/, - message: item.regularText || '璇锋纭緭鍏ラ偖绠卞湴鍧�' + message: item.regularText || dict['email_error'] || '璇锋纭緭鍏ラ偖绠卞湴鍧�' }) } } } else if (item.type === 'number') { item.rules = [{ required: true, - message: item.label + '涓嶅彲涓虹┖!' + message: item.label + (dict['not_empty'] || '涓嶅彲涓虹┖锛�') }] if (typeof(item.min) === 'number' || typeof(item.max) === 'number' || item.notZero === 'true') { @@ -410,9 +422,9 @@ if (isNaN(value)) { callback() } else if (item.notZero === 'true' && value === 0) { - callback(item.label + '涓嶅彲涓�0') + callback(item.label + (dict['not_zero'] || '涓嶅彲涓�0')) } else if (typeof(item.min) === 'number' && value < item.min) { - if (item.min < 1e-6) { + if (item.min > 0 && item.min < 1e-6) { if (item.min === 1e-6) { callback(item.label + '鏈�灏忓�间负 0.000001') } else if (item.min === 1e-7) { @@ -426,13 +438,13 @@ } else if (item.min === 1e-11) { callback(item.label + '鏈�灏忓�间负 0.00000000001') } else { - callback(item.label + '鏈�灏忓�间负 ' + item.min) + callback(item.label + (dict['less_limit'] || '鏈�灏忓�间负 ') + item.min) } } else { - callback(item.label + '鏈�灏忓�间负 ' + item.min) + callback(item.label + (dict['less_limit'] || '鏈�灏忓�间负 ') + item.min) } } else if (typeof(item.max) === 'number' && value > item.max) { - callback(item.label + '鏈�澶у�间负 ' + item.max) + callback(item.label + (dict['max_limit'] || '鏈�澶у�间负 ') + item.max) } else { callback() } @@ -443,14 +455,14 @@ if (item.required === 'true') { item.rules.push({ required: true, - message: item.label + '涓嶅彲涓虹┖!' + message: item.label + (dict['not_empty'] || '涓嶅彲涓虹┖锛�') }) } item.rules.push({ validator: (rule, value, callback) => { if (/'/.test(value)) { - callback('涓嶅彲浣跨敤鑻辨枃鐘舵�佺殑鍗曞紩鍙凤紒') + callback(dict['single_quot'] || '涓嶅彲浣跨敤鑻辨枃鐘舵�佺殑鍗曞紩鍙凤紒') // } else if (/--/.test(value)) { // callback('涓嶅彲浣跨敤 -- 锛�') } else { @@ -459,38 +471,38 @@ } }, { max: item.fieldlength, - message: formRule.input.formMessage.replace('@max', item.fieldlength) + message: (dict['max_char'] || '鏈�澶欯max涓瓧绗�').replace('@max', item.fieldlength) }) } else if (item.type === 'brafteditor') { if (item.required === 'true') { item.rules.push({ required: true, - message: item.label + '涓嶅彲涓虹┖!' + message: item.label + (dict['not_empty'] || '涓嶅彲涓虹┖锛�') }) } item.rules.push({ max: item.fieldlength, - message: formRule.input.formMessage.replace('@max', item.fieldlength) + message: (dict['max_char'] || '鏈�澶欯max涓瓧绗�').replace('@max', item.fieldlength) }) } else if (item.type === 'linkMain' || item.type === 'vercode') { if (item.required === 'true') { item.rules.push({ required: true, - message: item.label + '涓嶅彲涓虹┖!' + message: item.label + (dict['not_empty'] || '涓嶅彲涓虹┖锛�') }) } } else { if (item.required === 'true') { item.rules.push({ required: true, - message: '璇烽�夋嫨' + item.label + '!' + message: (dict['select_tip'] || '璇烽�夋嫨') + item.label + '!' }) } if (['cascader', 'checkbox', 'checkcard', 'fileupload', 'multiselect'].includes(item.type) && item.fieldlength) { item.rules.push({ max: item.fieldlength, - message: formRule.input.formMessage.replace('@max', item.fieldlength) + message: (dict['max_char'] || '鏈�澶欯max涓瓧绗�').replace('@max', item.fieldlength) }) } } @@ -759,6 +771,7 @@ if (action.subButton && action.subButton.resetForms) { MKEmitter.addListener('resetForms', this.resetForms) } + MKEmitter.addListener('resetFocus', this.resetFocus) } componentWillUnmount () { @@ -766,6 +779,27 @@ return } MKEmitter.removeListener('resetForms', this.resetForms) + MKEmitter.removeListener('resetFocus', this.resetFocus) + } + + resetFocus = (id, field) => { + const { action } = this.props + + if (id !== action.uuid.replace(/_pop$/, '')) return + + let focusId = '' + + this.state.formlist.forEach(item => { + if (item.field === field) { + focusId = item.uuid + } + }) + + if (!focusId) return + + setTimeout(() => { + MKEmitter.emit('mkFC', 'focus', focusId) + }, 20) } resetForms = (id, data) => { @@ -820,7 +854,9 @@ } getFormData = (deForms) => { - if (deForms.length === 1) { + if (window.backend && window.GLOB.CacheData.has('sql_' + md5(this.props.action.uuid.replace(/_pop$/, '') + deForms[0].uuid))) { + this.improveBackActionForm(deForms) + } else if (deForms.length === 1) { this.improveSimpleActionForm(deForms) } else if (!window.GLOB.mkHS && window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') { this.improveSimpleActionForm(deForms) @@ -829,6 +865,115 @@ } } + /** + * @description 鑾峰彇涓嬫媺琛ㄥ崟閫夐」淇℃伅 + */ + improveBackActionForm = (deForms) => { + const { BID, action } = this.props + + let sysvals = { + mk_departmentcode: sessionStorage.getItem('departmentcode') || '', + mk_organization: sessionStorage.getItem('organization') || '', + mk_user_type: sessionStorage.getItem('mk_user_type') || '', + id: this.state.ID || '', + bid: BID || '', + datam: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '', + datam_begin: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '', + datam_end: sessionStorage.getItem('dataM') === 'true' ? 'Y' : '' + } + if (window.GLOB.externalDatabase !== null) { + sysvals.db = window.GLOB.externalDatabase + } + + let deffers = [] + let mainItems = [] // 浜戠鎴栧崟鐐规暟鎹� + let localItems = [] // 鏈湴鏁版嵁 + let cache = action.setting.cache !== 'false' && !action.$cache + let skip = false + + deForms.forEach(item => { + let ex = window.GLOB.CacheData.get('sql_' + md5(action.uuid.replace(/_pop$/, '') + item.uuid)) + + if (!ex) { + notification.warning({ + top: 92, + message: '琛ㄥ崟锛�' + item.label + '锛夋棤鍙墽琛岃剼鏈��', + duration: 5 + }) + return + } + + let exps = [] + ex.reps.forEach(n => { + let key = n.toLowerCase() + if (sysvals.hasOwnProperty(key)) { + exps.push({ + key: n, + value: sysvals[key] + }) + } + }) + + let cell = { + id: ex.id, + menuname: item.label + '锛堣〃鍗曪級', + exps: exps, + md5_id: '' + } + + if (item.database === 'sso' && window.GLOB.mainSystemApi) { + mainItems.push(cell) + } else { + localItems.push(cell) + } + }) + + if (localItems.length) { + deffers.push({ + $backend: true, + $type: 's_Get_SelectedList', + data: localItems + }) + } + + if (mainItems.length) { + deffers.push({ + $backend: true, + $type: 's_Get_SelectedList', + data: mainItems, + rduri: window.GLOB.mainSystemApi + }) + } + + if (!deffers.length) return + + deffers = deffers.map(item => { + return new Promise(resolve => { + Api.getSystemCacheConfig(item, cache).then(res => { + if (!res.status) { + notification.warning({ + top: 92, + message: res.message, + duration: 5 + }) + skip = true + } + resolve(res) + }) + }) + }) + + Promise.all(deffers).then(response => { + let result = {...response[0], ...(response[1] || {})} + + delete result.ErrCode + delete result.ErrMesg + delete result.message + delete result.status + + this.resetFormList(result, skip) + }) + } /** * @description 鑾峰彇涓嬫媺琛ㄥ崟閫夐」淇℃伅 */ @@ -853,7 +998,7 @@ sql = sql.replace(/@BID@/ig, `'${BID}'`) if (window.GLOB.debugger === true) { - console.info(sql) + window.mkInfo(sql) } sql = sql.replace(/%/ig, ' mpercent ') @@ -867,7 +1012,7 @@ sql = sql.replace(/@BID@/ig, `'${BID}'`) if (window.GLOB.debugger === true) { - console.info(sql) + window.mkInfo(sql) } sql = sql.replace(/%/ig, ' mpercent ') @@ -991,7 +1136,7 @@ param.LText = param.LText.replace(/@BID@/ig, `'${this.props.BID || ''}'`) if (window.GLOB.debugger) { - console.info(param.LText) + window.mkInfo(param.LText) } if (window.GLOB.execType === 'x') { @@ -1356,6 +1501,7 @@ } handleConfirm = (formId) => { + const { action } = this.props const { formlist, send_type, timestamp, n_id } = this.state // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭� @@ -1367,6 +1513,7 @@ } let forms = [] let record = {...this.record, ...values} + let locals = null formlist.forEach(item => { if (!item.field || ['hint', 'split', 'formula'].includes(item.type)) return @@ -1463,12 +1610,21 @@ value: n_id || '' }) } + + if (item.local) { + locals = locals || {} + locals[item.field] = _item.value + } forms.push(_item) }) this.submitId = formId || '' + if (locals) { + sessionStorage.setItem('local_' + action.uuid, JSON.stringify(locals)) + } + resolve(forms) }) }) -- Gitblit v1.8.0