From a9b02f6862522b54d0824152017bf2acfec2af7b Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期四, 21 三月 2024 10:29:50 +0800 Subject: [PATCH] 2024-03-21 --- src/tabviews/custom/components/card/table-card/index.jsx | 141 ++++++++++++++++++++++++++++------------------ 1 files changed, 85 insertions(+), 56 deletions(-) diff --git a/src/tabviews/custom/components/card/table-card/index.jsx b/src/tabviews/custom/components/card/table-card/index.jsx index 1d47c0b..ffc4b04 100644 --- a/src/tabviews/custom/components/card/table-card/index.jsx +++ b/src/tabviews/custom/components/card/table-card/index.jsx @@ -12,6 +12,7 @@ import './index.scss' const CardCellComponent = asyncComponent(() => import('../cardcellList')) +const MainAction = asyncComponent(() => import('@/tabviews/zshare/actionList')) const NormalHeader = asyncComponent(() => import('@/tabviews/custom/components/share/normalheader')) class TableCard extends Component { @@ -20,13 +21,14 @@ } state = { - BID: '', // 涓婄骇ID - config: null, // 鍥捐〃閰嶇疆淇℃伅 - loading: false, // 鏁版嵁鍔犺浇鐘舵�� - search: null, // 鎼滅储鏉′欢 - pageIndex: 1, // 椤电爜 - total: 0, // 鎬绘暟 - data: null, // 鏁版嵁 + BID: '', + config: null, + loading: false, + search: null, + pageIndex: 1, + total: 0, + data: null, + precards: [], BData: '' } @@ -74,7 +76,7 @@ _data = window.GLOB.SyncData.get(_config.dataName) || [] if (_config.$cache) { - Api.writeCacheConfig(_config.uuid, fromJS(_data).toJS()) + Api.writeCacheConfig(_config.uuid, fromJS(_data).toJS(), BID) } _config.setting.sync = 'false' @@ -94,13 +96,22 @@ } } + let precards = [] + _config.subcards = _config.subcards.filter(item => { + if (item.setting.condition === 'title') { + precards.push(item) + return false + } + return true + }) + this.setState({ BID: BID || '', BData: BData || '', data: _data, config: _config, search: _config.$searches, - arr_field: _config.columns.map(col => col.field).join(',') + precards }) } @@ -155,21 +166,21 @@ } initExec = () => { - const { config } = this.state + const { config, BID } = this.state if (config.$cache) { if (config.$time && !config.setting.laypage) { if (!this.loaded) { - Api.getLCacheConfig(config.uuid, config.$time).then(res => { - if (!res && config.setting.onload === 'true') { + Api.getLCacheConfig(config.uuid, config.$time, BID).then(res => { + if (!res.valid && config.setting.onload === 'true') { setTimeout(() => { - this.loadData() + this.loadData('init') }, config.setting.delay || 0) } - if (!res || this.loaded) return + if (!res.data || this.loaded) return - let _data = res.map((item, index) => { + let _data = res.data.map((item, index) => { item.key = index item.$$uuid = item[config.setting.primaryKey] || '' item.$Index = index + 1 + '' @@ -181,10 +192,10 @@ } } else { if (!this.loaded) { - Api.getLCacheConfig(config.uuid, 0).then(res => { - if (!res || this.loaded) return + Api.getLCacheConfig(config.uuid, 0, BID).then(res => { + if (!res.data || this.loaded) return - let _data = res.map((item, index) => { + let _data = res.data.map((item, index) => { item.key = index item.$$uuid = item[config.setting.primaryKey] || '' item.$Index = index + 1 + '' @@ -197,7 +208,7 @@ if (config.setting.onload === 'true') { setTimeout(() => { - this.loadData() + this.loadData('init') }, config.setting.delay || 0) } } @@ -218,7 +229,7 @@ let _data = window.GLOB.SyncData.get(config.dataName) || [] if (config.$cache) { - Api.writeCacheConfig(config.uuid, fromJS(_data).toJS()) + Api.writeCacheConfig(config.uuid, fromJS(_data).toJS(), BID) } _data = _data.map((item, index) => { @@ -308,7 +319,7 @@ * @description 瀵煎嚭Excel鏃讹紝鑾峰彇椤甸潰鎼滅储鎺掑簭绛夊弬鏁� */ queryModuleParam = (menuId, callback) => { - const { arr_field, config, search } = this.state + const { config, search } = this.state if (config.uuid !== menuId) return @@ -324,15 +335,13 @@ } callback({ - arr_field: arr_field, orderBy: config.setting.order || '', - search: searches, - menuName: config.name + search: searches }) } async loadData (type) { - const { config, arr_field, pageIndex, search, BID, BData } = this.state + const { config, pageIndex, search, BID, BData } = this.state if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇� this.setState({ @@ -366,7 +375,7 @@ } let _orderBy = config.setting.order || '' - let param = UtilsDM.getQueryDataParams(config.setting, arr_field, searches, _orderBy, pageIndex, config.setting.pageSize, BID) + let param = UtilsDM.getQueryDataParams(config.setting, searches, _orderBy, pageIndex, config.setting.pageSize, BID) let result = await Api.genericInterface(param) if (result.status) { @@ -376,8 +385,8 @@ } this.loaded = true - if (config.$cache && pageIndex === 1 && config.setting.onload !== 'false') { - Api.writeCacheConfig(config.uuid, result.data || []) + if (config.$cache && type === 'init') { + Api.writeCacheConfig(config.uuid, result.data || [], BID) } let data = [] @@ -403,9 +412,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 }) @@ -460,41 +474,32 @@ openView = (card, data) => { if (card.setting.click === 'menu' && card.setting.menu) { let menuId = card.setting.menu.slice(-1)[0] - let menu = window.GLOB.mkThdMenus.filter(m => m.MenuID === menuId)[0] + let menu = null - if (!menu && card.setting.MenuName && card.setting.MenuID) { + if (window.GLOB.mkThdMenus.has(menuId)) { + menu = {...window.GLOB.mkThdMenus.get(menuId)} + } else if (card.setting.MenuID) { menu = { MenuID: card.setting.MenuID, MenuName: card.setting.MenuName, - MenuNo: card.setting.MenuNo || '', type: card.setting.tabType } } - if (!menu) { - notification.warning({ - top: 92, - message: '鑿滃崟宸插垹闄ゆ垨娌℃湁璁块棶鏉冮檺锛�', - duration: 5 - }) - return - } + if (!menu) return - let newtab = { - ...menu, - param: {} - } + menu.param = {} if (card.setting.joint === 'true') { - newtab.param.$BID = data.$$uuid || '' + menu.param.$BID = data.$$uuid || '' Object.keys(data).forEach(key => { if (/^\$/.test(key)) return - newtab.param[key] = data[key] + menu.param[key] = data[key] }) } - MKEmitter.emit('modifyTabs', newtab, true) + MKEmitter.emit('modifyTabs', menu, true) } else if (card.setting.click === 'link') { let src = card.setting.linkurl @@ -514,13 +519,14 @@ } } - getLines = (data) => { + getLines = (data, lindex) => { const { config } = this.state let line = [] config.subcards.forEach((item, index) => { let display = item.setting.condition !== 'true' + let className = '' if (!display && item.setting.controlField) { let val = data[item.setting.controlField] @@ -538,12 +544,20 @@ } else if (item.setting.controlType === '<' && val < item.setting.controlValue) { display = true } + + className = 'mk_line_' + val } if (!display) return + if (config.wrap.parity === 'true') { + if (lindex % 2 === 1) { + className += ' mk-even-line' + } + } + line.push( - <Col key={index} span={24}> + <Col key={index} className={className} span={24}> <div className="card-item-box" style={item.style} onClick={() => {this.openView(item, data)}}> <CardCellComponent data={data} cards={config} cardCell={item} elements={item.elements}/> </div> @@ -578,7 +592,7 @@ } render() { - const { config, loading, data, BID, pageIndex, total } = this.state + const { config, loading, data, BID, pageIndex, total, BData, precards } = this.state if (config.wrap.empty === 'hidden' && (!data || data.length === 0)) return null @@ -591,12 +605,27 @@ </div> : null } <NormalHeader config={config} BID={BID} refresh={this.refreshSearch} /> - {data && data.length > 0 ? <Row className={'card-row-list' + (config.wrap.parity === 'true' ? ' mk-parity' : '')} style={{height: config.wrap.contentHeight}}> - {data.map(item => this.getLines(item))} - </Row> : null} - {data && data.length === 0 ? <div className="card-row-list" style={{height: config.wrap.contentHeight}}> - <Empty description={false}/> - </div> : null} + {config.action && config.action.length > 0 ? + <MainAction + BID={BID} + BData={BData} + setting={config.setting} + actions={config.action} + columns={config.columns} + selectedData={[]} + /> : null + } + <Row className={`card-row-list ${config.wrap.hover === 'true' ? 'mk-hover' : ''}`} style={{height: config.wrap.contentHeight}}> + {precards.map((item, index) => ( + <Col key={index} className="extend-card" span={24}> + <div className="card-item-box" style={item.style}> + <CardCellComponent data={data && data[0] ? data[0] : {}} cards={config} cardCell={item} elements={item.elements}/> + </div> + </Col> + ))} + {data && data.length > 0 ? data.map((item, index) => this.getLines(item, index)) : null} + {data && data.length === 0 ? <Empty description={false}/> : null} + </Row> {config.wrap.pagestyle === 'page' ? <Pagination size="small" current={pageIndex} total={total} onChange={this.changePageIndex} /> : null} {config.wrap.pagestyle === 'more' && data && data.length > 0 ? <div className={'mk-more' + (config.setting.pageSize * pageIndex >= total ? ' disabled' : '')} onClick={this.loadMore}>鏌ョ湅鏇村<DownOutlined/></div> : null} </div> -- Gitblit v1.8.0