123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324 |
- <template>
- <div>
- <custom-header title="车辆信息" :back="config.hasReturn === 'true'"></custom-header>
- <div style="padding: 20rpx 0">
- <form-builder-vue :formData.value="formData" :config="config" @uploadImgOcr="uploadImg" @submit="submit">
- </form-builder-vue>
- </div>
- </div>
-
- </template>
- <script setup lang='ts'>
- import CustomHeader from '@/components/CustomHeader.vue';
- import formBuilderVue from '@/components/form-builder/form-builder-vue3'
- // import Agreement from '@/components/Agreement.vue';
- import {
- TypeData,
- Index
- } from '@/components/form-builder/tools'
- // import {
- // IdCard
- // } from '../../static/data/testData.js'
- import {
- reactive,
- ref,
- nextTick
- } from 'vue'
- import {
- onLoad
- } from '@dcloudio/uni-app';
- import {
- request
- } from '@/utils/network/request'
- import {
- useQdOrderStore
- } from '@/stores/qdOrder.js'
- import {
- etcCarOcrCard,
- ocrAllQuery,
- fileUpload,
- fileURL
- } from "@/utils/network/api.js";
- import fromData from './fromData.js'
- const qdOrderStore = useQdOrderStore()
- onLoad((opin) => {
- let qdOrderNo: any
- if (opin && opin.qdOrderNo) {
- qdOrderNo = opin.qdOrderNo
- uni.setStorageSync('qdOrderNo', opin.qdOrderNo)
- }else{
- qdOrderNo = uni.getStorageSync('qdOrderNo')
- }
- request('ac8756cc31eb4816b8eaeb71907ff9c1', {
- data: {
- qdOrderNo,
- pageStep: 2
- }
- }).then((res) => {
- let data = JSON.parse(res.bizContent)
- formData.value = JSON.parse(data.config.tableConfig)
- qdOrderStore.setQdOrder(data.qdOrder)
- nextTick(() => {
- submitQuery.channelId = data.qdOrder.promoterChannelNum + '00000001'
- if (data.qdOrder.vanType == 1) {
- // 客车
- checkCarTpe(true)
- submitQuery.type = 0
- } else {
- // 货车
- checkCarTpe(false)
- isTractorHandle(data.qdOrder.isTractor)
- submitQuery.type = 1
- }
- })
- delete data.config.tableConfig
- config.value = Object.assign(data.config, config.value)
- })
- })
-
- function isTractorHandle(isTractor) {
- const index = Index('车辆用户类型', formData.value);
- if (isTractor === 0) {
- formData.value[index].disabled = false
- }
- }
- // 货车或者客车切换
- function checkCarTpe(key) {
- // true为客车,false为货车
- formData.value[Index('总质量(kg)', formData.value)].show = key
- formData.value[Index('整备质量(kg)', formData.value)].show = key
- formData.value[Index('核定载质量(kg)', formData.value)].show = key
- formData.value[Index('准牵引总质量(kg)', formData.value)].show = key
- formData.value[Index('车轴数', formData.value)].show = key
- const dataItem = formData.value[Index('车辆用户类型', formData.value)]
- dataItem.disabled = true
- dataItem[dataItem.value] = 0;
- }
- let config = ref < any > ({
- submitName: '下一步',
- titleWidth: 250,
- isHeader: true
- })
- let submitQuery = reactive < any > ({
- orderId: "", //订单ID
- man: "", //所有人
- character: "", //使用性质
- register: "", //注册日期
- customerId: "", //用户编号
- vehicleId: "",
- vehicleIdNum: "", //车牌编号
- issueDate: "", //发证日期
- vehPosImgUrl: "", //行驶证正面
- vehNegImgUrl: "", //行驶证证反面
- type: "0", //0,客车 1.货车
- useUserType: 0, //车辆用户类型
- useUserTypeName: "普通车",
- vehicleSign: 2, //前/后装标识
- vin: "", //车辆识别代号
- engineNum: "", //发动机号码
- vehicleType: "", //车辆类型
- vehicleModel: "", //行驶证品牌型号
- approvedCount: undefined, //核定人数
- totalMass: undefined, //总质量
- maintenaceMass: undefined, //整备质量
- permittedWeight: "", //核定载质量
- vehicleDimensions: "", //车辆尺寸
- permittedTowWeight: "", //准牵引总质量
- axleCount: "", //车轴数
- ownerName: "", //车主姓名
- ownerIdType: "", //车主证件类型
- ownerIdNum: "", //车主证件号码
- ownPosImgUrl: "", //车主证件正面图片
- ownNegImgUrl: "", //车主证件反面图片
- agreementId: "", //签约编号
- channelId: "5201018892300000001", //编号渠道
- scenePayType: "", //
- transportIdNum: "", //道路运输证编号
- licenseIdNum: "", //经营许可证编号
- vehBodyUrl: "", //车身照片
- // proxyUrl: "", //委托书地址
- })
- let formData = ref < any > (fromData)
-
-
- // 将ocr识别的信息展示到页面
- function handleDataList(dataObj: any, data) {
- for (let item of dataObj) {
- const dataItem = formData.value[Index(item.title, formData.value)]
- const value = data[item.key]
- if (value !== undefined && !dataItem.show) {
- if (item.isNumber) {
- dataItem[dataItem.value] = parseInt(value)
- } else if (item.substring) {
- dataItem[dataItem.value] = value.substring(0, value.length - item.substring)
- } else {
- dataItem[dataItem.value] = value
- }
- }
- }
- }
- // 行驶证主业或副业处理
- const cardImageOcr = (fileList, item) => {
- let imageType;
- if (item.title == '行驶证主页') {
- imageType = '1'
- } else if (item.title == '行驶证副页') {
- imageType = '2'
- }
- const promoterChannelNum = qdOrderStore.qdOrderVal.promoterChannelNum || qdOrderStore.qdOrderVal.value
- .promoterChannelNum
- const data = {
- source: "1",
- agencyId: promoterChannelNum,
- imageType: imageType,
- fileName: fileList.fileName,
- imageBase64: fileList.path,
- };
- request(etcCarOcrCard, {
- data: data,
- }).then((res) => {
- let data: any = JSON.parse(res.bizContent)
- const itemData = formData.value[Index(item.title, formData.value)]
- itemData[itemData.value] = data.imageUrl
- // item[item.value] = data.imageUrl
- if (imageType == '1') {
- // 需要处理展示的页面
- // 正面
- const ocrData = [{
- title: '车牌号',
- key: 'plate_a'
- }, {
- title: '车辆类型',
- key: 'vehicle'
- }, {
- title: '使用性质',
- key: 'character'
- }, {
- title: '发动机号码',
- key: 'engine'
- }, {
- title: '品牌型号',
- key: 'model'
- }, {
- title: '车辆识别代码',
- key: 'vin'
- }, {
- title: '所有人',
- key: 'man'
- }, {
- title: '发证日期',
- key: 'issue'
- }, {
- title: '注册日期',
- key: 'register'
- }]
- // 处理数据展示
- handleDataList(ocrData, data)
-
- } else {
- const ocrData = [{
- title: '准牵引总质量(kg)',
- key: 'towing',
- isNumber: true,
- }, {
- title: '核定载人数',
- key: 'apc',
- isNumber: true,
- }, {
- title: '核定载质量(kg)',
- isNumber: true,
- key: 'alc'
- }, {
- title: '总质量(kg)',
- isNumber: true,
- key: 'gross'
- }, {
- title: '整备质量(kg)',
- isNumber: true,
- key: 'unladen'
- }, {
- title: '外廓尺寸',
- key: 'overall',
- substring: 2,
- }]
- // 处理数据展示
- handleDataList(ocrData, data)
- }
- });
- };
- // 车身照识别
- const cardFileImageUpdate = (fileList, item) => {
- var data = {
- fileBase64: fileList.path,
- };
- request(fileUpload, {
- data: data,
- }).then((res) => {
- let data: any = JSON.parse(res.bizContent)
- const dataItem = formData.value[Index(item.title, formData.value)]
- dataItem[dataItem.value] = data.data.url;
- });
- };
- //图像文件上传
- function uploadImg(fileList, item) {
- if (item.title == '行驶证主页' || item.title == '行驶证副页') {
- cardImageOcr(fileList, item)
- } else {
- cardFileImageUpdate(fileList, item)
- }
- }
-
- function submit(item: any) {
- let vehicleColor: any, vehiclePlate: any
- if (!qdOrderStore.qdOrderVal.vehicleColor || qdOrderStore.qdOrderVal.vehicleColor === 0) {
- vehicleColor = qdOrderStore.qdOrderVal.vehicleColor
- vehiclePlate = qdOrderStore.qdOrderVal.vehiclePlate
- } else {
- vehicleColor = qdOrderStore.qdOrderVal.value?.vehicleColor
- vehiclePlate = qdOrderStore.qdOrderVal.value?.vehiclePlate
- }
- // submitQuery.vehicleId =
- // item.vehiclePlate + "_" + vehicleColor;
- submitQuery.vehicleId =
- vehiclePlate + "_" + vehicleColor;
- const orderId = qdOrderStore.qdOrderVal.qtOrderNo || qdOrderStore.orderInfo.orderId
- if (!orderId) {
- uni.showModal({
- title: '提示',
- content: '订单编号为空,请返回邮寄地址页面重新提交',
- success: function(res) {
- }
- });
- return
- }
- let data = {
- ...item,
- orderId
- }
- for (let dataItem in submitQuery) {
- if (submitQuery[dataItem] || submitQuery[dataItem] === 0 && !data[dataItem]) {
- data[dataItem] = submitQuery[dataItem]
- }
- }
- let {
- commitInterface,
- jumpPage
- } = config.value
- request(commitInterface || '18', {
- data,
- }).then((res) => {
- if (res.statusCode === 0) {
- uni.navigateTo({
- url: '/' + jumpPage,
- animationType: 'pop-in',
- animationDuration: 500
- })
-
- }
- })
- }
-
- </script>
- <style lang='scss' scoped>
-
- </style>
|