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
| import type { TrainModeItem, TrainModePageQuery } from './types';
|
| function delay<T>(data: T, ms = 180): Promise<T> {
| return new Promise((resolve) => setTimeout(() => resolve(data), ms));
| }
|
| const store: TrainModeItem[] = [
| {
| id: 'tms_mode_onsite',
| modeCode: 'onsite',
| modeName: '集中授课',
| signRule: 'scan',
| allowGuestSign: '1',
| sameDayRequired: '1',
| placeRequired: '1',
| sortNo: 1,
| enabled: '1',
| remark: '仅扫码;允许名单外签到;起止同一天;地点必填',
| },
| {
| id: 'tms_mode_practice',
| modeCode: 'practice',
| modeName: '操作授课',
| signRule: 'scan',
| allowGuestSign: '0',
| sameDayRequired: '1',
| placeRequired: '1',
| sortNo: 2,
| enabled: '1',
| remark: '仅扫码;不允许名单外;起止同一天;地点必填',
| },
| {
| id: 'tms_mode_online',
| modeCode: 'online',
| modeName: '在线学习',
| signRule: 'both',
| allowGuestSign: '0',
| sameDayRequired: '0',
| placeRequired: '0',
| sortNo: 3,
| enabled: '1',
| remark: '扫码+在线;地点非必填',
| },
| ];
|
| export function mockQueryTrainModes(params: TrainModePageQuery = {}) {
| 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),
| );
| }
| list.sort((a, b) => (a.sortNo || 0) - (b.sortNo || 0));
| const start = (currentPage - 1) * pageSize;
| return delay({
| list: list.slice(start, start + pageSize),
| pagination: { total: list.length, currentPage, pageSize },
| });
| }
|
| export async function mockGetTrainMode(id: string) {
| await delay(null);
| const row = store.find((x) => x.id === id);
| if (!row) throw new Error('培训方式不存在');
| return { ...row };
| }
|
| export async function mockSaveTrainMode(data: Partial<TrainModeItem> & { 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: TrainModeItem = {
| id: `tm_${Date.now()}`,
| modeCode: data.modeCode,
| modeName: data.modeName || data.modeCode,
| signRule: (data.signRule as any) || 'both',
| allowGuestSign: (data.allowGuestSign as any) || '0',
| sameDayRequired: (data.sameDayRequired as any) || '0',
| placeRequired: (data.placeRequired as any) || '0',
| sortNo: data.sortNo ?? store.length + 1,
| enabled: (data.enabled as any) || '1',
| remark: data.remark || '',
| };
| store.push(row);
| return row;
| }
|
| export async function mockSetTrainModeEnabled(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 mockDeleteTrainMode(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;
| }
|
|