DESKTOP-2IO5MST\huting vor 1 Jahr
Ursprung
Commit
f2ba59683a

+ 0
- 5
components/nav-bar/nav-bar2.vue Datei anzeigen

@@ -98,11 +98,6 @@
delta: 1
})
}
// else if (title == "订单支付") {
// uni.navigateTo({
// url: `/subpackage/orders/product-detail?orderId=orderId`
// })
// }
}
</script>


+ 4
- 3
composables/order/useOrderListItem.ts Datei anzeigen

@@ -10,9 +10,9 @@ import { hasLogin, msg, timesDiff } from "@/utils/utils";
import { orderList, appPage } from "@/utils/network/api";
import { PageData } from "@/datas/enum";
const tools = require("../../static/etcUtil/tools.js");
const searchKeyWords = ref('');
export default function useOrderListItem(props) {
//搜索关键字
const searchKeyWords = ref('');
const tabName = ref('小程序');
//订单列表数据
const ordersList = ref([]);
@@ -204,7 +204,7 @@ export default function useOrderListItem(props) {
loadMore();
});
onShow(() => {
console.log("一进页面就刷新")
console.log("一进页面就刷新", searchKeyWords.value)
refreshList(true);

})
@@ -216,6 +216,7 @@ export default function useOrderListItem(props) {
onKeyInput,
refreshList,
changeTab,
tabName
tabName,
searchKeyWords
};
}

+ 0
- 26
datas/enum.ts Datei anzeigen

@@ -5,29 +5,6 @@ export enum PageData {
NO_MORE_SIZE = 2, //如果列表已无数据,可设置列表的总数量要大于等于2条才显示无更多数据
}
//订单状态
// export enum OrderStatus {
// '已取消' = -1, //注意“已取消”判断字段未orderStatus,下面判断字段为orderStep
// '完成填写基本信息' = 1,
// '完成个人/单位信息上传' = 2,
// '完成车辆信息上传' = 3,
// '待加购权益' = 4,
// '待支付2' = 26, //已经生成二维码但未支付
// '待支付3' = 27, //加购完权益但未支付
// '已支付' = 5,
// '待审核' = 6,
// '审核不通过' = 7,
// '待发货' = 8,
// '待收货' = 9,
// '待激活' = 10,
// '已完成' = 11,
// '已申请-换货' = 12,
// '已申请-退货' = 13,
// '已结束' = 14,
// '退款中' = 15,
// '退款成功' = 16,
// '退货成功' = 17,
// '换货-设备已回收' = 18,
// }
export enum OrderStatus {
'已取消' = -1, //注意“已取消”判断字段未orderStatus,下面判断字段为orderStep
'完成填写基本信息' = 1,
@@ -62,7 +39,4 @@ export enum OrderTypes {
'EXCHANGE_OBU' = '更换签',
'EXCHANGE_ALL' = '更换全部',
'TRANSFER' = '过户'
// 'ETC注销' = '暂无ETC注销枚举',
// '车辆信息变更' = '暂无车辆信息变更枚举',
// '解除车牌占用' = '暂无车辆信息变更枚举',
}

+ 2
- 2
pages.json Datei anzeigen

@@ -1488,7 +1488,7 @@
{
"path": "trapping-and-repairing-account/recharge-two",
"style": {
"navigationBarTitleText": "圈存",
"navigationBarTitleText": "确认修复",
"enablePullDownRefresh": false
}
},
@@ -1551,7 +1551,7 @@
{
"path": "consumption-record",
"style": {
"navigationBarTitleText": "消费明细",
"navigationBarTitleText": "充值明细",
"enablePullDownRefresh": false
}
},

+ 1
- 1
pages/bluetooth/bluetooth.vue Datei anzeigen

@@ -594,7 +594,7 @@
});
} else if (routeType.value == "9") {
uni.navigateTo({
url: `/subpackage/personal-center/trapping-and-repairing-account/recharge-two?rechargeMoney=${state.rechargeMoney}&&orderNum=${state.orderNum}&&payMoney=${state.payMoney}`,
url: `/subpackage/personal-center/trapping-and-repairing-account/recharge-two?rechargeMoney=${state.rechargeMoney}&&orderNum=${state.orderNum}&&payMoney=${state.payMoney}&&accountId=${state.accountId}`,
});
} else {
return;

+ 2
- 2
pages/order/components/order-list-item.vue Datei anzeigen

@@ -4,7 +4,7 @@
<view class="as-layout-horizontal as-gravity-center-start search-layout">
<view class="search-box">
<image :src="`${$imgUrl}service/icon-search.png`" class="icon" mode="aspectFill"></image>
<input class="search" placeholder="请输入车牌号" @input="onKeyInput" />
<input class="search" placeholder="请输入车牌号" @input="onKeyInput" v-model="searchKeyWords" />
</view>
<view class="search-btn" @click="doSearch">搜索</view>
</view>
@@ -53,7 +53,7 @@
}
})

