|
@@ -1,38 +1,44 @@
|
|
|
import pinia from "~src/store/init"
|
|
|
import appConfig from '~src/config/app';
|
|
|
-import {useAppStore} from "~src/store/index";
|
|
|
+import {useAppStore} from "~src/store";
|
|
|
+import {useOsTheme} from 'vooks'
|
|
|
+import {getRoutes} from '~api/menu';
|
|
|
+import themeData from '~src/config/theme';
|
|
|
+import tokenData from "~src/router/modules/token";
|
|
|
+import {setStoreData} from "~src/utils/storage";
|
|
|
import {userLogin,refreshToken,logout} from '~api/user';
|
|
|
import {userConfigInfo, userConfigSave} from "~api/other";
|
|
|
-import themeData from '~src/config/theme';
|
|
|
-import {getIndex, getObjValue} from "vue-utils-plus"
|
|
|
-import {useOsTheme} from 'vooks'
|
|
|
+import {ArrToOneObj, getArrValue, getIndex, getObjValue} from "vue-utils-plus"
|
|
|
|
|
|
+//初始变量
|
|
|
const store = useAppStore(pinia)
|
|
|
|
|
|
//登录
|
|
|
export const useAppLogin = async (form) => {
|
|
|
- try {
|
|
|
- const { error, status, res } = await userLogin(form);
|
|
|
- if (!error && status === 200) {
|
|
|
- store.setToken(res['access_token'])
|
|
|
- store.setRefreshToken(res['refresh_token'])
|
|
|
- store.setTenantId(res['tenant_id'])
|
|
|
- store.setUserInfo(res)
|
|
|
- await initUserConfigInfo()
|
|
|
- return Promise.resolve(res);
|
|
|
- } else {
|
|
|
- return Promise.reject(res);
|
|
|
+ const { error, status, res } = await userLogin(form);
|
|
|
+ if (!error && status === 200) {
|
|
|
+ console.log(res['access_token'])
|
|
|
+ store.setTokenVal(res['access_token'])
|
|
|
+ store.setRefreshTokenVal(res['refresh_token'])
|
|
|
+ store.setTenantId(res['tenant_id'])
|
|
|
+ store.setUserInfo(res)
|
|
|
+ const routerRes = await setRouterData()
|
|
|
+ if (!routerRes) {
|
|
|
+ return Promise.reject({msg:'路由异常'});
|
|
|
}
|
|
|
- } catch (e) {
|
|
|
- window.console.warn('token 刷新失败: ', e);
|
|
|
- return Promise.reject(e);
|
|
|
+ await initUserConfigInfo()
|
|
|
+ return Promise.resolve(res);
|
|
|
+ } else {
|
|
|
+ return Promise.reject(res);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//用户信息初始化
|
|
|
export const initUserConfigInfo = async () => {
|
|
|
const {error, data} = await userConfigInfo();
|
|
|
- if (error) return true
|
|
|
+ if (error) {
|
|
|
+ return Promise.reject(false);
|
|
|
+ }
|
|
|
const res = getObjValue(data)
|
|
|
if (res?.theme) {
|
|
|
const {theme,color,homeTheme,shotWebRtc,fullScreen,opinionView} = res
|
|
@@ -60,7 +66,7 @@ export const initUserConfigInfo = async () => {
|
|
|
store.setOrderServiceTipModal(opinionView ?? 1)
|
|
|
store.setShotWebRtc(shotWebRtc)
|
|
|
store.setShotWebRtc(fullScreen)
|
|
|
- return true
|
|
|
+ return Promise.resolve(true);
|
|
|
} else {
|
|
|
await userConfigSave({
|
|
|
theme: appConfig?.theme || '',
|
|
@@ -70,10 +76,29 @@ export const initUserConfigInfo = async () => {
|
|
|
fullScreen: '1',
|
|
|
opinionView: 1
|
|
|
})
|
|
|
- return true
|
|
|
+ return Promise.resolve(true);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+//设置路由信息
|
|
|
+export const setRouterData = async () => {
|
|
|
+ //请求接口,获取路由数据
|
|
|
+ const {error, data} = await getRoutes()
|
|
|
+ if (error) {
|
|
|
+ return Promise.reject(false);
|
|
|
+ }
|
|
|
+ const resData = getArrValue(data)
|
|
|
+ //数据转换
|
|
|
+ let routesObj = {}, routesArr = []
|
|
|
+ await ArrToOneObj(resData, 'code', routesObj, routesArr)
|
|
|
+ const routes = [...tokenData, ...routesArr] //合并
|
|
|
+ //数据缓存
|
|
|
+ store.setMenus(resData)
|
|
|
+ setStoreData('route', routesObj)
|
|
|
+ setStoreData('routes', routes)
|
|
|
+ return Promise.resolve(true);
|
|
|
+}
|
|
|
+
|
|
|
//刷新token
|
|
|
export const RefreshToken = async () => {
|
|
|
try {
|
|
@@ -83,8 +108,8 @@ export const RefreshToken = async () => {
|
|
|
const tenantId = store.getTenantId;
|
|
|
const { error, status, res } = await refreshToken(refresh, tenantId, dept_id, role_id);
|
|
|
if (!error && status === 200) {
|
|
|
- store.setToken(res['access_token'])
|
|
|
- store.setRefreshToken(res['refresh_token'])
|
|
|
+ store.setTokenVal(res['access_token'])
|
|
|
+ store.setRefreshTokenVal(res['refresh_token'])
|
|
|
store.setTenantId(res['tenant_id'])
|
|
|
store.setUserInfo(res)
|
|
|
return Promise.resolve(res);
|
|
@@ -99,6 +124,5 @@ export const RefreshToken = async () => {
|
|
|
|
|
|
//登出
|
|
|
export const LogOut = async () => {
|
|
|
- await logout();
|
|
|
- return Promise.resolve(true);
|
|
|
+ return await logout();
|
|
|
}
|