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

drivingLicense.vue 24KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760
  1. <template>
  2. <view class="bg-content">
  3. <image
  4. class="bg-image"
  5. mode="widthFix"
  6. src="https://qtzl.etcjz.cn/default-bucket/20240324/3eba2095f5204798a1f8101b_beijing.jpg"
  7. ></image>
  8. <view class="content-re">
  9. <custom-header
  10. title="车辆信息"
  11. :back="config.hasReturn === 'true'"
  12. ></custom-header>
  13. <view style="padding: 20rpx 0">
  14. <form-builder-vue
  15. @radioChange="radioChange"
  16. :formData="formData"
  17. :config="config"
  18. @uploadImgOcr="uploadImg"
  19. @submit="submit"
  20. @handleBlurs="handleBlurs"
  21. @handleChange="handleChange"
  22. @handleUseUserType="handleUseUserType"
  23. >
  24. </form-builder-vue>
  25. </view>
  26. </view>
  27. </view>
  28. </template>
  29. <script setup lang='ts'>
  30. import CustomHeader from "@/components/CustomHeader.vue";
  31. import FormBuilderVue from "@/components/form-builder/form-builder-vue3.vue";
  32. import { TypeData, Index } from "@/components/form-builder/tools";
  33. import { reactive, ref, nextTick } from "vue";
  34. import { onLoad } from "@dcloudio/uni-app";
  35. import { useQdOrderStore } from "@/stores/qdOrder.js";
  36. import ocrHandle from "./ocrHandle";
  37. import fromData from "./fromData.js";
  38. import { requestNew, request } from "@/utils/network/request";
  39. // 初始化响应式数据
  40. const orderNo = ref("");
  41. const vanType = ref(0);
  42. const qdOrderStore = useQdOrderStore();
  43. const config = ref<any>({
  44. submitName: "下一步",
  45. titleWidth: 250,
  46. isHeader: true,
  47. hasReturn: "true",
  48. });
  49. const formData = ref<any>(fromData);
  50. const isUpOwner = ref(false);
  51. const qdOrderVal = ref<any>({});
  52. const ocrDatas = ref<any>(null); // 添加OCR数据的ref
  53. const ownerType = ref(0); // 0: 个人, 1: 企业
  54. const handleUseUserType = (e, item) => {
  55. if(e != 0) {
  56. formData.value[Index('道路运输许可证', formData.value)].show = false;
  57. formData.value[Index('经营许可证编号', formData.value)].show = false;
  58. } else {
  59. formData.value[Index('道路运输许可证', formData.value)].show = true;
  60. formData.value[Index('经营许可证编号', formData.value)].show = true;
  61. }
  62. }
  63. // 定义个人车主信息表单项
  64. const personalOwnerFields = [
  65. {
  66. underline: false,
  67. titleShow: false,
  68. disabled: false,
  69. vertical: "1",
  70. id: "id_1687057765030",
  71. title: "车主信息",
  72. type: "100",
  73. required: false,
  74. },
  75. {
  76. underline: false,
  77. titleShow: false,
  78. disabled: false,
  79. vertical: "1",
  80. id: "id_owner_type_toggle",
  81. title: "车主类型",
  82. type: "7",
  83. value: "ownerType",
  84. required: false,
  85. itemData: [
  86. { value: 0, name: "个人", checked: true },
  87. { value: 1, name: "企业", checked: false }
  88. ],
  89. ownerType: 0,
  90. },
  91. {
  92. placeholderImg: "image/applyCard/renxiang.png",
  93. underline: false,
  94. titleShow: false,
  95. hint: "上传身份证的人像面",
  96. disabled: false,
  97. vertical: "1",
  98. id: "id_1686971502045",
  99. title: "人像面",
  100. type: "14",
  101. value: "userPosImgUrl",
  102. required: true,
  103. show: false,
  104. },
  105. {
  106. placeholderImg: "image/applyCard/guohui.png",
  107. underline: false,
  108. titleShow: false,
  109. hint: "上传身份证的国徽面",
  110. disabled: false,
  111. vertical: "1",
  112. id: "id_1686971729660",
  113. title: "国徽面",
  114. type: "14",
  115. value: "userNegImgUrl",
  116. required: true,
  117. show: false,
  118. },
  119. {
  120. placeholderImg: "image/applyCard/weituoshu.png",
  121. underline: false,
  122. titleShow: false,
  123. hint: "上传文字清晰的委托书",
  124. disabled: false,
  125. vertical: "1",
  126. id: "id_1686971922491",
  127. title: "委托书",
  128. type: "14",
  129. value: "proxyUrl",
  130. required: true,
  131. show: false,
  132. },
  133. {
  134. underline: true,
  135. maxlength: "20",
  136. titleShow: true,
  137. hint: "请输入姓名",
  138. disabled: false,
  139. vertical: "1",
  140. id: "id_1686974639025",
  141. title: "姓名",
  142. type: "2",
  143. value: "userName",
  144. required: true,
  145. show: false,
  146. },
  147. {
  148. underline: true,
  149. maxlength: "11",
  150. titleShow: true,
  151. vertical: "1",
  152. title: "联系方式",
  153. type: "2",
  154. required: true,
  155. checkReg: "^1[3456789]\\d{9}$",
  156. hint: "请输入联系方式",
  157. checkPrompt: "请输入正确的联系方式",
  158. disabled: false,
  159. inputType: "tel",
  160. id: "id_1686974684640",
  161. value: "mobile",
  162. mobile: "",
  163. show: false,
  164. },
  165. {
  166. underline: true,
  167. maxlength: "18",
  168. titleShow: true,
  169. vertical: "1",
  170. title: "证件号码",
  171. type: "2",
  172. required: true,
  173. checkReg: "(^\\d{15}$)|(^\\d{18}$)|(^\\d{17}(\\d|X)$)",
  174. hint: "请输入证件号码",
  175. checkPrompt: "请输入正确的身份证号",
  176. disabled: false,
  177. id: "id_1686974751416",
  178. value: "userIdNum",
  179. show: false,
  180. },
  181. {
  182. underline: true,
  183. titleShow: true,
  184. hint: "请输入住址",
  185. disabled: false,
  186. vertical: "1",
  187. id: "id_1686974837416",
  188. title: "住址",
  189. type: "5",
  190. value: "address",
  191. required: true,
  192. }
  193. ];
  194. // 定义企业车主信息表单项
  195. const enterpriseOwnerFields = [
  196. {
  197. underline: false,
  198. titleShow: false,
  199. disabled: false,
  200. vertical: "1",
  201. id: "id_1687057765030",
  202. title: "车主信息",
  203. type: "100",
  204. required: false,
  205. },
  206. {
  207. underline: false,
  208. titleShow: false,
  209. disabled: false,
  210. vertical: "1",
  211. id: "id_owner_type_toggle",
  212. title: "车主类型",
  213. type: "7",
  214. value: "ownerType",
  215. required: false,
  216. itemData: [
  217. { value: 0, name: "个人", checked: false },
  218. { value: 1, name: "企业", checked: true }
  219. ],
  220. ownerType: 1,
  221. },
  222. {
  223. placeholderImg: "image/applyCard/zhizhao.png",
  224. underline: false,
  225. titleShow: false,
  226. hint: "上传企业营业执照",
  227. disabled: false,
  228. vertical: "1",
  229. id: "id_1686971502046",
  230. title: "营业执照",
  231. type: "14",
  232. value: "businessLicenseUrl",
  233. required: true,
  234. show: false,
  235. },
  236. {
  237. placeholderImg: "image/applyCard/weituoshu.png",
  238. underline: false,
  239. titleShow: false,
  240. hint: "上传文字清晰的委托书",
  241. disabled: false,
  242. vertical: "1",
  243. id: "id_1686971922492",
  244. title: "委托书",
  245. type: "14",
  246. value: "proxyUrl",
  247. required: true,
  248. show: false,
  249. },
  250. {
  251. underline: true,
  252. maxlength: "100",
  253. titleShow: true,
  254. hint: "请输入公司名称",
  255. disabled: false,
  256. vertical: "1",
  257. id: "id_1686974639026",
  258. title: "公司名称",
  259. type: "2",
  260. value: "unitName",
  261. required: true,
  262. show: false,
  263. },
  264. {
  265. underline: true,
  266. maxlength: "11",
  267. titleShow: true,
  268. vertical: "1",
  269. title: "联系方式",
  270. type: "2",
  271. required: true,
  272. checkReg: "^1[3456789]\\d{9}$",
  273. hint: "请输入联系方式",
  274. checkPrompt: "请输入正确的联系方式",
  275. disabled: false,
  276. inputType: "tel",
  277. id: "id_1686974684641",
  278. value: "mobile",
  279. mobile: "",
  280. show: false,
  281. },
  282. {
  283. underline: true,
  284. maxlength: "18",
  285. titleShow: true,
  286. vertical: "1",
  287. title: "社会信用代码",
  288. type: "2",
  289. required: true,
  290. hint: "请输入社会信用代码",
  291. disabled: false,
  292. id: "id_1686974751417",
  293. value: "screditCode",
  294. show: false,
  295. },
  296. {
  297. underline: true,
  298. titleShow: true,
  299. hint: "请输入住址",
  300. disabled: false,
  301. vertical: "1",
  302. id: "id_1686974837417",
  303. title: "住址",
  304. type: "5",
  305. value: "adress",
  306. required: true,
  307. }
  308. ];
  309. onLoad((opin) => {
  310. // 调用trackEvent接口获取订单信息
  311. orderNo.value = opin.orderNo;
  312. const params = {
  313. orderNo: orderNo.value,
  314. };
  315. trackEvent(params);
  316. });
  317. function trackEvent(params) {
  318. requestNew("/iaw/h5/order/web/queryOrder", {
  319. data: params,
  320. }).then((res) => {
  321. if (res.code === 0) {
  322. qdOrderVal.value = res.data;
  323. vanType.value = res.data.vanType;
  324. qdOrderStore.qdOrderVal = res.data; // 将整个订单数据存入store
  325. // 设置车牌号
  326. const vehiclePlateIndex = Index("车牌号", formData.value);
  327. if (vehiclePlateIndex !== -1 && res.data.vehiclePlate) {
  328. formData.value[vehiclePlateIndex][formData.value[vehiclePlateIndex].value] = res.data.vehiclePlate;
  329. }
  330. // 设置车轴数默认值为2
  331. const axleCountIndex = Index("车轴数", formData.value);
  332. if (axleCountIndex !== -1) {
  333. formData.value[axleCountIndex][formData.value[axleCountIndex].value] = "2";
  334. }
  335. // handleHide()
  336. }
  337. });
  338. }
  339. async function handleBlurs(e, item) {
  340. if (item.value === "axleCount") {
  341. // await handleVehicCharge(formData);
  342. // handleVehicUsePropert(formData);
  343. }
  344. }
  345. async function handleChange(e, item) {
  346. if (item.value === "userName") {
  347. submitQuery.idName = e.detail.value;
  348. }
  349. if (item.value === "ownerName") {
  350. submitQuery.man = e.detail.value;
  351. }
  352. if (item.value === "mobile") {
  353. submitQuery.mobile = e.detail.value;
  354. }
  355. // 处理企业相关字段
  356. if (item.value === "unitName") {
  357. submitQuery.companyName = e.detail.value;
  358. }
  359. if (item.value === "screditCode") {
  360. submitQuery.socialCreditCode = e.detail.value;
  361. }
  362. if (item.value === "adress") {
  363. submitQuery.companyAddress = e.detail.value;
  364. }
  365. }
  366. // 点击收费车型时获取选项
  367. async function handleClick(e, item) {
  368. if (item.value === "feeVehicleType" || item.title === "收费车型") {
  369. const ocrData = ocrDatas.value || {};
  370. const axleCountItem = formData.value[Index("车轴数", formData.value)];
  371. const approvedCount = formData.value[Index("核定载人数", formData.value)];
  372. const totalMass = formData.value[Index("总质量(kg)", formData.value)];
  373. const vehicleDimensions = formData.value[Index("外廓尺寸", formData.value)];
  374. // 检查是否输入了车轴数
  375. if (!axleCountItem || !axleCountItem[axleCountItem.value]) {
  376. uni.showToast({
  377. title: "请输入车轴数",
  378. icon: "none",
  379. duration: 2000,
  380. });
  381. return;
  382. }
  383. // 获取收费车型选项
  384. const feeVehicleParams = {
  385. approvedCount: approvedCount[approvedCount.value],
  386. axleCount: Number(axleCountItem[axleCountItem.value]),
  387. totalMass: totalMass[totalMass.value],
  388. vanType: qdOrderStore.qdOrderVal.vanType,
  389. vehicleDimensions: vehicleDimensions[vehicleDimensions.value],
  390. };
  391. // 调用获取收费车型选项接口
  392. const res = await requestNew("/iaw/h5/order/web/vehicCharge", {
  393. data: feeVehicleParams,
  394. });
  395. if (res.code === 0) {
  396. // 更新收费车型选项
  397. const feeVehicleTypeItem =
  398. formData.value[Index("收费车型", formData.value)];
  399. const vehicChargeVal = [res.data];
  400. if (feeVehicleTypeItem) {
  401. feeVehicleTypeItem.options = vehicChargeVal.map((item) => ({
  402. label: item.feeVehicleTypeStr,
  403. value: item.feeVehicleType,
  404. }));
  405. // 默认选中第一个选项
  406. if (vehicChargeVal.length > 0) {
  407. feeVehicleTypeItem[feeVehicleTypeItem.value] =
  408. vehicChargeVal[0].feeVehicleTypeStr;
  409. }
  410. }
  411. }
  412. }
  413. }
  414. function isTractorHandle() {
  415. const index = Index("车辆用户类型", formData.value);
  416. formData.value[index].disabled = false;
  417. }
  418. //单项选择器
  419. function radioChange(e: any, item: TypeData) {
  420. if (item.title === "是否牵引车") {
  421. if (parseInt(e.detail.value) == 1) {
  422. formData.value[Index("道路运输证", formData.value)].show = false;
  423. } else {
  424. formData.value[Index("道路运输证", formData.value)].show = true;
  425. }
  426. }
  427. // 处理车主类型切换
  428. if (item.title === "车主类型") {
  429. const selectedType = parseInt(e.detail.value);
  430. ownerType.value = selectedType;
  431. switchOwnerType(selectedType);
  432. }
  433. }
  434. // 切换车主类型表单
  435. function switchOwnerType(type: number) {
  436. // 找到车主信息开始的位置
  437. const ownerInfoIndex = formData.value.findIndex(item => item.title === "车主信息");
  438. if (ownerInfoIndex !== -1) {
  439. // 移除现有的车主信息相关表单项
  440. let removeCount = 0;
  441. for (let i = ownerInfoIndex; i < formData.value.length; i++) {
  442. removeCount++;
  443. // 如果遇到下一个主要部分,停止计数
  444. if (i > ownerInfoIndex && formData.value[i].type === "100") {
  445. removeCount--;
  446. break;
  447. }
  448. }
  449. // 移除旧的车主信息表单项
  450. formData.value.splice(ownerInfoIndex, removeCount);
  451. // 根据类型添加对应的表单项
  452. const fieldsToAdd = type === 0 ? personalOwnerFields : enterpriseOwnerFields;
  453. formData.value.splice(ownerInfoIndex, 0, ...fieldsToAdd);
  454. console.log(type, "type")
  455. }
  456. }
  457. //有哪些字段隐藏哪些字段
  458. function handleHide() {
  459. if (formData.value[Index("道路运输证", formData.value)]) {
  460. formData.value[Index("道路运输证", formData.value)].show = true;
  461. }
  462. }
  463. // 货车或者客车切换
  464. function checkCarTpe(key) {
  465. // true为客车,false为货车
  466. // formData.value[Index('总质量(kg)', formData.value)].show = key
  467. // formData.value[Index('整备质量(kg)', formData.value)].show = key
  468. formData.value[Index("核定载质量(kg)", formData.value)].show = key;
  469. formData.value[Index("准牵引总质量(kg)", formData.value)].show = key;
  470. if (formData.value[Index("道路运输证", formData.value)]) {
  471. formData.value[Index("道路运输证", formData.value)].show = key;
  472. formData.value[Index("是否牵引车", formData.value)].show = key;
  473. }
  474. // formData.value[Index('车轴数', formData.value)].show = key
  475. if (formData.value[Index("车头照", formData.value)]) {
  476. formData.value[Index("车头照", formData.value)].show = key;
  477. }
  478. const dataItem = formData.value[Index("车辆用户类型", formData.value)];
  479. dataItem.disabled = true;
  480. dataItem[dataItem.value] = 0;
  481. }
  482. // ocr图片处理和额外请求参数处理
  483. const {
  484. uploadImgHandle,
  485. submitQuery,
  486. ocrDataFu,
  487. handleVehicCharge,
  488. handleVehicUsePropert,
  489. uploadImgHandleId,
  490. } = ocrHandle();
  491. function uploadImg(fileList, item) {
  492. uploadImgHandle(fileList, item, formData);
  493. uploadImgHandleId(fileList, item, formData);
  494. }
  495. let isLock = false;
  496. async function submit(item: any) {
  497. if (submitQuery.idName !== undefined) {
  498. isUpOwner.value = true;
  499. }
  500. // 构建请求参数
  501. const requestData: any = {
  502. orderNo: orderNo.value,
  503. loginSource: "431bfdc8b9c645e0b293b85d6ce1948n",
  504. };
  505. // 从表单数据中提取值并添加到请求数据中
  506. const vehiclePlateItem = formData.value[Index("车牌号", formData.value)];
  507. const axleCountItem = formData.value[Index("车轴数", formData.value)];
  508. const approvedCountItem = formData.value[Index("核定载人数", formData.value)];
  509. const totalMassItem = formData.value[Index("总质量(kg)", formData.value)];
  510. const maintenaceMassItem =
  511. formData.value[Index("整备质量(kg)", formData.value)];
  512. const permittedWeightItem =
  513. formData.value[Index("核定载质量(kg)", formData.value)];
  514. const permittedTowWeightItem =
  515. formData.value[Index("准牵引总质量(kg)", formData.value)];
  516. const vehicleDimensionsItem =
  517. formData.value[Index("外廓尺寸", formData.value)];
  518. const vehicleTypeItem = formData.value[Index("车辆类型", formData.value)];
  519. const vehicleModelItem = formData.value[Index("品牌型号", formData.value)];
  520. const engineNumItem = formData.value[Index("发动机号码", formData.value)];
  521. const vinItem = formData.value[Index("车辆识别代码", formData.value)];
  522. const ownerNameItem = formData.value[Index("所有人", formData.value)];
  523. const issueDateItem = formData.value[Index("发证日期", formData.value)];
  524. const registerDateItem = formData.value[Index("注册日期", formData.value)];
  525. const vehPosImgUrlItem = formData.value[Index("行驶证主页", formData.value)];
  526. const vehNegImgUrlItem = formData.value[Index("行驶证副页", formData.value)];
  527. const feeVehicleTypeItem = formData.value[Index("收费车型", formData.value)];
  528. const useCharacter = formData.value[Index("使用性质", formData.value)];
  529. const tractorSignItem = formData.value[Index("是否牵引车", formData.value)];
  530. const useUserType = formData.value[Index("车辆用户类型", formData.value)];
  531. // 获取企业信息表单项
  532. const companyNameItem = formData.value[Index("公司名称", formData.value)];
  533. const socialCreditCodeItem = formData.value[Index("社会信用代码", formData.value)];
  534. const businessLicenseItem = formData.value[Index("营业执照", formData.value)];
  535. const companyAddressItem = formData.value[Index("住址", formData.value)];
  536. const roadTransportPermitPicItem = formData.value[Index('道路运输许可证', formData.value)];
  537. const licenseIdNumItem = formData.value[Index('经营许可证编号', formData.value)];
  538. if (roadTransportPermitPicItem && roadTransportPermitPicItem[roadTransportPermitPicItem.value]) {
  539. requestData.roadTransportPermitPicUrl = roadTransportPermitPicItem[roadTransportPermitPicItem.value];
  540. }
  541. if (licenseIdNumItem && licenseIdNumItem[licenseIdNumItem.value]) {
  542. requestData.licenseIdNum = licenseIdNumItem[licenseIdNumItem.value];;// = vehiclePlateItem[vehiclePlateItem.value];
  543. }
  544. // 添加表单数据到请求参数
  545. if (vehiclePlateItem && vehiclePlateItem[vehiclePlateItem.value]) {
  546. requestData.vehiclePlate = vehiclePlateItem[vehiclePlateItem.value];
  547. }
  548. if (axleCountItem && axleCountItem[axleCountItem.value]) {
  549. requestData.axleCount = parseInt(axleCountItem[axleCountItem.value]);
  550. }
  551. if (approvedCountItem && approvedCountItem[approvedCountItem.value]) {
  552. requestData.approvedCount = parseInt(
  553. approvedCountItem[approvedCountItem.value]
  554. );
  555. }
  556. if (totalMassItem && totalMassItem[totalMassItem.value]) {
  557. requestData.totalMass = parseInt(totalMassItem[totalMassItem.value]);
  558. }
  559. if (maintenaceMassItem && maintenaceMassItem[maintenaceMassItem.value]) {
  560. requestData.maintenaceMass = parseInt(
  561. maintenaceMassItem[maintenaceMassItem.value]
  562. );
  563. }
  564. if (permittedWeightItem && permittedWeightItem[permittedWeightItem.value]) {
  565. requestData.permittedWeight = parseInt(
  566. permittedWeightItem[permittedWeightItem.value]
  567. );
  568. }
  569. if (
  570. permittedTowWeightItem &&
  571. permittedTowWeightItem[permittedTowWeightItem.value]
  572. ) {
  573. requestData.permittedTowWeight = parseInt(
  574. permittedTowWeightItem[permittedTowWeightItem.value]
  575. );
  576. }
  577. if (
  578. vehicleDimensionsItem &&
  579. vehicleDimensionsItem[vehicleDimensionsItem.value]
  580. ) {
  581. requestData.vehicleDimensions = vehicleDimensionsItem[
  582. vehicleDimensionsItem.value
  583. ]
  584. .replace("mm", "")
  585. .trim();
  586. }
  587. if (vehicleTypeItem && vehicleTypeItem[vehicleTypeItem.value]) {
  588. requestData.vehicleType = vehicleTypeItem[vehicleTypeItem.value];
  589. }
  590. if (vehicleModelItem && vehicleModelItem[vehicleModelItem.value]) {
  591. requestData.vehicleModel = vehicleModelItem[vehicleModelItem.value];
  592. }
  593. if (engineNumItem && engineNumItem[engineNumItem.value]) {
  594. requestData.engineNum = engineNumItem[engineNumItem.value];
  595. }
  596. if (vinItem && vinItem[vinItem.value]) {
  597. requestData.vin = vinItem[vinItem.value];
  598. }
  599. if (ownerNameItem && ownerNameItem[ownerNameItem.value]) {
  600. requestData.ownerName = ownerNameItem[ownerNameItem.value];
  601. }
  602. if (issueDateItem && issueDateItem[issueDateItem.value]) {
  603. requestData.issueDate = issueDateItem[issueDateItem.value];
  604. }
  605. if (registerDateItem && registerDateItem[registerDateItem.value]) {
  606. requestData.registerDate = registerDateItem[registerDateItem.value];
  607. }
  608. if (vehPosImgUrlItem && vehPosImgUrlItem[vehPosImgUrlItem.value]) {
  609. requestData.vehPosImgUrl = vehPosImgUrlItem[vehPosImgUrlItem.value];
  610. }
  611. if (vehNegImgUrlItem && vehNegImgUrlItem[vehNegImgUrlItem.value]) {
  612. requestData.vehNegImgUrl = vehNegImgUrlItem[vehNegImgUrlItem.value];
  613. }
  614. if (feeVehicleTypeItem && feeVehicleTypeItem.feeVehicleType) {
  615. requestData.feeVehicleType = feeVehicleTypeItem.feeVehicleType;
  616. }
  617. if (tractorSignItem && tractorSignItem[tractorSignItem.value] !== undefined) {
  618. requestData.tractorSign =
  619. parseInt(tractorSignItem[tractorSignItem.value]) || 0;
  620. }
  621. if (useUserType && useUserType[useUserType.value] !== undefined) {
  622. requestData.useUserType = parseInt(useUserType[useUserType.value]) || 0;
  623. }
  624. if (useCharacter && useCharacter[useCharacter.value] !== undefined) {
  625. requestData.character = parseInt(useCharacter[useCharacter.value]) || 0;
  626. }
  627. // 添加订单相关数据
  628. requestData.vanType = qdOrderVal.value.vanType;
  629. requestData.vehiclePlateColor = qdOrderVal.value.vehiclePlateColor || 0;
  630. // requestData.character = 2; // 固定值
  631. requestData.vehicleSign = 2; // 固定值:后装
  632. requestData.tractorSign = 0;
  633. // 添加 submitQuery 中的数据
  634. // 处理图片URL,提取路径部分
  635. const extractImagePath = (url) => {
  636. if (!url) return '';
  637. if (url.includes('default-bucket')) {
  638. return url.split('default-bucket/')[1];
  639. } else if (url.includes('zhywpt-issuer')) {
  640. return url.split('qtzl.etcjz.cn/')[1];
  641. }
  642. return url;
  643. };
  644. console.log(submitQuery, "submitQuery");
  645. console.log("当前车主类型:", ownerType.value);
  646. console.log("企业表单数据:", {
  647. companyName: companyNameItem ? companyNameItem[companyNameItem.value] : null,
  648. socialCreditCode: socialCreditCodeItem ? socialCreditCodeItem[socialCreditCodeItem.value] : null,
  649. companyAddress: companyAddressItem ? companyAddressItem[companyAddressItem.value] : null,
  650. businessLicense: businessLicenseItem ? businessLicenseItem[businessLicenseItem.value] : null
  651. });
  652. if (submitQuery.mobile) requestData.ownerTel = submitQuery.mobile;
  653. if (submitQuery.userIdType) requestData.ownerIdType = submitQuery.userIdType;
  654. if (submitQuery.proxyUrl) requestData.proxyUrl = submitQuery.proxyUrl;
  655. if (submitQuery.vehBodyUrl) requestData.vehBodyUrl = submitQuery.vehBodyUrl;
  656. console.log("图片上传状态:", {
  657. proxyUrl: submitQuery.proxyUrl,
  658. vehBodyUrl: submitQuery.vehBodyUrl,
  659. businessLicenseUrl: submitQuery.businessLicenseUrl
  660. });
  661. if (submitQuery.ownerIdAddress) requestData.ownerIdAddress = submitQuery.ownerIdAddress;
  662. // 处理企业信息
  663. if (ownerType.value == 1) {
  664. // 企业模式:传递企业相关信息
  665. if (companyNameItem && companyNameItem[companyNameItem.value]) {
  666. requestData.idName = companyNameItem[companyNameItem.value];
  667. }
  668. if (socialCreditCodeItem && socialCreditCodeItem[socialCreditCodeItem.value]) {
  669. requestData.ownerIdNum = socialCreditCodeItem[socialCreditCodeItem.value];
  670. // requestData.licenseldNum = socialCreditCodeItem[socialCreditCodeItem.value]; // 也作为licenseldNum传递
  671. }
  672. if (companyAddressItem && companyAddressItem[companyAddressItem.value]) {
  673. requestData.ownerIdAddress = companyAddressItem[companyAddressItem.value];
  674. }
  675. if (businessLicenseItem && businessLicenseItem[businessLicenseItem.value]) {
  676. requestData.ownerPosImgUrl = businessLicenseItem[businessLicenseItem.value];
  677. }
  678. // 从submitQuery中获取营业执照图片(OCR处理过的)
  679. if (submitQuery.businessLicenseUrl) {
  680. requestData.ownerPosImgUrl = submitQuery.businessLicenseUrl;
  681. }
  682. requestData.ownerType = 1; // 标识为企业
  683. requestData.userIdType = "203"; // 企业信用代码类型
  684. } else {
  685. // 个人模式:传递个人身份证信息
  686. if (submitQuery.idno) requestData.ownerIdNum = submitQuery.idno;
  687. if (submitQuery.idName) requestData.idName = submitQuery.idName;
  688. if (submitQuery.ownerNegImgUrl) requestData.ownerNegImgUrl = extractImagePath(submitQuery.ownerNegImgUrl);
  689. if (submitQuery.ownerPosImgUrl) requestData.ownerPosImgUrl = extractImagePath(submitQuery.ownerPosImgUrl);
  690. requestData.ownerType = 0; // 标识为个人
  691. }
  692. return requestNew("/iaw/h5/order/web/upVehicle", {
  693. data: requestData,
  694. }).then((res) => {
  695. //判断是否需要输入身份信息
  696. if (res.code === 0 && res.data.flag === 2) {
  697. uni.navigateTo({
  698. url: `/pages/payment/payment?orderNo=${orderNo.value}`,
  699. animationType: 'pop-in',
  700. animationDuration: 500
  701. })
  702. } else {
  703. // uni.showToast({
  704. // title: res.message,
  705. // icon: 'none',
  706. // duration: 2000
  707. // });
  708. // submitQuery.idName = undefined
  709. uni.showModal({
  710. title: "提示",
  711. content: res.message,
  712. success: function (res) {
  713. if (res.confirm) {
  714. // 根据当前车主类型添加对应的表单项
  715. const fieldsToAdd = ownerType.value === 0 ? personalOwnerFields : enterpriseOwnerFields;
  716. formData.value.push(...fieldsToAdd);
  717. } else if (res.cancel) {
  718. }
  719. },
  720. });
  721. }
  722. });
  723. }
  724. </script>
  725. <style lang='scss' scoped>
  726. </style>