您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

drivingLicenseAudit.vue 6.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <template>
  2. <view class='bg-content'>
  3. <image class='bg-image' mode="widthFix"
  4. src="https://qtzl.etcjz.cn/default-bucket/20240324/3eba2095f5204798a1f8101b_beijing.jpg"></image>
  5. <view class="content-re">
  6. <custom-header title="车辆信息" :back="config.hasReturn === 'true'"></custom-header>
  7. <view style="padding: 20rpx 0" v-if='isShow'>
  8. <form-builder-vue @radioChange="radioChange" :formData.value="formData" :config="config"
  9. @uploadImgOcr="uploadImg" @submit="submit">
  10. </form-builder-vue>
  11. </view>
  12. </view>
  13. </view>
  14. </template>
  15. <script setup lang='ts'>
  16. import {
  17. unifyTemplate
  18. } from '@/hooks/unifyTemplate'
  19. // import Agreement from '@/components/Agreement.vue';
  20. import {
  21. TypeData,
  22. Index
  23. } from '@/components/form-builder/tools'
  24. // import {
  25. // IdCard
  26. // } from '../../static/data/testData.js'
  27. import {
  28. reactive,
  29. ref,
  30. nextTick
  31. } from 'vue'
  32. import {
  33. onLoad
  34. } from '@dcloudio/uni-app';
  35. import {
  36. request
  37. } from '@/utils/network/request'
  38. import ocrHandle from './ocrHandle'
  39. import fromData from './fromData.js'
  40. import {
  41. useAuditOrderStore
  42. } from '@/stores/auditOrder.js';
  43. import {
  44. truck,
  45. bus
  46. } from '@/datas/auditInfo'
  47. const {
  48. formBuilderVue, //组件
  49. CustomHeader, //头部组件
  50. initData, //初始化数据
  51. isShow, //是否展示formBuilderVue组件
  52. qdOrderVal //qdOrder中数据 ref
  53. } = unifyTemplate() //初始化数据
  54. onLoad((opin) => {
  55. // 初始化数据
  56. initData(opin, 2).then(data => {
  57. formData.value = JSON.parse(data.config.tableConfig)
  58. console.log(formData.value, 'formData.value')
  59. nextTick(() => {
  60. submitQuery.channelId = data.qdOrder.promoterChannelNum + '00000001'
  61. if (qdOrderVal.value.vanType == 1) {
  62. // 客车
  63. checkCarTpe(true)
  64. submitQuery.type = 1
  65. } else if (qdOrderVal.value.vanType == 2) {
  66. // 货车
  67. checkCarTpe(false)
  68. isTractorHandle(data.qdOrder.isTractor)
  69. submitQuery.type = 2
  70. } else {
  71. // 专项作业车
  72. submitQuery.type = 3
  73. checkCarTpe(false)
  74. isTractorHandle(data.qdOrder.isTractor)
  75. }
  76. })
  77. delete data.config.tableConfig
  78. config.value = Object.assign(data.config, config.value)
  79. nextTick(() => {
  80. handleHide()
  81. handleData(data.order)
  82. isShow.value = true
  83. })
  84. })
  85. })
  86. const auditOrderStore = useAuditOrderStore();
  87. const cterOptions = [{
  88. val: 1,
  89. label: "营运"
  90. }, {
  91. val: 2,
  92. label: "非营运"
  93. }, {
  94. val: 3,
  95. label: "未知"
  96. }]
  97. function handleData(orderInfo) {
  98. const vanType = qdOrderVal.value.vanType == 1 //为true 客车
  99. let dataArr = []
  100. if (vanType) {
  101. // 客车
  102. dataArr = bus
  103. } else {
  104. // 货车
  105. dataArr = truck
  106. if (orderInfo.roadTransportPermitPicUrl) {
  107. orderInfo.tractorSign = '1' //是牵引车
  108. } else {
  109. orderInfo.tractorSign = '0' //不是牵引车
  110. }
  111. }
  112. dataArr.forEach(item => {
  113. if (item.key) {
  114. const key = item.val
  115. let valData = orderInfo[item.key]
  116. if (item.title) {
  117. if (item.title === '是否牵引车') {
  118. formData.value[Index('是否牵引车', formData.value)].itemData.find(formItem => {
  119. if (formItem.value === valData) {
  120. formItem.checked = true
  121. } else {
  122. formItem.checked = false
  123. }
  124. })
  125. if (valData === '1') {
  126. formData.value[Index('道路运输证', formData.value)].show = false;
  127. } else {
  128. formData.value[Index('道路运输证', formData.value)].show = true;
  129. }
  130. }
  131. if (item.title === '使用性质') {
  132. valData = cterOptions.find(cterItem => cterItem.val === valData)?.label || ''
  133. }
  134. formData.value[Index(item.title, formData.value)][key] = valData
  135. } else {
  136. submitQuery[key] = valData
  137. }
  138. }
  139. })
  140. console.log(formData.value, submitQuery, '数据');
  141. }
  142. function isTractorHandle(isTractor: number) {
  143. const index = Index('车辆用户类型', formData.value);
  144. // if (isTractor === 0) {
  145. formData.value[index].disabled = false
  146. console.log(formData.value[index], '货车111')
  147. // }
  148. }
  149. //单项选择器
  150. function radioChange(e: any, item: TypeData) {
  151. if (item.title === '是否牵引车') {
  152. if (parseInt(e.detail.value) == 1) {
  153. formData.value[Index('道路运输证', formData.value)].show = false;
  154. } else {
  155. formData.value[Index('道路运输证', formData.value)].show = true;
  156. }
  157. }
  158. }
  159. //有哪些字段隐藏哪些字段
  160. function handleHide() {
  161. if (formData.value[Index('道路运输证', formData.value)]) {
  162. formData.value[Index('道路运输证', formData.value)].show = true;
  163. }
  164. }
  165. // 货车或者客车切换
  166. function checkCarTpe(key) {
  167. // true为客车,false为货车
  168. // formData.value[Index('总质量(kg)', formData.value)].show = key
  169. // formData.value[Index('整备质量(kg)', formData.value)].show = key
  170. formData.value[Index('核定载质量(kg)', formData.value)].show = key
  171. formData.value[Index('准牵引总质量(kg)', formData.value)].show = key
  172. if (formData.value[Index('道路运输证', formData.value)]) {
  173. formData.value[Index('道路运输证', formData.value)].show = key
  174. formData.value[Index('是否牵引车', formData.value)].show = key
  175. }
  176. // formData.value[Index('车轴数', formData.value)].show = key
  177. if (formData.value[Index('车头照', formData.value)]) {
  178. formData.value[Index('车头照', formData.value)].show = key
  179. }
  180. const dataItem = formData.value[Index('车辆用户类型', formData.value)]
  181. dataItem.disabled = true
  182. dataItem[dataItem.value] = 0;
  183. }
  184. let config = ref < any > ({
  185. submitName: '确认',
  186. titleWidth: 250,
  187. isHeader: true
  188. })
  189. let formData = ref < any > (fromData)
  190. // ocr图片处理和额外请求参数处理
  191. const {
  192. uploadImgHandle,
  193. submitQuery,
  194. ocrDataFu
  195. } = ocrHandle(qdOrderVal)
  196. function uploadImg(fileList, item) {
  197. uploadImgHandle(fileList, item, formData)
  198. }
  199. function submit(item: any) {
  200. let vehicleColor = qdOrderVal.value.vehicleColor
  201. const dataItem = formData.value[Index('车牌号', formData.value)];
  202. let vehiclePlate = dataItem[dataItem.value]
  203. // console.log(qdOrderVal.value.vehiclePlate, vehiclePlate);
  204. submitQuery.vehicleId =
  205. vehiclePlate + "_" + vehicleColor;
  206. const orderId = qdOrderVal.value.qtOrderNo
  207. let data = {
  208. ...item,
  209. orderId
  210. }
  211. for (let dataItem in submitQuery) {
  212. if (submitQuery[dataItem] || submitQuery[dataItem] === 0 && !data[dataItem]) {
  213. data[dataItem] = submitQuery[dataItem]
  214. console.log(submitQuery, '处理的submitQuery', dataItem);
  215. }
  216. }
  217. ocrDataFu.forEach(ele => {
  218. const itemValue = data[ele.sendKey]
  219. if (itemValue) {
  220. if (ele.isNumbers) {
  221. data[ele.sendKey] = parseInt(itemValue)
  222. } else if (ele.sendKey === 'vehicleDimensions') {
  223. data[ele.sendKey] = itemValue.replace('mm', '').trim()
  224. }
  225. }
  226. })
  227. console.log('请求参数drivingLicense', data);
  228. auditOrderStore.setDrivingData(data)
  229. uni.navigateTo({
  230. url: '/pages/audit/audit',
  231. animationType: 'pop-in',
  232. animationDuration: 500
  233. })
  234. }
  235. </script>
  236. <style lang='scss' scoped>
  237. </style>