/** * @param statusName 去掉括号及括号内的内容 */ export function formatStatusName(statusName: string) { return statusName.replace(/\([^)]*\)/g, '') } /** * 统一充电订单状态处理 * @param order */ export function chargeOrderStatus(status: any) { const statusObj = { icon: '', text: '', color: '' } switch (status) { case 0: statusObj.icon = 'charge-order-settlement' statusObj.text = '待充电' statusObj.color = '#FFA500' break case 1: statusObj.icon = 'charge-order-ing' statusObj.text = '充电中' statusObj.color = '#4EDC86' break case 2: statusObj.icon = 'charge-order-settlement' statusObj.text = '结算中' statusObj.color = '#3EB6F8' break case 3: statusObj.icon = 'charge-order-settled' statusObj.text = '已完成' statusObj.color = '#AAAAAA' break } return statusObj } /** * 停止方式 * @param stopMethod */ export function stopType(stopMethod: any) { // 0:用户手动停止充电;1:客户归属地运营商平台停止充电;2:BMS停止充电;3:充电机设备故障;4:连接器断开;其它:自定义 let stopText = '' switch (stopMethod) { case 0: stopText = '用户手动停止充电' break case 1: stopText = '客户归属地运营商平台停止充电' break case 2: stopText = 'BMS停止充电' break case 3: stopText = '充电机设备故障' break case 4: stopText = '连接器断开' } return stopText } /** * 秒转为时间格式 */ export function secondToTime(second: number) { const h = Math.floor(second / 3600) const m = Math.floor((second - h * 3600) / 60) const s = Math.floor(second - h * 3600 - m * 60) return `${h < 10 ? `0${h}` : h}:${m < 10 ? `0${m}` : m}:${s < 10 ? `0${s}` : s}` } /** * 扫码工具类 */ export class ScanCodeUtil { /** * 调用扫码统一处理 * @param opts 参数配置,详细查看 https://uniapp.dcloud.net.cn/api/system/barcode.html */ static scan(opts: any = {}) { return new Promise((resolve, reject) => { uni.scanCode( Object.assign( {}, { success: (res: any) => resolve(res), fail: reject, }, opts, ), ) }) } /** * 解析 URL 参数 * @param url URL 字符串 */ static parseUrlParams(url: string) { console.log(url, '二维码数据格式') try { const urlObj = new URL(url) const params = new URLSearchParams(urlObj.search) return Object.fromEntries(params.entries()) } catch (error) { console.warn('URL 构造函数不可用,使用手动解析:', error) const queryString = url.split('?')[1] if (!queryString) return {} const params: Record = {} queryString.split('&').forEach((pair) => { const [key, value] = pair.split('=') if (key) { params[decodeURIComponent(key)] = decodeURIComponent(value || '') } }) return params } } /** * 扫码并提取 connectorCode * @param opts 参数配置 */ static async scanAndGetConnectorCode(opts: any = {}): Promise { try { const res: any = await this.scan(opts) const params = this.parseUrlParams(res.result) return params.connectorCode || null } catch (error) { console.error('扫码或解析失败:', error) throw error } } }