/** * 状态翻译工具 * 用于翻译调解状态、格式化时间和成功率 */ /** * 翻译调解状态 * @param {number|string} state - 调解状态值 * @returns {string} 中文状态描述 */ export const translateMediationState = (state) => { const stateMap = { 0: '待调解', 1: '调解中', 2: '调解成功', 3: '调解失败' }; return stateMap[state] || '未知状态'; }; /** * 格式化持续时间为"X小时前更新"格式 * @param {string} duration - 持续时间字符串(如"5天17小时19分钟") * @returns {string} 格式化后的时间描述 */ export const formatDuration = (duration) => { if (!duration) return '暂无更新'; // 提取小时数 const hourMatch = duration.match(/(\d+)小时/); if (hourMatch) { return `${hourMatch[1]}小时前更新`; } // 提取天数 const dayMatch = duration.match(/(\d+)天/); if (dayMatch) { const days = parseInt(dayMatch[1]); const hours = days * 24; return `${hours}小时前更新`; } // 提取分钟数 const minuteMatch = duration.match(/(\d+)分钟/); if (minuteMatch) { return `${minuteMatch[1]}分钟前更新`; } return `${duration}前更新`; }; /** * 格式化成功率为百分比 * @param {string|number} successRate - 成功率(如"0.68"或"68") * @returns {string} 格式化后的百分比(如"68%") */ export const formatSuccessRate = (successRate) => { if (!successRate && successRate !== 0) return '0%'; const rate = parseFloat(successRate); // 如果是小数(0-1之间),转换为百分比 if (rate >= 0 && rate <= 1) { return `${Math.round(rate * 100)}%`; } // 如果已经是百分比数值,直接返回 return `${Math.round(rate)}%`; }; /** * 格式化轮次显示 * @param {number|string} count - 轮次数 * @returns {string} 格式化后的轮次(如"第6轮") */ export const formatRoundCount = (count) => { if (!count && count !== 0) return '第0轮'; return `第${count}轮`; };