#
Junjie
2024-07-02 d6a0e5667b4dde018b8244808fcc33f68f5b07ad
#
9个文件已修改
220 ■■■■ 已修改文件
zy-asrs-admin/src/App.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/locales/en_US.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/main.js 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/router/index.js 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/utils/request.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-admin/src/views/IndexView.vue 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-framework/src/main/java/com/zy/asrs/framework/generators/VueGenerator.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-framework/src/main/resources/templates/vue/Index.txt 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-asrs-wms/src/main/java/com/zy/asrs/wms/system/controller/AuthController.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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>
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',
};
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)
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;
    }
}
const boot = async () => {
    await initToken();
    await initRouter()
    //wait route load
app.use(createPinia())
app.use(router)
app.use(Antd)
app.mount('#app')
}
boot()
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
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',
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() {
  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>
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())){
                // 时间、枚举  格式化  主键修饰
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,6 +79,8 @@
    content: formatMessage('page.delete.confirm', '确定删除该项吗?'),
    maskClosable: true,
    onOk: async () => {
      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) {
@@ -87,7 +89,11 @@
          message.error(result.msg);
        }
        getPage()
          hide()
      })
      } catch (error) {
        message.error(formatMessage('common.fail', '请求失败'));
      }
    },
  });
}
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);
    }
}