From 6416b40cf242340eaa163c498bd49d8103e73610 Mon Sep 17 00:00:00 2001
From: linwe <872216996@qq.com>
Date: Mon, 29 Jul 2024 17:01:52 +0800
Subject: [PATCH] 代码优化

---
 src/views/system/menu.vue |  849 ++++++++++++++++++++++++++++----------------------------
 1 files changed, 425 insertions(+), 424 deletions(-)

diff --git a/src/views/system/menu.vue b/src/views/system/menu.vue
index 9aa0472..590c750 100644
--- a/src/views/system/menu.vue
+++ b/src/views/system/menu.vue
@@ -1,455 +1,456 @@
 <template>
-    <basic-container>
-        <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="form"
-            :permission="permissionList" :before-open="beforeOpen" :before-close="beforeClose" @row-del="rowDel"
-            @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
-            @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
-            @refresh-change="refreshChange" @on-load="onLoad" @tree-load="treeLoad">
-            <template slot="menuLeft">
-                <el-button type="danger" size="small" icon="el-icon-delete" v-if="permission.menu_delete" plain
-                    @click="handleDelete">删 除
-                </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') && scope.row.category === 1">新增子项
-                </el-button>
-            </template>
-            <template slot-scope="{row}" slot="source">
-                <div style="text-align:center">
-                    <i :class="row.source" />
-                </div>
-            </template>
-        </avue-crud>
-    </basic-container>
+  <basic-container>
+    <avue-crud :option="option" :table-loading="loading" :data="data" ref="crud" v-model="form"
+      :permission="permissionList" :before-open="beforeOpen" :before-close="beforeClose" @row-del="rowDel"
+      @row-update="rowUpdate" @row-save="rowSave" @search-change="searchChange" @search-reset="searchReset"
+      @selection-change="selectionChange" @current-change="currentChange" @size-change="sizeChange"
+      @refresh-change="refreshChange" @on-load="onLoad" @tree-load="treeLoad">
+      <template slot="menuLeft">
+        <el-button type="danger" size="small" icon="el-icon-delete" v-if="permission.menu_delete" plain
+          @click="handleDelete">删 除
+        </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') && scope.row.category === 1">新增子项
+        </el-button>
+      </template>
+      <template slot-scope="{row}" slot="source">
+        <div style="text-align:center">
+          <i :class="row.source" />
+        </div>
+      </template>
+    </avue-crud>
+  </basic-container>
 </template>
 
 <script>
-import {
+  import {
     getLazyList,
     remove,
     update,
     add,
     getMenu
-} from "@/api/system/menu"
-import {
+  } from "@/api/system/menu"
+  import {
     mapGetters
-} from "vuex"
-import iconList from "@/config/iconList"
-import func from "@/util/func"
-import {
+  } from "vuex"
+  import iconList from "@/config/iconList"
+  import func from "@/util/func"
+  import {
     getMenuTree
-} from "@/api/system/menu"
+  } from "@/api/system/menu"
 
 
-import {
+  import {
     getTreeList
-} from "@/api/label/label"
+  } from "@/api/label/label"
 
