token改成存sessionStorage里面(保证一个账号只能在一个浏览器的tab页保持登录状态,由此避免子系统的tab页多开)

dev_202412
yujialong 2 months ago
parent 33787eadf1
commit c8b0df3774
  1. 2
      src/App.vue
  2. 2
      src/components/quill/index.vue
  3. 4
      src/layouts/home/index.vue
  4. 2
      src/pages/account/redirect/index.vue
  5. 2
      src/pages/achievement/info/course.vue
  6. 2
      src/pages/achievement/info/project.vue
  7. 6
      src/pages/activity/details/index.vue
  8. 6
      src/pages/activity/list/index.vue
  9. 2
      src/pages/activity/manage/add/index.vue
  10. 2
      src/pages/activity/manage/manage/matchSignup.vue
  11. 2
      src/pages/activity/manage/manage/notice.vue
  12. 2
      src/pages/activity/manage/manage/noticeDetail.vue
  13. 2
      src/pages/assessment/add/index.vue
  14. 2
      src/pages/course/add/index.vue
  15. 2
      src/pages/course/contentSettings/index.vue
  16. 2
      src/pages/evaluation/list/index.vue
  17. 2
      src/pages/expSystem/list/index.vue
  18. 2
      src/pages/information/addarticle/index.vue
  19. 9
      src/pages/lesson/content/index.vue
  20. 2
      src/pages/match/add/step1.vue
  21. 2
      src/pages/match/add/step3.vue
  22. 4
      src/pages/match/manage/abnormalTeam.vue
  23. 2
      src/pages/match/manage/matchArchList.vue
  24. 2
      src/pages/match/manage/matchRank.vue
  25. 4
      src/pages/match/manage/matchSignup.vue
  26. 2
      src/pages/match/manage/notice.vue
  27. 2
      src/pages/match/manage/noticeDetail.vue
  28. 2
      src/pages/match/manage/otherArchList.vue
  29. 2
      src/pages/match/manage/theoryReport.vue
  30. 2
      src/pages/project/add/index.vue
  31. 2
      src/pages/project/list/index.vue
  32. 2
      src/pages/review/list/index.vue
  33. 2
      src/pages/screen/index.vue
  34. 2
      src/pages/setting/list/index.vue
  35. 2
      src/pages/setting/list/info.vue
  36. 4
      src/pages/station/preview/index.vue
  37. 2
      src/pages/student/list/index.vue
  38. 2
      src/pages/system/list/logo.vue
  39. 2
      src/pages/system/list/staff.vue
  40. 4
      src/pages/theoryExam/index.vue
  41. 2
      src/plugins/requests/index.js
  42. 7
      src/router/permission.js
  43. 9
      src/router/routes.js

