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