-export default {
-    data () {
-        return {
-            form: {},
-            query: {},
-            loading: true,
-            selectionList: [],
-            parentId: 0,
-            page: {
-                pageSize: 10,
-                currentPage: 1,
-                total: 0,
+  export default {
+    data() {
+      return {
+        form: {},
+        query: {},
+        loading: true,
+        selectionList: [],
+        parentId: 0,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0,
+        },
+        option: {
+          lazy: true,
+          tip: false,
+          simplePage: true,
+          searchShow: true,
+          searchMenuSpan: 6,
+          dialogWidth: "60%",
+          tree: true,
+          border: true,
+          index: true,
+          selection: true,
+          viewBtn: true,
+          menuWidth: 300,
+          dialogClickModal: false,
+          column: [{
+              width: 276,
+              label: "菜单名称",
+              prop: "name",
+              search: true,
+              searchLabelWidth: 76,
+              rules: [{
+                required: true,
+                message: "请输入菜单名称",
+                trigger: "blur"
+              }]
             },
-            option: {
-                lazy: true,
-                tip: false,
-                simplePage: true,
-                searchShow: true,
-                searchMenuSpan: 6,
-                dialogWidth: "60%",
-                tree: true,
-                border: true,
-                index: true,
-                selection: true,
-                viewBtn: true,
-                menuWidth: 300,
-                dialogClickModal: false,
-                column: [{
-                    label: "菜单名称",
-                    prop: "name",
-                    search: true,
-                    searchLabelWidth: 76,
-                    rules: [{
-                        required: true,
-                        message: "请输入菜单名称",
-                        trigger: "blur"
-                    }]
-                },
-                {
-                    label: "路由地址",
-                    prop: "path",
-                    rules: [{
-                        required: true,
-                        message: "请输入路由地址",
-                        trigger: "blur"
-                    }]
-                },
-                {
-                    label: "上级菜单",
-                    prop: "parentId",
-                    type: "tree",
-                    dicData: [],
-                    // hide: true,
-                    addDisabled: false,
-                    props: {
-                        label: "title",
-                        value: 'id'
-                    },
-                    rules: [{
-                        required: false,
-                        message: "请选择上级菜单",
-                        trigger: "click"
-                    }]
-                },
-                {
-                    label: "菜单图标",
-                    prop: "source",
-                    type: "icon",
-                    slot: true,
-                    iconList: iconList,
-                    rules: [{
-                        required: true,
-                        message: "请输入菜单图标",
-                        trigger: "click"
-                    }]
-                },
-                {
-                    label: "菜单编号",
-                    prop: "code",
-                    search: true,
-                    rules: [{
-                        required: true,
-                        message: "请输入菜单编号",
-                        trigger: "blur"
-                    }]
-                },
-                {
-                    label: "菜单类型",
-                    prop: "category",
-                    type: "radio",
-                    dicData: [{
-                        label: "菜单",
-                        value: 1
-                    },
-                    {
-                        label: "按钮",
-                        value: 2
-                    }
-                    ],
-                    hide: true,
-                    rules: [{
-                        required: true,
-                        message: "请选择菜单类型",
-                        trigger: "blur"
-                    }]
-                },
-                {
-                    label: "菜单别名",
-                    prop: "alias",
-                    search: true,
-                    rules: [{
-                        required: true,
-                        message: "请输入菜单别名",
-                        trigger: "blur"
-                    }]
-                }, {
-                    label: "菜单",
-                    prop: "menuType",
-                    type: "radio",
-                    rules: [{
-                        required: true,
-                        message: "请选择菜单",
-                        trigger: "blur"
-                    }],
-                    dicData: [{
-                        label: "PC端",
-                        value: 0
-                    },
-                    {
-                        label: "移动端",
-                        value: 1
-                    }
-                    ],
-                },
-                {
-                    label: "新窗口",
-                    prop: "isOpen",
-                    type: "radio",
-                    disabled: false,
-                    display: false,
-                    dicData: [{
-                        label: "否",
-                        value: 1
-                    },
-                    {
-                        label: "是",
-                        value: 2
-                    }
-                    ],
-                    value: 1,
-                    rules: [{
-                        required: true,
-                        message: "请选择新窗口打开",
-                        trigger: "blur"
-                    }]
-                },
-                {
-                    label: "菜单排序",
-                    prop: "sort",
-                    type: "number",
-                    rules: [{
-                        required: true,
-                        message: "请输入菜单排序",
-                        trigger: "blur"
-                    }]
-                },
-                {
-                    label: "背景色",
-                    prop: "background",
-                    span: 12,
-                    minRows: 2,
-                    hide: true
-                },
-                {
-                    label: "图片地址",
-                    prop: "pictureImg",
-                    span: 12,
-                    minRows: 2,
-                    hide: true
-                },
-                {
-                    label: "标签权限",
-                    prop: "labelList",
-                    span: 12,
-                    minRows: 2,
-                    type: "cascader",
-                    dicData: [],
-                    props: {
-                        label: "name",
-                        value: 'id'
-                    },
-                    multiple: true,
-                    // hide: true
-                },
-                {
-                    label: "菜单备注",
-                    prop: "remark",
-                    type: "textarea",
-                    span: 24,
-                    minRows: 2,
-                    hide: true
-                },
-                ]
+            {
+              label: "路由地址",
+              prop: "path",
+              rules: [{
+                required: true,
+                message: "请输入路由地址",
+                trigger: "blur"
+              }]
             },
-            data: [],
-            labelList: [],
-        }
+            {
+              label: "上级菜单",
+              prop: "parentId",
+              type: "tree",
+              dicData: [],
+              // hide: true,
+              addDisabled: false,
+              props: {
+                label: "title",
+                value: 'id'
+              },
+              rules: [{
+                required: false,
+                message: "请选择上级菜单",
+                trigger: "click"
+              }]
+            },
+            {
+              label: "菜单图标",
+              prop: "source",
+              type: "icon",
+              slot: true,
+              iconList: iconList,
+              rules: [{
+                required: true,
+                message: "请输入菜单图标",
+                trigger: "click"
+              }]
+            },
+            {
+              label: "菜单编号",
+              prop: "code",
+              search: true,
+              rules: [{
+                required: true,
+                message: "请输入菜单编号",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "菜单类型",
+              prop: "category",
+              type: "radio",
+              dicData: [{
+                  label: "菜单",
+                  value: 1
+                },
+                {
+                  label: "按钮",
+                  value: 2
+                }
+              ],
+              hide: true,
+              rules: [{
+                required: true,
+                message: "请选择菜单类型",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "菜单别名",
+              prop: "alias",
+              search: true,
+              rules: [{
+                required: true,
+                message: "请输入菜单别名",
+                trigger: "blur"
+              }]
+            }, {
+              label: "菜单",
+              prop: "menuType",
+              type: "radio",
+              rules: [{
+                required: true,
+                message: "请选择菜单",
+                trigger: "blur"
+              }],
+              dicData: [{
+                  label: "PC端",
+                  value: 0
+                },
+                {
+                  label: "移动端",
+                  value: 1
+                }
+              ],
+            },
+            {
+              label: "新窗口",
+              prop: "isOpen",
+              type: "radio",
+              disabled: false,
+              display: false,
+              dicData: [{
+                  label: "否",
+                  value: 1
+                },
+                {
+                  label: "是",
+                  value: 2
+                }
+              ],
+              value: 1,
+              rules: [{
+                required: true,
+                message: "请选择新窗口打开",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "菜单排序",
+              prop: "sort",
+              type: "number",
+              rules: [{
+                required: true,
+                message: "请输入菜单排序",
+                trigger: "blur"
+              }]
+            },
+            {
+              label: "背景色",
+              prop: "background",
+              span: 12,
+              minRows: 2,
+              hide: true
+            },
+            {
+              label: "图片地址",
+              prop: "pictureImg",
+              span: 12,
+              minRows: 2,
+              hide: true
+            },
+            {
+              label: "标签权限",
+              prop: "labelList",
+              span: 12,
+              minRows: 2,
+              type: "cascader",
+              dicData: [],
+              props: {
+                label: "name",
+                value: 'id'
+              },
+              multiple: true,
+              // hide: true
+            },
+            {
+              label: "菜单备注",
+              prop: "remark",
+              type: "textarea",
+              span: 24,
+              minRows: 2,
+              hide: true
+            },
+          ]
+        },
+        data: [],
+        labelList: [],
+      }
     },
     watch: {
-        'form.category' () {
-            const category = func.toInt(this.form.category)
-            this.$refs.crud.option.column.filter(item => {
-                if (item.prop === "path") {
-                    item.rules[0].required = category === 1
-                }
-                if (item.prop === 'isOpen') {
-                    item.disabled = category === 2
-                }
-            })
-        },
+      'form.category'() {
+        const category = func.toInt(this.form.category)
+        this.$refs.crud.option.column.filter(item => {
+          if (item.prop === "path") {
+            item.rules[0].required = category === 1
+          }
+          if (item.prop === 'isOpen') {
+            item.disabled = category === 2
+          }
+        })
+      },
     },
     computed: {
-        ...mapGetters(["userInfo", "permission"]),
-        permissionList () {
-            return {
-                addBtn: this.vaildData(this.permission.menu_add, false),
-                viewBtn: this.vaildData(this.permission.menu_view, false),
-                delBtn: this.vaildData(this.permission.menu_delete, false),
-                editBtn: this.vaildData(this.permission.menu_edit, false)
-            }
-        },
-        ids () {
-            let ids = []
-            this.selectionList.forEach(ele => {
-                ids.push(ele.id)
-            })
-            return ids.join(",")
+      ...mapGetters(["userInfo", "permission"]),
+      permissionList() {
+        return {
+          addBtn: this.vaildData(this.permission.menu_add, false),
+          viewBtn: this.vaildData(this.permission.menu_view, false),
+          delBtn: this.vaildData(this.permission.menu_delete, false),
+          editBtn: this.vaildData(this.permission.menu_edit, false)
         }
+      },
+      ids() {
+        let ids = []
+        this.selectionList.forEach(ele => {
+          ids.push(ele.id)
+        })
+        return ids.join(",")
+      }
     },
     methods: {
-        initData () {
-            getMenuTree().then(res => {
-                const column = this.findObject(this.option.column, "parentId")
-                column.dicData = res.data.data
-            })
+      initData() {
+        getMenuTree().then(res => {
+          const column = this.findObject(this.option.column, "parentId")
+          column.dicData = res.data.data
+        })
 
-            // getTreeList().then(res => {
-            // console.log(JSON.stringify(res.data.data))
-            const column = this.findObject(this.option.column, "labelList")
-            column.dicData = this.labelList
-            // });
-        },
-        handleAdd (row) {
-            this.parentId = row.id
-            const column = this.findObject(this.option.column, "parentId")
-            column.value = row.id
-            column.addDisabled = true
-            this.$refs.crud.rowAdd()
-        },
-        rowSave (row, done, loading) {
-            add(row).then((res) => {
-                // 获取新增数据的相关字段
-                const data = res.data.data
-                row.id = data.id
-                this.$message({
-                    type: "success",
-                    message: "操作成功!"
-                })
-                // 数据回调进行刷新
-                done(row)
-            }, error => {
-                window.console.log(error)
-                loading()
+        // getTreeList().then(res => {
+        // console.log(JSON.stringify(res.data.data))
+        const column = this.findObject(this.option.column, "labelList")
+        column.dicData = this.labelList
+        // });
+      },
+      handleAdd(row) {
+        this.parentId = row.id
+        const column = this.findObject(this.option.column, "parentId")
+        column.value = row.id
+        column.addDisabled = true
+        this.$refs.crud.rowAdd()
+      },
+      rowSave(row, done, loading) {
+        add(row).then((res) => {
+          // 获取新增数据的相关字段
+          const data = res.data.data
+          row.id = data.id
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          })
+          // 数据回调进行刷新
+          done(row)
+        }, error => {
+          window.console.log(error)
+          loading()
+        })
+      },
+      rowUpdate(row, index, done, loading) {
+        update(row).then(() => {
+          this.$message({
+            type: "success",
+            message: "操作成功!"
+          })
+          // 数据回调进行刷新
+          done(row)
+        }, error => {
+          window.console.log(error)
+          loading()
+        })
+      },
+      rowDel(row, index, done) {
+        this.$confirm("确定将选择数据删除?", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          })
+          .then(() => {
+            return remove(row.id)
+          })
+          .then(() => {
+            this.$message({
+              type: "success",
+              message: "操作成功!"
             })
-        },
-        rowUpdate (row, index, done, loading) {
-            update(row).then(() => {
-                this.$message({
-                    type: "success",
-                    message: "操作成功!"
-                })
-                // 数据回调进行刷新
-                done(row)
-            }, error => {
-                window.console.log(error)
-                loading()
-            })
-        },
-        rowDel (row, index, done) {
-            this.$confirm("确定将选择数据删除?", {
-                confirmButtonText: "确定",
-                cancelButtonText: "取消",
-                type: "warning"
-            })
-                .then(() => {
-                    return remove(row.id)
-                })
-                .then(() => {
-                    this.$message({
-                        type: "success",
-                        message: "操作成功!"
-                    })
-                    // 数据回调进行刷新
-                    done(row)
-                })
-        },
-        handleDelete () {
-            if (this.selectionList.length === 0) {
-                this.$message.warning("请选择至少一条数据")
-                return
-            }
-            this.$confirm("确定将选择数据删除?", {
-                confirmButtonText: "确定",
-                cancelButtonText: "取消",
-                type: "warning"
-            })
-                .then(() => {
-                    return remove(this.ids)
-                })
-                .then(() => {
-                    // 刷新表格数据并重载
-                    this.data = []
-                    this.parentId = 0
-                    this.$refs.crud.refreshTable()
-                    this.$refs.crud.toggleSelection()
-                    // 表格数据重载
-                    this.onLoad(this.page)
-                    this.$message({
-                        type: "success",
-                        message: "操作成功!"
-                    })
-                })
-        },
-        searchReset () {
-            this.query = {}
-            this.parentId = 0
-            this.onLoad(this.page)
-        },
-        searchChange (params, done) {
-            this.query = params
-            this.parentId = ''
-            this.page.currentPage = 1
-            this.onLoad(this.page, params)
-            done()
-        },
-        selectionChange (list) {
-            this.selectionList = list
-        },
-        selectionClear () {
-            this.selectionList = []
-            this.$refs.crud.toggleSelection()
-        },
-        beforeOpen (done, type) {
-            if (["add", "edit"].includes(type)) {
-                this.initData()
-            }
-            if (["edit", "view"].includes(type)) {
-                getMenu(this.form.id).then(res => {
-                    this.form = res.data.data
-                })
-            }
-            done()
-        },
-        beforeClose (done) {
-            this.parentId = ""
-            const column = this.findObject(this.option.column, "parentId")
-            column.value = ""
-            column.addDisabled = false
-            done()
-        },
-        currentChange (currentPage) {
-            this.page.currentPage = currentPage
-        },
-        sizeChange (pageSize) {
-            this.page.pageSize = pageSize
-        },
-        refreshChange () {
-            this.onLoad(this.page, this.query)
-        },
-        onLoad (page, params = {}) {
-            this.loading = true
-            getLazyList(this.parentId, Object.assign(params, this.query)).then(res => {
-                this.data = res.data.data
-                this.loading = false
-                this.selectionClear()
-            })
-            getTreeList().then(res => {
-                this.labelList = res.data.data
-            })
-        },
-        treeLoad (tree, treeNode, resolve) {
-            const parentId = tree.id
-            getLazyList(parentId).then(res => {
-                resolve(res.data.data)
-            })
-            // getTreeList().then(res => {
-            // console.log(JSON.stringify(res.data.data))
-            const column = this.findObject(this.option.column, "labelList")
-            column.dicData = this.labelList
-            // });
+            // 数据回调进行刷新
+            done(row)
+          })
+      },
+      handleDelete() {
+        if (this.selectionList.length === 0) {
+          this.$message.warning("请选择至少一条数据")
+          return
         }
+        this.$confirm("确定将选择数据删除?", {
+            confirmButtonText: "确定",
+            cancelButtonText: "取消",
+            type: "warning"
+          })
+          .then(() => {
+            return remove(this.ids)
+          })
+          .then(() => {
+            // 刷新表格数据并重载
+            this.data = []
+            this.parentId = 0
+            this.$refs.crud.refreshTable()
+            this.$refs.crud.toggleSelection()
+            // 表格数据重载
+            this.onLoad(this.page)
+            this.$message({
+              type: "success",
+              message: "操作成功!"
+            })
+          })
+      },
+      searchReset() {
+        this.query = {}
+        this.parentId = 0
+        this.onLoad(this.page)
+      },
+      searchChange(params, done) {
+        this.query = params
+        this.parentId = ''
+        this.page.currentPage = 1
+        this.onLoad(this.page, params)
+        done()
+      },
+      selectionChange(list) {
+        this.selectionList = list
+      },
+      selectionClear() {
+        this.selectionList = []
+        this.$refs.crud.toggleSelection()
+      },
+      beforeOpen(done, type) {
+        if (["add", "edit"].includes(type)) {
+          this.initData()
+        }
+        if (["edit", "view"].includes(type)) {
+          getMenu(this.form.id).then(res => {
+            this.form = res.data.data
+          })
+        }
+        done()
+      },
+      beforeClose(done) {
+        this.parentId = ""
+        const column = this.findObject(this.option.column, "parentId")
+        column.value = ""
+        column.addDisabled = false
+        done()
+      },
+      currentChange(currentPage) {
+        this.page.currentPage = currentPage
+      },
+      sizeChange(pageSize) {
+        this.page.pageSize = pageSize
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query)
+      },
+      onLoad(page, params = {}) {
+        this.loading = true
+        getLazyList(this.parentId, Object.assign(params, this.query)).then(res => {
+          this.data = res.data.data
+          this.loading = false
+          this.selectionClear()
+        })
+        getTreeList().then(res => {
+          this.labelList = res.data.data
+        })
+      },
+      treeLoad(tree, treeNode, resolve) {
+        const parentId = tree.id
+        getLazyList(parentId).then(res => {
+          resolve(res.data.data)
+        })
+        // getTreeList().then(res => {
+        // console.log(JSON.stringify(res.data.data))
+        const column = this.findObject(this.option.column, "labelList")
+        column.dicData = this.labelList
+        // });
+      }
     }
-}
+  }
 </script>
 
 <style></style>
\ No newline at end of file

--
Gitblit v1.9.3