Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

userInfoUploading.vue 9.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. <template>
  2. <view>
  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 title="用户信息"></custom-header>
  10. <view v-if="isShow">
  11. <formBuilderVue
  12. :formData="formData"
  13. :config="config"
  14. @radioChange="radioChange"
  15. @submit="submit"
  16. @uploadImgOcr="uploadImg"
  17. ></formBuilderVue>
  18. </view>
  19. </view>
  20. <agreementfrom />
  21. </view>
  22. </template>
  23. <script setup lang='ts'>
  24. import CustomHeader from "@/components/CustomHeader";
  25. import formBuilderVue from "@/components/form-builder/form-builder-vue3";
  26. import { TypeData, Index } from "@/components/form-builder/tools";
  27. import agreementfrom from "./components/agreement";
  28. import { ref, nextTick } from "vue";
  29. import { onLoad } from "@dcloudio/uni-app";
  30. import { requestNew, request } from "@/utils/network/request";
  31. import fromData from "./fromData";
  32. import ocrHandle from "./ocrHandle";
  33. import {
  34. setToken,
  35. setItem,
  36. getToken,
  37. getItem,
  38. StorageKeys,
  39. } from "@/utils/storage";
  40. // import { useQdOrderStore } from "@/stores/qdOrder.js";
  41. import { storeToRefs } from "pinia";
  42. // import {
  43. // userInfoFormData
  44. // } from '@/utils/formDataHandle'
  45. let config = ref<any>({
  46. hasReturn: "false",
  47. submitName: "下一步",
  48. titleWidth: 180,
  49. isHeader: true,
  50. });
  51. let formData = ref<any>(fromData);
  52. let formDataList = ref([]);
  53. const isShow = ref(true);
  54. const orderNo = ref("");
  55. // const qdOrderStore = useQdOrderStore();
  56. // const { qdOrderVal, cusQdOrderVal } = storeToRefs(qdOrderStore);
  57. //获取页面配置
  58. onLoad((opin) => {
  59. // 只调用trackEvent接口
  60. orderNo.value = opin.orderNo;
  61. const params = {
  62. orderNo: orderNo.value,
  63. };
  64. trackEvent(params);
  65. });
  66. function trackEvent(params) {
  67. requestNew("/iaw/h5/order/web/queryOrder", {
  68. data: params,
  69. }).then((res) => {
  70. // 根据orderStepCode判断跳转逻辑
  71. if (res.data.orderStepCode === 1) {
  72. // orderStepCode为1时继续执行后续操作
  73. if (res.data.userType === "PERSONAL_USER") {
  74. // 个人办理
  75. danChange(false);
  76. } else {
  77. // 单位办理
  78. danChange(true);
  79. }
  80. handleMobile(res.data); //处理联系方式
  81. handleAgentTel(res.data); //处理经办人电话
  82. nextTick(() => {});
  83. } else if (res.data.orderStepCode === 2) {
  84. // orderStepCode为2时跳转到drivingLicense页面
  85. uni.navigateTo({
  86. url: `/pages/drivingLicense/drivingLicense?orderNo=${orderNo.value}`,
  87. animationType: "pop-in",
  88. animationDuration: 500,
  89. });
  90. return;
  91. } else {
  92. // 其他情况跳转到payment页面
  93. uni.navigateTo({
  94. url: `/pages/payment/payment?orderNo=${orderNo.value}`,
  95. animationType: "pop-in",
  96. animationDuration: 500,
  97. });
  98. return;
  99. }
  100. });
  101. }
  102. function handleMobile(data) {
  103. const itemData = formData.value[Index("联系方式", formData.value)];
  104. if (data.customerTel) {
  105. itemData[itemData.value] = data.customerTel || "";
  106. itemData.disabled = true;
  107. }
  108. }
  109. function handleAgentTel(data) {
  110. const itemData = formData.value[Index("经办人电话", formData.value)];
  111. if (data.customerTel) {
  112. itemData[itemData.value] = data.customerTel || "";
  113. itemData.disabled = true;
  114. }
  115. }
  116. //初始判断单位办理还是个人办理
  117. function danChange(key) {
  118. if (key) {
  119. submitCode = "20";
  120. // 单位办理
  121. businesses(false);
  122. handleDan(false);
  123. formData.value[Index("部门名称", formData.value)].department = "本部";
  124. } else {
  125. submitCode = "22";
  126. // 个人办理
  127. businesses(true);
  128. handleDan(true);
  129. }
  130. }
  131. //单项选择器
  132. function radioChange(e: any, item: TypeData, opin) {
  133. if (item.title === "本人办理") {
  134. if (e.detail.value === "1") {
  135. businesses(true);
  136. } else {
  137. businesses(false);
  138. }
  139. }
  140. }
  141. //本人办理还是他人办理 ,true为本人办理
  142. function businesses(key: Boolean) {
  143. formData.value[Index("委托书", formData.value)].show = key;
  144. formData.value[Index("本人办理", formData.value)].underline = key;
  145. formData.value[Index("经办人姓名", formData.value)].show = key;
  146. formData.value[Index("经办人证件号码", formData.value)].show = key;
  147. formData.value[Index("经办人电话", formData.value)].show = key;
  148. // formData.value[Index("经办人证件识别信息如下", formData.value)].show = key;
  149. formData.value[Index("经办人证件人像面", formData.value)].show = key;
  150. formData.value[Index("经办人证件国徽面", formData.value)].show = key;
  151. }
  152. // 个人办理还是单位办理 true为个人办理
  153. function handleDan(key) {
  154. formData.value[Index("营业执照", formData.value)].show = key;
  155. formData.value[Index("委托书", formData.value)].show = key;
  156. formData.value[Index("公司名称", formData.value)].show = key;
  157. formData.value[Index("部门名称", formData.value)].show = key;
  158. formData.value[Index("社会信用代码", formData.value)].show = key;
  159. // formData.value[Index('住址', formData.value)].show = !key
  160. formData.value[Index("本人办理", formData.value)].show = !key;
  161. formData.value[Index("人像面", formData.value)].show = !key;
  162. formData.value[Index("国徽面", formData.value)].show = !key;
  163. formData.value[Index("证件号码", formData.value)].show = !key;
  164. // formData.value[Index('住址', formData.value)].show = !key
  165. formData.value[Index("姓名", formData.value)].show = !key;
  166. formData.value[Index("联系方式", formData.value)].show = !key;
  167. }
  168. // 提交个人信息接口
  169. let submitCode = "22";
  170. // ocr图片处理和额外请求参数处理
  171. const { uploadImgHandle, submitQuery } = ocrHandle();
  172. function uploadImg(fileList, item) {
  173. uploadImgHandle(fileList, item, formData);
  174. }
  175. async function submit(item: any) {
  176. try {
  177. if (isLock.value) return;
  178. isLock.value = true;
  179. let data = {
  180. ...submitQuery.value,
  181. };
  182. // 处理参数,为空的不携带
  183. for (const key in item) {
  184. if (item[key] || item[key] === 0 || item[key] === false) {
  185. data[key] = item[key];
  186. }
  187. }
  188. console.log(data, "isAgent之前");
  189. const openIdKey = await register(data);
  190. //之前加密请求方式,暂时弃用(注释),后面删除
  191. // if (!openIdKey) {
  192. // return;
  193. // }
  194. // let { jumpPage } = config.value;
  195. // data.userAddress = data.userAddress || data.address;
  196. // let options = {
  197. // type: 2,
  198. // data: data,
  199. // method: "POST",
  200. // showLoading: true,
  201. // };
  202. // console.log(options, "请求参数");
  203. // await request("ISSUES_ORDER_USERUPLOAD", options).then((res) => {
  204. // console.log(res, "res");
  205. // if (res.statusCode === 0) {
  206. // uni.navigateTo({
  207. // url: "/" + jumpPage + `?qdOrderNo=${qdOrderVal.value.orderNo}`,
  208. // animationType: "pop-in",
  209. // animationDuration: 500,
  210. // });
  211. // }
  212. // });
  213. } catch (e) {
  214. //TODO handle the exception
  215. } finally {
  216. isLock.value = false;
  217. }
  218. }
  219. let isLock = ref(false);
  220. // 用户信息提交上传
  221. function register(data: any) {
  222. console.log(data, "datasjsjsjsjsj");
  223. let params: any = {};
  224. params.agentAddress = data.agentAddress;
  225. params.agentIdNum = data.agentIdNum;
  226. params.agentIdType = data.agentIdType;
  227. params.agentIdVld = data.agentIdVld;
  228. params.agentName = data.agentName;
  229. params.agentNegImgUrl = data.agentNegImgUrl;
  230. params.agentPosImgUrl = data.agentPosImgUrl;
  231. params.agentTel = data.agentTel;
  232. params.customerId = data.customerId;
  233. params.customerIdVld = data.customerIdVld;
  234. params.department = data.department;
  235. // params.loginSource = data.loginSource;
  236. params.loginSource = "431bfdc8b9c645e0b293b85d6ce1948n";
  237. params.mobile = data.tel;
  238. params.orderNo = orderNo.value;
  239. params.proxyUrl = data.proxyUrl;
  240. params.userAddress = data.address;
  241. params.userIdNum = data.userIdNum;
  242. params.userIdType = data.userIdType;
  243. params.userName = data.userName;
  244. params.userNegImgUrl = data.userIdNeImageUrl;
  245. params.userPosImgUrl = data.userIdPoImageUrl;
  246. if (data.isSelf === "0" || submitCode === "20") {
  247. // 他人办理
  248. params.agentIdNum = data.agentIdNum;
  249. params.agentIdType = data.agentIdType;
  250. params.agentName = data.agentName;
  251. }
  252. if (submitCode === "20") {
  253. // 单位办理
  254. params.userType = "ENTERPRISE";
  255. params.department = data.department;
  256. params.businessLicenseUrl = data.businessLicenseUrl; // 添加营业执照图片地址
  257. } else {
  258. params.userType = "PERSONAL";
  259. }
  260. console.log(params, "params", submitCode);
  261. console.log(orderNo.value, "fanhui");
  262. return requestNew("/iaw/h5/order/web/upUser", {
  263. data: params,
  264. }).then((res) => {
  265. if (res.code === 0) {
  266. let data = res.data;
  267. // 保存token
  268. setToken(data.accessToken);
  269. setItem(StorageKeys.OpenId, data.openId);
  270. uni.navigateTo({
  271. url: `/pages/drivingLicense/drivingLicense?orderNo=${orderNo.value}`,
  272. animationType: "pop-in",
  273. animationDuration: 500,
  274. });
  275. // return data.openId;
  276. } else {
  277. return false;
  278. }
  279. });
  280. }
  281. </script>
  282. <style lang='scss' scoped>
  283. </style>