From 043265de0da38fcc727bcc60d7c88da4c3c3513f Mon Sep 17 00:00:00 2001 From: Your Name <123456> Date: 星期二, 28 六月 2022 18:50:14 +0800 Subject: [PATCH] '菜单' --- src/views/system/menu/component/menuDialog.vue | 348 ++++++++++++++++++++++++++++----------------------------- 1 files changed, 172 insertions(+), 176 deletions(-) diff --git a/src/views/system/menu/component/menuDialog.vue b/src/views/system/menu/component/menuDialog.vue index 61dfd84..500a948 100644 --- a/src/views/system/menu/component/menuDialog.vue +++ b/src/views/system/menu/component/menuDialog.vue @@ -6,12 +6,12 @@ <el-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24" class="mb20"> <el-form-item label="上级菜单"> <el-cascader - :options="menuData" - :props="{ checkStrictly: true, value: 'id', label: 'title' }" - placeholder="请选择上级菜单" - clearable - class="w100" - v-model="ruleForm.menuSuperior" + :options="menuData" + :props="{ checkStrictly: true, value: 'id', label: 'title' }" + placeholder="请选择上级菜单" + clearable + class="w100" + v-model="ruleForm.menuSuperior" > </el-cascader> </el-form-item> @@ -56,12 +56,12 @@ </el-col> <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> <el-form-item label="项目名"> - <el-select v-model="ruleForm.projectId" controls-position="right" placeholder="请输入排序" class="w100"> + <el-select @change="handelMenu" v-model="ruleForm.projectId" controls-position="right" placeholder="请输入排序" class="w100"> <el-option - v-for="item in projectList" - :key="item.key" - :value="item.id" - :label="item.name" + v-for="item in projectList" + :key="item.key" + :value="item.id" + :label="item.name" > </el-option> </el-select> @@ -93,179 +93,175 @@ </template> <script lang="ts"> -import { reactive, toRefs, onMounted, defineComponent } from 'vue'; -import { storeToRefs } from 'pinia'; -import { useRoutesList } from '/@/stores/routesList'; -import { i18n } from '/@/i18n/index'; -import IconSelector from '/@/components/iconSelector/index.vue'; -import { useMenuApi } from '/@/api/menu/index' -import { ElMessageBox, ElMessage } from 'element-plus'; -import {Session} from "/@/utils/storage"; -// import { setBackEndControlRefreshRoutes } from "/@/router/backEnd"; + import { reactive, toRefs, onMounted, defineComponent } from 'vue'; + import { storeToRefs } from 'pinia'; + import { useRoutesList } from '/@/stores/routesList'; + import { i18n } from '/@/i18n/index'; + import IconSelector from '/@/components/iconSelector/index.vue'; + import { useMenuApi } from '/@/api/menu/index' + import { ElMessageBox, ElMessage } from 'element-plus'; + import {Session} from "/@/utils/storage"; + // import { setBackEndControlRefreshRoutes } from "/@/router/backEnd"; -export default defineComponent({ - name: 'systemAddMenu', - components: { IconSelector }, - setup(props,context) { - const stores = useRoutesList(); - const { routesList } = storeToRefs(stores); - const state = reactive({ - isShowDialog: false, - title:'', - buttonName:'', - // 参数请参考 `/src/router/route.ts` 中的 `dynamicRoutes` 路由菜单格式 - ruleForm: { - projectId:'', - parentId:0, - menuSuperior: [], // 上级菜单 - menuType: 'menu', // 菜单类型 - name: '', // 路由名称 - component: '', // 组件路径 - priority: 0, // 菜单排序 - path: '', // 路由路径 - redirect: '', // 路由重定向,有子集 children 时 - meta: { - title: '', // 菜单名称 - icon: '', // 菜单图标 - isHide: false, // 是否隐藏 - isKeepAlive: true, // 是否缓存 - isAffix: false, // 是否固定 - isLink: '', // 外链/内嵌时链接地址(http:xxx.com),开启外链条件,`1、isLink: 链接地址不为空` - isIframe: false, // 是否内嵌,开启条件,`1、isIframe:true 2、isLink:链接地址不为空` - roles: '', // 权限标识,取角色管理 - }, - btnPower: '', // 菜单类型为按钮时,权限标识 - }, - menuData: [], // 上级菜单数据 - projectList:[ - {id:'1',name:'基础数据权限管理系统',key:0}, - {id:'2',name:'系统1',key:1}, - {id:'3',name:'系统2',key:2}, - {id:'4',name:'系统3',key:3}, - {id:'5',name:'系统4',key:4}, - {id:'6',name:'应急管理系统',key:5}, - {id:'7',name:'目标责任管理系统',key:6}, - {id:'8',name:'事故管理系统',key:7}, - {id:'9',name:'设备综合管控系统',key:8}, - ], - }); - // 获取 vuex 中的路由 - const getMenuList = (routes: any) => { - const arr: any = []; - routes.map((val: any) => { - val['title'] = val.meta.title; - val['id'] = val.id - arr.push(val); - if (val.children) getMenuList(val.children); - }); - return arr; - }; - // 打开弹窗 - const openDialog = (type:string,value:any) => { - state.isShowDialog = true; - if(type === '新增菜单'){ - state.buttonName = '新增' - state.title = '新增菜单' - state.ruleForm = { + export default defineComponent({ + name: 'systemAddMenu', + components: { IconSelector }, + setup(props,context) { + const stores = useRoutesList(); + const { routesList } = storeToRefs(stores); + const state = reactive({ + isShowDialog: false, + title:'', + buttonName:'', + // 参数请参考 `/src/router/route.ts` 中的 `dynamicRoutes` 路由菜单格式 + ruleForm: { projectId:'', parentId:0, - menuSuperior: [], - menuType: 'menu', - name: '', - component: '', - priority: 0, - path: '', - redirect: '', + menuSuperior: [], // 上级菜单 + menuType: 'menu', // 菜单类型 + name: '', // 路由名称 + component: '', // 组件路径 + priority: 0, // 菜单排序 + path: '', // 路由路径 + redirect: '', // 路由重定向,有子集 children 时 meta: { - title: '', - icon: '', - isHide: false, - isKeepAlive: true, - isAffix: false, - isLink: '', - isIframe: false, - roles: '', + title: '', // 菜单名称 + icon: '', // 菜单图标 + isHide: false, // 是否隐藏 + isKeepAlive: true, // 是否缓存 + isAffix: false, // 是否固定 + isLink: '', // 外链/内嵌时链接地址(http:xxx.com),开启外链条件,`1、isLink: 链接地址不为空` + isIframe: false, // 是否内嵌,开启条件,`1、isIframe:true 2、isLink:链接地址不为空` + roles: '', // 权限标识,取角色管理 }, - btnPower: '', - } - }else{ - state.buttonName = '修改' - state.title = '修改菜单' - state.ruleForm = JSON.parse(JSON.stringify(value)) - } - }; - // 关闭弹窗 - const closeDialog = () => { - state.isShowDialog = false; - }; - // 是否内嵌下拉改变 - // const onSelectIframeChange = () => { - // if (state.ruleForm.meta.isIframe) state.ruleForm.isLink = true; - // else state.ruleForm.isLink = false; - // }; - // 取消 - const onCancel = () => { - closeDialog(); - }; - // 新增 - const onSubmit = async () => { - if(state.ruleForm.menuSuperior && state.ruleForm.menuSuperior !== []){ - let menuId = JSON.parse(JSON.stringify(state.ruleForm.menuSuperior)) - state.ruleForm.parentId = menuId[menuId.length - 1] - } - if(state.title === '新增菜单'){ - let res = await useMenuApi().addMenu(state.ruleForm) - if(res.data.code === '200'){ - ElMessage({ - type:'success', - message:'菜单新增成功', - duration:2000 - }) - closeDialog(); - context.emit('getMenuList') + btnPower: '', // 菜单类型为按钮时,权限标识 + }, + menuData: [], // 上级菜单数据 + projectList:[ + ], + }); + // 获取 vuex 中的路由 + const getMenuList = (routes: any) => { + const arr: any = []; + routes.map((val: any) => { + val['title'] = val.meta.title; + val['id'] = val.id + arr.push(val); + if (val.children) getMenuList(val.children); + }); + return arr; + }; + // 打开弹窗 + const openDialog = (type:string,value:any,projectList: any,projectId:string) => { + state.projectList = JSON.parse(JSON.stringify(projectList)) + state.isShowDialog = true; + if(type === '新增'){ + state.buttonName = '新增' + state.title = '新增菜单' + state.ruleForm = { + projectId:projectId, + parentId:0, + menuSuperior: [], + menuType: 'menu', + name: '', + component: '', + priority: 0, + path: '', + redirect: '', + meta: { + title: '', + icon: '', + isHide: false, + isKeepAlive: true, + isAffix: false, + isLink: '', + isIframe: false, + roles: '', + }, + btnPower: '', + } }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) + state.buttonName = '修改' + state.title = '修改菜单' + state.ruleForm = JSON.parse(JSON.stringify(value)) + state.ruleForm.projectId = projectId.toString() } - }else{ - let res = await useMenuApi().modMenu(state.ruleForm) - if(res.data.code === '200'){ - ElMessage({ - type:'success', - message:'菜单修改成功', - duration:2000 - }) - closeDialog(); - context.emit('getMenuList') + handelMenu() + }; + // 关闭弹窗 + const closeDialog = () => { + state.isShowDialog = false; + }; + // 是否内嵌下拉改变 + // const onSelectIframeChange = () => { + // if (state.ruleForm.meta.isIframe) state.ruleForm.isLink = true; + // else state.ruleForm.isLink = false; + // }; + // 取消 + const onCancel = () => { + closeDialog(); + }; + // 新增 + const onSubmit = async () => { + if(state.ruleForm.menuSuperior && state.ruleForm.menuSuperior !== []){ + let menuId = JSON.parse(JSON.stringify(state.ruleForm.menuSuperior)) + state.ruleForm.parentId = menuId[menuId.length - 1] + } + if(state.title === '新增菜单'){ + let res = await useMenuApi().addMenu(state.ruleForm) + if(res.data.code === '200'){ + ElMessage({ + type:'success', + message:'菜单新增成功', + duration:2000 + }) + closeDialog(); + context.emit('getMenuList') + }else{ + ElMessage({ + type:'warning', + message:res.data.msg + }) + } }else{ - ElMessage({ - type:'warning', - message:res.data.msg - }) + let res = await useMenuApi().modMenu(state.ruleForm) + if(res.data.code === '200'){ + ElMessage({ + type:'success', + message:'菜单修改成功', + duration:2000 + }) + closeDialog(); + context.emit('getMenuList') + }else{ + ElMessage({ + type:'warning', + message:res.data.msg + }) + } } + + // closeDialog(); // 关闭弹窗 + // setBackEndControlRefreshRoutes() // 刷新菜单,未进行后端接口测试 + }; + + const handelMenu = async () => { + let res = await useMenuApi().getMenuAdmin(state.ruleForm.projectId) + state.menuData = JSON.parse(JSON.stringify(getMenuList(res.data.data))) } - - // closeDialog(); // 关闭弹窗 - // setBackEndControlRefreshRoutes() // 刷新菜单,未进行后端接口测试 - }; - - const show = () => { - console.log(JSON.parse(JSON.stringify(state.ruleForm.menuSuperior))); - } - // 页面加载时 - onMounted(async () => { - let res = await useMenuApi().getMenuAdmin(Session.get('projectId')) - state.menuData = JSON.parse(JSON.stringify(getMenuList(res.data.data))) - }); - return { - openDialog, - closeDialog, - onCancel, - onSubmit, - ...toRefs(state), - }; - }, -}); + // 页面加载时 + onMounted(async () => { + // let res = await useMenuApi().getMenuAdmin(Session.get('projectId')) + // state.menuData = JSON.parse(JSON.stringify(getMenuList(res.data.data))) + }); + return { + openDialog, + closeDialog, + onCancel, + onSubmit, + handelMenu, + ...toRefs(state), + }; + }, + }); </script> -- Gitblit v1.9.2