<script setup> // import { ref, reactive, computed, } from 'vue'; import { onLoad, onUnload, } from '@dcloudio/uni-app'; // 工具库 import util from '@/common/js/util.js' // api import api from '@/api/index.js' // 产品列表 import productList from '@/components/shop/productList/productList.vue'; // 地址 import JyCommodityAddress from '@/components/public/jy-commodity-address' // 订单详情 const detail = reactive({ createTime: '', coutDownTime: '', // 订单商品列表信息 orderDetailList: [], // 物流信息 logistics: {}, }) // 物流信息 const logistics = computed(() => detail.logistics.info ? detail.logistics.info[0] : { logisticsTraceDetailList: [] }) // 订单id const orderId = ref('') // 查看更多订单信息 const showMore = ref(false) // 物流状态 const flow = computed(() => { return [] }) // 物流状态 const formatFlow = computed(() => { let result = [...logistics.value.logisticsTraceDetailList] if (!showMore.value) result.length = Math.min(logistics.value.logisticsTraceDetailList.length, 2) return result }) onLoad((option) => { if (option.orderId) orderId.value = option.orderId // 获取订单详情 getDetail() }) // 获取订单详情 function getDetail() { api.shop.getOrderDetail({ query: { id: orderId.value } }).then(res => { if (res.code == 200) { let result = res.data result.status = Number(result.status) Object.assign(detail, {}, result) return } util.alert({ content: res.msg, showCancel: false, }) }) } /** * 文本复制 * @param {Object} text */ function handleCopy(text) { util.copyText(text) } </script> <template> <view class="app"> <!-- 地址详情 --> <view class="bfff mtb20 p25"> <!-- 地址 --> <JyCommodityAddress v-model:address="detail.address" :shopEdit="false" /> </view> <!-- 快递公司 --> <view class="container rows ptb20 f28"> <image class="wh70" src="/static/shop-logistics.png" mode="aspectFit" /> <view class="value f1 mlr20">快递公司:{{logistics.logisticsCompanyName}}</view> <view class="btn sm closeHollow plr20" @click="handleCopy(logistics.logisticsCompanyName)">复制</view> </view> <!-- 订单编号 --> <view class="container rows ptb20 f28"> <image class="wh70" src="/static/shop-document.png" mode="aspectFit" /> <view class="value f1 mlr20">订单编号:{{detail.logistics.orderNo}}</view> <view class="btn sm closeHollow plr20" @click="handleCopy(detail.logistics.orderNo)">复制</view> </view> <!-- 订单流程 --> <view class="container"> <view class="flow mtb30"> <view class="item df" v-for="(item,index) in formatFlow" :key="index"> <view class="rank ver"> <view class="line first"></view> <view class="circle cir"></view> <view class="line f1"></view> </view> <view class="content f1 ml20 pb20"> <view class="f30">{{item.desc}}</view> <view class="mt10 f28">2024-03-05 13:24:00</view> </view> </view> </view> <view class="mtb30 fmid c999" @click="showMore = !showMore"> <template v-if="!showMore"> <text>查看更多订单信息</text> <uni-icons type="bottom" color="" /> </template> <template v-else> <text>收起</text> <uni-icons type="top" color="" /> </template> </view> </view> <!-- 推荐产品列表 --> <view class="productList mtb30 mlr30"> <productList choicenessTitle="true" /> </view> </view> </template> <style lang="scss" scoped> // .container { overflow: hidden; margin: 20rpx 0; padding-left: 20rpx; padding-right: 20rpx; color: #333; background-color: #fff; } // 流程 .flow { .item { color: #999; &:nth-child(1) { color: #37B111; .circle { background-color: #37B111; } .line.first { opacity: 0; } } // &:nth-last-child(1) { .line:nth-last-child(1) { opacity: 0; } } // .circle { width: 20rpx; height: 20rpx; background-color: #ccc; } // .line { border-left: 2rpx solid #ccc; // &.first { height: 15rpx; } } } } </style>