| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /** CRM 状态/阶段展示(与 Web 字典语义对齐的常用值) */
- const MAPS = {
- clueStatus: {
- new: { text: '新线索', tag: 'info' },
- follow: { text: '跟进中', tag: 'warning' },
- invalid: { text: '无效', tag: 'danger' },
- converted: { text: '已转化', tag: 'success' }
- },
- opportunityStage: {
- initial: { text: '初步接触', tag: 'info' },
- demand: { text: '需求确认', tag: 'info' },
- proposal: { text: '方案报价', tag: 'warning' },
- negotiation: { text: '商务谈判', tag: 'warning' },
- won: { text: '赢单', tag: 'success' },
- lost: { text: '输单', tag: 'danger' }
- },
- opportunityStatus: {
- following: { text: '跟进中', tag: 'warning' },
- won: { text: '赢单', tag: 'success' },
- lost: { text: '输单', tag: 'danger' },
- invalid: { text: '无效', tag: 'muted' }
- },
- customerStatus: {
- potential: { text: '潜在', tag: 'info' },
- intentional: { text: '意向', tag: 'warning' },
- dealing: { text: '洽谈', tag: 'warning' },
- dealed: { text: '已成交', tag: 'success' },
- lost: { text: '流失', tag: 'danger' },
- pool: { text: '公海', tag: 'muted' }
- },
- quoteStatus: {
- draft: { text: '草稿', tag: 'muted' },
- pending: { text: '待审批', tag: 'warning' },
- approved: { text: '已通过', tag: 'success' },
- rejected: { text: '已驳回', tag: 'danger' },
- invalid: { text: '已作废', tag: 'muted' },
- converted: { text: '已转合同', tag: 'success' }
- },
- contractStatus: {
- draft: { text: '草稿', tag: 'muted' },
- pending: { text: '待审批', tag: 'warning' },
- approved: { text: '已生效', tag: 'success' },
- rejected: { text: '已驳回', tag: 'danger' },
- executing: { text: '执行中', tag: 'info' },
- completed: { text: '已完成', tag: 'success' },
- terminated: { text: '已终止', tag: 'danger' },
- expired: { text: '已过期', tag: 'warning' }
- },
- level: {
- A: { text: 'A级', tag: 'danger' },
- B: { text: 'B级', tag: 'warning' },
- C: { text: 'C级', tag: 'info' },
- D: { text: 'D级', tag: 'muted' }
- }
- }
- export function labelOf(mapKey, value) {
- if (value == null || value === '') return { text: '—', tag: 'muted' }
- const hit = MAPS[mapKey]?.[String(value)]
- if (hit) return hit
- return { text: String(value), tag: 'muted' }
- }
- export function formatMoney(val) {
- if (val == null || val === '') return '—'
- const n = Number(val)
- if (Number.isNaN(n)) return String(val)
- return `¥${n.toLocaleString('zh-CN', { minimumFractionDigits: 0, maximumFractionDigits: 2 })}`
- }
- export function dash(val) {
- if (val == null || val === '') return '—'
- return String(val)
- }
|