From bc5ec1017fd8a140ec5c30ea9e8ea839d5bf1bda Mon Sep 17 00:00:00 2001 From: king <18310653075@163.com> Date: 星期二, 15 十二月 2020 16:22:20 +0800 Subject: [PATCH] 2020-12-15 --- src/tabviews/custom/components/card/data-card/index.jsx | 47 ++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 42 insertions(+), 5 deletions(-) diff --git a/src/tabviews/custom/components/card/data-card/index.jsx b/src/tabviews/custom/components/card/data-card/index.jsx index fe0c8a2..b46423b 100644 --- a/src/tabviews/custom/components/card/data-card/index.jsx +++ b/src/tabviews/custom/components/card/data-card/index.jsx @@ -29,6 +29,8 @@ config: null, // 鍥捐〃閰嶇疆淇℃伅 pageIndex: 1, // 椤电爜 activeKey: '', // 閫変腑鍗� + selectKeys: [], // 澶氶�夋椂閫変腑鍗$墖 + selectedData: [], // 閫変腑鏁版嵁锛岀敤浜庡伐鍏锋爮鎸夐挳 loading: false, // 鏁版嵁鍔犺浇鐘舵�� sync: false, // 鏄惁缁熶竴璇锋眰鏁版嵁 card: null, // 鍗$墖璁剧疆 @@ -166,6 +168,8 @@ if (config.setting.supModule && !BID) { // BID 涓嶅瓨鍦ㄦ椂锛屼笉鍋氭煡璇� this.setState({ activeKey: '', + selectKeys: [], + selectedData: [], pageIndex: 1, data: [], total: 0, @@ -195,6 +199,8 @@ if (result.status) { this.setState({ activeKey: '', + selectKeys: [], + selectedData: [], data: result.data.map((item, index) => { item.key = index item.$$uuid = item[config.setting.primaryKey] || '' @@ -264,17 +270,48 @@ } changeCard = (index, item) => { - const { config } = this.state + const { config, selectKeys, selectedData, activeKey } = this.state - if (config.wrap.switch !== 'true') return + if (!config.wrap.cardType) return + + let _selectKeys = [] + let _selectedData = [] + let _activeKey = '' + let _item = item + if (config.wrap.cardType === 'checkbox') { + if (activeKey === index) { + _selectKeys = selectKeys.filter(key => key !== index) + _selectedData = selectedData.filter(cell => cell.key !== index) + _activeKey = _selectKeys.slice(-1)[0] + _item = selectedData.slice(-1)[0] || '' + } else if (selectKeys.indexOf(index) > -1) { + _selectKeys = selectKeys.filter(key => key !== index) + _selectedData = selectedData.filter(cell => cell.key !== index) + _activeKey = activeKey + _item = selectedData.filter(cell => cell.key === activeKey)[0] || '' + } else { + _selectKeys = [...selectKeys, index] + _selectedData = [...selectedData, item] + _activeKey = index + } + } else { + if (activeKey === index) return + + _selectedData = [item] + _activeKey = index + } this.setState({ - activeKey: index + activeKey: _activeKey, + selectKeys: _selectKeys, + selectedData: _selectedData }) + + MKEmitter.emit('resetSelectLine', config.uuid, (_item ? _item.$$uuid : ''), _item) } render() { - const { config, loading, data, pageIndex, total, card, activeKey, BID, BData, selectedData } = this.state + const { config, loading, data, pageIndex, total, card, activeKey, BID, BData, selectedData, selectKeys } = this.state let _total = config.setting.pageSize * pageIndex let switchable = false @@ -306,7 +343,7 @@ {switchable ? <div className={'prev-page ' + (pageIndex === 1 ? 'disabled' : '')} onClick={this.prevPage}><div><div><img src={preImg} alt=""/></div></div></div> : null} {data && data.length > 0 ? <div className="card-row-list"> {data.map((item, index) => ( - <Col className={activeKey === index ? 'active' : ''} key={index} span={card.setting.width || 6} onClick={() => {this.changeCard(index, item)}}> + <Col className={activeKey === index ? 'active' : (selectKeys.indexOf(index) > -1 ? 'selected' : '')} key={index} span={card.setting.width} onClick={() => {this.changeCard(index, item)}}> <CardItem card={card} cards={config} data={item} updateStatus={this.updateStatus}/> </Col> ))} -- Gitblit v1.8.0