import { ref } from 'vue';
|
|
import { useBaseStore } from '#/store';
|
import { TMS_DIC, labelOfDic, loadTmsDic, type TmsDicOpt } from '#/views/x/tms/shared/dic';
|
|
/** 我的试卷「未开始」为前端态,字典 tmsExamStatus 不含该项 */
|
const NOT_STARTED: TmsDicOpt = { id: 'notStarted', enCode: 'notStarted', fullName: '未开始' };
|
|
const STATUS_COLOR: Record<string, string> = {
|
notStarted: '#8c8c8c',
|
doing: '#1890ff',
|
submitted: '#52c41a',
|
cancelled: '#ff4d4f',
|
};
|
|
export const MY_PAPER_STATUS_OPTIONS = ref<TmsDicOpt[]>([NOT_STARTED]);
|
export const PASS_FLAG_OPTIONS = ref<TmsDicOpt[]>([]);
|
|
export async function loadOnlineExamDics() {
|
const baseStore = useBaseStore();
|
const [examStatus, passFlag] = await Promise.all([
|
loadTmsDic(baseStore, TMS_DIC.examStatus),
|
loadTmsDic(baseStore, TMS_DIC.passFlag),
|
]);
|
const rest = examStatus.filter((x) => (x.enCode || x.id) !== 'notStarted');
|
MY_PAPER_STATUS_OPTIONS.value = [NOT_STARTED, ...rest];
|
PASS_FLAG_OPTIONS.value = passFlag;
|
}
|
|
export function labelOfMyPaperStatus(v?: string) {
|
return labelOfDic(MY_PAPER_STATUS_OPTIONS.value, v);
|
}
|
|
export function colorOfMyPaperStatus(v?: string) {
|
return (v && STATUS_COLOR[v]) || undefined;
|
}
|
|
export function labelOfPassFlag(v?: string | null) {
|
if (v == null || v === '') return '-';
|
const code = String(v);
|
if (code === '1') return '合格';
|
if (code === '0') return '不合格';
|
return labelOfDic(PASS_FLAG_OPTIONS.value, code);
|
}
|
|
export function colorOfPassFlag(v?: string | null) {
|
if (v === '1') return '#52c41a';
|
if (v === '0') return '#ff4d4f';
|
return undefined;
|
}
|
|
export function labelOfGradeStatus(v?: string | null) {
|
if (!v) return '-';
|
if (v === 'auto') return '自动阅卷';
|
if (v === 'pending') return '待阅卷';
|
if (v === 'graded') return '已阅卷';
|
return v;
|
}
|