mirror of
https://github.com/cool-team-official/cool-admin-vue.git
synced 2025-12-17 17:22:50 +00:00
88 lines
1.7 KiB
TypeScript
88 lines
1.7 KiB
TypeScript
import { ElMessage } from "element-plus";
|
|
import type { EpsModule } from "../types";
|
|
import { service } from "/@/cool";
|
|
import { useCode } from "./code";
|
|
|
|
export function useMenu() {
|
|
const { createVue } = useCode();
|
|
|
|
// 创建菜单、权限、文件
|
|
function create(data: EpsModule): Promise<() => void> {
|
|
return new Promise((resolve, reject) => {
|
|
// 视图文件路径
|
|
data.viewPath = `modules/${data.module}/views${data.router?.replace(
|
|
`/${data.module}`,
|
|
""
|
|
)}.vue`;
|
|
|
|
// 添加菜单
|
|
service.base.sys.menu
|
|
.add({
|
|
type: 1,
|
|
isShow: true,
|
|
keepAlive: true,
|
|
...data,
|
|
api: undefined,
|
|
code: undefined,
|
|
columns: undefined
|
|
})
|
|
.then((res) => {
|
|
// 权限列表
|
|
const perms = data.api?.map((e) => {
|
|
const d = {
|
|
type: 2,
|
|
parentId: res.id,
|
|
name: e.summary || e.path,
|
|
perms: [e.path]
|
|
};
|
|
|
|
if (e.path == "/update") {
|
|
if (data.api?.find((a) => a.path == "/info")) {
|
|
d.perms.push("/info");
|
|
}
|
|
}
|
|
|
|
return {
|
|
...d,
|
|
perms: d.perms
|
|
.map((e) =>
|
|
(data.prefix?.replace("/admin/", "") + e).replace(/\//g, ":")
|
|
)
|
|
.join(",")
|
|
};
|
|
});
|
|
|
|
console.log(data);
|
|
|
|
// 批量插入权限
|
|
service.base.sys.menu.add(perms).then(() => {
|
|
resolve(() => {
|
|
service
|
|
.request({
|
|
url: "/__cool_createMenu",
|
|
method: "POST",
|
|
proxy: false,
|
|
data: {
|
|
code: createVue(data),
|
|
...data
|
|
}
|
|
})
|
|
.then(() => {
|
|
location.reload();
|
|
});
|
|
});
|
|
});
|
|
})
|
|
.catch((err) => {
|
|
ElMessage.error(err.message);
|
|
reject();
|
|
});
|
|
});
|
|
}
|
|
|
|
return {
|
|
create,
|
|
createVue
|
|
};
|
|
}
|