| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 | 
							- <!-- 订单详情 -->
 
- <template>
 
-   <s-layout title="发票详情" class="invoice-wrap" navbar="inner">
 
-     <view
 
-       class="invoice-heard ss-flex-col ss-row-right ss-col-center"
 
-       :style="[
 
-         {
 
-           marginTop: '-' + Number(statusBarHeight + 88) + 'rpx',
 
-           paddingTop: Number(statusBarHeight + 88) + 'rpx',
 
-         },
 
-       ]"
 
-     >
 
-       <view class="ss-flex ss-m-t-32 ss-m-b-32">
 
-         <text
 
-           class="sicon-warning-line"
 
-           v-if="state.data.status === 'waiting' || state.data.status === 'unpaid'"
 
-         ></text>
 
-         <text class="sicon-check-line" v-if="state.data.status === 'finish'"></text>
 
-         <view class="invoice-heard-title">{{ state.data.status_text }}</view>
 
-       </view>
 
-       <view class="ss-flex ss-m-b-52">
 
-         <view class="ss-m-r-20 invoice-heard-desc">预计可开发票金额:</view>
 
-         <view class="invoice-heard-price">¥{{ state.data.amount }}</view>
 
-       </view>
 
-     </view>
 
-     <view class="invoice-content ss-flex-col ss-col-center">
 
-       <view class="ss-m-t-50 ss-m-b-42 invoice-content-title">增值税电子普通发票</view>
 
-       <view class="ss-flex ss-m-b-64">
 
-         <view v-for="(item, index) in state.info" :key="item.title">
 
-           <view class="log-icon ss-flex">
 
-             <text class="sicon-circlecheck" v-if="statusNum >= index"></text>
 
-             <text class="sicon-unchecked" v-else></text>
 
-             <view
 
-               v-if="state.info.length - 1 != index"
 
-               class="line"
 
-               :class="statusNum >= index ? 'activity-color' : ''"
 
-             ></view>
 
-           </view>
 
-           <view class="log-title">{{ item.title }}</view>
 
-         </view>
 
-       </view>
 
-       <view class="invoice-content-list ss-flex ss-row-between ss-col-top">
 
-         <view class="">
 
-           <view class="ss-flex">
 
-             <view class="list-title">发票类型</view>
 
-             <view class="list-desc">{{ state.data.type_text }}</view>
 
-           </view>
 
-           <view class="ss-flex">
 
-             <view class="list-title">发票抬头</view>
 
-             <view class="list-desc">{{ state.data.name }}</view>
 
-           </view>
 
-           <view class="ss-flex" v-if="state.data.type === 'company'">
 
-             <view class="list-title">发票税号</view>
 
-             <view class="list-desc">{{ state.data.tax_no }}</view>
 
-           </view>
 
-           <view class="ss-flex" v-if="state.data.status === 'finish'">
 
-             <view class="list-title">实开金额</view>
 
-             <view class="list-desc">¥{{ state.data.invoice_amount }}</view>
 
-           </view>
 
-           <view class="ss-flex" v-if="state.data.status === 'finish'">
 
-             <view class="list-title">开票时间</view>
 
-             <view class="list-desc">{{ state.data.finish_time }}</view>
 
-           </view>
 
-           <view class="ss-flex">
 
-             <view class="list-title">申请时间</view>
 
-             <view class="list-desc">{{ state.data.create_time }}</view>
 
-           </view>
 
-         </view>
 
-         <view
 
-           class="invoice-content-img ss-flex-col ss-col-center"
 
-           v-if="state.data.status === 'finish'"
 
-         >
 
-           <su-image
 
-             class="invoice-img"
 
-             isPreview
 
-             :previewList="state.jointImage"
 
-             :current="0"
 
-             :src="sheep.$url.static('/static/img/shop/order/invoice_thumb.png')"
 
-             :height="110"
 
-             mode="scaleToFill"
 
-             v-if="state.jointImage[0].substr(-4) != '.pdf'"
 
-           ></su-image>
 
-           <!-- TODO: 发票为多个pdf时 -->
 
