diff --git a/leave-school-vue/src/mock/department.js b/leave-school-vue/src/mock/department.js
index d37068e..5eecdd2 100644
--- a/leave-school-vue/src/mock/department.js
+++ b/leave-school-vue/src/mock/department.js
@@ -28,7 +28,7 @@
 
     const pageList = mockList.filter((item, index) => index < pageSize * pageIndex && index >= pageSize * (pageIndex - 1))
     return {
-      classCodeList: dic.getDicList({ type: 'classCode' }).items,
+      classCodeList: dic.getDicList({ dicType: 'classCode' }).items,
       items: pageList,
       recordCount: mockList.length,
       code: 200
diff --git a/leave-school-vue/src/mock/dictionary.js b/leave-school-vue/src/mock/dictionary.js
index c8cf08b..d8f5b09 100644
--- a/leave-school-vue/src/mock/dictionary.js
+++ b/leave-school-vue/src/mock/dictionary.js
@@ -172,15 +172,15 @@
     }
   },
   getDicList: config => {
-    let dictype = ''
-    if (config.type) {
-      dictype = config.type
+    let type = ''
+    if (config.dicType) {
+      type = config.dicType
     } else {
-      const { type } = param2Obj(config.url)
-      dictype = type
+      const { dicType } = param2Obj(config.url)
+      type = dicType
     }
     const mockList = dicList.filter(item => {
-      if (dictype && item.type !== dictype) return false
+      if (type && item.type !== type) return false
       return true
     })
 
diff --git a/leave-school-vue/src/views/news/newspublish/index.vue b/leave-school-vue/src/views/news/newspublish/index.vue
index 019db1b..a753e5c 100644
--- a/leave-school-vue/src/views/news/newspublish/index.vue
+++ b/leave-school-vue/src/views/news/newspublish/index.vue
@@ -214,12 +214,12 @@
   },
   methods: {
     getXswzList() {
-      getDicList({ type: 'xswz' }).then(response => {
+      getDicList({ dicType: 'xswz' }).then(response => {
         this.xswzList = response.items
       })
     },
     getJszlxList() {
-      getDicList({ type: 'jszlx' }).then(response => {
+      getDicList({ dicType: 'jszlx' }).then(response => {
         this.jszlxList = response.items
       })
     },
diff --git a/leave-school-vue/src/views/news/newview/index.vue b/leave-school-vue/src/views/news/newview/index.vue
index 5945d70..25a9e5f 100644
--- a/leave-school-vue/src/views/news/newview/index.vue
+++ b/leave-school-vue/src/views/news/newview/index.vue
@@ -114,7 +114,7 @@
       this.dialogFormVisible = true
     },
     getGglxList() {
-      getDicList({ type: 'gglx' }).then(response => {
+      getDicList({ dicType: 'gglx' }).then(response => {
         this.gglxList = response.items
       })
     },
diff --git a/leave-school-vue/src/views/procedures/node/index.vue b/leave-school-vue/src/views/procedures/node/index.vue
index ba3cc1c..6a0a266 100644
--- a/leave-school-vue/src/views/procedures/node/index.vue
+++ b/leave-school-vue/src/views/procedures/node/index.vue
@@ -295,17 +295,17 @@
       })
     },
     getAuditTypeList() {
-      getDicList({ type: 'auditType' }).then(response => {
+      getDicList({ dicType: 'auditType' }).then(response => {
         this.auditTypeList = response.items
       })
     },
     getScopeList() {
-      getDicList({ type: 'scope' }).then(response => {
+      getDicList({ dicType: 'scope' }).then(response => {
         this.scopeList = response.items
       })
     },
     getStatusList() {
-      getDicList({ type: 'defaultAuditStatus' }).then(response => {
+      getDicList({ dicType: 'defaultAuditStatus' }).then(response => {
         this.statusList = response.items
       })
     },
diff --git a/leave-school-vue/src/views/statistical/handling/index.vue b/leave-school-vue/src/views/statistical/handling/index.vue
index 5b59c3d..3e5fbfa 100644
--- a/leave-school-vue/src/views/statistical/handling/index.vue
+++ b/leave-school-vue/src/views/statistical/handling/index.vue
@@ -249,7 +249,7 @@
       })
     },
     initXslbList() {
-      getDicList({ type: 'xslb' }).then(response => {
+      getDicList({ dicType: 'xslb' }).then(response => {
         this.xslbList = response.items
       })
     },
diff --git a/leave-school-vue/src/views/statistical/nodereport/index.vue b/leave-school-vue/src/views/statistical/nodereport/index.vue
index 40cf6b8..1ef12f4 100644
--- a/leave-school-vue/src/views/statistical/nodereport/index.vue
+++ b/leave-school-vue/src/views/statistical/nodereport/index.vue
@@ -253,12 +253,12 @@
       })
     },
     initXslbList() {
-      getDicList({ type: 'xslb' }).then(response => {
+      getDicList({ dicType: 'xslb' }).then(response => {
         this.xslbList = response.items
       })
     },
     initsexList() {
-      getDicList({ type: 'sex' }).then(response => {
+      getDicList({ dicType: 'sex' }).then(response => {
         this.sexList = response.items
       })
     },
diff --git a/leave-school-vue/src/views/systemmanagement/class/index.vue b/leave-school-vue/src/views/systemmanagement/class/index.vue
index 1decb9c..3713c68 100644
--- a/leave-school-vue/src/views/systemmanagement/class/index.vue
+++ b/leave-school-vue/src/views/systemmanagement/class/index.vue
@@ -221,7 +221,7 @@
       })
     },
     initNjList() {
-      getDicList({ type: 'nj' }).then(response => {
+      getDicList({ dicType: 'nj' }).then(response => {
         this.njList = response.items
       })
     },
diff --git a/leave-school-vue/src/views/systemmanagement/datadictionary/index.vue b/leave-school-vue/src/views/systemmanagement/datadictionary/index.vue
index 75d7930..06525b1 100644
--- a/leave-school-vue/src/views/systemmanagement/datadictionary/index.vue
+++ b/leave-school-vue/src/views/systemmanagement/datadictionary/index.vue
@@ -176,7 +176,7 @@
     },
     handleView(type) {
       this.temp.type = type
-      getDicList({ type: type }).then(response => {
+      getDicList({ dicType: type }).then(response => {
         if (!response.items) {
           MessageBox.alert('数据不存在，请确认是否已删除。', '消息', {
             confirmButtonText: '确定'
diff --git a/leave-school-vue/src/views/systemmanagement/major/index.vue b/leave-school-vue/src/views/systemmanagement/major/index.vue
index 730adf9..ae1bf08 100644
--- a/leave-school-vue/src/views/systemmanagement/major/index.vue
+++ b/leave-school-vue/src/views/systemmanagement/major/index.vue
@@ -148,7 +148,7 @@
   },
   methods: {
     getSszygbList() {
-      getDicList({ type: 'gjzybz' }).then(response => {
+      getDicList({ dicType: 'gjzybz' }).then(response => {
         this.sszygbList = response.items
       })
     },
diff --git a/leave-school-vue/src/views/workteam/departmentleader/index.vue b/leave-school-vue/src/views/workteam/departmentleader/index.vue
index d0d14f0..7b69889 100644
--- a/leave-school-vue/src/views/workteam/departmentleader/index.vue
+++ b/leave-school-vue/src/views/workteam/departmentleader/index.vue
@@ -192,12 +192,12 @@
       })
     },
     getZzmmList() {
-      getDicList({ type: 'zzmm' }).then(response => {
+      getDicList({ dicType: 'zzmm' }).then(response => {
         this.zzmmList = response.items
       })
     },
     getsexList() {
-      getDicList({ type: 'sex' }).then(response => {
+      getDicList({ dicType: 'sex' }).then(response => {
         this.sexList = response.items
       })
     },
diff --git a/leave-school-vue/src/views/workteam/instructor/index.vue b/leave-school-vue/src/views/workteam/instructor/index.vue
index 326d6b1..29838ad 100644
--- a/leave-school-vue/src/views/workteam/instructor/index.vue
+++ b/leave-school-vue/src/views/workteam/instructor/index.vue
@@ -186,7 +186,7 @@
       })
     },
     getZzmmList() {
-      getDicList({ type: 'zzmm' }).then(response => {
+      getDicList({ dicType: 'zzmm' }).then(response => {
         this.zzmmList = response.items
       })
     },
