tony.cheng
2026-02-04 ce77556eebb6896903be1dc8ac3202b42b96649d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/**
 * 状态翻译工具
 * 用于翻译调解状态、格式化时间和成功率
 */
 
/**
 * 翻译调解状态
 * @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}轮`;
};