選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

userInfoUploading.vue 8.2KB

7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
6ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
6ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
7ヶ月前
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291
  1. <template>
  2. <view>
  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 v-if="isShow">
  8. <formBuilderVue :formData="formData" :config="config" @radioChange="radioChange" @submit="submit"
  9. @uploadImgOcr="uploadImg"></formBuilderVue>
  10. </view>
  11. </view>
  12. <agreementfrom />
  13. </view>
  14. </template>
  15. <script setup lang='ts'>
  16. import {
  17. unifyTemplate
  18. } from '@/hooks/unifyTemplate'
  19. import {
  20. TypeData,
  21. Index
  22. } from '@/components/form-builder/tools'
  23. import agreementfrom from './components/agreement'
  24. import {
  25. ref,
  26. nextTick
  27. } from 'vue'
  28. import {
  29. onLoad
  30. } from '@dcloudio/uni-app';
  31. import {
  32. requestNew,
  33. request
  34. } from '@/utils/network/request'
  35. import fromData from './fromData'
  36. import ocrHandle from './ocrHandle'
  37. import {
  38. setToken,
  39. setItem,
  40. StorageKeys
  41. } from '@/utils/storage'
  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. const {
  53. formBuilderVue, //组件
  54. CustomHeader, //头部组件
  55. initData, //初始化数据
  56. isShow, //是否展示formBuilderVue组件
  57. qdOrderVal //qdOrder中数据 ref
  58. } = unifyTemplate() //初始化数据
  59. //获取页面配置
  60. onLoad((opin) => {
  61. // 初始化数据
  62. initData(opin, 1).then(data => {
  63. // formData.value = userInfoFormData(data.order, JSON.parse(data.config.tableConfig))
  64. formData.value = JSON.parse(data.config.tableConfig)
  65. let keys = hanToNext(data.order)
  66. if(keys) return
  67. nextTick(() => {
  68. if (data.order.userType === 'PERSONAL_USER') {
  69. // 个人办理
  70. danChange(false)
  71. } else {
  72. // 单位办理
  73. danChange(true)
  74. }
  75. })
  76. isShow.value = true
  77. console.log('新版', formData.value)
  78. handleMobile(data)//处理联系方式
  79. handleAgentTel(data)//处理经办人电话
  80. delete data.config.tableConfig
  81. config.value = Object.assign(data.config, config.value)
  82. })
  83. })
  84. function hanToNext(order) {
  85. let url = ''
  86. if (order.orderStep === 2) {
  87. url = '/pages/drivingLicense/drivingLicense'
  88. } else if (order.orderStep !== 1) {
  89. url = '/pages/payment/payment'
  90. }
  91. if (url) {
  92. uni.navigateTo({
  93. url: url + `?qdOrderNo=${qdOrderVal.value.orderNo}`,
  94. animationType: 'pop-in',
  95. animationDuration: 500
  96. })
  97. return true
  98. }
  99. return false
  100. }
  101. function handleMobile(data) {
  102. const itemData = formData.value[Index('联系方式', formData.value)]
  103. if (data.order.customerTel) {
  104. itemData[itemData.value] = data.order.customerTel || ''
  105. itemData.disabled = true
  106. }
  107. }
  108. function handleAgentTel(data) {
  109. const itemData = formData.value[Index('经办人电话', formData.value)]
  110. if (data.order.customerTel) {
  111. itemData[itemData.value] = data.order.customerTel || ''
  112. itemData.disabled = true
  113. }
  114. }
  115. //初始判断单位办理还是个人办理
  116. function danChange(key) {
  117. if (key) {
  118. submitCode = '20'
  119. // 单位办理
  120. businesses(false)
  121. handleDan(false)
  122. formData.value[Index('部门名称', formData.value)].department = '本部'
  123. } else {
  124. submitCode = '22'
  125. // 个人办理
  126. businesses(true)
  127. handleDan(true)
  128. }
  129. }
  130. //单项选择器
  131. function radioChange(e: any, item: TypeData) {
  132. if (item.title === '本人办理') {
  133. if (e.detail.value === '1') {
  134. businesses(true)
  135. } else {
  136. businesses(false)
  137. }
  138. }
  139. }
  140. //本人办理还是他人办理 ,true为本人办理
  141. function businesses(key: Boolean) {
  142. formData.value[Index('委托书', formData.value)].show = key
  143. formData.value[Index('本人办理', formData.value)].underline = key
  144. formData.value[Index('经办人姓名', formData.value)].show = 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. }
  151. // 个人办理还是单位办理 true为个人办理
  152. function handleDan(key) {
  153. formData.value[Index('营业执照', formData.value)].show = 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. }
  167. // 提交个人信息接口
  168. let submitCode = '22'
  169. // ocr图片处理和额外请求参数处理
  170. const {
  171. uploadImgHandle,
  172. submitQuery
  173. } = ocrHandle()
  174. function uploadImg(fileList, item) {
  175. uploadImgHandle(fileList, item, formData)
  176. }
  177. async function submit(item: any) {
  178. try {
  179. if (isLock.value) return
  180. isLock.value = true
  181. let data = {
  182. ...submitQuery.value,
  183. agentId: qdOrderVal.value.agencyId, //渠道编号
  184. channelId: qdOrderVal.value.channelId, //网点编号
  185. channelType: qdOrderVal.value.promotionModes, //网点类型
  186. source: qdOrderVal.value.orderSource, //订单来源
  187. orderNo: qdOrderVal.value.orderNo //订单id
  188. }
  189. // 处理参数,为空的不携带
  190. for (const key in item) {
  191. if (item[key] || item[key] === 0 || item[key] === false) {
  192. data[key] = item[key]
  193. }
  194. }
  195. console.log(data, 'isAgent之前');
  196. data.isAgent = +data.isAgent === 1 ? false : true
  197. const openIdKey = await register(data)
  198. if (!openIdKey) {
  199. return
  200. }
  201. // promotionModes是1,openId的值是userId
  202. // promotionModes是2,openId的值是staffId,
  203. if (qdOrderVal.value.promotionModes === 2) {
  204. data.openId = qdOrderVal.value.staffId //操作人id
  205. } else if (qdOrderVal.value.promotionModes === 1) {
  206. data.openId = qdOrderVal.value.userId //操作人id
  207. }
  208. let {
  209. jumpPage
  210. } = config.value
  211. data.userAddress = data.userAddress || data.address
  212. let options = {
  213. type: 2,
  214. data: data,
  215. method: 'POST',
  216. showLoading: true
  217. }
  218. console.log(options, '请求参数')
  219. // return
  220. await request('ISSUES_ORDER_USERUPLOAD', options).then((res) => {
  221. console.log(res, 'res')
  222. if (res.statusCode === 0) {
  223. uni.navigateTo({
  224. url: '/' + jumpPage + `?qdOrderNo=${qdOrderVal.value.orderNo}`,
  225. animationType: 'pop-in',
  226. animationDuration: 500
  227. })
  228. }
  229. })
  230. } catch (e) {
  231. //TODO handle the exception
  232. } finally {
  233. isLock.value = false
  234. }
  235. }
  236. let isLock = ref(false)
  237. // 无感注册拿到openId
  238. function register(data: any) {
  239. let params: any = {}
  240. params.idNum = data.userIdNum;
  241. params.idType = data.userIdType;
  242. params.mobile = data.mobile || data.agentTel;
  243. params.userName = data.userName;
  244. params.gender = 'UNKOWN';
  245. params.certifyChannel = 'BAIDUOCR'; //实名渠道
  246. params.address = data.userAddress;
  247. if (data.isSelf === '0' || submitCode === '20') {
  248. // 他人办理
  249. params.agentIdNum = data.agentIdNum;
  250. params.agentIdType = data.agentIdType;
  251. params.agentName = data.agentName;
  252. }
  253. if (submitCode === '20') {
  254. // 单位办理
  255. params.userType = 'ENTERPRISE'
  256. params.department = data.department;
  257. } else {
  258. params.userType = 'PERSONAL'
  259. }
  260. console.log(params, 'params', submitCode);
  261. return requestNew('/iaw/issue/userBasic/registerFull', {
  262. data: params,
  263. }).then((res) => {
  264. console.log(res, 'fanhui');
  265. if (res.code === 0) {
  266. let data = res.data
  267. // 保存token
  268. setToken(data.accessToken)
  269. setItem(StorageKeys.OpenId, data.openId)
  270. return data.openId
  271. } else {
  272. return false
  273. }
  274. })
  275. }
  276. </script>
  277. <style lang='scss' scoped>
  278. </style>