update:token登录

This commit is contained in:
2025-12-08 19:34:11 +08:00
parent 0e0f2e7752
commit db3be950ab
12 changed files with 129 additions and 8 deletions

View File

@@ -46,6 +46,7 @@ try {
home: 'Home',
personal: 'Personal Center',
invite: 'Invite Record',
tokenLogin: 'Token Login',
},
${ScopeFuncs}: {
${i18nAppEn.join('\n ')}
@@ -72,6 +73,7 @@ try {
home: '首页',
personal: '个人中心',
invite: '邀请记录',
tokenLogin: 'Token登录',
},
${ScopeFuncs}: {
${i18nFuncZhCn.join('\n ')}

View File

@@ -19,7 +19,7 @@ import 'form-designer-plus/dist/designer.style.css'; //引入VForm3样式
import vue3TreeOrg from 'vue3-tree-org';
import 'vue3-tree-org/lib/vue3-tree-org.css';
import '/@/spdm/index.scss';
import '/@/spdm/index.scss'; // SPDM CODE
// 日历组件
import { setupCalendar } from 'v-calendar';

View File

@@ -10,7 +10,8 @@ import {NextLoading} from '/@/utils/loading';
const storesTagsViewRoutes = useTagsViewRoutes();
const errorList = ['/401', '/404'];
const whiteList = ['/login', '/authRedirect', ...errorList];
// SPDM CODE
const whiteList = ['/login', '/authRedirect', '/tokenLogin', ...errorList];
/**
* 1、前端控制路由时isRequestRoutes 为 false需要写 roles需要走 setFilterRoute 方法。

View File

@@ -88,6 +88,14 @@ export const staticRoutes: Array<RouteRecordRaw> = [
isAuth: false,
},
},
{ // SPDM CODE
path: '/tokenLogin',
name: 'staticRoutes.tokenLogin',
component: () => import('/@/spdm/views/tokenLogin.vue'),
meta: {
isAuth: false,
},
},
];
/**

43
src/spdm/api/request.ts Normal file
View File

@@ -0,0 +1,43 @@
import axios from 'axios';
import { ElMessage } from 'element-plus';
import { BASE_URL } from '../config';
const service = axios.create({
baseURL: BASE_URL,
timeout: 60000,
headers: {
'Content-Type': 'application/json;application/xml;charset=utf-8;',
},
});
service.interceptors.request.use(
(config) => {
return config;
},
(error) => {
return Promise.reject(error);
}
);
service.interceptors.response.use(
(res) => {
if (res.data.code !== 200) {
ElMessage.error(res.data.message);
}
return res.data;
},
(error) => {
ElMessage.error('系统繁忙,请稍后再试');
return Promise.reject(error);
}
);
const get = (url: string, params = {}) => {
return service.get(url, { params });
};
const post = (url: string, data = {}) => {
return service.post(url, data);
};
export { get, post };

View File

@@ -0,0 +1,9 @@
import { get } from '../request';
import { PREFIX_SYSTEM } from '../../config';
const PREFIX = PREFIX_SYSTEM;
// 获取用户token
export const getUserTokenApi = (params: any) => {
return get(`${PREFIX}user/getUserToken`, params);
};

View File

@@ -1,2 +1,9 @@
// export const SPDM_URL = 'http://192.168.65.64:3001'; // 本地
export const SPDM_URL = 'http://192.168.65.161:3000'; // 测试环境
// 测试环境
export const SPDM_URL = 'http://192.168.65.161:3000'; // SPDM项目地址
export const PREFIX_SYSTEM = '/system/'; // system模块前缀
export const BASE_URL = '/spdmApi/simulation'; // baseUrl
// // 本地环境
// export const SPDM_URL = 'http://192.168.65.64:3001'; // SPDM项目地址
// export const PREFIX_SYSTEM = '/system/'; // system模块前缀
// export const BASE_URL = '/spdmApi/simulation'; // baseUrl

View File

@@ -0,0 +1,43 @@
<template>
<div />
</template>
<script setup lang="ts">
import { onMounted } from 'vue';
import { getUserTokenApi } from '../api/system/user';
import { useRoute } from 'vue-router';
import { REFRESH_TOKEN_KEY, Session, Token } from '/@/utils/storage';
import Cookies from 'js-cookie';
import { useUserInfo } from '/@/stores/userInfo';
import { ElMessage } from 'element-plus';
const route = useRoute();
onMounted(() => {
getTokenFun();
});
const getTokenFun = () => {
const { userId, redirectUrl = '' } = route.query;
if (!userId) {
return;
}
const params = {
userId,
};
getUserTokenApi(params).then((res: any) => {
if (res.code === 200) {
const { access_token, cid_tenant_id, cid_user_id, refresh_token } = res.data;
Cookies.set('cid_user_id', cid_user_id);
Session.setTenant(cid_tenant_id);
Token.set(access_token);
Session.set(REFRESH_TOKEN_KEY, refresh_token);
const url: any = redirectUrl || '/home';
useUserInfo().setUserInfos();
window.location.href = url;
} else {
ElMessage.warning('用户账号无效');
}
});
};
</script>

View File

@@ -1,5 +1,5 @@
// import logo from '/@/assets/logo.png';
import logo from '/@/spdm/assets/spdm_logo.png';
import logo from '/@/spdm/assets/spdm_logo.png'; // SPDM CODE
import logoMini from '/@/assets/logo-mini.svg';
import {Local} from '/@/utils/storage';
import {mergeWith} from 'lodash';

View File

@@ -56,7 +56,7 @@ export const useUserInfo = defineStore('userInfo', {
return new Promise((resolve, reject) => {
login(data)
.then(({data: res}) => {
// SPDM子应用使用
// SPDM CODE
Cookies.set('cid_user_id', res.user_id)
Session.setTenant(res.tenant_id);
// 存储token 信息
@@ -189,7 +189,7 @@ export const useUserInfo = defineStore('userInfo', {
async setUserInfos() {
await getUserInfo()
.then((res) => {
// SPDM子应用使用
// SPDM CODE
Cookies.set('cid_user_info', JSON.stringify(res.data.sysUser));
this.userInfos = {
user: res.data.sysUser,

View File

@@ -65,6 +65,7 @@
<h3>{{ currentData?.processName }}</h3>
</template>
<template #default>
<!-- SPDM CODE -->
<div class="spdm-approve-preview">
<div v-show="processRreview" class="spdm-content">
<SpdmView :processId="processInstanceId" @load="previewLoadFun" />
@@ -114,7 +115,7 @@ import FlowNodeFormat from '/@/views/flow/form/tools/FlowNodeFormatData.vue';
import other from '/@/utils/other';
import {queryMineTask, queryTask} from '/@/api/flow/task';
import {BasicTableProps, useTable} from '/@/hooks/table';
import SpdmView from '/@/spdm/views/preview.vue'
import SpdmView from '/@/spdm/views/preview.vue'; // SPDM CODE
const rightDrawerVisible = ref(false);
const showSearch = ref(true);

View File

@@ -9,6 +9,7 @@ import viteCompression from 'vite-plugin-compression';
// @ts-ignore
import {svgBuilder} from '/@/components/IconSelector/index';
import vueDevTools from 'vite-plugin-vue-devtools';
import { BASE_URL } from '/@/spdm/config'; // SPDM CODE
const pathResolve = (dir: string) => {
return resolve(__dirname, '.', dir);
@@ -122,6 +123,12 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
changeOrigin: true, // 是否修改请求头中的 Origin 字段
// rewrite: (path) => path.replace(/^\/file\/2D/, ''),
},
'/spdmApi': { // SPDM CODE
target: 'http://192.168.65.161:3000/api/', // 目标服务器地址
ws: true, // 是否启用 WebSocket
changeOrigin: true, // 是否修改请求头中的 Origin 字段
rewrite: (path) => path.replace(/^\/spdmApi/, ''),
},
},
},
build: {