const { config, params, ordersList, doSearch, onKeyInput, refreshList } = useOrderListItem(props);
const { config, params, ordersList, doSearch, onKeyInput, refreshList, searchKeyWords } = useOrderListItem(props);
//自定义下拉刷新被触发
const onRefresh = () => {
console.log("22222")

+ 7
- 0
static/etcUtil/tools.js Datei anzeigen

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

function showModalAlert(content, successFunc = null, failFunc = null, title = '温馨提示', showCancel = false) {

console.log("温馨提示", title, content != "")
if (content != "") {
if (content == 'timeout' || content == 'creatConnectionFailure') {
content = "请重新打开OBU设备蓝牙后在手机上重新搜索蓝牙设备"
}
// if (content.indexOf("发送数据失败")) {
// content = "OBU设备蓝牙已关闭,请返回到【选择蓝牙设备】界面重新连接蓝牙设备"
// }
uni.showModal({
title: title,
content: content,

+ 10
- 6
subpackage/after-sale/account-recharge/consumption-record.vue Datei anzeigen

@@ -1,16 +1,17 @@
<template>
<view class='content'>
<view class='search_wrap'>
<input type="text" v-model='state.value' placeholder='搜索ETC卡号' @confirm="doSearch" /><button size='mini'
<input type="text" v-model='state.value' placeholder='搜索卡号' @confirm="doSearch" /><button size='mini'
@click='search()'>搜索</button>
</view>
<view class='item' v-for="(item,index) in state.newList">
<view class='time'><text>时间:{{item.tradeTime}}</text><text>¥{{item.fee/100}}</text></view>
<view>对公账户:{{item.corporateAccountId}}</view>
<!-- <view>对公账户:{{item.corporateAccountId}}</view> -->
<view>卡号:{{item.cardId}}</view>
<!-- item.status 1 圈存成功 0 半条 -->
<!-- <view class="but-wrap" v-if="item.status ==0">
<view class="but-wrap" v-if="item.status ==0">
<text @click="toTrap(item.fee)">修复</text>
</view> -->
</view>
</view>
</view>
</template>
@@ -20,7 +21,7 @@
import { request } from "@/utils/network/request.js";
import { transactionRecord } from "@/utils/network/api.js";
import { stringToJson } from "@/utils/network/encryption.js";
import { onLoad } from "@dcloudio/uni-app";
import { onLoad, onShow } from "@dcloudio/uni-app";
import { getCodeName } from "@/datas/queryKey.js";
const state = reactive({
list: '', //所有数据
@@ -31,6 +32,9 @@
onLoad((option : any) => {
console.log("option", option)
state.name = option.name;
// getList();
})
onShow(() => {
getList();
})
const getList = () => {
@@ -63,7 +67,7 @@
}
const toTrap = (rechargeMoney) => {
uni.navigateTo({
url: `/subpackage/personal-center/trapping-and-repairing-account/recharge-pay?rechargeMoney=${rechargeMoney}&&payMoney=0`
url: `/subpackage/personal-center/trapping-and-repairing-account/recharge-pay?rechargeMoney=${rechargeMoney}&&payMoney=0&&accountId=${state.name}`
})
}
</script>

+ 4
- 4
subpackage/after-sale/account-recharge/recharge-record.vue Datei anzeigen

@@ -41,9 +41,9 @@
request(transactionRecord, options).then((res) => {
const data = stringToJson(res.bizContent);
state.list = data.qtkCorporateAccountDetails;
for (var i = 0; i < state.list.length; i++) {
// state.list[i].tradeConfirmTime = state.list[i].tradeConfirmTime.split('T').join(' ');
}
// for (var i = 0; i < state.list.length; i++) {
// state.list[i].tradeConfirmTime = state.list[i].tradeConfirmTime.split('T').join(' ');
// }
state.newList = state.list;
console.log("交易记录", data)
})
@@ -51,7 +51,7 @@
const search = () => {
state.newList = [];
for (var i = 0; i < state.list.length; i++) {
if (state.list[i].cardId.indexOf(state.value) >= 0) {
if (state.list[i].bankCardId.indexOf(state.value) >= 0) {
state.newList.push(state.list[i]);
}
}

+ 5
- 4
subpackage/after-sale/account-recharge/recharge-weixin.vue Datei anzeigen

@@ -101,7 +101,7 @@
mockpreBalance: 2000, //fix:模拟余额 目前没有检测状态接口,第一次会模拟圈存检测来检测状态
show: false,
current: 0,
tradeType: 14,
// tradeType: 14,
accountId: "",//对公账户id
accountMoney: 0, //对公账户余额
consumeId: "",//消费订单编号
@@ -450,7 +450,8 @@
rechargeId: data.rechargeId,
paidAmount: state.fee,
giftAmount: 0,
consumeId: state.consumeId
consumeId: state.consumeId,
tradeType: 12,
};
const options = {
type: 2,
@@ -462,7 +463,6 @@
const res = await request(quanConfirm, options);
const data = stringToJson(res.bizContent);
console.log("data充值成功", data);
// getCardId()
setTimeout(() => {
msg("充值成功");
navTo(`/subpackage/after-sale/account-recharge/result?cardId=${card.cardId}`)
@@ -481,6 +481,8 @@
rechargeId: data.rechargeId,
paidAmount: state.fee,
giftAmount: 0,
tradeType: 12,

};
const options = {
type: 2,
@@ -568,7 +570,6 @@
const result = stringToJson(res.bizContent);
console.log("获取微信小程序openid", result);
const openidData = stringToJson(result.data);
// setItem("QYorder", result.data);
state.openid = openidData.openid
});
// #endif

+ 16
- 0
subpackage/after-sale/activation/activate.vue Datei anzeigen

@@ -249,9 +249,25 @@
fileDataStrings.customerId = orderInfo.customerId;
fileDataStrings.orderId = orderInfo.orderId;
getObuId();
cancelOrderRequest(orderInfo.orderId)
}
});
};
//更换设备 去注销前订单的 卡签
const cancelOrderRequest = (orderId) => {
console.log('======更换设备 去注销前订单的 卡签 ======')
const options = {
type: 2,
data: {
orderId: orderId,
},
method: "POST",
showLoading: true,
};
request(IFCODE.cancelOrderApi, options).then((res) => {

})
}

/**
* 获取OBU号 读OBU

+ 1
- 1
subpackage/orders/addAddress.vue Datei anzeigen

@@ -15,7 +15,7 @@

<u-form-item label="详细地址">
<u-input placeholder="小区楼栋/乡村名称" :customStyle="textareaStyle" v-model="state.formData.address"
maxlength="100" />
maxlength="50" />
</u-form-item>
<u-form-item label="邮政编码">
<u-input placeholder="邮政编码" :customStyle="btnGetCode" v-model="state.formData.postalCode"

+ 55
- 0
subpackage/orders/car-release.vue Datei anzeigen

@@ -156,6 +156,10 @@
<u-input inputAlign="right" placeholder="请输入总质量" v-model="state.form.totalMassShow"
:disabled="state.isEnableChangeOCRCarInfo" />
</u-form-item>
<u-form-item label="核定载质量" v-if="state.form.permittedWeight">
<u-input inputAlign="right" placeholder="核定载质量" v-model="state.form.permittedWeight"
:disabled="state.isEnableChangeOCRCarInfo" />
</u-form-item>
<u-form-item label="车轴数">
<u-input inputAlign="right" placeholder="请输入车轴数" v-model="state.form.axleCount" type="number"
maxlength="2" />
@@ -663,6 +667,13 @@
state.form.issueDate = data.issue;
state.form.vehPosImgUrl = data.imageUrl;
state.form.vehicleModel = data.model;
console.log("走不是牵引车的", data.vehicle.indexOf('牵引车'), data.vehicle)
if (data.vehicle.indexOf('牵引车') > 0) {
qian()
} else {
console.log("走不是牵引车的")
notQian()
}

} else {
state.form.approvedCount = data.apc;
@@ -694,6 +705,11 @@
state.form.vehNegImgUrl = data.imageUrl;
state.form.permittedWeight = data.alc ? data.alc : 0;
state.form.permittedTowWeight = data.towing ? data.towing : 0;
if (data.towing) {
qian()
} else {
notQian()
}
console.log('=====================', state.form.vehNegImgUrl, state)
}
state.isTakePhotoModeShow = false
@@ -718,6 +734,45 @@
}
}
}
// 牵引车
const qian = () => {
state.items = [{
value: '1',
name: '是',
checked: 'true'
},
{
value: '0',
name: '否',
}]
for (let i = 0; i < state.items.length; i++) {
if (state.items[i].value === '1') {
state.current = i;
state.form.tractorSign = 1;
break;
}
}
}
// 不是牵引车
const notQian = () => {
state.items = [{
value: '1',
name: '是',
},
{
value: '0',
name: '否',
checked: 'true'
}]
for (let i = 0; i < state.items.length; i++) {
console.log("不是牵引车", state.items[i].value, state.items[i].value === '0')
if (state.items[i].value === '0') {
state.current = i;
state.form.tractorSign = 0;
break;
}
}
}
</script>

<style lang="scss" scoped>

+ 3
- 9
subpackage/orders/choice-product.vue Datei anzeigen

@@ -38,7 +38,7 @@
<view class="as-layout-vertical as-gravity-center">
<image style="width: 140rpx; height: 100rpx; border-radius: 20rpx;margin-right: 20rpx;"
:src="`${$imgUrl}card2.png`" mode="aspectFill"></image>
<view style="margin-top: 20rpx;">
<view style="margin-top: 20rpx;text-align: center;">
{{item.name}}
</view>
</view>
@@ -62,11 +62,9 @@
import { msg } from "@/utils/utils";
import { agentId } from "@/utils/network/difference";
const imgURL = `${fileURL}image/`;
// import { setItem } from "@/utils/storage";

const scrollTop = ref(0); //滚动距离
// 单选默认数据
// let flag = ref(true)
// 单选
const radioChange = (n) => {
console.log('radioChange', n);
@@ -78,7 +76,7 @@
state.isValueCard = 2
}
setItem("isValueCard", state.isValueCard);
uni.redirectTo({
uni.navigateTo({
url: `/subpackage/orders/interestsList?promoteId=${getItem("promoteId")}&userType=${state.userType}&type=${state.type}&isValueCard=${state.isValueCard}&fee=${Number(state.fee)}`,
});
}
@@ -101,10 +99,7 @@
}
console.log("state.isValueCard", state.isValueCard)
setItem("isValueCard", state.isValueCard);
// uni.redirectTo({
// url: `/subpackage/orders/essential-information?promoteId=${getItem("promoteId")}&userType=${state.userType}&type=${state.type}&isValueCard=${state.isValueCard}`,
// });
uni.redirectTo({
uni.navigateTo({
url: `/subpackage/orders/interestsList?promoteId=${val['promoteId']}&userType=${state.userType}&type=${state.type}&isValueCard=${state.isValueCard}&fee=${Number(val.fee)}`,
});
} else {
@@ -157,7 +152,6 @@
};
console.log("输出内容", options);
request(etcQueryProduct, options).then((res) => {
// console.log(res.bizContent);
const data = stringToJson(res.bizContent);
console.log("产品列表", data.list);
if (data.list && data.list.length > 0) {

+ 1
- 1
subpackage/orders/editAddress.vue Datei anzeigen

@@ -15,7 +15,7 @@

<u-form-item label="详细地址">
<u-input placeholder="小区楼栋/乡村名称" :customStyle="textareaStyle" v-model="state.formData.address"
maxlength="100" />
maxlength="50" />
</u-form-item>
<u-form-item label="邮政编码">
<u-input placeholder="邮政编码" :customStyle="btnGetCode" v-model="state.formData.postalCode" />

+ 0
- 17
subpackage/orders/interestsList.vue Datei anzeigen

@@ -17,23 +17,6 @@
</view>
</view>
</view>

<!-- <view class="item" v-for="(item,index) in state.list" :key='index'>
<view class="title" @click="addInterestsList(item)">
<view>
<view v-if='item.children' style="display: inline-block;">
<image :class="item.isShow?'imageChange':'imageDefault'" @click.prevent="changeIsShow(index)"
src="../../static/image/icon-back.png" alt="" srcset=""></image>
</view>
<text><text>{{item.productName}}</text>&nbsp;&nbsp;<text>¥{{item.discountPrice * 0.01}}</text></text>
</view>
</view>
<view v-if="item.isShow" class="children" v-for="(itemChild,index) in item.children" :key='index'>
<view>
<text>{{itemChild.productName}}</text>&nbsp;&nbsp;<text>{{itemChild.discountPrice * 0.01}}</text>
</view>
</view>
</view> -->
</view>
</template>


+ 40
- 2
subpackage/orders/opening-account-people.vue Datei anzeigen

@@ -57,7 +57,7 @@
</u-form-item>
<u-form-item label="地址">
<u-input placeholder='请输入地址' :autoHeight='true' v-model="state.form.address"
:disabled="state.isEnableOCRData" maxlength="100" />
:disabled="state.isEnableOCRData" maxlength="50" />
</u-form-item>
<u-form-item label="联系方式">
<u-input placeholder='请输入联系方式' type="number" v-model="state.form.tel" maxlength="11" />
@@ -168,6 +168,7 @@
<view class="tip">
<view class="tip-value"> 拍摄规范 </view>
</view>
<view class="down" @click="downAuthD">模板下载</view>
</view>
<image v-if="!state.form.proxyUrl" class="icon" :src="`${$imgUrl}applyCard/weituoshu.png`">
</image>
@@ -463,6 +464,7 @@
proxyUrl: "",
agentAddress: "",
agentIdVld: '',
orderSource: 'WECHAT',
};
};
onLoad((option : any) => {
@@ -472,7 +474,6 @@
state.form.opId = getItem('openId') ? getItem('openId') : '';
state.isSign = option.isSign;
state.type = option.type;
//state.fromOrder = option.fromOrder //是否来自订单-修改资料
getGlobalParam(); //全局配置数据
console.log("option", option)
});
@@ -625,6 +626,33 @@
const cancle = () => {
state.isTakePhotoModeShow = false
}
const downAuthD = () => {
uni.downloadFile({
url: "https://qtzl.etcjz.cn/default-bucket/20240311/个人委托书.docx",
filePath: uni.env.USER_DATA_PATH + '/' + '个人委托书.docx',
success(res) {
const filePath = res.filePath
uni.openDocument({
filePath: filePath,
fileType: 'docx',
showMenu: true, //关键点
success: function (res) {
// msg("成功查看协议详情");
},
fail: function (err) {
msg("打开文档失败");
}
});
},
fail: function (err) {
msg("下载文档失败");
console.log("err", err)
},
complete(res) {

}
})
}
</script>

<style lang="scss" scoped>
@@ -835,4 +863,14 @@
top: 0;
z-index: 11111;
}

.down {
background-color: rgba(33, 190, 177, 0.2);
color: #0a8f8a;
border-radius: 10rpx;
padding: 6rpx 10rpx;
font-size: 28rpx;
margin-top: 10rpx;
width: 48%;
}
</style>

+ 8
- 15
subpackage/orders/order_payment.vue Datei anzeigen

@@ -196,7 +196,6 @@
// #endif
// #ifdef MP-WEIXIN
source = "WECHAT"
// getOpenID();
// #endif
var data = {
orderId: state.orderId,
@@ -214,8 +213,6 @@
console.log(data);
if (data.paymentStatus == 'ALLSUCCESS') {
gotoEditUserOrUnitInfo()


}
state.dataArray = data.datas;
for (let i = 0; i < state.dataArray.length; i++) {
@@ -256,8 +253,6 @@
state.dataArray[i].payStatusName = '未知'
}
}


console.log("state.dataArray", state.dataArray)
});
}
@@ -277,11 +272,6 @@
imageUrl = imgURL + "applyCard/wechat.png";
source = "WECHAT"
// #endif
// state.userType = option.userType;
// state.vehiclePlateColor = option.vehiclePlateColor;
// state.userType = option.userType;
// state.type = option.type;
// option.orderId;
var data = {
orderId: state.orderId,
source: source //请求方来源
@@ -297,12 +287,7 @@
// console.log(res.bizContent);
const data = stringToJson(res.bizContent);
console.log(data);
// console.log(typeof(data));
if (data.paymentStatus == 'ALLSUCCESS') {
// gotoEditUserOrUnitInfo()
// uni.redirectTo({
// url: `/subpackage/orders/sign-up-ali?orderId=${state.orderId}`,
// });
// isValueCard 1 储值卡 2 记账卡
if (state.isValueCard == 1) {
uni.switchTab({
@@ -324,6 +309,14 @@
state.dataArray[i].payName = '预存金'
} else if (state.dataArray[i].payType === 'EQUITY') {
state.dataArray[i].payName = '权益费'
} else if (state.dataArray[i].payType === 'REPAIROBU') {
state.dataArray[i].payName = '增补obu'
} else if (state.dataArray[i].payType === 'CHANGECARD') {
state.dataArray[i].payName = '更换卡'
} else if (state.dataArray[i].payType === 'CHANGEOBU') {
state.dataArray[i].payName = '更换签'
} else if (state.dataArray[i].payType === 'CHANGEALL') {
state.dataArray[i].payName = '更换卡签'
} else {
state.dataArray[i].payName = '未知费'
}

+ 0
- 74
subpackage/orders/product-detail.vue Datei anzeigen

@@ -2,45 +2,6 @@
<navBar title="产品详情"></navBar>
<navBgCar></navBgCar>
<view class="content-wrap">
<!-- <view class="ul-item">
<image style="width: 100%; height: 170rpx; background-color: #eeeeee"
:src="`${$imgUrl}applyCard/product-bg.png`"></image>
<view class="item-value">
<image class="icon-tip" :src="`${$imgUrl}applyCard/wechat.png`"></image>
<view class="content">
<view class="title"> {{state.detailsObj.productName}} </view>
<view style="margin-top: 15rpx" class="tip"> {{state.detailsObj.releaseProduct.remarks}} </view>
</view>
<view class="price">
¥:{{state.detailsObj.product.oncePrice * 0.01}}
</view>
</view>
</view> -->
<!-- <view style="margin: 20rpx 0 10rpx 20rpx;font-size: 32rpx;">加购权益列表</view> -->
<!-- <view class="add_all">
<uni-swipe-action>
<uni-swipe-action-item class="del_item" v-for="(item,index) in state.list"
:right-options="state.options2" :show="item.isOpened" :auto-close="false" @change="change"
@click="bindClick(index)">
<view class="content-box">
<view v-if='item.children' style="display: inline-block;">
<image :class="item.isShow?'imageChange':'imageDefault'" @click="changeIsShow(index)"
src="../../static/image/icon-back.png" alt="" srcset=""></image>
</view>
<text class="content-text" @tap="setOpened">{{item.productName}}
&nbsp;¥{{item.discountPrice * 0.01}}</text>
<view v-if="item.isShow" class="children" v-for="(itemChild,index) in item.children"
:key='index'>
<view>
<text>{{itemChild.productName}}</text>&nbsp;&nbsp;<text>{{itemChild.discountPrice * 0.01}}</text>
</view>
</view>
</view>
</uni-swipe-action-item>

</uni-swipe-action>
</view> -->

<view class="value-wrapper">
<view class="flex" v-for="(item,index) in state.dataArray">
<view class="title"> {{item.payName}} </view>
@@ -48,28 +9,10 @@
{{ "¥" + item.fee * 0.01 }}
</view>
</view>
<!-- <view class="flex">
<view class="title"> 产品金额 </view>
<view class="value">
{{ "¥" + state.detailsObj.product.oncePrice * 0.01 }}
</view>
</view> -->
<!-- <view class="flex">
<view class="title"> 加购权益 </view>
<view class="value">{{ "¥" + state.productMoney }} </view>
</view> -->
<view class="flex">
<view class="title"> 运费 </view>
<view class="value"> ¥0.00 </view>
</view>
<!-- <view class="flex">
<view class="title"> 优惠券 </view>
<view class="value"> 暂无优惠券 </view>
</view>
<view class="flex">
<view class="title"> 积分兑换 </view>
<view class="value"> 暂无积分 </view>
</view> -->
<view class="flex">
<view class="title"> 实付款 </view>
<view class="money">
@@ -201,13 +144,6 @@
provider: "weixin",
success: function (e) {
getOpenid(e.code);
// uni.request({
// url: `https://api.weixin.qq.com/sns/jscode2session?appid=${wechatAppID}&secret=${wechatSecret}&js_code=${e.code}&grant_type=authorization_code`,
// success: (res: any) => {
// state.openid = res.data.openid;
// console.log("state.openid", state.openid);
// },
// });
},
});
};
@@ -274,18 +210,8 @@
state.isValueCard = option.isValueCard;
console.log("传递过来的参数", option)
console.log("查协议", envs[process.env.NODE_ENV].baseUrl)
// state.clientFee = option.clientFee / 100;
state.id = option.id;
getOpenID();

// const data = JSON.parse(decodeURIComponent(option.data));
// for (var i = 0; i < data.length; i++) {
// data['isOpened'] = 'node';
// state.productMoney += data[i]['discountPrice'] / 100;
// state.productId.push(data[i]['equityId'])
// }
// state.list = data;
// queryDetailsData();
refresh();
if (option.url) {
state.agreeURL = envs[process.env.NODE_ENV].baseUrl + option.url

+ 9
- 9
subpackage/personal-center/car-message-change.vue Datei anzeigen

@@ -45,7 +45,7 @@
</u-form-item>
<u-form-item label="地址">
<u-input placeholder='请输入地址' :autoHeight='true' v-model="state.form.address"
:disabled="state.isEnableOCRData" maxlength="100" />
:disabled="state.isEnableOCRData" maxlength="50" />
</u-form-item>
<u-form-item label="联系方式">
<u-input placeholder='请输入联系方式' type="number" v-model="state.form.tel" maxlength="11" />
@@ -721,14 +721,14 @@
.then((res) => {
const data = stringToJson(res.bizContent);
// 创建工单
creactWorkOrderRequest().then((val : any) => {
msg("车辆信息变更成功")
setTimeout(() => {
uni.navigateBack({
delta: 2
})
}, 2000)
})
// creactWorkOrderRequest().then((val : any) => {
msg("待审核")
setTimeout(() => {
uni.navigateBack({
delta: 2
})
}, 2000)
// })
})
.catch((res) => {
console.log(res);

+ 26
- 28
subpackage/personal-center/trapping-and-repairing-account/recharge-pay.vue Datei anzeigen

@@ -55,15 +55,10 @@

const state = reactive({
transWayTypeShow: false,
// #ifdef MP-ALIPAY
transWayTypeList: [{
name: "蓝牙",
value: "blu",
}],
// #endif
// #ifdef MP-WEIXIN
transWayTypeList: [],
// #endif
tableIndex: 0,
transWayName: "蓝牙",
transWay: "blu", //“blu”为蓝牙充值方式、“nfc”为NFC充值方式
@@ -72,6 +67,7 @@
rechargeMoney: "", //圈存金额
orderNum: "",//消费明细 传orderNum说明去支付
payMoney: 0, //0 修复 1支付
accountId: ""
});

const selectConfirm = (item : any) => {
@@ -84,28 +80,30 @@
state.rechargeMoney = option.rechargeMoney
state.orderNum = option.orderNum
state.payMoney = option.payMoney
state.accountId = option.accountId

console.log("参数", option)
uni.getSystemInfo({
success: (res) => {
console.log("res", res['osName'])
// ios
if (res['osName'] == 'ios') {
state.transWayTypeList = [{
name: "蓝牙",
value: "blu",
}]
} else {
// 安卓
state.transWayTypeList = [{
name: "蓝牙",
value: "blu",
}, {
name: "NFC",
value: "nfc",
}]
}
}
});
// uni.getSystemInfo({
// success: (res) => {
// console.log("res", res['osName'])
// // ios
// if (res['osName'] == 'ios') {
// state.transWayTypeList = [{
// name: "蓝牙",
// value: "blu",
// }]
// } else {
// // 安卓
// state.transWayTypeList = [{
// name: "蓝牙",
// value: "blu",
// }, {
// name: "NFC",
// value: "nfc",
// }]
// }
// }
// });
// #endif
});

@@ -124,11 +122,11 @@
const rechargeAction = () => {
if (state.transWay == 'blu') {
uni.redirectTo({
url: `/pages/bluetooth/bluetooth?routeType=9&&rechargeMoney=${state.rechargeMoney}&&orderNum=${state.orderNum}&&payMoney=${state.payMoney}`,
url: `/pages/bluetooth/bluetooth?routeType=9&&rechargeMoney=${state.rechargeMoney}&&orderNum=${state.orderNum}&&payMoney=${state.payMoney}&&accountId=${state.accountId}`,
});
} else {
uni.redirectTo({
url: `/pages/nfc/nfc?routeType=9&&rechargeMoney=${state.rechargeMoney}&&orderNum=${state.orderNum}&&payMoney=${state.payMoney}`,
url: `/pages/nfc/nfc?routeType=9&&rechargeMoney=${state.rechargeMoney}&&orderNum=${state.orderNum}&&payMoney=${state.payMoney}&&accountId=${state.accountId}`,
});
}


+ 38
- 275
subpackage/personal-center/trapping-and-repairing-account/recharge-two.vue Datei anzeigen

@@ -1,12 +1,17 @@
<template>
<view class="wrapper">
<view class="balance">
账户余额:{{card.money/100}}元
</view>
<view class="balance">ETC卡内余额:{{card.money/100}}</view>
<view class="balance">修复金额:¥{{state.fee/100}}</view>
<view class="balance">ETC卡号:{{card.cardId}}</view>
<view class="balance">车牌号:{{card.vehiclePlate}}</view>
<button type="default" class="button" @click="aa">确认修复</button>
</view>
</template>

<script setup lang="ts">
import {
HexToStrig
} from "@/utils/util/fileData.js";
import {
stringToJson
} from "@/utils/network/encryption";
@@ -55,36 +60,7 @@
const NFCAPI = require('../../../static/nfc/NFCAPI.js');

const state = reactive({
transWayTypeShow: false,
transWayTypeList: [{
label: "蓝牙",
value: "blu",
}, {
label: "NFC",
value: "nfc",
}
],
isShowBlue: false,
moneryArray: [{
name: '50元',
value: 50
}, {
name: '100元',
value: 100
}, {
name: '200元',
value: 200
}, {
name: '300元',
value: 300
}, {
name: '500元',
value: 500
}, {
name: '1000元',
value: 1000
}],
tableIndex: 0,
openid: "",
connectSuccess: undefined,
fee: 5000,
@@ -93,27 +69,13 @@
transWayName: "蓝牙",
transWay: "blu", //“blu”为蓝牙充值方式、“nfc”为NFC充值方式
cardId: "", //卡号 需要传参
mockpreBalance: 2000, //fix:模拟余额 目前没有检测状态接口,第一次会模拟圈存检测来检测状态
show: false,
items: [{
value: '0',
name: '微信',
checked: 'true'
},
{
value: '1',
name: '对公账户'
}
],
current: 0,
tradeType: 14,
tradeType: 12,
payMoney: 0, //0 1直接走支付 0就是修复
accountId: ""
});

const selectConfirm = (item : any) => {
state.transWayName = item[0].label
state.transWay = item[0].value
};
//读卡信息
const card : any = reactive({
cardId: "",
@@ -150,24 +112,24 @@
state.orderNum = option.orderNum
state.payMoney = Number(option.payMoney)
}
state.accountId = option.accountId
console.log("option.orderNum", option, option.orderNum)
//跳转过来走圈存流程
// connectSuccess 2 从选择方式进来去圈存检测 1 只读卡

// #ifdef MP-ALIPAY
/*读卡*/
getCardId(1);
// #endif
getCardId();
});

function radioChange(evt) {
console.log('输出内容', evt)
state.transWay = evt.detail.value; //“blu”为蓝牙充值方式、“nfc”为NFC充值方式
const aa = () => {
quanCheckActionTrue().then((val) => {
console.log("圈存检测val", val)
checkQuanCengEvent(val);
});
}

function go(money) {
let content = ""
// if (money) {
state.fee = money * 100

//走蓝牙进行修复
@@ -192,14 +154,9 @@
getCardId()
}
});
console.log("state.isShowBlue", state.isShowBlue)

}

const tableIndexAction = (val : any) => {
state.tableIndex = val
state.money = state.moneryArray[val].value
}
/*点击充值按钮*/
const rechargeAction = () => {
state.fee = state.money * 100; //元换成分
@@ -266,66 +223,10 @@
];
tools.showLoadingAlert("正在执行指令");
transCmd(cmdArr, function (res : any) {
if (readCard == 1) {
// 只读卡号
getCardIdReturnReadCard(res)
} else {
getCardIdReturn(res);
}

getCardIdReturn(res);
})
};
function getCardIdReturnReadCard(res : any) {
tools.hideLoadingAlert();
//10:写卡 20:写OBU
let str = res[2].substring(res[2].length - 4, res[2].length);
let str3 = res[3].substring(res[3].length - 4, res[3].length);
if (str == "9000" || str3 == "9000") {
if (res[2].length > 86 || res[3] >= 12) {
state.cardId = res[2].substring(20, 40); //卡号
card.cardId = res[2].substring(20, 40); //卡号
card.money = parseInt(parseInt(res[3].substring(0, 8), 16), 10)
console.log("======卡信息======", card, state.cardId, state.orderNum, !state.orderNum);
if (state.payMoney) {
// #ifdef MP-WEIXIN
wxPayment();
// #endif
// #ifdef MP-ALIPAY
aliPayment()
// #endif
console.log("去支付11111", state.payMoney)


} else {
quanCheckActionTrue().then((val : any) => {
console.log("圈存检测val", val)
//如果 圈存检测正常
if (val.chargeStatus === 1) {
console.log(`进行充值检测`);
czCheckAction().then((checkResult : any) => {
//判断订单逻辑如果有订单充值 则直接拿到订单去链接蓝牙
if (checkResult.orders && checkResult.orders.length > 0) {
//拿到订单,存起来
state.orderNum = checkResult.orders[0].orderNum;
// 检测用户是否存在有半条流水
rechargeAction()
} else {
console.log('没有可修复的流水')
}
});
} else {
// 检测用户是否存在有半条流水
}
});
}

} else {
console.error("CMD_READBINARY指令长度不符" + res[2]);
tools.hideLoadingAlert();
}
}
console.error("CMD_READBINARY指令长度不符" + res[2]);
tools.hideLoadingAlert();
}
function getCardIdReturn(res : any) {
tools.hideLoadingAlert();
//10:写卡 20:写OBU
@@ -343,14 +244,7 @@
card.vehiclePlateColor = parseInt(res[2].substring(82, 84), 16);
(card.money = parseInt(parseInt(res[3].substring(0, 8), 16), 10)),
console.log("======卡信息======", card, card.money);

// if (card.cardId !== state.cardId) {
// msg("设备卡信息与当前充值卡号不匹配,请核对卡号");
// return;
// }
quanCheckActionTrue().then((val) => {
checkQuanCengEvent(val);
});
card.vehiclePlate = HexToStrig(res[2].substring(56, 80));
} else {
console.error("CMD_READBINARY指令长度不符" + res[2]);
tools.hideLoadingAlert();
@@ -361,6 +255,7 @@
}

