From d6a0e5667b4dde018b8244808fcc33f68f5b07ad Mon Sep 17 00:00:00 2001
From: Junjie <540245094@qq.com>
Date: 星期二, 02 七月 2024 09:54:25 +0800
Subject: [PATCH] #
---
zy-asrs-admin/src/main.js | 29 +++++
zy-asrs-wms/src/main/java/com/zy/asrs/wms/system/controller/AuthController.java | 44 +++++++-
zy-asrs-admin/src/App.vue | 14 +-
zy-asrs-admin/src/views/IndexView.vue | 37 ++++--
zy-asrs-admin/src/utils/request.js | 8
zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/VueGenerator.java | 2
zy-asrs-admin/src/locales/en_US.js | 7 +
zy-asrs-admin/src/router/index.js | 89 +++++++++++------
zy-asrs-framework/src/main/resources/templates/vue/Index.txt | 26 +++--
9 files changed, 179 insertions(+), 77 deletions(-)
diff --git a/zy-asrs-admin/src/App.vue b/zy-asrs-admin/src/App.vue
index 8cdf986..66501f5 100644
--- a/zy-asrs-admin/src/App.vue
+++ b/zy-asrs-admin/src/App.vue
@@ -16,12 +16,14 @@
enUS,
};
-if (globalState.token == '' || globalState.token == null) {
- let token = localStorage.getItem('token')
- let user = JSON.parse(localStorage.getItem('user'))
- globalState.token = token;
- globalState.user = user;
-}
+// if (globalState.token == '' || globalState.token == null) {
+// let token = localStorage.getItem('token')
+// let user = JSON.parse(localStorage.getItem('user'))
+// let locale = localStorage.getItem('locale')
+// globalState.token = token;
+// globalState.user = user;
+// globalState.locale = locale;
+// }
</script>
<template>
diff --git a/zy-asrs-admin/src/locales/en_US.js b/zy-asrs-admin/src/locales/en_US.js
index 84de0af..24b1ea4 100644
--- a/zy-asrs-admin/src/locales/en_US.js
+++ b/zy-asrs-admin/src/locales/en_US.js
@@ -10,6 +10,7 @@
'common.confirm':'Confirm',
'common.cancel':'Cancel',
'common.reset':'Reset',
+ 'common.operation':'Operation',
'common.username':'Username',
'common.nickname':'Nickname',
'common.sex':'Sex',
@@ -29,6 +30,7 @@
'common.account.logout': 'Logout',
'common.search.placeholder': 'Please enter search content',
'common.loading.api.message': 'Calling Server...',
+ 'common.loading': 'Loading',
'':'',
'':'',
'':'',
@@ -128,4 +130,9 @@
'':'',
'':'',
'':'',
+ 'db.sys_host.name':'Name',
+ 'db.sys_host.status':'Status',
+ 'db.sys_host.create_time':'createTime',
+ 'db.sys_host.update_time':'updateTime',
+ 'db.sys_host.memo':'Memo',
};
\ No newline at end of file
diff --git a/zy-asrs-admin/src/main.js b/zy-asrs-admin/src/main.js
index 06214a2..d2d1b27 100644
--- a/zy-asrs-admin/src/main.js
+++ b/zy-asrs-admin/src/main.js
@@ -5,11 +5,32 @@
import router from './router'
import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/reset.css';
+import { initRouter } from '@/router/index.js'
+import { globalState } from './config.js'
const app = createApp(App)
-app.use(createPinia())
-app.use(router)
-app.use(Antd)
+const initToken = async () => {
+ if (globalState.token == '' || globalState.token == null) {
+ let token = localStorage.getItem('token')
+ let user = JSON.parse(localStorage.getItem('user'))
+ let locale = localStorage.getItem('locale')
+ globalState.token = token;
+ globalState.user = user;
+ globalState.locale = locale;
+ }
+}
-app.mount('#app')
+const boot = async () => {
+ await initToken();
+ await initRouter()
+
+ //wait route load
+ app.use(createPinia())
+ app.use(router)
+ app.use(Antd)
+ app.mount('#app')
+}
+boot()
+
+
diff --git a/zy-asrs-admin/src/router/index.js b/zy-asrs-admin/src/router/index.js
index 00836f2..8aa9191 100644
--- a/zy-asrs-admin/src/router/index.js
+++ b/zy-asrs-admin/src/router/index.js
@@ -1,9 +1,5 @@
import { createRouter, createWebHistory } from 'vue-router'
-import HomeView from '../views/HomeView.vue'
-import MenuView from '../views/system/menu/index.vue'
-import LoginView from '../views/login/LoginView.vue'
-import UserLoginView from '../views/system/userLogin/index.vue'
-import UserView from '../views/system/user/index.vue'
+import { get } from '@/utils/request.js'
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
@@ -11,7 +7,7 @@
{
path: '/',
name: '涓婚〉',
- component: HomeView,
+ component: () => import('@/views/HomeView.vue'),
meta: {
keepAlive: true // 璁剧疆keepAlive锛岃姝よ矾鐢遍〉闈㈣缂撳瓨
},
@@ -19,33 +15,64 @@
{
path: '/login',
name: '鐧诲綍',
- component: LoginView,
+ component: () => import('@/views/login/LoginView.vue'),
},
- {
- path: '/system/menu',
- name: '鑿滃崟绠$悊',
- component: MenuView,
- meta: {
- keepAlive: true // 璁剧疆keepAlive锛岃姝よ矾鐢遍〉闈㈣缂撳瓨
- },
- },
- {
- path: '/system/userLogin',
- name: '鐧诲綍鏃ュ織',
- component: UserLoginView,
- meta: {
- keepAlive: true // 璁剧疆keepAlive锛岃姝よ矾鐢遍〉闈㈣缂撳瓨
- },
- },
- {
- path: '/system/user',
- name: '鐢ㄦ埛绠$悊',
- component: UserView,
- meta: {
- keepAlive: true // 璁剧疆keepAlive锛岃姝よ矾鐢遍〉闈㈣缂撳瓨
- },
- },
+
+ // {
+ // path: '/system/menu',
+ // name: '鑿滃崟绠$悊',
+ // component: () => import('@/views/system/menu/index.vue'),
+ // meta: {
+ // keepAlive: true // 璁剧疆keepAlive锛岃姝よ矾鐢遍〉闈㈣缂撳瓨
+ // },
+ // },
+ // {
+ // path: '/system/userLogin',
+ // name: '鐧诲綍鏃ュ織',
+ // component: () => import('@/views/system/userLogin/index.vue'),
+ // meta: {
+ // keepAlive: true // 璁剧疆keepAlive锛岃姝よ矾鐢遍〉闈㈣缂撳瓨
+ // },
+ // },
+ // {
+ // path: '/system/user',
+ // name: '鐢ㄦ埛绠$悊',
+ // component: () => import('@/views/system/user/index.vue'),
+ // meta: {
+ // keepAlive: true // 璁剧疆keepAlive锛岃姝よ矾鐢遍〉闈㈣缂撳瓨
+ // },
+ // },
+ // {
+ // path: '/system/host',
+ // name: '鏈烘瀯绠$悊',
+ // component: () => import('@/views/system/host/index.vue'),
+ // meta: {
+ // keepAlive: true // 璁剧疆keepAlive锛岃姝よ矾鐢遍〉闈㈣缂撳瓨
+ // },
+ // },
]
})
+export const initRouter = async () => {
+ const modules = import.meta.glob('/src/views/**/index.vue');
+ const resp = await get('/api/auth/router', {});
+ let result = resp.data;
+ let data = result.data;
+ console.log(result);
+ data.forEach((item) => {
+ const module = modules[`/src/views${item.route}/index.vue`];
+ if (module) {
+ const itemRouter = {
+ path: item.route,
+ name: item.name,
+ component: module,
+ meta: {
+ keepAlive: true // 璁剧疆keepAlive锛岃姝よ矾鐢遍〉闈㈣缂撳瓨
+ }
+ }
+ router.addRoute(itemRouter)
+ }
+ })
+}
+
export default router
diff --git a/zy-asrs-admin/src/utils/request.js b/zy-asrs-admin/src/utils/request.js
index 9b5bcd7..5287ee0 100644
--- a/zy-asrs-admin/src/utils/request.js
+++ b/zy-asrs-admin/src/utils/request.js
@@ -6,7 +6,7 @@
timeout: 30000,
})
-export const get = (url, params) => {
+export const get = async (url, params) => {
return instance({
url: url,
method: 'get',
@@ -17,7 +17,7 @@
})
}
-export const post = (url, data) => {
+export const post = async (url, data) => {
return instance({
url: url,
method: 'post',
@@ -28,7 +28,7 @@
})
}
-export const postBlob = (url, data) => {
+export const postBlob = async (url, data) => {
return instance({
url: url,
method: 'post',
@@ -40,7 +40,7 @@
})
}
-export const postForm = (url, params) => {
+export const postForm = async (url, params) => {
return instance({
url: url,
method: 'post',
diff --git a/zy-asrs-admin/src/views/IndexView.vue b/zy-asrs-admin/src/views/IndexView.vue
index 1f9f9f7..73729c8 100644
--- a/zy-asrs-admin/src/views/IndexView.vue
+++ b/zy-asrs-admin/src/views/IndexView.vue
@@ -1,9 +1,10 @@
<script setup>
-import { nextTick, ref, inject, computed } from 'vue';
+import { nextTick, ref, inject } from 'vue';
import { useRouter } from "vue-router";
-import { get, post } from '@/utils/request.js'
+import { get, post, postForm } from '@/utils/request.js'
import { logout } from '@/config.js';
import * as Icons from "@ant-design/icons-vue";
+import { message } from 'ant-design-vue';
import {
MenuUnfoldOutlined,
MenuFoldOutlined,
@@ -30,22 +31,21 @@
};
getMenu()
-
function getMenu() {
- post('/api/menu/tree', {}).then((result) => {
- console.log(result.data.data);
+ get('/api/auth/menu', {}).then((result) => {
menuCache.value = result.data.data;
})
}
function menuSelect(item) {
+ console.log(item.key);
router.push({
path: item.key
})
let name = item.item.name;
currentCache.value = name;
- console.log(routerCache.value);
+ // console.log(routerCache.value);
if (name != undefined && routerCache.value.indexOf(name) == -1) {
routerCache.value.push(item.item.name)
@@ -75,10 +75,18 @@
}
function reloadTabs() {
- isRouterAlive.value = false;
- nextTick(() => {
- isRouterAlive.value = true;
- })
+ const hide = message.loading(formatMessage('common.loading', '鍔犺浇涓�'));
+ try {
+ isRouterAlive.value = false;
+ nextTick(() => {
+ isRouterAlive.value = true;
+ message.success(formatMessage('common.success', '鍔犺浇鎴愬姛'));
+ })
+ } catch (error) {
+ message.error(formatMessage('common.fail', '鍔犺浇澶辫触'));
+ } finally {
+ hide();
+ }
}
function switchTabs(name) {
@@ -89,12 +97,15 @@
currentCache.value = name;
selectedKeys.value = [routerCacheMap.value.get(name)]
- console.log(routerCacheMap, name, routerCacheMap.value.get(name));
+ // console.log(routerCacheMap, name, routerCacheMap.value.get(name));
}
const switchLocale = (locale) => {
globalState.locale = locale;
+ localStorage.setItem('locale', locale)
+ reloadTabs()
+ console.log(locale);
}
</script>
@@ -107,7 +118,7 @@
theme="dark" mode="inline">
<div>
<a-menu-item key="/" name="涓婚〉">
- <HomeOutlined /> {{ formatMessage('common.home','涓婚〉') }}
+ <HomeOutlined /> {{ formatMessage('common.home', '涓婚〉') }}
</a-menu-item>
</div>
@@ -156,7 +167,7 @@
</a>
<template #overlay>
<a-menu @click="logout">
- <a-menu-item key="logout">{{ formatMessage('common.account.logout','閫�鍑�') }}</a-menu-item>
+ <a-menu-item key="logout">{{ formatMessage('common.account.logout', '閫�鍑�') }}</a-menu-item>
</a-menu>
</template>
</a-dropdown>
diff --git a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/VueGenerator.java b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/VueGenerator.java
index 2adb39a..b248609 100644
--- a/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/VueGenerator.java
+++ b/zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/VueGenerator.java
@@ -779,7 +779,7 @@
continue;
}
sb.append(" {\n")
- .append(" title: '").append(column.getComment()).append("',\n")
+ .append(" title: formatMessage('db.").append(table).append(".").append(column.getName()).append("', '").append(column.getComment()).append("'),").append("\n")
.append(" dataIndex: '");
if ("Date".equals(column.getType()) || !Cools.isEmpty(column.getEnums()) || !Cools.isEmpty(column.getForeignKeyMajor())){
// 鏃堕棿銆佹灇涓� 鏍煎紡鍖� 涓婚敭淇グ
diff --git a/zy-asrs-framework/src/main/resources/templates/vue/Index.txt b/zy-asrs-framework/src/main/resources/templates/vue/Index.txt
index 7c77fea..7c707ba 100644
--- a/zy-asrs-framework/src/main/resources/templates/vue/Index.txt
+++ b/zy-asrs-framework/src/main/resources/templates/vue/Index.txt
@@ -22,7 +22,7 @@
const columns = [
@{TABLECOLUMNS}
{
- title: '鎿嶄綔',
+ title: formatMessage('common.operation', '鎿嶄綔'),
name: 'oper',
dataIndex: 'oper',
key: 'oper',
@@ -79,15 +79,21 @@
content: formatMessage('page.delete.confirm', '纭畾鍒犻櫎璇ラ」鍚楋紵'),
maskClosable: true,
onOk: async () => {
- post('/api/@{SIMPLEENTITYNAME}/remove/' + rows.map((row) => row.id).join(','), {}).then(resp => {
- let result = resp.data;
- if (result.code === 200) {
- message.success(result.msg);
- } else {
- message.error(result.msg);
- }
- getPage()
- })
+ const hide = message.loading(formatMessage('common.loading', '璇锋眰涓�'));
+ try {
+ post('/api/@{SIMPLEENTITYNAME}/remove/' + rows.map((row) => row.id).join(','), {}).then(resp => {
+ let result = resp.data;
+ if (result.code === 200) {
+ message.success(result.msg);
+ } else {
+ message.error(result.msg);
+ }
+ getPage()
+ hide()
+ })
+ } catch (error) {
+ message.error(formatMessage('common.fail', '璇锋眰澶辫触'));
+ }
},
});
}
diff --git a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/system/controller/AuthController.java b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/system/controller/AuthController.java
index 02cd552..2e20b41 100644
--- a/zy-asrs-wms/src/main/java/com/zy/asrs/wms/system/controller/AuthController.java
+++ b/zy-asrs-wms/src/main/java/com/zy/asrs/wms/system/controller/AuthController.java
@@ -1,5 +1,6 @@
package com.zy.asrs.wms.system.controller;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.zy.asrs.framework.common.Cools;
import com.zy.asrs.framework.common.R;
import com.zy.asrs.wms.common.annotation.OperationLog;
@@ -8,14 +9,8 @@
import com.zy.asrs.wms.system.controller.param.LoginParam;
import com.zy.asrs.wms.system.controller.param.UpdatePasswordParam;
import com.zy.asrs.wms.system.controller.result.LoginResult;
-import com.zy.asrs.wms.system.entity.Host;
-import com.zy.asrs.wms.system.entity.Menu;
-import com.zy.asrs.wms.system.entity.User;
-import com.zy.asrs.wms.system.entity.UserLogin;
-import com.zy.asrs.wms.system.service.HostService;
-import com.zy.asrs.wms.system.service.RoleMenuService;
-import com.zy.asrs.wms.system.service.UserLoginService;
-import com.zy.asrs.wms.system.service.UserService;
+import com.zy.asrs.wms.system.entity.*;
+import com.zy.asrs.wms.system.service.*;
import com.zy.asrs.wms.utils.JwtUtil;
import com.zy.asrs.wms.utils.Utils;
import org.springframework.security.access.prepost.PreAuthorize;
@@ -23,6 +18,7 @@
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -44,6 +40,10 @@
private RoleMenuService roleMenuService;
@Resource
private HostService hostService;
+ @Resource
+ private UserRoleService userRoleService;
+ @Resource
+ private MenuService menuService;
@PostMapping("/login")
public R login(@RequestBody LoginParam param, HttpServletRequest request) {
@@ -122,4 +122,32 @@
return R.error("淇敼澶辫触");
}
+ @GetMapping("/auth/router")
+ public R router() {
+ List<UserRole> userRoles = userRoleService.list(new LambdaQueryWrapper<UserRole>().eq(UserRole::getUserId, getLoginUserId()));
+ if (userRoles.isEmpty()) {
+ return R.error();
+ }
+ ArrayList<Long> roles = new ArrayList<>();
+ for (UserRole userRole : userRoles) {
+ roles.add(userRole.getRoleId());
+ }
+
+ ArrayList<Long> menus = new ArrayList<>();
+ List<RoleMenu> roleMenus = roleMenuService.list(new LambdaQueryWrapper<RoleMenu>().in(RoleMenu::getRoleId, roles));
+ for (RoleMenu roleMenu : roleMenus) {
+ if(!menus.contains(roleMenu.getMenuId())) {
+ menus.add(roleMenu.getMenuId());
+ }
+ }
+
+ List<Menu> menuList = menuService.list(new LambdaQueryWrapper<Menu>()
+ .in(Menu::getId, menus)
+ .eq(Menu::getType, Menu.TYPE_MENU)
+ .eq(Menu::getPath, 1)
+ .orderByAsc(Menu::getId));
+
+ return R.ok().add(menuList);
+ }
+
}
--
Gitblit v1.9.1