| | |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
| | | <el-form-item label="菜单图标"> |
| | | <IconSelector placeholder="请输入菜单图标" v-model="ruleForm.meta.icon" type="all" /> |
| | | <input placeholder="请输入菜单图标" v-model="ruleForm.meta.icon" type="all" /> |
| | | <!-- <IconSelector placeholder="请输入菜单图标" v-model="ruleForm.meta.icon" type="all" />--> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
| | |
| | | </el-col> |
| | | <el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12" class="mb20"> |
| | | <el-form-item label="项目名"> |
| | | <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" |
| | | <el-select |
| | | @change="handelMenu" |
| | | v-model="ruleForm.projectId" |
| | | controls-position="right" |
| | | placeholder="请输入排序" |
| | | class="w100" |
| | | > |
| | | </el-option> |
| | | <el-option v-for="item in projectList" :key="item.key" :value="item.id" :label="item.name"> </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | import { useRoutesList } from '/@/stores/routesList'; |
| | | import { i18n } from '/@/i18n/index'; |
| | | import IconSelector from '/@/components/iconSelector/index.vue'; |
| | | import { useMenuApi } from '/@/api/menu/index' |
| | | import { useMenuApi } from '/@/api/menu/index'; |
| | | import { ElMessageBox, ElMessage } from 'element-plus'; |
| | | import {Session} from "/@/utils/storage"; |
| | | import { Session } from '/@/utils/storage'; |
| | | // import { setBackEndControlRefreshRoutes } from "/@/router/backEnd"; |
| | | |
| | | export default defineComponent({ |
| | |
| | | isAffix: false, // 是否固定 |
| | | isLink: '', // 外链/内嵌时链接地址(http:xxx.com),开启外链条件,`1、isLink: 链接地址不为空` |
| | | isIframe: false, // 是否内嵌,开启条件,`1、isIframe:true 2、isLink:链接地址不为空` |
| | | roles: [], // 权限标识,取角色管理 |
| | | roles: [] // 权限标识,取角色管理 |
| | | }, |
| | | btnPower: '', // 菜单类型为按钮时,权限标识 |
| | | btnPower: '' // 菜单类型为按钮时,权限标识 |
| | | }, |
| | | menuData: [], // 上级菜单数据 |
| | | projectList:[ |
| | | ], |
| | | projectList: [] |
| | | }); |
| | | // 获取 vuex 中的路由 |
| | | const getMenuList = (routes: any) => { |
| | | const arr: any = []; |
| | | routes.map((val: any) => { |
| | | val['title'] = val.meta.title; |
| | | val['id'] = val.id |
| | | val['id'] = val.id; |
| | | arr.push(val); |
| | | if (val.children) getMenuList(val.children); |
| | | }); |
| | |
| | | }; |
| | | // 打开弹窗 |
| | | const openDialog = (type:string,value:any,projectList: any,projectId:string) => { |
| | | state.projectList = JSON.parse(JSON.stringify(projectList)) |
| | | state.projectList = JSON.parse(JSON.stringify(projectList)); |
| | | state.isShowDialog = true; |
| | | if(type === '新增'){ |
| | | state.buttonName = '新增' |
| | | state.title = '新增菜单' |
| | | state.buttonName = '新增'; |
| | | state.title = '新增菜单'; |
| | | state.ruleForm = { |
| | | projectId:projectId, |
| | | parentId:0, |
| | |
| | | isAffix: false, |
| | | isLink: '', |
| | | isIframe: false, |
| | | roles: [], |
| | | roles: [] |
| | | }, |
| | | btnPower: '', |
| | | } |
| | | btnPower: '' |
| | | }; |
| | | }else{ |
| | | state.buttonName = '修改' |
| | | state.title = '修改菜单' |
| | | state.ruleForm = JSON.parse(JSON.stringify(value)) |
| | | state.ruleForm.projectId = projectId.toString() |
| | | state.buttonName = '修改'; |
| | | state.title = '修改菜单'; |
| | | state.ruleForm = JSON.parse(JSON.stringify(value)); |
| | | state.ruleForm.projectId = projectId.toString(); |
| | | } |
| | | handelMenu() |
| | | handelMenu(); |
| | | }; |
| | | // 关闭弹窗 |
| | | const 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] |
| | | 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) |
| | | let res = await useMenuApi().addMenu(state.ruleForm); |
| | | if(res.data.code === '200'){ |
| | | ElMessage({ |
| | | type:'success', |
| | | message:'菜单新增成功', |
| | | duration:2000 |
| | | }) |
| | | }); |
| | | closeDialog(); |
| | | context.emit('getMenuList') |
| | | context.emit('getMenuList'); |
| | | }else{ |
| | | ElMessage({ |
| | | type:'warning', |
| | | message:res.data.msg |
| | | }) |
| | | }); |
| | | } |
| | | }else{ |
| | | let res = await useMenuApi().modMenu(state.ruleForm) |
| | | let res = await useMenuApi().modMenu(state.ruleForm); |
| | | if(res.data.code === '200'){ |
| | | ElMessage({ |
| | | type:'success', |
| | | message:'菜单修改成功', |
| | | duration:2000 |
| | | }) |
| | | }); |
| | | closeDialog(); |
| | | context.emit('getMenuList') |
| | | context.emit('getMenuList'); |
| | | }else{ |
| | | ElMessage({ |
| | | type:'warning', |
| | | message:res.data.msg |
| | | }) |
| | | }); |
| | | } |
| | | } |
| | | |
| | |
| | | }; |
| | | |
| | | const handelMenu = async () => { |
| | | let res = await useMenuApi().getMenuAdmin(state.ruleForm.projectId) |
| | | state.menuData = JSON.parse(JSON.stringify(getMenuList(res.data.data))) |
| | | } |
| | | let res = await useMenuApi().getMenuAdmin(state.ruleForm.projectId); |
| | | state.menuData = JSON.parse(JSON.stringify(getMenuList(res.data.data))); |
| | | }; |
| | | // 页面加载时 |
| | | onMounted(async () => { |
| | | // let res = await useMenuApi().getMenuAdmin(Session.get('projectId')) |
| | |
| | | onCancel, |
| | | onSubmit, |
| | | handelMenu, |
| | | ...toRefs(state), |
| | | ...toRefs(state) |
| | | }; |
| | | }, |
| | | } |
| | | }); |
| | | </script> |