From 6b202fcb9446a289d64dd1a36e881b688c9bb72b Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期五, 28 七月 2023 19:25:19 +0800 Subject: [PATCH] 2023-07-28 --- src/tabviews/custom/components/card/table-card/index.jsx | 7 src/tabviews/custom/components/card/prop-card/index.jsx | 19 + src/utils/utils-datamanage.js | 13 src/tabviews/custom/components/table/base-table/index.jsx | 132 ++++++--- src/tabviews/custom/components/card/double-data-card/index.jsx | 145 ++++++++--- src/tabviews/custom/components/table/normal-table/index.jsx | 187 +++++++------ src/menu/datasource/verifycard/customscript/index.jsx | 2 src/tabviews/custom/components/interfaces/interItem/index.jsx | 2 src/tabviews/custom/components/carousel/data-card/index.jsx | 2 src/tabviews/custom/popview/index.jsx | 4 src/tabviews/custom/components/table/edit-table/index.jsx | 7 src/tabviews/basetable/index.jsx | 4 src/tabviews/custom/components/carousel/prop-card/index.jsx | 14 src/tabviews/custom/components/calendar/index.jsx | 2 src/tabviews/custom/index.jsx | 4 src/tabviews/custom/components/share/normalTable/index.jsx | 47 ++ src/tabviews/custom/components/card/data-card/index.jsx | 130 +++++++-- 17 files changed, 486 insertions(+), 235 deletions(-) diff --git a/src/menu/datasource/verifycard/customscript/index.jsx b/src/menu/datasource/verifycard/customscript/index.jsx index 95b2939..8c27284 100644 --- a/src/menu/datasource/verifycard/customscript/index.jsx +++ b/src/menu/datasource/verifycard/customscript/index.jsx @@ -291,7 +291,7 @@ <Form.Item label="鍙敤瀛楁" className="field-able"> <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'鍏叡鍊硷紝璇锋寜鐓xxx@鏍煎紡浣跨敤銆�'}><span style={{color: '#1890ff'}}>BID, LoginUID, SessionUid, UserID, Appkey, time_id, typename</span></Tooltip>, <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'绯荤粺鍙橀噺锛岀郴缁熶細瀹氫箟鍙橀噺骞惰祴鍊笺��'}><span style={{color: '#fa8c16'}}>UserName, FullName, RoleID, mk_departmentcode, mk_organization, mk_user_type, mk_nation, mk_province, mk_city, mk_district, mk_address</span></Tooltip>, - <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'鎺掑簭銆佸垎椤典互鍙婃悳绱㈡潯浠跺彉閲忥紝璇锋寜鐓xxx@鏍煎紡浣跨敤銆�'}>orderBy, pageSize, pageIndex{usefulFields ? ', ' + usefulFields : ''}{type === 'calendar' ? ', mk_year' : ''}</Tooltip> + <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'鎺掑簭銆佸垎椤典互鍙婃悳绱㈡潯浠跺彉閲忥紝璇锋寜鐓xxx@鏍煎紡浣跨敤銆備娇鐢ˊpageSize@浠h〃鑷畾涔夊垎椤碉紝鎬绘暟璇蜂互mk_total杩斿洖銆�'}>orderBy, pageSize, pageIndex{usefulFields ? ', ' + usefulFields : ''}{type === 'calendar' ? ', mk_year' : ''}</Tooltip> <Tooltip mouseLeaveDelay={0.3} mouseEnterDelay={0.3} placement="top" title={'url鍙橀噺锛岃鎸夌収@xxx@鏍煎紡浣跨敤銆�'}>{urlFields ? ', ' : ''}<span style={{color: '#13c2c2'}}>{urlFields}</span></Tooltip> </Form.Item> </Col> diff --git a/src/tabviews/basetable/index.jsx b/src/tabviews/basetable/index.jsx index 630f728..b84ae2e 100644 --- a/src/tabviews/basetable/index.jsx +++ b/src/tabviews/basetable/index.jsx @@ -569,6 +569,10 @@ component.setting.customScript = _customScript // 鏁寸悊鍚庤嚜瀹氫箟鑴氭湰 + if (component.setting.laypage) { + component.setting.custompage = /@pageSize@/i.test(component.setting.dataresource + component.setting.customScript) + } + component.setting.delay = delay delay += 20 diff --git a/src/tabviews/custom/components/calendar/index.jsx b/src/tabviews/custom/components/calendar/index.jsx index 6363ec0..52c638a 100644 --- a/src/tabviews/custom/components/calendar/index.jsx +++ b/src/tabviews/custom/components/calendar/index.jsx @@ -208,7 +208,7 @@ if (result.status) { this.loaded = true if (config.$cache && config.setting.onload !== 'false') { - Api.writeCacheConfig(config.uuid, result.data || '') + Api.writeCacheConfig(config.uuid, result.data || []) } let data = [] diff --git a/src/tabviews/custom/components/card/data-card/index.jsx b/src/tabviews/custom/components/card/data-card/index.jsx index 08b1383..a3232f0 100644 --- a/src/tabviews/custom/components/card/data-card/index.jsx +++ b/src/tabviews/custom/components/card/data-card/index.jsx @@ -32,12 +32,12 @@ pageSize: 10, orderBy: '', pageOptions: [], - activeKey: '', // 閫変腑鍗� - selectKeys: [], // 澶氶�夋椂閫変腑鍗$墖 - selectedData: [], // 閫変腑鏁版嵁锛岀敤浜庡伐鍏锋爮鎸夐挳 - loading: false, // 鏁版嵁鍔犺浇鐘舵�� - card: null, // 鍗$墖璁剧疆 - data: null, // 鏁版嵁 + activeKey: '', + selectKeys: [], + selectedData: [], + loading: false, + card: null, + data: null, total: null, precards: [], nextcards: [], @@ -457,9 +457,7 @@ if (selected === 'false' && !id) return - setTimeout(() => { - this.checkTopLine(id) - }, 200) + this.checkTopLine(id) if (selected === 'init') { this.setState({selected: 'false'}) @@ -812,12 +810,17 @@ }) } + let total = result.total || 0 + if (config.setting.custompage && data.length) { + total = data[data.length - 1].mk_total || 0 + } + this.setState({ activeKey: '', selectKeys: [], selectedData: [], data: data, - total: result.total, + total: total, loading: false }) @@ -888,33 +891,99 @@ let result = await Api.genericInterface(param) if (result.status) { let data = fromJS(this.state.data).toJS() + let selectedData = fromJS(this.state.selectedData).toJS() + let selectKeys = fromJS(this.state.selectKeys).toJS() + let activeKey = this.state.activeKey + if (result.data && result.data[0]) { let _data = result.data[0] + _data.$$uuid = _data[config.setting.primaryKey] || '' + _data.$$BID = BID || '' + _data.$$BData = BData || '' - try { - data = data.map(item => { - if (item[config.setting.primaryKey] === _data[config.setting.primaryKey]) { - _data.key = item.key - _data.$$uuid = _data[config.setting.primaryKey] || '' - _data.$$BID = BID || '' - _data.$$BData = BData || '' - _data.$Index = item.$Index - return _data - } else { - return item - } + data = data.map(item => { + if (item.$$uuid === _data.$$uuid) { + _data.key = item.key + _data.$Index = item.$Index + return _data + } + return item + }) + + if (!_data.$Index) { + this.setState({ + loading: false }) - } catch (e) { - console.warn('鏁版嵁鏌ヨ閿欒') + return } - MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data) - } + selectedData = selectedData.map(item => { + if (item.$$uuid === _data.$$uuid) { + return _data + } + return item + }) - this.setState({ - data: data, - loading: false - }) + this.setState({ + data: data, + selectedData: selectedData, + loading: false + }) + + if (_data.key === activeKey) { + MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data) + } + if (config.setting.$hasSyncModule) { + MKEmitter.emit('syncBalconyData', config.uuid, selectedData, data.length === selectedData.length) + } + } else { + let index = data.findIndex(item => item.$$uuid === id) + + if (index === -1) { + this.setState({ + loading: false + }) + return + } + + data = data.filter(item => item.$$uuid !== id) + data = data.map((item, i) => { + item.key = i + return item + }) + + let trans = activeKey === index + let _item = null + + if (config.wrap.cardType) { + selectKeys = selectKeys.filter(key => key !== index) + selectKeys = selectKeys.map(key => key > index ? key - 1 : key) + + selectedData = selectKeys.map(key => data[key]).filter(Boolean) + + activeKey = selectKeys.length ? selectKeys[selectKeys.length - 1] : '' + + if (trans && selectedData.length) { + _item = selectedData[selectedData.length - 1] + } + } + + this.setState({ + data: data, + activeKey: activeKey, + selectKeys: selectKeys, + selectedData: selectedData, + loading: false + }) + + if (trans) { + MKEmitter.emit('resetSelectLine', config.uuid, (_item ? _item.$$uuid : ''), _item) + } + + if (config.setting.$hasSyncModule) { + MKEmitter.emit('syncBalconyData', config.uuid, selectedData, data.length === selectedData.length) + } + } } else { this.setState({ loading: false @@ -1022,6 +1091,7 @@ if (activeKey === index) return _selectedData = [item] + _selectKeys = [index] _activeKey = index } diff --git a/src/tabviews/custom/components/card/double-data-card/index.jsx b/src/tabviews/custom/components/card/double-data-card/index.jsx index 8f4e530..4d0098b 100644 --- a/src/tabviews/custom/components/card/double-data-card/index.jsx +++ b/src/tabviews/custom/components/card/double-data-card/index.jsx @@ -190,7 +190,7 @@ wrapStyle: wrapStyle, card: _card, search: _config.$searches, - arr_field: _config.columns.map(col => col.field).join(','), + arr_field: _config.columns.map(col => col.field).join(',') }) } @@ -712,13 +712,18 @@ opens = [] } + let total = result.total || 0 + if (config.setting.custompage && data.length) { + total = data[data.length - 1].mk_total || 0 + } + this.setState({ activeKey: '', selectKeys: [], opens: opens, selectedData: [], data: data, - total: result.total, + total: total, loading: false }) @@ -789,56 +794,115 @@ let result = await Api.genericInterface(param) if (result.status) { let data = fromJS(this.state.data).toJS() + let selectedData = fromJS(this.state.selectedData).toJS() + let selectKeys = fromJS(this.state.selectKeys).toJS() + let activeKey = this.state.activeKey + if (result.data && result.data[0]) { let _data = result.data[0] + _data.$$uuid = _data[config.setting.primaryKey] || '' + _data.$$BID = BID || '' + _data.$$BData = BData || '' - try { - data = data.map(item => { - if (item[config.setting.primaryKey] === _data[config.setting.primaryKey]) { - let children = [] + data = data.map(item => { + if (item.$$uuid === _data.$$uuid) { + let children = [] - if (_data[config.setting.subdata]) { - let _children = _data[config.setting.subdata] + if (_data[config.setting.subdata]) { + let _children = _data[config.setting.subdata] - delete _data[config.setting.subdata] + delete _data[config.setting.subdata] - _children.forEach((cell, i) => { - cell.key = i - cell.$$uuid = cell[config.setting.subKey] || '' - cell.$$parentId = _data[config.setting.primaryKey] || '' - cell.$$BID = _data[config.setting.primaryKey] || '' - cell.$$BData = {..._data} - cell.$Index = i + 1 + '' + _children.forEach((cell, i) => { + cell.key = i + cell.$$uuid = cell[config.setting.subKey] || '' + cell.$$parentId = _data[config.setting.primaryKey] || '' + cell.$$BID = _data[config.setting.primaryKey] || '' + cell.$$BData = {..._data} + cell.$Index = i + 1 + '' - if (cell.$$uuid) { - children.push(cell) - } - }) - } - - _data.children = children - - _data.key = item.key - _data.$$uuid = _data[config.setting.primaryKey] || '' - _data.$$BID = BID || '' - _data.$$BData = BData || '' - _data.$Index = item.$Index - return _data - } else { - return item + if (cell.$$uuid) { + children.push(cell) + } + }) } + + _data.children = children + _data.key = item.key + _data.$Index = item.$Index + return _data + } else { + return item + } + }) + + if (!_data.$Index) { + this.setState({ + loading: false }) - } catch (e) { - console.warn('鏁版嵁鏌ヨ閿欒') + return } - MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data) - } + selectedData = selectedData.map(item => { + if (item.$$uuid === _data.$$uuid) { + return _data + } + return item + }) - this.setState({ - data: data, - loading: false - }) + this.setState({ + data: data, + selectedData: selectedData, + loading: false + }) + + if (_data.key === activeKey) { + MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data) + } + } else { + let index = data.findIndex(item => item.$$uuid === id) + + if (index === -1) { + this.setState({ + loading: false + }) + return + } + + data = data.filter(item => item.$$uuid !== id) + data = data.map((item, i) => { + item.key = i + return item + }) + + let trans = activeKey === index + let _item = null + + if (config.wrap.cardType) { + selectKeys = selectKeys.filter(key => key !== index) + selectKeys = selectKeys.map(key => key > index ? key - 1 : key) + + selectedData = selectKeys.map(key => data[key]).filter(Boolean) + + activeKey = selectKeys.length ? selectKeys[selectKeys.length - 1] : '' + + if (trans && selectedData.length) { + _item = selectedData[selectedData.length - 1] + } + } + + this.setState({ + data: data, + activeKey: activeKey, + selectKeys: selectKeys, + selectedData: selectedData, + loading: false + }) + + if (trans) { + MKEmitter.emit('resetSelectLine', config.uuid, (_item ? _item.$$uuid : ''), _item) + } + } } else { this.setState({ loading: false @@ -929,6 +993,7 @@ if (activeKey === index) return _selectedData = [item] + _selectKeys = [index] _activeKey = index } diff --git a/src/tabviews/custom/components/card/prop-card/index.jsx b/src/tabviews/custom/components/card/prop-card/index.jsx index 3ea4c17..e22cc5b 100644 --- a/src/tabviews/custom/components/card/prop-card/index.jsx +++ b/src/tabviews/custom/components/card/prop-card/index.jsx @@ -66,7 +66,7 @@ window.GLOB.SyncData.delete(_config.dataName) } - } else if (_config.wrap.datatype === 'public' && window.GLOB.CacheData.get(_config.wrap.publicId)) { + } else if (_config.wrap.datatype === 'public' && window.GLOB.CacheData.has(_config.wrap.publicId)) { _data = window.GLOB.CacheData.get(_config.wrap.publicId) _data = fromJS(_data).toJS() this.loaded = true @@ -193,6 +193,19 @@ this.setState({data: _data}) }) + } else { + if (config.wrap.goback === 'true' && data.$$empty) { + this.timer && this.timer.stop() + + MKEmitter.emit('closeTabView', config.$pageId) + } else { + if (selected !== 'false') { + this.checkTopLine() + } else { + this.transferLine() + } + this.autoExec() + } } } else { if (!this.loaded) { @@ -260,9 +273,7 @@ } } else { if (selected !== 'false') { - setTimeout(() => { - this.checkTopLine() - }, 200) + this.checkTopLine() } if (config.$cache && config.$time && config.wrap.autoExec) { diff --git a/src/tabviews/custom/components/card/table-card/index.jsx b/src/tabviews/custom/components/card/table-card/index.jsx index 1d47c0b..8f693fa 100644 --- a/src/tabviews/custom/components/card/table-card/index.jsx +++ b/src/tabviews/custom/components/card/table-card/index.jsx @@ -403,9 +403,14 @@ }) } + let total = result.total || 0 + if (config.setting.custompage && data.length) { + total = data[data.length - 1].mk_total || 0 + } + this.setState({ data: data, - total: result.total, + total: total, loading: false }) diff --git a/src/tabviews/custom/components/carousel/data-card/index.jsx b/src/tabviews/custom/components/carousel/data-card/index.jsx index 06dc320..f83040f 100644 --- a/src/tabviews/custom/components/carousel/data-card/index.jsx +++ b/src/tabviews/custom/components/carousel/data-card/index.jsx @@ -166,6 +166,8 @@ this.setState({data: _data}) }) + } else { + this.openModal() } } else { if (!this.loaded) { diff --git a/src/tabviews/custom/components/carousel/prop-card/index.jsx b/src/tabviews/custom/components/carousel/prop-card/index.jsx index ba2b928..0088328 100644 --- a/src/tabviews/custom/components/carousel/prop-card/index.jsx +++ b/src/tabviews/custom/components/carousel/prop-card/index.jsx @@ -160,6 +160,8 @@ this.setState({data: _data}) }) + } else { + this.openModal() } } else { if (!this.loaded) { @@ -188,7 +190,7 @@ } else if (this.loaded) { this.openModal() } - } else if (config.wrap.display === 'modal' && config.wrap.datatype === 'static') { + } else if (config.wrap.datatype === 'static') { this.openModal() } } @@ -215,9 +217,7 @@ this.loaded = true this.setState({data: _data}, () => { - if (config.wrap.display === 'modal') { - this.openModal() - } + this.openModal() }) window.GLOB.SyncData.delete(config.dataName) @@ -237,6 +237,8 @@ openModal = (ErrCode) => { const { config, data } = this.state + + if (config.wrap.display !== 'modal') return let code = config.wrap.code || ('modal' + config.uuid) let tip = localStorage.getItem(code) @@ -374,9 +376,7 @@ data: _data, loading: false }, () => { - if (config.wrap.display === 'modal') { - this.openModal(result.ErrCode) - } + this.openModal(result.ErrCode) }) if (config.timer && config.clearField && result.data && result.data[0]) { diff --git a/src/tabviews/custom/components/interfaces/interItem/index.jsx b/src/tabviews/custom/components/interfaces/interItem/index.jsx index 7e8c885..893397e 100644 --- a/src/tabviews/custom/components/interfaces/interItem/index.jsx +++ b/src/tabviews/custom/components/interfaces/interItem/index.jsx @@ -122,8 +122,6 @@ _data.$$uuid = _data[config.setting.primaryKey] || '' } - _data.$$loaded = true - window.GLOB.CacheData.set(config.uuid, _data) MKEmitter.emit('mkPublicData', config.uuid, _data) diff --git a/src/tabviews/custom/components/share/normalTable/index.jsx b/src/tabviews/custom/components/share/normalTable/index.jsx index b16b14a..b286f49 100644 --- a/src/tabviews/custom/components/share/normalTable/index.jsx +++ b/src/tabviews/custom/components/share/normalTable/index.jsx @@ -750,9 +750,6 @@ } } - /** - * - */ onSelectChange = (selectedRowKeys, e) => { const { setting, MenuID, data } = this.props @@ -812,7 +809,7 @@ } let selects = this.props.data.filter((item, _index) => newkeys.includes(_index) && !item.$disabled) - + this.props.chgSelectData(selects) if (setting.$hasSyncModule) { @@ -854,20 +851,52 @@ MKEmitter.emit('resetSelectLine', MenuID, _id, _data) } - resetTable = (id, repage, pageIndex) => { - const { MenuID } = this.props + resetTable = (id, type, Index) => { + const { MenuID, setting, data } = this.props if (id !== MenuID) return - if (repage === 'false') { + if (type === 'delete') { + let selectKeys = fromJS(this.state.selectedRowKeys).toJS() + let activeKey = this.state.activeIndex + + let trans = activeKey === Index + let _item = null + let selects = [] + + if (setting.tableType) { + selectKeys = selectKeys.filter(key => key !== Index) + selectKeys = selectKeys.map(key => key > Index ? key - 1 : key) + + selects = selectKeys.map(key => data[key]).filter(Boolean) + + activeKey = selectKeys.length ? selectKeys[selectKeys.length - 1] : null + + if (trans && selects.length) { + _item = selects[selects.length - 1] + } + } + + this.setState({ selectedRowKeys: selectKeys, activeIndex: activeKey }) + + this.props.chgSelectData(selects) + + if (trans) { + MKEmitter.emit('resetSelectLine', MenuID, (_item ? _item.$$uuid : ''), _item) + } + + if (setting.$hasSyncModule) { + MKEmitter.emit('syncBalconyData', MenuID, selects, data.length === selects.length) + } + } else if (type === 'false') { this.setState({ selectedRowKeys: [], activeIndex: null, pickup: false }) - } else if (repage === 'repage') { + } else if (type === 'repage') { this.setState({ - pageIndex: pageIndex, + pageIndex: Index, selectedRowKeys: [], activeIndex: null, pickup: false diff --git a/src/tabviews/custom/components/table/base-table/index.jsx b/src/tabviews/custom/components/table/base-table/index.jsx index 9d3b50f..c05ea6d 100644 --- a/src/tabviews/custom/components/table/base-table/index.jsx +++ b/src/tabviews/custom/components/table/base-table/index.jsx @@ -179,32 +179,39 @@ start = pageSize * (pageIndex - 1) + 1 } - this.setState({ - data: result.data.map((item, index) => { - item.key = index - item.$$uuid = item[setting.primaryKey] || '' - item.$$key = '' + item.key + item.$$uuid - item.$$BID = BID || '' - item.$$BData = BData || '' - item.$Index = start + index + '' + let data = result.data.map((item, index) => { + item.key = index + item.$$uuid = item[setting.primaryKey] || '' + item.$$key = '' + item.key + item.$$uuid + item.$$BID = BID || '' + item.$$BData = BData || '' + item.$Index = start + index + '' - if (config.absFields) { - config.absFields.forEach(f => { - if (!isNaN(item[f])) { - item[f] = Math.abs(item[f]) - } - }) - } - if (setting.controlField) { - if (setting.controlVal.includes(item[setting.controlField] + '')) { - item.$disabled = true + if (config.absFields) { + config.absFields.forEach(f => { + if (!isNaN(item[f])) { + item[f] = Math.abs(item[f]) } + }) + } + if (setting.controlField) { + if (setting.controlVal.includes(item[setting.controlField] + '')) { + item.$disabled = true } - - return item - }), + } + + return item + }) + + let total = result.total || 0 + if (config.setting.custompage && data.length) { + total = data[data.length - 1].mk_total || 0 + } + + this.setState({ + data: data, selectedData: [], - total: result.total, + total: total, loading: false }) @@ -281,6 +288,7 @@ 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] || '' @@ -295,35 +303,67 @@ }) } - try { - data = data.map(item => { - if (item.$$uuid === _data.$$uuid) { - _data.key = item.key - _data.$$key = '' + item.key + item.$$uuid - _data.$Index = item.$Index - return _data - } else { - return item - } - }) - selectedData = selectedData.map(item => { - if (_data.$$uuid === item.$$uuid) { - return _data - } + data = data.map(item => { + if (item.$$uuid === _data.$$uuid) { + _data.key = item.key + _data.$$key = '' + item.key + item.$$uuid + _data.$Index = item.$Index + return _data + } else { return item + } + }) + + if (!_data.$Index) { + this.setState({ + loading: false }) - } catch (e) { - console.warn('鏁版嵁鏌ヨ閿欒') + return } - MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data) - } + selectedData = selectedData.map(item => { + if (_data.$$uuid === item.$$uuid) { + return _data + } + return item + }) - this.setState({ - data, - selectedData, - loading: false - }) + if (selectedData.length && _data.$$uuid === selectedData[selectedData.length - 1].$$uuid) { + MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data) + } + + this.setState({ + data, + selectedData, + loading: false + }) + } else { + let index = data.findIndex(item => item.$$uuid === id) + + if (index === -1) { + this.setState({ + loading: false + }) + return + } + + data = data.filter(item => item.$$uuid !== id) + data = data.map((item, i) => { + item.key = i + item.$$key = '' + item.key + item.$$uuid + + return item + }) + + this.setState({ + data: data, + loading: false + }) + + setTimeout(() => { + MKEmitter.emit('resetTable', config.uuid, 'delete', index) + }, 20) + } } else { this.setState({ loading: false diff --git a/src/tabviews/custom/components/table/edit-table/index.jsx b/src/tabviews/custom/components/table/edit-table/index.jsx index 6450750..fc305fe 100644 --- a/src/tabviews/custom/components/table/edit-table/index.jsx +++ b/src/tabviews/custom/components/table/edit-table/index.jsx @@ -252,10 +252,15 @@ return item }) + let total = result.total || 0 + if (config.setting.custompage && data.length) { + total = data[data.length - 1].mk_total || 0 + } + this.setState({ data: data, selectedData: [], - total: result.total, + total: total, loading: false }) diff --git a/src/tabviews/custom/components/table/normal-table/index.jsx b/src/tabviews/custom/components/table/normal-table/index.jsx index 262deee..af23f19 100644 --- a/src/tabviews/custom/components/table/normal-table/index.jsx +++ b/src/tabviews/custom/components/table/normal-table/index.jsx @@ -401,7 +401,7 @@ if (result.status) { this.loaded = true if (config.$cache && pageIndex === 1 && config.setting.onload !== 'false') { - Api.writeCacheConfig(config.uuid, result.data || '') + Api.writeCacheConfig(config.uuid, result.data || []) } if (repage === 'false' && result.data && result.data.length === 0 && result.total > 0 && pageIndex > 1) { @@ -467,10 +467,15 @@ return item }) + let total = result.total || 0 + if (config.setting.custompage && data.length) { + total = data[data.length - 1].mk_total || 0 + } + this.setState({ data: data, selectedData: [], - total: result.total, + total: total, loading: false }) @@ -541,31 +546,24 @@ let result = await Api.genericInterface(param) if (result.status) { - if (!result.data || !result.data[0]) { - this.setState({ - loading: false - }) - - return - } - let data = fromJS(this.state.data).toJS() let selectedData = fromJS(this.state.selectedData).toJS() - let _data = result.data[0] - _data.$$uuid = _data[setting.primaryKey] || '' - _data.$$BID = BID || '' - _data.$$BData = BData || '' - - if (config.absFields) { - config.absFields.forEach(f => { - if (!isNaN(_data[f])) { - _data[f] = Math.abs(_data[f]) - } - }) - } - - try { + if (!result.data) { + // if (result.data && result.data[0]) { + let _data = result.data[0] + _data.$$uuid = _data[setting.primaryKey] || '' + _data.$$BID = BID || '' + _data.$$BData = BData || '' + + if (config.absFields) { + config.absFields.forEach(f => { + if (!isNaN(_data[f])) { + _data[f] = Math.abs(_data[f]) + } + }) + } + data = data.map(item => { if (item.$$uuid === _data.$$uuid) { _data.key = item.key @@ -576,23 +574,61 @@ return item } }) + + if (!_data.$Index) { + this.setState({ + loading: false + }) + return + } + selectedData = selectedData.map(item => { if (_data.$$uuid === item.$$uuid) { return _data } return item }) - } catch (e) { - console.warn('鏁版嵁鏌ヨ閿欒') + + if (selectedData.length && _data.$$uuid === selectedData[selectedData.length - 1].$$uuid) { + MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data) + } + + this.setState({ + data, + selectedData, + loading: false + }) + + if (config.setting.$hasSyncModule) { + MKEmitter.emit('syncBalconyData', config.uuid, selectedData, data.length === selectedData.length) + } + } else { + let index = data.findIndex(item => item.$$uuid === id) + + if (index === -1) { + this.setState({ + loading: false + }) + return + } + + data = data.filter(item => item.$$uuid !== id) + data = data.map((item, i) => { + item.key = i + item.$$key = '' + item.key + item.$$uuid + + return item + }) + + this.setState({ + data: data, + loading: false + }) + + setTimeout(() => { + MKEmitter.emit('resetTable', config.uuid, 'delete', index) + }, 20) } - - MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid || '', _data) - - this.setState({ - data, - selectedData, - loading: false - }) } else { this.setState({ loading: false @@ -845,65 +881,44 @@ style.display = 'none' } + let content = <> + {config.search && config.search.length ? + <MainSearch BID={BID} config={config} refreshdata={this.refreshbysearch}/> : null + } + {actions.length > 0 ? <MainAction + BID={BID} + setting={setting} + actions={actions} + BData={BData} + columns={config.columns} + selectedData={selectedData} + /> : <div className="mk-action-space" style={{height: '25px'}}></div>} + <div className={'main-table-box ' + (!actions || actions.length === 0 ? 'no-action' : '')}> + <MainTable + setting={setting} + columns={columns} + MenuID={config.uuid} + data={this.state.data} + fields={config.columns} + total={this.state.total} + lineMarks={config.lineMarks} + loading={this.state.loading} + refreshdata={this.refreshbytable} + statFValue={this.state.statFValue} + chgSelectData={(selects) => this.setState({selectedData: selects})} + /> + </div> + </> + return ( <div className="custom-normal-table" id={'anchor' + config.uuid} style={style}> {config.wrap.collapse === 'true' ? <Collapse bordered={false} defaultActiveKey="1" expandIconPosition="right"> <Panel forceRender={true} header={<NormalHeader config={config}/>} key="1"> - {config.search && config.search.length ? - <MainSearch BID={BID} config={config} refreshdata={this.refreshbysearch}/> : null - } - {actions.length > 0 ? <MainAction - BID={BID} - setting={setting} - actions={actions} - BData={BData} - columns={config.columns} - selectedData={selectedData} - /> : <div className="mk-action-space" style={{height: '25px'}}></div>} - <div className="main-table-box"> - <MainTable - setting={setting} - columns={columns} - MenuID={config.uuid} - data={data} - fields={config.columns} - total={this.state.total} - lineMarks={config.lineMarks} - loading={this.state.loading} - refreshdata={this.refreshbytable} - statFValue={this.state.statFValue} - chgSelectData={(selects) => this.setState({selectedData: selects})} - /> - </div> + {content} </Panel> </Collapse> : <> <NormalHeader config={config}/> - {config.search && config.search.length ? - <MainSearch BID={BID} config={config} refreshdata={this.refreshbysearch}/> : null - } - {actions.length > 0 ? <MainAction - BID={BID} - setting={setting} - actions={actions} - BData={BData} - columns={config.columns} - selectedData={selectedData} - /> : <div className="mk-action-space" style={{height: '25px'}}></div>} - <div className={'main-table-box ' + (!actions || actions.length === 0 ? 'no-action' : '')}> - <MainTable - setting={setting} - columns={columns} - MenuID={config.uuid} - data={this.state.data} - fields={config.columns} - total={this.state.total} - lineMarks={config.lineMarks} - loading={this.state.loading} - refreshdata={this.refreshbytable} - statFValue={this.state.statFValue} - chgSelectData={(selects) => this.setState({selectedData: selects})} - /> - </div> + {content} </>} </div> ) diff --git a/src/tabviews/custom/index.jsx b/src/tabviews/custom/index.jsx index df5b969..a94a759 100644 --- a/src/tabviews/custom/index.jsx +++ b/src/tabviews/custom/index.jsx @@ -996,6 +996,10 @@ component.setting.customScript = _customScript // 鏁寸悊鍚庤嚜瀹氫箟鑴氭湰 + if (component.setting.laypage) { + component.setting.custompage = /@pageSize@/i.test(component.setting.dataresource + component.setting.customScript) + } + if (component.setting.sync === 'true') { // pageable 鏄惁鍒嗛〉锛岀粍浠跺睘鎬э紝涓嶅垎椤电殑缁勪欢鎵嶅彲浠ョ粺涓�鏌ヨ if ((!component.pageable || (component.pageable && !component.setting.laypage)) && component.setting.onload === 'true') { diff --git a/src/tabviews/custom/popview/index.jsx b/src/tabviews/custom/popview/index.jsx index 9b2324c..502f9b9 100644 --- a/src/tabviews/custom/popview/index.jsx +++ b/src/tabviews/custom/popview/index.jsx @@ -771,6 +771,10 @@ component.setting.customScript = _customScript // 鏁寸悊鍚庤嚜瀹氫箟鑴氭湰 + if (component.setting.laypage) { + component.setting.custompage = /@pageSize@/i.test(component.setting.dataresource + component.setting.customScript) + } + if (component.setting.sync === 'true') { // pageable 鏄惁鍒嗛〉锛岀粍浠跺睘鎬э紝涓嶅垎椤电殑缁勪欢鎵嶅彲浠ョ粺涓�鏌ヨ if ((!component.pageable || (component.pageable && !component.setting.laypage)) && component.setting.onload === 'true') { diff --git a/src/utils/utils-datamanage.js b/src/utils/utils-datamanage.js index d3609d7..f3ed7f4 100644 --- a/src/utils/utils-datamanage.js +++ b/src/utils/utils-datamanage.js @@ -189,7 +189,6 @@ } let _search = '' - let cus_page = /@pageSize@/i.test(_dataresource + _customScript) if (_dataresource) { if (setting.queryType === 'statistics') { // 缁熻鏁版嵁婧愶紝鍐呭鏇挎崲 @@ -228,15 +227,15 @@ } if (_dataresource && setting.laypage && orderBy && !id) { - if (cus_page) { + if (setting.custompage) { LText = `/*system_query*/select ${arrFields} from ${_dataresource} ${_search} ` } else { LText = `/*system_query*/select top ${pageSize} ${arrFields} from (select ${arrFields} ,ROW_NUMBER() over(order by ${orderBy}) as rows from ${_dataresource} ${_search}) tmptable where rows > ${pageSize * (pageIndex - 1)} order by tmptable.rows ` - } - if (setting.sub_field) { - DateCount = `/*system_query*/select count(1) as total from (select distinct ${setting.primaryKey} from ${_dataresource} ${_search})a` - } else { - DateCount = `/*system_query*/select count(1) as total from ${_dataresource} ${_search}` + if (setting.sub_field) { + DateCount = `/*system_query*/select count(1) as total from (select distinct ${setting.primaryKey} from ${_dataresource} ${_search})a` + } else { + DateCount = `/*system_query*/select count(1) as total from ${_dataresource} ${_search}` + } } } else if (_dataresource && orderBy) { LText = `/*system_query*/select ${arrFields} from (select ${arrFields} ,ROW_NUMBER() over(order by ${orderBy}) as rows from ${_dataresource} ${_search}) tmptable order by tmptable.rows ` -- Gitblit v1.8.0