OrderAfterSale.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <!-- 订单查看 - 售后 -->
  2. <template>
  3. <div v-if="formData != null" style="text-align: center;margin-top: 50px;font-size: 14px;">
  4. 该订单暂无售后记录
  5. </div>
  6. <div v-else class="aftersale-container">
  7. <h3 class="rating-title">{{formData.spuName}}</h3>
  8. <div class="aftersale-content">
  9. <div class="aftersale-image">
  10. <!-- 请将此处替换为实际评价图片链接 -->
  11. <img src="https://static.iocoder.cn/mall/a79f5d2ea6bf0c3c11b2127332dfe2df.jpg" alt="商品主图" />
  12. </div>
  13. <div class="aftersale-details">
  14. <p class="product-model">{{formData.status}}</p>
  15. <p class="first-aftersale">退款:{{fenToYuan(formData.refundPrice)}}元</p>
  16. <p class="first-aftersale">原由:{{formData.applyReason || "无"}}</p>
  17. <p class="aftersale-comment" :title="formData.applyDescription">描述:{{formData.applyDescription || "无"}}</p>
  18. </div>
  19. </div>
  20. </div>
  21. </template>
  22. <script lang="ts" setup>
  23. import { propTypes } from '@/utils/propTypes'
  24. import * as TradeOrderApi from '@/api/mall/trade/order'
  25. import { fenToYuan } from '@/utils'
  26. import { formatDate } from '@/utils/formatTime'
  27. import { DICT_TYPE, getDictLabel, getDictObj } from '@/utils/dict'
  28. const props = defineProps({
  29. id: propTypes.number.def(undefined), // 订单ID
  30. showPickUp: propTypes.bool.def(true) // 显示核销按钮
  31. })
  32. const formData = ref<TradeOrderApi.OrderVO>({
  33. logs: []
  34. })
  35. const id = props.id
  36. const getOrderAfterSale = async () => {
  37. if (id) {
  38. const res = (await TradeOrderApi.getOrderAfterSale(id))
  39. // 没有表单信息则关闭页面返回
  40. if (!res) {
  41. message.error('交易订单不存在')
  42. close()
  43. }
  44. console.log(res)
  45. formData.value = res
  46. }
  47. }
  48. const message = useMessage() // 消息弹窗
  49. onMounted(async () => {
  50. getOrderAfterSale()
  51. })
  52. </script>
  53. <style lang="scss" scoped>
  54. .aftersale-container {
  55. display: flex;
  56. flex-direction: column;
  57. align-items: flex-start;
  58. width: 355px;
  59. border: 1px solid #ebeef5;
  60. height: 180px;
  61. padding: 0 20px;
  62. border-radius: 10px;
  63. float: left;
  64. margin: 10px;
  65. }
  66. .rating-title {
  67. font-weight: bold;
  68. margin-bottom: 10px;
  69. }
  70. .aftersale-content {
  71. display: flex;
  72. align-items: center;
  73. justify-content: flex-start;
  74. width: 100%;
  75. }
  76. .aftersale-image{margin-right: 10px;}
  77. .aftersale-image img {
  78. width: 100px; /* 根据实际情况调整评价图片宽度 */
  79. height: auto;
  80. border: 1px solid #ebeef5;
  81. border-radius: 10px;
  82. }
  83. .aftersale-details p {
  84. margin: 5px 0;
  85. }
  86. .aftersale-comment{
  87. margin-top:12px !important;
  88. font-size: 12px;
  89. overflow: hidden;
  90. text-overflow: ellipsis;
  91. display: -webkit-box;
  92. -webkit-line-clamp: 2;
  93. -webkit-box-orient: vertical;
  94. }
  95. </style>