From dbc911dbb044895f98a49ef69ef5a5800a4aba3e Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期日, 15 九月 2024 20:26:39 +0800 Subject: [PATCH] 2024-09-15 --- src/tabviews/custom/components/table/edit-table/normalTable/index.jsx | 374 +++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 302 insertions(+), 72 deletions(-) diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx index 762b303..6e3aeef 100644 --- a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx +++ b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx @@ -586,19 +586,34 @@ const { config } = this.props const { value, err } = this.state - return ( - <InputNumber - title={err} - className={err ? 'has-error' : ''} - ref={ref => this.node = ref} - precision={config.decimal || 0} - value={value} - onChange={(value) => this.onChange(value)} - onPressEnter={this.enterPress} - onFocus={this.onFocus} - onBlur={this.onBlur} - /> - ) + if (!config.decimal && config.decimal !== 0) { + return ( + <InputNumber + title={err} + className={err ? 'has-error' : ''} + ref={ref => this.node = ref} + value={value} + onChange={(value) => this.onChange(value)} + onPressEnter={this.enterPress} + onFocus={this.onFocus} + onBlur={this.onBlur} + /> + ) + } else { + return ( + <InputNumber + title={err} + className={err ? 'has-error' : ''} + ref={ref => this.node = ref} + precision={config.decimal} + value={value} + onChange={(value) => this.onChange(value)} + onPressEnter={this.enterPress} + onFocus={this.onFocus} + onBlur={this.onBlur} + /> + ) + } } } @@ -862,6 +877,9 @@ } if (col.format === 'percent') { content = content * 100 + if (!col.round) { + content = +content.toFixed(2) + } } else if (col.format === 'abs') { content = Math.abs(content) } @@ -956,7 +974,7 @@ // eslint-disable-next-line content = eval(content) } catch (e) { - console.info(content) + window.mkInfo(content) console.warn(e) content = '' } @@ -978,7 +996,12 @@ content = <span dangerouslySetInnerHTML={{__html: content}}></span> } else if (content !== '') { content = `${col.prefix || ''}${content}${col.postfix || ''}` - content = content.replace(/\n/ig, '<br/>').replace(/\s/ig, ' ') + if (!col.evalchars || col.evalchars.includes('enter')) { + content = content.replace(/\n/ig, '<br/>') + } + if (!col.evalchars || col.evalchars.includes('space')) { + content = content.replace(/\s/ig, ' ') + } content = <span dangerouslySetInnerHTML={{__html: content}}></span> } @@ -1270,7 +1293,7 @@ // eslint-disable-next-line content = eval(content) } catch (e) { - console.info(content) + window.mkInfo(content) console.warn(e) content = '' } @@ -1292,7 +1315,12 @@ content = <span dangerouslySetInnerHTML={{__html: content}}></span> } else if (content !== '') { content = `${col.prefix || ''}${content}${col.postfix || ''}` - content = content.replace(/\n/ig, '<br/>').replace(/\s/ig, ' ') + if (!col.evalchars || col.evalchars.includes('enter')) { + content = content.replace(/\n/ig, '<br/>') + } + if (!col.evalchars || col.evalchars.includes('space')) { + content = content.replace(/\s/ig, ' ') + } content = <span dangerouslySetInnerHTML={{__html: content}}></span> } @@ -1373,7 +1401,8 @@ allColumns: null, checkForms: [], allForms: [], - reseting: false + reseting: false, + dict: window.GLOB.dict } timer = null @@ -1459,6 +1488,9 @@ } else { _item.datatype = item.datatype } + if (_item.type === 'number' && item.type === 'number') { + _item.decimal = item.decimal || 0 + } forms.push(_item) } else { @@ -1504,7 +1536,11 @@ deForms: hasBid ? deForms : null }, () => { if (deForms.length > 0 && (!hasBid || BID)) { - this.improveActionForm(deForms, BID) + if (window.backend && window.GLOB.CacheData.has('sql_' + deForms[0].uuid)) { + this.improveBackActionForm(deForms, BID) + } else { + this.improveActionForm(deForms, BID) + } } }) } @@ -1518,7 +1554,11 @@ const { deForms } = this.state if (deForms && nextProps.BID !== BID) { - this.improveActionForm(deForms, nextProps.BID) + if (window.backend && window.GLOB.CacheData.has('sql_' + deForms[0].uuid)) { + this.improveBackActionForm(deForms, nextProps.BID) + } else { + this.improveActionForm(deForms, nextProps.BID) + } } if (parCtrl && !is(fromJS(this.props.columns), fromJS(nextProps.columns))) { let getColumns = (cols, sk) => { @@ -1615,7 +1655,7 @@ } checkLine = () => { - const { edData, forms, checkForms } = this.state + const { edData, forms, checkForms, dict } = this.state let data = edData.filter(item => item.$$uuid === this.blurId)[0] @@ -1658,7 +1698,7 @@ if (col.type === 'text') { let val = record[col.field] !== undefined ? (record[col.field] + '') : '' if (col.required === 'true' && !val) { - err = `${col.label}涓嶅彲涓虹┖` + err = `${col.label}${dict['not_empty'] || '涓嶅彲涓虹┖'}` } else if (col.datatype === 'datetime' && !val) { val = '1949-10-01' } @@ -1667,27 +1707,27 @@ let val = record[col.field] if (col.required === 'true' && !val) { - err = `${col.label}涓嶅彲涓�${col.noValue === 'hide' ? '绌�' : '0'}` + err = `${col.label}${col.noValue === 'hide' ? (dict['not_empty'] || '涓嶅彲涓虹┖') : dict['not_zero'] || '涓嶅彲涓�0'}` } else if (col.noValue === 'hide' && !val) { if (col.clearField && checkForms.includes(col.clearField) && !record[col.clearField]) { - err = `璇峰~鍐� ${col.label} 鎴� ${col.clearName}` + err = `${dict['input_tip'] || '璇峰~鍐� '}${col.label} ${dict['or'] || '鎴�'} ${col.clearName}` } val = 0 } else if (!val && val !== 0) { - err = `${col.label}涓嶅彲涓虹┖` + err = `${col.label}${dict['not_empty'] || '涓嶅彲涓虹┖'}` } else { val = +val if (isNaN(val)) { - err = `${col.label}鏁版嵁鏍煎紡閿欒` + err = `${col.label} ${dict['data_format'] || '鏁版嵁鏍煎紡閿欒'}` return } val = +val.toFixed(col.decimal || 0) if (typeof(col.max) === 'number' && val > col.max) { - err = `${col.label}涓嶅彲澶т簬${col.max}` + err = `${col.label}${dict['max_limit'] || ' 涓嶅彲澶т簬 '}${col.max}` } else if (typeof(col.min) === 'number' && val < col.min) { - err = `${col.label}涓嶅彲灏忎簬${col.min}` + err = `${col.label}${dict['less_limit'] || ' 涓嶅彲灏忎簬 '}${col.min}` } } @@ -1881,7 +1921,7 @@ sql = sql.replace(/@BID@/ig, `'${BID}'`) if (debug) { - console.info(sql) + window.mkInfo(sql) } sql = sql.replace(/%/ig, ' mpercent ') @@ -1894,7 +1934,7 @@ sql = sql.replace(/@BID@/ig, `'${BID}'`) if (debug) { - console.info(sql) + window.mkInfo(sql) } sql = sql.replace(/%/ig, ' mpercent ') @@ -1976,6 +2016,100 @@ }) ) } + + 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) + }) + } + + improveBackActionForm = (deForms, BID) => { + let sysvals = { + mk_departmentcode: sessionStorage.getItem('departmentcode') || '', + mk_organization: sessionStorage.getItem('organization') || '', + mk_user_type: sessionStorage.getItem('mk_user_type') || '', + 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 = [] // 鏈湴鏁版嵁 + + deForms.forEach(item => { + let ex = window.GLOB.CacheData.get('sql_' + item.uuid) + + if (!ex) 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, false).then(res => { + if (!res.status) { + notification.warning({ + top: 92, + message: res.message, + duration: 5 + }) + } + resolve(res) + }) + }) + }) Promise.all(deffers).then(response => { let result = {...response[0], ...(response[1] || {})} @@ -2220,7 +2354,7 @@ checkData = () => { const { setting } = this.props - const { edData, forms, checkForms, selectedRowKeys } = this.state + const { edData, forms, checkForms, selectedRowKeys, dict } = this.state let data = fromJS(edData).toJS() @@ -2234,7 +2368,7 @@ if (data.length === 0) { notification.warning({ top: 92, - message: '璇烽�夋嫨闇�瑕佹彁浜ょ殑鏁版嵁锛�', + message: dict['select_row'] || '璇烽�夋嫨闇�瑕佹彁浜ょ殑鏁版嵁锛�', duration: 5 }) return null @@ -2244,7 +2378,7 @@ if (data.length === 0) { notification.warning({ top: 92, - message: '鏁版嵁鏈慨鏀癸紝涓嶅彲鎻愪氦锛�', + message: dict['un_modified'] || '鏁版嵁鏈慨鏀癸紝涓嶅彲鎻愪氦锛�', duration: 5 }) return null @@ -2278,7 +2412,7 @@ if (col.type === 'text') { let val = item[col.field] !== undefined ? (item[col.field] + '') : '' if (col.required === 'true' && !val) { - line.push(`${col.label}涓嶅彲涓虹┖`) + line.push(`${col.label}${dict['not_empty'] || '涓嶅彲涓虹┖'}`) } else if (col.datatype === 'datetime' && !val) { val = '1949-10-01' } @@ -2286,31 +2420,31 @@ } else if (col.type === 'number') { let val = item[col.field] if (col.required === 'true' && !val) { - err = `${col.label}涓嶅彲涓�${col.noValue === 'hide' ? '绌�' : '0'}` + err = `${col.label}${col.noValue === 'hide' ? (dict['not_empty'] || '涓嶅彲涓虹┖') : dict['not_zero'] || '涓嶅彲涓�0'}` } else if (col.noValue === 'hide' && !val) { if (col.clearField && checkForms.includes(col.clearField) && !item[col.clearField]) { - let msg = `璇峰~鍐� ${col.label} 鎴� ${col.clearName}` + let msg = `${dict['input_tip'] || '璇峰~鍐� '}${col.label} ${dict['or'] || '鎴�'} ${col.clearName}` if (!line.includes(msg)) { line.push(msg) } } val = 0 } else if (!val && val !== 0) { - line.push(`${col.label}涓嶅彲涓虹┖`) + line.push(`${col.label}${dict['not_empty'] || '涓嶅彲涓虹┖'}`) return } else { val = +val if (isNaN(val)) { - line.push(`${col.label}鏁版嵁鏍煎紡閿欒`) + line.push(`${col.label} ${dict['data_format'] || '鏁版嵁鏍煎紡閿欒'}`) return } val = +val.toFixed(col.decimal || 0) if (typeof(col.max) === 'number' && val > col.max) { - line.push(`${col.label}涓嶅彲澶т簬${col.max}`) + line.push(`${col.label}${dict['max_limit'] || ' 涓嶅彲澶т簬 '}${col.max}`) } else if (typeof(col.min) === 'number' && val < col.min) { - line.push(`${col.label}涓嶅彲灏忎簬${col.min}`) + line.push(`${col.label}${dict['less_limit'] || ' 涓嶅彲灏忎簬 '}${col.min}`) } } @@ -2319,7 +2453,7 @@ }) if (line.length > 0) { - err += `绗�${Index}琛岋細` + line.join('锛�') + '锛�' + err += (dict['line'] ? `${dict['line']} ${Index}锛歚 : `绗�${Index}琛岋細`) + line.join('锛�') + '锛�' } if (!item.$deleted) { Index++ @@ -2343,14 +2477,14 @@ submit = (record) => { const { submit, BID, setting } = this.props - const { forms } = this.state + const { forms, dict } = this.state this.setState({visible: false, midData: null}) if (setting.supModule && !BID) { notification.warning({ top: 92, - message: '闇�瑕佷笂绾т富閿�硷紒', + message: dict['sup_key_req'] || '闇�瑕佷笂绾т富閿�硷紒', duration: 5 }) @@ -2366,22 +2500,32 @@ if (!data) return - let result = getEditTableSql(submit, data, forms) - - let param = { - excel_in: result.lines, - BID: BID || '' - } - this.setState({ loading: true }) - if (submit.intertype === 'system') { // 绯荤粺瀛樺偍杩囩▼ - param.func = 'sPC_TableData_InUpDe' - - delete param.excel_in + if (submit.intertype === 'system' && window.backend && window.GLOB.CacheData.has('sql_submit_' + submit.$menuId)) { + let ex = window.GLOB.CacheData.get('sql_submit_' + submit.$menuId) + let param = this.getExps(ex, submit, data, forms) + Api.genericInterface(param).then((res) => { + if (res.status) { + this.execSuccess(res, record) + } else { + this.execError(res, record) + } + }, (error) => { + if (error && error.ErrCode === 'LoginError') return + + this.execError({}) + }) + } else if (submit.intertype === 'system') { // 绯荤粺瀛樺偍杩囩▼ + let result = getEditTableSql(submit, data, forms) + let param = {} + + param.func = 'sPC_TableData_InUpDe' + param.BID = BID || '' + param.exec_type = window.GLOB.execType || 'y' param.LText = Utils.formatOptions(result.sql, param.exec_type) param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') @@ -2405,7 +2549,12 @@ this.execError({}) }) } else if (submit.intertype === 'inner' && submit.innerFunc) { // 鑷畾涔夊瓨鍌ㄨ繃绋� + let result = getEditTableSql(submit, data, forms) + let param = {} + param.func = submit.innerFunc + param.BID = BID || '' + param.excel_in = result.lines if (submit.recordUser === 'true') { param.username = sessionStorage.getItem('User_Name') || '' @@ -2426,19 +2575,92 @@ } } + getExps = (ex, btn, data, forms) => { + const { BID } = this.props + + let exps = [] + let values = { + time_id: Utils.getguid(), + roleid: sessionStorage.getItem('role_id') || '', + mk_departmentcode: sessionStorage.getItem('departmentcode') || '', + mk_organization: sessionStorage.getItem('organization') || '', + mk_user_type: sessionStorage.getItem('mk_user_type') || '', + mk_nation: sessionStorage.getItem('nation') || '', + mk_province: sessionStorage.getItem('province') || '', + mk_city: sessionStorage.getItem('city') || '', + mk_district: sessionStorage.getItem('district') || '', + mk_address: sessionStorage.getItem('address') || '', + bid: BID || '', + typename: 'admin', + 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) { + values.db = window.GLOB.externalDatabase + } + + let lines = data.map(item => { + let vals = [] + forms.forEach(col => { + vals.push(item[col.field]) + }) + + vals.push(item.$$uuid) + vals.push(item.$type || 'upt') + vals.push(BID) + + return vals + }) + + ex.reps.forEach(n => { + let key = n.toLowerCase() + if (values.hasOwnProperty(key)) { + exps.push({ + key: n, + value: values[key] + }) + } + }) + + exps.push({ + key: 'mk_excel_data', + value: lines + }) + + let md5_id = '' + if (window.GLOB.probation) { + md5_id = md5(ex.id + JSON.stringify(exps) + Math.floor(new Date().getTime() / 600000)) + md5_id = moment().format('YYYYMMDDHHmmss') + md5_id.slice(-18) + } + + return { + $backend: true, + $type: 's_TableData_InUpDe', + data: [{ + id: ex.id, + menuname: btn.logLabel || '', + exps: exps, + md5_id: md5_id + }] + } + } + execSuccess = (res, record) => { const { submit } = this.props - const { edData } = this.state + const { edData, dict } = this.state if (res && res.ErrCode === 'S') { // 鎵ц鎴愬姛 notification.success({ top: 92, - message: res.message || '鎵ц鎴愬姛', + message: res.message || dict['exc_success'] || '鎵ц鎴愬姛', duration: submit.stime ? submit.stime : 2 }) } else if (res && res.ErrCode === 'Y') { // 鎵ц鎴愬姛 Modal.success({ - title: res.message || '鎵ц鎴愬姛' + title: res.message || dict['exc_success'] || '鎵ц鎴愬姛', + okText: dict['got_it'] || '鐭ラ亾浜�' }) } else if (res && res.ErrCode === '-1') { // 瀹屾垚鍚庝笉鎻愮ず @@ -2484,26 +2706,28 @@ execError = (res, record) => { const { submit } = this.props + const { dict } = this.state if (res.ErrCode === 'E') { Modal.error({ - title: res.message || '鎵ц澶辫触锛�', + title: res.message || dict['exc_fail'] || '鎵ц澶辫触锛�', + okText: dict['got_it'] || '鐭ラ亾浜�' }) } else if (res.ErrCode === 'N') { notification.error({ top: 92, - message: res.message || '鎵ц澶辫触锛�', + message: res.message || dict['exc_fail'] || '鎵ц澶辫触锛�', duration: submit.ntime ? submit.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: submit.ftime ? submit.ftime : 10 }) } else if (res.ErrCode === 'NM') { - message.error(res.message || '鎵ц澶辫触锛�') + message.error(res.message || dict['exc_fail'] || '鎵ц澶辫触锛�') } this.setState({ @@ -2617,7 +2841,7 @@ render() { const { setting, lineMarks, submit } = this.props - const { edData, columns, loading, pageOptions, selectedRowKeys, visible, midData, reseting } = this.state + const { edData, columns, loading, pageOptions, selectedRowKeys, visible, midData, reseting, dict } = this.state if (reseting) return null @@ -2648,13 +2872,19 @@ pageSizeOptions: pageOptions, showSizeChanger: true, total: this.props.total || 0, - showTotal: (total, range) => `${range[0]}-${range[1]} 鍏� ${total} 鏉 + showTotal: (total, range) => `${range[0]}-${range[1]} ${dict['of'] || '鍏�'} ${total} ${dict['items'] || '鏉�'}` } } let height = setting.height || false - if (height && height <= 100) { - height = height + 'vh' + if (height) { + if (height <= 100) { + if (height < 0) { + height = `calc(100vh - ${-height}px)` + } else { + height = height + 'vh' + } + } } let style = { @@ -2667,9 +2897,9 @@ return ( <> {setting.hasSubmit && edData.length > 0 ? <div className="edit-custom-table-btn-wrap" style={submit.wrapStyle}> - <Button style={submit.style} onClick={() => setTimeout(() => {this.submit()}, 10)} loading={loading} className="submit-table" type="link">鎻愪氦</Button> + <Button style={submit.style} onClick={() => setTimeout(() => {this.submit()}, 10)} loading={loading} className="submit-table" type="link">{dict['submit'] || '鎻愪氦'}</Button> </div> : null} - <div className={`edit-custom-table ${setting.tableHeader || ''} ${setting.parity === 'true' ? 'mk-parity' : ''} ${height ? 'fixed-height' : ''} ${setting.mode || ''} table-vertical-${setting.vertical || ''} mk-edit-${setting.editType || 'simple'}`} style={style}> + <div className={`edit-custom-table ${setting.tableHeader || ''} ${setting.parity === 'true' ? 'mk-parity' : ''} ${height ? 'fixed-table-height' : ''} ${setting.mode || ''} table-vertical-${setting.vertical || ''} mk-edit-${setting.editType || 'simple'}`} style={style}> <Table rowKey="$$uuid" components={components} @@ -2691,7 +2921,7 @@ onChange={this.changeTable} pagination={_pagination} /> - {setting.hasSubmit && _data.length > 10 ? <Button style={submit.style} onClick={() => setTimeout(() => {this.submit()}, 10)} loading={loading} className="submit-footer-table" type="link">鎻愪氦</Button> : null} + {setting.hasSubmit && _data.length > 10 ? <Button style={submit.style} onClick={() => setTimeout(() => {this.submit()}, 10)} loading={loading} className="submit-footer-table" type="link">{dict['submit'] || '鎻愪氦'}</Button> : null} </div> <Modal className="mk-user-confirm" @@ -2700,13 +2930,13 @@ maskClosable={false} closable={false} footer={[ - <Button key="cancel" onClick={() => { this.setState({ visible: false, midData: null }) }}>鍙栨秷</Button>, - <Button key="refresh" className="table-refresh" onClick={() => { midData && this.updateMutil(midData) }}>鍒锋柊琛ㄦ牸</Button>, - <Button key="confirm" type="primary" onClick={() => setTimeout(() => {this.submit()}, 10)}>鎻愪氦鏁版嵁</Button> + <Button key="cancel" onClick={() => { this.setState({ visible: false, midData: null }) }}>{dict['cancel'] || '鍙栨秷'}</Button>, + <Button key="refresh" className="table-refresh" onClick={() => { midData && this.updateMutil(midData) }}>{dict['refresh'] || '鍒锋柊琛ㄦ牸'}</Button>, + <Button key="confirm" type="primary" onClick={() => setTimeout(() => {this.submit()}, 10)}>{dict['submit'] || '鎻愪氦鏁版嵁'}</Button> ]} destroyOnClose > - <div><QuestionCircleOutlined />琛ㄦ牸涓湁鏁版嵁灏氭湭鎻愪氦</div> + <div><QuestionCircleOutlined />{dict['data_not_sub'] || '琛ㄦ牸涓湁鏁版嵁灏氭湭鎻愪氦'}</div> </Modal> </> ) -- Gitblit v1.8.0