From a1e9b18a4dbfd21e1bf4d5cb60974ac2f0115efd Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 30 五月 2025 15:18:44 +0800 Subject: [PATCH] 2025-05-30 --- src/tabviews/zshare/mutilform/index.jsx | 293 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 253 insertions(+), 40 deletions(-) diff --git a/src/tabviews/zshare/mutilform/index.jsx b/src/tabviews/zshare/mutilform/index.jsx index fb189b9..b681516 100644 --- a/src/tabviews/zshare/mutilform/index.jsx +++ b/src/tabviews/zshare/mutilform/index.jsx @@ -4,6 +4,7 @@ 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 Utils from '@/utils/utils.js' @@ -69,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] @@ -133,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 @@ -146,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' @@ -162,6 +173,7 @@ } else if (item.type === 'linkMain') { readin = false item.readin = false + item.$verify = item.verifyVal === 'true' } else if (item.type === 'number') { item.decimal = item.decimal || 0 item.fieldlength = item.decimal @@ -170,12 +182,21 @@ if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect', 'cascader'].includes(item.type)) { item.options = item.options || [] - item.options = item.options.filter(cell => { - cell.value = cell.Value - cell.label = cell.Text - - return !cell.Hide - }) + item.$select = true + if (item.type === 'checkcard') { + item.options = item.options.filter(cell => { + cell.$value = cell.$value + '' + return !cell.Hide + }) + } else { + item.options = item.options.filter(cell => { + cell.value = cell.Value + '' + cell.label = cell.Text + + return !cell.Hide + }) + } + if (item.setAll === 'true' && ['select', 'link', 'radio'].includes(item.type)) { // 娣诲姞绌哄�� item.options.unshift({ key: Utils.getuuid(), @@ -275,6 +296,19 @@ } else { item.showValue = '' } + if (window.backend && action.uuid) { + item.formSqlId = md5(action.uuid.replace(/_pop$/, '') + item.uuid) + } + } else if (item.type === 'brafteditor') { + if (window.backend && newval && /<\/span>/.test(newval) && item.encryption === 'true') { + try { + newval = window.btoa(window.encodeURIComponent(newval)) + } catch (e) { + newval = '' + } + } + } else if (item.$select && item.resourceType === '0') { + newval = newval + '' } if (newval !== '$empty') { @@ -287,7 +321,7 @@ if (isNaN(item.initval) || item.initval === '') { item.initval = 0 } - } else if (['select', 'link', 'radio', 'checkbox', 'checkcard', 'multiselect', 'cascader'].includes(item.type) && item.resourceType === '1') { + } else if (item.$select && item.resourceType === '1') { deForms.push(item) } else if (item.type === 'rate') { item.rateCount = item.rateCount || 5 @@ -312,6 +346,9 @@ item.rules = [] if (item.type === 'text') { item.initval = item.initval + '' + if (/@currentYear@/ig.test(item.initval)) { // 绯荤粺鍙橀噺鏇挎崲 + item.initval = item.initval.replace(/@currentYear@/ig, moment().format('YYYY')) + } if (item.required === 'true') { item.rules.push({ @@ -378,7 +415,7 @@ }) } 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}$/, + pattern: /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\s?\d{4}\s?\d{4}$/, message: item.regularText || dict['phone_error'] || '璇锋纭緭鍏ユ墜鏈哄彿' }) } else if (item.regular === 'email') { @@ -659,6 +696,13 @@ if (item.enter === 'tab' || item.enter === 'sub') { item.tabUuid = '' + if (item.enter === 'sub' && item.errTabField) { + if (item.errTabField === 'origin') { + item.errTabUuid = item.uuid + } else if (fieldMap.has(item.errTabField)) { + item.errTabUuid = fieldMap.get(item.errTabField).uuid + } + } if (item.tabField && fieldMap.has(item.tabField)) { item.tabUuid = fieldMap.get(item.tabField).uuid } else if (item.enter === 'tab') { @@ -763,7 +807,7 @@ resetFocus = (id, field) => { const { action } = this.props - if (id !== action.uuid) return + if (id !== action.uuid.replace(/_pop$/, '')) return let focusId = '' @@ -832,7 +876,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) @@ -841,6 +887,144 @@ } } + /** + * @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) { + if (!window.GLOB.mkHS && window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') { + localItems.forEach(item => { + deffers.push({ + $backend: true, + $type: 's_Get_SelectedList', + data: [item] + }) + }) + } else { + deffers.push({ + $backend: true, + $type: 's_Get_SelectedList', + data: localItems + }) + } + } + + if (mainItems.length) { + if (!window.GLOB.mkHS && window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production') { + mainItems.forEach(item => { + deffers.push({ + $backend: true, + $type: 's_Get_SelectedList', + data: [item], + rduri: window.GLOB.mainSystemApi + }) + }) + } else { + deffers.push({ + $backend: true, + $type: 's_Get_SelectedList', + data: mainItems, + rduri: window.GLOB.mainSystemApi + }) + } + } + + if (!deffers.length) return + + deffers = deffers.map((item, i) => { + return new Promise(resolve => { + setTimeout(() => { + Api.getSystemCacheConfig(item, cache).then(res => { + if (!res.status) { + if (res.ErrCode !== '-2') { + notification.warning({ + top: 92, + message: res.message, + duration: 5 + }) + } + skip = true + } + resolve(res) + }) + }, 30 * i) + }) + }) + + Promise.all(deffers).then(response => { + let result = {} + + response.forEach(item => { + result = {...result, ...item} + }) + + delete result.ErrCode + delete result.ErrMesg + delete result.message + delete result.status + + this.resetFormList(result, skip) + }) + } /** * @description 鑾峰彇涓嬫媺琛ㄥ崟閫夐」淇℃伅 */ @@ -865,7 +1049,7 @@ sql = sql.replace(/@BID@/ig, `'${BID}'`) if (window.GLOB.debugger === true) { - console.info(sql) + window.mkInfo(sql) } sql = sql.replace(/%/ig, ' mpercent ') @@ -879,7 +1063,7 @@ sql = sql.replace(/@BID@/ig, `'${BID}'`) if (window.GLOB.debugger === true) { - console.info(sql) + window.mkInfo(sql) } sql = sql.replace(/%/ig, ' mpercent ') @@ -914,11 +1098,13 @@ new Promise(resolve => { Api.getSystemCacheConfig(param, cache).then(res => { if (!res.status) { - notification.warning({ - top: 92, - message: res.message, - duration: 5 - }) + if (res.ErrCode !== '-2') { + notification.warning({ + top: 92, + message: res.message, + duration: 5 + }) + } skip = true } resolve(res) @@ -956,11 +1142,13 @@ new Promise(resolve => { Api.getSystemCacheConfig(mainparam, cache).then(res => { if (!res.status) { - notification.warning({ - top: 92, - message: res.message, - duration: 5 - }) + if (res.ErrCode !== '-2') { + notification.warning({ + top: 92, + message: res.message, + duration: 5 + }) + } skip = true } resolve(res) @@ -1003,7 +1191,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') { @@ -1026,11 +1214,13 @@ setTimeout(() => { Api.getSystemCacheConfig(param, cache).then(res => { if (!res.status) { - notification.warning({ - top: 92, - message: res.message, - duration: 5 - }) + if (res.ErrCode !== '-2') { + notification.warning({ + top: 92, + message: res.message, + duration: 5 + }) + } skip = true } resolve(res) @@ -1367,9 +1557,11 @@ return fields } - handleConfirm = (formId) => { + handleConfirm = (formId, errId) => { + const { action } = this.props const { formlist, send_type, timestamp, n_id } = this.state + window.CACHE.errFocusId = '' // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭� return new Promise((resolve, reject) => { this.props.form.validateFieldsAndScroll((err, values) => { @@ -1379,6 +1571,7 @@ } let forms = [] let record = {...this.record, ...values} + let locals = null formlist.forEach(item => { if (!item.field || ['hint', 'split', 'formula'].includes(item.type)) return @@ -1391,6 +1584,11 @@ key: item.field, isconst: item.constant === 'true' } + + if (item.$verify) { + _item.$verify = true + _item.label = item.label + } _item.value = record[item.field] !== undefined ? record[item.field] : '' @@ -1399,10 +1597,10 @@ } else if (item.declare === 'decimal') { _item.type = 'number' _item.fieldlen = item.decimal || 0 - } else if (['text', 'textarea', 'linkMain'].includes(item.type)) { + } else if (['text', 'textarea', 'linkMain', 'brafteditor'].includes(item.type)) { _item.value = _item.value + '' _item.value = _item.value.replace(/\t+|\v+/g, '') // 鍘婚櫎鍒惰〃绗� - + if (item.interception !== 'false') { // 鍘婚櫎棣栧熬绌烘牸 if (item.interception === 'func') { try { @@ -1432,14 +1630,19 @@ _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' && item.lenControl && item.lenControl !== 'limit') { - if (item.lenControl === 'left') { - _item.value = _item.value.substr(0, item.fieldlength) - } else { - _item.value = _item.value.slice(-item.fieldlength) + 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 (item.lenControl && item.lenControl !== 'limit') { + if (item.lenControl === 'left') { + _item.value = _item.value.substr(0, item.fieldlength) + } else { + _item.value = _item.value.slice(-item.fieldlength) + } + } + if (item.regular === 'phone') { + _item.value = _item.value.replace(/\s+/g, '') } } } else if (item.type === 'datemonth') { @@ -1475,11 +1678,21 @@ value: n_id || '' }) } + + if (item.local) { + locals = locals || {} + locals[item.field] = _item.value + } forms.push(_item) }) this.submitId = formId || '' + window.CACHE.errFocusId = errId || '' + + if (locals) { + sessionStorage.setItem('local_' + action.uuid, JSON.stringify(locals)) + } resolve(forms) }) -- Gitblit v1.8.0