const checkQuanCengEvent = (val : any) => {
// 圈存检测正常(无半条流水)
if (val.chargeStatus === 1) {
let cmdArr = val.command.split(",");
uni.showLoading({
@@ -402,6 +297,7 @@
});
});
} else {
// 圈存检测异常(有半条流水)
let cmdArr = val.command.split(",");
uni.showLoading({
title: "写入中",
@@ -456,7 +352,7 @@
readCard();
setTimeout(() => {
msg("修复成功");
navTo(`./result`)
navTo(`./result?cardId=${card.cardId}`)
}, 2000)
});
} else if (fixStatus === 1) {
@@ -497,7 +393,7 @@
cardId: card.cardId,
fee: state.fee,
preBalance: card.money,
tradeType: 14,
tradeType: 12,
};
const options = {
type: 2,
@@ -568,7 +464,8 @@
cosResponse: data.cosResponse,
orderId: state.orderNum,
rechargeId: data.rechargeId,
openId: getItem(StorageKeys.OpenId)
openId: getItem(StorageKeys.OpenId),
accountId: state.accountId
};
const options = {
type: 2,
@@ -606,6 +503,7 @@
rechargeId: data.rechargeId,
paidAmount: state.fee,
giftAmount: 0,
tradeType: 12,
};
const options = {
type: 2,
@@ -621,7 +519,7 @@
console.log("充值成功2222222")
setTimeout(() => {
msg("修复成功");
navTo(`./result`)
navTo(`./result?cardId=${card.cardId}`)
}, 2000)
}).catch((error) => {
console.log('输出内容', error)
@@ -637,6 +535,7 @@
rechargeId: data.rechargeId,
paidAmount: state.fee,
giftAmount: 0,
tradeType: 12,
};
const options = {
type: 2,
@@ -724,7 +623,6 @@
const result = stringToJson(res.bizContent);
console.log("获取微信小程序openid", result);
const openidData = stringToJson(result.data);
// setItem("QYorder", result.data);
state.openid = openidData.openid
/*读卡*/
getCardId(1);
@@ -845,32 +743,6 @@
console.log(data);
});
};
const goRecord = () => {
uni.navigateTo({
url: `/subpackage/personal-center/consumption-record?cardId=${state.cardId}`
})
}
// 校验金额输入框
const checkNum = (event) => {
let sNum = event.target.value.toString(); //先转换成字符串类
if (sNum.indexOf('.') == 0) {//第一位就是 .
console.log('first str is .')
sNum = '0' + sNum
}
sNum = sNum.replace(/[^\d.]/g, ""); //清除“数字”和“.”以外的字符
sNum = sNum.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的
sNum = sNum.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
sNum = sNum.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');//只能输入两个小数
//以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
if (sNum.indexOf(".") < 0 && sNum != "") {
sNum = parseFloat(sNum);
}
console.log('输入的值1', sNum)
setTimeout(() => {
state.money = sNum
}, 20)

}

