remember-word/pages/mine/cert/cert.vue
2024-04-30 18:52:30 +08:00

558 lines
13 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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>