Просмотр исходного кода

列表状态字段搜索,列表配置混入文件修改prop属性变更同步新服务缓存,菜单报表更改

zhangqing 1 год назад
Родитель
Сommit
929eabd52a

+ 26 - 5
src/mixins/tableColumnsMixin.js

@@ -70,7 +70,9 @@ export default {
       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 added = dList.filter((item) => {
+        return !keysA.has(item[key]) && (item.prop || item.label === '操作');
+      });
       // 本地 比 缓存服务端 少的对象(删除)
       const removed = sList.filter((item) => !keysB.has(item[key]));
       const removedPropSet = new Set(removed.map((item) => item[key]));
@@ -82,9 +84,6 @@ export default {
           item.id = item.prop;
         } else if (item.columnKey) {
           item.id = item.columnKey;
-        } else {
-          item.prop = item.label;
-          item.id = item.label;
         }
         item.checked = true;
       });
@@ -92,8 +91,30 @@ export default {
       if (added.length > 0 || removed.length > 0) {
         updateType = 1;
       }
+
+      // 更新项:key 存在但内容变化
+      const dMap = new Map(dList.map((item) => [item[key], item]));
+      const updated = keptA.map((sItem) => {
+        const dItem = dMap.get(sItem[key]);
+        if (dItem && dItem.prop && sItem.prop !== dItem.prop) {
+          updateType = 1;
+          // 记录旧值和新值
+          const oldValue = sItem.prop;
+          const newValue = dItem.prop;
+          // 遍历所有属性,动态替换匹配旧值的字段
+          const updatedItem = { ...sItem };
+          Object.keys(updatedItem).forEach((k) => {
+            if (updatedItem[k] === oldValue) {
+              updatedItem[k] = newValue;
+            }
+          });
+          return updatedItem;
+        }
+        return sItem;
+      });
+
       // 合并保留的对象和新增的对象
-      return { nlist: [...keptA, ...added], type: updateType };
+      return { nlist: [...updated, ...added], type: updateType };
     },
 
     // 提交columns配置

+ 16 - 2
src/views/bpm/group/index.vue

@@ -11,6 +11,7 @@
         :page-size="pageSize"
         @columns-change="handleColumnChange"
         :cache-key="cacheKeyUrl"
+        @filter-change="selectType"
       >
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
@@ -106,13 +107,19 @@ export default {
           showOverflowTooltip: true,
           minWidth: 200
         },
