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 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419
  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" @handleBlurs='handleBlurs' @handleChange="handleChange">
  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. const isUpOwner = ref(false);
  49. onLoad((opin) => {
  50. // 初始化数据
  51. initData(opin, 2).then(data => {
  52. formData.value = JSON.parse(data.config.tableConfig)
  53. console.log(formData.value, 'formData.value')
  54. nextTick(() => {
  55. console.log(submitQuery, 'submitQuery1');
  56. console.log(qdOrderVal, 'qdOrderValqdOrderVal');
  57. submitQuery.channelId = data.order.channelId
  58. formData.value[Index("收费车型", formData.value)].disabled = true
  59. if (qdOrderVal.value.vanType == 1) {
  60. // 客车
  61. checkCarTpe(true)
  62. const dataItem = formData.value[Index('车轴数', formData.value)]
  63. dataItem[dataItem.value] = 2;
  64. submitQuery.type = 1
  65. } else if (qdOrderVal.value.vanType == 2) {
  66. // 货车
  67. checkCarTpe(false)
  68. isTractorHandle()
  69. submitQuery.type = 2
  70. } else {
  71. // 专项作业车
  72. submitQuery.type = 3
  73. checkCarTpe(false)
  74. isTractorHandle()
  75. }
  76. isShow.value = true
  77. })
  78. delete data.config.tableConfig
  79. config.value = Object.assign(data.config, config.value)
  80. nextTick(() => {
  81. handleHide()
  82. })
  83. })
  84. })
  85. async function handleBlurs(e, item) {
  86. console.log(e, item)
  87. if (item.value === "axleCount") {
  88. await handleVehicCharge(formData);
  89. handleVehicUsePropert(formData);
  90. }
  91. }
  92. async function handleChange(e, item) {
  93. console.log(e.detail.value, item)
  94. if (item.value === "userName") {
  95. submitQuery.idName = e.detail.value
  96. }
  97. if (item.value === "ownerName") {
  98. submitQuery.man = e.detail.value
  99. }
  100. if (item.value === "mobile") {
  101. submitQuery.mobile = e.detail.value
  102. }
  103. }
  104. function isTractorHandle() {
  105. const index = Index('车辆用户类型', formData.value);
  106. // if (isTractor === 0) {
  107. formData.value[index].disabled = false
  108. console.log(formData.value[index], '货车111')
  109. // }
  110. }
  111. //单项选择器
  112. function radioChange(e: any, item: TypeData) {
  113. if (item.title === '是否牵引车') {
  114. if (parseInt(e.detail.value) == 1) {
  115. formData.value[Index('道路运输证', formData.value)].show = false;
  116. } else {
  117. formData.value[Index('道路运输证', formData.value)].show = true;
  118. }
  119. }
  120. }
  121. //有哪些字段隐藏哪些字段
  122. function handleHide() {
  123. if (formData.value[Index('道路运输证', formData.value)]) {
  124. formData.value[Index('道路运输证', formData.value)].show = true;
  125. }
  126. }
  127. // 货车或者客车切换
  128. function checkCarTpe(key) {
  129. // true为客车,false为货车
  130. // formData.value[Index('总质量(kg)', formData.value)].show = key
  131. // formData.value[Index('整备质量(kg)', formData.value)].show = key
  132. formData.value[Index('核定载质量(kg)', formData.value)].show = key
  133. formData.value[Index('准牵引总质量(kg)', formData.value)].show = key
  134. if (formData.value[Index('道路运输证', formData.value)]) {
  135. formData.value[Index('道路运输证', formData.value)].show = key
  136. formData.value[Index('是否牵引车', formData.value)].show = key
  137. }
  138. // formData.value[Index('车轴数', formData.value)].show = key
  139. if (formData.value[Index('车头照', formData.value)]) {
  140. formData.value[Index('车头照', formData.value)].show = key
  141. }
  142. const dataItem = formData.value[Index('车辆用户类型', formData.value)]
  143. dataItem.disabled = true
  144. dataItem[dataItem.value] = 0;
  145. }
  146. let config = ref < any > ({
  147. submitName: '下一步',
  148. titleWidth: 250,
  149. isHeader: true
  150. })
  151. let formData = ref < any > (fromData)
  152. // ocr图片处理和额外请求参数处理
  153. const {
  154. uploadImgHandle,
  155. submitQuery,
  156. ocrDataFu,
  157. handleVehicCharge,
  158. handleVehicUsePropert,
  159. uploadImgHandleId,
  160. } = ocrHandle()
  161. function uploadImg(fileList, item) {
  162. uploadImgHandle(fileList, item, formData)
  163. uploadImgHandleId(fileList, item, formData)
  164. console.log(item, 'item');
  165. }
  166. let isLock = false
  167. async function submit(item: any) {
  168. // 拼接参数
  169. console.log(item,'itemitemitem');
  170. console.log(isUpOwner.value,'isUpOwner.value');
  171. console.log(submitQuery.idName, 'qdOrderValqdOrderVal');
  172. console.log(qdOrderVal, 'qdOrderValqdOrderVal');
  173. console.log(ocrDataFu,'ocrDataFuocrDataFuocrDataFu');
  174. //获取
  175. // const openIdKey = await register(data)
  176. // if (!openIdKey) {
  177. // return
  178. // }
  179. if(submitQuery.idName !== undefined){
  180. isUpOwner.value = true
  181. console.log(222222222222);
  182. } else {
  183. console.log(1111111111111111);
  184. }
  185. return requestNew('/iaw/h5/order/web/sfzPassValid', {
  186. data: {
  187. isUpOwner: isUpOwner.value,
  188. orderNo: qdOrderVal.value.orderNo,
  189. ownerName: submitQuery.man,
  190. idName: submitQuery.idName,
  191. ownerIdNum: submitQuery.idno,
  192. }
  193. }).then((res) => {
  194. console.log(res, '/iaw/h5/order/web/sfzPassValid');
  195. //判断是否需要输入身份信息
  196. console.log(submitQuery.idName,'submitQuery.idName');
  197. if (res.code === 0 && res.data.isPass === true) {
  198. if (isLock) return
  199. isLock = true
  200. let vehicleColor = qdOrderVal.value.vehiclePlateColor || 0
  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 orderNo = qdOrderVal.value.orderNo
  207. let data = {
  208. ...item,
  209. orderNo,
  210. isUpOwner:isUpOwner.value,
  211. agentId: qdOrderVal.value.agencyId, //渠道编号
  212. channelId: qdOrderVal.value.channelId, //网点编号
  213. channelType: qdOrderVal.value.promotionModes, //网点类型
  214. source: qdOrderVal.value.orderSource, //订单来源
  215. vanType: qdOrderVal.value.vanType,
  216. vehiclePlateColor: vehicleColor,
  217. }
  218. for (let dataItem in submitQuery) {
  219. if (submitQuery[dataItem] || submitQuery[dataItem] === 0 && !data[dataItem]) {
  220. data[dataItem] = submitQuery[dataItem]
  221. }
  222. }
  223. ocrDataFu.forEach(ele => {
  224. const itemValue = data[ele.sendKey]
  225. if (itemValue) {
  226. if (ele.isNumbers) {
  227. data[ele.sendKey] = parseInt(itemValue)
  228. } else if (ele.sendKey === 'vehicleDimensions') {
  229. data[ele.sendKey] = itemValue.replace('mm', '').trim()
  230. }
  231. }
  232. })
  233. data.ownerTel = submitQuery.mobile
  234. data.ownerIdType = submitQuery.userIdType
  235. data.ownerIdNum = submitQuery.idno
  236. data.axleCount = parseInt(data.axleCount)
  237. data.character = 2
  238. data.tractorSign = data.tractorSign ? parseInt(data.tractorSign) : 0
  239. console.log('请求参数drivingLicense', data);
  240. let {
  241. commitInterface,
  242. jumpPage
  243. } = config.value
  244. if (qdOrderVal.value.promotionModes === 2) {
  245. data.openId = qdOrderVal.value.staffId //操作人id
  246. } else if (qdOrderVal.value.promotionModes === 1) {
  247. data.openId = qdOrderVal.value.userId //操作人id
  248. }
  249. let options = {
  250. type: 2,
  251. data: data,
  252. method: 'POST',
  253. showLoading: true
  254. }
  255. console.log(options, 'options')
  256. request('ISSUES_ORDER_VEHICLEUPLOAD', options).then((res) => {
  257. console.log(res, 'res')
  258. if (res.statusCode === 0) {
  259. uni.navigateTo({
  260. url: '/' + jumpPage + `?qdOrderNo=${qdOrderVal.value.orderNo}`,
  261. animationType: 'pop-in',
  262. animationDuration: 500
  263. })
  264. }
  265. }).finally(() => {
  266. isLock = false
  267. })
  268. // request(commitInterface || '18', {
  269. // data,
  270. // }).then((res) => {
  271. // if (res.statusCode === 0) {
  272. // uni.navigateTo({
  273. // url: '/' + jumpPage,
  274. // animationType: 'pop-in',
  275. // animationDuration: 500
  276. // })
  277. // }
  278. // }).finally(() => {
  279. // isLock = false
  280. // })
  281. } else {
  282. submitQuery.idName = undefined
  283. // isUpOwner.value = true
  284. uni.showModal({
  285. title: '提示',
  286. content: res.data.errorMsg,
  287. success: function(res) {
  288. if (res.confirm) {
  289. formData.value.push({
  290. "underline": false,
  291. "titleShow": false,
  292. "disabled": false,
  293. "vertical": "1",
  294. "id": "id_1687057765030",
  295. "title": "车主信息",
  296. "type": "100",
  297. "required": false
  298. },{
  299. "placeholderImg": "image/applyCard/renxiang.png",
  300. "underline": false,
  301. "titleShow": false,
  302. "hint": "上传身份证的人像面",
  303. "disabled": false,
  304. "vertical": "1",
  305. "id": "id_1686971502045",
  306. "title": "人像面",
  307. "type": "14",
  308. "value": "userPosImgUrl",
  309. "required": true,
  310. "show": false
  311. }, {
  312. "placeholderImg": "image/applyCard/guohui.png",
  313. "underline": false,
  314. "titleShow": false,
  315. "hint": "上传身份证的国徽面",
  316. "disabled": false,
  317. "vertical": "1",
  318. "id": "id_1686971729660",
  319. "title": "国徽面",
  320. "type": "14",
  321. "value": "userNegImgUrl",
  322. "required": true,
  323. "show": false
  324. }, {
  325. "placeholderImg": "image/applyCard/weituoshu.png",
  326. "underline": false,
  327. "titleShow": false,
  328. "hint": "上传文字清晰的委托书",
  329. "disabled": false,
  330. "vertical": "1",
  331. "id": "id_1686971922491",
  332. "title": "委托书",
  333. "type": "14",
  334. "value": "proxyUrl",
  335. "required": true,
  336. "show": false
  337. },{
  338. "underline": true,
  339. "maxlength": "20",
  340. "titleShow": true,
  341. "hint": "请输入姓名",
  342. "disabled": false,
  343. "vertical": "1",
  344. "id": "id_1686974639025",
  345. "title": "姓名",
  346. "type": "2",
  347. "value": "userName",
  348. "required": true,
  349. "show": false
  350. }, {
  351. "underline": true,
  352. "maxlength": "11",
  353. "titleShow": true,
  354. "vertical": "1",
  355. "title": "联系方式",
  356. "type": "2",
  357. "required": true,
  358. "checkReg": "^1[3456789]\\d{9}$",
  359. "hint": "请输入联系方式",
  360. "checkPrompt": "请输入正确的联系方式",
  361. "disabled": false,
  362. "inputType": "tel",
  363. "id": "id_1686974684640",
  364. "value": "mobile",
  365. "mobile": "",
  366. "show": false
  367. }, {
  368. "underline": true,
  369. "maxlength": "18",
  370. "titleShow": true,
  371. "vertical": "1",
  372. "title": "证件号码",
  373. "type": "2",
  374. "required": true,
  375. "checkReg": "(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X)$)",
  376. "hint": "请输入证件号码",
  377. "checkPrompt": "请输入正确的身份证号",
  378. "disabled": false,
  379. "id": "id_1686974751416",
  380. "value": "userIdNum",
  381. "show": false
  382. }, {
  383. "underline": true,
  384. "titleShow": true,
  385. "hint": "请输入住址",
  386. "disabled": false,
  387. "vertical": "1",
  388. "id": "id_1686974837416",
  389. "title": "住址",
  390. "type": "5",
  391. "value": "userAddress",
  392. "required": true
  393. }, )
  394. } else if (res.cancel) {}
  395. }
  396. });
  397. }
  398. });
  399. }
  400. </script>
  401. <style lang='scss' scoped>
  402. </style>