Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

userInfoUploading.vue 9.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317
  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.order;
  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. if (res.data.userType === "PERSONAL_USER") {
  71. // 个人办理
  72. danChange(false);
  73. } else {
  74. // 单位办理
  75. danChange(true);
  76. }
  77. handleMobile(res.data)//处理联系方式
  78. handleAgentTel(res.data)//处理经办人电话
  79. });
  80. }
  81. function hanToNext(order) {
  82. let url = "";
  83. if (order.orderStatus === "CANCEL") {
  84. uni.showModal({
  85. title: "提示",
  86. content: "订单已取消",
  87. showCancel: false,
  88. success: function (res) {
  89. if (res.confirm) {
  90. } else if (res.cancel) {
  91. }
  92. },
  93. });
  94. return false;
  95. }
  96. if (order.orderStep === 2) {
  97. url = "/pages/drivingLicense/drivingLicense";
  98. } else if (order.orderStep !== 1) {
  99. url = "/pages/payment/payment";
  100. }
  101. if (url) {
  102. uni.navigateTo({
  103. url: url + `?qdOrderNo=${qdOrderVal.value.orderNo}`,
  104. animationType: "pop-in",
  105. animationDuration: 500,
  106. });
  107. return true;
  108. }
  109. return false;
  110. }
  111. function handleMobile(data) {
  112. const itemData = formData.value[Index("联系方式", formData.value)];
  113. if (data.customerTel) {
  114. itemData[itemData.value] = data.customerTel || "";
  115. itemData.disabled = true;
  116. }
  117. }
  118. function handleAgentTel(data) {
  119. const itemData = formData.value[Index("经办人电话", formData.value)];
  120. if (data.customerTel) {
  121. itemData[itemData.value] = data.customerTel || "";
  122. itemData.disabled = true;
  123. }
  124. }
  125. //初始判断单位办理还是个人办理
  126. function danChange(key) {
  127. if (key) {
  128. submitCode = "20";
  129. // 单位办理
  130. businesses(false);
  131. handleDan(false);
  132. formData.value[Index("部门名称", formData.value)].department = "本部";
  133. } else {
  134. submitCode = "22";
  135. // 个人办理
  136. businesses(true);
  137. handleDan(true);
  138. }
  139. }
  140. //单项选择器
  141. function radioChange(e: any, item: TypeData, opin) {
  142. if (item.title === "本人办理") {
  143. if (e.detail.value === "1") {
  144. businesses(true);
  145. } else {
  146. businesses(false);
  147. }
  148. }
  149. }
  150. //本人办理还是他人办理 ,true为本人办理
  151. function businesses(key: Boolean) {
  152. formData.value[Index("委托书", formData.value)].show = key;
  153. formData.value[Index("本人办理", formData.value)].underline = 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. }
  161. // 个人办理还是单位办理 true为个人办理
  162. function handleDan(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. formData.value[Index("社会信用代码", formData.value)].show = key;
  168. // formData.value[Index('住址', formData.value)].show = !key
  169. formData.value[Index("本人办理", formData.value)].show = !key;
  170. formData.value[Index("人像面", formData.value)].show = !key;
  171. formData.value[Index("国徽面", formData.value)].show = !key;
  172. formData.value[Index("证件号码", formData.value)].show = !key;
  173. // formData.value[Index('住址', formData.value)].show = !key
  174. formData.value[Index("姓名", formData.value)].show = !key;
  175. formData.value[Index("联系方式", formData.value)].show = !key;
  176. }
  177. // 提交个人信息接口
  178. let submitCode = "22";
  179. // ocr图片处理和额外请求参数处理
  180. const { uploadImgHandle, submitQuery } = ocrHandle();
  181. function uploadImg(fileList, item) {
  182. uploadImgHandle(fileList, item, formData);
  183. }
  184. async function submit(item: any) {
  185. try {
  186. if (isLock.value) return;
  187. isLock.value = true;
  188. let data = {
  189. ...submitQuery.value,
  190. agentId: qdOrderVal.value.agencyId, //渠道编号
  191. channelId: qdOrderVal.value.channelId, //网点编号
  192. channelType: qdOrderVal.value.promotionModes, //网点类型
  193. source: qdOrderVal.value.orderSource, //订单来源
  194. orderNo: qdOrderVal.value.orderNo, //订单id
  195. };
  196. // 处理参数,为空的不携带
  197. for (const key in item) {
  198. if (item[key] || item[key] === 0 || item[key] === false) {
  199. data[key] = item[key];
  200. }
  201. }
  202. console.log(data, "isAgent之前");
  203. data.isAgent = +data.isAgent === 1 ? false : true;
  204. const openIdKey = await register(data);
  205. if (!openIdKey) {
  206. return;
  207. }
  208. // promotionModes是1,openId的值是userId
  209. // promotionModes是2,openId的值是staffId,
  210. if (qdOrderVal.value.promotionModes === 2) {
  211. data.openId = qdOrderVal.value.staffId; //操作人id
  212. } else if (qdOrderVal.value.promotionModes === 1) {
  213. data.openId = qdOrderVal.value.userId; //操作人id
  214. }
  215. // data.openId = getItem(StorageKeys.OpenId)
  216. let { jumpPage } = config.value;
  217. data.userAddress = data.userAddress || data.address;
  218. let options = {
  219. type: 2,
  220. data: data,
  221. method: "POST",
  222. showLoading: true,
  223. };
  224. console.log(options, "请求参数");
  225. await request("ISSUES_ORDER_USERUPLOAD", options).then((res) => {
  226. console.log(res, "res");
  227. if (res.statusCode === 0) {
  228. uni.navigateTo({
  229. url: "/" + jumpPage + `?qdOrderNo=${qdOrderVal.value.orderNo}`,
  230. animationType: "pop-in",
  231. animationDuration: 500,
  232. });
  233. }
  234. });
  235. } catch (e) {
  236. //TODO handle the exception
  237. } finally {
  238. isLock.value = false;
  239. }
  240. }
  241. let isLock = ref(false);
  242. // 无感注册拿到openId
  243. function register(data: any) {
  244. console.log(data,'datasjsjsjsjsj')
  245. let params: any = {};
  246. // params.idNum = data.userIdNum;
  247. // params.idType = data.userIdType;
  248. // params.mobile = data.mobile || data.agentTel;
  249. // params.userName = data.userName;
  250. // params.gender = "UNKOWN";
  251. // params.certifyChannel = "BAIDUOCR"; //实名渠道
  252. // params.address = data.userAddress;
  253. params.agentAddress = data.agentAddress;
  254. params.agentIdNum = data.agentIdNum;
  255. params.agentIdType = data.agentIdType;
  256. params.agentIdVld = data.agentIdVld;
  257. params.agentName = data.agentName;
  258. params.agentNegImgUrl = data.agentNegImgUrl;
  259. params.agentPosImgUrl = data.agentPosImgUrl;
  260. params.agentTel = data.agentTel;
  261. params.customerId = data.customerId;
  262. params.customerIdVld = data.customerIdVld;
  263. params.department = data.department;
  264. // params.loginSource = data.loginSource;
  265. params.loginSource = '431bfdc8b9c645e0b293b85d6ce1948n';
  266. params.mobile = data.tel;
  267. params.orderNo = orderNo.value;
  268. params.proxyUrl = data.proxyUrl;
  269. params.userAddress = data.address;
  270. params.userIdNum = data.userIdNum;
  271. params.userIdType = data.userIdType;
  272. params.userName = data.userName;
  273. params.userNegImgUrl = data.userIdNeImageUrl;
  274. params.userPosImgUrl = data.userIdPoImageUrl;
  275. if (data.isSelf === "0" || submitCode === "20") {
  276. // 他人办理
  277. params.agentIdNum = data.agentIdNum;
  278. params.agentIdType = data.agentIdType;
  279. params.agentName = data.agentName;
  280. }
  281. if (submitCode === "20") {
  282. // 单位办理
  283. params.userType = "ENTERPRISE";
  284. params.department = data.department;
  285. params.businessLicenseUrl = data.businessLicenseUrl; // 添加营业执照图片地址
  286. } else {
  287. params.userType = "PERSONAL";
  288. }
  289. console.log(params, "params", submitCode);
  290. return requestNew("/iaw/h5/order/web/upUser", {
  291. data: params,
  292. }).then((res) => {
  293. console.log(res, "fanhui");
  294. if (res.code === 0) {
  295. let data = res.data;
  296. // 保存token
  297. setToken(data.accessToken);
  298. setItem(StorageKeys.OpenId, data.openId);
  299. return data.openId;
  300. } else {
  301. return false;
  302. }
  303. });
  304. }
  305. </script>
  306. <style lang='scss' scoped>
  307. </style>