Pārlūkot izejas kodu

修复数据模板归档数据隔离问题

cfort 2 gadi atpakaļ
vecāks
revīzija
375ff77f34
1 mainītis faili ar 49 papildinājumiem un 3 dzēšanām
  1. 49 3
      src/views/platform/data/dataTemplate/template-list.vue

+ 49 - 3
src/views/platform/data/dataTemplate/template-list.vue

@@ -177,10 +177,27 @@ export default {
             return btn
         },
         dealFilter (dataList) {
-            if (!dataList.length || !this.filterParams.length) {
-                return []
+            // 1.去除原过滤条件中的编制部门在其中
+            // 2.追加数据模板归档中的过滤条件
+            // 3.增加地点过滤(若为第一层级用户,则过滤出所有一二级地点数据;若为第二级用户,则过滤当前地点数据)
+            const levelFilter = this.getLevelFilter()
+            if (!dataList.length) {
+                // 无过滤条件时默认地点过滤
+                return [
+                    {
+                        label: '默认条件',
+                        key: this.$utils.guid(),
+                        type: 'condition',
+                        rights: [{ type: 'all' }],
+                        filter: {
+                            condition: 'AND',
+                            rules: [levelFilter]
+                        }
+                    }
+                ]
             }
             const newDataList = dataList.map(data => {
+                const rules = data.filter.rules.filter(i => i.id !== 'find_in_set' && !i.value.includes('cscript.findPositionId()'))
                 const newRules = [
                     ...this.filterParams.map(item => ({
                         id: item.field,
@@ -188,11 +205,40 @@ export default {
                         input: 'text',
                         ...item
                     })),
-                    ...data.filter.rules
+                    ...rules,
+                    levelFilter
                 ]
                 return { ...data, filter: { ...data.filter, rules: newRules }}
             })
             return newDataList
+        },
+        // 获取当前用户地点信息 equal-等于 in-在…之内
+        getLevelFilter () {
+            const { second = '' } = this.$store.getters.level
+            const { deptList = [] } = this.$store.getters
+            if (second) {
+                return {
+                    field: 'di_dian_',
+                    id: 'di_dian_',
+                    input: 'text',
+                    label: '地点',
+                    operator: 'equal',
+                    source: 'fixed',
+                    type: 'string',
+                    value: second
+                }
+            }
+
+            return {
+                field: 'di_dian_',
+                id: 'di_dian_',
+                input: 'text',
+                label: '地点',
+                operator: 'in',
+                source: 'fixed',
+                type: 'string',
+                value: deptList.filter(i => i.depth * 1 >= 2).map(i => i.id)
+            }
         }
     }
 }