@@ -103,6 +103,20 @@ | |||
"subPackages": [{ | |||
"root": "subpackage/after-sale", //售后相关 | |||
"pages": [{ | |||
"path": "progress-query/progress-query-business-details", | |||
"style": { | |||
"navigationBarTitleText": "业务审核记录详情", | |||
"enablePullDownRefresh": false | |||
} | |||
}, | |||
{ | |||
"path": "progress-query/progress-query-business", | |||
"style": { | |||
"navigationBarTitleText": "业务审核记录", | |||
"enablePullDownRefresh": false | |||
} | |||
}, | |||
{ | |||
"path": "progress-query/progress-query-tab", | |||
"style": { | |||
"navigationBarTitleText": "进度查询", |
@@ -28,19 +28,8 @@ | |||
<image class="photo1" src="../../static/image/icon-back.png" mode="widthFix"></image> | |||
</view> | |||
</view> | |||
<view class="tips">温馨提示: <text class="red">NFC充值</text>仅支持在<text class="red">安卓手机</text>进行ETC储值卡充值!</view> | |||
<!-- <view> | |||
<view class="tabs"> | |||
<view class="tab-tit as-gravity-center-start">充值方式 | |||
<u-input @click="state.transWayTypeShow = true" inputAlign="center" v-model="state.transWayName" | |||
type="select" /> | |||
</view> | |||
</view> | |||
<view class="btn btn-primary" @click="rechargeAction">立即充值</view> | |||
</view> | |||
<u-select v-model="state.transWayTypeShow" :list="state.transWayTypeList" @confirm="selectConfirm"></u-select> --> | |||
<view class="tips" v-if="source=='WECHAT'">温馨提示: <text class="red">NFC充值</text>仅支持在<text | |||
class="red">安卓手机</text>进行ETC储值卡充值!</view> | |||
</template> | |||
<script setup lang="ts"> | |||
@@ -66,6 +55,7 @@ | |||
import { | |||
fileURL | |||
} from "@/datas/fileURL.js"; | |||
import { source } from "@/utils/network/difference"; | |||
const datas = require("../../static/etcUtil/datas.js"); | |||
const bluetoothUtil = require("../../static/etcUtil/index.js"); | |||
const cmd = require("../../static/etcUtil/cmdConfig.js"); | |||
@@ -74,14 +64,21 @@ | |||
const state = reactive({ | |||
transWayTypeShow: false, | |||
// #ifdef MP-ALIPAY | |||
transWayTypeList: [{ | |||
name: "蓝牙", | |||
value: "blu", | |||
}], | |||
// #endif | |||
// #ifdef MP-WEIXIN | |||
transWayTypeList: [{ | |||
name: "蓝牙", | |||
value: "blu", | |||
}, { | |||
name: "NFC", | |||
value: "nfc", | |||
} | |||
], | |||
}], | |||
// #endif | |||
tableIndex: 0, | |||
transWayName: "蓝牙", | |||
transWay: "blu", //“blu”为蓝牙充值方式、“nfc”为NFC充值方式 |
@@ -20,12 +20,15 @@ | |||
</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><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> | |||
<image class="right" src="../../../static/image/icon-back.png" mode=""></image> | |||
</view> | |||
</view> | |||
@@ -155,10 +158,13 @@ | |||
padding: 12rpx; | |||
box-sizing: border-box; | |||
background-color: white; | |||
display: flex; | |||
align-items: center; | |||
} | |||
.list-item>view { | |||
margin-bottom: 10rpx; | |||
width: 94%; | |||
} | |||
.search-content { | |||
@@ -169,6 +175,7 @@ | |||
background: white; | |||
box-sizing: border-box; | |||
width: 100%; | |||
z-index: 999999; | |||
} | |||
.content { | |||
@@ -177,4 +184,10 @@ | |||
background-color: #EEF7F7; | |||
padding-top: 20rpx; | |||
} | |||
.right { | |||
width: 40rpx; | |||
height: 40rpx; | |||
transform: rotateY(180deg); | |||
} | |||
</style> |
@@ -0,0 +1,93 @@ | |||
<template> | |||
<view class="allContent"> | |||
<view class="list-item"> | |||
<view><text>车牌号:</text><text>{{state.params['vehiclePlate']}}</text></view> | |||
<view><text>车牌颜色:</text><text>{{state.params['vehiclePlateColorC']}}</text></view> | |||
<view v-if="state.params['cardId']"><text>卡号:</text><text>{{state.params['cardId']}}</text></view> | |||
<view v-if="state.params['obuId']"><text>OBU号:</text><text>{{state.params['obuId']}}</text></view> | |||
<view><text>订单ID:</text><text>{{state.params['orderId']}}</text></view> | |||
<view><text>工单ID:</text><text>{{state.params['workOrderId']}}</text></view> | |||
<view><text>业务类型:</text><text>{{state.params['businessTypeC']}}</text></view> | |||
<view><text>用户名称:</text><text>{{state.params['customerName']}}</text></view> | |||
<view><text>是否逾期:</text><text>{{state.params['over']?'逾期':"未逾期"}}</text> | |||
</view> | |||
<view><text>状态:</text><text>{{state.params['statusC']}}</text></view> | |||
<view><text>申请时间:</text><text>{{state.params['insertTime']}}</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", state.params) | |||
// query(); | |||
}) | |||
const query = () => { | |||
const options = { | |||
type: 2, | |||
data: { | |||
"promoteId": state.promoteId, | |||
}, | |||
method: "POST", | |||
showLoading: true, | |||
}; | |||
//调用方式 | |||
request(ETCProductStatusListQueryDetailsApi, options).then((res) => { | |||
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; | |||
display: flex; | |||
align-items: center; | |||
} | |||
.list-item>view>text:first-child { | |||
width: 26%; | |||
display: inline-block; | |||
} | |||
.list-item>view>text:last-child { | |||
width: 74%; | |||
display: inline-block; | |||
word-break: break-all; | |||
} | |||
</style> |
@@ -0,0 +1,309 @@ | |||
<template> | |||
<view class="content"> | |||
<view class="top-content"> | |||
<view class="item"> | |||
<text>车牌号:</text><input placeholder="请输入车牌号" v-model="state.vehiclePlate" /> | |||
</view> | |||
<view class="item"> | |||
<text>车牌颜色:</text> | |||
<view> | |||
<uni-data-select v-model="state.vehiclePlateColor" :localdata="state.vehiclePlateColorArr" | |||
@change="changeColor" :clear="false"></uni-data-select> | |||
</view> | |||
<text style="margin-left: 20rpx;">审核状态:</text> | |||
<view> | |||
<uni-data-select v-model="state.status" :localdata="state.statusArr" @change="changeStatus" | |||
:clear="false"></uni-data-select> | |||
</view> | |||
</view> | |||
<view class="item"> | |||
<text>业务类型:</text> | |||
<uni-data-select v-model="state.businessTypeVal" :localdata="state.businessRange" | |||
@change="changeBusiness" :clear="false"></uni-data-select> | |||
</view> | |||
<view class="example-body"> | |||
<uni-datetime-picker v-model="state.range" type="daterange" /> | |||
<button size="mini" style="color: #ffffff; | |||
backgroundColor: rgb(118, 200, 77); | |||
borderColor: rgb(118, 200, 77); | |||
font-size: 26rpx; | |||
flex-shrink: 0;margin-left: 20rpx;" @click="search(1)">搜索</button> | |||
</view> | |||
</view> | |||
<view class="uni-container"> | |||
<view class="list-item" v-for="(item,index) in state.listData" @click="go(item)"> | |||
<view> | |||
<view><text>车牌号:</text><text>{{item.vehiclePlate}}</text></view> | |||
<view><text>车牌颜色:</text><text>{{item.vehiclePlateColorC}}</text></view> | |||
<view><text>状态:</text><text>{{item.statusC}}</text></view> | |||
<view><text>业务类型:</text><text>{{item.businessTypeC}}</text></view> | |||
<view><text>时间:</text><text>{{item.insertTime}}</text></view> | |||
</view> | |||
<image class="right" src="../../../static/image/icon-back.png" mode=""></image> | |||
</view> | |||
</view> | |||
<view class="bottom-line" v-if="state.flags">我是有底线的~~~</view> | |||
</view> | |||
</template> | |||
<script setup lang="ts"> | |||
import { reactive } from "vue"; | |||
import { | |||
businessType | |||
} from "@/datas/businessType.js" | |||
import { onLoad, onReachBottom } from "@dcloudio/uni-app"; | |||
import { auditQueryApi } from "@/utils/network/api.js"; | |||
import { stringToJson } from "@/utils/network/encryption"; | |||
import { request } from "@/utils/network/request.js"; | |||
import { getItem, StorageKeys } from "@/utils/storage"; | |||
import { vehiclePlateColor, getVehiclePlateColorPai } from "@/datas/vehiclePlateColor"; | |||
const state = reactive({ | |||
startTime: Date.now(), //日期 | |||
businessTypeVal: "", | |||
businessRange: [], | |||
listData: [], | |||
range: ['', ''], | |||
pageSize: 10, //每页数据量 | |||
pageNo: 1, // 当前页 | |||
total: 0, // 数据总量 | |||
flags: false, | |||
vehiclePlate: "",//车牌号 | |||
vehiclePlateColor: "", | |||
status: "", | |||
statusArr: [], //AUDIT_STATUS | |||
vehiclePlateColorArr: [] | |||
}) | |||
onLoad((option) => { | |||
// 车牌颜色 | |||
let getVehiclePlateColorArr = getItem('key')['VEHICLE_COLOR_TYPE'] | |||
for (var k = 0; k < getVehiclePlateColorArr.length; k++) { | |||
let obj2 = {}; | |||
obj2['value'] = getVehiclePlateColorArr[k]['code'] | |||
obj2['text'] = getVehiclePlateColorArr[k]['name'] | |||
state.vehiclePlateColorArr.push(obj2) | |||
} | |||
// 审核状态 | |||
let getStatusArr = getItem('key')['AUDIT_STATUS']; | |||
for (var k = 0; k < getStatusArr.length; k++) { | |||
let obj1 = {}; | |||
obj1['value'] = getStatusArr[k]['code'] | |||
obj1['text'] = getStatusArr[k]['name'] | |||
state.statusArr.push(obj1) | |||
} | |||
// 业务类型 | |||
let getBusiness = getItem('key')['BUSINESS_TYPE']; | |||
for (var k = 0; k < getBusiness.length; k++) { | |||
let obj = {}; | |||
obj['value'] = getBusiness[k]['code'] | |||
obj['text'] = getBusiness[k]['name'] | |||
state.businessRange.push(obj) | |||
} | |||
search(1) | |||
}) | |||
const changeColor = (e) => { | |||
console.log("changeColor", e) | |||
state.vehiclePlateColor = e | |||
} | |||
const changeStatus = (e) => { | |||
console.log("changeColor", e) | |||
state.status = e | |||
} | |||
const changeBusiness = (e) => { | |||
state.businessTypeVal = e | |||
console.log(e) | |||
} | |||
//业务完成日志 | |||
const search = (val) => { | |||
if (val == 1) { | |||
state.pageNo = 1 | |||
} | |||
if (state.pageNo == 1 && state.listData.length > 0) { | |||
state.listData = [] | |||
} | |||
var data = { | |||
vehiclePlate: state.vehiclePlate, | |||
vehiclePlateColor: state.vehiclePlateColor, | |||
status: state.status, | |||
businessType: state.businessTypeVal, | |||
startTime: state.range[0] ? state.range[0] + 'T00:00:00' : state.range[0], | |||
endTime: state.range[1] ? state.range[1] + 'T00:00:00' : state.range[1], | |||
pageNo: state.pageNo, | |||
pageSize: state.pageSize, | |||
// opId: getItem(StorageKeys.OpenId), | |||
}; | |||
for (var index in data) { | |||
console.log(index, data[index], data[index] == "") | |||
if (data[index].toString() == "") { | |||
delete data[index] | |||
} | |||
} | |||
const options = { | |||
type: 2, | |||
data: data, | |||
method: "POST", | |||
showLoading: true, | |||
}; | |||
request(auditQueryApi, options).then((res) => { | |||
const data = stringToJson(res.bizContent); | |||
var getData = [...stringToJson(res.bizContent).data, ...state.listData] | |||
for (var i = 0; i < getData.length; i++) { | |||
getData[i]['vehiclePlateColorC'] = getVehiclePlateColorPai(getData[i]['vehiclePlateColor']) | |||
if (getData[i]['status'] == 'AUDIT') { | |||
getData[i]['statusC'] = "审核中" | |||
} else if (getData[i]['status'] == 'FAIL') { | |||
getData[i]['statusC'] = "未通过" | |||
} else if (getData[i]['status'] == 'COMPLETE') { | |||
getData[i]['statusC'] = "已完成" | |||
} | |||
for (var m = 0; m < state.businessRange.length; m++) { | |||
if (getData[i]['businessType'] == state.businessRange[m]['value']) { | |||
getData[i]['businessTypeC'] = state.businessRange[m]['text'] | |||
break; | |||
} | |||
} | |||
} | |||
state.listData = getData | |||
state.total = data.data.length | |||
console.log("业务完成日志", state.listData, state.pageNo,) | |||
}); | |||
} | |||
const change = (e) => { | |||
console.log("e", e) | |||
state.pageNo = e.current | |||
search(2) | |||
} | |||
// 触底加载 | |||
onReachBottom(() => { | |||
if (state.listData.length < state.pageNo * 10) return state.flags = true | |||
console.log("触底了") | |||
state.pageNo++ | |||
search(2) | |||
}) | |||
const go = (item) => { | |||
const params = encodeURIComponent(JSON.stringify(item)) | |||
uni.navigateTo({ | |||
url: `/subpackage/after-sale/progress-query/progress-query-business-details?params=${params}` | |||
}) | |||
} | |||
</script> | |||
<style scoped> | |||
.top-content { | |||
position: fixed; | |||
left: 0; | |||
top: 0; | |||
background-color: white; | |||
width: 100%; | |||
padding: 0 20rpx 20rpx 20rpx; | |||
box-sizing: border-box; | |||
z-index: 999999; | |||
} | |||
.content { | |||
font-size: 32rpx; | |||
padding: 20rpx 30rpx; | |||
background-color: #EEF7F7; | |||
min-height: 100vh; | |||
} | |||
.card { | |||
display: flex; | |||
margin: 0 20rpx; | |||
align-items: center; | |||
} | |||
.title { | |||
margin-bottom: 20rpx; | |||
} | |||
.uni-container { | |||
margin: 50rpx 0; | |||
margin-top: 330rpx; | |||
} | |||
/deep/.uni-table-th, | |||
/deep/.uni-table-td { | |||
padding: 0 !important; | |||
font-size: 12px !important; | |||
} | |||
/deep/.uni-date__x-input, | |||
/deep/.uni-select { | |||
font-size: 13px; | |||
height: 24px; | |||
line-height: 24px; | |||
} | |||
/* /deep/.uni-stat__select { | |||
width: 180rpx; | |||
} */ | |||
/deep/.uni-select__selector-empty, | |||
/deep/.uni-select__selector-item { | |||
font-size: 13px !important; | |||
} | |||
/deep/.uni-date { | |||
width: 73% !important; | |||
} | |||
.example-body { | |||
display: flex; | |||
align-items: center; | |||
margin-top: 20rpx; | |||
} | |||
/deep/.uni-date-x { | |||
height: 56rpx !important; | |||
} | |||
.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; | |||
display: flex; | |||
align-items: center; | |||
} | |||
.list-item>view { | |||
margin-bottom: 10rpx; | |||
width: 90%; | |||
} | |||
.bottom-line { | |||
text-align: center; | |||
margin: 30rpx 0; | |||
} | |||
.item { | |||
display: flex; | |||
font-size: 30rpx; | |||
margin: 20rpx 0 0 20rpx; | |||
align-items: center; | |||
} | |||
input, | |||
.uni-input { | |||
border: 1rpx solid #ccc; | |||
padding: 0 10rpx; | |||
height: 28rpx; | |||
line-height: 28rpx; | |||
} | |||
.right { | |||
width: 40rpx; | |||
height: 40rpx; | |||
transform: rotateY(180deg); | |||
} | |||
</style> |
@@ -1,9 +1,58 @@ | |||
<template> | |||
<view>11111</view> | |||
<view class="list" v-for="(item,index) in state.list" :key="item.type" @click="go(item.type)"> | |||
<view style="display: flex;align-items: center;"> | |||
<image class="photo" :src="fileURL + item.image "></image> | |||
<text>{{item.title}}</text> | |||
</view> | |||
<image class="photo1" src="../../static/image/icon-back.png" mode="widthFix"></image> | |||
</view> | |||
</template> | |||
<script> | |||
<script setup lang="ts"> | |||
import { reactive } from "vue" | |||
import { fileURL } from "@/datas/fileURL.js"; | |||
const state = reactive({ | |||
list: [ | |||
{ | |||
"title": "业务审核", | |||
"type": 1, | |||
"image": "image/index/goRecharge.png", | |||
}, | |||
{ | |||
"title": "对公账户", | |||
"type": 2, | |||
"image": "image/index/goRecharge.png" | |||
} | |||
], | |||
}); | |||
const go = (type) => { | |||
if (type == 1) { | |||
uni.navigateTo({ | |||
url: "/subpackage/after-sale/progress-query/progress-query-business" | |||
}) | |||
} | |||
} | |||
</script> | |||
<style> | |||
<style scoped> | |||
.list { | |||
border-bottom: 1rpx solid #e5e5e5; | |||
display: flex; | |||
padding: 16rpx 20rpx; | |||
align-items: center; | |||
justify-content: space-between; | |||
height: 60rpx; | |||
font-size: 32rpx; | |||
} | |||
.photo { | |||
width: 40rpx; | |||
height: 40rpx; | |||
margin-right: 20rpx; | |||
} | |||
.photo1 { | |||
width: 40rpx; | |||
transform: rotateY(180deg); | |||
} | |||
</style> |
@@ -270,4 +270,5 @@ export const activationRecordApi = "1be22d30f08a4f10958a4b76dcfae6cf" //查询 | |||
export const submitVehicleApi = "e35daf84891549afabcbf86b4ed7e2e3" //重新激活提交车辆信息 | |||
export const getEquityListApi = "a2656146d9c24c86b8ea7aabbe3dbf97" //获取全部加购权益列表 | |||
export const addEquityListApi = "783e1feed98740b691f6c49c6d76f7d5" //全部权益列表购买 | |||
export const showEquityListApi = "2af868adcf2f44ceb7a94c659ba2cee1" //展示权益列表购买 | |||
export const showEquityListApi = "2af868adcf2f44ceb7a94c659ba2cee1" //展示权益列表购买 | |||
export const auditQueryApi = "38b105703c854c118202bb411c924b88" //通用审核查询接口 |