/** * 司南报告(DWBG6A2C)数据拆分工具 * 将完整的司南报告数据拆分成多个独立的模块,用于在不同的tab中显示 */ /** * 将DWBG6A2C数据拆分为多个独立的tab模块 * @param {Array} reportData - 原始报告数据数组 * @returns {Array} 拆分后的模块数组 */ export function splitDWBG6A2CForTabs(reportData) { // 查找DWBG6A2C数据 const dwbg6a2cData = reportData.find(item => item.data?.apiID === 'DWBG6A2C'); if (!dwbg6a2cData || !dwbg6a2cData.data?.data) { return reportData; // 如果没有找到DWBG6A2C数据,返回原数据 } const originalData = dwbg6a2cData.data.data; const baseTimestamp = dwbg6a2cData.data.timestamp; // 创建拆分后的模块数组 const splitModules = []; // 1. 基本信息 // if (originalData.baseInfo) { // splitModules.push({ // data: { // apiID: 'DWBG6A2C_BaseInfo', // data: { // baseInfo: originalData.baseInfo // }, // success: true, // timestamp: baseTimestamp // } // }); // } // 2. 身份信息核验 if (originalData.standLiveInfo) { splitModules.push({ data: { apiID: 'DWBG6A2C_StandLiveInfo', data: { standLiveInfo: originalData.standLiveInfo }, success: true, timestamp: baseTimestamp } }); } // 3. 命中风险标注 if (originalData.riskPoint) { splitModules.push({ data: { apiID: 'DWBG6A2C_RiskPoint', data: { riskPoint: originalData.riskPoint }, success: true, timestamp: baseTimestamp } }); } // 4. 公安重点人员核验 if (originalData.securityInfo) { splitModules.push({ data: { apiID: 'DWBG6A2C_SecurityInfo', data: { securityInfo: originalData.securityInfo }, success: true, timestamp: baseTimestamp } }); } // 5. 涉赌涉诈人员核验 if (originalData.antiFraudInfo) { splitModules.push({ data: { apiID: 'DWBG6A2C_AntiFraudInfo', data: { antiFraudInfo: originalData.antiFraudInfo }, success: true, timestamp: baseTimestamp } }); } // 6. 风险名单 if (originalData.riskList) { splitModules.push({ data: { apiID: 'DWBG6A2C_RiskList', data: { riskList: originalData.riskList }, success: true, timestamp: baseTimestamp } }); } // 7. 历史借贷行为 if (originalData.applicationStatistics) { splitModules.push({ data: { apiID: 'DWBG6A2C_ApplicationStatistics', data: { applicationStatistics: originalData.applicationStatistics }, success: true, timestamp: baseTimestamp } }); } // 8. 近24个月放款情况 if (originalData.lendingStatistics) { splitModules.push({ data: { apiID: 'DWBG6A2C_LendingStatistics', data: { lendingStatistics: originalData.lendingStatistics }, success: true, timestamp: baseTimestamp } }); } // 9. 履约情况 if (originalData.performanceStatistics) { splitModules.push({ data: { apiID: 'DWBG6A2C_PerformanceStatistics', data: { performanceStatistics: originalData.performanceStatistics }, success: true, timestamp: baseTimestamp } }); } // 10. 历史逾期记录 if (originalData.overdueRecord) { splitModules.push({ data: { apiID: 'DWBG6A2C_OverdueRecord', data: { overdueRecord: originalData.overdueRecord }, success: true, timestamp: baseTimestamp } }); } // 11. 授信详情 if (originalData.creditDetail && Object.keys(originalData.creditDetail).length > 0) { splitModules.push({ data: { apiID: 'DWBG6A2C_CreditDetail', data: { creditDetail: originalData.creditDetail }, success: true, timestamp: baseTimestamp } }); } // 12. 租赁行为 if (originalData.rentalBehavior) { splitModules.push({ data: { apiID: 'DWBG6A2C_RentalBehavior', data: { rentalBehavior: originalData.rentalBehavior }, success: true, timestamp: baseTimestamp } }); } // 13. 关联风险监督 if (originalData.riskSupervision) { splitModules.push({ data: { apiID: 'DWBG6A2C_RiskSupervision', data: { riskSupervision: originalData.riskSupervision }, success: true, timestamp: baseTimestamp } }); } // 14. 法院风险信息 if (originalData.judiciaRiskInfos && originalData.judiciaRiskInfos.length > 0) { splitModules.push({ data: { apiID: 'DWBG6A2C_CourtRiskInfo', data: { judiciaRiskInfos: originalData.judiciaRiskInfos }, success: true, timestamp: baseTimestamp } }); } // 移除原始的DWBG6A2C数据,添加拆分后的模块 const otherData = reportData.filter(item => item.data?.apiID !== 'DWBG6A2C'); return [...otherData, ...splitModules]; } /** * 格式化风险等级描述 * @param {string} level - 风险等级 * @returns {object} 包含颜色和文本的对象 */ export function formatRiskLevel(level) { const riskLevels = { '0': { color: 'text-green-600', bg: 'bg-green-100', text: '无风险', icon: '✅' }, '1': { color: 'text-red-600', bg: 'bg-red-100', text: '有风险', icon: '⚠️' }, 'A': { color: 'text-yellow-600', bg: 'bg-yellow-100', text: '较低风险', icon: '⚠️' }, 'B': { color: 'text-orange-600', bg: 'bg-orange-100', text: '低风险', icon: '⚠️' }, 'C': { color: 'text-red-600', bg: 'bg-red-100', text: '中风险', icon: '🚨' }, 'D': { color: 'text-red-700', bg: 'bg-red-200', text: '高风险', icon: '🚨' } }; return riskLevels[level] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' }; } /** * 格式化手机号码状态 * @param {number} status - 状态码 * @returns {object} 包含颜色和文本的对象 */ export function formatPhoneStatus(status) { const statusMap = { '-1': { color: 'text-gray-600', bg: 'bg-gray-100', text: '未查得', icon: '❓' }, '0': { color: 'text-red-600', bg: 'bg-red-100', text: '空号', icon: '❌' }, '1': { color: 'text-green-600', bg: 'bg-green-100', text: '实号', icon: '✅' }, '2': { color: 'text-orange-600', bg: 'bg-orange-100', text: '停机', icon: '⏸️' }, '3': { color: 'text-gray-600', bg: 'bg-gray-100', text: '库无', icon: '❓' }, '4': { color: 'text-yellow-600', bg: 'bg-yellow-100', text: '沉默号', icon: '😴' }, '5': { color: 'text-red-600', bg: 'bg-red-100', text: '风险号', icon: '⚠️' } }; return statusMap[status.toString()] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' }; } /** * 格式化身份核验结果 * @param {string} result - 核验结果 * @returns {object} 包含颜色和文本的对象 */ export function formatVerificationResult(result) { const resultMap = { '0': { color: 'text-green-600', bg: 'bg-green-100', text: '一致', icon: '✅' }, '1': { color: 'text-red-600', bg: 'bg-red-100', text: '不一致或不存在', icon: '❌' } }; return resultMap[result] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' }; } /** * 格式化在网时长 * @param {string} inTime - 在网时长代码 * @returns {object} 包含颜色和文本的对象 */ export function formatInTime(inTime) { const timeMap = { '0': { color: 'text-red-600', bg: 'bg-red-100', text: '0-3个月', icon: '📱' }, '3': { color: 'text-orange-600', bg: 'bg-orange-100', text: '3-6个月', icon: '📱' }, '6': { color: 'text-yellow-600', bg: 'bg-yellow-100', text: '6-12个月', icon: '📱' }, '12': { color: 'text-blue-600', bg: 'bg-blue-100', text: '12-24个月', icon: '📱' }, '24': { color: 'text-green-600', bg: 'bg-green-100', text: '24个月以上', icon: '📱' }, '99': { color: 'text-gray-600', bg: 'bg-gray-100', text: '状态异常', icon: '⚠️' }, '-1': { color: 'text-gray-600', bg: 'bg-gray-100', text: '查无记录', icon: '❓' } }; return timeMap[inTime] || { color: 'text-gray-600', bg: 'bg-gray-100', text: '未知', icon: '❓' }; } /** * 检查是否有风险数据 * @param {Object} data - 数据对象 * @returns {boolean} 是否有风险 */ export function hasRiskData(data) { if (!data) return false; // 检查对象中是否有非0值 return Object.values(data).some(value => { if (typeof value === 'number') return value > 0; if (typeof value === 'string') return value !== '0' && value !== '-' && value !== ''; return false; }); }