TradeDetail.vue 2.7 KB

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