"subPackages": [{ | "subPackages": [{ | ||||
"root": "subpackage/after-sale", //售后相关 | "root": "subpackage/after-sale", //售后相关 | ||||
"pages": [{ | "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", | "path": "progress-query/progress-query-tab", | ||||
"style": { | "style": { | ||||
"navigationBarTitleText": "进度查询", | "navigationBarTitleText": "进度查询", |
<image class="photo1" src="../../static/image/icon-back.png" mode="widthFix"></image> | <image class="photo1" src="../../static/image/icon-back.png" mode="widthFix"></image> | ||||
</view> | </view> | ||||
</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> | </template> | ||||
<script setup lang="ts"> | <script setup lang="ts"> | ||||
import { | import { | ||||
fileURL | fileURL | ||||
} from "@/datas/fileURL.js"; | } from "@/datas/fileURL.js"; | ||||
import { source } from "@/utils/network/difference"; | |||||
const datas = require("../../static/etcUtil/datas.js"); | const datas = require("../../static/etcUtil/datas.js"); | ||||
const bluetoothUtil = require("../../static/etcUtil/index.js"); | const bluetoothUtil = require("../../static/etcUtil/index.js"); | ||||
const cmd = require("../../static/etcUtil/cmdConfig.js"); | const cmd = require("../../static/etcUtil/cmdConfig.js"); | ||||
const state = reactive({ | const state = reactive({ | ||||
transWayTypeShow: false, | transWayTypeShow: false, | ||||
// #ifdef MP-ALIPAY | |||||
transWayTypeList: [{ | |||||
name: "蓝牙", | |||||
value: "blu", | |||||
}], | |||||
// #endif | |||||
// #ifdef MP-WEIXIN | |||||
transWayTypeList: [{ | transWayTypeList: [{ | ||||
name: "蓝牙", | name: "蓝牙", | ||||
value: "blu", | value: "blu", | ||||
}, { | }, { | ||||
name: "NFC", | name: "NFC", | ||||
value: "nfc", | value: "nfc", | ||||
} | |||||
], | |||||
}], | |||||
// #endif | |||||
tableIndex: 0, | tableIndex: 0, | ||||
transWayName: "蓝牙", | transWayName: "蓝牙", | ||||
transWay: "blu", //“blu”为蓝牙充值方式、“nfc”为NFC充值方式 | transWay: "blu", //“blu”为蓝牙充值方式、“nfc”为NFC充值方式 |
</view> | </view> | ||||
<view class="content"> | <view class="content"> | ||||
<view class="list-item" v-for="(item,index) in state.tableData" @click="goDeatls(item)"> | <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> | ||||
</view> | </view> | ||||
padding: 12rpx; | padding: 12rpx; | ||||
box-sizing: border-box; | box-sizing: border-box; | ||||
background-color: white; | background-color: white; | ||||
display: flex; | |||||
align-items: center; | |||||
} | } | ||||
.list-item>view { | .list-item>view { | ||||
margin-bottom: 10rpx; | margin-bottom: 10rpx; | ||||
width: 94%; | |||||
} | } | ||||
.search-content { | .search-content { | ||||
background: white; | background: white; | ||||
box-sizing: border-box; | box-sizing: border-box; | ||||
width: 100%; | width: 100%; | ||||
z-index: 999999; | |||||
} | } | ||||
.content { | .content { | ||||
background-color: #EEF7F7; | background-color: #EEF7F7; | ||||
padding-top: 20rpx; | padding-top: 20rpx; | ||||
} | } | ||||
.right { | |||||
width: 40rpx; | |||||
height: 40rpx; | |||||
transform: rotateY(180deg); | |||||
} | |||||
</style> | </style> |
<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> |
<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> |
<template> | <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> | </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> | </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> | </style> |
export const submitVehicleApi = "e35daf84891549afabcbf86b4ed7e2e3" //重新激活提交车辆信息 | export const submitVehicleApi = "e35daf84891549afabcbf86b4ed7e2e3" //重新激活提交车辆信息 | ||||
export const getEquityListApi = "a2656146d9c24c86b8ea7aabbe3dbf97" //获取全部加购权益列表 | export const getEquityListApi = "a2656146d9c24c86b8ea7aabbe3dbf97" //获取全部加购权益列表 | ||||
export const addEquityListApi = "783e1feed98740b691f6c49c6d76f7d5" //全部权益列表购买 | export const addEquityListApi = "783e1feed98740b691f6c49c6d76f7d5" //全部权益列表购买 | ||||
export const showEquityListApi = "2af868adcf2f44ceb7a94c659ba2cee1" //展示权益列表购买 | |||||
export const showEquityListApi = "2af868adcf2f44ceb7a94c659ba2cee1" //展示权益列表购买 | |||||
export const auditQueryApi = "38b105703c854c118202bb411c924b88" //通用审核查询接口 |