detail.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. <template>
  2. <view class="page">
  3. <!-- 订单状态 -->
  4. <OrderStatus :type="orderInfo.status" :data="{order_details:goodsList,...orderInfo}"></OrderStatus>
  5. <!-- 地址 -->
  6. <view class="address">
  7. <AddressCard :data="addressInfo" :isGoSelect="false"></AddressCard>
  8. </view>
  9. <!-- 商品列表 -->
  10. <view class="goods">
  11. <TitleOperate :title="'共' + goodsNums + '件商品'" titleSize="30rpx"></TitleOperate>
  12. <view class="list">
  13. <view class="" v-for="(goods, index) in goodsList" :key="index">
  14. <!-- index != goodsList.length - 1 -->
  15. <orderDetailGoodsCard :data="goods" :showBorderBottom="false"></orderDetailGoodsCard>
  16. <!-- {{orderInfo.status}},,,{{goods.sub_status}} -->
  17. <!-- String(orderInfo.status)=='15'&& -->
  18. <view class="refundOpar" v-if="String(goods.sub_status)!=='10'">
  19. <text class="desc">该商品存在售后</text>
  20. <u-button shape="circle" size="small" type="default" @click="afterSalesDetail(goods.order_refund_id)">前往查看</u-button>
  21. </view>
  22. </view>
  23. </view>
  24. </view>
  25. <!-- 订单信息 -->
  26. <view class="order-info">
  27. <TitleOperate title="订单信息" titleSize="30rpx"></TitleOperate>
  28. <view class="inner">
  29. <LineInfoOperate :orderInfo="orderInfo" :addressInfo="addressInfo"></LineInfoOperate>
  30. </view>
  31. </view>
  32. <!-- 操作按钮 -->
  33. <OrderOperate :data="{order_details:goodsList,...orderInfo}" @refresh="refreshPage"></OrderOperate>
  34. </view>
  35. </template>
  36. <script>
  37. import OrderStatus from '@/pages-mall/components/order/order-status.vue';
  38. import AddressCard from '@/pages/mine/components/address-card.vue';
  39. import TitleOperate from '@/components/title-operate.vue';
  40. import orderDetailGoodsCard from '@/pages-mall/components/order/orderdetail-goods-card.vue';
  41. import LineInfoOperate from '@/pages-mall/components/line-info-operate.vue';
  42. import OrderOperate from '@/pages-mall/components/order/order-operate.vue';
  43. // 组件
  44. import { orderOperate } from '@/pages-mall/mixins/order-operate.js';
  45. export default {
  46. components: {
  47. OrderStatus,
  48. AddressCard,
  49. orderDetailGoodsCard,
  50. TitleOperate,
  51. LineInfoOperate,
  52. OrderOperate
  53. },
  54. mixins: [orderOperate],
  55. data() {
  56. return {
  57. orderId:null,
  58. // 订单信息
  59. orderInfo: {},
  60. // 地址信息
  61. addressInfo: {},
  62. // 商品列表
  63. goodsList: [],
  64. goodsNums:1,
  65. // 订单信息配置项
  66. // orderInfoOps: {},
  67. };
  68. },
  69. onLoad(ops) {
  70. if(!ops.order_id){
  71. uni.navigateBack();
  72. return;
  73. }
  74. this.orderId = ops.order_id;
  75. this.getOrderDetail();
  76. },
  77. methods:{
  78. refreshPage(){
  79. this.getOrderDetail();
  80. },
  81. getOrderDetail(){
  82. this.$u.api.getOrderDetailAjax(this.orderId).then(({code,data})=>{
  83. if(code==1){
  84. const addressBaseInfo = data.address_info;
  85. this.addressInfo = {
  86. ...addressBaseInfo,
  87. address: addressBaseInfo.province+addressBaseInfo.city+addressBaseInfo.area,
  88. detail_address: addressBaseInfo.province+addressBaseInfo.city+addressBaseInfo.area+addressBaseInfo.street
  89. };
  90. this.goodsList = data.order_goods_info;
  91. console.log('this.goodsList>>>',this.goodsList.length,this.goodsList);
  92. this.getGoodsNums();
  93. this.orderInfo = data.order_info;
  94. }
  95. }).catch()
  96. },
  97. getGoodsNums(){
  98. let num = 0;
  99. this.goodsList.forEach(e=>num+=Number(e.goods_nums));
  100. this.goodsNums = num;
  101. },
  102. },
  103. };
  104. </script>
  105. <style lang="scss" scoped>
  106. .page {
  107. padding-bottom: 120rpx;
  108. }
  109. .address {
  110. margin-bottom: 24rpx;
  111. padding: 0 30rpx;
  112. background-color: $app-theme-bg-color;
  113. }
  114. .goods,
  115. .order-info {
  116. margin-bottom: 24rpx;
  117. background-color: $app-theme-bg-color;
  118. .list,
  119. .inner {
  120. padding: 0 30rpx;
  121. }
  122. }
  123. .refundOpar{
  124. display: flex;
  125. align-items: center;
  126. justify-content: flex-end;
  127. color: red;
  128. .desc{
  129. margin-right: 20rpx;
  130. }
  131. }
  132. </style>