Ver Fonte

Merge branch 'dev' of http://110.41.163.243:9980/kd-aiot/kd-aiot-frontend into dev

chencc há 1 ano atrás
pai
commit
d9a618bead

+ 47 - 1
src/mixins/tableColumnsMixin.js

@@ -37,7 +37,13 @@ export default {
     async getTabColumns() {
       const res = await this.getByTableId(this.cacheKeyUrl);
       if (res?.columnConfig?.length > 0) {
-        this.setStorage(this.cacheKeyUrl + 'Cols', res.columnConfig);
+        //对比接口返回和本地columns
+        let { nlist, type } = this.columnsContrast(res.columnConfig);
+        //有更新则更新服务缓存配置
+        if (type) {
+          this.saveColumns(nlist);
+        }
+        this.setStorage(this.cacheKeyUrl + 'Cols', nlist);
         // 更新列
         if (this._computedWatchers && this._computedWatchers.columns) {
           // console.log('columns 是计算属性');
@@ -49,6 +55,46 @@ export default {
         }
       }
     },
+    //服务器和本地配置columns对比
+    columnsContrast(list) {
+      const key = 'label';
+      var updateType = 0;
+      let sList = list.filter((d, i, r) => {
+        return d[key];
+      });
+      let devColumns =
+        this.newColumns?.length > 0 ? this.newColumns : this.columns;
+      let dList = devColumns.filter((d, i, r) => {
+        return d[key] && d[key] !== '序号';
+      });
+      const keysA = new Set(sList.map((item) => item[key]));
+      const keysB = new Set(dList.map((item) => item[key]));
+      // 本地 比 缓存服务端 多的对象(新增)
+      const added = dList.filter((item) => !keysA.has(item[key]));
+      // 本地 比 缓存服务端 少的对象(删除)
+      const removed = sList.filter((item) => !keysB.has(item[key]));
+      const removedPropSet = new Set(removed.map((item) => item[key]));
+      // 删除 缓存中 中被移除的对象
+      const keptA = list.filter((item) => !removedPropSet.has(item[key]));
+      added.forEach((item) => {
+        //新增columns字段prop参数为必填
+        if (item.prop) {
+          item.id = item.prop;
+        } else if (item.columnKey) {
+          item.id = item.columnKey;
+        } else {
+          item.prop = item.label;
+          item.id = item.label;
+        }
+        item.checked = true;
+      });
+
+      if (added.length > 0 || removed.length > 0) {
+        updateType = 1;
+      }
+      // 合并保留的对象和新增的对象
+      return { nlist: [...keptA, ...added], type: updateType };
+    },
 
     // 提交columns配置
     async saveColumns(e) {

+ 6 - 2
src/views/factoryModel/jobManagement/index.vue

@@ -10,7 +10,9 @@
         :datasource="datasource"
         :selection.sync="selection"
         row-key="id"
-        :pageSize="pageSize"
+        :page-size="pageSize"
+        @columns-change="handleColumnChange"
+        :cache-key="cacheKeyUrl"
       >
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
@@ -100,6 +102,7 @@
 </template>
 
 <script>
+  import tabMixins from '@/mixins/tableColumnsMixin';
   import UserSearch from './components/user-search.vue';
   import UserEdit from './components/user-edit.vue';
   import {
@@ -115,7 +118,7 @@
       UserSearch,
       UserEdit
     },
-    mixins: [dictMixins],
+    mixins: [dictMixins, tabMixins],
     data() {
       return {
         levelOptions: [
@@ -226,6 +229,7 @@
         sampleShow: false,
         taskId: null,
         pageSize: this.$store.state.tablePageSize,
+        cacheKeyUrl: 'e04497fe-factoryModel-jobManagement'
       };
     },
     created() {

+ 7 - 2
src/views/factoryModel/qualificationManagement/index.vue

@@ -11,7 +11,9 @@
         :datasource="datasource"
         :selection.sync="selection"
         row-key="id"
-        :pageSize="pageSize"
+        :page-size="pageSize"
+        @columns-change="handleColumnChange"
+        :cache-key="cacheKeyUrl"
       >
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
@@ -121,6 +123,8 @@
 </template>
 
 <script>
+import tabMixins from '@/mixins/tableColumnsMixin';
+
 import UserSearch from './components/user-search.vue';
 import addOrEditDialog from './components/addOrEditDialog.vue';
 import {
@@ -141,7 +145,7 @@ export default {
     UserSearch,
     addOrEditDialog
   },
-  mixins: [dictMixins],
+  mixins: [dictMixins, tabMixins],
   data() {
     return {
       levelOptions: [
@@ -238,6 +242,7 @@ export default {
       sampleShow: false,
       taskId: null,
       pageSize: this.$store.state.tablePageSize,
+      cacheKeyUrl: 'd8876c3b-factoryModel-qualificationManagement'
     };
   },
   created() {

+ 1 - 1
src/views/material/BOMmanage/index.vue

@@ -206,7 +206,7 @@ export default {
           sortable: true
         },
         {
-          action: 'action',
+          columnKey: 'action',
           slot: 'action',
           label: '操作'
         }

+ 1 - 1
src/views/material/product/components/index-data.vue

@@ -580,7 +580,7 @@ export default {
         });
 
         this.newColumns = [...this.columns, ...newRes, ...privateColumn];
-
+        this.getTabColumns()
         this.$forceUpdate();
       });
     },

+ 6 - 1
src/views/technology/work/index.vue

@@ -16,6 +16,8 @@
         v-loading="loading"
         row-key="code"
         :pageSize="this.$store.state.tablePageSize"
+        @columns-change="handleColumnChange"
+        :cache-key="cacheKeyUrl"
       >
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
@@ -81,6 +83,7 @@
 </template>
 
 <script>
+  import tabMixins from '@/mixins/tableColumnsMixin';
   import UserSearch from './components/user-search.vue';
   import UserEdit from './components/user-edit.vue';
   import work from '@/api/technology/work';
@@ -88,6 +91,7 @@
 
   export default {
     name: 'technologyWork',
+    mixins:[tabMixins],
     components: {
       UserSearch,
       UserEdit
@@ -167,7 +171,8 @@
         showEdit: false,
         // 是否显示导入弹窗
         showImport: false,
-        loading: false
+        loading: false,
+        cacheKeyUrl: '439a8ef9-technology-work'
       };
     },
     created () {