diff --git a/server/app/controller/menu.js b/server/app/controller/menu.js new file mode 100644 index 0000000..c24de99 --- /dev/null +++ b/server/app/controller/menu.js @@ -0,0 +1,25 @@ +const Controller = require("egg").Controller + +const table = "sys_menu"; + +class User extends Controller { + async list() { + const {ctx} = this + const result = await this.service.db.list("sys_menu", ctx.query) + this.ctx.status = 200 + this.ctx.body = result + } + + async info() { + const {ctx, app} = this + if (!ctx.state.user?.id) { + this.ctx.body = {code: 1, msg: "找不到授权用户"} + return this.ctx.status = 401 + } + const user = await app.mysql.get(table, {id: ctx.state.user?.id}) + this.ctx.body = {code: 0, data: user} + this.ctx.status = 200 + } +} + +module.exports = User diff --git a/web/src/apps/AppMenu.vue b/web/src/apps/AppMenu.vue new file mode 100644 index 0000000..588a0d7 --- /dev/null +++ b/web/src/apps/AppMenu.vue @@ -0,0 +1,23 @@ + + + + + diff --git a/web/src/components/sliderNav.vue b/web/src/components/sliderNav.vue index cd01ae5..78054d9 100644 --- a/web/src/components/sliderNav.vue +++ b/web/src/components/sliderNav.vue @@ -4,7 +4,9 @@
- + + +
@@ -19,11 +21,11 @@ @@ -95,4 +112,4 @@ export default { } } } - \ No newline at end of file + diff --git a/web/src/utils/axios.js b/web/src/utils/axios.js index 1fced06..6f74a10 100644 --- a/web/src/utils/axios.js +++ b/web/src/utils/axios.js @@ -35,6 +35,10 @@ ins.interceptors.response.use(res => { console.error("服务器异常,请联系管理员!") } }, ({response}) => { - if (response?.data?.error) ElMessage.error(response.data.error) + if (response.status == 401) { + mainStore().logout() + location.replace("/") + } else if (response?.data?.error) ElMessage.error(response.data.error) + }) -export default ins \ No newline at end of file +export default ins diff --git a/web/src/utils/tools.js b/web/src/utils/tools.js index f605881..0bbf401 100644 --- a/web/src/utils/tools.js +++ b/web/src/utils/tools.js @@ -3,7 +3,29 @@ import {mainStore} from "./store"; export const getToken = () => mainStore()?.token export const $confirm = () => { +} +/** + * 数组转tree + * @param list 待转化的数组 + * @param config 配置 + */ +const $arr2tree = (list, config = {}) => { + const {key = 'id', parent = 'parentId', children = 'children'} = config, result = [], itemMap = {}, ids = list?.map(e => `${e[key]}`)?.toString() + for (const e of list) { + const id = e[key], pid = e[parent] + itemMap[id] = {...e, [children]: [itemMap[id]?.[children]].flat().filter(Boolean)} + const treeItem = itemMap[id] + if (!!pid && ids.indexOf(pid) > -1) { + if (!itemMap[pid]) { + itemMap[pid] = { + children: [], + } + } + itemMap[pid].children.push(treeItem) + } else result.push(treeItem) + } + return result } export default { - getToken, $confirm -} \ No newline at end of file + getToken, $confirm, $arr2tree +}