Commit 54d50bca authored by 何小勇's avatar 何小勇
parents e7765b84 30d7974f
......@@ -37,23 +37,23 @@ steps: # 定义流水线执行步骤,这些步骤将顺序执行
image: registry.cn-qingdao.aliyuncs.com/wod/devops-node:16.16.0-slim
# 将宿主机中文件夹挂载到容器中,宿主机文件夹中的文件会被容器访问并修改,起到使用缓存的作用,避免每次运行都要重现下载依赖,提高运行速度
commands:
# - yarn
- yarn
- export NODE_ENV=production
- yarn build
- name: s3-cache-build
image: registry.cn-qingdao.aliyuncs.com/wod/devops-s3-cache:1.0
network_mode: host
settings:
rebuild: true
hash: package.json
mount:
- node_modules
endpoint: http://cache.wodcloud.com
access_key:
from_secret: ACCESS_KEY_MINIO
secret_key:
from_secret: SECRET_KEY_MINIO
# - name: s3-cache-build
# image: registry.cn-qingdao.aliyuncs.com/wod/devops-s3-cache:1.0
# network_mode: host
# settings:
# rebuild: true
# hash: package.json
# mount:
# - node_modules
# endpoint: http://cache.wodcloud.com
# access_key:
# from_secret: ACCESS_KEY_MINIO
# secret_key:
# from_secret: SECRET_KEY_MINIO
- name: docker
image: registry.cn-qingdao.aliyuncs.com/wod/devops-docker:1.0
......
......@@ -83,7 +83,7 @@ watch(
)
const codeChange = (val,val1,val2)=>{
emit("update:modelValue", val1.renderer.content.innerText);
emit("update:modelValue", states.content);
}
onMounted(() => {
......
<template>
<ul class="nav-list" v-if="list&&list.length">
<li v-for="(item, index) in list" v-show="item.show" :key="'nav_' + index">
<template v-if="item.children && item.children.length">
<li v-for="(item, index) in list" v-show="item.menuType!==2" :key="'nav_' + index">
<template v-if="item.children && item.children.length&&item.menuType==0">
<div
class="nav-item nav-more text-clip"
:class="{ current: isCurrent([item.path]) }"
......@@ -9,8 +9,10 @@
>
<span :style="{ paddingLeft: `${deep*2}em` }">
<!-- <img v-if="item.icon" :src="item.icon" alt=""> -->
<bg-icon v-if="item.icon" :icon="item.icon"></bg-icon>
<bg-icon v-if="item.icon" style="color:#7c8292;" :icon="'#'+item.icon"></bg-icon>
{{ item.menuName }}
<bg-icon v-show="showMore[index] !== false" style="font-size:8px;position: absolute;right: 10px;top: 20px;" icon="#bg-ic-arrow-up"></bg-icon>
<bg-icon v-show="showMore[index] == false" style="font-size:8px;position: absolute;right: 10px;top: 20px;" icon="#bg-ic-arrow-down"></bg-icon>
</span>
&ensp;
</div>
......@@ -26,7 +28,7 @@
<template v-else>
<div
class="nav-item text-clip"
:class="{current:isCurrent(item.linkPath&&item.linkPath.length?[...item.linkPath,item.path]:[item.path])}"
:class="{current:isCurrent(item.children&&item.children.length?[...getChildrenPath(item.children),item.path]:[item.path])}"
@click="$router.push(item.path)"
>
<span :style="{ paddingLeft: `${deep*2}em` }">{{ item.menuName }}</span>
......@@ -67,6 +69,15 @@ export default {
this.showMore[index] = !flag
},
getChildrenPath(arr,temp=[]){
arr.forEach(e => {
temp.push(e.path)
if(e.children&&e.children.length){
this.getChildrenPath(e.children,temp)
}
});
return temp
},
isCurrent(path) {
return (
(this.highlightParentRule && this.highlightParentRule(path)) || false
......
<template>
<div class="bg-permission-option">
<div
class="bg-permission-option--self"
:class="{
'full-option': !(option.children && option.children.length > 0),
}"
>
<el-checkbox
v-model="option.isSelected"
:indeterminate="option.isIndeterminate"
@change="changeSelf"
>
<span :title="option.name">
{{ option.name }}
</span>
</el-checkbox>
</div>
<div
class="bg-permission-option--list"
:class="{ 'flex-wrap': deep === depth - 1 }"
v-if="option.children && option.children.length > 0"
>
<BgPermissionOption
v-for="(item, index) in option.children"
:ref="`child${index}`"
:option="item"
:key="`opt_${index}`"
:deep="deep + 1"
:depth="depth"
@change="changeChild"
/>
</div>
</div>
</template>
<script>
export default {
name: "BgPermissionOption",
props: {
option: {
type: Object,
require: true,
}, // 数据项
depth: {
type: Number,
default: 0,
},
deep: {
type: Number,
default: 1,
},
},
methods: {
changeSelf() {
let isSelected = this.option.isSelected;
let children = this.option.children || [];
// 将自己的选中状态赋值给子级
if (children.length > 0) {
children.forEach((v, i) => {
v.isSelected = isSelected;
this.$nextTick(() => {
this.$refs[`child${i}`][0].changeSelf();
});
});
}
// 关于自己选中都是全选和不选,所以不存在半选状态
this.option.isIndeterminate = false;
// 修改完自己和自己子级,告诉父级更新
this.$emit("change");
}, // 本级选中状态发生变化
changeChild() {
let isSelected = true;
let isIndeterminate = false;
let children = this.option.children;
children.forEach((v, i) => {
isSelected = isSelected && v.isSelected; // 所有子级都为选中时,自己才为选中状态
isIndeterminate = isIndeterminate || v.isIndeterminate || v.isSelected; // 只要有下级为半选状态或选中状态,自己就为半选状态
});
// 自己为全选状态时,半选不生效
isIndeterminate = isSelected ? false : isIndeterminate;
// 赋值
this.option.isSelected = isSelected;
this.option.isIndeterminate = isIndeterminate;
// 修改完自己和自己子级,告诉父级更新
this.$emit("change");
}, // 下级选中状态发生变化
},
};
</script>
<template>
<div class="bg-permission">
<div class="permission-header" v-if="selectAll">
<el-checkbox
v-model="isSelected"
:indeterminate="isIndeterminate"
@change="changeSelf"
>
全选
</el-checkbox>
</div>
<div class="permission-null" v-if="permissionData.length === 0">
<p>暂无数据</p>
</div>
<div class="bg-permission-option--list" v-else>
<BgPermissionOption
v-for="(item, index) in permissionData"
:ref="`child${index}`"
:option="item"
:key="`opt_${index}`"
:props="props"
:depth="depth"
@change="changeChild"
/>
</div>
</div>
</template>
<script>
import { val } from "dom7";
import BgPermissionOption from "./bg-permission-option.vue";
export default {
name: "BgPermission",
components: {
BgPermissionOption,
},
model: {
prop: "values",
event: "change",
},
props: {
values: {
type: Array,
default: () => [],
}, // 选中的值
options: {
type: Array,
default: () => [],
}, // 菜单项
props: {
type: Object,
default: () => ({
name: "name",
value: "value",
children: "children",
}),
}, // 配置项(节点的一些字段)
selectAll: {
type: Boolean,
default: true,
}, // 是否在顶部显示全选按钮
},
data() {
return {
initFlag: true, // 是否需要初始化
permissionData: [], // 数据项
isSelected: false, // 是否全选
isIndeterminate: false, // 是否半选
};
},
computed: {
depth() {
return this.getDepth({ children: this.permissionData });
}, // 数据层级深度
},
watch: {
values: {
handler() {
if (this.initFlag) {
this.initPermissionData();
}
this.initFlag = true;
},
deep: true,
},
options: {
handler() {
this.initPermissionData();
},
deep: true,
},
},
methods: {
initPermissionData() {
let {
name: nameProp,
value: valueProp,
children: childrenProp,
} = this.props;
let permissionData = [];
let traverseOptions = (item) => {
let result = {};
let name = item[nameProp];
let value = item[valueProp];
let children = item[childrenProp];
let isSelected = this.values.indexOf(value) > -1;
let isIndeterminate = false;
result.name = name;
result.value = value;
if (children && children.length > 0) {
result.children = [];
isSelected = true; // 如果存在子节点,则根据子节点反推当前节点选中状态
isIndeterminate = false; // 当前节点半选状态
children.forEach((v) => {
result.children.push(traverseOptions(v));
});
result.children.forEach((v) => {
isSelected = isSelected && v.isSelected; // 所有子节点都为选中状态,则当前节点选中状态为真
isIndeterminate = isIndeterminate || v.isSelected || v.isIndeterminate; // 所有下级节点只要存在一个选中状态,则当前节点半选状态为真
});
}
result.isSelected = isSelected;
result.isIndeterminate = isSelected ? false : isIndeterminate; // 当前节点选中状态为真时,半选为假
return result;
};
this.options.forEach((v) => {
permissionData.push(traverseOptions(v));
});
this.permissionData = permissionData;
// 初始化完数据项后要更新一下全选半选状态
if (permissionData.length > 0) {
this.$nextTick(() => {
this.changeChild();
});
}
}, // 初始化数据项
getDepth(node) {
if (!node.children || node.children.length === 0) {
return 1;
}
let maxChildrenDepth = [...node.children].map((v) => this.getDepth(v));
return Math.max(...maxChildrenDepth) + 1;
}, // 获取JsonTree深度
changeSelf() {
let isSelected = this.isSelected;
let children = this.permissionData || [];
// 将自己的选中状态赋值给子级
if (children.length > 0) {
children.forEach((v, i) => {
v.isSelected = isSelected;
this.$nextTick(() => {
this.$refs[`child${i}`][0].changeSelf();
});
});
}
// 关于自己选中都是全选和不选,所以不存在半选状态
this.isIndeterminate = false;
// 出发双向绑定事件
this.changeValues();
}, // 改变全选状态
changeChild() {
let isSelected = true;
let isIndeterminate = false;
let children = this.permissionData;
children.forEach((v, i) => {
isSelected = isSelected && v.isSelected; // 所有子级都为选中时,自己才为选中状态
isIndeterminate = isIndeterminate || v.isIndeterminate || v.isSelected; // 只要有下级为半选状态,自己就为半选状态
});
// 自己为全选状态时,半选不生效
isIndeterminate = isSelected ? false : isIndeterminate;
// 赋值
this.isSelected = isSelected;
this.isIndeterminate = isIndeterminate;
// 出发双向绑定事件
this.changeValues();
}, // 下级选中状态发生变化
changeValues() {
let values = [];
let traverseOptions = ({
isSelected,
isIndeterminate,
value,
children,
}) => {
if (isSelected) {
values.push(value);
}
if (isIndeterminate) {
values.push(value);
}
if (children && children.length > 0) {
children.forEach((v) => {
traverseOptions(v);
});
}
};
this.permissionData.forEach((v) => {
traverseOptions(v);
});
this.initFlag = false; // 防止在watch中出发重新初始化
this.$emit("changeMenu", values);
}, // 双向绑定的处理
},
mounted() {
this.initPermissionData();
},
};
</script>
......@@ -33,7 +33,7 @@ export default {
},
colors: {
type: Array,
default: () => ["#c1c7d7", "#275a9d"],
default: () => ["#cbced7", "#2b4695"],
},
disabled: {
type: Boolean,
......
......@@ -25,8 +25,7 @@
<el-table-column
type="selection"
:selectable="selectable"
width="80"
align="center"
width="38"
v-if="select"
>
<!-- checkbox -->
......@@ -103,9 +102,9 @@ export default {
type: Boolean,
default: false,
},
selectable: {
type: Function,
},
// selectable: {
// type: Function,
// },
isIndex: {
type: Boolean,
default: false
......@@ -120,8 +119,16 @@ export default {
},
paddingLeft: {
type: [Number, String],
default: () => 33,
default: () => 12,
},
canEdit: {
type: Boolean,
default: false
}, // 多选框是否禁用
canEditFlag: {
typr : Boolean,
default: ""
}, // 决定多选框是否禁用的字段
},
/* filters: {
ellipsis(value, max) {
......@@ -190,6 +197,17 @@ export default {
return "stripe-row";
}
},
selectable(row,index) {
if (this.canEdit) {
if (row[this.canEditFlag] && row[this.canEditFlag] == 1) {
return false
}else {
return true
}
}else {
return true
}
}
},
};
</script>
......@@ -35,6 +35,7 @@
import BgFilterGroup from './bg-filter-group.vue'
import BgSwitchEle from './bg-switch-ele.vue'
import BgTableBtns from './bg-table-btns.vue'
import BgPermission from './bg-permission.vue'
const components = {
BgIcon,//字体图标
......@@ -69,8 +70,9 @@ const components = {
BgPagination,// 分页组件
BgInnerTabs,//内部tab
BgFilterGroup,//高级搜索
BgSwitchEle,
BgTableBtns,
BgSwitchEle,// 基于element-plus封装的switch
BgTableBtns,// 表格按钮组
BgPermission,// 菜单选择
};
const install = (Vue) => {
......
......@@ -2543,4 +2543,98 @@ a {
.el-switch__core {
width: 100%;
}
}
.bg-permission {
border-top: solid 1px #dadee7;
border-left: solid 1px #dadee7;
width: 100%;
.el-checkbox {
.el-checkbox__label {
overflow: hidden;
text-overflow: ellipsis;
word-break: break-all;
white-space: nowrap;
width: 8em;
display: inline-block;
vertical-align: middle;
line-height: 16px;
color: #202531;
}
}
>.permission-header {
padding: 0 16px;
height: 48px;
line-height: 48px;
background-color: #f2f3f7;
border-bottom: solid 1px #dadee7;
border-right: solid 1px #dadee7;
}
>.permission-null {
padding: 8px 16px;
border-bottom: solid 1px #dadee7;
border-right: solid 1px #dadee7;
>p {
font-size: 14px;
line-height: 16px;
color: #333;
text-align: center;
}
}
>.bg-permission-option--list {
width: 100%;
}
}
.bg-permission-option {
display: flex;
justify-content: flex-start;
align-items: stretch;
>.bg-permission-option--self {
flex-shrink: 0;
padding: 8px 16px;
border-right: solid 1px #dadee7;
border-bottom: solid 1px #dadee7;
display: flex;
justify-content: flex-start;
align-items: center;
}
>.bg-permission-option--list {
flex-shrink: 0;
}
}
.bg-permission-option--self {
width: 168px;
&.full-option {
width: 100%;
}
}
.bg-permission-option--list {
width: calc(100% - 168px);
&.flex-wrap {
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
align-items: stretch;
border-right: solid 1px #dadee7;
border-bottom: solid 1px #dadee7;
>.bg-permission-option {
>.bg-permission-option--self {
width: 168px;
border-right: none;
border-bottom: none;
}
}
}
}
\ No newline at end of file
......@@ -10,36 +10,34 @@
<!-- LOGO -->
<router-link to="/" class="bg-logo">
<img style="width:140px;height:22px;" src="../assets/imgs/img_logo.png"/>
<!-- <img style="width:40px;height:40px;" :src="logo"/> -->
<!-- <span>{{name}}</span> -->
</router-link>
<!-- 菜单 -->
<div class="main-menu" v-if="userInfo&& userInfo.system_id">
<!-- 前台菜单 -->
<div class="font-menu" v-if="fontMenu&&fontMenu.length">
<div class="nav-item" :style="path==item.path?{backgroundColor:'#2b4695'}:''" v-show="item.show" v-for="(item,index) in fontMenu" :key="'font'+index">
<div class="nav-item" :style="path==item.path?{backgroundColor:'#2b4695'}:''" v-show="item.menuType!==2" v-for="(item,index) in fontMenu" :key="'font'+index">
<span @click="menuAction(item.path,item)">
{{item.menuName}}
<bg-icon v-if="item.children&&item.children.length" icon="#bg-ic-arrow-down" style="font-size:8px;margin-left: 3px;"></bg-icon>
</span>
<div class="menu-virtual"></div>
<div class="menu-list" v-if="item.children&&item.children.length">
<div class="menu-item text_clip" @click="childMenuAction(it,item)" v-show="it.show" v-for="(it,idx) in item.children" :key="'font-children'+idx">{{it.menuName}}</div>
<div class="menu-item text_clip" @click="childMenuAction(it,item)" v-show="it.menuType!==2" v-for="(it,idx) in item.children" :key="'font-children'+idx">{{it.menuName}}</div>
</div>
</div>
</div>
<!-- 后管菜单 -->
<div class="manager-menu" v-if="managerMenu&&managerMenu.length">
<div class="nav-item" :style="path==item.path?{backgroundColor:'#2b4695'}:''" v-show="item.show" v-for="(item,index) in managerMenu" :key="'manager'+index">
<div class="nav-item" :style="path==item.path?{backgroundColor:'#2b4695'}:''" v-show="item.menuType!==2" v-for="(item,index) in managerMenu" :key="'manager'+index">
<span @click="menuAction(item.path,item)">
{{item.menuName}}
<bg-icon v-if="item.children&&item.children.length" icon="#bg-ic-arrow-down" style="font-size:8px;margin-left: 3px;"></bg-icon>
</span>
<div class="menu-virtual"></div>
<div class="menu-list" v-if="item.children&&item.children.length">
<div class="menu-item text_clip" @click="childMenuAction(it,item)" v-show="it.show" v-for="(it,idx) in item.children" :key="'manager-children'+idx">{{it.menuName}}</div>
<div class="menu-item text_clip" @click="childMenuAction(it,item)" v-show="it.menuType!==2" v-for="(it,idx) in item.children" :key="'manager-children'+idx">{{it.menuName}}</div>
</div>
</div>
</div>
......@@ -49,7 +47,7 @@
<!-- 信息 -->
<!-- 购物车 -->
<!-- 用户中心 -->
<div class="user-center nav-item" @click="menuAction(systemMenu[0]?systemMenu[0].path:'',systemMenu[0])">
<div class="user-center nav-item">
<span class="user-icon">
<img style="width:24px;height:24px;border-radius:50%;vertical-align:middle;" v-if="userInfo&&userInfo.logo" :src="userInfo&&userInfo.logo" />
<img style="width:24px;height:24px;border-radius:50%;vertical-align:middle;" v-else src="../assets/imgs/home_ic_user.png" />
......@@ -130,26 +128,26 @@ export default {
...mapState({
fontMenu (state) {
let temp = []
state.menu.forEach(e => {
if(e.menuType=='font'){
temp.push(e)
}
});
// state.menu.forEach(e => {
// if(e.dict_group_id=='2cb4f767-fad7-44f2-afa3-f055e15dd2b6'){//font
// temp.push(e)
// }
// });
return temp
},
managerMenu(state){
let temp = []
state.menu.forEach(e => {
if(e.menuType=='system'){
temp.push(e)
}
});
// state.menu.forEach(e => {
// if(e.dict_group_id=='64c156e0-bfff-4bfc-a63a-56effe130a25'){//system
// temp.push(e)
// }
// });
return temp
},
systemMenu(state){
let temp = []
state.menu.forEach(e => {
if(e.menuType=='manager'){
if(e.dict_group_id=='09938937-3db9-47de-b967-7777ea4ebb2d'){//manager
temp.push(e)
}
});
......@@ -194,15 +192,10 @@ export default {
// })
},
menuAction(n,parent) {
debugger
//不存在则不跳转
if(!n){
return
}
if (n == "logout") {
this.$axios.get(`/apaas/system/logout`).then(res=>{
this.$axios.post(`/apaas/system/v5/user/logout`).then(res=>{
if(res.data.code=='200'){
this.$router.push('/login')
window.location.href = `/apaas/manage/ui/#/login`;
this.$store.commit('setUserInfo',null)
clearCookie('bgToken')
this.$message.success('退出成功')
......@@ -213,7 +206,7 @@ export default {
})
} else if (n == "login") {
let path = this.$route.path;
window.location.href = `/login?redirect=${path}`;
window.location.href = `/apaas/manage/ui/#/login?redirect=${path}`;
} else {
//是否有子路由,有则寻找子路由的第一个进行跳转,无则直接进行跳转
//使用childMenuAction是模拟template中,子路径点击跳转使用childMenuAction,
......@@ -226,16 +219,15 @@ export default {
}
},
childMenuAction(v,parent) {
//最多只有2层目录,childMenuAction已经进入第一层,只需判断是否还有第二层即可
//有第二层则继续找第二层的第一个跳转
//无第二层则直接跳转
if(v.children&&v.children.length){
if(v.children[0].children){
this.pathToUrl(v.children[0].children[0].path,parent)
}else{
for (let index = 0; index < v.children.length; index++) {
const e = v.children[index];
if(e.show){
this.pathToUrl(e.path,parent)
break
}
for (let index = 0; index < v.children.length; index++) {
const e = v.children[index];
if(e.menuType!==2){
this.pathToUrl(e.path,parent)
break
}
}
}else{
......@@ -249,16 +241,16 @@ export default {
}else{
//判断是否是同区域内跳转
//非同区域跳转需要改前缀,如apaas/portal/ui跳转到apaas/manage/ui
if(this.$store.state.menuObj[this.path]&&parent.menuType==this.$store.state.menuObj[this.path].menuType){
if(this.$store.state.menuObj[this.path]&&(parent.dict_group_id==this.$store.state.menuObj[this.path].dict_group_id||(['2cb4f767-fad7-44f2-afa3-f055e15dd2b6','64c156e0-bfff-4bfc-a63a-56effe130a25'].includes(parent.dict_group_id)&&['2cb4f767-fad7-44f2-afa3-f055e15dd2b6','64c156e0-bfff-4bfc-a63a-56effe130a25'].includes(this.$store.state.menuObj[this.path].dict_group_id)))){
this.$router.push(path);
}else{
let temp = ''
if(this.$store.state.menuObj[path].menuType=='font'||this.$store.state.menuObj[path].menuType=='system'){
if(this.$store.state.menuObj[path].dict_group_id=='2cb4f767-fad7-44f2-afa3-f055e15dd2b6'||this.$store.state.menuObj[path].dict_group_id=='64c156e0-bfff-4bfc-a63a-56effe130a25'){
temp = '/apaas/portal/ui/#'
}else if(this.$store.state.menuObj[path].menuType=='manager'){
}else if(this.$store.state.menuObj[path].dict_group_id=='09938937-3db9-47de-b967-7777ea4ebb2d'){
temp = '/apaas/manage/ui/#'
}
window.location.href = temp+path
window.open(temp+path)
}
}
},
......@@ -652,15 +644,15 @@ export default {
padding-left: 32px;
position: inherit;
&::before{
content:'';
width: 1px;
height: 24px;
background-color: #5c6da4;
position: absolute;
left: 0;
top: 16px;
}
// &::before{
// content:'';
// width: 1px;
// height: 24px;
// background-color: #5c6da4;
// position: absolute;
// left: 0;
// top: 16px;
// }
}
// 用户中心
.user-center {
......
......@@ -56,24 +56,19 @@
</template>
</bg-filter-group>
<div class="table_container">
<bg-table ref="bgTable" :headers="headers" :rows="tableRows" :isIndex="true" :stripe="true">
<template v-slot:updated_time="{ row }">
{{ row.updated_time.split("+")[0].replace("T", " ").replace("Z", " ") }}
</template>
<template v-slot:state="{ row }">
<bg-switch-ele
v-model="row.state"
:rowId="row.id"
inline-prompt
activeText="是"
inactiveText="否"
@changeState="changeUseRow"
/>
</template>
<template v-slot:action="{ row }">
<bg-table-btns :operations="getOperations(row)" />
</template>
</bg-table>
<div class="table bg-scroll">
<bg-table ref="bgTable" :headers="headers" :rows="tableRows" :isIndex="true" :stripe="true">
<template v-slot:updated_time="{ row }">
{{ row.updated_time.split("+")[0].replace("T", " ").replace("Z", " ") }}
</template>
<template v-slot:state="{ row }">
<bg-switch @click="changeUseRow(row)" :labels="['否','是']" :values="[0,1]" v-model="row.state"></bg-switch>
</template>
<template v-slot:action="{ row }">
<bg-table-btns :operations="getOperations(row)" />
</template>
</bg-table>
</div>
<bg-pagination
:page="filter.page"
:size="filter.size"
......@@ -376,7 +371,6 @@ const changeUseRow = (row) => {
const changePage = (page) => {
state.filter.page = page
state.tableRows = []
getTableRows()
} // 改变页码
......@@ -447,7 +441,6 @@ const addConfirm = () => {
.then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.data)
state.tableRows = []
state.addDialog = false
changePage(1)
}else {
......@@ -464,7 +457,6 @@ const addConfirm = () => {
.then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.data)
state.tableRows = []
state.addDialog = false
changePage(1)
}else {
......@@ -490,7 +482,6 @@ const deleteData = () => {
if (res.data.code == 200) {
ElMessage.success(res.data.data)
state.dialogDelete = false
state.tableRows = []
changePage(1)
}else {
ElMessage.error(res.data.data)
......@@ -526,7 +517,6 @@ const moveRow = (row,type) => {
.then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.data)
state.tableRows = []
changePage(1)
}else {
ElMessage.error(res.data.data)
......@@ -621,26 +611,33 @@ const {
border-radius: 6px;
box-shadow: 0px 1px 4px 0px rgba(0,7,101,0.15);
height: 100%;
.filter-group {
.left-filter {
flex: 1;
display: flex;
justify-content: start;
flex-wrap: wrap;
.main_container {
height: 100%;
.filter-group {
.left-filter {
flex: 1;
display: flex;
justify-content: start;
flex-wrap: wrap;
}
.right-action {
width: 144px;
padding-bottom: 16px;
.el-button {
width: 64px;
}
}
}
.right-action {
width: 144px;
padding-bottom: 16px;
.el-button {
width: 64px;
.table_container {
height: calc(100% - 70px);
width: 100%;
padding: 0 16px;
.table {
max-height: calc(100% - 64px);
}
}
}
.table_container {
width: 100%;
padding: 0 16px;
}
}
}
......
......@@ -55,7 +55,7 @@
<div class="action" @click="fileAction(1,selectData,selectParentData)">
新建本级
</div>
<div class="action" @click="fileAction(2,selectData,selectParentData)">
<div class="action" :class="{'disable':selectData && selectData.menu_type == 2}" @click="fileAction(2,selectData,selectParentData,selectData.menu_type == 2)">
新建下级
</div>
<div class="action" @click="fileAction(3,selectData,selectParentData)">
......@@ -243,6 +243,9 @@ const fileAction = (val,data,parent,disabled=false) => {
handleNodeClick(newChild);
state.newMenuId++
}else if (val == 2) { // 新建下级菜单
if (disabled) {
return
}
state.addType = 2
let newChild = {
menu_name: "新菜单",
......@@ -348,44 +351,56 @@ const closeAction = () => {
} // 点击其他地方,菜单操作框关闭
const saveMenu = (el,type) => {
let params = {
menu_name: el.menuForm.menu_name,
menu_type: el.menuForm.menu_type,
dict_group_id: el.menuForm.dict_group_id,
state: el.menuForm.state,
menu_url: el.menuForm.menu_url,
menu_logo: el.menuForm.menu_logo,
}
if (state.selectData.id) { // 编辑
axios
.put(`/apaas/system/v5/menu/${state.selectData.id}`,params)
.then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.msg)
getMenuTree()
}else {
ElMessage.error(res.data.data)
el.menuRef.validate(valid => {
if (valid) {
let params = {
menu_name: el.menuForm.menu_name,
menu_type: el.menuForm.menu_type,
dict_group_id: el.menuForm.dict_group_id,
state: el.menuForm.state,
menu_url: el.menuForm.menu_url,
menu_logo: el.menuForm.menu_logo,
}
if (state.selectData.id) { // 编辑
axios
.put(`/apaas/system/v5/menu/${state.selectData.id}`,params)
.then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.msg)
getMenuTree()
}else {
ElMessage.error(res.data.data)
}
})
}else { // 新增
if (state.selectParentData) {
if (state.selectParentData.menu_type == 1 && el.menuForm.menu_type == 0) {
ElMessage.error("菜单之下不可以新建目录")
return
}
}
})
}else { // 新增
if(type == 1) { // 新增本级
params.p_menu_id = state.selectParentData ? state.selectParentData.menu_id : ""
}else { // 新增下级
params.p_menu_id = state.selectParentData.menu_id
}
axios
.post(`/apaas/system/v5/menu/add`,params)
.then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.data)
state.selectData = null
getMenuTree()
}else {
ElMessage.error(res.data.data)
if(type == 1) { // 新增本级
params.p_menu_id = state.selectParentData ? state.selectParentData.menu_id : ""
}else { // 新增下级
params.p_menu_id = state.selectParentData.menu_id
}
})
}
if (params.menu_type != 0) {
params.dict_group_id = ""
}
axios
.post(`/apaas/system/v5/menu/add`,params)
.then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.data)
state.selectData = null
getMenuTree()
}else {
ElMessage.error(res.data.data)
}
})
}
}
})
} // 保存按钮,新增或编辑菜单
onBeforeMount(()=>{
......
......@@ -12,7 +12,7 @@
<el-input v-model="menuForm.menu_name" show-word-limit maxlength="8" placeholder="请输入菜单名称" />
</el-form-item>
<el-form-item label="类型" prop="menu_type">
<el-radio-group v-model="menuForm.menu_type">
<el-radio-group v-model="menuForm.menu_type" :disabled="radioDisabled">
<el-radio :label="0">目录</el-radio>
<el-radio :label="1">菜单</el-radio>
<el-radio :label="2">子页面</el-radio>
......@@ -138,6 +138,7 @@ const state = reactive({
iconArr: [], // 所有的图标
showIconArr: [], // 展示的图标
timer: null,
radioDisabled: false,
})
const getGroupList = () => {
......@@ -178,6 +179,12 @@ const searchIcon = () => {
} // 图标筛选
const setForm = (data) => {
console.log(data)
if (data.id) { // 编辑状态
state.radioDisabled = true
}else {
state.radioDisabled = false
}
state.menuForm = Object.assign(state.menuForm, data);
} // 表单赋值
......@@ -209,6 +216,7 @@ const {
iconFlag,
showIconArr,
icon_search,
radioDisabled,
} = toRefs(state)
defineExpose({ setForm , menuForm, menuRef })
......
<!-- 角色管理新增 -->
<template>
<role-form></role-form>
</template>
<script setup>
import roleForm from './role_form.vue'
</script>
<!-- 角色管理 -->
<template>
<div class="detail_container">
<div class="bg-breadcrumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item> 系统管理 </el-breadcrumb-item>
<el-breadcrumb-item to="/system/role"> 角色管理 </el-breadcrumb-item>
<el-breadcrumb-item> 新建 </el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="main_container">
<div class="top_form">
<el-form
ref="form"
:rules="rules"
:model="formData"
class="role_form"
>
<el-form-item prop="role_name" label="角色名称">
<el-input v-model="formData.role_name" maxlength="50" show-word-limit />
</el-form-item>
<el-form-item prop="role_desc" label="描述">
<el-input
class="decs_box"
type="textarea"
v-model="formData.role_desc"
maxlength="300"
show-word-limit
:autosize="{ minRows: 5 }"
></el-input>
</el-form-item>
<el-form-item label="数据权限" prop="data_purview">
<el-radio-group v-model="formData.data_purview">
<el-radio :label="3">全平台所有</el-radio>
<el-radio :label="2">本组织所有</el-radio>
<el-radio :label="1">仅自己</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="菜单功能权限" prop="permission_arr">
<bg-permission
:values="formData.permission_arr"
:options="permissionData"
:props="defaultProps"
@changeMenu="changeMenu"
/>
</el-form-item>
<el-form-item label="是否启用" prop="state" class="state_item">
<el-switch
class="bg-switch-ele"
v-model="formData.state"
:active-value="1"
:inactive-value="0"
inline-prompt
active-text="是"
inactive-text="否"
/>
</el-form-item>
</el-form>
</div>
<div class="bottom_action">
<el-button>
取消
</el-button>
<el-button type="primary" @click="saveRole">
保存
</el-button>
</div>
</div>
</div>
</template>
<script setup>
import { reactive, toRefs, ref, onBeforeMount, nextTick } from 'vue'
import axios from '../../../../../request/http.js'
import { ElMessage } from 'element-plus'
import { useRouter, useRoute } from 'vue-router'
const router = useRouter()
const route = useRoute()
const form = ref(null)
const checkMenuLength = (rule, value, callback) => {
if (value.length === 0) {
callback(new Error('请选择所需菜单'))
} else {
callback()
}
}
const roleState = reactive({
form,
formData: {
role_name: "",
role_desc: "",
data_purview: 3,
state: 1,
permission_arr: [],
},
rules: {
role_name: [
{ required: true, message: "请输入角色名称", trigger: "blur" },
],
role_desc: [
{ required: true, message: "请输入描述", trigger: "blur" },
],
data_purview: [
{ required: true, message: "请选择数据权限", trigger: "change" },
],
state: [
{ required: true, message: "请选择是否启用", trigger: "change" },
],
permission_arr: [
{ required: true, type: "array", validator: checkMenuLength, trigger: "change" }
]
},
defaultProps: {
name: 'menu_name',
value: 'id',
children: 'Child',
},
permissionData: [],
})
const getMenuTree = () => {
axios
.get(`/apaas/system/v5/menu/tree`)
.then((res) => {
if (res.data.code == 200) {
roleState.permissionData = res.data.data || []
}else {
ElMessage.error(res.data.data)
}
})
}
const changeMenu = (val) => {
roleState.formData.permission_arr = val
}
const getRoleDetail = () => {
axios
.get(`/apaas/system/v5/role/detail/${route.query.id}`)
.then((res) => {
if (res.data.code == 200) {
console.log(res.data.data)
}else {
ElMessage.error(res.data.data)
}
})
}
const saveRole = () => {
roleState.form.validate(valid => {
if (valid) {
let params = {
role_name: roleState.formData.role_name,
role_desc: roleState.formData.role_desc,
state: roleState.formData.state,
data_purview: roleState.formData.data_purview,
menu_ids: [...roleState.formData.permission_arr]
}
if (!route.query.id) { // 新增
axios
.put(`/apaas/system/v5/role/create`,params)
.then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.data)
router.push('/system/role')
}else {
ElMessage.error(res.data.data)
}
})
}else { // 编辑
params.id = route.query.id
axios
.post(`/apaas/system/v5/role/update`,params)
.then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.data)
router.push('/system/role')
}else {
ElMessage.error(res.data.data)
}
})
}
}
})
}
onBeforeMount(() => {
getMenuTree()
if (route.query.id) {
getRoleDetail()
}
})
const {
formData,
rules,
defaultProps,
permissionData,
} = toRefs(roleState)
</script>
<style lang="scss" scoped>
.detail_container {
width: 100%;
padding: 0 24px;
height: 100%;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: stretch;
.main_container {
flex-grow: 1;
width: 100%;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: stretch;
background-color: #fff;
box-shadow: 0px 1px 4px 0px rgba(0,7,101,0.15);
border-radius: 6px;
margin: 0 0 16px;
position: relative;
height: calc(100% - 62px);
.top_form {
height: calc(100% - 68px);
padding: 30px 0 0 40px;
.role_form {
width: 1048px;
:deep().el-form-item {
display: block;
margin-bottom: 24px;
.el-form-item__label {
display: block;
}
.el-input__count {
bottom: -20px;
right: 4px;
color: #a9b1c7;
}
}
.state_item {
display: flex;
}
}
}
.bottom_action {
height: 68px;
border-top: 1px solid #e6e9ef;
padding: 16px;
text-align: right;
.el-button {
width: 92px;
}
}
}
}
</style>
\ No newline at end of file
<!-- 角色管理编辑 -->
<template>
<role-form></role-form>
</template>
<script setup>
import roleForm from '../add/role_form.vue'
</script>
\ No newline at end of file
<!-- 角色管理 -->
<template>
<div class="detail_container">
角色管理
<div class="bg-breadcrumb">
<el-breadcrumb separator="/">
<el-breadcrumb-item> 系统管理 </el-breadcrumb-item>
<el-breadcrumb-item> 角色管理 </el-breadcrumb-item>
</el-breadcrumb>
</div>
<div class="main_container">
<bg-filter-group
@search="changeSearch"
v-model="filter.search"
placeholder="请输入角色名称"
>
<template v-slot:left_action>
<div class="apaas_button">
<el-button class="register_btn" type="primary" @click="register">
<bg-icon style="font-size: 12px; color: #fff; margin-right: 8px" icon="#bg-ic-add"></bg-icon>
新建
</el-button>
<el-button class="register_btn" type="primary" @click="deleteRows">
批量删除
</el-button>
</div>
</template>
</bg-filter-group>
<div class="table_container">
<div class="table bg-scroll">
<bg-table
ref="bgTable"
:headers="headers"
:rows="tableRows"
:select="true"
:stripe="true"
canEdit
canEditFlag='state'
@select="selectRows"
>
<template v-slot:state="{ row }">
<bg-switch
@click="changeUseRow(row)"
:labels="['否','是']"
:values="[0,1]"
v-model="row.state"
:disabled="row.role_type == 1"
/>
</template>
<template v-slot:created_time="{ row }">
{{ row.created_time.split("+")[0].replace("T", " ").replace("Z", " ") }}
</template>
<template v-slot:action="{ row }">
<bg-table-btn class="btn" :click="()=>{edit_row(row)}" :disabled="row.state == 1 || row.role_type == 1">
编辑
</bg-table-btn>
<bg-table-btn class="btn" :click="()=>{edit_row(row)}" :disabled="row.role_type == 1">
分配用户
</bg-table-btn>
<bg-table-btn class="btn" :click="()=>{delete_row(row)}" :disabled="row.state == 1 || row.role_type == 1">
删除
</bg-table-btn>
</template>
</bg-table>
</div>
<bg-pagination
:page="filter.page"
:size="filter.limit"
:total="tableTotal"
@change-page="changePage"
@change-size="changeSize"
>
</bg-pagination>
</div>
</div>
<!-- 删除弹窗 -->
<el-dialog
custom-class="dialog_box"
title="提示"
v-model="delDialog"
width="400px"
:before-close="
() => {
delDialog = false;
}
"
>
<div>确定要选中的数据吗?</div>
<template v-slot:footer>
<div class="apaas_button">
<el-button type="default" @click="delDialog = false">取 消</el-button>
<el-button type="primary" @click="deleteData">确 定</el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script >
import { reactive, toRefs, ref, } from '@vue/reactivity'
import { getCurrentInstance } from 'vue'
import { computed, onBeforeMount } from '@vue/runtime-core'
import { useRouter } from 'vue-router';
export default {
components: {
<script setup>
import { reactive, toRefs, ref, onBeforeMount, nextTick } from 'vue'
import axios from '../../../../request/http.js'
import { ElMessage } from 'element-plus'
import { useRouter } from 'vue-router'
const router = useRouter()
const state = reactive({
filter: {
page: 1,
limit: 10,
search: "",
},
setup() {
onBeforeMount(() => {
headers: [
{
label: "角色名",
prop: "role_name",
width: 220
},
{
label: "创建人",
prop: "created_by",
width: 220
},
{
label: "创建时间",
prop: "created_time",
width: 276
},
{
label: "账号数",
prop: "user_count",
},
{
label: "描述",
prop: "role_desc",
minWidth: 346
},
{
label: "是否启用",
prop: "state",
width: 95
},
{
label: "操作",
prop: "action",
width: 220,
fixed: "right",
},
],
tableRows: [],
tableTotal: 0,
actionRow: {},
selection: [],
delDialog: false,
delType: 1, // 删除类型 1-单条删除 2-批量删除
})
const getRoleRows = () => {
let params = {...state.filter}
console.log(params)
axios
.get(`/apaas/system/v5/role/list`,{params})
.then((res) => {
if (res.data.code == 200) {
state.tableRows = res.data.data || []
state.tableTotal = res.data.total
}else {
ElMessage.error(re.data.data)
}
})
return {
...toRefs(),
} // 获取角色列表
const changePage = (val) => {
state.filter.page = val
getRoleRows()
} // 改变页码
const changeSize = (val) => {
state.filter.limit = val
changePage(1)
} // 改变每页条数
const changeSearch = (val) => {
state.filter.search = val
changePage(1)
} // 表格关键字筛选
const changeUseRow = (row) => {
axios
.post(`/apaas/system/v5/role/state/${row.id}/${row.state}`)
.then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.data)
changePage(1)
}else {
ElMessage.error(res.data.data)
}
})
} // 更改启用禁用状态
const selectRows = (rows) => {
state.selection = rows
}
const register = () => {
console.log("新建角色")
router.push("/system/role/add")
} // 新建角色
const edit_row = (row) => {
console.log(row,"编辑角色")
router.push({
path: "/system/role/edit",
query: {
id: row.id
}
},
})
} // 编辑角色
const delete_row = (row) => {
state.actionRow = row
state.delType = 1
state.delDialog = true
} // 删除角色
const deleteRows = () => {
if (state.selection.length == 0) {
ElMessage.error("请先选择要删除的数据")
}else {
state.delType = 2
state.delDialog = true
}
} // 批量删除按钮
const deleteData = () => {
let ids = []
if (state.delType == 1) {
ids.push(state.actionRow.id)
}else {
state.selection.forEach(e => {
ids.push(e.id)
})
}
let params = {
ids: [...ids]
}
console.log(params)
axios
.delete(`/apaas/system/v5/role/delete`,{data: {ids:[...ids]}})
.then((res) => {
if (res.data.code == 200) {
ElMessage.success(res.data.data)
state.delDialog = false
changePage(1)
}else {
ElMessage.error(res.data.data)
}
})
}
</script>s
onBeforeMount(() => {
getRoleRows()
})
const {
filter,
headers,
tableRows,
tableTotal,
delDialog,
} = toRefs(state)
</script>
<style lang="scss" scoped>
.detail_container {
width: 100%;
padding: 0 24px;
height: 100%;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: stretch;
.main_container {
flex-grow: 1;
width: 100%;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: stretch;
background-color: #fff;
box-shadow: 0px 1px 4px 0px rgba(0,7,101,0.15);
border-radius: 6px;
margin: 0 0 16px;
position: relative;
height: calc(100% - 62px);
.table_container {
height: calc(100% - 70px);
padding: 0 16px;
.table {
max-height: calc(100% - 64px);
}
}
}
}
</style>
\ No newline at end of file
var adminMenu = [
{
menuName: "工作台",
path: "/workspace",
parentPath:null,
name:"workspace",
menuType:'system', //system:apaas后管,能力注册页等 font:apaas前台页 manager:apaas管理中心
show:true,
children:[{
menuName: "能力管理",
path: "/ability-manage",
show:true,
menuType:'system',
icon: "#bg-ic-ability",
parentPath:'/workspace',
children:[
{
name: "ui-service-test",
menuName: "ui服务测试",
path: "/ui-example",
menuType:'system',
parentPath:null,
},
{
name: "register-valid",
menuName: "注册认证",
path: "/register-valid",
menuType:'system',
parentPath:null,
},
{
name: "ability-register-step",
menuName:'能力注册',
path: "/ability-register/step",
parentPath:'/ability-manage',
menuType:'system',
},
{
name: "ability-register-desc",
menuName:'服务注册说明',
path: "/ability-register/desc",
linkPath:["/ability-register/desc"],
parentPath:'/ability-manage',
menuType:'system',
},
{
name: "ability-register-preview",
menuName:'服务注册说明',
path: "/ability-register/preview",
linkPath:["/ability-register/preview"],
parentPath:'/ability-manage',
menuType:'system',
},
{
name: "ability-register-set-mock",
menuName:'配置mock服务',
path: "/ability-register/set-mock",
parentPath:'/ability-manage',
menuType:'system',
},
{
name: "real-list",
menuName:'能力注册',
path: "/ability-manage/real-list",
parentPath:'/ability-manage',
linkPath:["/ability-register/step","/ability-register/set-mock"],
menuType:'system',
show:true,
},
{
name: "real-detail",
menuName:'能力注册详情',
path: "/ability-manage/real-list/detail",
parentPath:'/ability-manage',
menuType:'system',
},
{
name: "mock-list",
menuName:'mock能力',
path: "/ability-manage/mock-list",
parentPath:'/ability-manage',
linkPath:["/mock-register/step"],
show:true,
menuType:'system',
},
{
path:"/mock-register/step",
parentPath:'/ability-manage',
name:"mock-register-step",
menuName:"mock注册",
menuType:'system',
},
{
name: "mock-detail",
menuName:'mock能力详情',
path: "/ability-manage/mock-list/detail",
parentPath:'/ability-manage',
menuType:'system',
},
{
name: "sold-list",
menuName:'能力上下架管理',
path: "/ability-manage/sold-list",
parentPath:'/ability-manage',
linkPath:["/ability-manage/sold-list/service-test"],
show: true,
menuType:'system',
},
{
name: "service-test",
menuName:'服务测试',
path: "/ability-manage/sold-list/service-test",
parentPath:'/ability-manage',
menuType:'system',
},
]
},
{
name: "dict-config",
menuName:'字典配置',
path: "/dict-config",
parentPath:'/workspace',
menuType:'system',
icon: "#bg-ic-log",
show:true,
children: [
{
name: "business-list",
menuName:'业务分类',
path: "/dict-config/business-list",
parentPath:'/dict-config',
menuType:'system',
show:true,
},
{
name: "sectors-list",
menuName:'业务领域',
path: "/dict-config/sectors-list",
parentPath:'/dict-config',
menuType:'system',
show:true,
},
{
name: "openness-list",
menuName:'开放程度',
path: "/dict-config/openness-list",
parentPath:'/dict-config',
menuType:'system',
show:true,
}
]
}
]
},
{
name:"index",
menuName:"首页",
path: "/",
parentPath:null,
menuType:'font',
show:true,
},
{
menuName: "管理中心",
path: "/manage",
name:"manage",
parentPath:null,
menuType:'manager',
show: true,
children:[{
menuName: "开发管理",
path: "/develop",
parentPath:null,
menuType:'manager',
show:true,
icon: "#bg-ic-ability",
children:[
{
name: "account-manage",
menuName:'系统账号管理',
parentPath:null,
menuType:'manager',
show:true,
path: "/develop/account",
linkPath: ["/develop/account/add"]
},
path: "/workspace1",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25", //0目录1菜单2子页面
menuType: 0, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
children: [
{
name: "account-add-manage",
menuName:'新建账号',
parentPath:'/develop/account',
menuType:'manager',
path: "/develop/account/add",
menuName: "工作台首页",
path: "/workspace",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 1, //system:apaas后管,能力注册页等 font:apaas前台页 manager:apaas管理中心
},
{
name: "account-detail-manage",
menuName:'账号详情',
parentPath: '/develop/account',
menuType:'manager',
path: "/develop/account/detail",
menuName: "能力管理",
path: "/ability-manage",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 0,
icon: "bg-ic-ability",
children: [
{
menuName: "能力注册",
path: "/ability-manage/real-list",
children: [
{
menuName: "能力注册",
path: "/ability-register/step",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
children: [
{
menuName: "服务注册说明",
path: "/ability-register/desc",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
{
menuName: "服务注册说明",
path: "/ability-register/preview",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
{
menuName: "ui服务测试",
path: "/ui-example",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
{
menuName: "注册认证",
path: "/register-valid",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
],
},
{
menuName: "配置mock服务",
path: "/ability-register/set-mock",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
{
menuName: "能力注册详情",
path: "/ability-manage/real-list/detail",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
],
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 1,
},
{
menuName: "mock能力",
path: "/ability-manage/mock-list",
children: [
{
path: "/mock-register/step",
menuName: "mock注册",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
{
menuName: "mock能力详情",
path: "/ability-manage/mock-list/detail",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
],
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 1,
},
{
menuName: "能力上下架管理",
path: "/ability-manage/sold-list",
children: [
{
menuName: "服务测试",
path: "/ability-manage/sold-list/service-test",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
],
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 1,
},
],
},
{
name: "menu-manage",
menuName:'菜单管理',
parentPath:null,
menuType:'manager',
show:true,
path: "/develop/menu",
},
]
],
},
{
menuName: "系统管理",
path: "/system",
parentPath:null,
menuType:'manager',
show:true,
icon: "#bg-ic-ability",
children:[
{
name: "system-manage",
menuName:'组织管理',
parentPath:null,
menuType:'manager',
show:true,
path: "/system/organization",
},
{
name: "paltform-user-manage",
menuName:'新增平台用户',
parentPath: '/system/organization',
menuType:'manager',
show:false,
path: "/system/organization/platform-user",
},
{
name: "system-user-manage",
menuName:'新增组织用户',
parentPath: '/system/organization',
menuType:'manager',
show: false,
path: "/system/organization/system-user",
},
{
name: "user-detail-manage",
menuName:'用户详情',
parentPath: '/system/organization',
menuType:'manager',
show: false,
path: "/system/organization/user-detail",
},
menuName: "首页",
path: "/",
dict_group_id: "2cb4f767-fad7-44f2-afa3-f055e15dd2b6",
menuType: 1, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
},
{
menuName: "管理中心",
path: "/manage",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 0, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
children: [
{
name: "org-detail-manage",
menuName:'组织详情',
parentPath: '/system/organization',
menuType:'manager',
show: false,
path: "/system/organization/org-detail",
menuName: "开发管理",
path: "/develop",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 0, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
icon: "bg-ic-ability",
children: [
{
menuName: "系统账号管理",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 1, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
path: "/develop/account",
children: [
{
menuName: "新建账号",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 2, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
path: "/develop/account/add",
},
{
menuName: "账号详情",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 2, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
path: "/develop/account/detail",
},
],
},
{
menuName: "菜单管理",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 1, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
path: "/develop/menu",
},
],
},
{
name: "role-manage",
menuName:'角色管理',
parentPath:null,
menuType:'manager',
show:true,
path: "/system/role",
menuName: "系统管理",
path: "/system",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 0, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
icon: "bg-ic-ability",
children: [
{
menuName: "组织管理",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 1, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
path: "/system/organization",
children:[
{
menuName: "新增平台用户",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 2, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
show: false,
path: "/system/organization/platform-user",
},
{
menuName: "新增组织用户",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 2, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
show: false,
path: "/system/organization/system-user",
},
{
menuName: "用户详情",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 2, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
show: false,
path: "/system/organization/user-detail",
},
{
menuName: "组织详情",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 2, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
show: false,
path: "/system/organization/org-detail",
},
]
},
{
menuName: "角色管理",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 1, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
path: "/system/role",
children:[
{
menuName:'新增角色',
menuType:2,
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
path: "/system/role/add",
},
{
menuName:'编辑角色',
menuType:2,
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
path: "/system/role/edit",
},
]
},
],
},
]
},
{
menuName: "配置管理",
path: "/config",
parentPath:null,
menuType:'manager',
show:true,
icon: "#bg-ic-ability",
children:[
{
name: "dict-manage",
menuName:'字典管理',
parentPath:null,
menuType:'manager',
show:true,
path: "/config/dict",
menuName: "配置管理",
path: "/config",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 0, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
icon: "bg-ic-ability",
children: [
{
menuName: "字典管理",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 1, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
path: "/config/dict",
},
],
},
]
],
},
]
},
]
];
function getName(str){
if(str=='/'){
return 'index'
}
let temp = str.slice(1)
temp = temp.replaceAll('/','-')
return temp
}
function getViews(path) {
// 首先把你需要动态路由的组件地址全部获取,示例项目主项目放入了main,如果直接放入page,需要去掉/main
let pathArr = path.split('/')
let modules = {}
switch (pathArr.length) {
case 2:
modules = import.meta.glob('../page/main/**/*.vue')
break;
case 3:
modules = import.meta.glob('../page/main/**/*/*.vue')
break;
case 4:
modules = import.meta.glob('../page/main/**/**/*/*.vue')
break;
case 5:
modules = import.meta.glob('../page/main/**/**/**/*/*.vue')
break;
default:
break;
}
// 然后动态路由的时候这样来取
console.log(modules['../page/main' + path + '/index.vue']);
return modules['../page/main' + path + '/index.vue']
// 首先把你需要动态路由的组件地址全部获取,示例项目主项目放入了main,如果直接放入page,需要去掉/main
let pathArr = path.split("/");
let modules = {};
switch (pathArr.length) {
case 2:
modules = import.meta.glob("../page/main/**/*.vue");
break;
case 3:
modules = import.meta.glob("../page/main/**/*/*.vue");
break;
case 4:
modules = import.meta.glob("../page/main/**/**/*/*.vue");
break;
case 5:
modules = import.meta.glob("../page/main/**/**/**/*/*.vue");
break;
default:
break;
}
// 然后动态路由的时候这样来取
console.log(modules["../page/main" + path + "/index.vue"]);
return modules["../page/main" + path + "/index.vue"];
}
//处理路由方法
var menuToRouter = (menu)=>{
menu.forEach(e => {
if(e.children){
// 其他层级作为文件夹,只提供父级
e.component = () => import('../page/parent/parent.vue')
menuToRouter(e.children)
}else{
console.log(`@/page/main${e.path}/index.vue`);
//叶子层级需要加载到对应文件
//对首页做兼容
if(e.path=='/'){
e.component = () => import('../page/main/index/index.vue')
}else{
e.component= getViews(e.path)
}
}
});
}
var menuToRouter = (menu) => {
menu.forEach((e) => {
e.name = getName(e.path)
if (e.children && e.menuType == 0) {
// 其他层级作为文件夹,只提供父级
e.component = () => import("../page/parent/parent.vue");
menuToRouter(e.children);
} else if (e.children && e.menuType !== 0) {
console.log(`@/page/main${e.path}/index.vue`);
//叶子层级需要加载到对应文件
//对首页做兼容
if (e.path == "/") {
e.component = () => import("../page/main/index/index.vue");
} else {
e.component = getViews(e.path);
}
menuToRouter(e.children);
} else {
console.log(`@/page/main${e.path}/index.vue`);
//叶子层级需要加载到对应文件
//对首页做兼容
if (e.path == "/") {
e.component = () => import("../page/main/index/index.vue");
} else {
e.component = getViews(e.path);
}
}
});
};
export default {
adminMenu,
menuToRouter
}
\ No newline at end of file
adminMenu,
menuToRouter,
};
//作为路由的记录,避免无法找到相应的路由
var router = [
];
{
menuName: "工作台",
path: "/workspace1",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25", //0目录1菜单2子页面
menuType: 0, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
children: [
{
menuName: "工作台首页",
path: "/workspace",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 1, //system:apaas后管,能力注册页等 font:apaas前台页 manager:apaas管理中心
},
{
menuName: "能力管理",
path: "/ability-manage",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 0,
icon: "bg-ic-ability",
children: [
{
menuName: "能力注册",
path: "/ability-manage/real-list",
children: [
{
menuName: "能力注册",
path: "/ability-register/step",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
children: [
{
menuName: "服务注册说明",
path: "/ability-register/desc",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
{
menuName: "服务注册说明",
path: "/ability-register/preview",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
{
menuName: "ui服务测试",
path: "/ui-example",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
{
menuName: "注册认证",
path: "/register-valid",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
],
},
{
menuName: "配置mock服务",
path: "/ability-register/set-mock",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
{
menuName: "能力注册详情",
path: "/ability-manage/real-list/detail",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
],
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 1,
},
{
menuName: "mock能力",
path: "/ability-manage/mock-list",
children: [
{
path: "/mock-register/step",
menuName: "mock注册",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
{
menuName: "mock能力详情",
path: "/ability-manage/mock-list/detail",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
],
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 1,
},
{
menuName: "能力上下架管理",
path: "/ability-manage/sold-list",
children: [
{
menuName: "服务测试",
path: "/ability-manage/sold-list/service-test",
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 2,
},
],
dict_group_id: "64c156e0-bfff-4bfc-a63a-56effe130a25",
menuType: 1,
},
],
},
],
},
{
menuName: "首页",
path: "/",
dict_group_id: "2cb4f767-fad7-44f2-afa3-f055e15dd2b6",
menuType: 1, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
},
{
menuName: "管理中心",
path: "/manage",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 0, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
children: [
{
menuName: "开发管理",
path: "/develop",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 0, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
icon: "bg-ic-ability",
children: [
{
menuName: "系统账号管理",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 1, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
path: "/develop/account",
children: [
{
menuName: "新建账号",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 2, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
path: "/develop/account/add",
},
{
menuName: "账号详情",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 2, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
path: "/develop/account/detail",
},
],
},
{
menuName: "菜单管理",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 1, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
path: "/develop/menu",
},
],
},
{
menuName: "系统管理",
path: "/system",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 0, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
icon: "bg-ic-ability",
children: [
{
menuName: "组织管理",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 1, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
path: "/system/organization",
children:[
{
menuName: "新增平台用户",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 2, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
show: false,
path: "/system/organization/platform-user",
},
{
menuName: "新增组织用户",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 2, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
show: false,
path: "/system/organization/system-user",
},
{
menuName: "用户详情",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 2, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
show: false,
path: "/system/organization/user-detail",
},
{
menuName: "组织详情",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 2, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
show: false,
path: "/system/organization/org-detail",
},
]
},
{
menuName: "角色管理",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 1, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
path: "/system/role",
children:[
{
menuName:'新增角色',
menuType:2,
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
path: "/system/role/add",
},
{
menuName:'编辑角色',
menuType:2,
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
path: "/system/role/edit",
},
]
},
],
},
{
menuName: "配置管理",
path: "/config",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 0, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
icon: "bg-ic-ability",
children: [
{
menuName: "字典管理",
dict_group_id: "09938937-3db9-47de-b967-7777ea4ebb2d",
menuType: 1, //system:64c156e0-bfff-4bfc-a63a-56effe130a25:apaas后管,能力注册页等 font:2cb4f767-fad7-44f2-afa3-f055e15dd2b6:apaas前台页 manager:09938937-3db9-47de-b967-7777ea4ebb2d:apaas管理中心 知识中心:26d3903a-863e-4efc-b53e-0fb8772ddaa4
path: "/config/dict",
},
],
},
],
},
];
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment