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