const readCard = () => {
let cmdArr = [
@@ -902,136 +774,27 @@

<style>
.balance {
/* display: flex;
flex-direction: column;
justify-content: center;
align-items: flex-start; */
margin-left: 30rpx;
font-size: 32rpx;
color: #000;
}

/* .balance-tit {
font-size: 26rpx;
margin-bottom: 10rpx;
}

.balance-val {
font-size: 56rpx;
} */

.right-box {
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: flex-end;
}

.right-box .no {
font-size: 26rpx;
color: #ffffff;
}

.right-box .btn {
font-size: 26rpx;
padding: 0 20rpx;
box-sizing: border-box;
height: 42rpx;
line-height: 42rpx;
color: #28d20f;
background: #ffffff;
border-radius: 21rpx;
display: inline-block;
margin-top: 18rpx;
}

.head-bg {
width: 690rpx;
height: 224rpx;
position: absolute;
left: 0;
top: 0;
z-index: -99;
}

.input-box {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 20rpx 0;
}

.input-box .input {
width: 430rpx;
height: 98rpx;
line-height: 98rpx;
background: #f8f8f8;
border: 1px solid #999999;
border-radius: 6rpx;
font-size: 30rpx;
text-align: center;
}

.input-box .tips {
color: #666666;
font-size: 26rpx;
margin-top: 18rpx;
}

.tabs {}

.tabs .tab-tit {
font-size: 30rpx;
color: #333;
padding: 45rpx 0 22rpx 30rpx;
}

.tabs .tab {
label {
display: flex;
flex-wrap: wrap;
justify-content: space-evenly;
}

.tabs .tab .item {
width: 210rpx;
height: 100rpx;
background: #f6fff7;
border: 1px solid #dcdde1;
box-sizing: border-box;
line-height: 100rpx;
border-radius: 6rpx;
text-align: center;
margin-bottom: 24rpx;
color: #333333;
font-size: 32rpx;
}

.tabs .tab .item.active {
border: 1px solid #24cc49;
color: #24cc49;
justify-content: space-between;
margin-top: 30rpx;
}

.btn-primary {
width: 670rpx;
.button {
height: 80rpx;
line-height: 80rpx;
background: linear-gradient(-90deg, #43a1e0 0%, #13e7c1 100%);
border-radius: 40rpx;
font-size: 32rpx;
color: #ffffff;
margin: 200rpx 40rpx 0;
text-align: center;
}

.uni-list {
padding: 120rpx 10rpx 0 10rpx;
font-size: 34rpx;
}

label {
display: flex;
justify-content: space-between;
margin-top: 30rpx;
font-weight: 400;
color: #ffffff !important;
line-height: 80rpx;
margin-top: 100rpx;
width: 80%;
}
</style>

+ 43
- 2
subpackage/personal-center/trapping-and-repairing-account/result.vue Datei anzeigen

@@ -1,13 +1,54 @@
<template>
<view class="wrapper">
<image :src="`${$imgUrl}common/reharge-success.png`" class="pic-status" mode="widthFix"></image>
<view class="text-result">修复成功</view>
<view class="sub-text">您办理的账户充值业务已生成订单</view>
<view class="sub-text"><text>修复前前余额:</text><text>¥{{state.preBalance/100}}</text></view>
<view class="sub-text"><text>修复金额:</text><text>¥{{state.rechargeAmount/100}}</text></view>
<view class="sub-text"><text>修复后余额:</text><text>¥{{state.afterMoney/100}}</text></view>
<view class="btn btn-primary" @click="view">返回查看</view>
</view>
</template>

<script lang="ts" setup>
import { reactive } from "vue";
import {
rechargeMoneyApi
} from "@/utils/network/api.js";
import {
onLoad
} from "@dcloudio/uni-app";
import {
request
} from "@/utils/network/request.js";
import {
stringToJson
} from "@/utils/network/encryption.js";
const state = reactive({
cardId: "",
preBalance: 0, //充值前余额
rechargeAmount: 0,//充值金额
afterMoney: 0 //充值后金额
})
onLoad((option) => {
state.cardId = option.cardId
money()
})
const money = () => {
const options = {
type: 2,
data: {
"cardId": state.cardId,
},
method: 'POST',
showLoading: true,
}
request(rechargeMoneyApi, options).then((res) => {
const data = stringToJson(res.bizContent);
state.preBalance = data.preBalance
state.rechargeAmount = data.rechargeAmount
state.afterMoney = Number(data.rechargeAmount) + Number(data.preBalance)
console.log("圈存金额查询2", data)
})
}
const view = () => {
uni.navigateBack({
delta: 3

+ 0
- 10
subpackage/personal-center/trapping-and-repairing/recharge-two.vue Datei anzeigen

@@ -170,14 +170,8 @@
// #endif
});

function radioChange(evt) {
console.log('输出内容', evt)
state.transWay = evt.detail.value; //“blu”为蓝牙充值方式、“nfc”为NFC充值方式
}

function go(money) {
let content = ""
// if (money) {
state.fee = money * 100

//走蓝牙进行修复
@@ -354,10 +348,6 @@
(card.money = parseInt(parseInt(res[3].substring(0, 8), 16), 10)),
console.log("======卡信息======", card, card.money);

// if (card.cardId !== state.cardId) {
// msg("设备卡信息与当前充值卡号不匹配,请核对卡号");
// return;
// }
quanCheckActionTrue().then((val) => {
checkQuanCengEvent(val);
});

+ 1
- 1
subpackage/personal-center/trapping-and-repairing/result.vue Datei anzeigen

@@ -2,7 +2,7 @@
<view class="wrapper">
<image :src="`${$imgUrl}common/reharge-success.png`" class="pic-status" mode="widthFix"></image>
<view class="text-result">修复成功</view>
<view class="sub-text">您办理的账户充值业务已生成订单</view>
<!-- <view class="sub-text">您办理的账户充值业务已生成订单</view> -->
<view class="btn btn-primary" @click="view">返回查看</view>
</view>
</template>

+ 3
- 2
utils/network/api.js Datei anzeigen

@@ -275,7 +275,7 @@ export const showEquityListApi = "2af868adcf2f44ceb7a94c659ba2cee1" //展示权
export const auditQueryApi = "38b105703c854c118202bb411c924b88" //通用审核查询接口
export const monthStatementApi = "ae645d3be9ef49028db588e0ffa5d808" //月结单查询
export const obuWriteAgain = "2f887342990e42b6b6cbeaf8dd778fb6" //ASS-签重写接口
export const carChangeApi = "34" //变更车辆信息
export const carChangeApi = "686a96c0585141d497909cc0e5c6e375" //变更车辆信息
export const transferSure = "11c38395b6244a11910beca537262780 " //过户激活确认
export const transferApply = "fc4f88f8f2e947b197ed8011ce27cb07" //过户激活申请
export const accountApi = "9b7e8508229b492f8dd588e0a4180334" //对公账户查询
@@ -291,4 +291,5 @@ export const addProductInterestApi = "aa7ce8d0b64a4396a42c57bac6cd2433" //权益
export const cancellRefoundApi = "441ea77c279046d192bc3c6abf07c952" //注销退费查询
export const rechargeMoneyApi = "9d6c8c65490b426ca65e8add1aa977da" //查询充值成功后的金额
export const blackApi = "3aeafb995cb84112be87b8edcc303a8f" //黑名单查询
export const rechargeApi = "c62caa7ea6a249c3a2c3f5d3c6354a37" //单位账户充值
export const rechargeApi = "c62caa7ea6a249c3a2c3f5d3c6354a37" //单位账户充值
export const cancelOrderApi = "43d72061a84e4310abe631725e42c594" // 更换设备 去注销前订单的 卡签

Laden…
Abbrechen
Speichern