DESKTOP-2IO5MST\huting 1 рік тому
джерело
коміт
25349b44b1

+ 7
- 1
composables/order/useOrderListItem.ts Переглянути файл

@@ -9,7 +9,7 @@ import { getItem, StorageKeys } from "@/utils/storage";
import { hasLogin, msg, timesDiff } from "@/utils/utils";
import { orderList } from "@/utils/network/api";
import { PageData } from "@/datas/enum";
const tools = require("../../static/etcUtil/tools.js");
export default function useOrderListItem(props) {
//搜索关键字
const searchKeyWords = ref('');
@@ -46,8 +46,14 @@ export default function useOrderListItem(props) {
msg('请输入需要搜索的车牌号!');
return;
}
refreshList(true);
// #endif
// #ifdef MP-ALIPAY
tools.showLoadingAlert("加载中");
refreshList(true);
tools.hideLoadingAlert();
// #endif

}

//订单车牌号输入

+ 2
- 0
pages/bluetooth/bluetooth.vue Переглянути файл

@@ -184,6 +184,7 @@
* 打开蓝牙
*/
const openBluetooth = () => {
tools.hideLoadingAlert();
let foundDevices = []; //扫描到的蓝牙列表
uni.closeBluetoothAdapter(); //先关闭蓝牙

@@ -541,6 +542,7 @@
} else {
return;
}

}

/**

+ 18
- 23
static/etc/TDRAPI/TDRObuSDK.js Переглянути файл

@@ -140,7 +140,6 @@ function conn(device, callback_1, callback_2) {
if ((endTime - beginTime) >= 3000) {
mIsInitCmdSend = false;
m_isConn = false;
console.log('00000000');
callback_2(makeRes(-1, [], '蓝牙已断开'))
}
}
@@ -217,6 +216,7 @@ function conn(device, callback_1, callback_2) {
console.log('******解析后的指令数据为' + mReturnedRawCmdData)
if (receiveDataCallBack) {
receiveDataCallBack(makeRes(errorcode, mReturnedRawCmdData, errorcode == 0 ? '收到数据成功' : '数据透传失败'))
receiveDataCallBack = null
}
mUnpacketDataCache = []
}
@@ -374,9 +374,7 @@ function subReqDataAndMakeEtcProtoPacket(etcProtoData) {
let totalDataLen = etcProtoData.length;
let blockSize = maxLenPerPacket;
let offset = 0
//if (blockSize == undefined)
if(!blockSize)
{
if (blockSize == undefined) {
blockSize = 100
}

@@ -399,9 +397,6 @@ function subReqDataAndMakeEtcProtoPacket(etcProtoData) {
for (; offset < (totalDataLen - blockSize); offset += blockSize) {
_pack.packNumOffset = PackNumOffset;
sendBuff.push.apply(sendBuff, pSendBuf.slice(offset, offset + blockSize))
let sendBuffDataLen = sendBuff.length ;
if (sendBuffDataLen == 0)
return ;
hr = makeSingleEtcProtocolPaket(sendBuff, _pack)
if (hr != 0) {
return hr;
@@ -621,22 +616,22 @@ function ab2hexArr(arr) {
return hexArr;
}

// function str2Bytes(str) {
// var pos = 0;
// var len = str.length;
// if (len % 2 != 0) {
// return null;
// }
// len /= 2;
// var hexA = new Array();
// for (var i = 0; i < len; i++) {
// var s = str.substr(pos, 2);
// var v = parseInt(s, 16);
// hexA.push(v);
// pos += 2;
// }
// return hexA;
// }
function str2Bytes(str) {
var pos = 0;
var len = str.length;
if (len % 2 != 0) {
return null;
}
len /= 2;
var hexA = new Array();
for (var i = 0; i < len; i++) {
var s = str.substr(pos, 2);
var v = parseInt(s, 16);
hexA.push(v);
pos += 2;
}
return hexA;
}

function makeHandShakeStep1WithETC() {
let cBuff = []

+ 6
- 0
static/etcUtil/index.js Переглянути файл

@@ -128,7 +128,9 @@ function transCmd(cmdArr, type, func, callBack = null) {
console.log('指令执行内容', cmdArr, type)
switch (connectPrefixName) {
case "WJ":
console.log('WJ执行内容====', cmdArr, type)
wjApi.transCmd(cmdArr, type, function(res) {
console.log('WJ执行内容====11111', res)
if (res.code == 0) {
func(res.data);
} else {
@@ -141,7 +143,9 @@ function transCmd(cmdArr, type, func, callBack = null) {
});
break;
case "JL":
console.log('JL执行内容====', cmdArr, type)
jlApi.transCmd(cmdArr, type, function(res) {
console.log('JL执行内容====11111', res)
if (res.code == 0) {
func(res.data);
} else {
@@ -232,7 +236,9 @@ function transCmd(cmdArr, type, func, callBack = null) {
});
break;
case "TD":
console.log('TD执行内容====', cmdArr, type)
tdApi.transCmd(cmdArr, type, function(res) {
console.log('TD执行内容====', cmdArr, type)
if (res.code == 0) {
func(res.data);
} else {

+ 31
- 27
static/etcUtil/tools.js Переглянути файл

@@ -151,33 +151,37 @@ function navigateBack(delta, successFunc = null, failFunc = null) {
/********************** showModalAlert ************************/

