123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- import { decryptCardVehicleInformation } from "@/datas/publicRequest";
-
- const cmd = require("@/static/etcUtil/cmdConfig.js");
- const tools = require("@/static/etcUtil/tools.js");
- const datas = require("@/static/etcUtil/datas.js");
- const bluetoothUtil = require("@/static/etcUtil/index.js");
-
- /**
- * 获取卡号卡信息,连接蓝牙以后
- */
- export const getCardDetail = () => {
- return new Promise(async (resolve, reject) => {
- let card = {
- cardNo: '',
- startTime: '',
- endTime: '',
- version: '',
- money: '',
- v_userType: '',
- }
- //执行0015文件
- tools.showLoadingAlert("执行指令");
- let cmdArr = [cmd.HOME_DIRECTORY, cmd.APPLICATION_DIRECTORY, cmd.CMD_READBINARY, cmd.CMD_GETBALANCE];
- bluetoothUtil.transCmd(cmdArr, '10', async (res) => { //10:写卡 20:写OBU
- console.log("5201",res)
- let str = res[2].substring(res[2].length - 4, res[2].length); //判断是否为9000
- let str3 = res[3].substring(res[3].length - 4, res[3].length); //判断是否为9000
- if (str == "9000" || str3 == "9000") {
- if (res[2].length > 86 || res[3] >= 12) {
- console.log("res[2]", res[2].substring(84, 86), getVehiclePlateColor(parseInt(res[2].substring(82, 84), 16)), res[2].substring(18, 19))
- card.cardNo = res[2].substring(20, 40);
- card.startTime = res[2].substring(40, 48);
- card.endTime = res[2].substring(48, 56);
- card.version = res[2].substring(18, 20);
- card.money = res[3].substring(0, 8);
- card.v_userType = parseInt(res[2].substring(80, 82), 16);
- console.log("card.v_userType", card.v_userType)
- card.vehiclePlate = await decryptCardVehicleInformationPromise(res[2].substring(56, 80));
- console.log("res[2].substring(18, 19)",res[2].substring(18, 20))
- if (res[2].substring(18, 19) >= 4) {
- //4x卡
- card.type = parseInt(res[2].substring(84, 86), 16);
- card.typeStr = getVehicleType(parseInt(res[2].substring(84, 86), 16));
- card.color = parseInt(res[2].substring(82, 84), 16)
- card.colorStr = getVehiclePlateColor(parseInt(res[2].substring(82, 84), 16))
- } else {
- //2x卡--获取车牌颜色
- card.type = "--";
- card.color =parseInt(res[2].substring(82, 84), 16)
- card.colorStr = getVehiclePlateColor(parseInt(res[2].substring(82, 84), 16))
- card.typeStr = getVehicleType(parseInt(res[2].substring(84, 86), 16));
- }
- // 读卡信息
- // getCardList()
- //执行0016文件
- let arr = [cmd.HOME_DIRECTORY, cmd.PERSONAL_INFORMATION]
- bluetoothUtil.transCmd(arr, '10', async (res) => {
- let str2 = res[1].substring(res[1].length - 4, res[1].length);
- if (str2 == "9000") {
- if (res[1].length > 108) {
- console.log("res====",res)
- const userInfo = await decryptCardVehicleInformationPromise(res[1].substring(4, 44));
-
- card.userName = userInfo
- card.userNameStr = card.userName[0] + '*'.repeat(card.userName.length - 1)
-
-
- let idNum = await decryptCardVehicleInformationPromise(res[1].substring(44, 108));
- card.idNumStr = card.idNum.replace(/^\d{14}/,'**************')
-
- //获取是否有优惠
- let cmdArr3 = [cmd.HOME_DIRECTORY, cmd.APPLICATION_DIRECTORY, cmd.CMD_00B08E0000];
-
- bluetoothUtil.transCmd(cmdArr3, '10', function(res) {
- let str3 = res[2].substring(res[2].length - 4, res[2].length);
- tools.hideLoadingAlert();
- if (str3 == "9000") {
- if (res[2].length > 131) {
- let _str = parseInt(res[2].substring(129, 130), 16);
- card.favourable=_str
- switch (_str) {
- case 0:
- card.favourableStr = "否";
- break;
- case 1:
- card.favourableStr = "是";
- break;
- default:
- card.favourableStr = '未知' + "_" + _str;
- break;
- }
- //回调读取OBU指令
- // getObuId()
- tools.hideLoadingAlert();
- resolve(card)
-
- } else {
- reject(resFail(res[2]))
- alertF("CMD_00B08E0000指令长度不符" + res[2]);
- }
- return;
- }
- reject(resFail(cmd.PERSONAL_INFORMATION + "_" + str))
- alertF(cmd.PERSONAL_INFORMATION + "_" + str);
- })
- } else {
- reject(resFail(res[1]))
- alertF("PERSONAL_INFORMATION指令长度不符" + res[1]);
- }
- return;
- }
- reject(resFail(res[1]))
- alertF("PERSONAL_INFORMATION指令长度不符" + res[1]);
- }, (err) => {
- reject(err)
- })
- } else {
- reject(resFail(res[2]))
- alertF("CMD_READBINARY指令长度不符" + res[2]);
- }
- return;
- }
- reject(resFail(res[2]))
- alertF("CMD_READBINARY指令长度不符" + res[2]);
-
- }, (err) => {
- reject(resFail(err))
- tools.hideLoadingAlert();
- })
- })
- };
-
- function decryptCardVehicleInformationPromise (code) {
- return new Promise(resolve => {
- decryptCardVehicleInformation(res[1].substring(44, 108), (res) => {
- resolve(res)
- });
- })
- }
-
- const resFail = (str) => {
- return ({
- success: false,
- message: str
- })
- }
|