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.

mailingAddress.vue 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. <template>
  2. <div>
  3. <custom-header :back="false" title="邮寄"></custom-header>
  4. <div style="padding-top: 20rpx">
  5. <form-builder-vue :formData="formData" :config="config" @radioChange="radioChange" @submit="submit">
  6. </form-builder-vue>
  7. </div>
  8. </div>
  9. </template>
  10. <script setup lang='ts'>
  11. import CustomHeader from '@/components/CustomHeader'
  12. import formBuilderVue from '@/components/form-builder/form-builder-vue3'
  13. import {
  14. TypeData,
  15. Index
  16. } from '@/components/form-builder/tools'
  17. import {
  18. ref,
  19. reactive,
  20. } from 'vue'
  21. import {
  22. onLoad
  23. } from '@dcloudio/uni-app';
  24. // import {
  25. // request
  26. // } from '../../static/js/network/request'
  27. // import {
  28. // storageKey
  29. // } from '../../static/data/storageKey'
  30. import {
  31. request
  32. } from '@/utils/network/request'
  33. import {
  34. useQdOrderStore
  35. } from '@/stores/qdOrder.js'
  36. const qdOrderStore = useQdOrderStore()
  37. //获取页面配置
  38. onLoad((opin) => {
  39. let qdOrderNo: any
  40. if (opin && opin.qdOrderNo) {
  41. qdOrderNo = opin.qdOrderNo
  42. uni.setStorageSync('qdOrderNo', opin.qdOrderNo)
  43. }else{
  44. qdOrderNo = uni.getStorageSync('qdOrderNo')
  45. }
  46. // 拼接参数
  47. request('ac8756cc31eb4816b8eaeb71907ff9c1', {
  48. data: {
  49. qdOrderNo,
  50. pageStep: 0
  51. }
  52. }).then((res) => {
  53. let data = JSON.parse(res.bizContent)
  54. formData.value = JSON.parse(data.config.tableConfig)
  55. qdOrderStore.setQdOrder(data.qdOrder)
  56. delete data.config.tableConfig
  57. config.value = Object.assign(data.config, config.value)
  58. })
  59. })
  60. let config = ref < any > ({
  61. submitName: '提交',
  62. titleWidth: 160
  63. })
  64. let formData = ref([{
  65. 'title': '是否邮寄',
  66. 'type': 7,
  67. 'value': 'whetherToMail',
  68. 'postal': 1,
  69. 'itemData': [{
  70. 'checked': true,
  71. 'value': '1',
  72. 'name': '不邮寄'
  73. }, {
  74. 'checked': false, //默认选中
  75. 'value': '0',
  76. 'name': '邮寄'
  77. }],
  78. }, {
  79. 'required': false,
  80. 'title': '收件人',
  81. 'type': 2,
  82. 'vertical': 1,
  83. 'value': 'consignee',
  84. 'underline': true,
  85. 'show': true,
  86. }, {
  87. 'required': false,
  88. 'title': '收件人手机号',
  89. 'type': 2,
  90. 'value': 'consigneeTel',
  91. 'hint': '请输入手机号',
  92. 'underline': true,
  93. 'show': true
  94. }, {
  95. 'required': false,
  96. 'title': '省市区',
  97. 'type': 10,
  98. 'value': 'region',
  99. 'hint': '请选择省市区',
  100. 'underline': true,
  101. 'show': true
  102. }, {
  103. 'required': false,
  104. 'title': '详细地址',
  105. 'type': 2,
  106. 'value': 'address',
  107. 'hint': '请输入详细地址',
  108. 'underline': true,
  109. 'show': true
  110. },
  111. {
  112. 'required': false,
  113. 'title': '邮政编码',
  114. 'type': 2,
  115. 'value': 'postalCode',
  116. 'hint': '请输入邮政编码',
  117. 'underline': true,
  118. 'show': true
  119. },
  120. ])
  121. // let index = Index('收件人手机号', formData)
  122. // formData[index][formData[index].value] = uni.getStorageSync('operatorId')
  123. // console.log(formData)
  124. //单项选择器
  125. function radioChange(e: any, item: TypeData) {
  126. if (item.title === '是否邮寄') {
  127. if (e.detail.value == '1') {
  128. formData.value[Index('收件人', formData.value)].show = true
  129. formData.value[Index('收件人手机号', formData.value)].show = true
  130. formData.value[Index('省市区', formData.value)].show = true
  131. formData.value[Index('详细地址', formData.value)].show = true
  132. formData.value[Index('邮政编码', formData.value)].show = true
  133. } else {
  134. formData.value[Index('收件人', formData.value)].show = false
  135. formData.value[Index('收件人手机号', formData.value)].show = false
  136. formData.value[Index('省市区', formData.value)].show = false
  137. formData.value[Index('详细地址', formData.value)].show = false
  138. formData.value[Index('邮政编码', formData.value)].show = false
  139. }
  140. }
  141. }
  142. function submit(e: any) {
  143. qdOrderStore.orderInfo.value = e
  144. let {
  145. userType,
  146. vanType,
  147. vehicleColor,
  148. vehiclePlate,
  149. qdOrderNo
  150. } = qdOrderStore.qdOrderVal
  151. qdOrderStore.qdOrderVal.type = vanType - 1
  152. const data = {
  153. userType,
  154. qdOrderNo,
  155. vehiclePlate,
  156. vehiclePlateColor: vehicleColor,
  157. type: vanType - 1,
  158. orderSource: 'H5',
  159. ...e
  160. }
  161. // uni.navigateTo({
  162. // url: '/pages/userInfoUploading/userInfoUploading',
  163. // animationType: 'pop-in',
  164. // animationDuration: 500
  165. // })
  166. let {
  167. commitInterface,
  168. jumpPage
  169. } = config.value
  170. request(commitInterface || '3dc2df0ba7004fffbd97192cbaa66b6f', {
  171. data,
  172. }).then((res) => {
  173. if (res.statusCode === 0) {
  174. qdOrderStore.orderInfo.value.orderId = JSON.parse(res.bizContent).orderId
  175. relatedProducts(qdOrderStore.qdOrderVal.productCode, JSON.parse(res.bizContent).orderId)
  176. uni.navigateTo({
  177. url: '/' + jumpPage,
  178. animationType: 'pop-in',
  179. animationDuration: 500
  180. })
  181. }
  182. })
  183. }
  184. function relatedProducts(promoteId: string, orderId: string) {
  185. const data = {
  186. promoteId,
  187. orderId
  188. }
  189. return request('198172b1858d474fa8e35225d65014d7', {
  190. showLoading: true,
  191. data,
  192. }).then((res) => {
  193. console.log('关联成功', res)
  194. return
  195. })
  196. }
  197. </script>
  198. <style lang='scss' scoped>
  199. </style>