TradeDetail.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <template>
  2. <Dialog title="订单详情" v-model="dialogVisible" width="70%">
  3. <el-descriptions title="" border :column="2">
  4. <el-descriptions-item label="购买方">
  5. <span style="color: #409EFF; cursor: pointer;" @click="handleDetail">{{ info?.userType === '0' ? info?.person.name : formatName(info?.enterprise.name) }}</span>
  6. </el-descriptions-item>
  7. <el-descriptions-item label="商品名称">{{ info?.spuName }}</el-descriptions-item>
  8. <el-descriptions-item label="价格">{{ (info?.price / 100.0).toFixed(2) }}元</el-descriptions-item>
  9. <el-descriptions-item label="是否已支付">{{ info?.payStatus ? '已支付' : '未支付' }}</el-descriptions-item>
  10. <el-descriptions-item label="支付订单编号">{{ info?.payOrderId }}</el-descriptions-item>
  11. <el-descriptions-item label="支付渠道">
  12. <dict-tag :type="DICT_TYPE.PAY_CHANNEL_CODE" :value="info.payChannelCode" />
  13. </el-descriptions-item>
  14. <el-descriptions-item label="订单支付时间">{{ info?.payTime ? formatDate(info?.payTime) : '' }}</el-descriptions-item>
  15. <el-descriptions-item label="是否退款">{{ info.payRefundId ? '已退款' : '' }}</el-descriptions-item>
  16. <el-descriptions-item label="退款金额">{{ (info.refundPrice / 100.0).toFixed(2) }}</el-descriptions-item>
  17. <el-descriptions-item label="退款时间">{{ info?.refundTime ? formatDate(info?.refundTime) : '' }}</el-descriptions-item>
  18. <el-descriptions-item label="订单是否取消">{{ info.cancelType ? '订单取消': '' }}</el-descriptions-item>
  19. <el-descriptions-item label="订单取消时间">{{ info?.cancelTime ? formatDate(info?.cancelTime) : '' }}</el-descriptions-item>
  20. <el-descriptions-item label="订单创建时间">{{ info.createTime ? formatDate(info?.createTime) : '' }}</el-descriptions-item>
  21. </el-descriptions>
  22. </Dialog>
  23. </template>
  24. <script setup lang="ts">
  25. import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
  26. import { formatDate } from '@/utils/formatTime'
  27. import { formatName } from '@/utils'
  28. defineOptions({ name: 'TradeOrderDetail' })
  29. const dialogVisible = ref(false) // 弹窗的是否展示
  30. /** 打开弹窗 */
  31. const info = ref({}) // 详情数据
  32. const open = async (item: object) => {
  33. info.value = item
  34. dialogVisible.value = true
  35. }
  36. const { push } = useRouter()
  37. const handleDetail = () => {
  38. dialogVisible.value = false
  39. if (info.value?.userType === '1') push({ name: 'EnterpriseDetail', params: { id: info.value?.enterpriseId } })
  40. else push({ name: 'PersonDetail', query: { id: info.value?.person?.id, userId: info.value?.userId } })
  41. }
  42. defineExpose({ open }) // 提供 open 方法,用于打开弹窗
  43. </script>