鸿宇研学生前端代码
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

170 lines
3.6 KiB

  1. <template>
  2. <view>
  3. <view class="card">
  4. <view class="flex card-header" style="justify-content: space-between;">
  5. <view>订单详情</view>
  6. <view :class="['tag', `tag-${data.status}`]">
  7. {{ statusDesc }}
  8. </view>
  9. </view>
  10. <view class="flex member" v-for="item in data.orderPersonList" :key="item.id">
  11. <view class="info">
  12. <view class="flex info-top">
  13. <view>{{ item.name }}</view>
  14. <view>{{ item.period || '' }}</view>
  15. <view class="light">{{ item.periodDesc || '' }}</view>
  16. </view>
  17. <view class="info-bottom">{{ item.cerNo }}</view>
  18. </view>
  19. <view class="flex price">¥<view class="highlight">{{ item.price || '-' }}</view></view>
  20. </view>
  21. <view class="row">
  22. <view class="row-label">总价格</view>
  23. <view class="row-content">
  24. <view class="flex total-price">
  25. <view>¥</view>
  26. <view class="highlight">{{ data.payAmount }}</view>
  27. <view class="light" v-if="data.discount">
  28. {{ `优惠(${data.discount}` }}
  29. </view>
  30. </view>
  31. </view>
  32. </view>
  33. </view>
  34. <view class="card">
  35. <view class="card-header">联系人信息</view>
  36. <view class="row">
  37. <view class="row-label">真实姓名</view>
  38. <view class="row-content">{{ data.name }}</view>
  39. </view>
  40. <view class="row">
  41. <view class="row-label">手机号码</view>
  42. <view class="row-content">{{ data.phone }}</view>
  43. </view>
  44. </view>
  45. <view class="card order">
  46. <view class="card-header">订单信息</view>
  47. <view class="row">
  48. <view class="row-label">订单编号</view>
  49. <view class="row-content">{{ data.id }}</view>
  50. </view>
  51. <view class="row">
  52. <view class="row-label">下单时间</view>
  53. <view class="row-content">{{ data.createTime }}</view>
  54. </view>
  55. </view>
  56. </view>
  57. </template>
  58. <script>
  59. const ORDER_STATUS_AND_DESC_MAPPING = {
  60. 0: '待支付',
  61. 1: '已支付',
  62. 2: '已完成',
  63. }
  64. export default {
  65. props: {
  66. data: {
  67. type: Object,
  68. default() {
  69. return {}
  70. }
  71. },
  72. },
  73. computed: {
  74. statusDesc() {
  75. const { status } = this.data
  76. return ORDER_STATUS_AND_DESC_MAPPING[status]
  77. },
  78. },
  79. methods: {
  80. },
  81. }
  82. </script>
  83. <style scoped lang="scss">
  84. @import '../styles/style.scss';
  85. @import '../styles/tag.scss';
  86. .member {
  87. margin-top: 16rpx;
  88. justify-content: space-between;
  89. padding: 24rpx;
  90. background: #F9F9F9;
  91. border-radius: 24rpx;
  92. .info {
  93. &-top {
  94. justify-content: space-between;
  95. column-gap: 24rpx;
  96. font-size: 32rpx;
  97. color: #181818;
  98. .light {
  99. font-size: 24rpx;
  100. color: #8B8B8B;
  101. }
  102. }
  103. &-bottom {
  104. font-size: 28rpx;
  105. color: #9B9B9B;
  106. }
  107. }
  108. .price {
  109. column-gap: 4rpx;
  110. font-size: 24rpx;
  111. font-weight: 500;
  112. color: #FF4800;
  113. .highlight {
  114. font-size: 32rpx;
  115. }
  116. }
  117. }
  118. .row {
  119. margin-top: 16rpx;
  120. display: flex;
  121. align-items: center;
  122. justify-content: space-between;
  123. &-label {
  124. font-size: 26rpx;
  125. color: #8B8B8B;
  126. }
  127. &-content {
  128. font-size: 28rpx;
  129. color: #393939;
  130. }
  131. }
  132. .order {
  133. .row {
  134. margin-top: 32rpx;
  135. }
  136. }
  137. .total-price {
  138. column-gap: 8rpx;
  139. font-size: 24rpx;
  140. font-weight: 500;
  141. color: #FF4800;
  142. .highlight {
  143. font-size: 32rpx;
  144. }
  145. .light {
  146. font-size: 22rpx;
  147. font-weight: 400;
  148. }
  149. }
  150. </style>