| src/robotaxi/pages/order/index.tsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/utils/Robotaxi-public-method.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/robotaxi/pages/order/index.tsx
@@ -198,7 +198,7 @@ </View> } { (['已完成', '待评价'].includes(formatOrderStatus(item.status)) && item.invoiceStatus != 2 && item?.amount > 1) && (['已完成', '待评价'].includes(formatOrderStatus(item.status)) && item.invoiceStatus != 2 && item?.amount >= 1) && <View onClick={(e) => { e.stopPropagation(); toInvoicePage(item.orderId) }}> <View className='order-again-text' hoverClass='common-hover-class'>开发票</View> </View> src/utils/Robotaxi-public-method.ts
@@ -18,11 +18,19 @@ * @param defaultVal 解析失败时的默认返回值 */ export const safeParse = (str: any, defaultVal: any = null) => { if (typeof str !== 'string' || str.includes('服务器时间')) { if (typeof str !== 'string') { return str || defaultVal; } const trimmed = str.trim(); // 简单的格式预判:JSON 对象或数组字符串通常以 { 或 [ 开头 // 如果不是这两种开头,大概率不是我们需要解析的 JSON,直接返回原值或默认值,避免引发 JSON.parse 的异常和错误日志 if (!trimmed.startsWith('{') && !trimmed.startsWith('[')) { return str || defaultVal; } try { return JSON.parse(str); return JSON.parse(trimmed); } catch (e) { console.error('safeParse error:', e, 'original string:', str); return defaultVal;