You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

drivingLicense - 副本.vue 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220
  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 ocrHandle from './ocrHandle'
  36. import fromData from './fromData.js'
  37. import {
  38. requestNew,
  39. request
  40. } from '@/utils/network/request'
  41. const {
  42. formBuilderVue, //组件
  43. CustomHeader, //头部组件
  44. initData, //初始化数据
  45. isShow, //是否展示formBuilderVue组件
  46. qdOrderVal //qdOrder中数据 ref
  47. } = unifyTemplate() //初始化数据
  48. onLoad((opin) => {
  49. // 初始化数据
  50. initData(opin, 2).then(data => {
  51. formData.value = JSON.parse(data.config.tableConfig)
  52. console.log(formData.value, 'formData.value')
  53. nextTick(() => {
  54. submitQuery.channelId = data.order.channelId
  55. if (qdOrderVal.value.vanType == 1) {
  56. // 客车
  57. checkCarTpe(true)
  58. submitQuery.type = 1
  59. } else if (qdOrderVal.value.vanType == 2) {
  60. // 货车
  61. checkCarTpe(false)
  62. isTractorHandle()
  63. submitQuery.type = 2
  64. } else {
  65. // 专项作业车
  66. submitQuery.type = 3
  67. checkCarTpe(false)
  68. isTractorHandle()
  69. }
  70. isShow.value = true
  71. })
  72. delete data.config.tableConfig
  73. config.value = Object.assign(data.config, config.value)
  74. nextTick(() => {
  75. handleHide()
  76. })
  77. })
  78. })
  79. function isTractorHandle() {
  80. const index = Index('车辆用户类型', formData.value);
  81. // if (isTractor === 0) {
  82. formData.value[index].disabled = false
  83. console.log(formData.value[index], '货车111')
  84. // }
  85. }
  86. //单项选择器
  87. function radioChange(e: any, item: TypeData) {
  88. if (item.title === '是否牵引车') {
  89. if (parseInt(e.detail.value) == 1) {
  90. formData.value[Index('道路运输证', formData.value)].show = false;
  91. } else {
  92. formData.value[Index('道路运输证', formData.value)].show = true;
  93. }
  94. }
  95. }
  96. //有哪些字段隐藏哪些字段
  97. function handleHide() {
  98. if (formData.value[Index('道路运输证', formData.value)]) {
  99. formData.value[Index('道路运输证', formData.value)].show = true;
  100. }
  101. }
  102. // 货车或者客车切换
  103. function checkCarTpe(key) {
  104. // true为客车,false为货车
  105. // formData.value[Index('总质量(kg)', formData.value)].show = key
  106. // formData.value[Index('整备质量(kg)', formData.value)].show = key
  107. formData.value[Index('核定载质量(kg)', formData.value)].show = key
  108. formData.value[Index('准牵引总质量(kg)', formData.value)].show = key
  109. if (formData.value[Index('道路运输证', formData.value)]) {
  110. formData.value[Index('道路运输证', formData.value)].show = key
  111. formData.value[Index('是否牵引车', formData.value)].show = key
  112. }
  113. // formData.value[Index('车轴数', formData.value)].show = key
  114. if (formData.value[Index('车头照', formData.value)]) {
  115. formData.value[Index('车头照', formData.value)].show = key
  116. }
  117. const dataItem = formData.value[Index('车辆用户类型', formData.value)]
  118. dataItem.disabled = true
  119. dataItem[dataItem.value] = 0;
  120. }
  121. let config = ref < any > ({
  122. submitName: '下一步',
  123. titleWidth: 250,
  124. isHeader: true
  125. })
  126. let formData = ref < any > (fromData)
  127. // ocr图片处理和额外请求参数处理
  128. const {
  129. uploadImgHandle,
  130. submitQuery,
  131. ocrDataFu
  132. } = ocrHandle()
  133. function uploadImg(fileList, item) {
  134. uploadImgHandle(fileList, item, formData)
  135. }
  136. let isLock = false
  137. function submit(item: any) {
  138. if (isLock) return
  139. isLock = true
  140. let vehicleColor = qdOrderVal.value.vehiclePlateColor || 0
  141. const dataItem = formData.value[Index('车牌号', formData.value)];
  142. let vehiclePlate = dataItem[dataItem.value]
  143. // console.log(qdOrderVal.value.vehiclePlate, vehiclePlate);
  144. submitQuery.vehicleId =
  145. vehiclePlate + "_" + vehicleColor;
  146. const orderId = qdOrderVal.value.orderNo
  147. let data = {
  148. ...item,
  149. orderId,
  150. vanType: qdOrderVal.value.vanType
  151. }
  152. for (let dataItem in submitQuery) {
  153. if (submitQuery[dataItem] || submitQuery[dataItem] === 0 && !data[dataItem]) {
  154. data[dataItem] = submitQuery[dataItem]
  155. }
  156. }
  157. ocrDataFu.forEach(ele => {
  158. const itemValue = data[ele.sendKey]
  159. if (itemValue) {
  160. if (ele.isNumbers) {
  161. data[ele.sendKey] = parseInt(itemValue)
  162. } else if (ele.sendKey === 'vehicleDimensions') {
  163. data[ele.sendKey] = itemValue.replace('mm', '').trim()
  164. }
  165. }
  166. })
  167. data.axleCount = parseInt(data.axleCount)
  168. data.character = 2
  169. data.registerDate = data.register
  170. data.tractorSign = data.tractorSign ? parseInt(data.tractorSign) : 0
  171. console.log('请求参数drivingLicense', data);
  172. let {
  173. commitInterface,
  174. jumpPage
  175. } = config.value
  176. let options = {
  177. type: 2,
  178. data: data,
  179. method: 'POST',
  180. showLoading: true
  181. }
  182. requestNew('/iaw/issue/vehicle/vehicleUpload', options).then((res) => {
  183. uni.navigateTo({
  184. url: '/' + jumpPage,
  185. animationType: 'pop-in',
  186. animationDuration: 500
  187. })
  188. }).finally(() => {
  189. isLock = false
  190. })
  191. // request(commitInterface || '18', {
  192. // data,
  193. // }).then((res) => {
  194. // if (res.statusCode === 0) {
  195. // uni.navigateTo({
  196. // url: '/' + jumpPage,
  197. // animationType: 'pop-in',
  198. // animationDuration: 500
  199. // })
  200. // }
  201. // }).finally(()=>{
  202. // isLock = false
  203. // })
  204. }
  205. </script>
  206. <style lang='scss' scoped>
  207. </style>