Files

175 lines
5.3 KiB
JavaScript
Raw Normal View History

2022-05-05 19:48:27 +08:00
import { createWebHistory, createRouter } from "vue-router";
import store from "@/store";
2022-05-18 17:25:43 +08:00
import _ from "lodash";
import cryptoJs from "crypto-js";
2022-04-29 13:22:04 +08:00
2022-05-18 17:25:43 +08:00
import {
whitelistJoinMeeting,
registerJoinUser,
visitorJoinUser,
2022-05-26 17:33:16 +08:00
panelistJoinMeeting,
2022-05-18 17:25:43 +08:00
} from "@/api/meeting";
2022-04-29 13:22:04 +08:00
const router = createRouter({
2022-05-05 19:48:27 +08:00
history: createWebHistory(),
routes: [
{
path: "/appointment/:meetingId",
name: "Appointment",
component: () => import("@/views/appointment.vue"),
},
{
path: "/verify/:meetingId",
name: "Verify",
component: () => import("@/views/verify.vue"),
},
2022-05-26 17:33:16 +08:00
{
path: "/panelist-verify/:meetingId",
name: "PanelistVerify",
component: () => import("@/views/panelist-verify.vue"),
},
2022-05-05 19:48:27 +08:00
{
path: "/meeting/:meetingId",
name: "Meeting",
2022-05-30 00:39:29 +08:00
component: () => import("@/views/meeting_new.vue"),
2022-05-05 19:48:27 +08:00
},
2022-05-26 17:33:16 +08:00
{
path: "/panelist/:meetingId",
name: "Panelist",
component: () => import("@/views/meeting.vue"),
},
2022-05-18 17:25:43 +08:00
// {
// path: "/host/:meetingId/:hostinfo",
// name: "Host",
// component: () => import("@/views/host.vue"),
// },
{
2022-05-26 17:33:16 +08:00
path: "/host/:meetingId/:createEmail/:pwd/:username/:nickname",
2022-05-18 17:25:43 +08:00
name: "Host",
2022-05-26 17:33:16 +08:00
component: () => import("@/views/host_new.vue"),
2022-05-18 17:25:43 +08:00
},
2022-05-05 19:48:27 +08:00
{
path: "/:pathMatch(.*)*",
name: "NotFound",
component: () => import("@/views/NotFound.vue"),
},
],
});
router.beforeEach(async (to) => {
// 判断会议信息是否存在,不存在则请求数据
if (!store.state.meeting.id && to.params.meetingId) {
await store.dispatch("getMeetingInfo", to.params.meetingId);
}
2022-05-18 17:25:43 +08:00
// 前往主持人页面
if (to.name === "Host") {
console.log("host");
// const bytes = cryptoJs.AES.decrypt(to.params.hostinfo, "secret");
// const decryptedData = JSON.parse(bytes.toString(cryptoJs.enc.Utf8));
store.commit("setJoinUser", {
nickname: to.params.nickname,
username: to.params.username,
2022-05-26 17:33:16 +08:00
email: to.params.createEmail,
2022-05-18 17:25:43 +08:00
});
store.commit("setPassword", to.params.pwd);
return true;
}
2022-05-05 19:48:27 +08:00
// 如果要前往参会页面
if (to.name === "Meeting") {
2022-05-18 17:25:43 +08:00
// 如果要去的页面会议号于 vuex中的不一样则清除数据
if (to.params.meetingId !== store.state.joinUser.meetingId) {
store.commit("setJoinUser", {});
}
// 如果参会方式发生更改,则清除数据
2022-05-25 17:31:14 +08:00
if (
store.state.joinType &&
store.state.meeting.joinType !== store.state.joinType
) {
2022-05-18 17:25:43 +08:00
store.commit("setJoinUser", {});
store.commit("setJoinType", store.state.meeting.joinType);
return `/verify/${to.params.meetingId}`;
}
2022-05-05 19:48:27 +08:00
if (store.state.meeting.joinType === "1") {
2022-05-18 17:25:43 +08:00
// 如果是白名单模式
2022-05-05 19:48:27 +08:00
if (store.state.joinUser.icCard) {
// 检测输入的IC卡号是否在白名单范围内是则放行否则返回原地址
try {
2022-05-29 13:30:19 +08:00
const { meetingPassword, email } = await whitelistJoinMeeting({
2022-05-05 19:48:27 +08:00
meetingId: to.params.meetingId,
icCard: store.state.joinUser.icCard,
});
2022-05-29 13:30:19 +08:00
store.commit("setJoinUser", {
...store.state.joinUser,
email: email.email,
token: email.token,
});
2022-05-26 17:33:16 +08:00
store.commit("setPassword", meetingPassword);
2022-05-05 19:48:27 +08:00
return true;
} catch (error) {
store.commit("setJoinUser", {});
return `/verify/${to.params.meetingId}`;
}
} else {
store.commit("setJoinUser", {});
return `/verify/${to.params.meetingId}`;
}
} else {
2022-05-18 17:25:43 +08:00
if (_.isEmpty(store.state.joinUser)) {
2022-05-25 17:31:14 +08:00
console.log("error");
2022-05-05 19:48:27 +08:00
return `/verify/${to.params.meetingId}`;
} else {
2022-05-18 17:25:43 +08:00
if (store.state.meeting.joinType === "2") {
2022-05-26 17:33:16 +08:00
const { meetingPassword, email } = await registerJoinUser(
store.state.joinUser
);
store.commit("setJoinUser", {
...store.state.joinUser,
email: email.email,
token: email.token,
});
store.commit("setPassword", meetingPassword);
2022-05-18 17:25:43 +08:00
} else {
2022-05-29 13:30:19 +08:00
const { meetingPassword, email } = await visitorJoinUser(
2022-05-26 17:33:16 +08:00
store.state.joinUser
);
2022-05-29 13:30:19 +08:00
store.commit("setJoinUser", {
...store.state.joinUser,
email: email.email,
token: email.token,
});
2022-05-26 17:33:16 +08:00
store.commit("setPassword", meetingPassword);
2022-05-18 17:25:43 +08:00
}
2022-05-05 19:48:27 +08:00
return true;
}
}
}
2022-05-26 17:33:16 +08:00
if (to.name === "Panelist") {
// 如果要去的页面会议号于 vuex中的不一样则清除数据
if (to.params.meetingId !== store.state.joinUser.meetingId) {
store.commit("setJoinUser", {});
}
if (store.state.joinUser.icCard) {
try {
const { meetingPassword, email } = await panelistJoinMeeting({
meetingId: to.params.meetingId,
icCard: store.state.joinUser.icCard,
});
store.commit("setJoinUser", {
...store.state.joinUser,
email: email.email,
token: email.token,
});
store.commit("setPassword", meetingPassword);
return true;
} catch (error) {
store.commit("setJoinUser", {});
return `/panelist-verify/${to.params.meetingId}`;
}
} else {
store.commit("setJoinUser", {});
return `/panelist-verify/${to.params.meetingId}`;
}
}
2022-04-29 13:22:04 +08:00
});
export default router;