| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- /**
- * @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<string, string> = {}
- 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<string | null> {
- 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
- }
- }
- }
|