crm-owner-candidates.ts 885 B

123456789101112131415161718192021222324
  1. /** 报价单 / 合同负责人候选(按真实姓名匹配用户列表) */
  2. export const CRM_OWNER_CANDIDATE_NAMES = ['方金强', '吴九华'] as const
  3. export const CRM_DEFAULT_OWNER_NAME = '方金强'
  4. type OwnerLike = { nickName?: string }
  5. /** 按固定顺序筛选负责人候选 */
  6. export function filterOwnerCandidates<T extends OwnerLike>(users: T[]): T[] {
  7. const byName = new Map<string, T>()
  8. for (const user of users) {
  9. const name = (user.nickName || '').trim()
  10. if (name && !byName.has(name)) {
  11. byName.set(name, user)
  12. }
  13. }
  14. return CRM_OWNER_CANDIDATE_NAMES.map((name) => byName.get(name)).filter(Boolean) as T[]
  15. }
  16. /** 默认负责人:方金强 */
  17. export function findDefaultOwnerUser<T extends OwnerLike>(users: T[]): T | undefined {
  18. const name = CRM_DEFAULT_OWNER_NAME
  19. return users.find((user) => (user.nickName || '').trim() === name)
  20. }