558 lines
13 KiB
Vue
558 lines
13 KiB
Vue
|
<template>
|
|||
|
<view>
|
|||
|
<navBar
|
|||
|
:navTitle="seriesName"
|
|||
|
:stickyShow="stickyShow"
|
|||
|
:color="'#000000'"
|
|||
|
:backBackGroundColor="'#699A70'"
|
|||
|
>
|
|||
|
</navBar>
|
|||
|
<view class="top-img">
|
|||
|
<image :src="collectionImg"></image>
|
|||
|
</view>
|
|||
|
|
|||
|
<view
|
|||
|
class=""
|
|||
|
style="margin: auto; width: 500rpx"
|
|||
|
v-if="physical && status === 2"
|
|||
|
>
|
|||
|
<u-button
|
|||
|
type="primary"
|
|||
|
:text="$t('apply.logistics')"
|
|||
|
class="apply"
|
|||
|
@click="apply"
|
|||
|
></u-button>
|
|||
|
</view>
|
|||
|
<view class="info-box">
|
|||
|
<view class="title">{{ $t("logistics.info") }}</view>
|
|||
|
<view class="address-box">
|
|||
|
<view class="item">
|
|||
|
<text class="label">{{ $t("telephone") }}</text>
|
|||
|
<text class="value" @click="goPhone">(852) 5491 1547</text>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<view class="address-box" v-if="status > 3">
|
|||
|
<view class="item bm">
|
|||
|
<text class="label">{{ $t("consignee.name") }}</text>
|
|||
|
<text class="value">{{ express.name }}</text>
|
|||
|
</view>
|
|||
|
<view class="item bm">
|
|||
|
<text class="label">{{ $t("consignee.address") }}</text>
|
|||
|
<text class="value">{{ express.address }}</text>
|
|||
|
</view>
|
|||
|
<view class="item">
|
|||
|
<text class="label">{{ $t("consignee.phone") }}</text>
|
|||
|
<text class="value">{{ express.telNum }}</text>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<view class="info-box">
|
|||
|
<view class="title">{{ $t("realHashTitle") }}</view>
|
|||
|
<view class="box">
|
|||
|
<view class="item">
|
|||
|
<text class="label">{{ $t("realHash") }}</text>
|
|||
|
<text class="value">{{ realHash }}</text>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
|
|||
|
<view class="info-box">
|
|||
|
<view class="title">{{ $t("release.info") }}</view>
|
|||
|
<view class="box">
|
|||
|
<view class="item">
|
|||
|
<text class="label">{{ $t("series.issuer") }}</text>
|
|||
|
<text class="value">{{ detail.publisher || "-" }}</text>
|
|||
|
</view>
|
|||
|
<view class="item">
|
|||
|
<text class="label">{{ $t("release.time") }}</text>
|
|||
|
<text class="value">{{ detail.published_time || "-" }}</text>
|
|||
|
</view>
|
|||
|
<view class="item">
|
|||
|
<text class="label">{{ $t("brand.side") }}</text>
|
|||
|
<text class="value">{{ detail.brand_name || "-" }}</text>
|
|||
|
</view>
|
|||
|
<view class="item">
|
|||
|
<text class="label">{{ $t("series.hash") }}</text>
|
|||
|
<text class="value">{{ detail.brand_hash || "-" }}</text>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="info-box">
|
|||
|
<view class="title">{{ $t("circulation.info") }}</view>
|
|||
|
<view class="detail">
|
|||
|
<view class="item" v-for="(item, index) in flows" :key="index">
|
|||
|
<view class="left">
|
|||
|
{{ item.createdAt }}
|
|||
|
<!-- <view class="" style="font-size: 10rpx;">
|
|||
|
星期二 下午 5:07
|
|||
|
</view> -->
|
|||
|
</view>
|
|||
|
<view class="right">
|
|||
|
<view class="cricle2" v-if="item.status === 1"></view>
|
|||
|
<view class="cricle" v-else></view>
|
|||
|
<view class="item">
|
|||
|
<text class="label">{{ $t("possessor") }}</text>
|
|||
|
<text class="value">{{ item.holdName || "-" }}</text>
|
|||
|
</view>
|
|||
|
<view class="item">
|
|||
|
<text class="label">{{ $t("collection.status") }}</text>
|
|||
|
<text class="value">{{
|
|||
|
item.status == 1 ? $t("in.library") : $t("been.applied")
|
|||
|
}}</text>
|
|||
|
</view>
|
|||
|
<view class="item">
|
|||
|
<text class="label">{{ $t("circulation.type") }}</text>
|
|||
|
<text class="value">{{
|
|||
|
item.type == 1 ? $t("on.line") : "-"
|
|||
|
}}</text>
|
|||
|
</view>
|
|||
|
<view class="item">
|
|||
|
<text class="label">{{ $t("circulation.time") }}</text>
|
|||
|
<text class="value">{{ item.createdAt || "-" }}</text>
|
|||
|
</view>
|
|||
|
<view class="item" v-if="item.flowHash">
|
|||
|
<text class="label">{{ $t("transaction.hash") }}</text>
|
|||
|
<text class="value" style="font-size: 24rpx">{{
|
|||
|
item.flowHash || "-"
|
|||
|
}}</text>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="" style="text-align: center; margin-top: 30rpx">
|
|||
|
<image src="@/static/image/home/fontree.png" mode="" class="logo"></image>
|
|||
|
</view>
|
|||
|
<u-popup
|
|||
|
:show="showApply"
|
|||
|
mode="center"
|
|||
|
@close="closeApply"
|
|||
|
bgColor="transparent"
|
|||
|
>
|
|||
|
<view class="popup-top"> *{{ $t("apply.tips") }} </view>
|
|||
|
<view class="popup-box">
|
|||
|
<view class="title">{{ $t("input.address") }}</view>
|
|||
|
<view class="">
|
|||
|
<view class="input-box">
|
|||
|
<view class="label">{{ $t("consignee.name") }}</view>
|
|||
|
<view class="input">
|
|||
|
<u--input
|
|||
|
border="none"
|
|||
|
shape="circle"
|
|||
|
v-model="name"
|
|||
|
:placeholder="$t('input.pla')"
|
|||
|
></u--input>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="input-box">
|
|||
|
<view class="label">{{ $t("consignee.address") }}</view>
|
|||
|
<view class="input">
|
|||
|
<u--textarea
|
|||
|
v-model="address"
|
|||
|
border="none"
|
|||
|
:placeholder="$t('input.pla')"
|
|||
|
autoHeight
|
|||
|
></u--textarea>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="input-box">
|
|||
|
<view class="label">{{ $t("consignee.phone") }}</view>
|
|||
|
<view class="input">
|
|||
|
<u--input
|
|||
|
border="none"
|
|||
|
shape="circle"
|
|||
|
v-model="telNum"
|
|||
|
:placeholder="$t('input.pla')"
|
|||
|
></u--input>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
</view>
|
|||
|
<view class="btns">
|
|||
|
<u-button
|
|||
|
:text="$t('navbar.back')"
|
|||
|
color="#EDC466"
|
|||
|
@click="closeApply"
|
|||
|
style="width: 260rpx; height: 56rpx; border-radius: 40rpx"
|
|||
|
></u-button>
|
|||
|
<u-button
|
|||
|
:text="$t('apply.btn')"
|
|||
|
color="#699A70"
|
|||
|
@click="applyCom"
|
|||
|
style="width: 260rpx; height: 56rpx; border-radius: 40rpx"
|
|||
|
></u-button>
|
|||
|
</view>
|
|||
|
</u-popup>
|
|||
|
</view>
|
|||
|
</template>
|
|||
|
|
|||
|
<script>
|
|||
|
export default {
|
|||
|
data() {
|
|||
|
return {
|
|||
|
stickyShow: false,
|
|||
|
showApply: false,
|
|||
|
address: "",
|
|||
|
name: "",
|
|||
|
telNum: "",
|
|||
|
CollectionsUID: "",
|
|||
|
express: {},
|
|||
|
flows: [],
|
|||
|
detail: {},
|
|||
|
seriesName: "",
|
|||
|
collectionImg: "",
|
|||
|
ID: "",
|
|||
|
status: "",
|
|||
|
realHash: "",
|
|||
|
physical: "",
|
|||
|
//订单状态(1-待支付 2-成功 3-失败,4-已申请快递,5后台批准快递 6-退款)
|
|||
|
};
|
|||
|
},
|
|||
|
onPageScroll(e) {
|
|||
|
this.stickyShow = e.scrollTop > 5 ? true : false;
|
|||
|
},
|
|||
|
onShow() {
|
|||
|
console.log(11111111, this.flows);
|
|||
|
},
|
|||
|
methods: {
|
|||
|
apply() {
|
|||
|
this.showApply = true;
|
|||
|
},
|
|||
|
closeApply() {
|
|||
|
this.showApply = false;
|
|||
|
this.name = "";
|
|||
|
this.address = "";
|
|||
|
this.telNum = "";
|
|||
|
},
|
|||
|
async applyCom() {
|
|||
|
let name = this.$common.vefEmpty(
|
|||
|
this.name,
|
|||
|
this.$t("error.consignee.name")
|
|||
|
);
|
|||
|
let address = this.$common.vefEmpty(
|
|||
|
this.address,
|
|||
|
this.$t("error.consignee.address")
|
|||
|
);
|
|||
|
let telNum = this.$common.vefEmpty(
|
|||
|
this.telNum,
|
|||
|
this.$t("error.consignee.phone")
|
|||
|
);
|
|||
|
if (!name || !address || !telNum) return;
|
|||
|
let data = {
|
|||
|
ID: Number(this.ID),
|
|||
|
express: {
|
|||
|
address: this.address,
|
|||
|
name: this.name,
|
|||
|
telNum: this.telNum,
|
|||
|
},
|
|||
|
};
|
|||
|
let res = await this.$api.mine.paymentApproval(data);
|
|||
|
if (res.status === 0) {
|
|||
|
uni.$u.toast(this.$t("apply.succes"));
|
|||
|
this.status = 4;
|
|||
|
this.express = res.data.express;
|
|||
|
this.flows = res.data.flows;
|
|||
|
} else {
|
|||
|
uni.$u.toast(this.$t("apply.error"));
|
|||
|
}
|
|||
|
this.showApply = false;
|
|||
|
this.name = "";
|
|||
|
this.address = "";
|
|||
|
this.telNum = "";
|
|||
|
},
|
|||
|
goPhone(val) {
|
|||
|
// 拨打电话
|
|||
|
uni.makePhoneCall({
|
|||
|
phoneNumber: val,
|
|||
|
});
|
|||
|
},
|
|||
|
async getDetail() {
|
|||
|
let data = {
|
|||
|
CollectionsUID: this.CollectionsUID,
|
|||
|
};
|
|||
|
let res = await this.$api.mine.certDetail(data);
|
|||
|
if (res.status === 0) {
|
|||
|
this.detail = res.data;
|
|||
|
} else {
|
|||
|
uni.$u.toast(this.$t("load.failed"));
|
|||
|
}
|
|||
|
},
|
|||
|
},
|
|||
|
onLoad(option) {
|
|||
|
const item = JSON.parse(decodeURIComponent(option.data));
|
|||
|
this.CollectionsUID = item.CollectionsUID;
|
|||
|
this.physical = item.physical;
|
|||
|
this.ID = item.payDetail.ID;
|
|||
|
this.express = item.payDetail.express;
|
|||
|
this.flows = item.payDetail.flows;
|
|||
|
this.status = item.payDetail.status;
|
|||
|
this.realHash = item.payDetail.realHash;
|
|||
|
this.collectionImg = item.collectionImg;
|
|||
|
console.log(this.collectionImg);
|
|||
|
this.seriesName = item.seriesName;
|
|||
|
this.getDetail();
|
|||
|
},
|
|||
|
};
|
|||
|
</script>
|
|||
|
|
|||
|
<style lang="scss">
|
|||
|
page {
|
|||
|
background: url("@/static/image/home/detail-kind-bg.png") no-repeat;
|
|||
|
// background-size: 100% 100%;
|
|||
|
// background-attachment:fixed;
|
|||
|
// height: 100vh;
|
|||
|
}
|
|||
|
|
|||
|
.top-img {
|
|||
|
background-repeat: no-repeat;
|
|||
|
background-size: contain;
|
|||
|
width: 660rpx;
|
|||
|
height: 660rpx;
|
|||
|
border-radius: 8rpx;
|
|||
|
margin: 44rpx 44rpx 32rpx 46rpx;
|
|||
|
position: relative;
|
|||
|
|
|||
|
image {
|
|||
|
width: 100%;
|
|||
|
height: 100%;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.apply {
|
|||
|
width: 500rpx;
|
|||
|
height: 60rpx;
|
|||
|
border-radius: 40rpx !important;
|
|||
|
// background: #558BF2;
|
|||
|
background: #699a70;
|
|||
|
border-color: #699a70;
|
|||
|
margin-bottom: 30rpx;
|
|||
|
}
|
|||
|
|
|||
|
.info-box {
|
|||
|
margin: 0 44rpx 0 46rpx;
|
|||
|
margin-bottom: 46rpx;
|
|||
|
border-radius: 8rpx;
|
|||
|
// padding: 38rpx 32rpx;
|
|||
|
position: relative;
|
|||
|
|
|||
|
.title {
|
|||
|
text-align: center;
|
|||
|
font-size: 32rpx;
|
|||
|
margin-bottom: 30rpx;
|
|||
|
color: #434343;
|
|||
|
}
|
|||
|
|
|||
|
.box {
|
|||
|
// background: rgba(255,255,255,0.3);
|
|||
|
background: #ffffff;
|
|||
|
padding: 24rpx 32rpx;
|
|||
|
border-radius: 8rpx;
|
|||
|
|
|||
|
.item {
|
|||
|
display: flex;
|
|||
|
margin: 32rpx 0;
|
|||
|
font-size: 20rpx;
|
|||
|
|
|||
|
.label {
|
|||
|
color: #434343;
|
|||
|
padding-right: 40rpx;
|
|||
|
width: 130rpx;
|
|||
|
}
|
|||
|
|
|||
|
.value {
|
|||
|
color: #878787;
|
|||
|
width: 450rpx;
|
|||
|
display: -webkit-box;
|
|||
|
-webkit-box-orient: vertical;
|
|||
|
-webkit-line-clamp: 3;
|
|||
|
overflow: hidden;
|
|||
|
word-break: break-all;
|
|||
|
white-space: normal;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.address-box {
|
|||
|
// background: rgba(255,255,255,0.3);
|
|||
|
background: #ffffff;
|
|||
|
padding: 24rpx 32rpx;
|
|||
|
margin-top: 30rpx;
|
|||
|
border-radius: 8rpx;
|
|||
|
|
|||
|
.bm {
|
|||
|
border-bottom: 1px solid #dedede;
|
|||
|
padding-bottom: 20rpx;
|
|||
|
}
|
|||
|
|
|||
|
.item {
|
|||
|
display: flex;
|
|||
|
justify-content: space-between;
|
|||
|
align-items: flex-start;
|
|||
|
margin: 15rpx 0;
|
|||
|
font-size: 20rpx;
|
|||
|
|
|||
|
.label {
|
|||
|
padding-right: 40rpx;
|
|||
|
width: 150rpx;
|
|||
|
font-size: 28rpx;
|
|||
|
color: #434343;
|
|||
|
}
|
|||
|
|
|||
|
.value {
|
|||
|
text-align: right;
|
|||
|
width: 400rpx;
|
|||
|
display: -webkit-box;
|
|||
|
-webkit-box-orient: vertical;
|
|||
|
-webkit-line-clamp: 3;
|
|||
|
overflow: hidden;
|
|||
|
word-break: break-all;
|
|||
|
white-space: normal;
|
|||
|
color: #878787;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.detail {
|
|||
|
// background: rgba(255,255,255,0.3);
|
|||
|
padding: 24rpx 32rpx;
|
|||
|
background: #ffffff;
|
|||
|
margin-top: 30rpx;
|
|||
|
|
|||
|
.item {
|
|||
|
display: flex;
|
|||
|
}
|
|||
|
|
|||
|
.left {
|
|||
|
font-size: 16rpx;
|
|||
|
padding-right: 30rpx;
|
|||
|
color: #434343;
|
|||
|
}
|
|||
|
|
|||
|
.right {
|
|||
|
border-left: 1rpx solid #464646;
|
|||
|
padding: 0 30rpx;
|
|||
|
position: relative;
|
|||
|
|
|||
|
.item {
|
|||
|
margin-bottom: 30rpx;
|
|||
|
}
|
|||
|
|
|||
|
.label {
|
|||
|
color: #434343;
|
|||
|
padding-right: 20rpx;
|
|||
|
width: 130rpx;
|
|||
|
}
|
|||
|
|
|||
|
.value {
|
|||
|
color: #434343;
|
|||
|
width: 260rpx;
|
|||
|
display: -webkit-box;
|
|||
|
-webkit-box-orient: vertical;
|
|||
|
-webkit-line-clamp: 3;
|
|||
|
overflow: hidden;
|
|||
|
word-break: break-all;
|
|||
|
white-space: normal;
|
|||
|
}
|
|||
|
|
|||
|
.cricle {
|
|||
|
width: 22rpx;
|
|||
|
height: 22rpx;
|
|||
|
border-radius: 50%;
|
|||
|
position: absolute;
|
|||
|
top: 0;
|
|||
|
left: -14rpx;
|
|||
|
background: #e4e4e4;
|
|||
|
}
|
|||
|
|
|||
|
.cricle2 {
|
|||
|
width: 21rpx;
|
|||
|
height: 21rpx;
|
|||
|
border-radius: 50%;
|
|||
|
position: absolute;
|
|||
|
top: 0;
|
|||
|
left: -13rpx;
|
|||
|
background: #699a70;
|
|||
|
border: 1px solid #699a70;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.logo {
|
|||
|
margin-top: 10rpx;
|
|||
|
width: 202rpx;
|
|||
|
height: 56rpx;
|
|||
|
margin-bottom: 40rpx;
|
|||
|
}
|
|||
|
|
|||
|
.popup-box {
|
|||
|
background: rgba(0, 0, 0, 0.8);
|
|||
|
width: 582rpx;
|
|||
|
overflow: hidden;
|
|||
|
padding: 30rpx 0;
|
|||
|
|
|||
|
.title {
|
|||
|
font-size: 40rpx;
|
|||
|
text-align: center;
|
|||
|
margin-top: 30rpx;
|
|||
|
margin-bottom: 100rpx;
|
|||
|
}
|
|||
|
|
|||
|
.input-box {
|
|||
|
display: flex;
|
|||
|
justify-content: space-between;
|
|||
|
// align-items: center;
|
|||
|
padding: 0 34rpx 34rpx 38rpx;
|
|||
|
|
|||
|
.label {
|
|||
|
font-size: 28rpx;
|
|||
|
}
|
|||
|
|
|||
|
.input {
|
|||
|
width: 340rpx;
|
|||
|
display: flex;
|
|||
|
align-items: center;
|
|||
|
|
|||
|
/deep/ .input-placeholder {
|
|||
|
font-size: 24rpx;
|
|||
|
text-align: right;
|
|||
|
}
|
|||
|
|
|||
|
/deep/ .uni-input-input {
|
|||
|
font-size: 24rpx;
|
|||
|
color: #fff;
|
|||
|
text-align: right;
|
|||
|
}
|
|||
|
|
|||
|
/deep/ .u-textarea {
|
|||
|
background: transparent;
|
|||
|
width: 340rpx;
|
|||
|
padding: 0;
|
|||
|
text-align: right;
|
|||
|
}
|
|||
|
|
|||
|
/deep/ .u-textarea__field {
|
|||
|
color: #ffffff;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
.btns {
|
|||
|
display: flex;
|
|||
|
justify-content: space-around;
|
|||
|
margin-top: 30rpx;
|
|||
|
}
|
|||
|
|
|||
|
.popup-top {
|
|||
|
width: 582rpx;
|
|||
|
padding: 22rpx 0;
|
|||
|
background: rgba(255, 255, 255, 0.3);
|
|||
|
font-size: 32rpx;
|
|||
|
text-align: center;
|
|||
|
margin-bottom: 30rpx;
|
|||
|
}
|
|||
|
</style>
|