|
|
@@ -0,0 +1,1187 @@
|
|
|
+<template>
|
|
|
+ <div class="goods">
|
|
|
+ <van-collapse v-model="activeNames">
|
|
|
+ <van-collapse-item name="1" class="goods-info">
|
|
|
+ <template #title>
|
|
|
+ <div class="page-title">
|
|
|
+ <img src="@assets/fenxiang-icon.png" alt="" />
|
|
|
+ 用户信息
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div class="user">
|
|
|
+ <van-cell
|
|
|
+ class="creator"
|
|
|
+ :to="{
|
|
|
+ path: '/creatorDetail',
|
|
|
+ query: {
|
|
|
+ id: info.minterId
|
|
|
+ }
|
|
|
+ }"
|
|
|
+ >
|
|
|
+ <template #icon>
|
|
|
+ <van-image
|
|
|
+ width="32"
|
|
|
+ height="32"
|
|
|
+ :src="info.minterAvatar || require('@assets/svgs/img_default_photo.svg')"
|
|
|
+ fit="cover"
|
|
|
+ radius="100"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ <template #title>
|
|
|
+ <div class="text1">{{ info.minter }}</div>
|
|
|
+ <div class="text2">铸造者</div>
|
|
|
+ </template>
|
|
|
+ </van-cell>
|
|
|
+ <van-cell
|
|
|
+ v-if="info.ownerId !== info.minterId"
|
|
|
+ class="creator"
|
|
|
+ :to="{
|
|
|
+ path: '/creatorDetail',
|
|
|
+ query: {
|
|
|
+ id: info.ownerId,
|
|
|
+ type: 'DEFAULT'
|
|
|
+ }
|
|
|
+ }"
|
|
|
+ >
|
|
|
+ <template #icon>
|
|
|
+ <van-image
|
|
|
+ width="32"
|
|
|
+ height="32"
|
|
|
+ class="user-img"
|
|
|
+ :src="info.ownerAvatar || require('@assets/svgs/img_default_photo.svg')"
|
|
|
+ fit="cover"
|
|
|
+ radius="100"
|
|
|
+ />
|
|
|
+ </template>
|
|
|
+ <template #title>
|
|
|
+ <div class="text1 van-ellipsis">{{ info.owner }}</div>
|
|
|
+ <div class="text2">持有者</div>
|
|
|
+ </template>
|
|
|
+ </van-cell>
|
|
|
+ </div>
|
|
|
+ </van-collapse-item>
|
|
|
+
|
|
|
+ <van-collapse-item name="2" class="goods-info">
|
|
|
+ <template #title>
|
|
|
+ <div class="page-title"><img src="@assets/icon-miaoshu.png" alt="" />作品描述</div>
|
|
|
+ </template>
|
|
|
+ <swiper v-if="boxs.length > 0" :slidesPerView="'auto'" :spaceBetween="20" class="detail-swiper">
|
|
|
+ <swiper-slide v-for="(item, index) in boxs" :key="index">
|
|
|
+ <van-image
|
|
|
+ width="100%"
|
|
|
+ height="130"
|
|
|
+ :src="getImg(item, '', 1000)"
|
|
|
+ fit="cover"
|
|
|
+ radius="12"
|
|
|
+ @click="preview(index, boxs)"
|
|
|
+ />
|
|
|
+ </swiper-slide>
|
|
|
+ </swiper>
|
|
|
+ <div v-if="info.detail" class="page-text page-detail" v-html="info.detail"></div>
|
|
|
+ </van-collapse-item>
|
|
|
+ <van-collapse-item name="3" class="goods-info top1">
|
|
|
+ <template #title>
|
|
|
+ <div class="page-title"><img src="@assets/icon-lianshangxinxi.png" alt="" /> 类型</div>
|
|
|
+ </template>
|
|
|
+ <div class="top1">
|
|
|
+ <div v-if="info.category" class="category">
|
|
|
+ <span>{{ info.category }}</span>
|
|
|
+ </div>
|
|
|
+ <div v-else class="tips">铸造者未设置</div>
|
|
|
+ </div>
|
|
|
+ </van-collapse-item>
|
|
|
+ <van-collapse-item name="4" class="goods-info">
|
|
|
+ <template #title>
|
|
|
+ <div class="page-title">
|
|
|
+ <img src="@assets/qiaoqiaohua-icon-weidakai.png" alt="" /> 悄悄话<span>(灰色表示已使用)</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div class="qiaohua" v-if="init2">
|
|
|
+ <img class="img" :src="init2.icon[0]" alt="" />
|
|
|
+ <div class="text4" :class="{ prim: init2.opened }">
|
|
|
+ {{ init2.opened ? '已打开' : '未打开' }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="tips" v-else>铸造者未设置</div>
|
|
|
+ </van-collapse-item>
|
|
|
+ <van-collapse-item name="5" class="goods-info">
|
|
|
+ <template #title>
|
|
|
+ <div class="titleIcon page-title">
|
|
|
+ <img src="@assets/icon-lianshangxinxi(1).png" alt="" />
|
|
|
+ 持有特权
|
|
|
+ <span>(灰色表示已使用)</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ <div class="prive" v-if="init.length > 0">
|
|
|
+ <div v-for="(item, index) in init" :key="index">
|
|
|
+ <div class="prive1">
|
|
|
+ <img class="img" :src="item.icon[0]" alt="" />
|
|
|
+ <div class="prive2">{{ item.name }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-if="init.length === 0" class="tips">铸造者未设置</div>
|
|
|
+ </van-collapse-item>
|
|
|
+ <van-collapse-item name="6" class="goods-info">
|
|
|
+ <template #title>
|
|
|
+ <div class="page-title"><img src="@assets/icon-lianshangxinxi(2).png" alt="" />作品特性</div>
|
|
|
+ </template>
|
|
|
+ <div class="specific-list" v-if="properties.length > 0">
|
|
|
+ <div class="specific-item" v-for="(item, index) in properties" :key="index">
|
|
|
+ <div class="text1">{{ item.name }}</div>
|
|
|
+ <div class="text2">{{ item.value }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-else class="textName">铸造者未设置</div>
|
|
|
+ </van-collapse-item>
|
|
|
+ <hash-code :info="info"></hash-code>
|
|
|
+ <van-collapse-item name="8" class="goods-info">
|
|
|
+ <template #title>
|
|
|
+ <div class="page-title"><img src="@assets/info_icon_jiaoyijilu1.png" alt="" />交易记录</div>
|
|
|
+ </template>
|
|
|
+ <div v-if="list.length > 0">
|
|
|
+ <div class="content" v-for="item in list" :key="item.id">
|
|
|
+ <!-- <img class="img" :src="list.avatar" alt="" /> -->
|
|
|
+ <div class="user-detail">
|
|
|
+ <div class="text1 van-ellipsis">{{ item.fromUser || '保密' }}</div>
|
|
|
+ <div class="text2" v-if="item.price">{{ item.operation }}¥{{ item.price }}</div>
|
|
|
+ <div class="text2" v-else>{{ item.operation }}</div>
|
|
|
+ <div class="text3 van-ellipsis">{{ item.toUser || '保密' }}</div>
|
|
|
+ <div class="text4">{{ item.createdAt.substr(0, 16) }}</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div v-else class="textName">暂无购买记录</div>
|
|
|
+ </van-collapse-item>
|
|
|
+ </van-collapse>
|
|
|
+ </div>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+import { ImagePreview } from 'vant';
|
|
|
+import product from '../../mixins/product';
|
|
|
+import coupon from '../../mixins/coupon';
|
|
|
+import HashCode from '../../components/product/HashCode.vue';
|
|
|
+import { Swiper, SwiperSlide } from 'swiper/vue';
|
|
|
+import { mapState } from 'vuex';
|
|
|
+
|
|
|
+import 'swiper/swiper.min.css';
|
|
|
+import 'swiper/swiper-bundle.min.css';
|
|
|
+
|
|
|
+import SwiperCore, { Pagination } from 'swiper';
|
|
|
+
|
|
|
+SwiperCore.use([Pagination]);
|
|
|
+
|
|
|
+let inWeixin = /micromessenger/i.test(navigator.userAgent);
|
|
|
+
|
|
|
+export default {
|
|
|
+ props: {
|
|
|
+ info: {
|
|
|
+ type: Object,
|
|
|
+ default: () => {
|
|
|
+ return {};
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ components: {
|
|
|
+ HashCode,
|
|
|
+ Swiper,
|
|
|
+ SwiperSlide
|
|
|
+ },
|
|
|
+ mixins: [product, coupon],
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ activeName: '1',
|
|
|
+ liked: false,
|
|
|
+ btn: null,
|
|
|
+ blindBoxItems: [],
|
|
|
+ init: [],
|
|
|
+ init2: null,
|
|
|
+ list: [],
|
|
|
+ activeNames: ['1', '2', '3', '4', '5', '6', 'hashCode', '8'],
|
|
|
+ inWeixin,
|
|
|
+ limit: {},
|
|
|
+ couponList: [],
|
|
|
+ assignments: [],
|
|
|
+ noPay: false,
|
|
|
+ collectionId: 0,
|
|
|
+ createrId: 0
|
|
|
+ };
|
|
|
+ },
|
|
|
+ computed: {
|
|
|
+ ...mapState(['userInfo']),
|
|
|
+ banners() {
|
|
|
+ return this.info.pic || [];
|
|
|
+ },
|
|
|
+ properties() {
|
|
|
+ return this.info.properties || [];
|
|
|
+ },
|
|
|
+ isBuy() {
|
|
|
+ return this.info.stock > 0 && this.info.onShelf && this.info.salable;
|
|
|
+ },
|
|
|
+ boxs() {
|
|
|
+ let list = [...this.blindBoxItems];
|
|
|
+ return list.map(item => {
|
|
|
+ return this.changeImgs(item.pic);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ getInit() {
|
|
|
+ return this.getProduct();
|
|
|
+ },
|
|
|
+ preview(index = 0, list = []) {
|
|
|
+ ImagePreview({
|
|
|
+ images: [...list].map(item => {
|
|
|
+ return item;
|
|
|
+ }),
|
|
|
+ startPosition: index
|
|
|
+ });
|
|
|
+ },
|
|
|
+ appointment() {
|
|
|
+ if (this.info.appointment) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.$http
|
|
|
+ .post('/collection/appointment?id=' + this.info.id)
|
|
|
+ .then(res => {
|
|
|
+ this.getProduct();
|
|
|
+ this.$toast.success('预约成功');
|
|
|
+ })
|
|
|
+ .catch(e => {
|
|
|
+ if (e.error) {
|
|
|
+ this.$toast.warning(e.error);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getProduct() {
|
|
|
+ this.$toast.loading({
|
|
|
+ message: '加载中...',
|
|
|
+ forbidClick: true
|
|
|
+ });
|
|
|
+ return this.$http
|
|
|
+ .get('/collection/get/' + this.collectionId)
|
|
|
+ .then(res => {
|
|
|
+ if (this.$store.state.from === 'scanCode') {
|
|
|
+ res.onShelf = true;
|
|
|
+ this.checkLogin();
|
|
|
+ }
|
|
|
+ console.log(res);
|
|
|
+ // this.info = res;
|
|
|
+ //优惠券
|
|
|
+ if (res.couponPayment) {
|
|
|
+ this.getCouponList();
|
|
|
+ }
|
|
|
+ if (this.inWeixin) {
|
|
|
+ wx.updateAppMessageShareData({
|
|
|
+ title: '第九空间-' + res.name,
|
|
|
+ desc: '全球首个基于区块链的游戏资产集换中心',
|
|
|
+ link: location.origin + '/9th/productDetail/' + res.id,
|
|
|
+ imgUrl: this.getImg(this.changeImgs(this.banners), '', 300)
|
|
|
+ });
|
|
|
+ wx.updateTimelineShareData({
|
|
|
+ title: '第九空间-' + res.name,
|
|
|
+ link: location.origin + '/9th/productDetail/' + res.id,
|
|
|
+ imgUrl: this.getImg(this.changeImgs(this.banners), '', 300)
|
|
|
+ });
|
|
|
+ console.log(wx);
|
|
|
+ }
|
|
|
+ if (res.assetId) {
|
|
|
+ this.$http.get('/asset/get/' + res.assetId).then(res => {
|
|
|
+ console.log(res);
|
|
|
+ // this.info = {
|
|
|
+ // ...res,
|
|
|
+ // ...this.info
|
|
|
+ // };
|
|
|
+ this.$http
|
|
|
+ .get('/asset/tokenHistory', {
|
|
|
+ tokenId: res.tokenId,
|
|
|
+ assetId: res.collectionId
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ console.log(res);
|
|
|
+ this.list = res;
|
|
|
+ });
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (res.privileges) {
|
|
|
+ this.init2 = res.privileges.find(item => {
|
|
|
+ return item.name === '悄悄话';
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (res.privileges) {
|
|
|
+ this.init = res.privileges.filter(item => {
|
|
|
+ return item.name !== '悄悄话';
|
|
|
+ });
|
|
|
+ }
|
|
|
+ this.getTime(res.startTime);
|
|
|
+ if (res.saleTime) {
|
|
|
+ this.getTime(res.saleTime, 'saleTime');
|
|
|
+ }
|
|
|
+ this.$nextTick(() => {
|
|
|
+ if (this.isBuy) {
|
|
|
+ this.btn = this.$refs.btn;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.$toast.clear();
|
|
|
+
|
|
|
+ if (res.type === 'BLIND_BOX') {
|
|
|
+ return this.$http.post(
|
|
|
+ '/blindBoxItem/all',
|
|
|
+ {
|
|
|
+ query: {
|
|
|
+ blindBoxId: res.id
|
|
|
+ }
|
|
|
+ },
|
|
|
+ { body: 'json' }
|
|
|
+ );
|
|
|
+ } else {
|
|
|
+ return Promise.resolve();
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ if (res) {
|
|
|
+ this.blindBoxItems = res.content;
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch(e => {
|
|
|
+ this.$toast.clear();
|
|
|
+ if (e && e.error) {
|
|
|
+ this.$dialog
|
|
|
+ .alert({
|
|
|
+ title: '提示',
|
|
|
+ message: e.error
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ this.$router.back();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ showReason() {
|
|
|
+ this.$dialog.alert({
|
|
|
+ title: '提示',
|
|
|
+ message: '若存在未支付无效订单,请等待订单自动5分钟内取消,退回白名单资格。'
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getCouponList() {
|
|
|
+ if (!this.isLogin) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.$http
|
|
|
+ .post(
|
|
|
+ '/userCoupon/all',
|
|
|
+ {
|
|
|
+ query: { userId: this.$store.state.userInfo.id, used: false }
|
|
|
+ },
|
|
|
+ { body: 'json' }
|
|
|
+ )
|
|
|
+ .then(res => {
|
|
|
+ this.couponList = [...res.content].filter(item => {
|
|
|
+ return this.checkTime(item) && this.checkUse(item, this.info.id);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ },
|
|
|
+ buy() {
|
|
|
+ this.checkLogin().then(() => {
|
|
|
+ if (this.info.couponPayment && this.couponList.length === 0) {
|
|
|
+ this.$dialog
|
|
|
+ .alert({
|
|
|
+ title: '提示',
|
|
|
+ message: '该藏品为特殊藏品,需要使用优惠券才能兑换'
|
|
|
+ })
|
|
|
+ .then(() => {});
|
|
|
+ } else if (!this.usedBuy && this.info.source === 'TRANSFER') {
|
|
|
+ this.$toast('该通道暂且关闭');
|
|
|
+ }
|
|
|
+ // else if (this.authStatus !== '已认证') {
|
|
|
+ // this.$dialog
|
|
|
+ // .alert({
|
|
|
+ // title: '提示',
|
|
|
+ // message: '实名认证后才可进行藏品购买'
|
|
|
+ // })
|
|
|
+ // .then(() => {
|
|
|
+ // this.goAuth();
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ else if (this.info.minimumCharge && !this.$store.state.userInfo.canSale) {
|
|
|
+ this.$dialog
|
|
|
+ .alert({
|
|
|
+ title: '提示',
|
|
|
+ message: '未实名或规定时间内绿洲石不满' + this.info.minimumCharge
|
|
|
+ })
|
|
|
+ .then(() => {});
|
|
|
+ } else {
|
|
|
+ this.$router.push({
|
|
|
+ path: '/submit',
|
|
|
+ query: {
|
|
|
+ id: this.collectionId,
|
|
|
+ invitor: this.$route.query.invitor
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ goAuth() {
|
|
|
+ if (this.authStatus === '认证中' || this.authStatus === '认证失败') {
|
|
|
+ this.$router.push('/waiting');
|
|
|
+ } else if (this.authStatus === '未认证') {
|
|
|
+ this.$router.push('/Authentication');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ share() {
|
|
|
+ if (this.assignment && !this.isLogin) {
|
|
|
+ this.checkLogin();
|
|
|
+ } else {
|
|
|
+ this.$refs.post.init();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ vipAssignment() {
|
|
|
+ if (this.info.vipSurplus <= 0) {
|
|
|
+ this.$dialog
|
|
|
+ .alert({
|
|
|
+ title: '通道已关闭',
|
|
|
+ message: '您的vip购买次数已经用完啦,请完成邀请任务继续购买吧~'
|
|
|
+ })
|
|
|
+ .then(res => {
|
|
|
+ if (this.info.totalQuota) {
|
|
|
+ this.share();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ this.buy();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onRefresh() {
|
|
|
+ this.getInit().then(() => {
|
|
|
+ this.isLoading = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+};
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="less" scoped>
|
|
|
+/deep/.scroll-wrapper {
|
|
|
+ background-color: @bgProductDetail;
|
|
|
+}
|
|
|
+
|
|
|
+/deep/.van-nav-bar {
|
|
|
+ background-color: @bgProductDetail;
|
|
|
+}
|
|
|
+.detail {
|
|
|
+ padding-bottom: 150px;
|
|
|
+ background-color: @bgProductDetail;
|
|
|
+}
|
|
|
+.prive {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ margin-bottom: -12px;
|
|
|
+ .prive1 {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ margin: 0 16px 12px 0;
|
|
|
+ width: 94px;
|
|
|
+ height: 32px;
|
|
|
+ color: #000;
|
|
|
+ background: linear-gradient(48deg, @prim 0%, @warn 100%);
|
|
|
+ border-radius: 4px;
|
|
|
+ &.prim {
|
|
|
+ background: #202122;
|
|
|
+ color: @text3;
|
|
|
+ }
|
|
|
+ .img {
|
|
|
+ text-align: center;
|
|
|
+ width: 18px;
|
|
|
+ height: 18px;
|
|
|
+ margin-right: 4px;
|
|
|
+ }
|
|
|
+ .prive2 {
|
|
|
+ font-size: @font1;
|
|
|
+ text-align: center;
|
|
|
+ margin-left: 2px;
|
|
|
+ color: @btnText;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.info {
|
|
|
+ // height: 164px;
|
|
|
+ background-color: @bgProductDetail;
|
|
|
+ border-radius: 20px 20px 0 0;
|
|
|
+ transform: translateY(-16px);
|
|
|
+ position: relative;
|
|
|
+ z-index: 2;
|
|
|
+ padding: 16px 16px 0;
|
|
|
+ box-sizing: border-box;
|
|
|
+ .name {
|
|
|
+ text-align: center;
|
|
|
+ .name1 {
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: 400;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 24px;
|
|
|
+ }
|
|
|
+ .name2 {
|
|
|
+ font-size: @font2;
|
|
|
+ font-weight: 400;
|
|
|
+ color: @prim;
|
|
|
+ line-height: 24px;
|
|
|
+ background: linear-gradient(135deg, @prim 0%, @warn 100%);
|
|
|
+ -webkit-background-clip: text;
|
|
|
+ -webkit-text-fill-color: transparent;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .price {
|
|
|
+ font-size: 36px;
|
|
|
+ font-family: OSP;
|
|
|
+ color: @prim;
|
|
|
+ line-height: 36px;
|
|
|
+ transform: translateY(3px);
|
|
|
+
|
|
|
+ .font_family {
|
|
|
+ font-size: 10px;
|
|
|
+ line-height: 24px;
|
|
|
+ vertical-align: middle;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .price-line {
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ margin-top: 16px;
|
|
|
+ flex-wrap: wrap;
|
|
|
+ .sub {
|
|
|
+ flex-grow: 1;
|
|
|
+ margin-left: 5px;
|
|
|
+ font-size: @font2;
|
|
|
+ color: #949699;
|
|
|
+ line-height: 16px;
|
|
|
+ span {
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .price-sub {
|
|
|
+ font-size: @font2;
|
|
|
+ color: @text3;
|
|
|
+ text-decoration: line-through;
|
|
|
+ margin-left: 10px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .text {
|
|
|
+ font-size: @font1;
|
|
|
+ color: @text3;
|
|
|
+ line-height: 20px;
|
|
|
+ height: 20px;
|
|
|
+ background-color: #27272b;
|
|
|
+ border-radius: 4px;
|
|
|
+ padding: 0 10px;
|
|
|
+ margin-bottom: 6px;
|
|
|
+
|
|
|
+ span + span {
|
|
|
+ margin-left: 10px;
|
|
|
+ }
|
|
|
+
|
|
|
+ &.total {
|
|
|
+ padding: 0 0;
|
|
|
+ border-radius: 4px;
|
|
|
+ overflow: hidden;
|
|
|
+ span {
|
|
|
+ display: inline-block;
|
|
|
+ padding: 0 12px;
|
|
|
+ &:first-child {
|
|
|
+ background-color: @prim;
|
|
|
+ color: #fff;
|
|
|
+ }
|
|
|
+ &:last-child {
|
|
|
+ color: @prim;
|
|
|
+ background-color: #27272b;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ span + span {
|
|
|
+ margin-left: 0px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .text + .text {
|
|
|
+ margin-left: 10px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .title {
|
|
|
+ font-size: 20px;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 28px;
|
|
|
+ margin-top: 12px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .info-bottom {
|
|
|
+ display: flex;
|
|
|
+ position: absolute;
|
|
|
+ bottom: 0;
|
|
|
+ left: 50%;
|
|
|
+ transform: translateX(-50%);
|
|
|
+ margin-top: 4px;
|
|
|
+ height: 24px;
|
|
|
+ .text1 {
|
|
|
+ font-size: @font1;
|
|
|
+ color: #949699;
|
|
|
+ line-height: 24px;
|
|
|
+ }
|
|
|
+ .van-button {
|
|
|
+ font-size: @font2;
|
|
|
+ color: @prim;
|
|
|
+ line-height: 24px;
|
|
|
+ background: linear-gradient(135deg, @prim 0%, @warn 100%);
|
|
|
+ -webkit-background-clip: text;
|
|
|
+ -webkit-text-fill-color: transparent;
|
|
|
+ border-width: 0px;
|
|
|
+ margin-left: 10px;
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
+ .like {
|
|
|
+ position: absolute;
|
|
|
+ right: 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+/deep/ .van-collapse-item__content {
|
|
|
+ background: #181818 !important;
|
|
|
+ padding: 0 !important;
|
|
|
+}
|
|
|
+.activeName {
|
|
|
+ /deep/ .van-cell__title {
|
|
|
+ font-size: @font2;
|
|
|
+ font-family: PingFangSC-Medium, PingFang SC;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 24px;
|
|
|
+ }
|
|
|
+ /deep/ .van-cell {
|
|
|
+ padding: 0 16px;
|
|
|
+ }
|
|
|
+}
|
|
|
+/deep/.creator {
|
|
|
+ .flex();
|
|
|
+ align-items: center;
|
|
|
+ padding: 24px 16px 24px;
|
|
|
+ .van-cell__title {
|
|
|
+ margin-left: 6px !important;
|
|
|
+ .text1 {
|
|
|
+ color: #fff;
|
|
|
+ font-size: @font1;
|
|
|
+ line-height: 20px;
|
|
|
+ }
|
|
|
+ .text2 {
|
|
|
+ font-size: @font1;
|
|
|
+ color: @text3;
|
|
|
+ line-height: 22px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .van-cell__value {
|
|
|
+ font-size: @font2;
|
|
|
+ }
|
|
|
+}
|
|
|
+.conName {
|
|
|
+ font-size: @font2;
|
|
|
+ font-weight: 400;
|
|
|
+ color: #939599;
|
|
|
+ line-height: 24px;
|
|
|
+ // padding: 10px 0 0 16px;
|
|
|
+}
|
|
|
+.titleIcon {
|
|
|
+ font-size: @font2;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 24px;
|
|
|
+ // padding: 30px 0 0 16px;
|
|
|
+ span {
|
|
|
+ font-size: @font2;
|
|
|
+ font-weight: 400;
|
|
|
+ color: #939599;
|
|
|
+ line-height: 24px;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.info {
|
|
|
+ min-height: 100px;
|
|
|
+}
|
|
|
+
|
|
|
+.top {
|
|
|
+ padding: 20px 16px 0;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ .top1 {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ .text1 {
|
|
|
+ font-size: @font2;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 28px;
|
|
|
+ }
|
|
|
+ .text2 {
|
|
|
+ width: 94px;
|
|
|
+ height: 32px;
|
|
|
+ border: 1px solid yellow;
|
|
|
+ border-radius: 4px;
|
|
|
+ margin-left: 14px;
|
|
|
+ line-height: 32px;
|
|
|
+ text-align: center;
|
|
|
+ color: #ffffff;
|
|
|
+ &.text3 {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ }
|
|
|
+ .img {
|
|
|
+ width: 18px;
|
|
|
+ height: 18px;
|
|
|
+ margin-right: 4px;
|
|
|
+ }
|
|
|
+ &.prim {
|
|
|
+ color: @text3;
|
|
|
+ border: 1px solid #303133;
|
|
|
+ background: #202122;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .text4 {
|
|
|
+ color: @prim;
|
|
|
+ &.prim {
|
|
|
+ color: @text3;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.tips {
|
|
|
+ font-size: @font2;
|
|
|
+ color: @text3;
|
|
|
+ line-height: 24px;
|
|
|
+ // padding-top: 12px;
|
|
|
+}
|
|
|
+.buy {
|
|
|
+ width: 100%;
|
|
|
+ display: block;
|
|
|
+ height: 52px;
|
|
|
+ background: linear-gradient(135deg, @prim 0%, @warn 100%);
|
|
|
+ border-radius: 8px;
|
|
|
+ border-width: 0;
|
|
|
+ color: #000;
|
|
|
+ &:hover {
|
|
|
+ background: linear-gradient(135deg, darken(@prim, 10%), darken(@warn, 10%));
|
|
|
+ }
|
|
|
+
|
|
|
+ &.used {
|
|
|
+ background: linear-gradient(135deg, darken(@prim, 50%), darken(@warn, 50%));
|
|
|
+ color: @text3;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.goods {
|
|
|
+ // padding: 0 16px 0px;
|
|
|
+ background-color: #1c1c1c;
|
|
|
+
|
|
|
+ .page-title {
|
|
|
+ font-size: @font2;
|
|
|
+ font-weight: bold;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 24px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ &:not(:first-child) {
|
|
|
+ padding-top: 16px;
|
|
|
+ }
|
|
|
+ img {
|
|
|
+ width: 18px;
|
|
|
+ height: 18px;
|
|
|
+ margin-right: 6px;
|
|
|
+ }
|
|
|
+ span {
|
|
|
+ color: @text3;
|
|
|
+ font-size: @font1;
|
|
|
+ font-weight: normal;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.qiaohua {
|
|
|
+ border-radius: 4px;
|
|
|
+ background: linear-gradient(45deg, @prim, @warn);
|
|
|
+ position: relative;
|
|
|
+ width: 94px;
|
|
|
+ display: flex;
|
|
|
+ height: 30px;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ // margin-top: 12px;
|
|
|
+ .img {
|
|
|
+ width: 18px;
|
|
|
+ height: 18px;
|
|
|
+ position: relative;
|
|
|
+ z-index: 1;
|
|
|
+ }
|
|
|
+ .text4 {
|
|
|
+ color: @prim;
|
|
|
+ &.prim {
|
|
|
+ color: @text3;
|
|
|
+ }
|
|
|
+ margin-left: 4px;
|
|
|
+ position: relative;
|
|
|
+ z-index: 1;
|
|
|
+ font-size: @font1;
|
|
|
+ }
|
|
|
+ &::after {
|
|
|
+ content: '';
|
|
|
+ border-radius: 4px;
|
|
|
+ background-color: @bgProductDetail;
|
|
|
+ position: absolute;
|
|
|
+ top: 1px;
|
|
|
+ left: 1px;
|
|
|
+ right: 1px;
|
|
|
+ bottom: 1px;
|
|
|
+ z-index: 0;
|
|
|
+ }
|
|
|
+}
|
|
|
+.specific-list {
|
|
|
+ // padding: 10px 0 0;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ overflow-x: auto;
|
|
|
+}
|
|
|
+.textName {
|
|
|
+ font-size: @font2;
|
|
|
+ font-weight: 400;
|
|
|
+ color: #939599;
|
|
|
+ line-height: 24px;
|
|
|
+ // padding-top: 10px;
|
|
|
+}
|
|
|
+.specific-item {
|
|
|
+ // width: 94px;
|
|
|
+ // height: 62px;
|
|
|
+ border-radius: 4px;
|
|
|
+ padding: 4px 8px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+ flex-direction: column;
|
|
|
+ position: relative;
|
|
|
+ background: linear-gradient(135deg, @prim, @warn);
|
|
|
+ margin-right: 20px;
|
|
|
+ box-sizing: border-box;
|
|
|
+ min-width: 94px;
|
|
|
+
|
|
|
+ &::after {
|
|
|
+ content: '';
|
|
|
+ position: absolute;
|
|
|
+ top: 1px;
|
|
|
+ left: 1px;
|
|
|
+ right: 1px;
|
|
|
+ bottom: 1px;
|
|
|
+ background-color: @bgProductDetail;
|
|
|
+ border-radius: 4px;
|
|
|
+ z-index: 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .text1 {
|
|
|
+ font-size: @font1;
|
|
|
+ color: @text3;
|
|
|
+ line-height: 18px;
|
|
|
+ z-index: 1;
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
+
|
|
|
+ .text2 {
|
|
|
+ font-size: @font1;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 18px;
|
|
|
+ z-index: 1;
|
|
|
+ white-space: nowrap;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.page-text {
|
|
|
+ font-size: @font2;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 28px;
|
|
|
+ word-break: break-all;
|
|
|
+ // margin-top: 10px;
|
|
|
+}
|
|
|
+.btn-list {
|
|
|
+ display: flex;
|
|
|
+ align-items: flex-end;
|
|
|
+ padding: 9px 16px;
|
|
|
+}
|
|
|
+.btn {
|
|
|
+ position: fixed;
|
|
|
+ z-index: 20;
|
|
|
+ bottom: 0;
|
|
|
+ left: 0;
|
|
|
+ right: 0;
|
|
|
+ background-color: @bgProductDetail;
|
|
|
+ border-width: 0;
|
|
|
+ // background: #202122ee;
|
|
|
+
|
|
|
+ // filter: blur(19px);
|
|
|
+ // &::after {
|
|
|
+ // content: '';
|
|
|
+ // position: absolute;
|
|
|
+ // left: 0;
|
|
|
+ // top: 0;
|
|
|
+ // right: 0;
|
|
|
+ // bottom: 0;
|
|
|
+ // filter: blur(19px);
|
|
|
+ // z-index: 1;
|
|
|
+ // }
|
|
|
+ .btn-list,
|
|
|
+ .status-text {
|
|
|
+ z-index: 2;
|
|
|
+ }
|
|
|
+ .btns {
|
|
|
+ width: 138px;
|
|
|
+ position: relative;
|
|
|
+ min-height: 38px;
|
|
|
+ .van-button--primary {
|
|
|
+ background: linear-gradient(135deg, @prim 0%, @warn 100%);
|
|
|
+ color: @btnText;
|
|
|
+ font-size: @font2;
|
|
|
+ border-width: 0px;
|
|
|
+ }
|
|
|
+ .no-btn {
|
|
|
+ color: #939599;
|
|
|
+ background-color: #303133;
|
|
|
+ border-width: 0;
|
|
|
+
|
|
|
+ .appoint {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: center;
|
|
|
+ span {
|
|
|
+ font-size: @font2;
|
|
|
+
|
|
|
+ &:last-child {
|
|
|
+ font-size: @font1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .btn-assignments {
|
|
|
+ .flex();
|
|
|
+ width: 186px;
|
|
|
+ position: absolute;
|
|
|
+ right: 0;
|
|
|
+ bottom: 0;
|
|
|
+ .vip {
|
|
|
+ margin-right: 6px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.share-content {
|
|
|
+ display: flex;
|
|
|
+ margin-top: 20px;
|
|
|
+}
|
|
|
+.share-icon {
|
|
|
+ margin-left: 30px;
|
|
|
+ img {
|
|
|
+ width: 18px;
|
|
|
+ height: 18px;
|
|
|
+ display: inline-block;
|
|
|
+ vertical-align: middle;
|
|
|
+ }
|
|
|
+ span {
|
|
|
+ font-size: @font1;
|
|
|
+ color: #949699;
|
|
|
+ line-height: 24px;
|
|
|
+ vertical-align: middle;
|
|
|
+ margin-left: 2px;
|
|
|
+ }
|
|
|
+}
|
|
|
+.info {
|
|
|
+ .info-title {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.status-text {
|
|
|
+ font-size: @font4;
|
|
|
+ color: #939599;
|
|
|
+ line-height: 28px;
|
|
|
+ text-align: center;
|
|
|
+ padding: 14px 50px !important;
|
|
|
+ border-top: 1px solid #313233;
|
|
|
+}
|
|
|
+
|
|
|
+/deep/.goods-info {
|
|
|
+ .van-cell {
|
|
|
+ // padding: 0 0;
|
|
|
+ &::after {
|
|
|
+ content: none;
|
|
|
+ }
|
|
|
+
|
|
|
+ &:active {
|
|
|
+ background-color: @bgProductDetail;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+/deep/.van-collapse-item--border::after {
|
|
|
+ content: none;
|
|
|
+}
|
|
|
+/deep/.van-hairline--top-bottom::after,
|
|
|
+.van-hairline-unset--top-bottom::after {
|
|
|
+ border-width: 0;
|
|
|
+}
|
|
|
+
|
|
|
+.user {
|
|
|
+ // padding: 12px 0 0;
|
|
|
+ display: flex;
|
|
|
+ .creator {
|
|
|
+ width: 50%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .user-img {
|
|
|
+ flex-shrink: 0;
|
|
|
+ }
|
|
|
+ /deep/.van-cell {
|
|
|
+ padding: 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ /deep/.van-cell__title {
|
|
|
+ margin-left: 10px;
|
|
|
+ overflow: hidden;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.price-content {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ .price {
|
|
|
+ font-size: 32px;
|
|
|
+ font-family: OSP-DIN, OSP;
|
|
|
+ color: @prim;
|
|
|
+ line-height: 26px;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ .font_family {
|
|
|
+ font-size: 10px;
|
|
|
+ }
|
|
|
+ img {
|
|
|
+ width: 10px;
|
|
|
+ height: 11px;
|
|
|
+ display: inline-block;
|
|
|
+ margin-top: 8px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .price-sub {
|
|
|
+ font-size: @font1;
|
|
|
+ color: @text3;
|
|
|
+ text-decoration: line-through;
|
|
|
+ margin-left: 3px;
|
|
|
+ margin-top: 8px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .sub {
|
|
|
+ font-size: @font1;
|
|
|
+ color: #949699;
|
|
|
+ line-height: 22px;
|
|
|
+ //
|
|
|
+ }
|
|
|
+
|
|
|
+ .price-text {
|
|
|
+ margin-left: 6px;
|
|
|
+ .flex-col();
|
|
|
+ .text1 {
|
|
|
+ .flex();
|
|
|
+ img {
|
|
|
+ width: 18px;
|
|
|
+ height: 18px;
|
|
|
+ }
|
|
|
+ span {
|
|
|
+ font-size: 12px;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 17px;
|
|
|
+ margin-left: 2px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+.category {
|
|
|
+ width: 94px;
|
|
|
+ height: 30px;
|
|
|
+ border-radius: 4px;
|
|
|
+ background: linear-gradient(135deg, @prim, @warn);
|
|
|
+ font-size: @font1;
|
|
|
+ color: #ffffff;
|
|
|
+ line-height: 30px;
|
|
|
+ text-align: center;
|
|
|
+ position: relative;
|
|
|
+ // margin-top: 12px;
|
|
|
+ &::after {
|
|
|
+ content: '';
|
|
|
+ background-color: @bgProductDetail;
|
|
|
+ position: absolute;
|
|
|
+ left: 1px;
|
|
|
+ top: 1px;
|
|
|
+ right: 1px;
|
|
|
+ bottom: 1px;
|
|
|
+ z-index: 0;
|
|
|
+ border-radius: 4px;
|
|
|
+ }
|
|
|
+ span {
|
|
|
+ position: relative;
|
|
|
+ z-index: 1;
|
|
|
+ }
|
|
|
+}
|
|
|
+/deep/.van-collapse-item__content {
|
|
|
+ padding: 12px 16px !important;
|
|
|
+ background-color: #131313 !important;
|
|
|
+}
|
|
|
+
|
|
|
+.user-detail {
|
|
|
+ .flex();
|
|
|
+ width: 100%;
|
|
|
+ font-size: @font1;
|
|
|
+ height: 42px;
|
|
|
+ .text1 {
|
|
|
+ color: @prim;
|
|
|
+ width: 64px;
|
|
|
+ margin-right: 10px;
|
|
|
+ flex-basis: 0;
|
|
|
+ flex-grow: 1;
|
|
|
+ }
|
|
|
+ .text2 {
|
|
|
+ color: @text3;
|
|
|
+ width: 95px;
|
|
|
+ min-width: 95px;
|
|
|
+ }
|
|
|
+ .text3 {
|
|
|
+ color: #fff;
|
|
|
+ width: 64px;
|
|
|
+ margin-right: 10px;
|
|
|
+ flex-basis: 0;
|
|
|
+ flex-grow: 1;
|
|
|
+ }
|
|
|
+ .text4 {
|
|
|
+ color: @text3;
|
|
|
+ }
|
|
|
+
|
|
|
+ & + & {
|
|
|
+ border-top: 1px solid #202122;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+.detail-swiper {
|
|
|
+ .swiper-slide {
|
|
|
+ width: 130px;
|
|
|
+ }
|
|
|
+}
|
|
|
+</style>
|