remember-word/pages/mine/cert/cert.vue

558 lines
13 KiB
Vue
Raw Permalink Normal View History

2024-04-30 10:52:30 +00:00
<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>