client.js 4.78 KB
/*
 * @Description: 根据目标适配
 * @Date: 2021-12-20 17:01:55
 */

/*
 * @Description: 可配置场景对应机构 目标题类型
                  1 医生
                  2 等级医院医生
                  3 基层医疗机构医生
                  4 零售药店(OTC药店巡店) -D
                  5 零售药店客户(OTC药店拜访) -D
                  6 等级医院科室
                  7 医药商业公司 -D
                  8 医药商业公司客户 -D
                  9 医药商业公司客户
                  10 零售药店客户
                  11 零售药店
                  12 医疗商业公司
                  13 患者
                  14 医院科室
                  15 等级医院
                  16 基层医疗机构
                  17 代理商
 * @Date: 2020-10-22 11:10:39
 */
const mapping = {
  1: [
    { label: '客户名称', key: 'fullName', value: '' },
    { label: '医院名称', key: 'hospitalName', value: '' },
    { label: '科室名称', key: 'departmentName', value: '' },
    { label: '职称', key: 'dutyName', value: '' }
  ],
  2: [
    { label: '客户名称', key: 'fullName', value: '' },
    { label: '医院名称', key: 'hospitalName', value: '' },
    { label: '医院等级', key: 'gradeName', value: '' },
    { label: '科室名称', key: 'departmentName', value: '' },
    { label: '职称', key: 'dutyName', value: '' }
  ],
  3: [
    { label: '客户名称', key: 'fullName', value: '' },
    { label: '医疗机构名称', key: 'hospitalName', value: '' },
    { label: '医疗机构类别', key: 'gradeName', value: '' },
    { label: '医疗机构地区', key: 'ssq', value: '' },
    { label: '科室名称', key: 'departmentName', value: '' }
  ],
  9: [
    { label: '客户名称', key: 'officeWorkerName', value: '' },
    { label: '职务', key: 'jobTitle', value: '' },
    { label: '商业公司名称', key: 'fullName', value: '' },
    { label: '公司所在省市区', key: 'ssq', value: '' }
  ],
  10: [
    { label: '客户名称', key: 'officeWorkerName', value: '' },
    { label: '职务', key: 'jobTitle', value: '' },
    { label: '药店名称', key: 'fullName', value: '' },
    { label: '药店所在省市区', key: 'ssq', value: '' }
  ],
  13: [
    { label: '患者姓名', key: 'fullName', value: '' },
    { label: '性别', key: 'sex', value: '' },
    { label: '出生年月', key: 'birthday', value: '' },
    { label: '手机号', key: 'phone', value: '' }
  ],
  17: [
    { label: '客户姓名', key: 'fullName', value: '' },
    { label: '业务领域', key: 'agentAreaName', value: '' },
    { label: '擅长领域', key: 'agentProductName', value: '' },
    { label: '擅长终端', key: 'agentTerminalName', value: '' }
  ],
  6: [
    { label: '医院名称', key: 'hospitalName', value: '' },
    { label: '医院等级', key: 'gradeName', value: '' },
    { label: '科室名称', key: 'departmentName', value: '' }
  ],
  14: [
    { label: '医院名称', key: 'hospitalName', value: '' },
    { label: '科室名称', key: 'departmentName', value: '' }
  ],
  15: [
    { label: '医院名称', key: 'hospitalName', value: '' },
    { label: '医院等级', key: 'gradeName', value: '' },
    { label: '医院地区', key: 'ssq', value: '' },
    { label: '地址详情', key: 'address', value: '' }
  ],
  16: [
    { label: '医疗机构名称', key: 'hospitalName', value: '' },
    { label: '医疗机构类别', key: 'gradeName', value: '' },
    { label: '医疗机构地区', key: 'ssq', value: '' },
    { label: '医疗机构地址详情', key: 'address', value: '' }
  ],
  11: [
    { label: '药店名称', key: 'fullName', value: '' },
    { label: '药店所在省市区', key: 'ssq', value: '' },
    { label: '药店地址详情', key: 'address', value: '' }
  ],
  12: [
    { label: '医药商业公司名称', key: 'fullName', value: '' },
    { label: '公司所在省市区', key: 'ssq', value: '' }
  ]
};
Object.keys(mapping).forEach(k => {
  let common = [
    { label: '拜访时间', key: 'visitDt', visitDt: '' },
    { label: '数字拜访途径', key: 'visitType', value: '' },
    { label: '客户反馈时间', key: 'feedbackDt', value: '' },
    { label: '客户反馈', key: 'feedbackContent', value: '' }
  ];
  common.forEach(i => {
    mapping[k].push(i);
  });
});

const validTargets = Object.keys(mapping);

/**
 * @description: 根据类型适配字段
 * @param {number} target 当前目标类型
 * @param {object} data   当前数据
 * @return {array} 匹配后数据
 */
export default (target, data) => {
  if (!validTargets.includes(target + '')) {
    throw new Error('invalid target: ' + target);
  }
  if (Object.prototype.toString.call(data) !== '[object Object]') {
    throw new Error('invalid data');
  }
  return mapping[target].map(item => ({ ...item, value: data[item.key] }));
};