-           <view v-if="state.jointImage[0].substr(-4) == '.pdf'" @tap="onInvoice">
 
-             <image
 
-               :src="sheep.$url.static('/static/img/shop/order/invoice_thumb.png')"
 
-               class="invoice-img"
 
-             ></image>
 
-           </view>
 
-           <view class="invoice-img-num">共{{ state.numImage }}张</view>
 
-           <view class="invoice-img-title">点击预览发票</view>
 
-         </view>
 
-       </view>
 
-     </view>
 
-     <view class="invoice-order ss-m-t-20">
 
-       <view class="goods-box" v-for="item in state.data.order_items" :key="item.id">
 
-         <s-goods-item
 
-           :img="item.goods_image"
 
-           :title="item.goods_title"
 
-           :skuText="item.goods_sku_text"
 
-           :price="item.goods_price"
 
-           :num="item.goods_num"
 
-         />
 
-       </view>
 
-       <view class="invoice-order-list">
 
-         <view class="ss-flex">
 
-           <view class="list-title">订单状态</view>
 
-           <view class="list-desc">{{ state.data.order?.status_text }}</view>
 
-         </view>
 
-         <view class="ss-flex">
 
-           <view class="list-title">订单编号</view>
 
-           <view class="list-desc">{{ state.data.order?.order_sn }}</view>
 
-         </view>
 
-         <view class="ss-flex">
 
-           <view class="list-title">下单时间</view>
 
-           <view class="list-desc">{{ state.data.order?.create_time }}</view>
 
-         </view>
 
-       </view>
 
-     </view>
 
-   </s-layout>
 
- </template>
 
- <script setup>
 
-   import sheep from '@/sheep';
 
-   import { onLoad } from '@dcloudio/uni-app';
 
-   import { computed, reactive } from 'vue';
 
-   const statusBarHeight = sheep.$platform.device.statusBarHeight * 2;
 
-   const headerBg = sheep.$url.css('/static/img/shop/order/invoice_bg.png');
 
-   const state = reactive({
 
-     info: [
 
-       {
 
-         title: '订单提交',
 
-       },
 
-       {
 
-         title: '等待开票',
 
-       },
 
-       {
 
-         title: '开票完成',
 
-       },
 
-     ],
 
-     data: {},
 
-     jointImage: [],
 
-     numImage: 0,
 
-   });
 
-   const statusNum = computed(() => {
 
-     if (state.data.status === 'finish') {
 
-       return 2;
 
-     } else if (state.data.status === 'waiting') {
 
-       return 1;
 
-     } else {
 
-       return 0;
 
-     }
 
-   });
 
-   function onInvoice() {
 
-     // #ifdef H5
 
-     window.open(state.jointImage);
 
-     // #endif
 
-     // #ifdef MP || APP-PLUS
 
-     uni.downloadFile({
 
-       url: state.jointImage[0],
 
-       success: function (res) {
 
-         var filePath = res.tempFilePath;
 
-         uni.openDocument({
 
-           filePath: filePath,
 
-           showMenu: true,
 
-           success: function (res) {
 
-             console.log('打开文档成功');
 
-           },
 
-         });
 
-       },
 
-     });
 
-     // #endif
 
-   }
 
-   async function getInvoiceDetail(id) {
 
-     const { data } = await sheep.$api.order.invoice(id);
 
-     state.data = data;
 
-     state.data.download_urls?.forEach((i, index) => {
 
-       state.numImage = index + 1;
 
-       if (i.substr(-4) != '.pdf') {
 
-         state.jointImage.push(sheep.$url.static(i));
 
-       } else {
 
-         state.jointImage.push(sheep.$url.static(i));
 
-       }
 
-     });
 
-   }
 
-   onLoad((options) => {
 
-     getInvoiceDetail(options.invoiceId);
 
-   });
 
- </script>
 
- <style lang="scss" scoped>
 
