liuyu
4 小时以前 82a74ba0402ab546ba524d23ce62198c4d00d2f7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
import type { EvalModeItem, EvalModePageQuery } from './types';
 
function delay<T>(data: T, ms = 180): Promise<T> {
  return new Promise((resolve) => setTimeout(() => resolve(data), ms));
}
 
const store: EvalModeItem[] = [
  {
    id: 'tms_eval_quiz',
    modeCode: 'quiz',
    modeName: '提问',
    needPaper: '0',
    needQuiz: '1',
    needPractice: '0',
    enabled: '1',
    remark: '现场提问考核',
  },
  {
    id: 'tms_eval_practice',
    modeCode: 'practice',
    modeName: '现场操作',
    needPaper: '0',
    needQuiz: '0',
    needPractice: '1',
    enabled: '1',
    remark: '实操评分',
  },
  {
    id: 'tms_eval_exam',
    modeCode: 'exam',
    modeName: '在线考试',
    needPaper: '1',
    needQuiz: '0',
    needPractice: '0',
    enabled: '1',
    remark: '发布任务时生成在线考试待考行',
  },
  {
    id: 'tms_eval_none',
    modeCode: 'none',
    modeName: '无需考核',
    needPaper: '0',
    needQuiz: '0',
    needPractice: '0',
    enabled: '1',
    remark: '',
  },
];
 
export function mockQueryEvalModes(params: EvalModePageQuery = {}) {
  const { currentPage = 1, pageSize = 20, keyword = '', enabled } = params;
  let list = [...store];
  if (enabled) list = list.filter((x) => x.enabled === enabled);
  if (keyword) {
    const k = keyword.trim().toLowerCase();
    list = list.filter(
      (x) => x.modeCode.toLowerCase().includes(k) || x.modeName.toLowerCase().includes(k),
    );
  }
  const start = (currentPage - 1) * pageSize;
  return delay({
    list: list.slice(start, start + pageSize),
    pagination: { total: list.length, currentPage, pageSize },
  });
}
 
export async function mockGetEvalMode(id: string) {
  await delay(null);
  const row = store.find((x) => x.id === id);
  if (!row) throw new Error('考核方式不存在');
  return { ...row };
}
 
export async function mockSaveEvalMode(data: Partial<EvalModeItem> & { id?: string }) {
  await delay(null);
  if (data.id) {
    const row = store.find((x) => x.id === data.id);
    if (!row) throw new Error('考核方式不存在');
    if (data.modeCode && data.modeCode !== row.modeCode) {
      if (store.some((x) => x.modeCode === data.modeCode && x.id !== data.id)) {
        throw new Error('方式编码已存在');
      }
    }
    Object.assign(row, data);
    return row;
  }
  if (!data.modeCode) throw new Error('请填写方式编码');
  if (store.some((x) => x.modeCode === data.modeCode)) throw new Error('方式编码已存在');
  const row: EvalModeItem = {
    id: `em_${Date.now()}`,
    modeCode: data.modeCode,
    modeName: data.modeName || data.modeCode,
    needPaper: (data.needPaper as any) || '0',
    needQuiz: (data.needQuiz as any) || '0',
    needPractice: (data.needPractice as any) || '0',
    enabled: (data.enabled as any) || '1',
    remark: data.remark || '',
  };
  store.push(row);
  return row;
}
 
export async function mockSetEvalModeEnabled(id: string, enabled: '0' | '1') {
  await delay(null);
  const row = store.find((x) => x.id === id);
  if (!row) throw new Error('考核方式不存在');
  row.enabled = enabled;
  return row;
}
 
export async function mockDeleteEvalMode(id: string) {
  await delay(null);
  const idx = store.findIndex((x) => x.id === id);
  if (idx < 0) throw new Error('考核方式不存在');
  store.splice(idx, 1);
  return true;
}