index.vue 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. <route lang="json">
  2. { "style": { "navigationBarTitleText": "订单详情", "navigationBarBackgroundColor": "#fff" } }
  3. </route>
  4. <script setup lang="ts">
  5. import SectionHeading from '@/components/section-heading.vue'
  6. import { cancelOrder, getPointsOrder } from '../../../../core/libs/requests'
  7. import BottomAppBar from '@/components/bottom-app-bar.vue'
  8. import dayjs from 'dayjs'
  9. import { requestToast } from '../../../../core/utils/common'
  10. const id = ref()
  11. const status = ref({ '0': '已报名', '1': '已完成', '2': '未核销', '3': '已取消', '4': '待交付' })
  12. const payTypes = ref({ 0: '积分支付', 1: '现金支付' })
  13. const { data, run: setData } = useRequest(() => getPointsOrder(id.value), { initialData: {} })
  14. const handleSubmit = async () => {
  15. await requestToast(() => cancelOrder(id.value), { success: true, successTitle: '取消成功' })
  16. await setData()
  17. }
  18. onLoad((query: { id: string }) => {
  19. id.value = query.id
  20. setData()
  21. })
  22. </script>
  23. <template>
  24. <div class="flex-grow flex flex-col gap-4 px-3.5 bg-white">
  25. <div class="h-8.5 flex items-center justify-center mx--3.5 box-border bg-[#ffecec]">
  26. <div
  27. class="text-right text-[#ef4343] text-sm font-normal font-['PingFang_SC'] leading-normal"
  28. >
  29. {{ status[data.orderStatus] }}
  30. </div>
  31. </div>
  32. <div class="flex gap-4 border-b border-b-solid border-b-[#f2f2f2] pb-5">
  33. <wd-img
  34. width="94"
  35. height="94"
  36. custom-class="rounded-2xl overflow-hidden"
  37. :src="data.orderImgUrl"
  38. />
  39. <div class="flex flex-col flex-1">
  40. <div class="text-black text-base font-normal font-['PingFang_SC'] leading-normal">
  41. {{ data.projectName }}
  42. </div>
  43. <div
  44. class="text-start text-black/40 text-sm font-normal font-['PingFang_SC'] leading-normal"
  45. >
  46. x{{ data.orderQuantity }}
  47. </div>
  48. <div class="flex-1"></div>
  49. <div
  50. class="text-start text-black/60 text-sm font-normal font-['PingFang_SC'] leading-normal"
  51. >
  52. {{ data.points }}积分
  53. </div>
  54. </div>
  55. <div>
  56. <div class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-normal">
  57. <!-- 已完成 -->
  58. {{ status[data.orderStatus] }}
  59. </div>
  60. </div>
  61. </div>
  62. <SectionHeading
  63. v-if="data.orderMoney"
  64. title="订单金额"
  65. size="sm"
  66. :end-text="`¥ ${data.orderMoney}`"
  67. ></SectionHeading>
  68. <SectionHeading title="总积分" size="sm" :end-text="`${data.points}`"></SectionHeading>
  69. <SectionHeading title="实际支付积分" size="sm" :end-text="`${data.payPoints}`"></SectionHeading>
  70. <SectionHeading title="订单号" size="sm" :end-text="data.orderNo"></SectionHeading>
  71. <SectionHeading
  72. title="支付时间"
  73. size="sm"
  74. :end-text="dayjs(data.createTime).format('YYYY-MM-DD hh:mm')"
  75. ></SectionHeading>
  76. <SectionHeading title="支付方式" size="sm" :end-text="payTypes[data.payType]"></SectionHeading>
  77. <div class="flex-1"></div>
  78. <BottomAppBar fixed>
  79. <div>
  80. <wd-button :round="false" block v-if="data.orderStatus === '0'" @click="handleSubmit">
  81. 取消订单
  82. </wd-button>
  83. </div>
  84. </BottomAppBar>
  85. </div>
  86. </template>