<template> <view class="invoice"> <view class="invoice-hd" v-if="invoiceDetails"> <view class="a"> <view class="l">开票状态</view> <view class="r">{{invoiceDetails.status==0?'开票中':'已开票'}}</view> </view> <view class="a"> <view class="l">预计开票时间</view> <view class="r">{{invoiceDetails.created_at}}</view> </view> <view class="a"> <view class="l">订单编号</view> <view class="r">{{invoiceDetails.order.order_no}} <text @click="handleCopy(invoiceDetails.order.order_no)">复制</text></view> </view> </view> <view class="invoice-info" v-if="invoiceDetails"> <view class="a"> 发票明细<text @click="toDetail(invoiceDetails.invoice)">修改发票信息</text> </view> <view class="b"> <view class="item"> <view class="l">发票类型:</view> <view class="r">{{invoiceDetails.invoice.type==1?'普通增值税发票':'普通发票'}}</view> </view> <view class="item"> <view class="l">抬头类型:</view> <view class="r">{{invoiceDetails.invoice.source==1?'个人':'单位'}}</view> </view> <view class="item"> <view class="l">抬头名称:</view> <view class="r">{{invoiceDetails.invoice.header}}</view> </view> <view class="item"> <view class="l">申请时间:</view> <view class="r">{{invoiceDetails.invoice.duty_no}}</view> </view> </view> </view> <view class="invoice-fd"> <button open-type="contact">联系商家</button> </view> </view> </template> <script> import * as InvoiceApi from '@/api/invoice' export default { data() { return { invoiceDetails: '' }; }, onLoad(op) { this.invoiceId = op.id }, onShow() { this.getInvoicingDitails() }, methods: { // 复制指定内容 handleCopy(value) { const app = this uni.setClipboardData({ data: value, success: () => app.$toast('复制成功'), fail: ({ errMsg }) => app.$toast('复制失败 ' + errMsg) }) }, toDetail(item) { uni.navigateTo({ url: "/pages/invoice/edit?detail=" + JSON.stringify(item) + '&source=' + 1 }) }, timestampToYds(timestamp) { //时间戳为10位需*1000,为13位不需乘1000 let times = timestamp.length == 10 ? times * 1000 : timestamp; var date = new Date(times); let Y = date.getFullYear(), M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1), D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()), h = (date.getHours() < 10 ? '0' + (date.getHours()) : date.getHours()), m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()), s = (date.getSeconds() < 10 ? '0' + (date.getSeconds()) : date.getSeconds()); return Y + '-' + M + '-' + D + ' ' + h + ':' + m + ':' + s }, getInvoicingDitails(canReset = false) { let app = this; InvoiceApi.invoicingDetail({ id: app.invoiceId }) .then(result => { result.data.data.created_at = app.timestampToYds(result.data.data.created_at) app.invoiceDetails = result.data.data }) // 相应全局事件订阅: 刷新上级页面数据 canReset && uni.$emit('syncRefresh', true, true) }, } } </script> <style lang="scss" scoped> .invoice { &-hd { padding: 0 20rpx 0 40rpx; overflow: hidden; background-color: #fff; .a { padding: 20rpx 0; display: block; border-top: 1px solid #F3F3F3; overflow: hidden; display: flex; align-items: center; font-size: 32rpx; font-weight: 400; color: #262626; &:first-child { border-top-cplor: #fff; } .l { width: 230rpx; font-size: 32rpx; font-weight: 400; color: #656565; } } } &-goods { padding: 0 20rpx 0 40rpx; overflow: hidden; background-color: #fff; margin-top: 20rpx; padding: 30rpx; box-sizing: border-box; display: flex; align-items: center; .a { width: 145rpx; height: 135rpx; margin-right: 20rpx; image { width: 100%; height: 100%; border-radius: 10rpx; } } .b { flex: 1; overflow: hidden; .l { white-space: nowrap; text-overflow: ellipsis; font-size: 32rpx; font-family: PingFang SC, PingFang SC; font-weight: 500; color: #262626; overflow: hidden; } .r { font-size: 30rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #838383; display: flex; align-items: center; justify-content: space-between; text { display: block; width: 104rpx; line-height: 60rpx; background: #FFFFFF; border-radius: 4rpx; text-align: center; border: 1px solid #CACACA; font-size: 28rpx; color: #555; } } } } &-info { margin-top: 20rpx; background-color: #fff; overflow: hidden; .a { display: flex; align-items: center; justify-content: space-between; padding: 20rpx 30rpx 20rpx 60rpx; box-sizing: border-box; border-bottom: 1px solid #F3F3F3; font-size: 32rpx; font-weight: 500; color: #262626; text { color: #006AFF; padding-right: 40rpx; position: relative; &::after { content: ""; width: 16rpx; height: 16rpx; border-top: 1px solid #006AFF; border-left: 1px solid #006AFF; position: absolute; right: 0; top: 14rpx; z-index: 1; transform: rotate(135deg); } } } .b { box-sizing: border-box; overflow: hidden; .item { padding: 30rpx 60rpx; display: flex; align-items: center; justify-content: space-between; box-sizing: border-box; border-top: 1px solid #F3F3F3; font-size: 32rpx; font-weight: 500; color: #262626; overflow: hidden; &:first-child { border-top-color: #fff; } .l { width: 200rpx; font-size: 32rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #656565; } .r { flex: 1; font-size: 32rpx; font-family: PingFang SC, PingFang SC; font-weight: 400; color: #262626; } } } } &-fd { text-align: center; overflow: hidden; margin-top: 40rpx; button { background-color: transparent; border: 0; font-size: 32rpx; font-weight: 400; color: #006AFF; &::after { content: ""; border: 0; } } } } </style>