function showModalAlert(content, successFunc = null, failFunc = null, title = '温馨提示', showCancel = false) {
uni.showModal({
title: title,
content: content,
showCancel: showCancel,
//是否显示取消按钮
cancelText: '取消',
//默认是“取消”
cancelColor: theme.cancelModalColor,
//取消文字的颜色
confirmText: '确定',
//默认是“确定”
confirmColor: theme.modalColor,
//确定文字的颜色
success: function(res) {
//接口调用成功的回调函数
if (successFunc != null) {
successFunc(res);
}
},
fail: function(res) {
//接口调用失败的回调函数
if (failFunc != null) {
failFunc(res);
}
},
complete: function(res) {} //接口调用结束的回调函数(调用成功、失败都会执行)
});
console.log("温馨提示", title, content != "")
if (content != "") {
uni.showModal({
title: title,
content: content,
showCancel: showCancel,
//是否显示取消按钮
cancelText: '取消',
//默认是“取消”
cancelColor: theme.cancelModalColor,
//取消文字的颜色
confirmText: '确定',
//默认是“确定”
confirmColor: theme.modalColor,
//确定文字的颜色
success: function(res) {
//接口调用成功的回调函数
if (successFunc != null) {
successFunc(res);
}
},
fail: function(res) {
//接口调用失败的回调函数
if (failFunc != null) {
failFunc(res);
}
},
complete: function(res) {} //接口调用结束的回调函数(调用成功、失败都会执行)
});
}

}
/*******************showToastAlert********************/


+ 1
- 0
subpackage/after-sale/ETC-product-status-list-query/ETC-product-status-list-query.vue Переглянути файл

@@ -168,6 +168,7 @@
left: 0;
background: white;
box-sizing: border-box;
width: 100%;
}

