// 会员模块的枚举与格式化。
|
//
|
// 这些枚举与后端「直接存值」的约定一一对应(见 hugray-server/sql/hugray_account_user_ext_20261012.sql
|
// 与 hugray_account_city_20261012.sql),刻意不建 sys_dict_type。
|
// 列表页与详情页共用此处定义,避免两处各写一份后改一处漏一处。
|
|
// 系统等级,从低到高
|
export const LEVELS = ['C', 'L1', 'L2', 'L3', 'L4']
|
|
// 主体类型
|
export const SUBJECT_TYPES = [
|
{ value: '1', label: '个人' },
|
{ value: '2', label: '个体工商户' },
|
{ value: '3', label: '企业' }
|
]
|
|
// 有效期类型(营业执照有效期与法人身份证有效期共用一套取值)
|
export const VALID_TYPES = [
|
{ value: '1', label: '长期' },
|
{ value: '2', label: '短期' }
|
]
|
|
// 认证状态
|
export const AUTH_STATUS = [
|
{ value: '0', label: '未认证' },
|
{ value: '1', label: '审核中' },
|
{ value: '2', label: '已认证' },
|
{ value: '3', label: '认证失败' }
|
]
|
|
// 认证申请审核状态(account_certification_apply.audit_status)
|
// 注意与上面的 AUTH_STATUS 区分:那个是会员的整体认证状态,这个是单次申请的审核结果。
|
export const AUDIT_STATUS = [
|
{ value: '0', label: '待审核' },
|
{ value: '1', label: '已通过' },
|
{ value: '2', label: '已驳回' }
|
]
|
|
// 账户状态(沿用 account_user.status,已由 2 值扩为 4 值,
|
// 故不能复用只有 0/1 的 sys_normal_disable 字典)
|
export const ACCOUNT_STATUS = [
|
{ value: '0', label: '正常' },
|
{ value: '1', label: '禁用' },
|
{ value: '2', label: '注销中' },
|
{ value: '3', label: '已注销' }
|
]
|
|
// 启用状态(0正常 1禁用)。
|
// 城市 account_city 与城市公司档案 account_city_company 的 status 用的就是这一对。
|
// 与 ACCOUNT_STATUS 的前两项取值相同但不从它切片派生:两者语义独立,
|
// 账户状态将来再扩值时不该顺带改动城市/档案的选项。
|
export const ENABLE_STATUS = [
|
{ value: '0', label: '正常' },
|
{ value: '1', label: '禁用' }
|
]
|
|
// 性别沿用原生字典 sys_user_sex
|
export const SEX = [
|
{ value: '0', label: '男' },
|
{ value: '1', label: '女' },
|
{ value: '2', label: '未知' }
|
]
|
|
// 从 [{value,label}] 取展示文案,取不到统一显示 -
|
export function labelOf(options, value) {
|
const hit = options.find(item => item.value === value)
|
return hit ? hit.label : '-'
|
}
|
|
export function levelTagType(level) {
|
return { C: 'info', L1: 'info', L2: 'success', L3: 'warning', L4: 'danger' }[level] || 'info'
|
}
|
|
export function authTagType(status) {
|
return { 0: 'info', 1: 'warning', 2: 'success', 3: 'danger' }[status] || 'info'
|
}
|
|
export function statusTagType(status) {
|
return { 0: 'success', 1: 'danger', 2: 'warning', 3: 'info' }[status] || 'info'
|
}
|
|
export function auditTagType(status) {
|
return { 0: 'warning', 1: 'success', 2: 'danger' }[status] || 'info'
|
}
|
|
// 仅「正常」视为可用,注销中/已注销也走禁用方向
|
export function isEnabled(status) {
|
return status === '0'
|
}
|
|
// 只有「正常」与「禁用」两态能互相切换。注销中/已注销由注销审核流程驱动,
|
// 列表页不给入口——否则随手一点就能把已注销的会员放回可用状态,等于绕过审核。
|
export function canToggleStatus(status) {
|
return status === '0' || status === '1'
|
}
|
|
// 金额千分位,保留两位小数;后端返回的是字符串形式的 decimal
|
export function formatAmount(value) {
|
if (value === null || value === undefined || value === '') {
|
return '0.00'
|
}
|
const num = Number(value)
|
if (Number.isNaN(num)) {
|
return String(value)
|
}
|
return num.toLocaleString('zh-CN', { minimumFractionDigits: 2, maximumFractionDigits: 2 })
|
}
|
|
export function isNegative(value) {
|
return Number(value) < 0
|
}
|