123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- import { examPropCount } from "@/api/invigilation";
- const paramInfo = {
- all: {
- name: "全部应考",
- param: "allCount",
- desc: "参加考试的全部考生。",
- icon: "users",
- unit: "人",
- },
- finish: {
- name: "完成率",
- param: "completionRate",
- desc: "“已完成”科次数量占应考科次数量的百分比。",
- icon: "rate",
- unit: "%",
- },
- prepare: {
- name: "已待考",
- param: "prepareCount",
- desc: "已进入待考界面等待开考的考生。",
- unit: "人",
- },
- exam: {
- name: "考试中",
- param: "examCount",
- desc: "正在答题的考生。",
- unit: "人",
- },
- complete: {
- name: "已交卷",
- param: "alreadyComplete",
- desc: "某科次的某次考试已完成“交卷”。",
- unit: "人",
- },
- trouble: {
- name: "通讯故障",
- param: "clientWebsocketStatusCount",
- desc: "考生端出现断网、断电、软硬件故障等异常导致考生端与监考端无法正常连接的考生。",
- unit: "人",
- },
- unfinish: {
- name: "未参加考试",
- param: "notComplete",
- desc: "某科次完成“交卷”的考试次数为0。",
- unit: "人",
- },
- };
- const types = {
- trouble: ["all", "prepare", "exam", "complete", "unfinish"],
- complete: ["all", "prepare", "exam", "complete", "unfinish"],
- progress: ["all", "prepare", "exam", "complete", "unfinish"],
- };
- // const types = {
- // trouble: ["all", "prepare", "exam", "trouble", "unfinish"],
- // complete: ["all", "prepare", "exam", "complete", "unfinish"],
- // progress: ["all", "finish", "prepare", "unfinish"],
- // };
- export default {
- name: "summary-line",
- props: {
- examId: {
- type: String,
- },
- dataType: {
- type: String,
- required: true,
- validator: (val) => {
- return ["trouble", "complete", "progress"].includes(val);
- },
- },
- },
- // mounted() {
- // this.initData();
- // },
- watch: {
- examId: {
- immediate: true,
- handler() {
- this.initData();
- },
- },
- },
- data() {
- return {
- paramList: [],
- examPropData: {},
- };
- },
- methods: {
- async initData() {
- if (!this.examId) return;
- const res = await examPropCount(this.examId).catch(() => {});
- this.examPropData = (res && res.data && res.data.data) || {};
- if (this.examPropData["completionRate"])
- this.examPropData["completionRate"] = Math.round(
- this.examPropData["completionRate"] * 100
- );
- this.paramList = types[this.dataType].map((item) => {
- let info = paramInfo[item];
- return {
- ...info,
- content: `${info.name}:${info.desc}`,
- };
- });
- },
- },
- };
|