.content {

+ 221
- 257
subpackage/after-sale/account-change/cancellation-contract.vue Переглянути файл

@@ -1,266 +1,230 @@
<template>
<view class="oderPage">
<view class="head">
您的ETC卡类型是记账卡,需要先解约,才可继续办理更换业务,请确认您的签约信息
</view>
<view class="content">
<view class="row">
<text>签约银行</text>
<text>工商银行</text>
</view>
<view class="row">
<text>签约时间</text>
<text>2022-10-11 12:11:12</text>
</view>
<view class="row">
<text>卡号</text>
<text>12312313213123</text>
</view>
<view class="row">
<text>车牌号</text>
<text>贵A123321</text>
</view>
</view>
<button class="submit" @click="toPage()">下一步</button>
</view>
<view class="oderPage">
<view class="head">
您的ETC卡类型是记账卡,需要先解约,才可继续办理更换业务,请确认您的签约信息
</view>
<view class="content">
<view class="row">
<text>签约银行</text>
<text>工商银行</text>
</view>
<view class="row">
<text>签约时间</text>
<text>2022-10-11 12:11:12</text>
</view>
<view class="row">
<text>卡号</text>
<text>12312313213123</text>
</view>
<view class="row">
<text>车牌号</text>
<text>贵A123321</text>
</view>
</view>
<button class="submit" @click="toPage()">下一步</button>
</view>
</template>

<script setup lang="ts">
import navBar from "./components/nav-bar.vue";
import { checkStr } from "@/utils/utils";
import { ref, reactive } from "vue";
import { navTo } from "@/utils/utils";
import { onReady } from "@dcloudio/uni-app";

// 表单数据
const form = reactive({
bank: "工商银行",
time: "2022-10-11 10:12:30",
code: "12321123312313",
carID: "贵A123321",
});
// 验证规则
const rules = {
receiving1: [
{
required: true,
message: "请选择",
trigger: ["change", "blur"],
},
],
receiving2: [
{
required: true,
message: "请选择",
trigger: ["change", "blur"],
},
],
code: [
{
required: true,
message: "请输入",
trigger: ["change", "blur"],
},
],
phone: [
{
required: true,
message: "请输入手机号",
trigger: ["change", "blur"],
},
{
// 自定义验证函数,见上说明
validator: (rule, value, callback) => {
// 上面有说,返回true表示校验通过,返回false表示不通过
console.log(checkStr(value, "mobile"), "0011");
return checkStr(value, "mobile");
},
message: "手机号码不正确",
trigger: ["change", "blur"],
},
],
// status: [{
// required: true,
// message: '请选择状态',
//
// trigger: ['change', 'blur'],
};
// 验证提示类型(toast要版本为1.3.5才支持)
const errorType = ["message", "border-bottom", "toast"];

// 设置验证规则
const myForm = ref(null);
onReady(() => {
myForm.value.setRules(rules);
});

// 单选数据列表
const radiolist1 = reactive([
{
name: "营业点自提",
disabled: false,
},
{
name: "邮寄",
disabled: false,
},
]);

// 单选
const radioChange = (n) => {
console.log("radioChange", n);
// if (n == '卡退费') {
// flag.value = true
// console.log(flag.value);
// } else {
// flag.value = false
// console.log(flag.value);
// }
};

// // 提交
// const submit = () => {
// myForm.value.validate((valid) => {
// console.log(valid);
// if (valid) {
// console.log('验证通过', form);
// } else {
// console.log('验证未通过');
// }
// })
// }
const toPage = () => {
navTo("/subpackage/after-sale/account-change/release-products");
// uni.showModal({
// title: '模拟两种情况',
// confirmText: '有卡有签',
// cancelText: '无卡无签',
// success: function(res) {
// if (res.confirm) {
// console.log('用户点击确定');
// navTo('/pages/bluetooth/bluetooth')
// } else if (res.cancel) {
// console.log('用户点击取消');
// navTo('/subpackage/after-sale/ETC-log-off/upload-card')
// }
// }
// });
};
import navBar from "./components/nav-bar.vue";
import { checkStr } from "@/utils/utils";
import { ref, reactive } from "vue";
import { navTo } from "@/utils/utils";
import { onReady } from "@dcloudio/uni-app";

// 表单数据
const form = reactive({
bank: "工商银行",
time: "2022-10-11 10:12:30",
code: "12321123312313",
carID: "贵A123321",
});
// 验证规则
const rules = {
receiving1: [
{
required: true,
message: "请选择",
trigger: ["change", "blur"],
},
],
receiving2: [
{
required: true,
message: "请选择",
trigger: ["change", "blur"],
},
],
code: [
{
required: true,
message: "请输入",
trigger: ["change", "blur"],
},
],
phone: [
{
required: true,
message: "请输入手机号",
trigger: ["change", "blur"],
},
{
// 自定义验证函数,见上说明
validator: (rule, value, callback) => {
// 上面有说,返回true表示校验通过,返回false表示不通过
console.log(checkStr(value, "mobile"), "0011");
return checkStr(value, "mobile");
},
message: "手机号码不正确",
trigger: ["change", "blur"],
},
],
};
// 验证提示类型(toast要版本为1.3.5才支持)
const errorType = ["message", "border-bottom", "toast"];

// 设置验证规则
const myForm = ref(null);
onReady(() => {
myForm.value.setRules(rules);
});

// 单选数据列表
const radiolist1 = reactive([
{
name: "营业点自提",
disabled: false,
},
{
name: "邮寄",
disabled: false,
},
]);

// 单选
const radioChange = (n) => {
console.log("radioChange", n);
};


const toPage = () => {
navTo("/subpackage/after-sale/account-change/release-products");
};
</script>

<style>
page {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
background: #eef7f7;
}
page {
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
background: #eef7f7;
}
</style>
<style lang="scss" scoped>
.oderPage {
flex: 1;
width: 100%;
.head {
padding: 30rpx;
font-size: 28rpx;
color: #303133;
padding-bottom: 0;
}
.content {
background-color: #fff;
background-color: #fff;
margin-top: 30rpx;
padding: 0 30rpx;
.row {
display: flex;
justify-content: space-between;
padding: 30rpx 0;
border-bottom: 1rpx solid #dcdcdc;
}
}
.from {
background-color: #fff;
margin-top: 30rpx;
padding: 0 30rpx;
::v-deep .u-form-item {
padding: 0;
line-height: normal;
.u-form-item__message {
margin-bottom: 12rpx;
}
}
.from_item {
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
align-items: center;
height: 80rpx;
border-bottom: 1rpx solid #dcdcdc;
.btn {
font-size: 24rpx;
font-family: Microsoft YaHei;
font-weight: 400;
color: #ffffff;
background: #00b38b;
border-radius: 10rpx;
padding: 10rpx 15rpx;
}
::v-deep .input {
text-align: right;
flex: 1;
input {
text-align: right;
}
}
}
.from_item1 {
display: flex;
flex-wrap: nowrap;
flex-direction: column;
justify-content: space-between;
padding: 30rpx;
border-bottom: #dcdcdc 1px solid;
input {
text-align: right;
}
.textarea {
background-color: #f1f1f1;
width: 100%;
border-radius: 20rpx;
margin-top: 10rpx;
text-indent: 1rem;
height: 180rpx;
padding: 20rpx;
box-sizing: border-box;
}
}
}
}
.submit {
background: linear-gradient(to left, #43a1e0 0%, #13e7c1 100%);
width: 670rpx;
height: 80rpx;
color: #fff;
border-radius: 100rpx;
position: fixed;
left: 50%;
transform: translate(-50%);
bottom: 60rpx;
font-size: 32rpx;
}
</style>
.oderPage {
flex: 1;
width: 100%;

.head {
padding: 30rpx;
font-size: 28rpx;
color: #303133;
padding-bottom: 0;
}

.content {
background-color: #fff;
background-color: #fff;
margin-top: 30rpx;
padding: 0 30rpx;

.row {
display: flex;
justify-content: space-between;
padding: 30rpx 0;
border-bottom: 1rpx solid #dcdcdc;
}
}
.from {
background-color: #fff;
margin-top: 30rpx;
padding: 0 30rpx;
::v-deep .u-form-item {
padding: 0;
line-height: normal;
.u-form-item__message {
margin-bottom: 12rpx;
}
}
.from_item {
display: flex;
flex-wrap: nowrap;
justify-content: space-between;
align-items: center;
height: 80rpx;
border-bottom: 1rpx solid #dcdcdc;
.btn {
font-size: 24rpx;
font-family: Microsoft YaHei;
font-weight: 400;
color: #ffffff;
background: #00b38b;
border-radius: 10rpx;
padding: 10rpx 15rpx;
}
::v-deep .input {
text-align: right;
flex: 1;
input {
text-align: right;
}
}
}
.from_item1 {
display: flex;
flex-wrap: nowrap;
flex-direction: column;
justify-content: space-between;
padding: 30rpx;
border-bottom: #dcdcdc 1px solid;
input {
text-align: right;
}
.textarea {
background-color: #f1f1f1;
width: 100%;
border-radius: 20rpx;
margin-top: 10rpx;
text-indent: 1rem;
height: 180rpx;
padding: 20rpx;
box-sizing: border-box;
}
}
}
}
.submit {
background: linear-gradient(to left, #43a1e0 0%, #13e7c1 100%);
width: 670rpx;
height: 80rpx;
color: #fff;
border-radius: 100rpx;
position: fixed;
left: 50%;
transform: translate(-50%);
bottom: 60rpx;
font-size: 32rpx;
}
</style>

+ 2
- 2
subpackage/after-sale/card-Renewal/renewal-confirm.vue Переглянути файл

@@ -69,8 +69,8 @@
<view> 3.xxxxxxxx </view>
<view> 4.xxxxxxxx </view>
</view> -->
<button class="submit" @click="toPage" v-show="!state.flag">卡签续期</button>
<button class="submit" @click="toBack" v-show="state.flag">返回服务中心</button>
<button class="submit" @click="toPage" v-if="!state.flag">卡签续期</button>
<button class="submit" @click="toBack" v-else="state.flag">返回服务中心</button>
<view class="mask" v-show="state.showPopup">
<view class="main">
<view class="top">

+ 2
- 2
subpackage/after-sale/card-deactivation-activation/deactivation-activation-confirm.vue Переглянути файл

@@ -68,8 +68,8 @@
<view> 3.xxxxxxxx </view>
<view> 4.xxxxxxxx </view>
</view> -->
<button class="submit" @click="toPage" v-show="!state.flag">{{orderInfos.cardStatus ==1?'卡签停用':'卡签启用'}}</button>
<button class="submit" @click="toBack" v-show="state.flag">返回服务中心</button>
<button class="submit" @click="toPage" v-if="!state.flag">{{orderInfos.cardStatus ==1?'卡签停用':'卡签启用'}}</button>
<button class="submit" @click="toBack" v-else>返回服务中心</button>
<view class="mask" v-show="state.showPopup">
<view class="main">
<view class="top">

+ 2
- 3
subpackage/after-sale/equipment-upgrade/upgrade-confirm.vue Переглянути файл

@@ -62,8 +62,8 @@
</view>
</view>
</view>
<button class="submit" @click="toPage" v-show="!state.flag" :disabled="state.disabled">设备升级</button>
<button class="submit" @click="toBack" v-show="state.flag">返回服务中心</button>
<button class="submit" @click="toPage" v-if="!state.flag" :disabled="state.disabled">设备升级</button>
<button class="submit" @click="toBack" v-else>返回服务中心</button>

<view class="mask" v-show="state.showPopup">
<view class="main">
@@ -275,7 +275,6 @@

//返回列表
const toBack = () => {
// navTo("/pages/service/service")
uni.navigateBack({
delta: 2
})

+ 7
- 7
subpackage/after-sale/pin-code-deblocking/pin-code-confirm.vue Переглянути файл

@@ -47,8 +47,8 @@
</view>
</view>
</view>
<button class="submit" @click="toPage" v-show="!state.flag" :disabled="state.disabled">卡PIN码解锁</button>
<button class="submit" @click="toBack" v-show="state.flag">返回服务中心</button>
<button class="submit" @click="toPage" v-if="!state.flag" :disabled="state.disabled">卡PIN码解锁</button>
<button class="submit" @click="toBack" v-else>返回服务中心</button>

<view class="mask" v-show="state.showPopup">
<view class="main">
@@ -207,12 +207,12 @@
} else if (cosResponse == "9303") {
tools.showModalAlert("此卡pin已永久锁定!请联系客服进行换卡处理!", function successFunc() {});
} else {
console.log("卡执行指令结果",res)
console.log("卡执行指令结果", res)
let cosResponse = ""
for(let i = 0; i < res.length; i++){
if(i < res.length - 1 ){
for (let i = 0; i < res.length; i++) {
if (i < res.length - 1) {
cosResponse += res[i] + ","
}else{
} else {
cosResponse += res[i]
}
}
@@ -480,4 +480,4 @@
color: #333;
}
}
</style>
</style>

+ 128
- 122
subpackage/after-sale/refundPage.vue Переглянути файл

@@ -3,7 +3,8 @@
<view class="content">
<text class="title">卡上余额(元)</text>
<view class="">
<text style="font-size: 30rpx;">¥</text>{{state.hasData.cardBalance? state.hasData.cardBalance / 100:state.hasData.cardBalance}}
<text
style="font-size: 30rpx;">¥</text>{{state.hasData.cardBalance? state.hasData.cardBalance / 100:state.hasData.cardBalance}}
</view>
</view>
<view class="from">
@@ -18,7 +19,7 @@
</u-radio-group>
</view>
<view v-if="flag">
<view class="from_item" >
<view class="from_item">
<text>联系人姓名:</text>
<input type="text" name="" id="" placeholder="请输入联系人姓名" v-model="state.hasData.customerName">
</view>
@@ -31,24 +32,24 @@
</view>
<view class="from_item" v-if="state.isShow">
<text>开户行支行:</text>
<input type="number" placeholder="开户行支行" v-model="state.branchName">
<input placeholder="开户行支行" v-model="state.branchName">
</view>
<view class="from_item" v-if="state.isShow">
<text>退费银行卡号:</text>
<input type="number" placeholder="请输入银行卡号" v-model="state.bankCardId">
<input type="number" placeholder="请输入银行卡号" v-model="state.bankCardId">
</view>
<view class="from_item" v-if="state.isShow">
<text>开户行地址:</text>
<picker mode="region" @change="choiceAddress" >
<picker mode="region" @change="choiceAddress">
<view>{{state.addressShow}}</view>
</picker>
</view>
<u-form-item label="手机号" class="phoneBox" >
<u-form-item label="手机号" class="phoneBox">
<u-input placeholder='请输入手机号' type="number" v-model="state.tel" />
<u-button type="success" size="mini" @click="getCode" v-if="waitTime==0">获取验证码</u-button>
<text class="agreen" v-else>{{waitTime}}后重试</text>
</u-form-item>
<u-form-item label="验证码" >
<u-form-item label="验证码">
<u-input placeholder='请输入验证码' type="number" v-model="state.newMobileCode" class="code" />
</u-form-item>
<view class="from_item">
@@ -72,68 +73,68 @@
</u-radio-group>
</view>
</view>
</view>
<button class="submit" @click="sure()">确认退费</button>
</view>
</template>

<script setup lang="ts">
import {ref,reactive} from "vue";
import { checkStr, msg } from "@/utils/utils";
import {navTo} from "@/utils/utils";
import {queryRefund,queryCardFreeExit,queryRefundApply,sendCode} from "@/utils/network/api.js";
import {onLoad} from "@dcloudio/uni-app";
import {request} from "@/utils/network/request.js";
import {stringToJson} from "@/utils/network/encryption";
import { ref, reactive } from "vue";
import { checkStr, msg } from "@/utils/utils";
import { navTo } from "@/utils/utils";
import { queryRefund, queryCardFreeExit, queryRefundApply, sendCode } from "@/utils/network/api.js";
import { onLoad } from "@dcloudio/uni-app";
import { request } from "@/utils/network/request.js";
import { stringToJson } from "@/utils/network/encryption";
// 单选数据列表
const radiolist1 = reactive([{
name: '卡退费',
disabled: false
},
{
name: '余额补领',
disabled: false
},
], )
name: '卡退费',
disabled: false
},
{
name: '余额补领',
disabled: false
},
])
const radiolist2 = reactive([{
name: '银行卡',
disabled: false
},
{
name: '现金',
disabled: false
},
], )
name: '银行卡',
disabled: false
},
{
name: '现金',
disabled: false
},
])
const radiolist3 = reactive([{
name: '个人',
disabled: false
},
{
name: '单位',
disabled: false
},
], )
name: '个人',
disabled: false
},
{
name: '单位',
disabled: false
},
])
const state = reactive({
name:'',
phone:"",
bank:"",
vehicleId:"", //车牌号
hasData:{}, //通过车牌查出来的数据
address:"", //地址
addressShow:"请选择开户行地址", //展示的地址
tel:"",
newMobileCode:"",
bankType:"", //开户行
branchName:"", //开户行支行
refoundMethod:1, //退款方式 1:银行卡 2现金
array: ['贵阳银行股份有限公司', '中国工商银行股份有限公司', '中国建设银行股份有限公司', '中国银行股份有限公司','中国农业银行股份有限公司','中国交通银行股份有限公司',
'兴业银行股份有限公司','平安银行股份有限公司','中国邮政储蓄银行股份有限公司','中国光大银行股份有限公司','贵州银行股份有限公司','中国民生银行股份有限公司',
'招商银行股份有限公司','.农村信用社联合社','农村商业银行'],
name: '',
phone: "",
bank: "",
vehicleId: "", //车牌号
hasData: {}, //通过车牌查出来的数据
address: "", //地址
addressShow: "请选择开户行地址", //展示的地址
tel: "",
newMobileCode: "",
bankType: "", //开户行
branchName: "", //开户行支行
refoundMethod: 1, //退款方式 1:银行卡 2现金
array: ['贵阳银行股份有限公司', '中国工商银行股份有限公司', '中国建设银行股份有限公司', '中国银行股份有限公司', '中国农业银行股份有限公司', '中国交通银行股份有限公司',
'兴业银行股份有限公司', '平安银行股份有限公司', '中国邮政储蓄银行股份有限公司', '中国光大银行股份有限公司', '贵州银行股份有限公司', '中国民生银行股份有限公司',
'招商银行股份有限公司', '.农村信用社联合社', '农村商业银行'],
index: -1,
cusType:1, //用户类型 1-个人 2-单位
bankCardId:"", //银行卡号
isShow:true, //是否展示银行卡那些
cusType: 1, //用户类型 1-个人 2-单位
bankCardId: "", //银行卡号
isShow: true, //是否展示银行卡那些
});
// 单选默认数据
const radiovalue1 = ref('卡退费')
@@ -159,17 +160,17 @@
console.log('radioChange', n);
if (n == '银行卡') {
refundType.value = true
state.refoundMethod=1
state.isShow=true;
state.refoundMethod = 1
state.isShow = true;
console.log(refundType.value);
} else {
refundType.value = false
state.refoundMethod=2
state.isShow=false;
state.bankType="";
state.branchName="";
state.bankCardId="";
state.address="";
state.refoundMethod = 2
state.isShow = false;
state.bankType = "";
state.branchName = "";
state.bankCardId = "";
state.address = "";
console.log(refundType.value);
}
}
@@ -180,52 +181,52 @@
console.log('radioChange', n);
if (n == '个人') {
refundType3.value = true
state.cusType=1
state.cusType = 1
console.log(refundType.value);
} else {
refundType3.value = false
state.cusType=2
state.cusType = 2
console.log(refundType.value);
}
}
/*视图进入后操作*/
onLoad((option) => {
state.vehicleId = option.vehicleId
queryRefundAction();
queryRefundAction();
});
const sure=()=>{
const sure = () => {
// 卡退费
if(flag.value){
if (flag.value) {
// 银行卡才需要做这些判断
if(refundType.value){
if(state.array[state.index]=='请选择'){
if (refundType.value) {
if (state.array[state.index] == '请选择') {
msg("请输入开户行!");
return;
}
if(!state.branchName){
if (!state.branchName) {
msg("请输入开户行支行!");
return;
}
if(state.addressShow=="请选择开户行地址"){
if (state.addressShow == "请选择开户行地址") {
msg("请选择开户行地址!");
return;
}
if(!state.bankCardId){
if (!state.bankCardId) {
msg("请输入银行卡号!");
return;
}
}
if (!checkStr(state.tel, "mobile")) {
msg("请输入正确的手机号!");
return;
msg("请输入正确的手机号!");
return;
}
if(!state.newMobileCode){
if (!state.newMobileCode) {
msg("请输入验证码!");
return;
}
cardFree();
}else{
} else {
// 余额退费
balanceReclaiming();
}
@@ -241,18 +242,18 @@
method: "POST",
showLoading: true,
};
request(queryRefund, options).then((res) => {
const data = stringToJson(res.bizContent);
console.log("data",data)
// 有无数据卡数据
if(data.hasData){
state.hasData=data.data[0]
}
const data = stringToJson(res.bizContent);
console.log("data", data)
// 有无数据卡数据
if (data.hasData) {
state.hasData = data.data[0]
}
});
}
// 卡退费
const cardFree=()=>{
const cardFree = () => {
var data = {
orderId: state.hasData.orderId, //退费信息编号
bankType: state.bankType, //开户行
@@ -272,19 +273,18 @@
method: "POST",
showLoading: true,
};
console.log("options",options)
console.log("options", options)
request(queryCardFreeExit, options).then((res) => {
const data = stringToJson(res.bizContent);
console.log("data",data)
navTo(`/subpackage/after-sale/refundPage-result`)
const data = stringToJson(res.bizContent);
console.log("data", data)
navTo(`/subpackage/after-sale/refundPage-result`)
});
}
// 余额补领
const balanceReclaiming=()=>{
const balanceReclaiming = () => {
var data = {
orderId: state.hasData.orderId, //退费信息编号
// orderId: "2a0cc6aca04548a7ac42ee1606eac4f8", //退费信息编号
};
const options = {
type: 2,
@@ -292,17 +292,17 @@
method: "POST",
showLoading: true,
};
request(queryRefundApply, options).then((res) => {
const data = stringToJson(res.bizContent);
console.log("data",data)
navTo(`/subpackage/after-sale/refundPage-result`)
const data = stringToJson(res.bizContent);
console.log("data", data)
navTo(`/subpackage/after-sale/refundPage-result`)
});
}
function choiceAddress(e){
console.log("e",e.detail.value)
state.address=e.detail.value;
state.addressShow=state.address[0]+"-"+state.address[1]+"-"+state.address[2]
function choiceAddress(e) {
console.log("e", e.detail.value)
state.address = e.detail.value;
state.addressShow = state.address[0] + "-" + state.address[1] + "-" + state.address[2]
}
const getCode = () => {
console.log(123);
@@ -315,7 +315,7 @@
icon: 'none'
});
}
}
// 发送验证码
const sendCodeApi = (type) => {
@@ -328,7 +328,7 @@
method: "POST", //提交方式(默认POST)
showLoading: true, //是否显示加载中(默认显示)
};
//调用方式
request(sendCode, options)
.then((res) => {
@@ -353,7 +353,7 @@
waitTime.value -= 1
}, 1000)
}
function bindPickerChange(e){
function bindPickerChange(e) {
state.index = e.detail.value
}
</script>
@@ -369,23 +369,24 @@
}
</style>
<style lang="scss" scoped>
::v-deep .u-icon__icon{
::v-deep .u-icon__icon {
top: -4px !important;
}

.oderPage {
flex: 1;
width: 100%;

.content {
display: flex;
flex-direction: column;
/* justify-content: center; */
align-items: center;
width: 750rpx;
// height: 266rpx;
background-color: #fff;
margin-bottom: 30rpx;
padding: 75rpx 0;
display: flex;
flex-direction: column;
/* justify-content: center; */
align-items: center;
width: 750rpx;
// height: 266rpx;
background-color: #fff;
margin-bottom: 30rpx;
padding: 75rpx 0;

.title {
font-size: 28rpx;
@@ -442,25 +443,30 @@
// transform: translate(-50%);
margin: 30rpx auto;
}

::v-deep .u-form-item--right__content__slot {
display: flex;
justify-content: space-between;
justify-content: space-between;

.btn {
flex: 1;
background: transparent;
font-size: 30rpx;
color: #15E5C1;
z-index: 999;
}
}
.agreen{

.agreen {
color: rgb(25, 190, 197);
}
::v-deep .code>view{

::v-deep .code>view {
text-align: right !important;
}
::v-deep .code{

::v-deep .code {
width: 100% !important;
}
</style>
</style>

+ 1
- 1
utils/network/request.js Переглянути файл

@@ -168,7 +168,7 @@ export function request(code, options = {}, start = false) {
} else {

let content = s4.decryptData_CBC(res, sm4Key)
console.log('请求成功返回参数:', code, content)
console.log('请求成功返回参数:', code, content, res)
resolve(content.data)
}
}

+ 61
- 60
utils/util/fileData.js Переглянути файл

@@ -28,7 +28,8 @@ export function HighAddZero(str, nLen) {
}
export function AsciToHexString(strAsci, nLen) {
let s = String(strAsci);
let encoder = new TextEncoder("UTF-8");
// let encoder = new TextEncoder("UTF-8");
let encoder = new TextEncoder("GBK");
let bytes = encoder.encode(s);
let strResult = HexToString(bytes);
let strLen = strResult.length;
@@ -44,7 +45,7 @@ export function AsciToHexString(strAsci, nLen) {
}

const DIGITS_UPPER = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
'E', 'F'
'E', 'F'
];
export function HexToString(inHex) {
let i;
@@ -62,28 +63,28 @@ export function HexToString(inHex) {
* @param {string} data
* @returns {string}
*/
export function HexToStrig(data,charType=1) {
let str = data.substring(data.length - 2);
while (str === "00") {
data = data.substring(0, data.length - 2);
if (data.length === 0) {
return "";
}
str = data.substring(data.length - 2);
}
const asd = hexStringToByteArray(data);
try {
if(charType ==1){
str = new TextDecoder("GBK").decode(asd);
}else{
str = new TextDecoder("UTF-8").decode(asd);
}
} catch (e) {
console.error(e);
}
return str;
export function HexToStrig(data, charType = 1) {
let str = data.substring(data.length - 2);
while (str === "00") {
data = data.substring(0, data.length - 2);
if (data.length === 0) {
return "";
}
str = data.substring(data.length - 2);
}
const asd = hexStringToByteArray(data);
try {
str = new TextDecoder("GBK").decode(asd);
// if(charType ==1){
// }else{
// str = new TextDecoder("UTF-8").decode(asd);
// }
} catch (e) {
console.error(e);
}
return str;
}

/**
@@ -93,14 +94,14 @@ export function HexToStrig(data,charType=1) {
* @returns {Uint8Array}
*/
export function hexStringToByteArray(str) {
if (!str) {
return new Uint8Array();
}
const result = new Uint8Array(str.length / 2);
for (let i = 0; i < str.length; i += 2) {
result[i / 2] = parseInt(str.substr(i, 2), 16);
}
return result;
if (!str) {
return new Uint8Array();
}
const result = new Uint8Array(str.length / 2);
for (let i = 0; i < str.length; i += 2) {
result[i / 2] = parseInt(str.substr(i, 2), 16);
}
return result;
}

/**
@@ -110,38 +111,38 @@ export function hexStringToByteArray(str) {
* @returns {string}
*/
export function HexToInt(data) {
let num = -1;
try {
num = parseInt(data, 16);
} catch (e) {
console.error(e);
}
return num.toString();
let num = -1;
try {
num = parseInt(data, 16);
} catch (e) {
console.error(e);
}
return num.toString();
}


function guessEncoding(bytes) {
// 检查字节序列是否以 BOM(字节顺序标记)开头
if (bytes[0] === 0xEF && bytes[1] === 0xBB && bytes[2] === 0xBF) {
return 'UTF-8';
} else if (bytes[0] === 0xFE && bytes[1] === 0xFF) {
return 'UTF-16BE';
} else if (bytes[0] === 0xFF && bytes[1] === 0xFE) {
return 'UTF-16LE';
} else {
// 统计每个字节的频率
let freq = {};
for (let i = 0; i < bytes.length; i++) {
let b = bytes[i];
freq[b] = freq[b] ? freq[b] + 1 : 1;
}
// 检查字节序列是否以 BOM(字节顺序标记)开头
if (bytes[0] === 0xEF && bytes[1] === 0xBB && bytes[2] === 0xBF) {
return 'UTF-8';
} else if (bytes[0] === 0xFE && bytes[1] === 0xFF) {
return 'UTF-16BE';
} else if (bytes[0] === 0xFF && bytes[1] === 0xFE) {
return 'UTF-16LE';
} else {
// 统计每个字节的频率
let freq = {};
for (let i = 0; i < bytes.length; i++) {
let b = bytes[i];
freq[b] = freq[b] ? freq[b] + 1 : 1;
}

// 检查是否存在 GBK 的特定字节序列
if (freq[0x81] && freq[0x81] > 0 && freq[0x40] && freq[0x40] > 0) {
return 'GBK';
}
// 检查是否存在 GBK 的特定字节序列
if (freq[0x81] && freq[0x81] > 0 && freq[0x40] && freq[0x40] > 0) {
return 'GBK';
}

// 如果没有特定的 GBK 字节序列,则假设为 UTF-8
return 'UTF-8';
}
// 如果没有特定的 GBK 字节序列,则假设为 UTF-8
return 'UTF-8';
}
}

Завантаження…
Відмінити
Зберегти