Pārlūkot izejas kodu

邓明聪修改激活

优化激活内容
yangteng pirms 1 nedēļas
vecāks
revīzija
0f0d31d347

+ 60
- 51
pages/bluetooth/bluetooth.vue Parādīt failu



<script setup lang="ts"> <script setup lang="ts">
import { ref, reactive } from "vue"; import { ref, reactive } from "vue";
import { onLoad, onReady,onShow } from "@dcloudio/uni-app";
import { onLoad, onReady, onShow,onUnload } from "@dcloudio/uni-app";
import { fileURL } from "@/datas/fileURL.js"; import { fileURL } from "@/datas/fileURL.js";
import { startHeartbeat, stopHeartbeat } from "@/pages/bluetooth/heartbeatService"
const cmd = require("../../static/etcUtil/cmdConfig.js"); const cmd = require("../../static/etcUtil/cmdConfig.js");


const imgURL = `${fileURL}image/`; const imgURL = `${fileURL}image/`;
let mcApi = require("../../static/etc/MCAPI/MCObuSDK.js"); //5201 let mcApi = require("../../static/etc/MCAPI/MCObuSDK.js"); //5201
// let jyApiEtc = require("../../static/etc/JYAPI-ETC/jy-bluetooth-obu-wechatmp.js"); //前装-金溢 // let jyApiEtc = require("../../static/etc/JYAPI-ETC/jy-bluetooth-obu-wechatmp.js"); //前装-金溢
// 9901 // 9901
let wjApi9901 = require("../../static/etc/WJSDK9901/wjBleAPI.js");
let ArtcBleUtilApi = require("../../static/etc/ArtcBleAPI/ArtcGuiZhouAPI.js");//艾特斯 ETC- 5201
let wjApi9901 = require("../../static/etc/WJSDK9901/wjBleAPI.js");
let ArtcBleUtilApi = require("../../static/etc/ArtcBleAPI/ArtcGuiZhouAPI.js");//艾特斯 ETC- 5201
let mcApi9901 = require("../../static/etc/MCSDK9901/BleUtil9901.js"); //9901和国密5201单片 let mcApi9901 = require("../../static/etc/MCSDK9901/BleUtil9901.js"); //9901和国密5201单片
// #ifdef MP-ALIPAY // #ifdef MP-ALIPAY
// 这部分代码将仅在支付宝小程序平台下执行 // 这部分代码将仅在支付宝小程序平台下执行
vehPosImgUrl: "", vehPosImgUrl: "",
vehNegImgUrl: "", vehNegImgUrl: "",
isAfter: '', isAfter: '',
backIndex:"",//1返回首页(卡签信息查询) ""返回订单列表 其他
cardNo:"",
isIOS:false
backIndex: "",//1返回首页(卡签信息查询) ""返回订单列表 其他
cardNo: "",
isIOS: false
}); });
const deviceList = ref([]); const deviceList = ref([]);
const connectPrefixName = ref(null); const connectPrefixName = ref(null);
onReady(() => { onReady(() => {
load(); load();
}); });
onShow(()=>{
uni.getSystemInfo({
success:function(res){
console.log(res)
if(res.platform=="ios"){
state.isIOS=true
}else {
state.isIOS=false
}
}
});
onShow(() => {
uni.getSystemInfo({
success: function (res) {
console.log(res)
if (res.platform == "ios") {
state.isIOS = true
} else {
state.isIOS = false
}
}
});
}) })
onLoad((option) => { onLoad((option) => {
routeType.value = option.routeType ? option.routeType : "1"; routeType.value = option.routeType ? option.routeType : "1";
uni.onBluetoothDeviceFound(function (res) { uni.onBluetoothDeviceFound(function (res) {
console.log('监听寻找到新设备的事件', res, res.devices); console.log('监听寻找到新设备的事件', res, res.devices);
for (let i = 0; i < res.devices.length; i++) { for (let i = 0; i < res.devices.length; i++) {
var name = '';
var name = '';
if (state.isIOS) { if (state.isIOS) {
name = res.devices[i]['localName']; name = res.devices[i]['localName'];
} else { } else {
_name = "万集"; //共用 _name = "万集"; //共用
} else if (name.split("-")[1] == "JY") { } else if (name.split("-")[1] == "JY") {
_name = "金溢"; _name = "金溢";
}else if (name.split("-")[1] == "ATS") {
} else if (name.split("-")[1] == "ATS") {
_name = "埃特斯"; _name = "埃特斯";
}else if (name.split("-")[1] == "MC") {
} else if (name.split("-")[1] == "MC") {
_name = "铭创"; _name = "铭创";
} }
break; break;
_name = "聚利"; _name = "聚利";
break; break;
case "BY": case "BY":
_name = "宝溢";
_name = "宝溢";
case "JY": case "JY":
_name = "金溢"; _name = "金溢";
break; break;
console.log("device.name=====", device.name, device.name.includes("KC"), device.name.includes("JY"), device.name.includes("KC") || device.name.includes("K") || device.name.includes("C")) console.log("device.name=====", device.name, device.name.includes("KC"), device.name.includes("JY"), device.name.includes("KC") || device.name.includes("K") || device.name.includes("C"))
let obj = "" let obj = ""
if (device.name.includes("KC") || device.name.includes("K")) { if (device.name.includes("KC") || device.name.includes("K")) {
obj=kcApi
obj = kcApi
} else if (device.name.includes("JL")) { } else if (device.name.includes("JL")) {
obj=jlQZApi
obj = jlQZApi
} else if (device.name.includes("WJ")) { } else if (device.name.includes("WJ")) {
obj=wjApi9901
}else if (device.name.includes("ATS")) {
obj=ArtcBleUtilApi
}else if (device.name.includes("MC")) {
obj=mcApi9901
obj = wjApi9901
} else if (device.name.includes("ATS")) {
obj = ArtcBleUtilApi
} else if (device.name.includes("MC")) {
obj = mcApi9901
} }
console.log("新") console.log("新")
obj.connectDevice( obj.connectDevice(
// } // }
break; break;
case "WJ": case "WJ":
console.log("旧")
console.log("旧")
wjApi.connectDevice( wjApi.connectDevice(
device, device,
function (res) { function (res) {
break; break;
case "BY": case "BY":
// 宝溢用金溢sdk // 宝溢用金溢sdk
jyApi.connectDevice(
device,
function (res) {
console.log('设备链接1', res)
connectSuccess(res);
},
function (res) {
console.log('设备链接2', res)
listenStatus(res);
}
);
break;
jyApi.connectDevice(
device,
function (res) {
console.log('设备链接1', res)
connectSuccess(res);
},
function (res) {
console.log('设备链接2', res)
listenStatus(res);
}
);
break;
case "JY": case "JY":
jyApi.connectDevice( jyApi.connectDevice(
device, device,
); );
break; break;
case "WQ": case "WQ":
device['sendTimeout']=20000
device['sendTimeout'] = 20000
wqApi.connectDevice( wqApi.connectDevice(
device, device,
function (res) { function (res) {
} }
); );
break; break;
case "MC":
case "MC":
mcApi.connectDevice( mcApi.connectDevice(
device, device,
function (res) { function (res) {
tools.hideLoadingAlert(); //关闭加载框 tools.hideLoadingAlert(); //关闭加载框
datas.setData("bluLinkStatus", true); datas.setData("bluLinkStatus", true);
datas.setData("connectPrefixName", connectPrefixName.value); datas.setData("connectPrefixName", connectPrefixName.value);
startHeartbeat() //执行心跳
oks(); oks();
} else { } else {
alertF(res.msg); alertF(res.msg);
} }
}; };


// ====================== 页面卸载时清理资源 ======================
onUnload(() => {
stopHeartbeat();
// 实际项目中需调用 uni.closeBLEConnection 断开连接
console.log('页面卸载,清理资源');
});

function oks() { function oks() {
//routeType 1.激活(订单来) 2.圈存 (/pages/recharge/recharge来)3.ping码解锁 4.信息读取 5从哪里来回哪里去监听bluetoothLink 7消费明细去圈存 8单位账户圈存 9对公账户修复 //routeType 1.激活(订单来) 2.圈存 (/pages/recharge/recharge来)3.ping码解锁 4.信息读取 5从哪里来回哪里去监听bluetoothLink 7消费明细去圈存 8单位账户圈存 9对公账户修复
if (routeType.value == "1") { if (routeType.value == "1") {
*/ */
const preDevice = (res) => { const preDevice = (res) => {
console.log("连接成功1111=====", res); console.log("连接成功1111=====", res);
if (res.code == 0 || res.serviceCode==0) {
if (res.code == 0 || res.serviceCode == 0) {
console.log("连接成功====="); console.log("连接成功=====");
datas.setData("bluLinkStatus", true); datas.setData("bluLinkStatus", true);
datas.setData("connectPrefixName", connectPrefixName.value); datas.setData("connectPrefixName", connectPrefixName.value);
getCardId((cardNo) => { getCardId((cardNo) => {
console.log("cardNo",cardNo);
if(cardNo.includes('5201')){
console.log("cardNo", cardNo);
if (cardNo.includes('5201')) {
// 正常激活 前装 5201 // 正常激活 前装 5201
oks() oks()
}else{
} else {
// 前装9901 // 前装9901
etcOks() etcOks()
} }
console.log(res.msg); console.log(res.msg);
} }
}; };
function getCardId(fun){
function getCardId(fun) {
//执行0015文件 //执行0015文件
tools.showLoadingAlert("执行指令"); tools.showLoadingAlert("执行指令");
let cmdArr = [cmd.HOME_DIRECTORY, cmd.APPLICATION_DIRECTORY, cmd.CMD_READBINARY]; let cmdArr = [cmd.HOME_DIRECTORY, cmd.APPLICATION_DIRECTORY, cmd.CMD_READBINARY];
console.log(cmdArr); console.log(cmdArr);
console.log(bluetoothUtil); console.log(bluetoothUtil);
bluetoothUtil.transCmd(cmdArr, '10', function(res) { //10:写卡 20:写OBU
bluetoothUtil.transCmd(cmdArr, '10', function (res) { //10:写卡 20:写OBU
console.log("res====", res) console.log("res====", res)
var cardStr = res[2]; var cardStr = res[2];
if (cardStr == undefined || cardStr == "undefined" || cardStr == "") { if (cardStr == undefined || cardStr == "undefined" || cardStr == "") {
position: relative; position: relative;
padding-top: 30rpx; padding-top: 30rpx;
background: #E9EDF0; background: #E9EDF0;

.action { .action {
position: absolute; position: absolute;
bottom: 0rpx; bottom: 0rpx;
justify-content: center; justify-content: center;
flex-direction: column; flex-direction: column;
} }

.device { .device {
margin: 0 auto; margin: 0 auto;
width: 701rpx; width: 701rpx;
margin: 70rpx 40rpx; margin: 70rpx 40rpx;
} }
} }


</style> </style>

+ 68
- 0
pages/bluetooth/heartbeatService.ts Parādīt failu

import { ref } from 'vue'
import { requestNew } from "@/utils/network/request.js";
const bluetoothUtil = require("../../static/etcUtil/index.js");
const datas = require("../../static/etcUtil/datas.js");
// ====================== 心跳机制 ======================
// ====================== 心跳相关状态 ======================
const heartbeatInterval = ref(null); // 心跳定时器ID
const heartbeatDelay = 10000; // 心跳间隔 (5秒)
const heartbeatTimeout = 60000; // 心跳超时时间 (20秒)
const heartbeatTimer = ref<number | null>(null); // 心跳超时定时器ID
const heartbeatData = ['00A40000023F00']; // 心跳数据 (根据设备协议定义)

export const startHeartbeat = () => {
stopHeartbeat(); // 先停止可能存在的旧定时器
// 启动心跳定时器
heartbeatInterval.value = setInterval(() => {
sendHeartbeat();
}, heartbeatDelay);
// 立即发送一次心跳
// sendHeartbeat();
// setTimeout(() => {
// stopHeartbeat();
// }, heartbeatTimeout)
};

export const stopHeartbeat = () => {
if (heartbeatInterval.value !== null) {
clearInterval(heartbeatInterval.value);
heartbeatInterval.value = null;
}
if (heartbeatTimer.value !== null) {
clearTimeout(heartbeatTimer.value);
heartbeatTimer.value = null;
}
};

const sendHeartbeat = () => {
console.log('执行时间'+ new Date())
bluetoothUtil.transCmd(heartbeatData, '20', function (res) {
console.log('心跳执行成功!' + new Date())
}, (err) => {
console.log("结束心跳", err)
stopHeartbeat();
// errorLog(heartbeatData, JSON.stringify(err) + '心跳执行失败!', '---')
});
};

const errorLog = (cmd, error, step) => {
console.log('激活异常提交')
const options = {
type: 2,
data: {
cardId: '1',
obuId: '1',
orderType: "1",
factory: datas.getData("deviceName") + "_" + datas.getData("deviceNameZW"),
orderNo: '1',
cmd,
error,
step
},
method: "POST",
showLoading: false,
};
requestNew('/iaw/api/active/errorLog/add', options).then((res) => {
console.log("错误提交成功", res);
});
};

+ 2
- 1
static/etcUtil/index.js Parādīt failu

import { import {
getItem getItem
} from "../../utils/storage"; } from "../../utils/storage";
// import { startHeartbeat, stopHeartbeat } from "@/pages/bluetooth/heartbeatService"


if (getItem('environment') == 'ZFB') { if (getItem('environment') == 'ZFB') {
tdApi = require("../etc/TDRAPI/TDRObuSDK.js"); tdApi = require("../etc/TDRAPI/TDRObuSDK.js");
// tools.hideLoadingAlert(); // tools.hideLoadingAlert();
// 提示对话框 // 提示对话框
tools.showModalAlert(msg); tools.showModalAlert(msg);
// stopHeartbeat();
} }


module.exports = { module.exports = {

+ 135
- 106
subpackage/after-sale/activation/activate.vue Parādīt failu

</view> </view>
<!-- 激活成功popup --> <!-- 激活成功popup -->
<view v-if="state.showPopup" class="mask"> <view v-if="state.showPopup" class="mask">
<piaoyi-progress-bar canvasId="progressCanvas4" :progress="state.progressNum"
progressBackgroundColor="#07C160" :showText="true" textColor="#fff" :textSize="28" :height="22"
:isCircular="true" :diameter="300"></piaoyi-progress-bar>
<piaoyi-progress-bar canvasId="progressCanvas4" :progress="state.progressNum" progressBackgroundColor="#07C160"
:showText="true" textColor="#fff" :textSize="28" :height="22" :isCircular="true"
:diameter="300"></piaoyi-progress-bar>
</view> </view>
</template> </template>


<script setup> <script setup>
navTo navTo
} from "@/utils/utils"; } from "@/utils/utils";
import { import {
onLoad
onLoad,
onUnload
} from '@dcloudio/uni-app' } from '@dcloudio/uni-app'
import { import {
getItem getItem
} from "@/utils/storage"; } from "@/utils/storage";
import {requestNew} from "@/utils/network/request.js";
import {
requestNew
} from "@/utils/network/request.js";
import { import {
IntegerToHexString, IntegerToHexString,
} from "@/utils/util/fileData.js"; } from "@/utils/util/fileData.js";
import { import {
issueApply,issueCallback,orderDetailQuery,errorLogAdd,cardObuQuery,cardObuQueryinLog,obuFileDataDecrypt
issueApply,
issueCallback,
orderDetailQuery,
errorLogAdd,
cardObuQuery,
cardObuQueryinLog,
obuFileDataDecrypt
} from "@/utils/network/api"; } from "@/utils/network/api";
import { import {
agentId agentId
} from "@/utils/network/difference"; } from "@/utils/network/difference";
import {
startHeartbeat,
stopHeartbeat
} from "@/pages/bluetooth/heartbeatService"
const cmd = require("../../../static/etcUtil/cmdConfig.js"); const cmd = require("../../../static/etcUtil/cmdConfig.js");
const tools = require("../../../static/etcUtil/tools.js"); const tools = require("../../../static/etcUtil/tools.js");
const bluetoothUtil = require("../../../static/etcUtil/index.js"); const bluetoothUtil = require("../../../static/etcUtil/index.js");

import activeSuccess from "./components/popup-device-active-success"; import activeSuccess from "./components/popup-device-active-success";
const datas = require("../../../static/etcUtil/datas.js"); const datas = require("../../../static/etcUtil/datas.js");
import { import {
transfer: 0, //0 是原来的激活 1 是过户激活 transfer: 0, //0 是原来的激活 1 是过户激活
showBtn: true, showBtn: true,
disabled: true, disabled: true,
progressNum:0
progressNum: 0
}) })


onLoad((option) => { onLoad((option) => {
state.transfer = Number(option.transfer) state.transfer = Number(option.transfer)
//获取订单详情 //获取订单详情
getOrderDetails(orderData.orderId); getOrderDetails(orderData.orderId);
console.log("state.transfer", state.transfer, state.transfer == 0, state.transfer == 1,getItem("orderInfo"))

console.log("state.transfer", state.transfer, state.transfer == 0, state.transfer == 1, getItem(
"orderInfo"))
startHeartbeat()
}) })


// ====================== 页面卸载时清理资源 ======================
onUnload(() => {
stopHeartbeat();
// 实际项目中需调用 uni.closeBLEConnection 断开连接
console.log('页面卸载,清理资源');
});

const card = reactive({ const card = reactive({
cardId: "", cardId: "",
cardNo: "", cardNo: "",
startTime: "", startTime: "",
endTime: "", endTime: "",
userName: "", userName: "",
userNameStr:"",
userNameStr: "",
idNum: "", idNum: "",
idNumStr:"",
idNumStr: "",
vehiclePlate: "", vehiclePlate: "",
vehiclePlateColor: "", vehiclePlateColor: "",
color: "", color: "",
colorStr:"",
colorStr: "",
version: "", version: "",
type: "", type: "",
typeStr:"",
typeStr: "",
favourable: "", favourable: "",
favourableStr:"",
favourableStr: "",
money: "", money: "",
v_userType: "" v_userType: ""
}); });
axleDistance: "", axleDistance: "",
engineNum: "", engineNum: "",
type: "", type: "",
typeStr:"",
typeStr: "",
userType: "", userType: "",
userTypeStr:"",
userTypeStr: "",
vehiclePlate: "", vehiclePlate: "",
vehiclePlateColor: "", vehiclePlateColor: "",
vehiclePlateColorStr:"",
vehiclePlateColorStr: "",
vin: "", vin: "",
wheelCount: "", wheelCount: "",
isJH: "", isJH: "",
isJHStr: "", isJHStr: "",
outsideDimensions: "", outsideDimensions: "",
loadStatus:""
loadStatus: ""
}); });
let cmdRandNum = ''; let cmdRandNum = '';
let orderInfo = {}; let orderInfo = {};
orderId: "", orderId: "",
vehicleClassStr: "" vehicleClassStr: ""
}); });

function cmdResult1() { function cmdResult1() {
// tools.showLoadingAlert('正在激活,请等待') // tools.showLoadingAlert('正在激活,请等待')
state.progressNum=10
state.progressNum = 10
const options = { const options = {
type: 2, //type: 2,JSON格式提交数据(默认表单形式提交) type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
showLoading: false, showLoading: false,
data: { data: {
orderId: orderInfo.orderNo, orderId: orderInfo.orderNo,
issueType: state.transfer ? 2 : 1, //1正常激活 2 过户激活 issueType: state.transfer ? 2 : 1, //1正常激活 2 过户激活
cardId:card.cardId,
obuId:obu.obuId
cardId: card.cardId,
obuId: obu.obuId
}, //请求参数 }, //请求参数
method: "POST", //提交方式(默认POST) method: "POST", //提交方式(默认POST)
}; };
console.log("options==", options) console.log("options==", options)
//BDS-二发指令申请 //BDS-二发指令申请
requestNew(issueApply, options) requestNew(issueApply, options)
.then((res) => { .then((res) => {
console.log("在线激活 请求"); console.log("在线激活 请求");
console.log(res); console.log(res);
const datas =res;
const datas = res;
bluetoothUtil.transCmd(datas.cmd.split(','), datas.cmdType == 'CARD' ? '10' : '20', function(res) { bluetoothUtil.transCmd(datas.cmd.split(','), datas.cmdType == 'CARD' ? '10' : '20', function(res) {
implementCmd(datas.transOrderId, datas.cmd, res.toString(), datas.stepNo) implementCmd(datas.transOrderId, datas.cmd, res.toString(), datas.stepNo)
}, (err) => { }, (err) => {
showModals('在线激活异常') showModals('在线激活异常')
console.log("err",err)
errorLog(datas.cmd,JSON.stringify(err),datas.stepNo)
console.log("err", err)
errorLog(datas.cmd, JSON.stringify(err), datas.stepNo)
tools.hideLoadingAlert(); tools.hideLoadingAlert();
state.showPopup=false
state.showPopup = false
state.disabled = true state.disabled = true
}); });
}) })
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);
tools.hideLoadingAlert(); tools.hideLoadingAlert();
state.showPopup=false
state.showPopup = false
state.disabled = true state.disabled = true
}); });
} }


function implementCmd(transOrderId, cmd, cmdResult, stepNo) { function implementCmd(transOrderId, cmd, cmdResult, stepNo) {
console.log("datas.stepNo1",stepNo)
state.progressNum=Number(stepNo)*10+10
console.log("datas.stepNo1", stepNo)
state.progressNum = Number(stepNo) * 10 + 10
const options = { const options = {
type: 2, //type: 2,JSON格式提交数据(默认表单形式提交) type: 2, //type: 2,JSON格式提交数据(默认表单形式提交)
showLoading: false, showLoading: false,
cmd, cmd,
cmdResult, cmdResult,
stepNo, stepNo,
mpOpenId:getItem('mpOpenId')//公众号openid
mpOpenId: getItem('mpOpenId') //公众号openid
}, //请求参数 }, //请求参数
method: "POST", //提交方式(默认POST) method: "POST", //提交方式(默认POST)
}; };
//BDS-二发指令回传 //BDS-二发指令回传
requestNew(issueCallback, options) requestNew(issueCallback, options)
.then((res) => { .then((res) => {
console.log("BDS-二发指令回传 ",res);
console.log("BDS-二发指令回传 ", res);
const datas = res; const datas = res;
console.log("在线激活 请求", datas); console.log("在线激活 请求", datas);
if (datas.stepNo == 100) { if (datas.stepNo == 100) {
state.disabled = true state.disabled = true
tools.hideLoadingAlert(); tools.hideLoadingAlert();
state.progressNum=100
state.progressNum = 100
setTimeout(() => { setTimeout(() => {
state.showPopup=false
},1000)
state.showPopup = false
}, 1000)
setTimeout(() => { setTimeout(() => {
msg("激活成功", { msg("激活成功", {
'icon': 'success', 'icon': 'success',
'duration': 3000 'duration': 3000
}) })
},2000)
}, 2000)
setTimeout(() => { setTimeout(() => {
getCardIdCommit() getCardIdCommit()
},5000)
}, 5000)
} else { } else {
console.log("datas.stepNo", datas.stepNo) console.log("datas.stepNo", datas.stepNo)
bluetoothUtil.transCmd(datas.cmd.split(','), datas.cmdType == 'CARD' ? '10' : '20', function(res) { bluetoothUtil.transCmd(datas.cmd.split(','), datas.cmdType == 'CARD' ? '10' : '20', function(res) {
implementCmd(transOrderId, datas.cmd, res.toString(), datas.stepNo) implementCmd(transOrderId, datas.cmd, res.toString(), datas.stepNo)
}, (err) => { }, (err) => {
console.log("err",err)
state.showPopup=false
console.log("err", err)
state.showPopup = false
state.disabled = true state.disabled = true
errorLog(datas.cmd,JSON.stringify(err),datas.stepNo)
errorLog(datas.cmd, JSON.stringify(err), datas.stepNo)
showModals('在线激活异常') showModals('在线激活异常')
}); });
} }
.catch((err) => { .catch((err) => {
console.log(err); console.log(err);
tools.hideLoadingAlert(); tools.hideLoadingAlert();
state.showPopup=false
state.showPopup = false
state.disabled = true state.disabled = true
}); });
} }


//开始激活 按钮事件 //开始激活 按钮事件
const btn = () => { const btn = () => {
if(!state.disabled){
if (!state.disabled) {
return; return;
} }
state.disabled = false state.disabled = false
state.showPopup=true
state.showPopup = true
console.log('orderInfo参数', orderInfo, state.disabled) console.log('orderInfo参数', orderInfo, state.disabled)
stopHeartbeat();
cmdResult1() cmdResult1()
}; };


const getCardId = () => { const getCardId = () => {
//执行0015文件 //执行0015文件
tools.showLoadingAlert("执行指令"); tools.showLoadingAlert("执行指令");
let cmdArr = [cmd.HOME_DIRECTORY, cmd.APPLICATION_DIRECTORY, cmd.CMD_READBINARY, cmd.CMD_GETBALANCE]; let cmdArr = [cmd.HOME_DIRECTORY, cmd.APPLICATION_DIRECTORY, cmd.CMD_READBINARY, cmd.CMD_GETBALANCE];
console.log(cmdArr); console.log(cmdArr);
console.log(bluetoothUtil); console.log(bluetoothUtil);
bluetoothUtil.transCmd(cmdArr, '10', function(res) { //10:写卡 20:写OBU bluetoothUtil.transCmd(cmdArr, '10', function(res) { //10:写卡 20:写OBU
console.log("5201",res)
console.log("5201", res)
let str = res[2].substring(res[2].length - 4, res[2].length); //判断是否为9000 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 let str3 = res[3].substring(res[3].length - 4, res[3].length); //判断是否为9000
if (str == "9000" || str3 == "9000") { if (str == "9000" || str3 == "9000") {
return; return;
} }
alertF("CMD_READBINARY指令长度不符" + res[2]); alertF("CMD_READBINARY指令长度不符" + res[2]);
}) })
}; };
const errorLog = (cmd,error,step) => {
const errorLog = (cmd, error, step) => {
console.log('激活异常提交') console.log('激活异常提交')
const options = { const options = {
type: 2, type: 2,
data: { data: {
cardId:card.cardId,
obuId:obu.obuId,
orderType:"1",
factory:datas.getData("deviceName")+"_"+datas.getData("deviceNameZW"),
orderNo:orderInfo.orderNo,
cardId: card.cardId,
obuId: obu.obuId,
orderType: "1",
factory: datas.getData("deviceName") + "_" + datas.getData("deviceNameZW"),
orderNo: orderInfo.orderNo,
cmd, cmd,
error, error,
step step
}; };
requestNew(errorLogAdd, options).then((res) => { requestNew(errorLogAdd, options).then((res) => {
console.log("错误提交成功", res); console.log("错误提交成功", res);
}); });
}; };
/** /**
console.log(cmdArr); console.log(cmdArr);
console.log(bluetoothUtil); console.log(bluetoothUtil);
bluetoothUtil.transCmd(cmdArr, '10', function(res) { //10:写卡 20:写OBU bluetoothUtil.transCmd(cmdArr, '10', function(res) { //10:写卡 20:写OBU
console.log("5201",res)
console.log("5201", res)
let str = res[2].substring(res[2].length - 4, res[2].length); //判断是否为9000 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 let str3 = res[3].substring(res[3].length - 4, res[3].length); //判断是否为9000
if (str == "9000" || str3 == "9000") { if (str == "9000" || str3 == "9000") {
card.money = res[3].substring(0, 8); card.money = res[3].substring(0, 8);
card.v_userType = parseInt(res[2].substring(80, 82), 16); card.v_userType = parseInt(res[2].substring(80, 82), 16);
console.log("card.v_userType", card.v_userType) console.log("card.v_userType", card.v_userType)
decryptCardVehicleInformation(res[2].substring(56, 80), function (res) {
card.vehiclePlate =res;
decryptCardVehicleInformation(res[2].substring(56, 80), function(res) {
card.vehiclePlate = res;
}); });
console.log("res[2].substring(18, 19)",res[2].substring(18, 20))
console.log("res[2].substring(18, 19)", res[2].substring(18, 20))
if (res[2].substring(18, 19) >= 4) { if (res[2].substring(18, 19) >= 4) {
//4x卡 //4x卡
card.type = parseInt(res[2].substring(84, 86), 16); card.type = parseInt(res[2].substring(84, 86), 16);
} else { } else {
//2x卡--获取车牌颜色 //2x卡--获取车牌颜色
card.type = "--"; card.type = "--";
card.color =parseInt(res[2].substring(82, 84), 16)
card.color = parseInt(res[2].substring(82, 84), 16)
card.colorStr = getVehiclePlateColor(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)); card.typeStr = getVehicleType(parseInt(res[2].substring(84, 86), 16));
} }
let str2 = res[1].substring(res[1].length - 4, res[1].length); let str2 = res[1].substring(res[1].length - 4, res[1].length);
if (str2 == "9000") { if (str2 == "9000") {
if (res[1].length > 108) { if (res[1].length > 108) {
console.log("res====",res)
decryptCardVehicleInformation(res[1].substring(4, 44), function (res) {
card.userName = res; //姓名
card.userNameStr = card.userName[0] + '*'.repeat(card.userName.length - 1)
console.log("res====", res)
decryptCardVehicleInformation(res[1].substring(4, 44), function(res) {
card.userName = res; //姓名
card.userNameStr = card.userName[0] + '*'.repeat(card
.userName.length - 1)
}); });
decryptCardVehicleInformation(res[1].substring(44, 108), function (res) {
card.idNum = res; //身份证号码
card.idNumStr=res.replace(/^\d{14}/,'**************')


decryptCardVehicleInformation(res[1].substring(44, 108), function(
res) {
card.idNum = res; //身份证号码
card.idNumStr = res.replace(/^\d{14}/, '**************')
}); });
//获取是否有优惠 //获取是否有优惠
let cmdArr3 = [cmd.HOME_DIRECTORY, cmd.APPLICATION_DIRECTORY, cmd let cmdArr3 = [cmd.HOME_DIRECTORY, cmd.APPLICATION_DIRECTORY, cmd
.CMD_00B08E0000 .CMD_00B08E0000
if (res[2].length > 131) { if (res[2].length > 131) {
let _str = parseInt(res[2].substring(129, 130), let _str = parseInt(res[2].substring(129, 130),
16); 16);
card.favourable=_str
card.favourable = _str
switch (_str) { switch (_str) {
case 0: case 0:
card.favourableStr = "否"; card.favourableStr = "否";
//回调读取OBU指令 //回调读取OBU指令
getObuIdCommit() getObuIdCommit()
tools.hideLoadingAlert(); tools.hideLoadingAlert();
} else { } else {
alertF("CMD_00B08E0000指令长度不符" + res[2]); alertF("CMD_00B08E0000指令长度不符" + res[2]);
} }
return; return;
} }
alertF("CMD_READBINARY指令长度不符" + res[2]); alertF("CMD_READBINARY指令长度不符" + res[2]);
}) })
}; };
/** /**
let str = res[1].substring(res[1].length - 4, res[1].length); let str = res[1].substring(res[1].length - 4, res[1].length);
if (str == "9000") { if (str == "9000") {
if (res[1].length > 52) { if (res[1].length > 52) {
obu.num = res[1].substring(20, 36); obu.num = res[1].substring(20, 36);
obu.startTime = res[1].substring(36, 44); obu.startTime = res[1].substring(36, 44);
obu.endTime = res[1].substring(44, 52); obu.endTime = res[1].substring(44, 52);
obu.version = res[1].substring(18, 20); obu.version = res[1].substring(18, 20);
obu.isJH = res[1].substring(53, 54) obu.isJH = res[1].substring(53, 54)
obu.isJHStr = res[1].substring(53, 54) == "1" ? "是" : res[1].substring(53, 54) == "0" ? obu.isJHStr = res[1].substring(53, 54) == "1" ? "是" : res[1].substring(53, 54) == "0" ?
"否" : "其他:" + res[1].substring(53, 54);
obu.loadStatus=res[1].substring(52, 54)=='01'?'正常':'已拆卸',
console.log("开始执行车辆信息识读");
let rand = res[1].substring(18, 20) >= 50?'40':'00';
var arr = [cmd.OBU_DF01, '00B400000A000000000000000045'+ rand];
"否" : "其他:" + res[1].substring(53, 54);
obu.loadStatus = res[1].substring(52, 54) == '01' ? '正常' : '已拆卸',
console.log("开始执行车辆信息识读");
let rand = res[1].substring(18, 20) >= 50 ? '40' : '00';
var arr = [cmd.OBU_DF01, '00B400000A000000000000000045' + rand];
bluetoothUtil.transCmd(arr, '20', function(res) { bluetoothUtil.transCmd(arr, '20', function(res) {
console.log(res); console.log(res);
console.log("开始执行车辆信息识读成功"); console.log("开始执行车辆信息识读成功");
let proviceCode = '5201'; let proviceCode = '5201';
if (str2 == "9000") { if (str2 == "9000") {
console.log("===========", obu.num, res[1].substring(0, res[1].length - 4)) console.log("===========", obu.num, res[1].substring(0, res[1].length - 4))
decryptObuVehicleInfo(obu.num, res[1].substring(0, res[1].length - 4),
obuVersion, rand, reqType, proviceCode,
decryptObuVehicleInfo(obu.num, res[1].substring(0, res[1].length - 4),
obuVersion, rand, reqType, proviceCode,
function(res) { function(res) {
obu.approvedCount = res.approvedCount; obu.approvedCount = res.approvedCount;
obu.axleCount = res.axleCount; obu.axleCount = res.axleCount;
obu.axleDistance = res.axleDistance; obu.axleDistance = res.axleDistance;
obu.type = res.collectionType; obu.type = res.collectionType;
obu.typeStr = getVehicleType(res.collectionType); obu.typeStr = getVehicleType(res.collectionType);
obu.userType = res.userType; obu.userType = res.userType;
if(res.userType == 0){
obu.userTypeStr = "普通车" ;
}else if(res.userType == 6){
obu.userTypeStr = "公务车" ;
if (res.userType == 0) {
obu.userTypeStr = "普通车";
} else if (res.userType == 6) {
obu.userTypeStr = "公务车";
} }
obu.vehiclePlate = res.vehiclePlate.replace(/\u0000/g, ''); obu.vehiclePlate = res.vehiclePlate.replace(/\u0000/g, '');
//获取车牌颜色 //获取车牌颜色
obu.vehiclePlateColor = res.vehiclePlateColor; obu.vehiclePlateColor = res.vehiclePlateColor;
obu.vehiclePlateColorStr = getVehiclePlateColor(res.vehiclePlateColor);
obu.vehiclePlateColorStr = getVehiclePlateColor(res
.vehiclePlateColor);
obu.vin = res.vin.replace(/\u0000/g, ''); obu.vin = res.vin.replace(/\u0000/g, '');
obu.wheelCount = res.wheelsCount; obu.wheelCount = res.wheelsCount;
obu.outsideDimensions = res.carLong + "x" + res.carWidth + "x" + res.carHeight
obu.outsideDimensions = res.carLong + "x" + res.carWidth +
"x" + res.carHeight
getObuList(); getObuList();
tools.hideLoadingAlert(); tools.hideLoadingAlert();
}); });
//断开蓝牙 //断开蓝牙
} }
alertF("OBU_00B400000A+rand+OBU_4F00指令长度不符" + res[1]); alertF("OBU_00B400000A+rand+OBU_4F00指令长度不符" + res[1]);
}) })
} else { } else {
alertF("OBU_SYSTEM_FILE指令长度不符" + res[1]); alertF("OBU_SYSTEM_FILE指令长度不符" + res[1]);
} }
const getObuList = () => { const getObuList = () => {
var data = { var data = {
obuId: obu.num, obuId: obu.num,
cardId:card.cardNo,
cardId: card.cardNo,
}; };
const options = { const options = {
type: 2, type: 2,
requestNew(cardObuQuery, options).then((res) => { requestNew(cardObuQuery, options).then((res) => {
tools.hideLoadingAlert(); tools.hideLoadingAlert();
let result = res; let result = res;
state.obuStatus = result.obuStatus?result.obuStatus:""
state.obuStatus = result.obuStatus ? result.obuStatus : ""
state.cardStatus = result.cardStatus state.cardStatus = result.cardStatus
if (result.cardType == 1 && result.debitType == 1) { if (result.cardType == 1 && result.debitType == 1) {
state.cardTypeName = "预存卡" state.cardTypeName = "预存卡"
card['cardTypeName']=3
card['cardTypeName'] = 3
} else if (result.cardType == 2) { } else if (result.cardType == 2) {
state.cardTypeName = "储值卡" state.cardTypeName = "储值卡"
card['cardTypeName']=2
card['cardTypeName'] = 2
} else { } else {
state.cardTypeName = "记账卡" state.cardTypeName = "记账卡"
card['cardTypeName']=1
card['cardTypeName'] = 1
} }
// 卡签提交得信息 // 卡签提交得信息
card['cardStatus']=result.cardStatus
obu['obuStatus']=result.obuStatus?result.obuStatus:""
card['cardStatus'] = result.cardStatus
obu['obuStatus'] = result.obuStatus ? result.obuStatus : ""
cardObuMsgUp() cardObuMsgUp()
}) })
} }
const cardObuMsgUp = () => { const cardObuMsgUp = () => {
var data = { var data = {
cardLogInfo: card, cardLogInfo: card,
obuLogInfo:obu,
type:"active"
obuLogInfo: obu,
type: "active"
}; };
const options = { const options = {
type: 2, type: 2,
/** /**
* 解密OBU车辆信息 * 解密OBU车辆信息
*/ */
const decryptObuVehicleInfo = (num, data,obuVersion, keyIndex, reqType, proviceCode, func) => {
const decryptObuVehicleInfo = (num, data, obuVersion, keyIndex, reqType, proviceCode, func) => {
const options = { const options = {
type: 2, type: 2,
data: { data: {
showLoading: true, showLoading: true,
}; };
requestNew(obuFileDataDecrypt, options).then((res) => { requestNew(obuFileDataDecrypt, options).then((res) => {
console.log("obuFileDataDecrypt",res)
const data =res
console.log("obuFileDataDecrypt", res)
const data = res
func(data) func(data)
}); });
}; };
color: white; color: white;
font-size: 32rpx; font-size: 32rpx;
text-align: center; text-align: center;
background: linear-gradient(to right,#01243A,#004576);
background: linear-gradient(to right, #01243A, #004576);
border-radius: 40rpx; border-radius: 40rpx;
outline: none; outline: none;
border: #4cd95f; border: #4cd95f;
font-size: 34rpx; font-size: 34rpx;
border-radius: 20rpx; border-radius: 20rpx;
} }
.mask{

.mask {
width: 100%; width: 100%;
height:100vh;
background:rgba(0,0,0,0.63);
height: 100vh;
background: rgba(0, 0, 0, 0.63);
position: fixed; position: fixed;
left: 0; left: 0;
top: 0; top: 0;

+ 8
- 1
subpackage/orders/transfer-page-sign.vue Parādīt failu

state.agreeURL.push(obj) state.agreeURL.push(obj)
} }
} }
contractRequest()
// QT(黔通智联) QD (渠道)
// 申办ETC的时候,判断如果这个字段的值如果是QD就不需要在九州小程序里签协议
if(state.details['etcUserAgreement']=='QT'){
contractRequest()
}else{
state.isSign=true
getWrlds()
}
console.log("查协议", state.agreeURL) console.log("查协议", state.agreeURL)
}); });
} }

+ 2
- 2
utils/network/request.js Parādīt failu

// #ifdef MP-WEIXIN // #ifdef MP-WEIXIN
Common['orderSource'] = "WECHAT" Common['orderSource'] = "WECHAT"
// #endif // #endif
options.url = envs[process.env.NODE_ENV].baseUrl+'/prod' + code
// options.url = envs[process.env.NODE_ENV].baseUrl+'/ndev' + code
// options.url = envs[process.env.NODE_ENV].baseUrl+'/prod' + code
options.url = envs[process.env.NODE_ENV].baseUrl+'/ndev' + code
//默认json数据格式提交` //默认json数据格式提交`
let contentType = 'application/json' let contentType = 'application/json'



Notiek ielāde…
Atcelt
Saglabāt