From 5046d0d13dc6a8563b8e54e31913bc44cfa1072f Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 26 四月 2022 19:23:18 +0800 Subject: [PATCH] 2022-04-26 --- src/tabviews/custom/components/table/edit-table/index.jsx | 176 ++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 103 insertions(+), 73 deletions(-) diff --git a/src/tabviews/custom/components/table/edit-table/index.jsx b/src/tabviews/custom/components/table/edit-table/index.jsx index 09e5078..613acf2 100644 --- a/src/tabviews/custom/components/table/edit-table/index.jsx +++ b/src/tabviews/custom/components/table/edit-table/index.jsx @@ -1,6 +1,6 @@ import React, {Component} from 'react' import PropTypes from 'prop-types' -import {connect} from 'react-redux' +import { connect } from 'react-redux' import { is, fromJS } from 'immutable' import { notification } from 'antd' @@ -9,18 +9,17 @@ import UtilsDM from '@/utils/utils-datamanage.js' import asyncComponent from '@/utils/asyncComponent' import MKEmitter from '@/utils/events.js' +import MainTable from './normalTable' import './index.scss' // 閫氱敤缁勪欢 const MainSearch = asyncComponent(() => import('@/tabviews/zshare/topSearch')) const MainAction = asyncComponent(() => import('@/tabviews/zshare/actionList')) -const MainTable = asyncComponent(() => import('./normalTable')) const NormalHeader = asyncComponent(() => import('@/tabviews/custom/components/share/normalheader')) class EditableTable extends Component { static propTpyes = { BID: PropTypes.any, // 鐖剁骇Id - data: PropTypes.array, // 缁熶竴鏌ヨ鏁版嵁 config: PropTypes.object, // 缁勪欢閰嶇疆淇℃伅 mainSearch: PropTypes.any, // 澶栧眰鎼滅储鏉′欢 menuType: PropTypes.any, // 鑿滃崟绫诲瀷 @@ -43,7 +42,8 @@ pageSize: 10, // 姣忛〉鏁版嵁鏉℃暟 orderBy: '', // 鎺掑簭 search: '', // 鎼滅储鏉′欢鏁扮粍锛屼娇鐢ㄦ椂闇�鍒嗗満鏅鐞� - statFValue: [] // 鍚堣鍊� + statFValue: [], // 鍚堣鍊� + lock: false } /** @@ -56,6 +56,20 @@ let _cols = new Map() let setting = {..._config.setting, ..._config.wrap, style: {}} setting.tableId = Utils.getuuid() + + _config.submit.style = _config.submit.style || {} + _config.submit.wrapStyle = {} + _config.submit.hasAction = _config.action.length > 0 + if (!_config.submit.hasAction) { + if (_config.submit.style.marginTop) { + _config.submit.wrapStyle.paddingTop = _config.submit.style.marginTop + } + if (_config.submit.style.marginBottom) { + _config.submit.wrapStyle.paddingBottom = _config.submit.style.marginBottom + } + } else { + _config.submit.wrapStyle.paddingTop = '15px' + } if (setting.height) { setting.operType = 'btnMode' @@ -200,22 +214,25 @@ if (setting.laypage) { start = pageSize * (pageIndex - 1) + 1 } + let data = result.data.map((item, index) => { + item.key = index + item.$$uuid = item[setting.primaryKey] || '' + item.$$BID = BID || '' + item.$$BData = BData || '' + item.$Index = start + index + '' + item.$type = 'upt' + item.$origin = true + return item + }) this.setState({ - data: result.data.map((item, index) => { - item.key = index - item.$$uuid = item[setting.primaryKey] || '' - item.$$BID = BID || '' - item.$$BData = BData || '' - item.$Index = start + index + '' - item.$type = 'upt' - item.$origin = true - return item - }), + data: data, selectedData: [], total: result.total, loading: false }) + + MKEmitter.emit('transferData', config.uuid, data) } else { this.setState({ loading: false @@ -231,7 +248,7 @@ /** * @description 鑾峰彇鍗曡鏁版嵁 */ - async loadmainLinedata (id) { + async loadmainLinedata (id, line) { const { mainSearch } = this.props const { setting, config, arr_field, search, orderBy, BID, pageIndex, pageSize, BData } = this.state @@ -256,34 +273,40 @@ if (result.status) { let data = fromJS(this.state.data).toJS() let selectedData = fromJS(this.state.selectedData).toJS() - if (result.data && result.data[0]) { - let _data = result.data[0] || {} - _data.$$uuid = _data[setting.primaryKey] || '' - _data.$$BID = BID || '' - _data.$$BData = BData || '' - _data.$type = 'upt' - _data.$origin = true - try { - data = data.map(item => { - if (item.$$uuid === _data.$$uuid) { - _data.key = item.key - _data.$Index = item.$Index - return _data - } else { - return item - } - }) - selectedData = selectedData.map(item => { - if (_data.$$uuid === item.$$uuid) { - return _data - } + let _data = result.data[0] || {} + _data.$$uuid = _data[setting.primaryKey] || '' + _data.$$BID = BID || '' + _data.$$BData = BData || '' + _data.$type = 'upt' + _data.$origin = true + + try { + data = data.map(item => { + if (item.$$uuid === _data.$$uuid) { + _data.key = item.key + _data.$Index = item.$Index + return _data + } else { return item - }) - } catch (e) { - console.warn('鏁版嵁鏌ヨ閿欒') - } + } + }) + selectedData = selectedData.map(item => { + if (_data.$$uuid === item.$$uuid) { + return _data + } + return item + }) + } catch (e) { + console.warn('鏁版嵁鏌ヨ閿欒') + } + if (line) { + if (line.$type === 'del' && !result.data[0]) { + data = data.filter(m => m.$$uuid === line.$$uuid) + } + MKEmitter.emit('transferData', config.uuid, _data, 'line') + } else { MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data) } @@ -462,16 +485,15 @@ }) } - reloadData = (menuId, id) => { + reloadData = (menuId, id, item) => { const { config } = this.state if (config.uuid !== menuId) return - if (id === 'empty') return if (!id) { this.reloadtable() } else { - this.loadmainLinedata(id) + this.loadmainLinedata(id, item) } } @@ -502,20 +524,29 @@ if (config.uuid !== menuId) return - if (position === 'line' && lines && lines.length === 1) { - this.loadmainLinedata(lines[0].$$uuid) - } else { - this.reloadtable(btn) // 鏁版嵁鍒锋柊 + let supModule = config.setting.supModule + + btn.syncComponentId && MKEmitter.emit('reloadData', btn.syncComponentId) + + if (!btn.syncComponentId || btn.syncComponentId !== supModule) { + if (position === 'line') { + if (lines && lines.length === 1) { + this.loadmainLinedata(lines[0].$$uuid) + } else { + this.reloadtable(btn) + } + } else if (position === 'mainline' || position === 'popclose') { // 鍒锋柊婧愮粍浠舵椂锛岄檮甯﹀埛鏂颁笂绾ц涓庡綋鍓嶇粍浠� + if (supModule && BID) { + MKEmitter.emit('reloadData', supModule, BID) + } else { + this.reloadtable(btn) + } + } else { + this.reloadtable(btn) + } } - if (btn.syncComponentId && btn.syncComponentId !== config.uuid && btn.syncComponentId !== config.setting.supModule) { - MKEmitter.emit('reloadData', btn.syncComponentId) // 鍚岀骇鏍囩鍒锋柊 - } - - if (position === 'mainline' && config.setting.supModule) { // 涓昏〃琛屽埛鏂� - MKEmitter.emit('reloadData', config.setting.supModule, (BID || 'empty')) - } else if (position === 'popclose') { // 鏍囩鍏抽棴鍒锋柊 - config.setting.supModule && MKEmitter.emit('reloadData', config.setting.supModule, (BID || 'empty')) + if (position === 'popclose') { // 鎵ц鍚姩寮圭獥鐨勬寜閽墍閫夋嫨鐨勫埛鏂伴」 btn.$tabId && MKEmitter.emit('refreshPopButton', btn.$tabId) } } @@ -555,7 +586,7 @@ } render() { - const { BID, setting, searchlist, actions, config, columns, BData, data, selectedData } = this.state + const { BID, setting, searchlist, actions, config, columns, BData, selectedData, lock } = this.state return ( <div className="custom-edit-table" style={config.style}> @@ -568,26 +599,25 @@ setting={setting} actions={actions} BData={BData} + lock={lock} columns={config.columns} selectedData={selectedData} /> - <div className={'main-table-box ' + (!actions || actions.length === 0 ? 'no-action' : '')}> - <MainTable - BID={BID} - data={data} - setting={setting} - columns={columns} - MenuID={config.uuid} - submit={config.submit} - fields={config.columns} - total={this.state.total} - lineMarks={config.lineMarks} - loading={this.state.loading} - refreshdata={this.refreshbytable} - chgSelectData={(selects) => this.setState({selectedData: selects})} - statFValue={this.state.statFValue} - /> - </div> + <MainTable + BID={BID} + setting={setting} + columns={columns} + MenuID={config.uuid} + submit={config.submit} + fields={config.columns} + total={this.state.total} + lineMarks={config.lineMarks} + loading={this.state.loading} + refreshdata={this.refreshbytable} + chgSelectData={(selects) => this.setState({selectedData: selects})} + changeLock={(lock) => this.setState({lock: lock})} + statFValue={this.state.statFValue} + /> </div> ) } -- Gitblit v1.8.0