index.vue 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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
  70. title="实际支付积分"
  71. size="sm"
  72. :end-text="`¥ ${data.payPoints}`"
  73. ></SectionHeading>
  74. <SectionHeading title="订单号" size="sm" :end-text="data.orderNo"></SectionHeading>
  75. <SectionHeading
  76. title="支付时间"
  77. size="sm"
  78. :end-text="dayjs(data.createTime).format('YYYY-MM-DD hh:mm')"
  79. ></SectionHeading>
  80. <SectionHeading title="支付方式" size="sm" :end-text="payTypes[data.payType]"></SectionHeading>
  81. <div class="flex-1"></div>
  82. <BottomAppBar fixed>
  83. <div>
  84. <wd-button :round="false" block v-if="data.orderStatus === '0'" @click="handleSubmit">
  85. 取消订单
  86. </wd-button>
  87. </div>
  88. </BottomAppBar>
  89. </div>
  90. </template>