-        {
+        {//修改此prop名称时,请同步修改columnKey属性和下方selectType方法
           prop: 'status',
           slot: 'status',
           label: '状态',
           align: 'center',
           showOverflowTooltip: true,
-          minWidth: 200
+          minWidth: 200,
+          filters: [
+              { value: 0, text: '开启' },
+              { value: 1, text: '关闭' },
+            ],
+          filterMultiple:false,
+          columnKey: 'status'
         },
 
         {
@@ -146,6 +153,13 @@ export default {
     // })
   },
   methods: {
+    selectType(value) {
+      let where = {}
+      if (value.status.length > 0) {
+        where['status'] = value.status[0]
+      }
+      this.reload(where)
+    },
     /* 表格数据源 */
     datasource({ page, limit, where, order }) {
       return getUserGroupPage({

+ 16 - 2
src/views/factoryModel/factoryManagement/index.vue

@@ -10,6 +10,7 @@
         :page-size="pageSize"
         @columns-change="handleColumnChange"
         :cache-key="cacheKeyUrl"
+        @filter-change="selectType"
       >
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
@@ -103,10 +104,16 @@ export default {
           label: '详细地址',
           prop: 'extInfo.locationDetail'
         },
-        {
+        {//修改此prop名称时,请同步修改columnKey属性和下方selectType方法
           label: '状态',
           prop: 'enabled',
-          slot: 'enabled'
+          slot: 'enabled',
+          filters: [
+              { value: 1, text: '生效' },
+              { value: 0, text: '未生效' },
+            ],
+          filterMultiple: false,
+          columnKey: 'enabled'
         },
         {
           columnKey: 'action',
@@ -133,6 +140,13 @@ export default {
     this.getGs();
   },
   methods: {
+    selectType(value) {
+      let where = {}
+      if (value.enabled.length > 0) {
+        where['enable'] = value.enabled[0]
+      }
+      this.search(where)
+    },
     datasource({ page, where, limit }) {
       return getFactoryarea({
         ...where,

+ 16 - 2
src/views/factoryModel/productionLine/index.vue

@@ -9,6 +9,7 @@
         :page-size="pageSize"
         @columns-change="handleColumnChange"
         :cache-key="cacheKeyUrl"
+        @filter-change="selectType"
       >
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
@@ -107,10 +108,16 @@ export default {
           label: '详细地址',
           prop: 'extInfo.locationDetail'
         },
-        {
+        {//修改此prop名称时,请同步修改columnKey属性和下方selectType方法
           label: '状态',
           prop: 'enabled',
-          slot: 'enabled'
+          slot: 'enabled',
+          filters: [
+              { value: 1, text: '生效' },
+              { value: 0, text: '未生效' },
+            ],
+          filterMultiple: false,
+          columnKey: 'enabled'
         },
         {
           columnKey: 'action',
@@ -139,6 +146,13 @@ export default {
     this.getFactoryarea();
   },
   methods: {
+    selectType(value) {
+      let where = {}
+      if (value.enabled.length > 0) {
+        where['enable'] = value.enabled[0]
+      }
+      this.search(where)
+    },
     datasource({ page, where, limit }) {
       return getFactoryarea({
         ...where,

+ 16 - 2
src/views/factoryModel/station/index.vue

@@ -14,6 +14,7 @@
         :page-size="pageSize"
         @columns-change="handleColumnChange"
         :cache-key="cacheKeyUrl"
+        @filter-change="selectType"
       >
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
@@ -138,10 +139,16 @@ export default {
           prop: 'extInfo.meterTime',
           slot: 'meterTime'
         },
-        {
+        {//修改此prop名称时,请同步修改columnKey属性和下方selectType方法
           label: '状态',
           prop: 'enabled',
-          slot: 'enabled'
+          slot: 'enabled',
+          filters: [
+              { value: 1, text: '生效' },
+              { value: 0, text: '未生效' },
+            ],
+          filterMultiple: false,
+          columnKey: 'enabled'
         },
         {
           columnKey: 'action',
@@ -170,6 +177,13 @@ export default {
     this.getFactoryarea();
   },
   methods: {
+      selectType(value) {
+        let where = {}
+        if (value.enabled.length > 0) {
+          where['enable'] = value.enabled[0]
+        }
+        this.search(where)
+      },
       datasource ({ page, where, limit }) {
       return getFactoryworkstation({
         ...where,

+ 15 - 3
src/views/notifyManage/notifyRecord/index.vue

@@ -3,7 +3,7 @@
     <el-card shadow="never">
       <!-- 条件区 -->
       <search @search="reload"/>
-      <ele-pro-table ref="table" :columns="columns" :datasource="datasource" :pageSize="this.$store.state.tablePageSize">
+      <ele-pro-table ref="table" :columns="columns" :datasource="datasource" :pageSize="this.$store.state.tablePageSize" @filter-change="selectType">
         <!-- 操作列 -->
         <template v-slot:action="{ row }">
 
@@ -66,13 +66,18 @@ export default {
           minWidth: '60',
           align: "center",
         },
-        {
+        {//修改此prop名称时,请同步修改columnKey属性和下方selectType方法
           prop: 'readStatus',
           label: '状态',
           width: '90',
           slot:'readStatus',
           align: "center",
-
+          filters: [
+              { value: 1, text: '已读' },
+              { value: 0, text: '未读' },
+            ],
+          filterMultiple: false,
+          columnKey: 'readStatus'
         },
         {
           prop: 'readTime',
@@ -111,6 +116,13 @@ export default {
     };
   },
   methods: {
+    selectType(value) {
+      let where = {}
+      if (value.readStatus.length > 0) {
+        where['readStatus'] = value.readStatus[0]
+      }
+      this.reload(where)
+    },
     //新增或修改模板
     handleAddOrEdit(type, row) {
       this.addOrEditDialogFlag = true

+ 16 - 2
src/views/rulesManagement/earlyWarningRules/index.vue

@@ -10,6 +10,7 @@
         :page-size="pageSize"
         @columns-change="handleColumnChange"
         :cache-key="cacheKeyUrl"
+        @filter-change="selectType"
       >
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
@@ -125,7 +126,7 @@ export default {
           showOverflowTooltip: true,
           minWidth: 110
         },
-        {
+        {//修改此prop名称时,请同步修改columnKey属性和下方selectType方法
           prop: 'enabled',
           label: '状态',
           align: 'center',
@@ -133,7 +134,13 @@ export default {
           minWidth: 110,
           formatter: (_row, _column, cellValue) => {
             return this.getDictValue('规则状态', _row.enabled);
-          }
+          },
+          filters: [
+              { value: 1, text: '生效' },
+              { value: 0, text: '失效' },
+            ],
+          filterMultiple: false,
+          columnKey: 'enabled'
         },
         {
           prop: 'alertCycleValue',
@@ -188,6 +195,13 @@ export default {
     this.getData();
   },
   methods: {
+    selectType(value) {
+      let where = {}
+      if (value.enabled.length > 0) {
+        where['enabled'] = value.enabled[0]
+      }
+      this.reload(where)
+    },
     /* 表格数据源 */
     datasource({ page, limit, where, order }) {
       return getList({ pageNum: page, size: limit, ...where });

+ 16 - 2
src/views/rulesManagement/inspectionPoint/index.vue

@@ -10,6 +10,7 @@
         :page-size="pageSize"
         @columns-change="handleColumnChange"
         :cache-key="cacheKeyUrl"
+        @filter-change="selectType"
       >
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
@@ -171,7 +172,7 @@ export default {
             return autoOrder;
           }
         },
-        {
+        {//修改此prop名称时,请同步修改columnKey属性和下方selectType方法
           prop: 'status',
           label: '状态',
           align: 'center',
@@ -179,7 +180,13 @@ export default {
           minWidth: 110,
           formatter: (_row, _column, cellValue) => {
             return this.getDictValue('规则状态', _row.status);
-          }
+          },
+          filters: [
+            { value: 1, text: '生效'},
+            { value: 0, text: '失效'}
+          ],
+          filterMultiple: false,
+          columnKey: 'status'
         },
         {
           prop: 'createUserName',
@@ -230,6 +237,13 @@ export default {
     this.requestDict('规则状态');
   },
   methods: {
+    selectType(value) {
+      let where = {}
+      if (value.status.length > 0) {
+        where['status'] = value.status[0]
+      }
+      this.reload(where)
+    },
     /* 表格数据源 */
     datasource({ page, limit, where, order }) {
       return planConfigPage({

+ 16 - 2
src/views/rulesManagement/maintenance/index.vue

@@ -10,6 +10,7 @@
         :page-size="pageSize"
         @columns-change="handleColumnChange"
         :cache-key="cacheKeyUrl"
+        @filter-change="selectType"
       >
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
@@ -147,7 +148,7 @@ export default {
             return autoOrder;
           }
         },
-        {
+        {//修改此prop名称时,请同步修改columnKey属性和下方selectType方法
           prop: 'status',
           label: '状态',
           align: 'center',
@@ -155,7 +156,13 @@ export default {
           minWidth: 110,
           formatter: (_row, _column, cellValue) => {
             return this.getDictValue('规则状态', _row.status);
-          }
+          },
+          filters: [
+            { value: 1, text: '生效'},
+            { value: 0, text: '失效'}
+          ],
+          filterMultiple: false,
+          columnKey: 'status'
         },
         {
           prop: 'createUserName',
@@ -198,6 +205,13 @@ export default {
     this.requestDict('规则状态');
   },
   methods: {
+    selectType(value) {
+      let where = {}
+      if (value.status.length > 0) {
+        where['status'] = value.status[0]
+      }
+      this.reload(where)
+    },
     /* 表格数据源 */
     datasource({ page, limit, where, order }) {
       return planConfigPage({

+ 16 - 2
src/views/rulesManagement/measuringSubmit/index.vue

@@ -10,6 +10,7 @@
         :page-size="pageSize"
         @columns-change="handleColumnChange"
         :cache-key="cacheKeyUrl"
+        @filter-change="selectType"
       >
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
@@ -147,7 +148,7 @@ export default {
             return autoOrder;
           }
         },
-        {
+        {//修改此prop名称时,请同步修改columnKey属性和下方selectType方法
           prop: 'status',
           label: '状态',
           align: 'center',
@@ -155,7 +156,13 @@ export default {
           minWidth: 110,
           formatter: (_row, _column, cellValue) => {
             return this.getDictValue('规则状态', _row.status);
-          }
+          },
+          filters: [
+              { value: 1, text: '生效' },
+              { value: 0, text: '失效' },
+            ],
+          filterMultiple: false,
+          columnKey: 'status'
         },
         {
           prop: 'createUserName',
@@ -198,6 +205,13 @@ export default {
     this.requestDict('规则状态');
   },
   methods: {
+    selectType(value) {
+      let where = {}
+      if (value.status.length > 0) {
+        where['status'] = value.status[0]
+      }
+      this.reload(where)
+    },
     /* 表格数据源 */
     datasource({ page, limit, where, order }) {
       return planConfigPage({

+ 16 - 2
src/views/system/dictionary/components/dict-data.vue

@@ -13,6 +13,7 @@
       tool-class="ele-toolbar-form"
       cache-key="systemDictDataTable"
       :pageSize="this.$store.state.tablePageSize"
+      @filter-change="selectType"
     >
       <!-- 表头工具栏 -->
       <!-- <template v-slot:toolbar>
@@ -117,12 +118,18 @@
           //   showOverflowTooltip: true,
           //   minWidth: 110
           // },
-          {
+          {//修改此prop名称时,请同步修改columnKey属性和下方selectType方法
             prop: 'appType',
             align: 'center',
             label: '应用类型',
             showOverflowTooltip: true,
-            slot: 'appType'
+            slot: 'appType',
+            filters:[
+              { value: 1, text:'业务字段' },
+              { value: 2, text:'数据字典' },
+            ],
+            filterMultiple: false,
+            columnKey: 'appType'
           },
           {
             prop: 'remark',
@@ -165,6 +172,13 @@
     },
 
     methods: {
+      selectType(value) {
+        let where = {}
+        if (value.appType.length > 0) {
+          where['appType'] = value.appType[0]
+        }
+        this.reload(where)
+      },
       /* 表格数据源 */
       datasource({ page, limit, where, order }) {
         return listDictionaries({ pageNum: page, size: limit, ...where });

+ 19 - 5
src/views/system/menu/components/menu-edit.vue

@@ -37,7 +37,7 @@
           <el-form-item label="菜单来源:" prop="source">
             <el-radio-group v-model="form.source" @input="sourceChange">
               <el-radio :label="1">内部地址</el-radio>
-              <el-radio :label="2">外部地址</el-radio>
+              <el-radio :label="2">报表地址</el-radio>
             </el-radio-group>
           </el-form-item>
         </el-col>
@@ -53,10 +53,11 @@
         </el-col>
         <el-col :span="12">
           <el-form-item
-            :label="form.source == 1 ? '组件地址' : '外链地址'"
-            :prop="form.source == 2 ? 'component' : ''"
+            label="组件地址"
+            prop="component"
           >
             <el-input
+              :disabled="form.source == 2"
               clearable
               v-model="form.component"
               :placeholder="
@@ -115,6 +116,17 @@
             />
           </el-form-item>
         </el-col>
+        <el-col :span="12">
+          <el-form-item :rules="[
+      { required: form.source === 2 ? true : false, message: '字段必填', trigger: 'blur' }
+    ]" :label="form.source === 2 ? '报表ID:': '扩展属性:'"  :prop="form.source == 2 ? 'extend' : ''">
+            <el-input
+              clearable
+              v-model="form.extend"
+              :placeholder="form.source === 2 ? '请输入报表ID' : '请输入扩展属性'"
+            />
+          </el-form-item>
+        </el-col>
         <el-col :span="12">
           <el-form-item label="菜单类型:" prop="type">
             <el-radio-group v-model="form.type" @change="onMenuTypeChange">
@@ -167,7 +179,8 @@ export default {
       sort: null,
       rootId: null,
       permissionCode: 1,
-      secretLevel: 1
+      secretLevel: 1,
+      extend: null, //报表ID
     };
     return {
       defaultForm,
@@ -208,7 +221,8 @@ export default {
     sourceChange(e) {
       if (e == 2) {
         this.form.url =
-          '/sourceLink' + Math.floor(10000 + Math.random() * 90000);
+          '/reportForms/sourceLink';
+        this.form.component = '/reportForms/sourceLink'
       } else {
         this.form.url = '/';
       }

+ 20 - 2
src/views/technology/parameter/index.vue

@@ -13,6 +13,7 @@
         :page-size="this.$store.state.tablePageSize"
         @columns-change="handleColumnChange"
         :cache-key="cacheKeyUrl"
+        @filter-change="selectType"
       >
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
@@ -164,12 +165,22 @@
             align: 'center',
             showOverflowTooltip: true
           },
-          {
+          {//修改此prop名称时,请同步修改columnKey属性和下方selectType方法
             prop: 'categoryType',
             label: '参数分类',
             align: 'center',
             slot: 'status',
-            showOverflowTooltip: true
+            showOverflowTooltip: true,
+            filters: [
+              { text: '工艺', value: 0 },
+              { text: '工序', value: 1 },
+              { text: '产品', value: 2 },
+              { text: '原料', value: 3 },
+              { text: '设备', value: 4 },
+              { text: '其他', value: 5 }
+            ],
+          filterMultiple: false,
+          columnKey: 'categoryType'
           },
 
           {
@@ -202,6 +213,13 @@
       };
     },
     methods: {
+      selectType(value) {
+        let where = {}
+        if (value.categoryType.length > 0) {
+          where['categoryType'] = value.categoryType[0]
+        }
+        this.reload(where)
+      },
       /*回显类型 */
       checkType(id) {
         const obj = this.statusList.find((item) => item.value == id);

+ 17 - 2
src/views/technology/route/index.vue

@@ -11,6 +11,7 @@
       :page-size="this.$store.state.tablePageSize"
       @columns-change="handleColumnChange"
       :cache-key="cacheKeyUrl"
+      @filter-change="selectType"
       >
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
@@ -130,13 +131,20 @@ export default {
           showOverflowTooltip: true
         },
 
-        {
+        {//修改此prop名称时,请同步修改columnKey属性和下方selectType方法
           prop: 'status',
           label: '状态',
           align: 'center',
           slot: 'status',
           showOverflowTooltip: true,
-          minWidth: 110
+          minWidth: 110,
+          filters:[
+            { text: '草稿', value: -1 },
+            { text: '失效', value: 0 },
+            { text: '生效', value: 1 }
+          ],
+          filterMultiple: false,
+          columnKey: 'status'
         },
 
         {
@@ -187,6 +195,13 @@ export default {
     };
   },
   methods: {
+    selectType(value) {
+      let where = {}
+      if (value.status.length > 0) {
+        where['status'] = value.status[0]
+      }
+      this.reload(where)
+    },
     /* 表格数据源 */
     async datasource({ page, limit, where, order }) {
       const res = await route.list({

+ 15 - 1
src/views/workforceManagement/schedule/index.vue

@@ -9,6 +9,7 @@
         :page-size="pageSize"
         @columns-change="handleColumnChange"
         :cache-key="cacheKeyUrl"
+        @filter-change="selectType"
       >
         <!-- 表头工具栏 -->
         <template v-slot:toolbar>
@@ -94,10 +95,16 @@ export default {
           label: '创建人',
           prop: 'createUserName'
         },
-        {
+        {//修改此prop名称时,请同步修改columnKey属性和下方selectType方法
           label: '状态',
           prop: 'status',
           slot: 'status',
+          filters: [
+              { value: 1, text: '发布' },
+              { value: 0, text: '草稿' },
+            ],
+          filterMultiple: false,
+          columnKey: 'status'
         },
 
         {
@@ -126,6 +133,13 @@ export default {
     };
   },
   methods: {
+    selectType(value) {
+      let where = {}
+      if (value.status.length > 0) {
+        where['status'] = value.status[0]
+      }
+      this.reload(where)
+    },
     datasource({ page, where, limit }) {
       let data = teamqueuepage({
         ...where,