You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <template>
  2. <div>
  3. <custom-header :back="false" title="邮寄"></custom-header>
  4. <div style="padding-top: 20rpx" v-if='isShow'>
  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 {
  12. unifyTemplate
  13. } from '@/hooks/unifyTemplate'
  14. import {
  15. TypeData,
  16. Index
  17. } from '@/components/form-builder/tools'
  18. import {
  19. ref,
  20. } from 'vue'
  21. import {
  22. onLoad
  23. } from '@dcloudio/uni-app';
  24. import {
  25. request
  26. } from '@/utils/network/request'
  27. import fromData from './fromData.js'
  28. let config = ref < any > ({
  29. submitName: '提交',
  30. titleWidth: 160
  31. })
  32. let formData = ref(fromData)
  33. const {
  34. formBuilderVue, //组件
  35. CustomHeader, //头部组件
  36. initData, //初始化数据
  37. isShow, //是否展示formBuilderVue组件
  38. qdOrderVal //qdOrder中数据 ref
  39. } = unifyTemplate() //初始化数据
  40. //获取页面配置
  41. onLoad((opin) => {
  42. initData(opin, 0).then(data => {
  43. formData.value = JSON.parse(data.config.tableConfig)
  44. console.log(formData.value,data);
  45. isShow.value = true
  46. delete data.config.tableConfig
  47. config.value = Object.assign(data.config, config.value)
  48. })
  49. })
  50. //单项选择器
  51. function radioChange(e: any, item: TypeData) {
  52. if (item.title === '是否邮寄') {
  53. if (parseInt(e.detail.value) == 1) {
  54. formData.value[Index('收件人', formData.value)].show = true
  55. formData.value[Index('收件人手机号', formData.value)].show = true
  56. formData.value[Index('省市区', formData.value)].show = true
  57. formData.value[Index('详细地址', formData.value)].show = true
  58. formData.value[Index('邮政编码', formData.value)].show = true
  59. } else {
  60. formData.value[Index('收件人', formData.value)].show = false
  61. formData.value[Index('收件人手机号', formData.value)].show = false
  62. formData.value[Index('省市区', formData.value)].show = false
  63. formData.value[Index('详细地址', formData.value)].show = false
  64. formData.value[Index('邮政编码', formData.value)].show = false
  65. }
  66. }
  67. }
  68. /**
  69. * 请求函数,e为处理后的value
  70. * */
  71. function submit(e: any) {
  72. // qdorder数据
  73. let {
  74. userType,
  75. vanType,
  76. vehicleColor,
  77. vehiclePlate,
  78. qdOrderNo
  79. } = qdOrderVal.value
  80. // 客货类型
  81. qdOrderVal.value.type = vanType > 3 ? 2 : vanType
  82. const data = {
  83. userType,
  84. qdOrderNo,
  85. vehiclePlate,
  86. vehiclePlateColor: vehicleColor,
  87. type: vanType > 3 ? 2 : vanType,
  88. orderSource: 'H5',
  89. ...e
  90. }
  91. let {
  92. commitInterface,
  93. jumpPage
  94. } = config.value
  95. console.log(data);
  96. request(commitInterface || '3dc2df0ba7004fffbd97192cbaa66b6f', {
  97. data,
  98. }).then((res) => {
  99. if (res.statusCode === 0) {
  100. // 通过orderId关联产品
  101. relatedProducts(qdOrderVal.value.productCode || qdOrderVal.value.promoteId, JSON.parse(res
  102. .bizContent).orderId)
  103. uni.navigateTo({
  104. url: '/' + jumpPage,
  105. animationType: 'pop-in',
  106. animationDuration: 500
  107. })
  108. }
  109. })
  110. }
  111. /**
  112. * 关联产品
  113. * */
  114. function relatedProducts(promoteId: string, orderId: string) {
  115. const data = {
  116. promoteId,
  117. orderId
  118. }
  119. request('198172b1858d474fa8e35225d65014d7', {
  120. showLoading: true,
  121. data,
  122. }).then((res) => {
  123. console.log('关联成功', res)
  124. })
  125. }
  126. </script>
  127. <style lang='scss' scoped>
  128. </style>