From 3d7fc92709228895e7f97c125e0ac2d63dc136d2 Mon Sep 17 00:00:00 2001
From: 罗广辉 <guanghui.luo@foxmail.com>
Date: Mon, 19 Jan 2026 10:09:03 +0800
Subject: [PATCH] feat: 路由跳转
---
/dev/null | 133 ------
applications/task-work-order/src/store/modules/user.js | 769 ++++++++++++++++++-------------------
applications/task-work-order/src/views/wel/index.vue | 4
applications/task-work-order/src/router/views/index.js | 18
applications/task-work-order/src/config/website.js | 139 +++---
applications/task-work-order/src/permission.js | 3
applications/task-work-order/src/router/page/index.js | 133 +++---
7 files changed, 510 insertions(+), 689 deletions(-)
diff --git a/applications/task-work-order/src/config/website.js b/applications/task-work-order/src/config/website.js
index 1fc7403..4a718b0 100644
--- a/applications/task-work-order/src/config/website.js
+++ b/applications/task-work-order/src/config/website.js
@@ -4,81 +4,78 @@
* @LastEditors : yuan
* @LastEditTime : 2026-01-16 11:12:30
* @FilePath : \applications\task-work-order\src\config\website.js
- * @Description :
- * Copyright 2026 OBKoro1, All Rights Reserved.
+ * @Description :
+ * Copyright 2026 OBKoro1, All Rights Reserved.
* 2026-01-06 09:47:27
*/
/**
* 全局配置文件
*/
export default {
- title: 'saber',
- logo: 'S',
- key: 'work', //配置主键,目前用于存储
- indexTitle: '',
- clientId: 'saber', // 客户端id
- clientSecret: 'saber_secret', // 客户端密钥
- tenantMode: true, // 是否开启租户模式
- tenantId: '000000', // 管理组租户编号
- captchaMode: true, // 是否开启验证码模式
- switchMode: false, // 是否开启部门切换模式
- lockPage: '/lock',
- tokenTime: 3000,
- tokenHeader: 'Blade-Auth',
- //http的status默认放行不才用统一处理的,
- statusWhiteList: [],
- //配置首页不可关闭
- setting: {
- sidebar: 'vertical',
- tag: true,
- debug: true,
- collapse: true,
- search: true,
- color: true,
- lock: true,
- screenshot: true,
- fullscreen: true,
- theme: true,
- menu: true,
- },
- fistPage: {
- name: '数据驾驶舱',
- path: '/dataCockpit/index',
- // path: '/tickets/ticket',
-
- },
- //配置菜单的属性
- menu: {
- iconDefault: 'icon-caidan',
- label: 'name',
- path: 'path',
- icon: 'source',
- children: 'children',
- query: 'query',
- href: 'path',
- meta: 'meta',
- },
- //oauth2配置
- oauth2: {
- // 是否开启注册功能
- registerMode: true,
- // 使用后端工程 @org.springblade.test.Sm2KeyGenerator 获取
- publicKey: '请配置国密sm2公钥',
- // 第三方系统授权地址
- authUrl: 'http://localhost/blade-auth/oauth/render',
- // 单点登录系统认证(cloud端口为8100,boot端口为80)
- ssoUrl:
- 'http://localhost:8100/oauth/authorize?client_id=saber3&response_type=code&redirect_uri=',
- // 单点登录回调地址(Saber服务的登录界面地址)
- redirectUri: 'http://localhost:2888/login',
- },
- //设计器配置
- design: {
- // 流程设计器类型(true->nutflow,false->flowable)
- designMode: true,
- // 流程设计器地址(flowable模式)
- designUrl: 'http://localhost:9999',
- // 报表设计器地址(cloud端口为8108,boot端口为80)
- reportUrl: 'http://localhost:8108/ureport',
- },
+ title: 'saber',
+ logo: 'S',
+ key: 'work', //配置主键,目前用于存储
+ indexTitle: '',
+ clientId: 'saber', // 客户端id
+ clientSecret: 'saber_secret', // 客户端密钥
+ tenantMode: true, // 是否开启租户模式
+ tenantId: '000000', // 管理组租户编号
+ captchaMode: true, // 是否开启验证码模式
+ switchMode: false, // 是否开启部门切换模式
+ lockPage: '/lock',
+ tokenTime: 3000,
+ tokenHeader: 'Blade-Auth',
+ //http的status默认放行不才用统一处理的,
+ statusWhiteList: [],
+ //配置首页不可关闭
+ setting: {
+ sidebar: 'vertical',
+ tag: true,
+ debug: true,
+ collapse: true,
+ search: true,
+ color: true,
+ lock: true,
+ screenshot: true,
+ fullscreen: true,
+ theme: true,
+ menu: true,
+ },
+ fistPage: {
+ name: '测试页',
+ path: '/test',
+ },
+ //配置菜单的属性
+ menu: {
+ iconDefault: 'icon-caidan',
+ label: 'name',
+ path: 'path',
+ icon: 'source',
+ children: 'children',
+ query: 'query',
+ href: 'path',
+ meta: 'meta',
+ },
+ //oauth2配置
+ oauth2: {
+ // 是否开启注册功能
+ registerMode: true,
+ // 使用后端工程 @org.springblade.test.Sm2KeyGenerator 获取
+ publicKey: '请配置国密sm2公钥',
+ // 第三方系统授权地址
+ authUrl: 'http://localhost/blade-auth/oauth/render',
+ // 单点登录系统认证(cloud端口为8100,boot端口为80)
+ ssoUrl: 'http://localhost:8100/oauth/authorize?client_id=saber3&response_type=code&redirect_uri=',
+ // 单点登录回调地址(Saber服务的登录界面地址)
+ redirectUri: 'http://localhost:2888/login',
+ },
+ //设计器配置
+ design: {
+ // 流程设计器类型(true->nutflow,false->flowable)
+ designMode: true,
+ // 流程设计器地址(flowable模式)
+ designUrl: 'http://localhost:9999',
+ // 报表设计器地址(cloud端口为8108,boot端口为80)
+ reportUrl: 'http://localhost:8108/ureport',
+ },
}
diff --git a/applications/task-work-order/src/permission copy 2.js b/applications/task-work-order/src/permission copy 2.js
deleted file mode 100644
index 821f3dc..0000000
--- a/applications/task-work-order/src/permission copy 2.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * @Author: GuLiMmo 2820890765@qq.com
- * @Date: 2024-08-23 10:51:53
- * @LastEditors: GuLiMmo 2820890765@qq.com
- * @LastEditTime: 2024-08-29 14:10:56
- * @FilePath: /drone-web-manage/src/permission.js
- * @Description:
- * Copyright (c) 2024 by GuLiMmo, All Rights Reserved.
- */
-import router from './router/'
-import store from './store'
-import { getToken } from '@/utils/auth'
-import { getUrlParams } from './utils/validate'
-import NProgress from 'nprogress' // progress bar
-import 'nprogress/nprogress.css' // progress bar style
-NProgress.configure({ showSpinner: false })
-const lockPage = '/lock' //锁屏页
-const urlParams = getUrlParams(window.location.href)
-
-router.beforeEach((to, from, next) => {
- const meta = to.meta || {}
- const isMenu = meta.menu === undefined ? to.query.menu : meta.menu
- store.commit('SET_IS_MENU', isMenu === undefined)
- if (getToken()) {
- if (store.getters.isLock && to.path !== lockPage) {
- //如果系统激活锁屏,全部跳转到锁屏页
- next({ path: lockPage })
- } else if (to.path === '/login') {
- //如果登录成功访问登录页跳转到主页
- next({ path: '/' })
- } else {
- const systemToken = store.getters.token || urlParams?.token
- if (systemToken === 0) {
- store.dispatch('FedLogOut').then(() => {
- next({ path: '/login' })
- })
- } else {
- const meta = to.meta || {}
- const query = to.query || {}
- if (meta.target) {
- window.open(query.url.replace(/#/g, '&'))
- return
- } else if (meta.isTab !== false) {
- store.commit('ADD_TAG', {
- name: query.name || to.name,
- path: to.path,
- fullPath: to.path,
- params: to.params,
- query: to.query,
- meta: meta,
- })
- }
- next()
- }
- }
- } else {
- //判断是否需要认证,没有登录访问去登录页
- if (meta.isAuth === false) {
- next()
- } else {
- next('/login')
- }
- }
-})
-
-router.afterEach(to => {
- NProgress.done()
- let title = router.$avueRouter.generateTitle(to, { label: 'name' })
- router.$avueRouter.setTitle(title)
- store.commit('SET_IS_SEARCH', false)
-})
diff --git a/applications/task-work-order/src/permission copy.js b/applications/task-work-order/src/permission copy.js
deleted file mode 100644
index c244bec..0000000
--- a/applications/task-work-order/src/permission copy.js
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * @Author: GuLiMmo 2820890765@qq.com
- * @Date: 2024-08-23 10:51:53
- * @LastEditors: GuLiMmo 2820890765@qq.com
- * @LastEditTime: 2024-08-29 14:10:56
- * @FilePath: /drone-web-manage/src/permission.js
- * @Description:
- * Copyright (c) 2024 by GuLiMmo, All Rights Reserved.
- */
-
-import { getStore } from '@/utils/store'
-import router from './router/'
-import store from './store'
-import { getToken } from '@/utils/auth'
-import { getUrlParams } from './utils/validate'
-import NProgress from 'nprogress' // progress bar
-import 'nprogress/nprogress.css' // progress bar style
-NProgress.configure({ showSpinner: false })
-const lockPage = '/lock' //锁屏页
-const urlParams = getUrlParams(window.location.href)
-
-function findRouteByPath (routes, targetPath) {
- // 遍历数组中的每个路由对象
- for (const route of routes) {
- // 如果当前路由的path匹配目标路径,直接返回
- if (route.path === targetPath) {
- return route
- }
-
- // 如果有子路由,递归查找
- if (route.children && route.children.length > 0) {
- const foundInChildren = findRouteByPath(route.children, targetPath)
- if (foundInChildren) {
- return foundInChildren
- }
- }
- }
-
- // 遍历完所有路由都没找到,返回null
- return null
-}
-
-router.beforeEach((to, from, next) => {
- const meta = to.meta || {}
- const isMenu = meta.menu === undefined ? to.query.menu : meta.menu
- store.commit('SET_IS_MENU', isMenu === undefined)
-
- const menuAll = getStore({ name: 'menuAll' })
-
- if (!menuAll) {
- store.dispatch('GetMenu').then(data => {
- if (data.length !== 0) {
- router.$avueRouter.formatRoutes(data, true)
-
- let newMenu = getStore({ name: 'menuAll' })
-
- let firstMenu = newMenu[0]
-
- let toMenu = findRouteByPath(newMenu, to.path)
-
- store.commit('ADD_TAG', {
- name: firstMenu.name,
- path: firstMenu.path,
- fullPath: firstMenu.path,
- params: firstMenu.params || {},
- query: firstMenu.query || {},
- meta: firstMenu.meta || {},
- })
-
- store.commit('ADD_TAG', {
- name: toMenu.name,
- path: toMenu.path,
- fullPath: toMenu.path,
- params: toMenu.params || {},
- query: toMenu.query || {},
- meta: toMenu.meta || {},
- })
-
- next(to.fullPath)
- }
- })
-
- return
- }
-
- if (getToken()) {
- if (store.getters.isLock && to.path !== lockPage) {
- //如果系统激活锁屏,全部跳转到锁屏页
- next({ path: lockPage })
- } else if (to.path === '/login') {
- //如果登录成功访问登录页跳转到主页
- next({ path: '/' })
- } else {
- const systemToken = store.getters.token || urlParams?.token
- if (systemToken === 0) {
- store.dispatch('FedLogOut').then(() => {
- next({ path: '/login' })
- })
- } else {
- const meta = to.meta || {}
- const query = to.query || {}
- if (meta.target) {
- window.open(query.url.replace(/#/g, '&'))
- return
- } else if (meta.isTab !== false) {
- store.commit('ADD_TAG', {
- name: query.name || to.name,
- path: to.path,
- fullPath: to.path,
- params: to.params,
- query: to.query,
- meta: meta,
- })
- }
- next()
- }
- }
- } else {
- //判断是否需要认证,没有登录访问去登录页
- if (meta.isAuth === false) {
- next()
- } else {
- next('/login')
- }
- }
-})
-
-router.afterEach(to => {
- NProgress.done()
- let title = router.$avueRouter.generateTitle(to, { label: 'name' })
- router.$avueRouter.setTitle(title)
- store.commit('SET_IS_SEARCH', false)
-})
diff --git a/applications/task-work-order/src/permission.js b/applications/task-work-order/src/permission.js
index 36ed552..6df8ee9 100644
--- a/applications/task-work-order/src/permission.js
+++ b/applications/task-work-order/src/permission.js
@@ -67,7 +67,6 @@
query: firstMenu.query || {},
meta: firstMenu.meta || {},
})
-
store.commit('ADD_TAG', {
name: toMenu.name,
path: toMenu.path,
@@ -139,4 +138,4 @@
const pageTitle = isLoginPage ? '中图智飞低空感知网平台' : '综合管理平台'
document.title = pageTitle
store.commit('SET_IS_SEARCH', false)
-})
\ No newline at end of file
+})
diff --git a/applications/task-work-order/src/router/page/index.js b/applications/task-work-order/src/router/page/index.js
index 552260d..5974a39 100644
--- a/applications/task-work-order/src/router/page/index.js
+++ b/applications/task-work-order/src/router/page/index.js
@@ -1,77 +1,64 @@
import Store from '@/store/'
export default [
- {
- path: '/login',
- name: '登录页',
- component: () =>
- Store.getters.isMacOs ? import('@/mac/login.vue') : import('@/page/login/index.vue'),
- meta: {
- keepAlive: true,
- isTab: false,
- isAuth: false,
- },
- },
- {
- path: '/oauth/redirect/:source',
- name: '第三方登录',
- component: () =>
- Store.getters.isMacOs ? import('@/mac/login.vue') : import('@/page/login/index.vue'),
- meta: {
- keepAlive: true,
- isTab: false,
- isAuth: false,
- },
- },
- {
- path: '/lock',
- name: '锁屏页',
- component: () =>
- Store.getters.isMacOs ? import('@/mac/lock.vue') : import('@/page/lock/index.vue'),
- meta: {
- keepAlive: true,
- isTab: false,
- isAuth: false,
- },
- },
- {
- path: '/404',
- component: () => import(/* webpackChunkName: "page" */ '@/components/error-page/404.vue'),
- name: '404',
- meta: {
- keepAlive: true,
- isTab: false,
- isAuth: false,
- },
- },
- {
- path: '/403',
- component: () => import(/* webpackChunkName: "page" */ '@/components/error-page/403.vue'),
- name: '403',
- meta: {
- keepAlive: true,
- isTab: false,
- isAuth: false,
- },
- },
- {
- path: '/500',
- component: () => import(/* webpackChunkName: "page" */ '@/components/error-page/500.vue'),
- name: '500',
- meta: {
- keepAlive: true,
- isTab: false,
- isAuth: false,
- },
- },
- {
- path: '/',
- name: '主页',
- redirect: '/wel',
- },
- // {
- // path: '/',
- // name: '主页',
- // redirect: '/tickets/ticket',
- // },
+ {
+ path: '/login',
+ name: '登录页',
+ component: () => (Store.getters.isMacOs ? import('@/mac/login.vue') : import('@/page/login/index.vue')),
+ meta: {
+ keepAlive: true,
+ isTab: false,
+ isAuth: false,
+ },
+ },
+ {
+ path: '/oauth/redirect/:source',
+ name: '第三方登录',
+ component: () => (Store.getters.isMacOs ? import('@/mac/login.vue') : import('@/page/login/index.vue')),
+ meta: {
+ keepAlive: true,
+ isTab: false,
+ isAuth: false,
+ },
+ },
+ {
+ path: '/lock',
+ name: '锁屏页',
+ component: () => (Store.getters.isMacOs ? import('@/mac/lock.vue') : import('@/page/lock/index.vue')),
+ meta: {
+ keepAlive: true,
+ isTab: false,
+ isAuth: false,
+ },
+ },
+ {
+ path: '/404',
+ component: () => import(/* webpackChunkName: "page" */ '@/components/error-page/404.vue'),
+ name: '404',
+ meta: {
+ keepAlive: true,
+ isTab: false,
+ isAuth: false,
+ },
+ },
+ {
+ path: '/403',
+ component: () => import(/* webpackChunkName: "page" */ '@/components/error-page/403.vue'),
+ name: '403',
+ meta: {
+ keepAlive: true,
+ isTab: false,
+ isAuth: false,
+ },
+ },
+ {
+ path: '/500',
+ component: () => import(/* webpackChunkName: "page" */ '@/components/error-page/500.vue'),
+ name: '500',
+ meta: {
+ keepAlive: true,
+ isTab: false,
+ isAuth: false,
+ },
+ },
]
diff --git a/applications/task-work-order/src/router/views/index.js b/applications/task-work-order/src/router/views/index.js
index e01e37a..0dea585 100644
--- a/applications/task-work-order/src/router/views/index.js
+++ b/applications/task-work-order/src/router/views/index.js
@@ -18,24 +18,6 @@
}
],
},
- // 事件工单
- // {
- // path: '/tickets',
- // component: () =>
- // Store.getters.isMacOs ? import('@/mac/index.vue') : import('@/page/index/index.vue'),
- // redirect: '/tickets/ticket',
- // children: [
- // {
- // path: 'ticket',
- // name: '事件工单',
- // meta: {
- // i18n: 'dashboard',
- // },
- // component: () => import(/* webpackChunkName: "views" */ '@/views/tickets/ticket.vue'),
- // },
- // ],
- // },
-
{
path: '/test',
component: Layout,
diff --git a/applications/task-work-order/src/store/modules/user.js b/applications/task-work-order/src/store/modules/user.js
index a111e36..969c21a 100644
--- a/applications/task-work-order/src/store/modules/user.js
+++ b/applications/task-work-order/src/store/modules/user.js
@@ -1,396 +1,385 @@
-import {
- setToken,
- setRefreshToken,
- removeToken,
- removeRefreshToken,
- getRefreshToken,
-} from '@/utils/auth';
-import { setStore, getStore } from '@/utils/store';
-import { validatenull } from '@/utils/validate';
-import { deepClone } from '@/utils/util';
+import { setToken, setRefreshToken, removeToken, removeRefreshToken, getRefreshToken } from '@/utils/auth'
+import { setStore, getStore } from '@/utils/store'
+import { validatenull } from '@/utils/validate'
+import { deepClone } from '@/utils/util'
import defaultAva from '@/assets/images/defaultava.png'
import {
- loginByUsername,
- loginBySocial,
- loginBySso,
- loginByPhone,
- getUserInfo,
- logout,
- refreshToken,
- getButtons,
- registerUser,
- getParentDeptInfo
-} from '@/api/user';
-import { getRoutes, getTopMenu } from '@/api/system/menu';
-import { formatPath } from '@/router/avue-router';
-import { ElMessage } from 'element-plus';
-import { encrypt } from '@/utils/sm2';
-import md5 from 'js-md5';
-
+ loginByUsername,
+ loginBySocial,
+ loginBySso,
+ loginByPhone,
+ getUserInfo,
+ logout,
+ refreshToken,
+ getButtons,
+ registerUser,
+ getParentDeptInfo,
+} from '@/api/user'
+import { getRoutes, getTopMenu } from '@/api/system/menu'
+import { formatPath } from '@/router/avue-router'
+import { ElMessage } from 'element-plus'
+import { encrypt } from '@/utils/sm2'
+import md5 from 'js-md5'
const user = {
- state: {
- tenantId: getStore({ name: 'tenantId' }) || '',
- userInfo: getStore({ name: 'userInfo' }) || [],
- permission: getStore({ name: 'permission' }) || {},
- roles: [],
- menuId: {},
- menu: getStore({ name: 'menu' }) || [],
- menuAll: getStore({ name: 'menuAll' }) || [],
- token: getStore({ name: 'token' }) || '',
- refreshToken: getStore({ name: 'refreshToken' }) || '',
- parentDeptInfo: getStore({ name: 'parentDeptInfo' }) || '',
+ state: {
+ tenantId: getStore({ name: 'tenantId' }) || '',
+ userInfo: getStore({ name: 'userInfo' }) || [],
+ permission: getStore({ name: 'permission' }) || {},
+ roles: [],
+ menuId: {},
+ menu: getStore({ name: 'menu' }) || [],
+ menuAll: getStore({ name: 'menuAll' }) || [],
+ token: getStore({ name: 'token' }) || '',
+ refreshToken: getStore({ name: 'refreshToken' }) || '',
+ parentDeptInfo: getStore({ name: 'parentDeptInfo' }) || '',
+ },
+ actions: {
+ //根据用户名登录
+ LoginByUsername({ commit }, userInfo = {}) {
+ return new Promise((resolve, reject) => {
+ loginByUsername(
+ userInfo.tenantId,
+ userInfo.deptId,
+ userInfo.roleId,
+ userInfo.username,
+ md5(userInfo.password),
+ userInfo.type,
+ userInfo.key,
+ userInfo.code
+ )
+ .then(res => {
+ const data = res.data
+ if (data.error_description) {
+ ElMessage({
+ message: data.error_description,
+ type: 'error',
+ })
+ } else {
+ commit('SET_TOKEN', data.access_token)
+ commit('SET_REFRESH_TOKEN', data.refresh_token)
+ commit('SET_TENANT_ID', data.tenant_id)
+ commit('SET_USER_INFO', data)
+ commit('SET_PARENT_DEPT_INFO', data.dept_id)
+ commit('DEL_ALL_TAG')
+ commit('CLEAR_LOCK')
+ }
+ resolve()
+ })
+ .catch(err => {
+ reject(err)
+ })
+ })
+ },
+ //根据第三方信息登录
+ LoginBySocial({ commit }, userInfo) {
+ return new Promise((resolve, reject) => {
+ loginBySocial(userInfo.tenantId, userInfo.source, userInfo.code, userInfo.state)
+ .then(res => {
+ const data = res.data
+ if (data.error_description) {
+ ElMessage({
+ message: data.error_description,
+ type: 'error',
+ })
+ } else {
+ commit('SET_TOKEN', data.access_token)
+ commit('SET_REFRESH_TOKEN', data.refresh_token)
+ commit('SET_USER_INFO', data)
+ commit('SET_TENANT_ID', data.tenant_id)
+ commit('DEL_ALL_TAG')
+ commit('CLEAR_LOCK')
+ }
+ resolve()
+ })
+ .catch(err => {
+ reject(err)
+ })
+ })
+ },
+ //根据单点信息登录
+ LoginBySso({ commit }, userInfo) {
+ return new Promise((resolve, reject) => {
+ loginBySso(userInfo.state, userInfo.code)
+ .then(res => {
+ const data = res.data
+ if (data.error_description) {
+ ElMessage({
+ message: data.error_description,
+ type: 'error',
+ })
+ } else {
+ commit('SET_TOKEN', data.access_token)
+ commit('SET_REFRESH_TOKEN', data.refresh_token)
+ commit('SET_USER_INFO', data)
+ commit('SET_TENANT_ID', data.tenant_id)
+ commit('DEL_ALL_TAG')
+ commit('CLEAR_LOCK')
+ }
+ resolve()
+ })
+ .catch(err => {
+ reject(err)
+ })
+ })
+ },
+ //根据手机信息登录
+ LoginByPhone({ commit }, userInfo) {
+ return new Promise((resolve, reject) => {
+ loginByPhone(userInfo.tenantId, encrypt(userInfo.phone), userInfo.codeId, userInfo.codeValue)
+ .then(res => {
+ const data = res.data
+ if (data.error_description) {
+ ElMessage({
+ message: data.error_description,
+ type: 'error',
+ })
+ } else {
+ commit('SET_TOKEN', data.access_token)
+ commit('SET_REFRESH_TOKEN', data.refresh_token)
+ commit('SET_USER_INFO', data)
+ commit('SET_TENANT_ID', data.tenant_id)
+ commit('DEL_ALL_TAG')
+ commit('CLEAR_LOCK')
+ }
+ resolve()
+ })
+ .catch(err => {
+ reject(err)
+ })
+ })
+ },
+ //用户注册
+ RegisterUser({ commit }, userInfo = {}) {
+ return new Promise((resolve, reject) => {
+ registerUser(
+ userInfo.tenantId,
+ userInfo.name,
+ userInfo.account,
+ encrypt(userInfo.password),
+ userInfo.phone,
+ userInfo.email
+ ).then(res => {
+ const data = res.data
+ if (data.error_description) {
+ ElMessage({
+ message: data.error_description,
+ type: 'error',
+ })
+ reject(data.error_description)
+ } else {
+ commit('SET_TOKEN', data.access_token)
+ commit('SET_REFRESH_TOKEN', data.refresh_token)
+ commit('SET_USER_INFO', data)
+ commit('SET_TENANT_ID', data.tenant_id)
+ commit('DEL_ALL_TAG')
+ commit('CLEAR_LOCK')
+ }
+ resolve()
+ })
+ })
+ },
+ GetUserInfo({ commit }) {
+ return new Promise((resolve, reject) => {
+ getUserInfo()
+ .then(res => {
+ const data = res.data.data
+ commit('SET_ROLES', data.roles)
+ resolve(data)
+ })
+ .catch(err => {
+ reject(err)
+ })
+ })
+ },
+ //刷新token
+ RefreshToken({ state, commit }, userInfo) {
+ return new Promise((resolve, reject) => {
+ refreshToken(
+ getRefreshToken(),
+ state.tenantId,
+ !validatenull(userInfo) ? userInfo.deptId : state.userInfo.dept_id,
+ !validatenull(userInfo) ? userInfo.roleId : state.userInfo.role_id
+ )
+ .then(res => {
+ const data = res.data
+ commit('SET_TOKEN', data.access_token)
+ commit('SET_REFRESH_TOKEN', data.refresh_token)
+ commit('SET_USER_INFO', data)
+ resolve()
+ })
+ .catch(error => {
+ reject(error)
+ })
+ })
+ },
+ // 登出
+ LogOut({ commit }) {
+ return new Promise((resolve, reject) => {
+ logout()
+ .then(() => {
+ commit('SET_TOKEN', '')
+ commit('SET_MENU_ALL_NULL', [])
+ commit('SET_MENU', [])
+ commit('SET_ROLES', [])
+ commit('DEL_ALL_TAG', [])
+ commit('CLEAR_LOCK')
+ removeToken()
+ removeRefreshToken()
+ resolve()
+ })
+ .catch(error => {
+ reject(error)
+ })
+ })
+ },
+ //注销session
+ FedLogOut({ commit }) {
+ return new Promise(resolve => {
+ commit('SET_TOKEN', '')
+ commit('SET_MENU_ALL_NULL', [])
+ commit('SET_MENU', [])
+ commit('SET_ROLES', [])
+ commit('DEL_ALL_TAG', [])
+ commit('CLEAR_LOCK')
+ removeToken()
+ removeRefreshToken()
+ removeToken()
+ resolve()
+ })
+ },
+ GetTopMenu() {
+ return new Promise(resolve => {
+ getTopMenu().then(res => {
+ const data = res.data.data || []
+ resolve(data)
+ })
+ })
+ },
+ GetMenu({ commit, dispatch }, tenantId) {
+ const errLogOut = () => {
+ dispatch('LogOut').then(() => {
+ const env = import.meta.env.VITE_APP_ENV
+ const adminUrl = import.meta.env.VITE_APP_DASHBOARD_URL
+ env === 'development'
+ ? (window.location.href = '/task-work-order/login')
+ : window.location.replace(`${adminUrl}#/login`)
+ })
+ }
+ return new Promise(resolve => {
+ getRoutes({ tenantId, sysType: 6 })
+ .then(res => {
+ const data = res.data.data
+ let menu = deepClone(data)
+ if (!res.data?.data?.length) {
+ errLogOut()
+ return
+ }
+ menu.forEach(ele => formatPath(ele, true))
+ commit('SET_MENU', menu)
+ commit('SET_MENU_ALL', menu)
+ dispatch('GetButtons')
+ resolve(menu)
+ })
+ .catch(err => {
+ errLogOut()
+ })
+ })
+ },
+ GetButtons({ commit }) {
+ return new Promise(resolve => {
+ getButtons({ sysType: 6 }).then(res => {
+ const data = res.data.data
+ commit('SET_PERMISSION', data)
+ resolve()
+ })
+ })
+ },
+ },
+ mutations: {
+ SET_PARENT_DEPT_INFO(state, deptId) {
+ getParentDeptInfo({ deptId: deptId }).then(res => {
+ const data = res.data.data
+ state.parentDeptInfo = data
+ setStore({ name: 'parentDeptInfo', content: data })
+ })
+ },
+ SET_TOKEN: (state, token) => {
+ setToken(token)
+ state.token = token
+ setStore({ name: 'token', content: state.token })
+ },
+ SET_REFRESH_TOKEN: (state, refreshToken) => {
+ setRefreshToken(refreshToken)
+ state.refreshToken = refreshToken
+ setStore({ name: 'refreshToken', content: state.refreshToken })
+ },
+ SET_MENU_ID(state, menuId) {
+ state.menuId = menuId
+ },
+ SET_TENANT_ID: (state, tenantId) => {
+ state.tenantId = tenantId
+ setStore({ name: 'tenantId', content: state.tenantId })
+ },
+ SET_USER_INFO: (state, userInfo) => {
+ if (validatenull(userInfo.user_id) && validatenull(userInfo.account)) {
+ state.userInfo = { user_name: 'unauth', role_name: 'unauth' }
+ } else {
+ if (validatenull(userInfo.avatar)) {
+ userInfo.avatar = defaultAva
+ }
+ state.userInfo = userInfo
+ }
+ setStore({ name: 'userInfo', content: state.userInfo })
+ },
+ SET_MENU_ALL: (state, menuAll) => {
+ let menu = state.menuAll
+ menuAll.forEach(ele => {
+ let index = menu.findIndex(item => item.path === ele.path)
+ if (index === -1) {
+ menu.push(ele)
+ } else {
+ menu[index] = ele
+ }
+ })
+ state.menuAll = menu
+ setStore({ name: 'menuAll', content: state.menuAll })
+ },
+ SET_MENU_ALL_NULL: state => {
+ state.menuAll = []
+ setStore({ name: 'menuAll', content: state.menuAll })
+ },
+ SET_MENU: (state, menu) => {
+ state.menu = menu
+ setStore({ name: 'menu', content: state.menu })
+ },
+ SET_ROLES: (state, roles) => {
+ state.roles = roles
+ },
+ SET_PERMISSION: (state, permission) => {
+ let result = []
- },
- actions: {
- //根据用户名登录
- LoginByUsername({ commit }, userInfo = {}) {
- return new Promise((resolve, reject) => {
- loginByUsername(
- userInfo.tenantId,
- userInfo.deptId,
- userInfo.roleId,
- userInfo.username,
- md5(userInfo.password),
- userInfo.type,
- userInfo.key,
- userInfo.code
- )
- .then(res => {
- const data = res.data;
- if (data.error_description) {
- ElMessage({
- message: data.error_description,
- type: 'error',
- });
- } else {
- commit('SET_TOKEN', data.access_token);
- commit('SET_REFRESH_TOKEN', data.refresh_token);
- commit('SET_TENANT_ID', data.tenant_id);
- commit('SET_USER_INFO', data);
- commit('SET_PARENT_DEPT_INFO', data.dept_id);
- commit('DEL_ALL_TAG');
- commit('CLEAR_LOCK');
- }
- resolve();
- })
- .catch(err => {
- reject(err);
- });
- });
- },
- //根据第三方信息登录
- LoginBySocial({ commit }, userInfo) {
- return new Promise((resolve, reject) => {
- loginBySocial(userInfo.tenantId, userInfo.source, userInfo.code, userInfo.state)
- .then(res => {
- const data = res.data;
- if (data.error_description) {
- ElMessage({
- message: data.error_description,
- type: 'error',
- });
- } else {
- commit('SET_TOKEN', data.access_token);
- commit('SET_REFRESH_TOKEN', data.refresh_token);
- commit('SET_USER_INFO', data);
- commit('SET_TENANT_ID', data.tenant_id);
- commit('DEL_ALL_TAG');
- commit('CLEAR_LOCK');
- }
- resolve();
- })
- .catch(err => {
- reject(err);
- });
- });
- },
- //根据单点信息登录
- LoginBySso({ commit }, userInfo) {
- return new Promise((resolve, reject) => {
- loginBySso(userInfo.state, userInfo.code)
- .then(res => {
- const data = res.data;
- if (data.error_description) {
- ElMessage({
- message: data.error_description,
- type: 'error',
- });
- } else {
- commit('SET_TOKEN', data.access_token);
- commit('SET_REFRESH_TOKEN', data.refresh_token);
- commit('SET_USER_INFO', data);
- commit('SET_TENANT_ID', data.tenant_id);
- commit('DEL_ALL_TAG');
- commit('CLEAR_LOCK');
- }
- resolve();
- })
- .catch(err => {
- reject(err);
- });
- });
- },
- //根据手机信息登录
- LoginByPhone({ commit }, userInfo) {
- return new Promise((resolve, reject) => {
- loginByPhone(
- userInfo.tenantId,
- encrypt(userInfo.phone),
- userInfo.codeId,
- userInfo.codeValue
- )
- .then(res => {
- const data = res.data;
- if (data.error_description) {
- ElMessage({
- message: data.error_description,
- type: 'error',
- });
- } else {
- commit('SET_TOKEN', data.access_token);
- commit('SET_REFRESH_TOKEN', data.refresh_token);
- commit('SET_USER_INFO', data);
- commit('SET_TENANT_ID', data.tenant_id);
- commit('DEL_ALL_TAG');
- commit('CLEAR_LOCK');
- }
- resolve();
- })
- .catch(err => {
- reject(err);
- });
- });
- },
- //用户注册
- RegisterUser({ commit }, userInfo = {}) {
- return new Promise((resolve, reject) => {
- registerUser(
- userInfo.tenantId,
- userInfo.name,
- userInfo.account,
- encrypt(userInfo.password),
- userInfo.phone,
- userInfo.email
- ).then(res => {
- const data = res.data;
- if (data.error_description) {
- ElMessage({
- message: data.error_description,
- type: 'error',
- });
- reject(data.error_description);
- } else {
- commit('SET_TOKEN', data.access_token);
- commit('SET_REFRESH_TOKEN', data.refresh_token);
- commit('SET_USER_INFO', data);
- commit('SET_TENANT_ID', data.tenant_id);
- commit('DEL_ALL_TAG');
- commit('CLEAR_LOCK');
- }
- resolve();
- });
- });
- },
- GetUserInfo({ commit }) {
- return new Promise((resolve, reject) => {
- getUserInfo()
- .then(res => {
- const data = res.data.data;
- commit('SET_ROLES', data.roles);
- resolve(data);
- })
- .catch(err => {
- reject(err);
- });
- });
- },
- //刷新token
- RefreshToken({ state, commit }, userInfo) {
- return new Promise((resolve, reject) => {
- refreshToken(
- getRefreshToken(),
- state.tenantId,
- !validatenull(userInfo) ? userInfo.deptId : state.userInfo.dept_id,
- !validatenull(userInfo) ? userInfo.roleId : state.userInfo.role_id
- )
- .then(res => {
- const data = res.data;
- commit('SET_TOKEN', data.access_token);
- commit('SET_REFRESH_TOKEN', data.refresh_token);
- commit('SET_USER_INFO', data);
- resolve();
- })
- .catch(error => {
- reject(error);
- });
- });
- },
- // 登出
- LogOut({ commit }) {
- return new Promise((resolve, reject) => {
- logout()
- .then(() => {
- commit('SET_TOKEN', '');
- commit('SET_MENU_ALL_NULL', []);
- commit('SET_MENU', []);
- commit('SET_ROLES', []);
- commit('DEL_ALL_TAG', []);
- commit('CLEAR_LOCK');
- removeToken();
- removeRefreshToken();
- resolve();
- })
- .catch(error => {
- reject(error);
- });
- });
- },
- //注销session
- FedLogOut({ commit }) {
- return new Promise(resolve => {
- commit('SET_TOKEN', '');
- commit('SET_MENU_ALL_NULL', []);
- commit('SET_MENU', []);
- commit('SET_ROLES', []);
- commit('DEL_ALL_TAG', []);
- commit('CLEAR_LOCK');
- removeToken();
- removeRefreshToken();
- removeToken();
- resolve();
- });
- },
- GetTopMenu() {
- return new Promise(resolve => {
- getTopMenu().then(res => {
- const data = res.data.data || [];
- resolve(data);
- });
- });
- },
- GetMenu({ commit, dispatch }, tenantId) {
- const errLogOut = () => {
- dispatch('LogOut').then(()=>{
- const env = import.meta.env.VITE_APP_ENV
- const adminUrl = import.meta.env.VITE_APP_DASHBOARD_URL
- env === 'development'
- ? window.location.href = "/manage/login"
- : window.location.replace(`${adminUrl}#/login`)
- })
- }
- return new Promise(resolve => {
- getRoutes({tenantId,sysType: 6}).then(res => {
- const data = res.data.data;
- let menu = deepClone(data);
- if (!res.data?.data?.length){
- errLogOut()
- return
- }
- menu.forEach(ele => formatPath(ele, true));
- commit('SET_MENU', menu);
- commit('SET_MENU_ALL', menu);
- dispatch('GetButtons');
- resolve(menu);
- }).catch(err =>{
- errLogOut()
- })
- });
- },
- GetButtons({ commit }) {
- return new Promise(resolve => {
- getButtons({sysType: 6}).then(res => {
- const data = res.data.data;
- commit('SET_PERMISSION', data);
- resolve();
- });
- });
- },
- },
- mutations: {
- SET_PARENT_DEPT_INFO(state, deptId){
- getParentDeptInfo({deptId:deptId}).then(res=>{
- const data = res.data.data;
- state.parentDeptInfo = data;
- setStore({ name: 'parentDeptInfo', content: data });
- })
- },
- SET_TOKEN: (state, token) => {
- setToken(token);
- state.token = token;
- setStore({ name: 'token', content: state.token });
- },
- SET_REFRESH_TOKEN: (state, refreshToken) => {
- setRefreshToken(refreshToken);
- state.refreshToken = refreshToken;
- setStore({ name: 'refreshToken', content: state.refreshToken });
- },
- SET_MENU_ID(state, menuId) {
- state.menuId = menuId;
- },
- SET_TENANT_ID: (state, tenantId) => {
- state.tenantId = tenantId;
- setStore({ name: 'tenantId', content: state.tenantId });
- },
- SET_USER_INFO: (state, userInfo) => {
- if (validatenull(userInfo.user_id) && validatenull(userInfo.account)) {
- state.userInfo = { user_name: 'unauth', role_name: 'unauth' };
- } else {
- if (validatenull(userInfo.avatar)) {
- userInfo.avatar = defaultAva;
- }
- state.userInfo = userInfo;
- }
- setStore({ name: 'userInfo', content: state.userInfo });
- },
- SET_MENU_ALL: (state, menuAll) => {
- let menu = state.menuAll;
- menuAll.forEach(ele => {
- let index = menu.findIndex(item => item.path === ele.path);
- if (index === -1) {
- menu.push(ele);
- } else {
- menu[index] = ele;
- }
- });
- state.menuAll = menu;
- setStore({ name: 'menuAll', content: state.menuAll });
- },
- SET_MENU_ALL_NULL: state => {
- state.menuAll = [];
- setStore({ name: 'menuAll', content: state.menuAll });
- },
- SET_MENU: (state, menu) => {
- state.menu = menu;
- setStore({ name: 'menu', content: state.menu });
- },
- SET_ROLES: (state, roles) => {
- state.roles = roles;
- },
- SET_PERMISSION: (state, permission) => {
- let result = [];
+ function getCode(list) {
+ list.forEach(ele => {
+ if (typeof ele === 'object') {
+ const children = ele.children
+ const code = ele.code
+ if (children) {
+ getCode(children)
+ } else {
+ result.push(code)
+ }
+ }
+ })
+ }
- function getCode(list) {
- list.forEach(ele => {
- if (typeof ele === 'object') {
- const children = ele.children;
- const code = ele.code;
- if (children) {
- getCode(children);
- } else {
- result.push(code);
- }
- }
- });
- }
-
- getCode(permission);
- state.permission = {};
- result.forEach(ele => {
- state.permission[ele] = true;
- });
- setStore({ name: 'permission', content: state.permission, type: 'session' });
- },
- },
-};
-export default user;
+ getCode(permission)
+ state.permission = {}
+ result.forEach(ele => {
+ state.permission[ele] = true
+ })
+ setStore({ name: 'permission', content: state.permission, type: 'session' })
+ },
+ },
+}
+export default user
diff --git a/applications/task-work-order/src/views/wel/index.vue b/applications/task-work-order/src/views/wel/index.vue
index f59947f..6077d0a 100644
--- a/applications/task-work-order/src/views/wel/index.vue
+++ b/applications/task-work-order/src/views/wel/index.vue
@@ -1,6 +1,6 @@
<template>
<div>
-
+ 测试
</div>
</template>
@@ -10,4 +10,4 @@
<style lang="scss" scoped>
-</style>
\ No newline at end of file
+</style>
--
Gitblit v1.9.3