Files
zt-closet-manage-frontend/src/utils/constants.ts
T
2026-09-11 01:46:36 +08:00

177 lines
5.7 KiB
TypeScript

import type { TagProps } from 'element-plus'
/** 枚举映射项:value=后端数值 label=中文文案 tagType=Tag 颜色 */
export interface EnumMapItem {
value: number
label: string
tagType?: TagProps['type']
}
function enumMap(items: EnumMapItem[]): Record<number, EnumMapItem> {
const map: Record<number, EnumMapItem> = {}
for (const item of items) {
map[item.value] = item
}
return map
}
/* ---------------- 管理员 ---------------- */
export const ADMIN_ROLE = enumMap([
{ value: 1, label: '超级管理员', tagType: 'danger' },
{ value: 2, label: '普通管理员', tagType: 'info' },
])
export const ADMIN_STATUS = enumMap([
{ value: 1, label: '启用', tagType: 'success' },
{ value: 2, label: '禁用', tagType: 'info' },
])
/* ---------------- 用户 ---------------- */
export const USER_STATUS = enumMap([
{ value: 1, label: '正常', tagType: 'success' },
{ value: 2, label: '临时禁用', tagType: 'warning' },
{ value: 3, label: '永久禁用', tagType: 'danger' },
{ value: 4, label: '已注销', tagType: 'info' },
])
export const USER_SEX = enumMap([
{ value: 1, label: '男' },
{ value: 2, label: '女' },
])
export const VIP_TYPE = enumMap([
{ value: 1, label: '非会员', tagType: 'info' },
{ value: 2, label: '月度会员', tagType: 'warning' },
{ value: 3, label: '年度会员', tagType: 'danger' },
{ value: 4, label: '体验会员', tagType: 'success' },
])
export const QUOTA_TYPE = enumMap([
{ value: 1, label: '上传额度' },
{ value: 2, label: 'AI 推荐额度' },
{ value: 3, label: '社区分享额度' },
{ value: 4, label: '衣柜分享额度' },
])
export const BAN_TYPE = enumMap([
{ value: 1, label: '临时封禁' },
{ value: 2, label: '永久封禁' },
])
export const GRANT_SOURCE = enumMap([
{ value: 1, label: '会员包' },
{ value: 2, label: '加量包' },
{ value: 3, label: '广告激励' },
])
/* ---------------- 商品 ---------------- */
export const GOODS_TYPE = enumMap([
{ value: 1, label: '会员包', tagType: 'warning' },
{ value: 2, label: '上传包' },
{ value: 3, label: 'AI 推荐包' },
{ value: 4, label: '衣柜分享包' },
{ value: 5, label: '搭配分享包' },
])
export const GOODS_STATUS = enumMap([
{ value: 1, label: '上架', tagType: 'success' },
{ value: 2, label: '下架', tagType: 'info' },
])
export const PRODUCT_STATUS = enumMap([
{ value: 0, label: '未发布', tagType: 'info' },
{ value: 1, label: '发布中', tagType: 'warning' },
{ value: 2, label: '已发布', tagType: 'success' },
{ value: 3, label: '发布失败', tagType: 'danger' },
])
/* ---------------- 订单 / 退款 ---------------- */
export const ORDER_STATUS = enumMap([
{ value: 1, label: '待支付', tagType: 'warning' },
{ value: 2, label: '已支付', tagType: 'success' },
{ value: 3, label: '已取消', tagType: 'info' },
{ value: 4, label: '已过期', tagType: 'info' },
{ value: 5, label: '已退款', tagType: 'danger' },
])
export const PAY_CHANNEL = enumMap([
{ value: 1, label: '微信支付' },
{ value: 2, label: '微信虚拟支付' },
])
export const XPAY_ENV = enumMap([
{ value: 0, label: '现网' },
{ value: 1, label: '沙箱', tagType: 'warning' },
])
export const REFUND_STATUS = enumMap([
{ value: 0, label: '待处理', tagType: 'warning' },
{ value: 1, label: '退款中', tagType: 'primary' },
{ value: 2, label: '退款成功', tagType: 'success' },
{ value: 3, label: '退款失败', tagType: 'danger' },
])
/* ---------------- 内容审核 ---------------- */
export const OUTFIT_SOURCE = enumMap([
{ value: 1, label: '用户创建' },
{ value: 2, label: 'AI 推荐', tagType: 'primary' },
])
export const OUTFIT_PUBLIC = enumMap([
{ value: 1, label: '不公开', tagType: 'info' },
{ value: 2, label: '公开', tagType: 'success' },
])
export const OUTFIT_AUDIT_STATUS = enumMap([
{ value: 1, label: '待审核', tagType: 'warning' },
{ value: 2, label: '已通过', tagType: 'success' },
{ value: 3, label: '未通过', tagType: 'danger' },
])
export const OUTFIT_STATUS = enumMap([
{ value: 1, label: '正常', tagType: 'success' },
{ value: 2, label: '已封禁', tagType: 'danger' },
{ value: 3, label: '待用户保存', tagType: 'warning' },
])
export const SHARE_TYPE = enumMap([
{ value: 1, label: '部分衣物' },
{ value: 2, label: '全量快照' },
])
export const SHARE_STATUS = enumMap([
{ value: 1, label: '正常', tagType: 'success' },
{ value: 2, label: '已取消', tagType: 'info' },
{ value: 3, label: '已过期', tagType: 'info' },
{ value: 4, label: '已封禁', tagType: 'danger' },
])
export const IMAGE_PROCESS_STATUS = enumMap([
{ value: 1, label: '抠图中', tagType: 'warning' },
{ value: 2, label: '分类中', tagType: 'warning' },
{ value: 3, label: '排队中', tagType: 'info' },
{ value: 4, label: '处理成功', tagType: 'success' },
{ value: 5, label: '处理失败', tagType: 'danger' },
])
/* ---------------- 工具函数 ---------------- */
/** 根据枚举表取文案,未匹配返回 '-' */
export function enumLabel(map: Record<number, EnumMapItem>, value?: number | null): string {
if (value === undefined || value === null) return '-'
const item = map[value]
return item ? item.label : '-'
}
/** 根据枚举表取 Tag 颜色 */
export function enumTag(map: Record<number, EnumMapItem>, value?: number | null): TagProps['type'] {
if (value === undefined || value === null) return 'info'
const item = map[value]
return item?.tagType ?? 'info'
}
/** 枚举表转下拉选项(数字值) */
export function enumOptions(map: Record<number, EnumMapItem>): { value: number; label: string }[] {
return Object.values(map).map((item) => ({ value: item.value, label: item.label }))
}