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-06-13 17:33:02 +08:00
|
|
|
|
superviseJoinMeeting,
|
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 17:33:59 +08:00
|
|
|
|
component: () => import("@/views/meeting.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-30 17:33:59 +08:00
|
|
|
|
component: () => import("@/views/meeting.vue"),
|
2022-05-18 17:25:43 +08:00
|
|
|
|
},
|
2022-06-13 17:33:02 +08:00
|
|
|
|
{
|
|
|
|
|
path: "/supervisor/:meetingId/:username",
|
|
|
|
|
name: "Supervisor",
|
|
|
|
|
component: () => import("@/views/meeting.vue"),
|
|
|
|
|
},
|
2022-05-05 19:48:27 +08:00
|
|
|
|
{
|
|
|
|
|
path: "/:pathMatch(.*)*",
|
|
|
|
|
name: "NotFound",
|
|
|
|
|
component: () => import("@/views/NotFound.vue"),
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
router.beforeEach(async (to) => {
|
2022-06-09 10:18:09 +08:00
|
|
|
|
await store.dispatch("getMeetingSettings");
|
2022-05-05 19:48:27 +08:00
|
|
|
|
// 判断会议信息是否存在,不存在则请求数据
|
|
|
|
|
if (!store.state.meeting.id && to.params.meetingId) {
|
|
|
|
|
await store.dispatch("getMeetingInfo", to.params.meetingId);
|
|
|
|
|
}
|
2022-06-14 17:35:36 +08:00
|
|
|
|
// 当路由类型(host,panelist,meeting,supervisor)改变时,清空用户信息、消息列表
|
|
|
|
|
// if (store.state.routeType !== to.name) {
|
|
|
|
|
// store.commit("setMessagesList", []);
|
|
|
|
|
// store.commit("setJoinUser", {});
|
|
|
|
|
// }
|
|
|
|
|
// store.commit("setRouteType", to.name);
|
2022-06-15 09:16:57 +08:00
|
|
|
|
if (["Meeting", "Host", "Panelist", "Supervisor"].includes(to.params)) {
|
|
|
|
|
store.commit("setJoinRole", to.name);
|
|
|
|
|
}
|
2022-06-14 17:35:36 +08:00
|
|
|
|
// 如果前往页面的会议id于之前的不同,就清除用户信息、消息列表
|
|
|
|
|
if (to.params.meetingId !== store.state.joinUser.meetingId) {
|
|
|
|
|
store.commit("setJoinUser", {});
|
|
|
|
|
store.commit("setMessagesList", []);
|
|
|
|
|
}
|
2022-05-18 17:25:43 +08:00
|
|
|
|
// 前往主持人页面
|
|
|
|
|
if (to.name === "Host") {
|
2022-06-14 17:35:36 +08:00
|
|
|
|
// console.log("host");
|
|
|
|
|
// if (to.params.meetingId !== store.state.joinUser.meetingId) {
|
|
|
|
|
// store.commit("setMessagesList", []);
|
|
|
|
|
// }
|
2022-05-18 17:25:43 +08:00
|
|
|
|
store.commit("setJoinUser", {
|
2022-06-10 17:55:03 +08:00
|
|
|
|
meetingId: to.params.meetingId,
|
2022-05-18 17:25:43 +08:00
|
|
|
|
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
|
|
|
|
// 如果要前往参会页面
|
2022-06-13 17:33:02 +08:00
|
|
|
|
else if (to.name === "Meeting") {
|
2022-05-18 17:25:43 +08:00
|
|
|
|
// 如果要去的页面会议号于 vuex中的不一样,则清除数据
|
2022-06-14 17:35:36 +08:00
|
|
|
|
// if (to.params.meetingId !== store.state.joinUser.meetingId) {
|
|
|
|
|
// store.commit("setJoinUser", {});
|
|
|
|
|
// store.commit("setMessagesList", []);
|
|
|
|
|
// }
|
2022-05-18 17:25:43 +08:00
|
|
|
|
// 如果参会方式发生更改,则清除数据
|
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-06-13 17:33:02 +08:00
|
|
|
|
} else if (to.name === "Panelist") {
|
2022-05-26 17:33:16 +08:00
|
|
|
|
// 如果要去的页面会议号于 vuex中的不一样,则清除数据
|
2022-06-14 17:35:36 +08:00
|
|
|
|
// if (to.params.meetingId !== store.state.joinUser.meetingId) {
|
|
|
|
|
// store.commit("setJoinUser", {});
|
|
|
|
|
// store.commit("setMessagesList", []);
|
|
|
|
|
// }
|
2022-05-26 17:33:16 +08:00
|
|
|
|
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-06-13 17:33:02 +08:00
|
|
|
|
} else if (to.name === "Supervisor") {
|
|
|
|
|
// 监管参会
|
|
|
|
|
if (to.params.meetingId !== store.state.joinUser.meetingId) {
|
|
|
|
|
store.commit("setMessagesList", []);
|
|
|
|
|
}
|
|
|
|
|
const { email, meetingPassword } = await superviseJoinMeeting({
|
|
|
|
|
icCard: to.params.username,
|
|
|
|
|
meetingId: to.params.meetingId,
|
|
|
|
|
});
|
|
|
|
|
store.commit("setJoinUser", {
|
|
|
|
|
meetingId: to.params.meetingId,
|
|
|
|
|
icCard: to.params.username,
|
|
|
|
|
email: email.email,
|
|
|
|
|
token: email.token,
|
|
|
|
|
});
|
|
|
|
|
store.commit("setPassword", meetingPassword);
|
|
|
|
|
return true;
|
2022-05-26 17:33:16 +08:00
|
|
|
|
}
|
2022-04-29 13:22:04 +08:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
export default router;
|