liu
2026-09-29 7a6351a1fa5fc6e67b55c475bcd253d6d3e5d68f
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
/**
 * 企业微信模块共享常量
 *
 * 值与后端枚举一一对应,改动时两边必须同步:
 * - WxCpPushScopeEnum:0全员 1指定部门 2指定成员
 * - WxCpActivityStatusEnum:0草稿 1已发布 2已结束 3已取消
 * - WxCpNoticeStatusEnum:0草稿 1已发布 2已撤回
 * - WxCpSignupStatusEnum:0已报名 1已取消 2已签到
 */
 
/** 推送范围 */
export const PUSH_SCOPE = {
  ALL: 0,
  PARTY: 1,
  USER: 2,
} as const;
 
/** 推送范围选项 */
export const PUSH_SCOPE_OPTIONS = [
  { label: '全员', value: PUSH_SCOPE.ALL },
  { label: '指定部门', value: PUSH_SCOPE.PARTY },
  { label: '指定成员', value: PUSH_SCOPE.USER },
];
 
/** 推送状态(活动与通知共用) */
export const PUSH_STATUS_OPTIONS = [
  { label: '未推送', value: 0 },
  { label: '已推送', value: 1 },
];
 
/** 活动状态 */
export const ACTIVITY_STATUS = {
  DRAFT: 0,
  PUBLISHED: 1,
  FINISHED: 2,
  CANCELED: 3,
} as const;
 
/** 活动状态选项 */
export const ACTIVITY_STATUS_OPTIONS = [
  { label: '草稿', value: ACTIVITY_STATUS.DRAFT },
  { label: '已发布', value: ACTIVITY_STATUS.PUBLISHED },
  { label: '已结束', value: ACTIVITY_STATUS.FINISHED },
  { label: '已取消', value: ACTIVITY_STATUS.CANCELED },
];
 
/** 通知状态 */
export const NOTICE_STATUS = {
  DRAFT: 0,
  PUBLISHED: 1,
  REVOKED: 2,
} as const;
 
/** 通知状态选项 */
export const NOTICE_STATUS_OPTIONS = [
  { label: '草稿', value: NOTICE_STATUS.DRAFT },
  { label: '已发布', value: NOTICE_STATUS.PUBLISHED },
  { label: '已撤回', value: NOTICE_STATUS.REVOKED },
];
 
/** 报名状态 */
export const SIGNUP_STATUS = {
  SIGNED_UP: 0,
  CANCELED: 1,
  CHECKED_IN: 2,
} as const;
 
/** 报名状态选项 */
export const SIGNUP_STATUS_OPTIONS = [
  { label: '已报名', value: SIGNUP_STATUS.SIGNED_UP },
  { label: '已取消', value: SIGNUP_STATUS.CANCELED },
  { label: '已签到', value: SIGNUP_STATUS.CHECKED_IN },
];
 
/** 把选项数组转成 value -> label 的映射,便于表格里直接取中文名 */
export function toLabelMap(
  options: Array<{ label: string; value: number }>,
): Record<number, string> {
  return Object.fromEntries(options.map((o) => [o.value, o.label]));
}