lilei 6 months ago
parent
commit
17d778e094
4 changed files with 878 additions and 151 deletions
  1. 853 126
      package-lock.json
  2. 1 0
      package.json
  3. 24 24
      src/components/VTable/index.vue
  4. 0 1
      vue.config.js

File diff suppressed because it is too large
+ 853 - 126
package-lock.json


+ 1 - 0
package.json

@@ -15,6 +15,7 @@
   },
   },
   "dependencies": {
   "dependencies": {
     "@antv/data-set": "^0.10.2",
     "@antv/data-set": "^0.10.2",
+    "@babel/preset-env": "^7.26.0",
     "@jiaminghi/data-view": "^2.10.0",
     "@jiaminghi/data-view": "^2.10.0",
     "ant-design-vue": "^1.7.8",
     "ant-design-vue": "^1.7.8",
     "axios": "^0.19.0",
     "axios": "^0.19.0",

+ 24 - 24
src/components/VTable/index.vue

@@ -169,7 +169,7 @@ export default {
   methods: {
   methods: {
     // 选择单元格
     // 选择单元格
     selectedRowChange ({ row, isSelected, selectedRowKeys }) {
     selectedRowChange ({ row, isSelected, selectedRowKeys }) {
-      console.log(isSelected, selectedRowKeys)
+      // console.log(isSelected, selectedRowKeys)
       // 选中
       // 选中
       if (isSelected) {
       if (isSelected) {
         this.selectedRows.push(row)
         this.selectedRows.push(row)
@@ -183,16 +183,10 @@ export default {
     },
     },
     // 全选或取消本页行
     // 全选或取消本页行
     selectedAllChange ({ isSelected, selectedRowKeys }) {
     selectedAllChange ({ isSelected, selectedRowKeys }) {
-      console.log(isSelected, selectedRowKeys)
+      // console.log(isSelected, selectedRowKeys)
       // 全选
       // 全选
       if (isSelected) {
       if (isSelected) {
         // 合并数组,并去重
         // 合并数组,并去重
-        this.selectedRowKeys = this.selectedRowKeys.concat(selectedRowKeys).reduce((prev, next) => {
-          if (!prev.find(item => item === next)) {
-            prev.push(next)
-          }
-          return prev
-        }, [])
         this.selectedRows = this.selectedRows.concat(this.localDataSource).reduce((prev, next) => {
         this.selectedRows = this.selectedRows.concat(this.localDataSource).reduce((prev, next) => {
           if (!prev.find(item => item[this.rowKeyName] === next[this.rowKeyName])) {
           if (!prev.find(item => item[this.rowKeyName] === next[this.rowKeyName])) {
             prev.push(next)
             prev.push(next)
@@ -202,15 +196,34 @@ export default {
       } else {
       } else {
         // 取消全选,删除当前页选项
         // 取消全选,删除当前页选项
         const changeRowKeys = this.localDataSource.map(item => item[this.rowKeyName])
         const changeRowKeys = this.localDataSource.map(item => item[this.rowKeyName])
-        this.selectedRowKeys = this.selectedRowKeys.filter(item => !changeRowKeys.includes(item))
         this.selectedRows = this.selectedRows.filter(item => !changeRowKeys.includes(item[this.rowKeyName]))
         this.selectedRows = this.selectedRows.filter(item => !changeRowKeys.includes(item[this.rowKeyName]))
       }
       }
+      this.selectedRowKeys = selectedRowKeys
       this.onRowSelection()
       this.onRowSelection()
       this.$emit('selectAllRowChange', { isSelected, selectedRowKeys })
       this.$emit('selectAllRowChange', { isSelected, selectedRowKeys })
     },
     },
     // 触发已选项事件
     // 触发已选项事件
     onRowSelection () {
     onRowSelection () {
-      this.$emit('rowSelection', { selectedRows: this.selectedRows, selectedRowKeys: this.selectedRowKeys })
+      // console.log(this.selectedRows)
+      const selectedRowKeys = this.selectedRows.map(item => item[this.rowKeyName])
+      this.$emit('rowSelection', { selectedRows: this.selectedRows, selectedRowKeys: selectedRowKeys })
+    },
+    // 页码改变的时候设置新页的已选项
+    setCheckedRows () {
+      const list = this.selectedRows.map(item => item[this.rowKeyName])
+      this.selectedRowKeys = this.localDataSource.filter(item => list.includes(item[this.rowKeyName])).map(item => item[this.rowKeyName])
+    },
+    /**
+     * 清空 table 已选中项
+     */
+    clearSelected () {
+      this.selectedRowKeys = []
+      this.selectedRows = []
+    },
+    // 设置 table 已选中项
+    setTableSelected (selectedRowKeys) {
+      this.selectedRows = selectedRowKeys.map(item => { const obj = {}; obj[this.rowKeyName] = item; return obj })
+      this.setCheckedRows()
     },
     },
     // 通过key.key...获取属性值
     // 通过key.key...获取属性值
     getNestedPropertyValue (obj, path) {
     getNestedPropertyValue (obj, path) {
@@ -323,6 +336,7 @@ export default {
             this.localPagination = false
             this.localPagination = false
           }
           }
           this.localDataSource = list // 返回结果中的数组数据
           this.localDataSource = list // 返回结果中的数组数据
+          this.setCheckedRows()
           this.localLoading = false
           this.localLoading = false
         }).catch(err => {
         }).catch(err => {
           this.clearTable()
           this.clearTable()
@@ -372,20 +386,6 @@ export default {
       this.localPagination = Object.assign({}, {
       this.localPagination = Object.assign({}, {
         current: 1, pageSize: this.localPagination.pageSize, total: 0
         current: 1, pageSize: this.localPagination.pageSize, total: 0
       })
       })
-    },
-    /**
-     * 清空 table 已选中项
-     */
-    clearSelected () {
-      if (this.rowSelection) {
-        this.selectedRowKeys = []
-        this.onRowSelection()
-      }
-    },
-    // 设置 table 已选中项
-    setTableSelected (selectedRowKeys) {
-      this.selectedRowKeys = selectedRowKeys
-      this.onRowSelection()
     }
     }
   }
   }
 }
 }

+ 0 - 1
vue.config.js

@@ -31,7 +31,6 @@ const assetsCDN = {
     BASE_URL + 'js/vue-router.min.js',
     BASE_URL + 'js/vue-router.min.js',
     BASE_URL + 'js/vuex.min.js',
     BASE_URL + 'js/vuex.min.js',
     BASE_URL + 'js/axios.min.js'
     BASE_URL + 'js/axios.min.js'
-    // BASE_URL + 'js/echarts.min.js'
   ]
   ]
 }
 }
 
 

Some files were not shown because too many files changed in this diff