-   .invoice-heard {
 
-     width: 100%;
 
-     box-sizing: border-box;
 
-     background: v-bind(headerBg) no-repeat,
 
-       linear-gradient(90deg, var(--ui-BG-Main), var(--ui-BG-Main-gradient));
 
-     background-size: 750rpx 100%;
 
-     .sicon-warning-line {
 
-       color: #fff;
 
-       font-size: 34rpx;
 
-     }
 
-     .sicon-check-line {
 
-       color: #fff;
 
-       font-size: 34rpx;
 
-     }
 
-     .invoice-heard-title {
 
-       font-size: 34rpx;
 
-       font-weight: 500;
 
-       color: #ffffff;
 
-       margin-left: 8rpx;
 
-       line-height: normal;
 
-     }
 
-     .invoice-heard-desc {
 
-       font-size: 24rpx;
 
-       font-weight: 500;
 
-       color: #ffffff;
 
-     }
 
-     .invoice-heard-price {
 
-       font-size: 28rpx;
 
-       font-family: OPPOSANS;
 
-       font-weight: 500;
 
-       color: #ffffff;
 
-     }
 
-   }
 
-   .invoice-content {
 
-     width: 100%;
 
-     position: relative;
 
-     z-index: 3;
 
-     background: #ffffff;
 
-     border-radius: 20rpx;
 
-     margin-top: -16rpx;
 
-     .invoice-content-title {
 
-       font-size: 30rpx;
 
-       font-weight: 500;
 
-       color: #333333;
 
-     }
 
-     .log-icon {
 
-       .sicon-unchecked {
 
-         color: #c2bec2;
 
-         font-size: 44rpx;
 
-       }
 
-       .sicon-circlecheck {
 
-         color: #e60a00;
 
-         font-size: 44rpx;
 
-       }
 
-       .line {
 
-         width: 158rpx;
 
-         height: 6rpx;
 
-         background: #f2f2f2;
 
-         border: 2rpx solid #ffffff;
 
-       }
 
-       .activity-color {
 
-         background: #e60a00;
 
-       }
 
-     }
 
-     .log-title {
 
-       font-size: 26rpx;
 
-       font-weight: 500;
 
-       color: #333333;
 
-       margin-left: -26rpx;
 
-       margin-top: 30rpx;
 
-     }
 
-     .invoice-content-list {
 
-       width: 100%;
 
-       padding: 0 46rpx 0 30rpx;
 
-       box-sizing: border-box;
 
-     }
 
-     .list-title {
 
-       font-size: 26rpx;
 
-       font-weight: 500;
 
-       color: #999999;
 
-       margin-right: 44rpx;
 
-       margin-bottom: 36rpx;
 
-     }
 
-     .list-desc {
 
-       font-size: 26rpx;
 
-       font-weight: 500;
 
-       color: #333333;
 
-       margin-bottom: 36rpx;
 
-     }
 
-     .invoice-img {
 
-       width: 200rpx;
 
-       height: 110rpx;
 
-     }
 
-     .invoice-img-num {
 
-       width: 216rpx;
 
-       height: 40rpx;
 
-       background: rgba(#000000, 0.45);
 
-       font-size: 24rpx;
 
-       font-weight: 500;
 
-       color: #ffffff;
 
-       text-align: center;
 
-       margin-top: -30rpx;
 
-       z-index: 1;
 
-     }
 
-     .invoice-img-title {
 
-       font-size: 24rpx;
 
-       font-weight: 500;
 
-       color: #999999;
 
-     }
 
-   }
 
-   .invoice-order {
 
-     width: 100%;
 
-     padding-top: 30rpx;
 
-     box-sizing: border-box;
 
-     background: #fff;
 
-     border-radius: 20rpx;
 
-   }
 
-   .goods-box {
 
-     border-bottom: 2rpx solid #dfdfdf;
 
-   }
 
-   .invoice-order-list {
 
-     padding: 40rpx 24rpx 0 24rpx;
 
-     .list-title {
 
-       font-size: 26rpx;
 
-       font-weight: 500;
 
-       color: #999999;
 
-       margin-right: 44rpx;
 
-       margin-bottom: 36rpx;
 
-     }
 
-     .list-desc {
 
-       font-size: 26rpx;
 
-       font-weight: 500;
 
-       color: #333333;
 
-       margin-bottom: 36rpx;
 
-     }
 
-   }
 
- </style>
 
 
  |