Ver Fonte

:zap: 优化字典模块,增加新增下级功能

smallchill há 6 anos atrás
pai
commit
3c7954b8ec

+ 1 - 2
src/const/system/dict.js

@@ -99,7 +99,7 @@ export const optionChild = {
   index: true,
   selection: true,
   viewBtn: true,
-  menuWidth: 150,
+  menuWidth: 220,
   dialogWidth: 880,
   dialogClickModal: false,
   column: [
@@ -107,7 +107,6 @@ export const optionChild = {
       label: "字典编号",
       prop: "code",
       addDisabled: true,
-      editDisabled: true,
       search: true,
       span: 24,
       rules: [

+ 1 - 2
src/const/system/dictbiz.js

@@ -99,7 +99,7 @@ export const optionChild = {
   index: true,
   selection: true,
   viewBtn: true,
-  menuWidth: 150,
+  menuWidth: 220,
   dialogWidth: 880,
   dialogClickModal: false,
   column: [
@@ -107,7 +107,6 @@ export const optionChild = {
       label: "字典编号",
       prop: "code",
       addDisabled: true,
-      editDisabled: true,
       search: true,
       span: 24,
       rules: [

+ 40 - 5
src/views/system/dict.vue

@@ -63,6 +63,7 @@
               v-model="formChild"
               :permission="permissionList"
               :before-open="beforeOpenChild"
+              :before-close="beforeCloseChild"
               @row-del="rowDelChild"
               @row-update="rowUpdateChild"
               @row-save="rowSaveChild"
@@ -85,6 +86,16 @@
                 >删 除
                 </el-button>
               </template>
+              <template slot-scope="scope" slot="menu">
+                <el-button
+                  type="text"
+                  icon="el-icon-circle-plus-outline"
+                  size="small"
+                  @click.stop="handleAdd(scope.row,scope.index)"
+                  v-if="userInfo.role_name.includes('admin')"
+                >新增子项
+                </el-button>
+              </template>
               <template slot-scope="{row}" slot="isSealed">
                 <el-tag>{{row.isSealed===0?'否':'是'}}</el-tag>
               </template>
@@ -139,7 +150,7 @@
       };
     },
     computed: {
-      ...mapGetters(["permission"]),
+      ...mapGetters(["userInfo", "permission"]),
       permissionList() {
         return {
           addBtn: this.vaildData(this.permission.dict_add, false),
@@ -157,12 +168,24 @@
       }
     },
     mounted() {
-      getDictTree().then(res => {
-        const column = this.findObject(this.optionChild.column, "parentId");
-        column.dicData = res.data.data;
-      });
+      this.initData();
     },
     methods: {
+      initData() {
+        getDictTree().then(res => {
+          const column = this.findObject(this.optionChild.column, "parentId");
+          column.dicData = res.data.data;
+        });
+      },
+      handleAdd(row) {
+        this.$refs.crudChild.value.parentId = row.id;
+        this.$refs.crudChild.option.column.filter(item => {
+          if (item.prop === "parentId") {
+            item.value = row.id;
+          }
+        });
+        this.$refs.crudChild.rowAdd();
+      },
       rowSave(row, done, loading) {
         const form = {
           ...row,
@@ -365,6 +388,9 @@
           });
       },
       beforeOpenChild(done, type) {
+        if (["add", "edit"].includes(type)) {
+          this.initData();
+        }
         if (["edit", "view"].includes(type)) {
           getDict(this.formChild.id).then(res => {
             this.formChild = res.data.data;
@@ -372,6 +398,15 @@
         }
         done();
       },
+      beforeCloseChild(done) {
+        this.$refs.crudChild.value.parentId = this.parentId;
+        this.$refs.crudChild.option.column.filter(item => {
+          if (item.prop === "parentId") {
+            item.value = this.parentId;
+          }
+        });
+        done();
+      },
       currentChangeChild(currentPage) {
         this.pageChild.currentPage = currentPage;
       },

+ 40 - 5
src/views/system/dictbiz.vue

@@ -63,6 +63,7 @@
               v-model="formChild"
               :permission="permissionList"
               :before-open="beforeOpenChild"
+              :before-close="beforeCloseChild"
               @row-del="rowDelChild"
               @row-update="rowUpdateChild"
               @row-save="rowSaveChild"
@@ -85,6 +86,16 @@
                 >删 除
                 </el-button>
               </template>
+              <template slot-scope="scope" slot="menu">
+                <el-button
+                  type="text"
+                  icon="el-icon-circle-plus-outline"
+                  size="small"
+                  @click.stop="handleAdd(scope.row,scope.index)"
+                  v-if="userInfo.role_name.includes('admin')"
+                >新增子项
+                </el-button>
+              </template>
               <template slot-scope="{row}" slot="isSealed">
                 <el-tag>{{row.isSealed===0?'否':'是'}}</el-tag>
               </template>
@@ -139,7 +150,7 @@
       };
     },
     computed: {
-      ...mapGetters(["permission"]),
+      ...mapGetters(["userInfo", "permission"]),
       permissionList() {
         return {
           addBtn: this.vaildData(this.permission.dictbiz_add, false),
@@ -157,12 +168,24 @@
       }
     },
     mounted() {
-      getDictTree().then(res => {
-        const column = this.findObject(this.optionChild.column, "parentId");
-        column.dicData = res.data.data;
-      });
+      this.initData();
     },
     methods: {
+      initData() {
+        getDictTree().then(res => {
+          const column = this.findObject(this.optionChild.column, "parentId");
+          column.dicData = res.data.data;
+        });
+      },
+      handleAdd(row) {
+        this.$refs.crudChild.value.parentId = row.id;
+        this.$refs.crudChild.option.column.filter(item => {
+          if (item.prop === "parentId") {
+            item.value = row.id;
+          }
+        });
+        this.$refs.crudChild.rowAdd();
+      },
       rowSave(row, done, loading) {
         const form = {
           ...row,
@@ -365,6 +388,9 @@
           });
       },
       beforeOpenChild(done, type) {
+        if (["add", "edit"].includes(type)) {
+          this.initData();
+        }
         if (["edit", "view"].includes(type)) {
           getDict(this.formChild.id).then(res => {
             this.formChild = res.data.data;
@@ -372,6 +398,15 @@
         }
         done();
       },
+      beforeCloseChild(done) {
+        this.$refs.crudChild.value.parentId = this.parentId;
+        this.$refs.crudChild.option.column.filter(item => {
+          if (item.prop === "parentId") {
+            item.value = this.parentId;
+          }
+        });
+        done();
+      },
       currentChangeChild(currentPage) {
         this.pageChild.currentPage = currentPage;
       },