From a975aa770d1f5d0ae133f0e87a28b5d6b94734ef Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 09 五月 2024 11:16:42 +0800 Subject: [PATCH] 2024-05-09 --- src/tabviews/custom/components/table/edit-table/index.jsx | 232 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 182 insertions(+), 50 deletions(-) diff --git a/src/tabviews/custom/components/table/edit-table/index.jsx b/src/tabviews/custom/components/table/edit-table/index.jsx index 6cc0650..524645a 100644 --- a/src/tabviews/custom/components/table/edit-table/index.jsx +++ b/src/tabviews/custom/components/table/edit-table/index.jsx @@ -1,7 +1,7 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' import { is, fromJS } from 'immutable' -import { notification, Modal } from 'antd' +import moment from 'moment' import Api from '@/api' import Utils from '@/utils/utils.js' @@ -75,7 +75,6 @@ } }) - let _columns = [] let initId = '' setting.hasSubmit = false @@ -83,6 +82,7 @@ setting.commit = 'change' } + let index = 0 let getColumns = (cols) => { return cols.filter(item => { if (item.Hide === 'true') return false @@ -96,6 +96,8 @@ return false } } else if (item.type === 'custom') { + item.config = {setting: _config.setting, columns: _config.columns} + item.elements.forEach(btn => { if (btn.eleType !== 'button') return if (btn.funcType === 'addline') { @@ -108,19 +110,16 @@ } }) } else { - if (item.type === 'index') { - item.field = '$Index' - item.type = 'text' - } - - if (item.marks && item.marks.length === 0) { - item.marks = '' - } - if (item.editable === 'true') { + item.$sort = index + index++ + setting.hasSubmit = setting.commit !== 'change' item.$ctrl = setting.commit === 'change' + if (item.ctrlField) { + item.ctrlValue = item.ctrlValue.split(',') + } if (!initId) { initId = item.uuid } @@ -135,8 +134,26 @@ } if (item.type === 'number') { - + if (item.clearField) { + _config.columns.forEach(cell => { + if (cell.field === item.clearField) { + item.clearName = cell.label + } + }) + } + } else if (item.editType === 'date') { + item.format = 'YYYY-MM-DD' + + if (item.precision === 'hour') { + item.format = 'YYYY-MM-DD HH' + } else if (item.precision === 'minute') { + item.format = 'YYYY-MM-DD HH:mm' + } else if (item.precision === 'second') { + item.format = 'YYYY-MM-DD HH:mm:ss' + } } else if (item.editType === 'select') { + item.map = new Map() + item.options = item.options || [] item.options = item.options.filter(cell => { cell.value = cell.Value @@ -144,6 +161,12 @@ return !cell.Hide }) + + if (item.resourceType !== '1') { + item.options.forEach(cell => { + item.map.set(cell.value, cell.label) + }) + } } else if (item.editType === 'popSelect') { if (item.pops) { item.pops.forEach(cell => { @@ -162,7 +185,12 @@ }) } - _columns = getColumns(_config.cols) + _config.cols = getColumns(_config.cols) + + let _columns = _config.cols + if (_config.hasExtend) { + _columns = this.getCols(_config.cols, BData, _config.setting.extendTime) + } setting.initId = initId @@ -263,6 +291,122 @@ config.arr_field = arrfield.join(',') } + getCols = (cols, BData, time) => { + let _cols = [] + let weeks = ['鏄熸湡鏃�', '鏄熸湡涓�', '鏄熸湡浜�', '鏄熸湡涓�', '鏄熸湡鍥�', '鏄熸湡浜�', '鏄熸湡鍏�'] + + let excols = (col) => { + let _s = [] + let _marks = col.marks || [] + let names = [] + let fields = [] + + for (let i = 0; i < col.quota; i++) { + fields.push(col.field + (i === 0 ? '' : i)) + + if (col.colUnit === 'day') { + let hasweek = col.dayFormat.indexOf('week') > -1 + let format = col.dayFormat.replace(/\sweek/, '') + let day = moment().add(col.shift + i, 'days').format(format) + + if (hasweek) { + let _w = moment().add(col.shift + i, 'days').weekday() + day = day + ' ' + weeks[_w] + } + + names.push(day) + } else { + let format = col.hourFormat + if (format === 'H point') { + format = 'H鐐�' + } + + let hour = moment(time).add(col.shift + i, 'hours').format(format) + + if (format === 'h:00') { + if (hour === '12:00') { + hour = hour + ' pm' + } else if (hour === moment(time).add(col.shift + i, 'hours').format('H:00')) { + hour = hour + ' am' + } else { + hour = hour + ' pm' + } + } + names.push(hour) + } + } + + if (col.supField) { + names = [] + if (BData && BData[col.supField]) { + names = BData[col.supField].split(',') + + if (names.length > fields.length) { + names.length = fields.length + } else if (fields.length > names.length) { + fields.length = names.length + } + } + } + + if (names.length === 0) return _s + + _s = fields.map((f, i) => { + return { + type: 'text', + Align: col.Align, + Width: col.Width, + field: f, + label: names[i], + uuid: col.uuid + i, + marks: _marks.filter(mark => mark.field[0] === f || !fields.includes(mark.field[0])) + } + }) + + return _s + } + + cols.forEach(col => { + if (col.type === 'extend') { + let exs = excols(col) + _cols.push(...exs) + } else if (col.type === 'colspan') { + let subs = [] + col.subcols.forEach(subcol => { + if (subcol.type === 'extend') { + let exs = excols(subcol) + subs.push(...exs) + } else { + subs.push(col) + } + }) + + if (subs.length) { + _cols.push({...col, subcols: subs}) + } + } else { + _cols.push(col) + } + }) + + return _cols + } + + resetCols = (BData) => { + const { config, setting } = this.state + + MKEmitter.emit('transferData' + setting.tableId, [], 'clear') + + let columns = this.getCols(config.cols, BData, config.setting.extendTime) + + this.setState({ + columns: columns, + data: [], + selectedData: [], + total: 0 + }) + } + /** * @description 涓昏〃鏁版嵁鍔犺浇 * @param { Boolean } reset 琛ㄦ牸鏄惁閲嶇疆 @@ -275,9 +419,12 @@ this.setState({ data: [], selectedData: [], + loading: false, total: 0 }) reset && MKEmitter.emit('resetTable', config.uuid, 'true') // 鍒楄〃閲嶇疆 + + this.requestId = '' return } @@ -303,8 +450,12 @@ let _orderBy = orderBy || setting.order let param = UtilsDM.getQueryDataParams(setting, searches, _orderBy, pageIndex, pageSize, BID) - let result = await Api.genericInterface(param) + this.requestId = config.uuid + new Date().getTime() + + let result = await Api.genericInterface(param, '', '', this.requestId) if (result.status) { + if (result.$requestId && this.requestId !== result.$requestId) return + reset && MKEmitter.emit('resetTable', config.uuid, repage) // 鍒楄〃閲嶇疆 let start = 1 @@ -352,36 +503,13 @@ MKEmitter.emit('transferData' + setting.tableId, data) - if (result.message) { - if (result.ErrCode === 'Y') { - Modal.success({ - title: result.message - }) - } else if (result.ErrCode === 'S') { - notification.success({ - top: 92, - message: result.message, - duration: 2 - }) - } - } + UtilsDM.querySuccess(result) } else { this.setState({ loading: false }) - if (!result.message) return - if (result.ErrCode === 'N') { - Modal.error({ - title: result.message, - }) - } else if (result.ErrCode !== '-2') { - notification.error({ - top: 92, - message: result.message, - duration: 10 - }) - } + UtilsDM.queryFail(result) } } @@ -484,11 +612,8 @@ this.setState({ loading: false }) - notification.error({ - top: 92, - message: result.message, - duration: 10 - }) + + UtilsDM.queryFail(result) } } @@ -579,18 +704,24 @@ } resetParentParam = (MenuID, id, data) => { - const { setting } = this.state + const { setting, config } = this.state if (!setting.supModule || setting.supModule !== MenuID) return if (id !== this.state.BID || id !== '') { + if (config.parCtrl) { + this.resetCols(data) + } + this.setState({ pageIndex: 1, BID: id, BData: data }, () => { - setTimeout(() => { - this.loadmaindata(true, 'true') - }, setting.delay || 0) + if (!setting.checkBid) { + setTimeout(() => { + this.loadmaindata(true, 'true') + }, setting.delay || 0) + } }) } } @@ -612,8 +743,8 @@ } else { this.reloadtable(btn) } - } else if ((position === 'mainline' || position === 'popclose') && config.setting.supModule && BID) { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠� - MKEmitter.emit('reloadData', config.setting.supModule, BID) + } else if (['mainline', 'maingrid', 'popclose'].includes(position) && config.setting.supModule) { + MKEmitter.emit('reloadData', config.setting.supModule, position === 'maingrid' ? '' : BID) } else { this.reloadtable(btn) } @@ -717,6 +848,7 @@ submit={config.submit} fields={config.columns} total={this.state.total} + parCtrl={config.parCtrl} colsCtrls={config.colsCtrls} lineMarks={config.lineMarks} loading={this.state.loading} -- Gitblit v1.8.0