@ -30,7 +30,7 @@ export default {
//vuexlocalStorage //vuexlocalStorage
window.addEventListener("beforeunload", () => { window.addEventListener("beforeunload", () => {
sessionStorage.removeItem('handelPermission') sessionStorage.removeItem('handelPermission')
util.local.get(Setting.tokenKey) && util.local.set(Setting.storeKey, this.$store.state); util.session.get(Setting.tokenKey) && util.local.set(Setting.storeKey, this.$store.state);
}); });
}, },
methods: { methods: {

@ -88,7 +88,7 @@ export default {
const that = this const that = this
return { return {
headers: { headers: {
token: util.local.get(Setting.tokenKey) token: util.session.get(Setting.tokenKey)
}, },
editorType: '0', editorType: '0',
mdVal: '', mdVal: '',

@ -160,7 +160,7 @@ export default {
}, },
// //
getLogStatus () { getLogStatus () {
util.local.get(Setting.tokenKey) && this.$get(this.api.logNotification, { util.session.get(Setting.tokenKey) && this.$get(this.api.logNotification, {
platformId: Setting.platformId platformId: Setting.platformId
}).then(({ notification }) => { }).then(({ notification }) => {
this.SET_LOG() // true this.SET_LOG() // true
@ -190,7 +190,7 @@ export default {
}; };
setInterval(() => { setInterval(() => {
if (util.local.get(Setting.tokenKey) && (new Date().getTime() - lastTime) > Setting.autoLogoutTime) { if (util.session.get(Setting.tokenKey) && (new Date().getTime() - lastTime) > Setting.autoLogoutTime) {
util.errorMsg("由于您已经有三个小时没有操作,系统自动登出,请重新登录。页面刷新到登录页。"); util.errorMsg("由于您已经有三个小时没有操作,系统自动登出,请重新登录。页面刷新到登录页。");
setTimeout(this.logout, 1500); setTimeout(this.logout, 1500);
} }

@ -24,7 +24,7 @@ export default {
]), ]),
setLogin () { setLogin () {
this.SET_FROM(true) this.SET_FROM(true)
Util.local.set(Setting.tokenKey, window.atob(decodeURI(this.token)), Setting.tokenExpires); Util.session.set(Setting.tokenKey, window.atob(decodeURI(this.token)))
this.getOss() this.getOss()
this.getRole() this.getRole()
this.queryCustomer() this.queryCustomer()

@ -220,7 +220,7 @@ export default {
errorAnalysis: [], errorAnalysis: [],
max: {}, max: {},
min: {}, min: {},
token: util.local.get(Setting.tokenKey), token: util.session.get(Setting.tokenKey),
detailVisible: false, detailVisible: false,
details: [], details: [],
multipleSelectionActivation: [], multipleSelectionActivation: [],

@ -206,7 +206,7 @@ export default {
errorAnalysis: {}, errorAnalysis: {},
max: {}, max: {},
min: {}, min: {},
token: Util.local.get(Setting.tokenKey), token: Util.session.get(Setting.tokenKey),
curTab: this.$route.query.curTab || '0', curTab: this.$route.query.curTab || '0',
tabs: [ tabs: [
{ {

@ -113,7 +113,7 @@ export default {
name: 'matchdetail', name: 'matchdetail',
data () { data () {
return { return {
token: util.local.get(Setting.tokenKey), token: util.session.get(Setting.tokenKey),
id: +this.$route.query.id, id: +this.$route.query.id,
end: '', end: '',
status: '', status: '',
@ -313,7 +313,7 @@ export default {
// python // python
toPython () { toPython () {
const form = this.curStage const form = this.curStage
let token = util.local.get(Setting.tokenKey); let token = util.session.get(Setting.tokenKey);
util.cookies.set('assessmentId', '', -1) util.cookies.set('assessmentId', '', -1)
util.cookies.set('startTime', '', -1) util.cookies.set('startTime', '', -1)
util.cookies.set('stopTime', '', -1) util.cookies.set('stopTime', '', -1)
@ -342,7 +342,7 @@ export default {
const { systemId, projectId, cid, stageId } = this.curStage const { systemId, projectId, cid, stageId } = this.curStage
const competitionId = form.id const competitionId = form.id
const teamId = form.competitionRegistration.teamId const teamId = form.competitionRegistration.teamId
let token = util.local.get(Setting.tokenKey); let token = util.session.get(Setting.tokenKey);
if (systemId == 11) { if (systemId == 11) {
// //
location.href = `${Setting.systemPath}/#/index/list?curriculumName=${this.curriculumName}&token=${token}&cid=${cid}&systemId=${systemId}&projectId=${projectId}&competitionId=${competitionId}&stageId=${stageId}&teamId=${teamId}&assessmentId=&classId=&stopTime=&test=true` location.href = `${Setting.systemPath}/#/index/list?curriculumName=${this.curriculumName}&token=${token}&cid=${cid}&systemId=${systemId}&projectId=${projectId}&competitionId=${competitionId}&stageId=${stageId}&teamId=${teamId}&assessmentId=&classId=&stopTime=&test=true`

@ -144,7 +144,7 @@ export default {
data () { data () {
return { return {
timer: null, timer: null,
token: util.local.get(Setting.tokenKey), token: util.session.get(Setting.tokenKey),
statusList: ["待报名", "取消报名", "马上报名", "报名截止", "已结束"], statusList: ["待报名", "取消报名", "马上报名", "报名截止", "已结束"],
endList: ["报名开始", "报名截止", "报名截止", "项目开始", "项目结束"], endList: ["报名开始", "报名截止", "报名截止", "项目开始", "项目结束"],
typeList: [ typeList: [
@ -398,7 +398,7 @@ export default {
// python // python
toPython () { toPython () {
const form = this.curItem.curStage const form = this.curItem.curStage
let token = util.local.get(Setting.tokenKey); let token = util.session.get(Setting.tokenKey);
util.cookies.set('assessmentId', '', -1) util.cookies.set('assessmentId', '', -1)
util.cookies.set('startTime', '', -1) util.cookies.set('startTime', '', -1)
util.cookies.set('stopTime', '', -1) util.cookies.set('stopTime', '', -1)
@ -427,7 +427,7 @@ export default {
const { systemId, projectId, cid, stageId } = form.curStage const { systemId, projectId, cid, stageId } = form.curStage
const competitionId = form.id const competitionId = form.id
const teamId = form.teamId const teamId = form.teamId
let token = util.local.get(Setting.tokenKey); let token = util.session.get(Setting.tokenKey);
if (systemId == 11) { if (systemId == 11) {
// //
location.href = `${Setting.systemPath}/#/index/list?curriculumName=${this.curriculumName}&token=${token}&cid=${cid}&systemId=${systemId}&projectId=${projectId}&competitionId=${competitionId}&stageId=${stageId}&teamId=${teamId}&assessmentId=&classId=&stopTime=&test=true` location.href = `${Setting.systemPath}/#/index/list?curriculumName=${this.curriculumName}&token=${token}&cid=${cid}&systemId=${systemId}&projectId=${projectId}&competitionId=${competitionId}&stageId=${stageId}&teamId=${teamId}&assessmentId=&classId=&stopTime=&test=true`

@ -183,7 +183,7 @@ export default {
return { return {
id: this.$route.query.id || '', id: this.$route.query.id || '',
headers: { headers: {
token: util.local.get(Setting.tokenKey) token: util.session.get(Setting.tokenKey)
}, },
scope: 0, scope: 0,
form: { form: {

@ -60,7 +60,7 @@ export default {
name: "matchSignup", name: "matchSignup",
data () { data () {
return { return {
token: util.local.get(Setting.tokenKey), token: util.session.get(Setting.tokenKey),
id: +this.$route.query.id, id: +this.$route.query.id,
isDisable: '', isDisable: '',
statusList: [ statusList: [

@ -47,7 +47,7 @@ import Setting from "@/setting";
export default { export default {
data () { data () {
return { return {
token: util.local.get(Setting.tokenKey), token: util.session.get(Setting.tokenKey),
id: this.$route.query.id, id: this.$route.query.id,
listData: [], listData: [],
multipleSelection: [], multipleSelection: [],

@ -55,7 +55,7 @@ export default {
data () { data () {
return { return {
headers: { headers: {
token: util.local.get(Setting.tokenKey) token: util.session.get(Setting.tokenKey)
}, },
form: { form: {
id: this.$route.query.id, id: this.$route.query.id,

@ -168,7 +168,7 @@ export default {
components: { StudentTree }, components: { StudentTree },
data () { data () {
return { return {
token: Util.local.get(Setting.tokenKey), token: Util.session.get(Setting.tokenKey),
founderKeys: { founderKeys: {
0: "系统", 0: "系统",
1: "老师" 1: "老师"

@ -132,7 +132,7 @@ export default {
const that = this const that = this
return { return {
headers: { headers: {
token: util.local.get(Setting.tokenKey) token: util.session.get(Setting.tokenKey)
}, },
isDetail: Boolean(this.$route.query.show), isDetail: Boolean(this.$route.query.show),
form: { form: {

@ -229,7 +229,7 @@ export default {
data () { data () {
return { return {
headers: { headers: {
token: util.local.get(Setting.tokenKey) token: util.session.get(Setting.tokenKey)
}, },
id: "", id: "",
originChapters: [], originChapters: [],

@ -201,7 +201,7 @@ export default {
data () { data () {
return { return {
headers: { headers: {
token: util.local.get(Setting.tokenKey) token: util.session.get(Setting.tokenKey)
}, },
questionsImport: this.api.questionsImport, questionsImport: this.api.questionsImport,
topicForm: { topicForm: {

@ -56,7 +56,7 @@ export default {
data () { data () {
return { return {
isPro: Setting.isPro, isPro: Setting.isPro,
token: util.local.get(Setting.tokenKey), token: util.session.get(Setting.tokenKey),
systemType: this.$route.query.systemType ? +this.$route.query.systemType : '', systemType: this.$route.query.systemType ? +this.$route.query.systemType : '',
keyword: this.$route.query.keyword || '', keyword: this.$route.query.keyword || '',
searchTimer: null, searchTimer: null,

@ -54,7 +54,7 @@ export default {
return { return {
id: this.$route.query.id, id: this.$route.query.id,
headers: { headers: {
token: util.local.get(Setting.tokenKey) token: util.session.get(Setting.tokenKey)
}, },
form: { form: {
columnId: +this.$route.query.columnId, columnId: +this.$route.query.columnId,

@ -61,7 +61,8 @@
<span class="name">{{ section.name }}</span> <span class="name">{{ section.name }}</span>
</div> </div>
<div class="section-actions"> <div class="section-actions">
<el-button type="text" @click="download(section)" v-auth="'/curriculum:内容设置:下载'">下载</el-button> <el-button type="text" :disabled="section.isDownload === 0" @click="download(section)"
v-auth="'/curriculum:内容设置:下载'">下载</el-button>
<el-button type="text" @click="preview(section)" v-auth="'/curriculum:内容设置:查看'">预览</el-button> <el-button type="text" @click="preview(section)" v-auth="'/curriculum:内容设置:查看'">预览</el-button>
<el-button type="text" @click="editSectionName(section)" <el-button type="text" @click="editSectionName(section)"
v-auth="'/curriculum:内容设置:修改小节名称'">修改资源名称</el-button> v-auth="'/curriculum:内容设置:修改小节名称'">修改资源名称</el-button>
@ -660,7 +661,7 @@ export default {
const { fileType, fileId } = row const { fileType, fileId } = row
// ppt // ppt
if (fileType === 'pptx') { if (fileType === 'pptx') {
this.downloadFile(row.originalFileName || row.name, row.fileUrl) Util.downloadFile(row.originalFileName || row.name, row.fileUrl)
} else if (fileId) { } else if (fileId) {
// //
this.$get(`${this.api.getPlayAuth}/${fileId}`).then(res => { this.$get(`${this.api.getPlayAuth}/${fileId}`).then(res => {
@ -672,11 +673,11 @@ export default {
playauth: res.playAuth, playauth: res.playAuth,
encryptType: 1 // encryptType: 1 //
}, player => { }, player => {
this.downloadFile(row.name, player._urls[0].Url) Util.downloadFile(row.name, player._urls[0].Url)
}) })
}).catch(res => { }) }).catch(res => { })
} else { } else {
this.downloadFile(row.name + '.' + row.fileType, row.fileUrl) Util.downloadFile(row.name + '.' + row.fileType, row.fileUrl)
} }
}, },
preview (row) { preview (row) {

@ -173,7 +173,7 @@ export default {
const that = this const that = this
return { return {
headers: { headers: {
token: Util.local.get(Setting.tokenKey) token: Util.session.get(Setting.tokenKey)
}, },
form: { form: {
id: this.$route.query.id || '', id: this.$route.query.id || '',

@ -122,7 +122,7 @@ export default {
data () { data () {
return { return {
headers: { headers: {
token: Util.local.get(Setting.tokenKey) token: Util.session.get(Setting.tokenKey)
}, },
id: this.$route.query.id, id: this.$route.query.id,
updateTime: 0, updateTime: 0,

@ -153,7 +153,7 @@ import Setting from "@/setting";
export default { export default {
data () { data () {
return { return {
token: util.local.get(Setting.tokenKey), token: util.session.get(Setting.tokenKey),
id: +this.$route.query.id, id: +this.$route.query.id,
info: { info: {
completeCompetitionSetup: { completeCompetitionSetup: {
@ -238,7 +238,7 @@ export default {
uploadTips: '', uploadTips: '',
exportCode: '', exportCode: '',
headers: { headers: {
token: util.local.get(Setting.tokenKey) token: util.session.get(Setting.tokenKey)
}, },
uploading: false, uploading: false,
isBackstage: 0, isBackstage: 0,

@ -163,7 +163,7 @@ export default {
uploading: false, uploading: false,
faildData: null, faildData: null,
headers: { headers: {
token: Util.local.get(Setting.tokenKey) token: Util.session.get(Setting.tokenKey)
}, },
statData: { statData: {
avgScore: 0, avgScore: 0,

@ -200,7 +200,7 @@ export default {
} }
], ],
headers: { headers: {
token: Util.local.get(Setting.tokenKey) token: Util.session.get(Setting.tokenKey)
}, },
active: '', active: '',
grades: [], grades: [],

@ -205,7 +205,7 @@ export default {
name: "matchSignup", name: "matchSignup",
data () { data () {
return { return {
token: Util.local.get(Setting.tokenKey), token: Util.session.get(Setting.tokenKey),
schoolId: this.$store.state.user.schoolId, schoolId: this.$store.state.user.schoolId,
id: +this.$route.query.id, id: +this.$route.query.id,
info: { info: {
@ -292,7 +292,7 @@ export default {
uploadTips: '', uploadTips: '',
exportCode: '', exportCode: '',
headers: { headers: {
token: Util.local.get(Setting.tokenKey) token: Util.session.get(Setting.tokenKey)
}, },
diffSchool: false, diffSchool: false,
uploading: false, uploading: false,

@ -48,7 +48,7 @@ import Setting from "@/setting";
export default { export default {
data () { data () {
return { return {
token: util.local.get(Setting.tokenKey), token: util.session.get(Setting.tokenKey),
id: this.$route.query.id, id: this.$route.query.id,
keyword: "", keyword: "",
listData: [], listData: [],

@ -57,7 +57,7 @@ export default {
data () { data () {
return { return {
headers: { headers: {
token: util.local.get(Setting.tokenKey) token: util.session.get(Setting.tokenKey)
}, },
form: { form: {
id: this.$route.query.id, id: this.$route.query.id,

@ -203,7 +203,7 @@ export default {
uploading: false, uploading: false,
faildData: null, faildData: null,
headers: { headers: {
token: util.local.get(Setting.tokenKey) token: util.session.get(Setting.tokenKey)
}, },
statData: {}, statData: {},
tabs: ['成绩列表', '文件列表'], tabs: ['成绩列表', '文件列表'],

@ -271,7 +271,7 @@ export default {
numToLetter: Util.numToLetter, numToLetter: Util.numToLetter,
arabicToChinese: Util.arabicToChinese, arabicToChinese: Util.arabicToChinese,
reportId: this.$route.query.reportId, reportId: this.$route.query.reportId,
token: Util.local.get(Setting.tokenKey), token: Util.session.get(Setting.tokenKey),
title: "实验报告", title: "实验报告",
form: { form: {
className: "", className: "",

@ -197,7 +197,7 @@ export default {
systemList: [], systemList: [],
mallIds: [], mallIds: [],
curs: [], curs: [],
token: btoa(util.local.get(Setting.tokenKey)), token: btoa(util.session.get(Setting.tokenKey)),
isDetail: Boolean(this.$route.query.show), isDetail: Boolean(this.$route.query.show),
projectManage: { projectManage: {

@ -150,7 +150,7 @@ import qs from 'qs'
export default { export default {
data () { data () {
return { return {
token: util.local.get(Setting.tokenKey), token: util.session.get(Setting.tokenKey),
fromAss: Boolean(this.$route.query.show), // fromAss: Boolean(this.$route.query.show), //
lc: [11, 12, 19], lc: [11, 12, 19],
cid: [this.$route.query.mallId ? +this.$route.query.mallId : '', this.$route.query.cid ? +this.$route.query.cid : ''], cid: [this.$route.query.mallId ? +this.$route.query.mallId : '', this.$route.query.cid ? +this.$route.query.cid : ''],

@ -11,7 +11,7 @@ export default {
data () { data () {
return { return {
url: '', url: '',
token: Util.local.get(Setting.tokenKey), token: Util.session.get(Setting.tokenKey),
}; };
}, },
mounted () { mounted () {

@ -354,7 +354,7 @@ import Setting from '@/setting'
export default { export default {
data () { data () {
return { return {
token: Util.local.get(Setting.tokenKey), token: Util.session.get(Setting.tokenKey),
time: 2, time: 2,
times: [ times: [
{ {

@ -44,7 +44,7 @@ import util from '@/libs/util'
export default { export default {
data () { data () {
return { return {
token: util.local.get(Setting.tokenKey), token: util.session.get(Setting.tokenKey),
typeList: [ typeList: [
{ {
index: '1', index: '1',

@ -280,7 +280,7 @@ export default {
editUsername: '', editUsername: '',
accountVisible: false, accountVisible: false,
updateTime: 0, updateTime: 0,
token: Util.local.get(Setting.tokenKey), token: Util.session.get(Setting.tokenKey),
form: { form: {
userName: "", userName: "",
name: "", name: "",

@ -913,7 +913,7 @@ export default {
// python // python
toPython (projectId) { toPython (projectId) {
const id = this.systemIds const id = this.systemIds
let token = Util.local.get(Setting.tokenKey); let token = Util.session.get(Setting.tokenKey);
Util.cookies.set('assessmentId', '', -1) Util.cookies.set('assessmentId', '', -1)
Util.cookies.set('startTime', '', -1) Util.cookies.set('startTime', '', -1)
Util.cookies.set('stopTime', '', -1) Util.cookies.set('stopTime', '', -1)
@ -951,7 +951,7 @@ export default {
} }
const { systemId } = curProject const { systemId } = curProject
let token = Util.local.get(Setting.tokenKey); let token = Util.session.get(Setting.tokenKey);
this.third = curProject.type === 2 ? (curProject.systemId === 28 ? 'low' : 'ai') : '' this.third = curProject.type === 2 ? (curProject.systemId === 28 ? 'low' : 'ai') : ''
if (systemId == 11) { if (systemId == 11) {
// //

@ -335,7 +335,7 @@ export default {
uploadFaild: false, uploadFaild: false,
exportCode: "", exportCode: "",
headers: { headers: {
token: Util.local.get(Setting.tokenKey) token: Util.session.get(Setting.tokenKey)
}, },
disableds: false, disableds: false,
submiting: false, // submiting: false, //

@ -53,7 +53,7 @@ export default {
data () { data () {
return { return {
headers: { headers: {
token: util.local.get(Setting.tokenKey) token: util.session.get(Setting.tokenKey)
}, },
coverUrl: "", coverUrl: "",
uploadList: [], uploadList: [],

@ -142,7 +142,7 @@ export default {
return { return {
exportCode: "", exportCode: "",
headers: { headers: {
token: Util.local.get(Setting.tokenKey) token: Util.session.get(Setting.tokenKey)
}, },
isDetail: false, isDetail: false,
isAdd: false, isAdd: false,

@ -173,9 +173,9 @@ export default {
numToLetter: Util.numToLetter, numToLetter: Util.numToLetter,
arabicToChinese: Util.arabicToChinese, arabicToChinese: Util.arabicToChinese,
headers: { headers: {
token: Util.local.get(Setting.tokenKey) token: Util.session.get(Setting.tokenKey)
}, },
token: Util.local.get(Setting.tokenKey), token: Util.session.get(Setting.tokenKey),
paperId: +this.$route.query.paperId, // id paperId: +this.$route.query.paperId, // id
cid: +this.$route.query.cid, cid: +this.$route.query.cid,
mallId: +this.$route.query.mallId || '', mallId: +this.$route.query.mallId || '',

@ -13,7 +13,7 @@ service.defaults.headers.post["Content-Type"] = "application/json;charset=UTF-8"
// 请求拦截器 // 请求拦截器
service.interceptors.request.use(config => { service.interceptors.request.use(config => {
let token = Util.local.get(Setting.tokenKey); let token = Util.session.get(Setting.tokenKey);
if (token) config.headers.token = token if (token) config.headers.token = token
return config; return config;
}, err => { }, err => {

@ -1,13 +1,14 @@
import router from "./index"; import router from "./index";
import Setting from "@/setting"; import Setting from "@/setting";
import util from "@/libs/util"; import util from "@/libs/util";
import store from '@/store'
const whiteList = Setting.whiteList // 白名单 const whiteList = Setting.whiteList // 白名单
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
document.title = Setting.titleSuffix; document.title = Setting.titleSuffix
const role = util.local.get(Setting.tokenKey); const role = util.session.get(Setting.tokenKey)
if (!role && !whiteList.includes(to.path)) { if (!role && !whiteList.includes(to.path)) {
next('/login') store.dispatch('user/logout')
} else { } else {
next() next()
} }

@ -28,15 +28,6 @@ const frameIn = [
*/ */
const frameOut = [ const frameOut = [
// 登录
{
path: "/login",
name: "login",
meta: {
title: "登录"
},
component: () => import("@/pages/account/login")
},
{ {
path: "/redirect", path: "/redirect",
name: "redirect", name: "redirect",

Loading…
Cancel
Save