2764b83e
刘淇
分配养护员
|
1
|
export const nextStepMap = {
|
5059c4dd
刘淇
养护员提交养护工单
|
2
3
|
ylTeamLeader: {
name: '养护组长分配',
|
7a96cf50
刘淇
重新提交
|
4
|
btnText: '分配',
|
5059c4dd
刘淇
养护员提交养护工单
|
5
|
operateTypePass: 110,
|
7a96cf50
刘淇
重新提交
|
6
7
8
|
operateTypeNoPass: 210, //养护组长退回:210
backShow: true,
renewShow: false
|
5059c4dd
刘淇
养护员提交养护工单
|
9
10
11
|
},
ylWorker: {
name: '养护员待实施',
|
7a96cf50
刘淇
重新提交
|
12
|
btnText: '实施',
|
5059c4dd
刘淇
养护员提交养护工单
|
13
|
operateTypePass: 120,
|
dacff5e3
刘淇
养护员退回
|
14
|
operateTypeNoPass: 220,
|
7a96cf50
刘淇
重新提交
|
15
16
|
backShow: true,
renewShow: false
|
5059c4dd
刘淇
养护员提交养护工单
|
17
18
19
|
},
ylTeamLeaderConfirm: {
name: '养护组长验收',
|
7a96cf50
刘淇
重新提交
|
20
|
btnText: '验收',
|
5059c4dd
刘淇
养护员提交养护工单
|
21
22
|
operateTypePass: 130, //养护组长验收通过: 130
operateTypeNoPass: 230, // 养护组长验收不通过:230
|
7a96cf50
刘淇
重新提交
|
23
24
|
backShow: false,
renewShow: false
|
5059c4dd
刘淇
养护员提交养护工单
|
25
|
},
|
7a96cf50
刘淇
重新提交
|
26
|
ylInspector: {
|
1f1f236c
刘淇
工单详情
|
27
|
name: '巡查员验收',
|
7a96cf50
刘淇
重新提交
|
28
|
btnText: '验收',
|
1f1f236c
刘淇
工单详情
|
29
30
|
operateTypePass: 140, //巡查员验收通过: 140
operateTypeNoPass: 240, // 巡查员验收不通过:230
|
7a96cf50
刘淇
重新提交
|
31
32
33
34
35
36
37
38
39
40
41
42
|
backShow: false,
renewShow: false
},
ylInspectorStart: {
name: '发起人确认',
btnText: '结束工单',
operateTypePass: 200, //巡查员结束工单:200
operateTypeNoPass: 240, // 巡查员验收不通过:230
operateTypeRenew: 100, //巡查员重新发起:100
backShow: false,
renewShow: true
},
|
34d239d6
刘淇
全域巡查员
|
43
44
45
46
47
48
49
50
51
52
|
regionManager: {
name: '大区经理分配',
btnText: '分配',
operateTypePass: 80, // 大区经理分配:80
operateTypeNoPass: 90, // 大区经理退回:90
// operateTypeRenew: 100, //巡查员重新发起:100
backShow: true,
renewShow: false
},
|
2e2b95d3
刘淇
修改接口路径 和命名
|
53
54
55
56
57
58
59
60
61
62
63
|
shRegionManager: {
name: '督察员单子大区经理分配',
btnText: '分配',
operateTypePass: 60, // 大区经理分配:60
operateTypeNoPass: 70, // 大区经理退回:70
// operateTypeRenew: 100, //巡查员重新发起:100
backShow: true,
renewShow: false
},
|
4fa8cf12
刘淇
巡查员结束工单
|
64
65
|
}
|
4fa8cf12
刘淇
巡查员结束工单
|
66
67
|
export const buzStatusMap = {
|
f0ec74d6
刘淇
大区经理派单
|
68
69
70
71
72
73
74
75
76
77
78
|
'000' :'发起',
"210" : '退回',
"110" : '分配',
"200" : '结束工单',
"100" : '重新发起',
"220" : '退回',
"120" : '实施',
"130" : '验收通过',
"230" : '验收不通过',
"140" : '验收通过',
"240" : '验收不通过',
|
34d239d6
刘淇
全域巡查员
|
79
80
|
'90' : '退回',
'80' : '分配',
|
2e2b95d3
刘淇
修改接口路径 和命名
|
81
82
|
'70': '退回',
'60': '分配',
|
4c54ad5d
刘淇
转工单 选择是 传紧急程度和...
|
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
|
}
/**
* 计算两个时间的时间差,返回格式化字符串(天/小时/分钟/秒,按需显示,无无效单位)
* @param {string | Date | number} startTime - 开始时间(时间字符串/Date对象/10位/13位时间戳)
* @param {string | Date | number} endTime - 结束时间(时间字符串/Date对象/10位/13位时间戳)
* @returns {string} - 格式化时间差字符串(如:3天5小时2分钟30秒、3小时2分钟30秒、2分钟30秒、30秒)
*/
export const calculateFormatTimeDiff = (startTime, endTime) => {
// 辅助函数:将任意合法时间格式转换为13位毫秒级时间戳
const to13BitTimestamp = (time) => {
let timestamp = 0;
// 情况1:数字类型(时间戳)
if (typeof time === 'number') {
const timeStr = time.toString();
if (timeStr.length === 10) {
timestamp = time * 1000; // 10位秒级转13位毫秒级
} else if (timeStr.length === 13) {
timestamp = time; // 13位毫秒级直接使用
} else {
console.error('非法时间戳:仅支持10位/13位数字', time);
return 0;
}
return timestamp;
}
// 情况2:Date对象
if (time instanceof Date) {
timestamp = time.getTime();
if (isNaN(timestamp)) {
console.error('无效的Date对象', time);
return 0;
}
return timestamp;
}
// 情况3:字符串类型
if (typeof time === 'string') {
const timeStr = time.trim().replace(/\//g, '-'); // 统一分隔符,兼容YYYY/MM/DD
const date = new Date(timeStr);
timestamp = date.getTime();
if (isNaN(timestamp)) {
console.error('无效的时间字符串', time);
return 0;
}
return timestamp;
}
// 非法类型
console.error('不支持的时间类型:仅支持string/Date/number', time);
return 0;
};
// 1. 统一转换为13位时间戳
const startTimestamp = to13BitTimestamp(startTime);
const endTimestamp = to13BitTimestamp(endTime);
// 2. 校验时间戳有效性
if (startTimestamp === 0 || endTimestamp === 0) {
return '0秒';
}
// 3. 计算总毫秒差(取绝对值,确保时间差为正数,不影响单位计算)
const totalMsDiff = Math.abs(endTimestamp - startTimestamp);
// 4. 定义时间单位换算(毫秒)
const oneDayMs = 24 * 60 * 60 * 1000;
const oneHourMs = 60 * 60 * 1000;
const oneMinuteMs = 60 * 1000;
const oneSecondMs = 1000;
// 5. 计算各单位的差值(向下取整,获取整数单位)
const days = Math.floor(totalMsDiff / oneDayMs);
const remainingMsAfterDay = totalMsDiff % oneDayMs; // 扣除天数后剩余的毫秒数
const hours = Math.floor(remainingMsAfterDay / oneHourMs);
const remainingMsAfterHour = remainingMsAfterDay % oneHourMs; // 扣除小时后剩余的毫秒数
const minutes = Math.floor(remainingMsAfterHour / oneMinuteMs);
const remainingMsAfterMinute = remainingMsAfterHour % oneMinuteMs; // 扣除分钟后剩余的毫秒数
const seconds = Math.floor(remainingMsAfterMinute / oneSecondMs);
// 6. 组装格式化字符串(按需添加单位,无无效单位)
const timeParts = [];
if (days > 0) {
timeParts.push(`${days}天`);
}
if (hours > 0 || (days > 0 && hours === 0)) { // 有天数时,小时即使为0也可保留(可选:删除 || 后的条件则不显示0小时)
timeParts.push(`${hours}小时`);
}
if (minutes > 0 || (timeParts.length > 0 && minutes === 0)) { // 有天/小时时,分钟即使为0也可保留(可选:删除 || 后的条件则不显示0分钟)
timeParts.push(`${minutes}分钟`);
}
// 秒数始终保留(即使为0,保证最后有一个有效单位)
timeParts.push(`${seconds}秒`);
// 7. 过滤掉可能存在的「0单位」(可选优化:避免出现“0小时”等无效字段)
const validTimeParts = timeParts.filter(part => {
const num = parseInt(part);
return num > 0 || (timeParts.length === 1 && num === 0); // 仅当只有秒数时,允许0秒
});
// 8. 拼接并返回结果
return validTimeParts.join('');
|
e6a04285
刘淇
单图情况 宽高70*70
|
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
|
};
/**
* 将日期数组 [年, 月, 日] 转为标准日期字符串(兼容 iOS/Android)
* @param {Array} dateArr 日期数组,如 [2025, 12, 20]
* @returns {String} 标准日期字符串,如 '2025-12-20'
*/
export const convertArrToDateStr= (dateArr)=> {
// 边界判断:非数组/长度不足3,返回空
if (!Array.isArray(dateArr) || dateArr.length < 3) {
return dateArr;
}
// 解构年、月、日,补零处理(确保格式统一,如 12月→12,2月→02)
const [year, month, day] = dateArr;
const formatMonth = month.toString().padStart(2, '0');
const formatDay = day.toString().padStart(2, '0');
// 拼接为标准字符串
return `${year}-${formatMonth}-${formatDay}`;
}
|