DESKTOP-2IO5MST\huting 1 anno fa
parent
commit
9cbf3c54d3

+ 9
- 3
composables/order/orderJump.ts Vedi File

@@ -76,13 +76,19 @@ export default function orderJump() {
uni.hideLoading()
const item = stringToJson(res.bizContent).data[0]
console.log("订单数据", item)
// item.orderStep >=3 不等于4 26 27 会反7041
// 已支付/待签约
// item.orderStep >=3 不等于4 26 27 会反7041 然后根据不同状态跳转
if (item.orderStep == 3) {
// 已支付/待签约
gotoOrderSign(item)
// 去激活
} else if (item.orderStep == 10) {
// 去激活
gotoActiveOrder(item)
} else {
// 6待审核
uni.switchTab({
url: "/pages/order/order"
})
}
// else if (item.orderStep == 2 || item.orderStep == 1 || item.orderStep == 4 || item.orderStep == 27) {
// // 完成个人/单位信息上传 完成填写基本信息 完成车辆信息上传 待支付3

+ 27
- 21
composables/order/useOrderListItem.ts Vedi File

@@ -13,6 +13,7 @@ const tools = require("../../static/etcUtil/tools.js");
export default function useOrderListItem(props) {
//搜索关键字
const searchKeyWords = ref('');
const tabName = ref('小程序');
//订单列表数据
const ordersList = ref([]);

@@ -76,7 +77,9 @@ export default function useOrderListItem(props) {
}

const changeTab = (tabOption) => {
setItem('tab', tabOption)
// setItem('tab', tabOption)
console.log("tabOption", tabOption)
tabName.value = tabOption
refreshList(true)
}
/* 加载更多 */
@@ -92,6 +95,7 @@ export default function useOrderListItem(props) {

/* 获取列表数据 */
const getList = async () => {
console.log("props.refresh", props.refresh)
if (!hasLogin()) {
uni.stopPullDownRefresh();
uni.$emit('refreshFinish');
@@ -104,27 +108,25 @@ export default function useOrderListItem(props) {
newsource = "ALI"
// #endif
let options = {}
if (getItem('tab') == '线下网点') {
console.log("tabName.value", tabName.value)
if (tabName.value == '线下网点') {
options = {
type: 2,
data: {
"opId": getItem(StorageKeys.OpenId),
// "source": newsource,
"vehiclePlate": searchKeyWords.value,
"tabIndex": props.index + '',
"pageNo": params.pageNum,
"pageSize": params.pageSize,
// "promotionModes": 1,
},
method: 'POST',
showLoading: true
}
console.log("线下网点", ordersList.value)
try {
console.log('输出内容1111111')
request(appPage, options).then((res) => {
uni.hideLoading()
var data = data = stringToJson(res.bizContent);
var data = stringToJson(res.bizContent);
console.log("ordersList.value", data)

params.total = data.totalCount;
@@ -163,18 +165,20 @@ export default function useOrderListItem(props) {
}
}
}
// uni.$emit('refreshFinish');
uni.$emit("refreshOrder");
console.log('输出内容111111', ordersList)
console.log("data.refresh", props.refresh)
console.log('输出内容app', ordersList)
})
.catch((err) => {
console.log(err);
});

// uni.$emit('refreshFinish');
uni.$emit('refreshFinish');
} catch (e) {

uni.stopPullDownRefresh();
uni.$emit('refreshFinish');
}
} else {
options = {
@@ -193,11 +197,9 @@ export default function useOrderListItem(props) {
}
try {

console.log('输出内容1111111')

request(orderList, options).then((res) => {
uni.hideLoading()
var data = data = stringToJson(res.bizContent);
var data = stringToJson(res.bizContent);
console.log("ordersList.value", data)

params.total = data.totalCount;
@@ -236,16 +238,17 @@ export default function useOrderListItem(props) {
}
}
}
console.log('输出内容222222', ordersList)
// uni.$emit('refreshFinish');
// uni.$emit("refreshOrder");
console.log('输出内容小程序', ordersList)
})
.catch((err) => {
console.log(err);
});
uni.$emit('refreshFinish');
} catch (e) {

uni.stopPullDownRefresh();
uni.$emit('refreshFinish');
}
}

@@ -254,13 +257,15 @@ export default function useOrderListItem(props) {
}

watch(() => props.index, () => {
console.log("watch1111")
refreshList(true);
});
watch(() => props.refresh, (nv) => {
if (nv) {
refreshList(false);
}
});
// watch(() => props.refresh, (nv) => {
// console.log("watch222222221", props.refresh)
// if (nv) {
// refreshList(false);
// }
// });
onMounted(() => {
if (props.refresh) {
refreshList(false);
@@ -281,6 +286,7 @@ export default function useOrderListItem(props) {
doSearch,
onKeyInput,
refreshList,
changeTab
changeTab,
tabName
};
}

+ 0
- 1
datas/enum.ts Vedi File

@@ -4,7 +4,6 @@ export enum PageData {
SIZE = 10, //每页加载数
NO_MORE_SIZE = 2, //如果列表已无数据,可设置列表的总数量要大于等于2条才显示无更多数据
}

//订单状态
// export enum OrderStatus {
// '已取消' = -1, //注意“已取消”判断字段未orderStatus,下面判断字段为orderStep

+ 227
- 0
pages/order/components/app-order-list.vue Vedi File

@@ -0,0 +1,227 @@
<!-- 订单列表 -->
<template>
<!-- 搜索框 -->
<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" />
</view>
<view class="search-btn" @click="doSearch">搜索</view>
</view>

<!-- 数据为空 -->
<empty-view :mode="config.emptyHint.mode" :content="config.emptyHint.hint" v-if="ordersList.length === 0" />

<template v-else>
<!-- 列表 -->
<block v-for="(item,index) in ordersList" :key="index">
<!-- 新办订单 -->
<order-list-item-new :item="item" />

</block>
<uni-load-more :status="params.status" iconType="snow" :icon-size="16" :content-text="config.contentTxt"
v-if="ordersList.length > 0" />
</template>
<!-- </scroll-view> -->
</template>

<script setup lang="ts">
import orderListItemNew from "./order-list-item-new.vue";
import orderListItemCardSign from "./order-list-item-card-sign.vue";
import orderListItemObu from "./order-list-item-obu.vue";
import orderListItemLogoffEtc from "./order-list-item-logoff-etc.vue";
import orderListItemEditCar from "./order-list-item-edit-car.vue";
import orderListItemCancelNumberplate from './order-list-item-cancel-numberplate.vue';
import orderListItemRecharge from "./order-list-item-cancel-recharge.vue";
import { OrderTypes } from "@/datas/enum";
import useOrderListItem from "@/composables/order/useOrderListItem";
import { reactive, watch } from "vue";
import { onLoad } from "@dcloudio/uni-app";
import { getItem, StorageKeys, setItem } from "@/utils/storage";
import { hasLogin, msg, timesDiff } from "@/utils/utils";
import { request } from "@/utils/network/request.js";
import { orderList, appPage } from "@/utils/network/api";
const tools = require("../../static/etcUtil/tools.js");
import { stringToJson } from "@/utils/network/encryption";
const state = reactive({
triggered: false, //设置当前下拉刷新的状态
freshing: true,
_freshing: false,
ordersList: []
})
const searchKeyWords = ref('');
const props = defineProps({
index: {
type: Number,
default() {
return 0
}
},
refresh: { //是否刷新列表
type: Boolean,
default: true
}
})

const { config, params, onKeyInput, refreshList } = useOrderListItem(props);
//自定义下拉刷新被触发
const onRefresh = () => {
console.log("22222")
refreshList(true)
if (state._freshing) return;
state._freshing = true;
setTimeout(() => {
state.triggered = false;
state._freshing = false;
}, 1000)
}
const onPulling = (e) => {
console.log("11111")
if (e.detail.deltaY < 0) {
return
}
state.triggered = true
}
onLoad(() => {
getList()
})
//搜索
const doSearch = () => {
// #ifdef MP-WEIXIN
if (!searchKeyWords.value) {
msg('请输入需要搜索的车牌号!');
return;
}
refreshList(true);
// #endif
// #ifdef MP-ALIPAY
tools.showLoadingAlert("加载中");
refreshList(true);
tools.hideLoadingAlert();
// #endif

}
const getList = async () => {
console.log("props.refresh", props.refresh)
const options = {
type: 2,
data: {
"opId": getItem(StorageKeys.OpenId),
"vehiclePlate": searchKeyWords.value,
"tabIndex": props.index + '',
"pageNo": params.pageNum,
"pageSize": params.pageSize,
},
method: 'POST',
showLoading: true
}
try {
request(appPage, options).then((res) => {
uni.hideLoading()
var data = stringToJson(res.bizContent);
console.log("state.ordersList", data)

params.total = data.totalCount;

if (params.pageNum === 1) {
state.ordersList = [];
}
if (params.total > 0) {
const curList = data.data || [];
state.ordersList = params.reload ? curList : state.ordersList.concat(curList);
params.reload = false;
}

if (params.total === state.ordersList.length) {
params.reload = false;
params.status = 'noMore';
}

if (params.pageNum === 1) {
uni.stopPullDownRefresh();
}
// 订单发货后未激活 30天 以后 结束订单功能 insertTime >30 算出来距离今天是负数 updateTime<30(结束订单)
for (var k = 0; k < state.ordersList.length; k++) {
if (state.ordersList[k]['insertTime']) {
if (timesDiff(state.ordersList[k]['insertTime'].replace("T", " ")).days > 30) {
state.ordersList[k]['finishOrder'] = true //可以结束
} else {
state.ordersList[k]['finishOrder'] = false //不可以结束
}
}
if (state.ordersList[k]['updateTime']) {
if (timesDiff(state.ordersList[k]['updateTime'].replace("T", " ")).days <= 30) {
state.ordersList[k]['isUseAgain'] = true //可以再次使用
} else {
state.ordersList[k]['isUseAgain'] = false //不可以再次使用
}
}
}
// uni.$emit('refreshFinish');
uni.$emit("refreshOrder");
console.log("data.refresh", props.refresh)
console.log('输出内容app', ordersList)
})
.catch((err) => {
console.log(err);
});

uni.$emit('refreshFinish');
} catch (e) {

uni.stopPullDownRefresh();

}
}
</script>

<style lang="scss" scoped>
.setHight {
min-height: calc(100vh - 200rpx);
}

.search-layout {
padding-top: 180rpx;

.search-box {
margin: 30rpx 30rpx 0rpx 30rpx;
height: 80rpx;
background: #FFFFFF;
border: 1px solid #DCDCDC;
border-radius: 40rpx;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
flex: 1;
}

.search-box .icon {
width: 48rpx;
height: 48rpx;
margin: 0 20rpx;
}

.search-box .search {
flex: 1;
margin-right: 20rpx;
height: 100%;
padding: 0 10rpx;
font-size: 28rpx;
color: #00b38b;
}

.search-btn {
color: white;
background-color: #00B38B;
width: 140rpx;
height: 75rpx;
line-height: 75rpx;
font-size: 32rpx;
border-radius: 40rpx;
text-align: center;
margin-right: 30rpx;
margin-top: 30rpx;
}
}
</style>

+ 1
- 22
pages/order/components/order-list-item.vue Vedi File

@@ -1,8 +1,5 @@
<!-- 订单列表 -->
<template>
<!-- <scroll-view class="setHight" scroll-y="true" refresher-enabled="true" :refresher-enabled='state.freshing'
:refresher-triggered='state.triggered' @refresherrefresh="onRefresh" @refresherpulling="onPulling"
refresher-default-style="black"> -->
<!-- 搜索框 -->
<view class="as-layout-horizontal as-gravity-center-start search-layout">
<view class="search-box">
@@ -19,29 +16,11 @@
<!-- 列表 -->
<block v-for="(item,index) in ordersList" :key="index">
<!-- 新办订单 -->
<!-- v-if="item.orderType == 'ISSUE'" -->
<order-list-item-new :item="item" />
<!-- 卡签同时更换/更换卡/更换签订单 -->
<!-- <order-list-item-card-sign :item="item"
v-else-if="item.orderType == OrderTypes.同时换卡换签 || item.orderType == 'REPLACEMENT_CARD'
|| item.orderType == 'REPLACEMENT_SIGNATURE'" /> -->
<!-- 增补OBU订单 -->
<!-- <order-list-item-obu :item="item" v-else-if="item.orderType == 'SUPPLEMENT_OBU'" /> -->
<!-- 公务车增补OBU订单 -->
<!-- <order-list-item-obu :item="item" v-else-if="item.orderType == 'OFFICAL_SUPPLEMENT_OBU'" /> -->
<!-- ETC注销业务类型订单 -->
<!-- <order-list-item-logoff-etc :item="item" v-else-if="item.orderType == OrderTypes.ETC注销" /> -->
<!-- 车辆信息变更 -->
<!-- <order-list-item-edit-car :item="item" v-else-if="item.orderType == OrderTypes.车辆信息变更" /> -->
<!-- 解除车牌占用 -->
<!-- <order-list-item-cancel-numberplate :item="item" v-else-if="item.orderType == OrderTypes.解除车牌占用" /> -->
<!-- 单位账户充值开户订单 -->
<!-- <order-list-item-recharge :item="item" v-else-if="item.orderType == 'EXCHANGE_CARD_TYPE'" /> -->
</block>
<uni-load-more :status="params.status" iconType="snow" :icon-size="16" :content-text="config.contentTxt"
v-if="ordersList.length > 0" />
</template>
<!-- </scroll-view> -->
</template>

<script setup lang="ts">
@@ -54,7 +33,7 @@
import orderListItemRecharge from "./order-list-item-cancel-recharge.vue";
import { OrderTypes } from "@/datas/enum";
import useOrderListItem from "@/composables/order/useOrderListItem";
import { reactive } from "vue";
import { reactive, watch } from "vue";
import { onLoad } from "@dcloudio/uni-app";
const state = reactive({
triggered: false, //设置当前下拉刷新的状态

+ 2
- 1
pages/order/order.vue Vedi File

@@ -17,7 +17,6 @@
v-if="data.tabsList.length > 0"></order-tabbar>
</view>


<order-list-item ref="mescrollItem" :index="data.tabIndex" :refresh="data.refresh">
</order-list-item>
</view>
@@ -61,8 +60,10 @@
changeTab(state.tabActive)
})
const flowPathTabHandle = (tab) => {
console.log("tab", tab)
state.tabActive = tab;
changeTab(state.tabActive)

};
</script>


+ 27
- 13
pages/recharge/recharge-weixin.vue Vedi File

@@ -15,7 +15,7 @@
</view>

<view class="input-box">
<input v-model="state.money" placeholder="请输入金额" class="input" type="number" @input="checkNum" />
<input v-model="state.money" placeholder="请输入金额" class="input" @input="checkNum" />
<view class="tips">最低充值金额不小于10元</view>
</view>
<view class="tabs">
@@ -414,22 +414,36 @@
cosResponse: response,
};
uni.hideLoading();
cardCzXFCheckAction().then((xfRes) => {
quanApplyAction(dic).then((value : any) => {
console.log("圈存申请完后的结果");
console.log(value.commandType, value);
//圈存初始化验证通过 , 进行圈存
if (value.commandType === 2) {
uanConfirmAction(value);
} else {
quanApplyAction(value).then((values) => {
// cardCzXFCheckAction().then((xfRes) => {
quanApplyAction(dic).then((value : any) => {
console.log("圈存申请完后的结果");
console.log(value.commandType, value);
//圈存初始化验证通过 , 进行圈存
if (value.commandType === 2) {
uanConfirmAction(value);
} else {
console.log("第二次70", value)
let cmdArr = value.command.split(",");
uni.showLoading({
title: "写入中",
});
transCmd(cmdArr, function (res : any) {
let response = res.toString();
var dic = {
command: val.command,
cosResponse: response,
};
uni.hideLoading();
quanApplyAction(dic).then((values) => {
console.log("圈存申请完后的结果");
uanConfirmAction(values);
});
// msg("圈存初始化指令验证失败, 重新初始化");
}
});
})

// msg("圈存初始化指令验证失败, 重新初始化");
}
});
// });
});
} else {
let cmdArr = val.command.split(",");

+ 1
- 2
subpackage/after-sale/account-recharge/open-account.vue Vedi File

@@ -233,14 +233,13 @@
let data = stringToJson(res.bizContent)
console.log("开户成功", data.status)
uni.showModal({
content: '审核',
content: '申请已受理,请等待审核',
showCancel: false,
success: function (res) {
if (res.confirm) {
uni.navigateBack({
delta: 2
})
// navTo(`/subpackage/after-sale/account-recharge/login`)
} else if (res.cancel) {
console.log('用户点击取消');
}

+ 863
- 861
subpackage/after-sale/activation-once-again/activation-once-again.vue
File diff soppresso perché troppo grande
Vedi File


+ 7
- 3
subpackage/after-sale/additional-equipment/additional-equipment-confirm.vue Vedi File

@@ -141,9 +141,13 @@
});
/*下一步*/
const nextACtion = () => {
navTo(
`/subpackage/after-sale/additional-equipment/additional-equipment-verification?orderId=${state.data.orderId}&&cardId=${state.data.cardId}&&mobile=${state.data.customerTel}`
)
if (!state.data.obuId) {
navTo(
`/subpackage/after-sale/additional-equipment/additional-equipment-verification?orderId=${state.data.orderId}&&cardId=${state.data.cardId}&&mobile=${state.data.customerTel}`
)
} else {
msg("已有OBU,无需增补")
}
}

const queryOrderDetail = (id) => {

+ 5
- 1
subpackage/after-sale/card-Renewal/renewal-confirm.vue Vedi File

@@ -328,6 +328,9 @@
const cancel = () => {
state.flag = true;
state.showPopup = false;
uni.navigateTo({
url: `/subpackage/after-sale/deviceInfo/deviceInfo`
})
}

//签续期 请求
@@ -396,8 +399,9 @@
showLoading: true, //是否显示加载中(默认显示)
}).then((les) => {
let result = stringToJson(les.bizContent);
console.log(les, '=========123')
console.log(result, '=========123')
let res1 = result.gbkFileData; //车牌号
// let res1 = AsciToHexString(fileDataStrings.vehiclePlate, 24); //车牌号
let res2 = IntegerToHexString(fileDataStrings.vehiclePlateColor, 4); //车牌颜色

let res3 = IntegerToHexString(1, 2); //类型

+ 3
- 0
subpackage/after-sale/card-loss-reporting/cardloss.vue Vedi File

@@ -81,6 +81,9 @@
form.type = options.type
form.mobile = options.mobile
form.successTip = options.successTip
uni.setNavigationBarTitle({
title: options.successTip
});
});

const getCode = () => {

+ 5
- 3
subpackage/after-sale/deviceInfo/deviceInfo.vue Vedi File

@@ -337,15 +337,17 @@
console.log(res);
let str2 = res[1].substring(res[1].length - 4, res[1].length);
if (str2 == "9000") {
console.log("===========", obu.num, res[1].substring(0, res[1].length - 4))
decryptObuVehicleInfo(obu.num, res[1].substring(0, res[1].length - 4),
function(res) {
console.log(res);
console.log("obu信息", res, res.substring(44, 48));
obu.approvedCount = HexToInt(res.substring(48, 54));
obu.axleCount = HexToInt(res.substring(44, 48));
obu.axleCount = HexToInt(res.substring(42, 44));
obu.axleDistance = HexToInt(res.substring(44, 48));
obu.engineNum = HexToStrig(res.substring(86, 118));
obu.type = getVehicleType(HexToInt(res.substring(28, 30)));
obu.userType = HexToInt(res.substring(30, 32)) == 1 ? "个人用户" : "单位用户";
obu.userType = HexToInt(res.substring(30, 32)) == 1 ? "个人用户" :
"单位用户";
obu.vehiclePlate = HexToStrig(res.substring(0, 24), 2);
//获取车牌颜色
obu.vehiclePlateColor = getVehiclePlateColor(HexToInt(res

+ 3
- 2
subpackage/after-sale/equipment-upgrade/upgrade-confirm.vue Vedi File

@@ -405,7 +405,8 @@
}).then((les) => {
let result = stringToJson(les.bizContent);
console.log(les, '=========123')
let res1 = result.gbkFileData; //车牌号
// let res1 = result.gbkFileData; //车牌号
let res1 = AsciToHexString(fileDataStrings.vehiclePlate, 24); //车牌号
let res2 = IntegerToHexString(fileDataStrings.vehiclePlateColor, 4); //车牌颜色

let res3 = IntegerToHexString(1, 2); //类型
@@ -420,7 +421,7 @@
let res10 = IntegerToHexString(null, 4); //轴距32
let res11 = IntegerToHexString(fileDataStrings.approvedCount, 6); //核载人数

let res12 = AsciToHexString(fileDataStrings.vehicleVin, 32); //车
let res12 = AsciToHexString(fileDataStrings.vehicleVin, 32); //车辆识别代

// let res12 = JSON.parse(res.bizContent).gbkFileData; //车编号
let res13 = AsciToHexString(fileDataStrings.vehicleEngineNum, 32); //发动机

+ 33
- 23
subpackage/after-sale/refund-order-balance/select-car.vue Vedi File

@@ -1,6 +1,7 @@
<template>
<view class="selectCar-box">
<view v-if="state.list&&state.list.length>0" @click="choose(i,item)" class="item" v-for="(item,i) in state.list" :key="i">
<view v-if="state.list&&state.list.length>0" @click="choose(i,item)" class="item" v-for="(item,i) in state.list"
:key="i">
<view class="iten-left">
<image :src="`${$imgUrl}che.png`" mode=""></image>
<text>{{item.vehiclePlate}}</text>
@@ -27,10 +28,10 @@
navTo
} from "@/utils/utils"
import {
onLoad,
onLoad, onShow
} from "@dcloudio/uni-app";
import {
orderList
orderList, queryRefund, getUserMsg
} from "@/utils/network/api.js";
import {
request
@@ -44,30 +45,40 @@
} from "@/utils/network/encryption";

const state = reactive({
customerIdNum: "",
list: [] //车辆list
});
const flag = ref('0') //默认选择0

onLoad(() => {
quanCheckActionTrue().then((item: any) => {
state.list = item.data
})
queryUserMsg()
});
onShow(() => {

const quanCheckActionTrue = () => {
let source = ""
// #ifdef MP-ALIPAY
source ="ALI"
// #endif
// #ifdef MP-WEIXIN
source ="WECHAT"
// #endif
})
// 通过opneId查询用户信息
const queryUserMsg = () => {
const options = {
type: 2,
data: {
"openId": getItem('openId')
},
method: "POST",
showLoading: true,
};
request(getUserMsg, options).then((res) => {
const data = stringToJson(res.bizContent);
console.log("通过opneId查询用户信息", stringToJson(res.bizContent))
state.customerIdNum = data.customerIdNum;
queryRefundAction().then((item : any) => {
state.list = item.data
})
})
}
//储值卡注销退费查询接口
const queryRefundAction = () => {
var data = {
opId: getItem(StorageKeys.OpenId),
source: source, //渠道为小程序
tabIndex: '0', //0全部
orderStep: '11', //11 为已完成”
isAfter: true,
customerIdNum: state.customerIdNum
};
const options = {
type: 2,
@@ -75,16 +86,15 @@
method: "POST",
showLoading: true,
};

return new Promise(async (resolve, reject) => {
const res = await request(orderList, options);
const res = await request(queryRefund, options);
const data = stringToJson(res.bizContent);
console.log("data", data)
resolve(data);
}).catch((error) => {
reject(error);
});
}

const choose = (i, item) => {
flag.value = i
navTo(`/subpackage/after-sale/refund-order-balance/refund-order-balance?vehicleId=${item.vehicleId}`)
@@ -163,4 +173,4 @@


}
</style>
</style>

+ 30
- 22
subpackage/after-sale/refundPage-selectCar.vue Vedi File

@@ -1,6 +1,7 @@
<template>
<view class="selectCar-box">
<view v-if="state.list&&state.list.length>0" @click="choose(i,item)" class="item" v-for="(item,i) in state.list" :key="i">
<view v-if="state.list&&state.list.length>0" @click="choose(i,item)" class="item" v-for="(item,i) in state.list"
:key="i">
<view class="iten-left">
<image :src="`${$imgUrl}che.png`" mode="aspectFill"></image>
<text>{{item.vehiclePlate}}</text>
@@ -30,7 +31,7 @@
onLoad,
} from "@dcloudio/uni-app";
import {
orderList
getUserMsg, queryRefund
} from "@/utils/network/api.js";
import {
request
@@ -44,30 +45,38 @@
} from "@/utils/network/encryption";

const state = reactive({
customerIdNum: "",
list: [] //车辆list
});
const flag = ref('0') //默认选择0

onLoad(() => {
quanCheckActionTrue().then((item: any) => {
state.list = item.data
})
queryUserMsg()
});

const quanCheckActionTrue = () => {
let source = ""
// #ifdef MP-ALIPAY
source ="ALI"
// #endif
// #ifdef MP-WEIXIN
source ="WECHAT"
// #endif
// 通过opneId查询用户信息
const queryUserMsg = () => {
const options = {
type: 2,
data: {
"openId": getItem('openId')
},
method: "POST",
showLoading: true,
};
request(getUserMsg, options).then((res) => {
const data = stringToJson(res.bizContent);
console.log("通过opneId查询用户信息", stringToJson(res.bizContent))
state.customerIdNum = data.customerIdNum;
queryRefundAction().then((item : any) => {
state.list = item.data
})
})
}
//储值卡注销退费查询接口
const queryRefundAction = () => {
var data = {
opId: getItem(StorageKeys.OpenId),
source: source, //渠道为小程序
tabIndex: '0', //0全部
orderStep: '11', //11 为已完成”
isAfter: true,
customerIdNum: state.customerIdNum
};
const options = {
type: 2,
@@ -75,11 +84,10 @@
method: "POST",
showLoading: true,
};

return new Promise(async (resolve, reject) => {
const res = await request(orderList, options);
const res = await request(queryRefund, options);
const data = stringToJson(res.bizContent);
console.log("data",data)
console.log("data", data)
resolve(data);
}).catch((error) => {
reject(error);
@@ -161,4 +169,4 @@
}
}
}
</style>
</style>

+ 2
- 1
subpackage/after-sale/transferRecord.vue Vedi File

@@ -92,7 +92,8 @@
state.tableData = [...stringToJson(res.bizContent).data, ...state.tableData]
if (state.tableData.length != 0) {
for (var k = 0; k < state.tableData.length; k++) {
if (state.tableData[k]["status"] == "WITHVEHICLE") {
// WAITING("等待使用", 0) USE("已使用", 1) CANCEL("弃置", -1)
if (state.tableData[k]["status"] == "WAITING") {
state.tableData[k]["statusChinese"] = "等待使用"
} else if (state.tableData[k]["status"] == "USE") {
state.tableData[k]["statusChinese"] = "已使用"

+ 21
- 25
subpackage/orders/apply-ex-goods-step1.vue Vedi File

@@ -3,7 +3,7 @@
<view class="oderPage">
<u-form :model="form" ref="myForm" :error-type="errorType">
<view class="from">
<u-form-item prop="operation">
<!-- <u-form-item prop="operation">
<view class="from_item">
<text><text style="color: red;">*</text>注销方式:</text>
<u-radio-group v-model="form.operation">
@@ -14,7 +14,7 @@
</u-radio>
</u-radio-group>
</view>
</u-form-item>
</u-form-item> -->
<u-form-item prop="applyType">
<view class="from_item">
<text><text style="color: red;">*</text>申请类型:</text>
@@ -83,22 +83,23 @@
const applyType = ref('')
//选择器数据
const index = ref('-1');
const columnsOld = ["换货-换卡", "换货-换签", "换货-换卡签"]
const columns = [{
label: '换货-换卡',
// 其他属性值
id: 'CARD'
},
{
label: '换货-换签',
// 其他属性值
id: 'OBU'
},
{
label: '换货-换卡签',
// 其他属性值
id: 'ALL'
},
const columnsOld = ["换货-换卡签"]
const columns = [
// {
// label: '换货-换卡',
// // 其他属性值
// id: 'CARD'
// },
// {
// label: '换货-换签',
// // 其他属性值
// id: 'OBU'
// },
{
label: '换货-换卡签',
// 其他属性值
id: 'ALL'
},
// {
// label: '换卡签-换卡',
// // 其他属性值
@@ -168,17 +169,12 @@

// 提交
const submit = () => {
if (form.operation && form.applyType) {
if (form.applyType) {
console.log('验证通过', form);
navTo(`/subpackage/orders/apply-ex-goods?orderId=${oldId.value}`) //测试用
} else if (!form.applyType) {
uni.showToast({
title: "请选择申请类型",
icon: "none"
})
} else {
uni.showToast({
title: "请选择注销类",
title: "请选择申请类型",
icon: "none"
})
}

+ 101
- 96
subpackage/orders/flowingWater.vue Vedi File

@@ -49,8 +49,9 @@
</view> -->
<view class="btn-wrap">
<view>
<text v-if="item.status === 1" class="status-wrap">审核进度:<text >已进行</text></text>
<text v-if="item.status === 2" class="status-wrap">审核进度:<text class="status-text">未进行</text></text>
<text v-if="item.status === 1" class="status-wrap">审核进度:<text>已进行</text></text>
<text v-if="item.status === 2" class="status-wrap">审核进度:<text
class="status-text">未进行</text></text>
<text v-if="item.status === -1" class="status-wrap">审核进度:<text>驳回</text></text>
<text v-if="item.status === 3" class="status-wrap">审核进度:<text>待审核</text></text>
</view>
@@ -60,23 +61,23 @@
<view class="btn-1 btn" v-if="item.status === 3" @click="toEvaluate(item)">去评价</view> -->
</view>
</view>
</view>
</view>
<view class="no">暂无补卡额圈存数据</view>
</template>

<script lang="ts" setup>
import {reactive,ref} from "vue";
import { onLoad,onUnload } from "@dcloudio/uni-app";
import { reactive, ref } from "vue";
import { onLoad, onUnload } from "@dcloudio/uni-app";
import { request } from "@/utils/network/request.js";
import {queryCardLimit,quanCheck,quanApply,quanConfirm,quanXf} from "@/utils/network/api";
import { queryCardLimit, quanCheck, quanApply, quanConfirm, quanXf } from "@/utils/network/api";
import { stringToJson } from "@/utils/network/encryption";
import {msg} from "@/utils/utils";
import { msg } from "@/utils/utils";
const cmd = require("../../static/etcUtil/cmdConfig.js");
const tools = require("../../static/etcUtil/tools.js");
const bluetoothUtil = require("../../static/etcUtil/index.js");
import {navTo} from "@/utils/utils"
import { navTo } from "@/utils/utils"
const card = reactive({
/*卡相关信息*/
cardId: "",
@@ -101,39 +102,25 @@
endDate: ""
})
const state = reactive({
vehicleId:"",//车牌号
id:"",
list:"",
cardBalance:"",
haveData:false, //是否有数据
vehicleId: "",//车牌号
id: "",
list: "",
cardBalance: "",
haveData: false, //是否有数据
})
const listData = reactive(null)
// const listData = reactive([
// {
// id: 1,
// status: 1 // 补卡
// },
// {
// id: 2,
// status: 2 // 查看进度
// },
// {
// id: 3,
// status: 3 // 去评价
// },
// ])
onLoad((options) => {
state.vehicleId=options.vehicleId
state.vehicleId = options.vehicleId
//根据车牌查询信息.data
queryRefundAction().then(val => {
console.log("val",val)
if(val.data){
console.log("val", val)
if (val.data) {
state.list = val.data
state.haveData=true
state.haveData = true
}
})
/*监听蓝牙回调*/
uni.$on('bluetoothLink', function(status) {
uni.$on('bluetoothLink', function (status) {
getCardId()
})
});
@@ -143,38 +130,31 @@
});
// 补卡额列表查询接口
const queryRefundAction = () => {
const options = {
type: 2,
data: {
"vehicleId":state.vehicleId,
"systemType":"WX"
},
method: "POST",
showLoading: true,
};
return new Promise(async (resolve, reject) => {
const res = await request(queryCardLimit, options);
const data = stringToJson(res.bizContent);
console.log("储值卡注销退费查询接口",data)
resolve(data);
}).catch((error) => {
reject(error);
});
// request(queryCardLimit, options).then((res) => {
// const data = stringToJson(res.bizContent);
// // if(data.hasData){
// // }
// state.listData=data.data;
// console.log("data",data)
// });
const options = {
type: 2,
data: {
"vehicleId": state.vehicleId,
"systemType": "WX"
},
method: "POST",
showLoading: true,
};
return new Promise(async (resolve, reject) => {
const res = await request(queryCardLimit, options);
const data = stringToJson(res.bizContent);
console.log("储值卡注销退费查询接口", data)
resolve(data);
}).catch((error) => {
reject(error);
});
};
// 日期修改
function changeHandle(e) {
dataTime.startDate = e.startDate;
dataTime.endDate = e.endDate;

}
// 补卡申请
function toApply(item) {
uni.navigateTo({
@@ -195,12 +175,12 @@
}
// 去圈存
//功能跳转入口
const refundTypeAction = (val: any) => {
/*圈存*/
//链接蓝牙
console.log("val.id",val.id)
const refundTypeAction = (val : any) => {
/*圈存*/
//链接蓝牙
console.log("val.id", val.id)
state.id = val.id;
state.cardBalance=val.cardBalance
state.cardBalance = val.cardBalance
uni.navigateTo({
url: `/pages/bluetooth/bluetooth?routeType=5`,
});
@@ -220,7 +200,7 @@
];
tools.showLoadingAlert("正在执行指令");
//10:写卡 20:写OBU
bluetoothUtil.transCmd(cmdArr, "10", function(res) {
bluetoothUtil.transCmd(cmdArr, "10", function (res) {
tools.hideLoadingAlert();
let str = res[2].substring(res[2].length - 4, res[2].length);
let str3 = res[3].substring(res[3].length - 4, res[3].length);
@@ -234,8 +214,8 @@
card.cardType = res[2].substring(28, 29) == 23 ? 1 : 2;
card.vehiclePlateColor = parseInt(res[2].substring(82, 84), 16);
(card.money = parseInt(parseInt(res[3].substring(0, 8), 16), 10)),
console.log("======卡信息======", card);
console.log("======卡信息======", card);
quanCheckActionTrue().then((val) => {
checkQuanCengEvent(val);
});
@@ -250,7 +230,7 @@
};
const quanCheckActionTrue = () => {
console.log("进行真实圈存检测");
var data = {
cardId: card.cardId,
orderId: state.id,
@@ -272,13 +252,13 @@
reject(error);
});
};
const checkQuanCengEvent = (val: any) => {
const checkQuanCengEvent = (val : any) => {
if (val.chargeStatus === 1) {
let cmdArr = val.command.split(",");
uni.showLoading({
title: "写入中",
});
bluetoothUtil.transCmd(cmdArr, "10", function(res) {
bluetoothUtil.transCmd(cmdArr, "10", function (res) {
let response = res.toString();
var dic = {
command: val.command,
@@ -291,21 +271,21 @@
//圈存初始化验证通过 , 进行圈存
if (value.commandType === 2) {
uanConfirmAction(value).then((confirmResult) => {
navTo(
`/subpackage/after-sale/refund-order-balance/result`)
navTo(
`/subpackage/after-sale/refund-order-balance/result`)
});
} else {
msg("圈存初始化指令验证失败, 重新初始化");
}
});
});
} else {
let cmdArr = val.command.split(",");
uni.showLoading({
title: "写入中",
});
bluetoothUtil.transCmd(cmdArr, "10", function(res) {
bluetoothUtil.transCmd(cmdArr, "10", function (res) {
var status = res[1].substring(res[1].length - 4, res[1].length);
console.log("打印状态");
console.log(status);
@@ -324,7 +304,7 @@
//圈存修复COS指令Response信息不足,重新进行修复初始化
if (fixStatus === 3) {
let xfcmdArr = value.command.split(",");
bluetoothUtil.transCmd(xfcmdArr, "10", function(resValueData) {
bluetoothUtil.transCmd(xfcmdArr, "10", function (resValueData) {
var status = resValueData[1].substring(
resValueData[1].length - 4,
resValueData[1].length
@@ -335,7 +315,7 @@
console.log(resValueData);
var valueResponse = resValueData.toString();
console.log(response);
var applyDic = {
command: value.command,
cosResponse: valueResponse,
@@ -353,8 +333,8 @@
});
} else if (fixStatus === 2) {
uanConfirmSucessAction(value).then((confirmResult) => {
navTo(
`/subpackage/orders/flowingWater-result`)
navTo(
`/subpackage/orders/flowingWater-result`)
});
} else if (fixStatus === 1) {
quanCheckActionTrue().then((val) => {
@@ -386,7 +366,7 @@
showLoading: true,
};
return new Promise(async (resolve, reject) => {
console.log("70",options)
console.log("70", options)
const res = await request(quanApply, options);
const data = stringToJson(res.bizContent);
resolve(data);
@@ -399,7 +379,7 @@
console.log("圈存确认进入");
let cmdArr = data.command.split(",");
console.log(cmdArr);
bluetoothUtil.transCmd(cmdArr, "10", function(res) {
bluetoothUtil.transCmd(cmdArr, "10", function (res) {
console.log("圈存透传");
console.log(res);
var arraylenth = res.length;
@@ -414,7 +394,7 @@
command: data.command,
cosResponse: res.toString(),
rechargeId: data.rechargeId,
paidAmount:data.fee,
paidAmount: data.fee,
giftAmount: 0,
};
const options = {
@@ -424,7 +404,7 @@
showLoading: true,
};
return new Promise(async (resolve, reject) => {
console.log("实收金额报错",options)
console.log("实收金额报错", options)
const res = await request(quanConfirm, options);
const data = stringToJson(res.bizContent);
resolve(data);
@@ -480,11 +460,12 @@
</script>

<style lang="scss" scoped>
.no{
.no {
text-align: center;
font-size: 32rpx;
margin: 20rpx auto;
}

.bg-color {
position: fixed;
top: 0;
@@ -494,6 +475,7 @@
background: #EEF7F7;
z-index: -1;
}

.search-box {
margin: 30rpx 30rpx 20rpx 30rpx;
height: 72rpx;
@@ -529,13 +511,16 @@
background: #ffffff;
box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223, 223, 223, 0.8);
}

.search-time {
// width: 100%;
display: flex;
padding: 10rpx 30rpx 30rpx;
.search-time-box{

.search-time-box {
flex: 1;
}

.time-btn {
width: 130rpx;
height: 80rpx;
@@ -547,6 +532,7 @@
text-align: center;
margin-left: 20rpx;
}

.show-info {
// width: 541rpx;
width: 85%;
@@ -558,17 +544,21 @@
display: flex;
justify-content: space-between;
align-items: center;

.show-text {
display: flex;
align-items: center;
}

.date-text {
color: #999999;
font-size: 28rpx;
}

.text-val {
color: #333
}

.line {
width: 25rpx;
height: 1rpx;
@@ -577,42 +567,48 @@
}
}
}

.total-num {
font-size: 28rpx;
color: #999999;
margin-left: 30rpx;
}

.list-wrap {
margin: 30rpx;
padding-bottom: 20rpx;
}

.card-info {
background: #FFFFFF;
box-shadow: 0rpx 2rpx 6rpx 0rpx rgba(223, 223, 223, 0.8);
border-radius: 20rpx;
margin-bottom: 30rpx;
padding: 30rpx 30px 13rpx 30rpx;

.info-wrap {
display: flex;
justify-content: space-between;
align-items: center;
border-bottom: 1px solid #dcdcdc;
padding-bottom: 30rpx;

.info-left-text {
margin-bottom: 20rpx;
}

.label {
color: #999999;
font-size: 26rpx;
font-weight: 400;
}
.val {
color: #333333;
font-size: 26rpx;
font-weight: 400;
}
.price-label {
color: #999999;
font-size: 24rpx;
@@ -620,43 +616,45 @@
margin-bottom: 22rpx;
text-align: center;
}
.price-val-text {
font-size: 36rpx;
font-weight: 700;
color: #333333;
margin-left: 9rpx;
}
.price-val {
font-size: 26rpx;
color: #333333;
}
}
.card-text-wrap {
display: flex;
justify-content: space-between;
align-items: center;
margin: 38rpx 0 46rpx 0;

.text-box {
display: flex;
flex-direction: column;
align-items: center;

.name-text {
font-size: 30rpx;
font-weight: 400;
color: #333333;
}
.time-text {
font-size: 30rpx;
color: #333333;
font-weight: 400;
margin-top: 8rpx;
}
.date-text {
font-size: 24rpx;
color: #999999;
@@ -664,37 +662,41 @@
margin-top: 8rpx;
}
}
.arrow-wrap {
display: flex;
flex-direction: column;
align-items: center;
.d-img {
width: 186rpx;
height: 12rpx;
}
.arrow-text {
color: #666666;
font-size: 26rpx;
}
}
}

.btn-wrap {
margin-top: 30rpx;
display: flex;
justify-content: space-between;
align-items: center;

.status-wrap {
color: #999999;
font-size: 26rpx;
margin-right: 23rpx;
}

.status-text {
color: #00B38B;
}
.btn{

.btn {
background: #FFFFFF;
border: 1px solid #00B38B;
border-radius: 30rpx;
@@ -703,18 +705,21 @@
color: #00B38B;
font-size: 26rpx;
}

.btn-1 {
width: 140rpx;
height: 50rpx;
}

.btn-2 {
width: 141rpx;
height: 50rpx;
}

.btn-3 {
width: 121rpx;
height: 50rpx;
}
}
}
</style>
</style>

+ 1
- 1
subpackage/personal-center/car-details.vue Vedi File

@@ -11,7 +11,7 @@
<view><text>整备质量:</text><text>{{state.tableData['maintenaceMass']}}kg</text></view>
<view><text>外廊尺寸:</text><text>{{state.tableData['vehicleDimensions']}}</text></view>
<view><text>总质量:</text><text>{{state.tableData['totalMass']}}Kg</text></view>
<view><text>车轴数:</text><text>{{state.tableData['axleCount']}}轴</text></view>
<view><text>车轴数:</text><text>{{state.tableData['axleCount']?state.tableData['axleCount']:2}}轴</text></view>
<view><text>状态:</text><text>{{state.tableData['status']}}</text></view>
<view><text>行驶证主页:</text>
<image mode="widthFix" :src="state.tableData['vehPosImgUrl']"></image>

+ 4
- 4
subpackage/personal-center/install-activation-order.vue Vedi File

@@ -132,11 +132,10 @@

try {
res = await request(noActivationOrder, options);
console.log("res====", res)
const data = stringToJson(res.bizContent);
params.total = data.totalCount;
if (params.total > 0) {
params.total = data.data;
console.log("res====", params.total)
if (params.total.length > 0) {
const curList = data.data || [];
params.ordersList = params.reload ? curList : params.ordersList.concat(curList);
params.reload = false;
@@ -150,6 +149,7 @@
if (params.pageNum === 1) {
uni.stopPullDownRefresh();
}
console.log("params.ordersList", params.ordersList)
} catch (e) {
console.log('输出内容', e)
uni.stopPullDownRefresh();

+ 1
- 1
utils/network/request.js Vedi File

@@ -159,7 +159,7 @@ export function request(code, options = {}, start = false) {
let orderId = res.data.errorMsg
uni.showModal({
title: '提示',
content: "继续申",
content: "继续申",
// cancelText: '解除车牌', //前往解除车牌占用
success: function(res) {
if (res.confirm) {

+ 1
- 1
utils/util/sm4.js Vedi File

@@ -411,7 +411,7 @@ function SM4Util() {
let end = bizContent.lastIndexOf('}');

cipherText.data.bizContent = bizContent.substring(begin, end + 1)
console.log("返回数据是对象情况,", bizContent.substring(begin, end + 1))
// console.log("返回数据是对象情况,", bizContent.substring(begin, end + 1))
}
}
return cipherText

Loading…
Annulla
Salva