import Base64 from "./base64.js" import store from "../store/index.js" export default class Parse { // private property static getInstance() { if (!this.instance) { this.instance = new Parse(); } return this.instance } info = {} // public method for decoding _processor(res) { const base64 = Base64.getInstance(); console.log(res) let data = res.replace("https://goto.huijy.net/", "") let stationId let employeeId let labelId let info = { stationId: undefined, labelId: undefined, employeeId: undefined } const idArr = data.match(/^\d{1,}/g) if (idArr === null) { throw new Error("二维码是个啥玩意?!") } // 处理后的data data = data.replace(/^\d{1,}\//g, '') // 解压后的data data = base64.decode(data) // 员工id if (data.includes('e')) { const employeeIdStrArr = data.match(/e\d{1,}/g) if (employeeIdStrArr === null) { return } const employeeIdArr = employeeIdStrArr[0].match(/\d{1,}/g) if (employeeIdArr === null) { return } employeeId = employeeIdArr[0] this.info.employeeId = employeeId store.commit('updateEmployeeId', employeeId); } // 标签id if (data.includes('l')) { const labelIdStrArr = data.match(/l\d{1,}/g) if (labelIdStrArr === null) { return } const labelIdArr = labelIdStrArr[0].match(/\d{1,}/g) if (labelIdArr === null) { return } labelId = labelIdArr[0] this.info.labelId = labelId store.commit("updateLabelId", labelId) } stationId = idArr[0] this.info.stationId = stationId store.commit("updateStationId", stationId) return; } async parseCode(res) { try { this._processor(res) return Promise.resolve(this.info) } catch (e) { return Promise.reject("亲,请扫油站提供的码呦~") } } async _scanCode() { try { const scanCodePro = await uni.scanCode({ onlyFromCamera: true }) if (scanCodePro[0] != null && scanCodePro[0].errMsg == "scanCode:fail") { throw new Error(1) } if (scanCodePro[0] != null) { throw new Error(2) } return this.parseCode(scanCodePro[1].result) // return Promise.resolve(scanCodePro[1].result) } catch (e) { if(e.message == 1){ return Promise.reject("亲,请扫油站提供的码呦~") }else{ return Promise.reject("亲,请扫二维码呀~") } // const showModalPro = await uni.showModal({ // title: '( •̀ ω •́ )✧', // showCancel: false, // content: '请扫描二维码呦', // confirmText: '重新扫码', // }) // return this.scanCode(); } } async scanCode(showModalFlag = true, moduleConfig = {}) { //msg 消息 let showModalPro = [ null, { cancel: false, confirm: true } ] if (showModalFlag) { showModalPro = await uni.showModal({ title: moduleConfig.title || '(~ ̄▽ ̄)~', showCancel: moduleConfig.showCancel, content: moduleConfig.content || '亲,请扫码使用~', cancelText: moduleConfig.cancelText || '返回', confirmText: moduleConfig.confirmText || '立刻扫码', }) } if (showModalPro[1].cancel) { uni.navigateBack({ delta: 1 }) return Promise.reject("返回") } else if (showModalPro[1].confirm) { return this._scanCode().catch((errMsg) => { console.log(errMsg) return this.scanCode(true, { content: errMsg }) }); } } }