Просмотр исходного кода

ETC产品状态名单查询功能

yxb
DESKTOP-2IO5MST\huting 1 год назад
Родитель
Сommit
1a97e1fbce

+ 8
- 1
pages.json Просмотреть файл

@@ -95,12 +95,19 @@
"subPackages": [{
"root": "subpackage/after-sale", //售后相关
"pages": [{
"path": "ETC-product-status-list-query",
"path": "ETC-product-status-list-query/ETC-product-status-list-query",
"style": {
"navigationBarTitleText": "ETC产品状态名单",
"enablePullDownRefresh": false
}
},
{
"path": "ETC-product-status-list-query/ETC-product-status-list-query-details",
"style": {
"navigationBarTitleText": "ETC产品状态名单详情",
"enablePullDownRefresh": false
}
},
{
"path": "onlineService",
"style": {

+ 2
- 44
pages/index/index.vue Просмотреть файл

@@ -178,7 +178,6 @@
@click="$util.navTo('/subpackage/orders/moreHighMsg/moreHighMsg',true)">查看更多</view>
</view>
</view>
<!-- <button type="default" @click="qq">111111111111</button> -->
<!-- 专区服务 -->
<!-- <view class="service">
<view class="title">专区服务</view>
@@ -349,53 +348,12 @@
commonQuestion();

// doSomething();//代办事项
// uni.navigateTo({
// url: "/subpackage/after-sale/account-opening-template/account-opening-template"
// })
})
const qq = () => {
uni.navigateToMiniProgram({
appId: "wxbcad394b3d99dac9",
path: "pages/route/index",
extraData: {
appid: "wxcb1388c809fe25a9",
sub_appid: "wx008c60533388527a",
mch_id: "1500877591",
sub_mch_id: "1622652848",
nonce_str: "e9eb7a02533947389f8f4e7cb9394fb5",
sign_type: "HMAC-SHA256",
trade_scene: "HIGHWAY",
plate_number: "贵ZBYD09",
sub_openid: "oHQtp5C8821AImJa1ibf6rZ6xc60",
sign: "B926E47DF8DE6B5FE53FF7AC3CCB5FA7C5CDB3459A4C1AFC0CDC8B143EC68DDA",
channel_type: "ETC"
},
// extraData: {
// appid: "wxe5572b2938f35c09",
// channel_type: "ETC", //没有
// mch_id: "1641444218",
// nonce_str: "e9eb7a02533947389f8f4e7cb9394fb5",
// plate_number: "贵ZBYD09",
// sign: "B926E47DF8DE6B5FE53FF7AC3CCB5FA7C5CDB3459A4C1AFC0CDC8B143EC68DDA",
// sign_type: "HMAC-SHA256",
// sub_appid: "wx008c60533388527a",
// sub_mch_id: "1648725759",
// sub_openid: "oHQtp5C8821AImJa1ibf6rZ6xc60",
// trade_scene: "HIGHWAY"
// },
success(res) {
console.log(res);
},
complete(res) {
console.log(res);
},
fail(res) {
console.log(res);
// 未成功跳转到车主小程序
},
});
}

onMounted(() => {
uni.getSystemInfo({
success: (e : any) => {

+ 0
- 27
subpackage/after-sale/ETC-product-status-list-query.vue Просмотреть файл

@@ -1,27 +0,0 @@
<template>
<view class="item">
<text>产品名称:</text><input placeholder="请输入产品名称" />
</view>
<view class="item">
<text>产品状态:</text><input placeholder="请输入产品状态" />
</view>
<view class="item">
<text>产品编号:</text><input placeholder="请输入产品编号" />
</view>
</template>

<script setup lang="ts">
</script>

<style scoped>
.item {
display: flex;
font-size: 30rpx;
margin: 20rpx 0 0 20rpx;
}

input {
border: 1rpx solid #ccc;
padding: 0 10rpx;
}
</style>

+ 85
- 0
subpackage/after-sale/ETC-product-status-list-query/ETC-product-status-list-query-details.vue Просмотреть файл

@@ -0,0 +1,85 @@
<template>
<view class="allContent">
<view class="list-item">
<view><text>产品名称:</text><text>{{state.tableData['promoteName']}}</text></view>
<view><text>操作员工姓名:</text><text>{{state.tableData['operateUserName']}}</text></view>
<view><text>产品金额:</text><text>{{state.tableData['fee']/100}}元</text></view>
<view><text>产品发行产品编号:</text><text>{{state.tableData['releaseId']}}</text></view>
<view><text>产品编号:</text><text>{{state.tableData['promoteId']}}</text></view>
<view><text>产品生效时间:</text><text>{{state.params['start']}}</text></view>
<view><text>产品过期时间:</text><text>{{state.params['end']}}</text></view>
<view><text>产品状态:</text><text>{{state.tableData['status']=="ENABLE"?'可使用':"禁用"}}</text></view>
<view><text>产品渠道:</text><text>{{state.params['agencyName']?(state.params['agencyName'])[0]:""}}</text>
</view>
</view>
</view>

</template>

<script setup lang="ts">
import { reactive } from "vue";
import { onLoad } from "@dcloudio/uni-app";
import { ETCProductStatusListQueryDetailsApi } from "@/utils/network/api.js";
import { request } from "@/utils/network/request.js";
import { stringToJson } from "@/utils/network/encryption.js";
const state = reactive({
params: {}, //上一个页面传递过来的参数
promoteName: "", //产品名称
promoteId: "",//产品编号
tableData: [],

});
onLoad((options) => {
state.params = JSON.parse(decodeURIComponent(options.params))
state.promoteId = state.params.promoteId
console.log("options.promoteId", 1111, state.params)
query();
})
const query = () => {
const options = {
type: 2,
data: {
"promoteId": state.promoteId,
},
method: "POST",
showLoading: true,
};
//调用方式
request(ETCProductStatusListQueryDetailsApi, options).then((res) => {

const data = (stringToJson(res.bizContent))
state.tableData = stringToJson(res.bizContent)

console.log("res", state.tableData)
})
}
</script>

<style scoped>
.allContent {
background-color: #EEF7F7;
height: 100vh;
overflow: hidden;
}

.list-item {
width: 95%;
border-radius: 10rpx;
margin: 30rpx auto;
font-size: 28rpx;
border: 1rpx solid #ccc;
padding: 12rpx;
box-sizing: border-box;
background-color: white;

}

.list-item>view {
margin-bottom: 20rpx;
}

/* .list-item>view>text {
width: 30%;
display: inline-block;
} */
</style>

+ 178
- 0
subpackage/after-sale/ETC-product-status-list-query/ETC-product-status-list-query.vue Просмотреть файл

@@ -0,0 +1,178 @@
<template>
<view class="allContent">
<view class="search-content">
<view class="item">
<text>产品名称:</text><input placeholder="请输入产品名称" v-model="state.promoteName" />
</view>
<view class="item">
<text>产品状态:</text>
<view>
<picker @change="bindPickerChange" :value="state.index" :range="state.array">
<view v-if="state.index>=0" class="uni-input">{{state.array[state.index]}}</view>
<view v-else class="uni-input">请选择</view>
</picker>
</view>
</view>
<view class="item">
<text>产品编号:</text><input placeholder="请输入产品编号" v-model="state.promoteId" /><text class="time-btn"
@click="query(1)">查询</text>
</view>
</view>
<view class="content">
<view class="list-item" v-for="(item,index) in state.tableData" @click="goDeatls(item)">
<view><text>产品编号:</text><text>{{item.promoteId}}</text></view>
<view><text>产品名称:</text><text>{{item.promoteName}}</text></view>
<view><text>产品状态:</text><text>{{item.status}}</text></view>
<view><text>产品生效时间:</text><text>{{item.start}}</text></view>
<view><text>产品过期时间:</text><text>{{item.end}}</text></view>
<view><text>产品发行渠道名称:</text><text>{{item.agencyName[0]}}</text></view>
</view>
</view>

<view class="noRecord" v-if="state.noRecord">暂无ETC状态名单查询记录</view>
</view>

</template>

<script setup lang="ts">
import { reactive } from "vue";
import { onLoad, onReachBottom } from "@dcloudio/uni-app";
import { ETCProductStatusListQueryApi } from "@/utils/network/api.js";
import { request } from "@/utils/network/request.js";
import { stringToJson } from "@/utils/network/encryption.js";
const state = reactive({
promoteName: "", //产品名称
promoteId: "",//产品编号
index: 0,
array: ['可使用', '禁用'],
carData: [], //所有车的数据
tableData: [],
noRecord: false,
pageNo: 1,
pageSize: 10,
flags: false,
});
const bindPickerChange = (e) => {
state.index = e.detail.value
}
const query = (params) => {
// 点搜索的时候每次都从1开始
if (params == 1) {
state.pageNo = 1
}
if (state.pageNo == 1 && state.tableData.length > 0) {
state.tableData = []
}
const options = {
type: 2,
data: {
"agencyId": "52010106004",
"pageNo": state.pageNo,
"pageSize": state.pageSize,
"status": state.index == 1 ? 'DISABLE' : "ENABLE",
"promoteName": state.promoteName,
"promoteId": state.promoteId,
},
method: "POST",
showLoading: true,
};
console.log("options111111", options)
//调用方式
request(ETCProductStatusListQueryApi, options).then((res) => {
// state.pageNo = 1

const data = (stringToJson(res.bizContent)).data
state.tableData = [...stringToJson(res.bizContent).data, ...state.tableData]
if (state.tableData.length != 0) {

state.noRecord = false
} else {
state.noRecord = true
state.tableData = []
}
console.log("res", data, state.noRecord)
})
}
// 触底加载
onReachBottom(() => {
if (state.tableData.length < state.pageNo * 10) return state.flags = true
console.log("触底了")
state.pageNo++
query(2)
})
const goDeatls = (item) => {
const params = encodeURIComponent(JSON.stringify(item))
uni.navigateTo({
url: `/subpackage/after-sale/ETC-product-status-list-query/ETC-product-status-list-query-details?params=${params}`
})
}
</script>

<style scoped>
.allContent {
background-color: #EEF7F7;
height: calc(100vh - 200rpx);
}

.item {
display: flex;
font-size: 30rpx;
margin: 20rpx 0 0 20rpx;
}

input,
.uni-input {
border: 1rpx solid #ccc;
padding: 0 10rpx;
}

.time-btn {
width: 120rpx;
height: 60rpx;
background: #00B38B;
border-radius: 40rpx;
color: #FFFFFF;
font-size: 32rpx;
line-height: 60rpx;
text-align: center;
margin-left: 60rpx;
}

.noRecord {
text-align: center;
margin: 100rpx auto;
font-size: 32rpx;
/* background-color: white; */
}

.list-item {
width: 95%;
border-radius: 10rpx;
margin: 30rpx auto;
font-size: 28rpx;
border: 1rpx solid #ccc;
padding: 12rpx;
box-sizing: border-box;
background-color: white;
}

.list-item>view {
margin-bottom: 10rpx;
}

.search-content {
padding: 10rpx;
position: fixed;
top: 0;
left: 0;
background: white;
box-sizing: border-box;
}

.content {
margin-top: 30%;
padding-bottom: 20rpx;
background-color: #EEF7F7;
padding-top: 20rpx;
}
</style>

+ 6
- 4
subpackage/orders/car-release.vue Просмотреть файл

@@ -221,6 +221,7 @@
envs,
queryGuoHuJianCe,
queryGuoHuCaoZuo,
ocrAllQuery
} from "@/utils/network/api.js";
import { request } from "@/utils/network/request.js";

@@ -569,7 +570,8 @@
state.changeColor = true;
state.phoneType = 0
state.isTakePhotoModeShow = false
uploadFile(val.tempImagePath, imageType, ocrAllQuery).then((data) => {
// uploadFile(val.tempImagePath, imageType, etcCarOcrCard).then((data) => {
uploadFile(val.tempImagePath, state.choiceIndex, ocrAllQuery).then((data) => {
console.log('输出内容=====================', state.choiceIndex)
if (state.choiceIndex === "3") {
if (data.plate_a.length > 8) {
@@ -593,13 +595,13 @@
state.form.maintenaceMass = data.unladen;
state.form.maintenaceMassShow = data.unladen;
// #ifdef MP-WEIXIN
state.form.vehicleDimensions = data.overall.replaceAll("x", "X");
state.form.vehicleDimensions = data.overall.replaceAll("×", "X");
// #endif
// #ifdef MP-ALIPAY
state.form.vehicleDimensions = data.overall.replace(/x/g, "X");
state.form.vehicleDimensions = data.overall.replace(/×/g, "X");
// #endif

let arr = data.overall.split("x");
let arr = data.overall.split("×");
state.outlineL = arr[0]; //外廓 长
state.outlineW = arr[1]; //外廓 宽
state.outlineH = arr[2].substring(0, arr[2].length - 2); //外廓 高

+ 9
- 7
utils/network/api.js Просмотреть файл

@@ -1,7 +1,7 @@
/* 接口中常量 */
// export const URL = "192.168.100.63";
// export const URL = "trial.etcjz.cn";
export const URL = "qtzl.etcjz.cn";
export const URL = "trial.etcjz.cn";
// export const URL = "qtzl.etcjz.cn";
// export const URL = "qtzl.etcjz.cn/test";
// http://192.168.100.63:50001
/**
@@ -10,8 +10,8 @@ export const URL = "qtzl.etcjz.cn";
export const envs = {
//开发环境配置
development: {
// baseUrl: "https://trial.etcjz.cn",
baseUrl: "https://qtzl.etcjz.cn",
baseUrl: "https://trial.etcjz.cn",
// baseUrl: "https://qtzl.etcjz.cn",
// baseUrl: "https://qtzl.etcjz.cn/test",
// baseUrl: "http://192.168.100.158:8085",
// baseUrl: "http://192.168.100.63:50001",
@@ -20,8 +20,8 @@ export const envs = {
production: {
// baseUrl: "http://192.168.124.6:8087",
// baseUrl: "http://222.85.144.89:19002",
baseUrl: "https://qtzl.etcjz.cn",
// baseUrl: "https://trial.etcjz.cn",
// baseUrl: "https://qtzl.etcjz.cn",
baseUrl: "https://trial.etcjz.cn",
// baseUrl: "https://qtzl.etcjz.cn/test",
// baseUrl: "http://192.168.100.158:8085",
// baseUrl: "http://192.168.100.63:50001",
@@ -260,4 +260,6 @@ export const transferRecordApi = "323bc6e1f3304c83921155fc220e9e37" //过户记
export const agreementConfirmApi = "96fa039a85f54655af06d980c8ddc057" //协议确认接口
export const equityProductsApi = "56db1aa8b9854f2f8c2428f3393e5045" //查询加购权益产品
export const gotoAgainUseOrderApi = "f92bfe60dbdf492eb37e2aad96ae1fd2" //再次使用订单接口
export const finishUseOrderApi = "6eb10e968aac40f8bf4549cd05c8f5eb" //结束订单
export const finishUseOrderApi = "6eb10e968aac40f8bf4549cd05c8f5eb" //结束订单
export const ETCProductStatusListQueryApi = "448e81a599fe49b5b7f90f4af3ecae06" //ETC产品状态名单查询
export const ETCProductStatusListQueryDetailsApi = "3b8fdabde0aa4db59be440cd3d688d72" //ETC产品状态名单查询详情

+ 26
- 4
utils/utils.ts Просмотреть файл

@@ -534,9 +534,9 @@ export const uploadFile = (tempImagePath, imageType, code) => {
} else if (imageType == 2) {
type = "id_back"
} else if (imageType == 3) {
type = "id_back"
type = "dl_homepage"
} else if (imageType == 4) {
type = "id_back"
type = "dl_subpage"
}
var data = {
type: type,
@@ -567,8 +567,30 @@ export const uploadFile = (tempImagePath, imageType, code) => {
dataNew['enddate'] = JSON.parse(data.result.idBack)['有效期限']
dataNew['imageUrl'] = uploadFileImage
} else if (imageType == 3) {
// dataNew = JSON.parse(data.result.idBack)
console.log("data3", data)
dataNew = JSON.parse(data.result.dlHomepage)
dataNew['plate_a'] = JSON.parse(data.result.dlHomepage)['号牌号码']
dataNew['man'] = JSON.parse(data.result.dlHomepage)['所有人']
dataNew['vehicle'] = JSON.parse(data.result.dlHomepage)['车辆类型']
dataNew['character'] = JSON.parse(data.result.dlHomepage)['使用性质']
dataNew['vin'] = JSON.parse(data.result.dlHomepage)['车辆识别代号']
dataNew['engine'] = JSON.parse(data.result.dlHomepage)['发动机号码']
// 注册日期识别有问题 所有人偶尔能识别出来
// dataNew['register'] = JSON.parse(data.result.dlHomepage)['车辆识别代号']
// dataNew['issue'] = JSON.parse(data.result.dlHomepage)['车辆识别代号']
dataNew['imageUrl'] = uploadFileImage
dataNew['model'] = JSON.parse(data.result.dlHomepage)['品牌型号']
console.log("data3", dataNew)
} else if (imageType == 4) {
dataNew = JSON.parse(data.result.dlSubpage)
dataNew['apc'] = JSON.parse(data.result.dlSubpage)['核定载人数']
dataNew['unladen'] = JSON.parse(data.result.dlSubpage)['整备质量']
dataNew['overall'] = JSON.parse(data.result.dlSubpage)['外廓尺寸']
// 总质量识别有问题,但是能识别出来
dataNew['gross'] = JSON.parse(data.result.dlSubpage)['总质量']
dataNew['imageUrl'] = uploadFileImage
dataNew['alc'] = JSON.parse(data.result.dlSubpage)['核定载质量']
dataNew['towing'] = JSON.parse(data.result.dlSubpage)['准牵引总质量']
console.log("data4", dataNew)
}



Загрузка…
Отмена
Сохранить