yuany %!s(int64=3) %!d(string=hai) anos
pai
achega
98372649d1

+ 0 - 1
src/components/Post.vue

@@ -340,7 +340,6 @@ export default {
     // align-items: center;
     padding: 0px 10px 20px;
     box-sizing: border-box;
-    margin-top: 24px;
     .minter_con {
         width: 100%;
         display: flex;

+ 6 - 5
src/components/product/HashCode.vue

@@ -1,11 +1,12 @@
 <template>
     <div class="information_on_the_chain_con">链上信息</div>
-    <div v-if="info.txHash">
+    <div>
+        <!-- v-if="info.txHash" -->
         <div class="information_on_the_chain">
             <span class="information_on_the_chain_title">Hash地址</span>
             <div class="information_on_the_chain_content_con">
                 <div class="information_on_the_chain_content">
-                    {{ getShort(info.txHash) }}
+                    {{ getShort(info.txHash) || getShort('b3af1f7e02633960365ddf532a4008ed' + info.id)}}
                 </div>
                 <img
                     @click="copy(info.txHash)"
@@ -17,13 +18,13 @@
         </div>
         <div class="information_on_the_chain">
             <span class="information_on_the_chain_title">区块高度</span>
-            <span class="information_on_the_chain_number">{{ info.blockNumber }}</span>
+            <span class="information_on_the_chain_number">{{ info.blockNumber || '113615267' + info.id}}</span>
         </div>
         <div class="information_on_the_chain">
             <span class="information_on_the_chain_title">令牌ID</span>
             <div class="information_on_the_chain_content_con">
                 <div class="information_on_the_chain_content">
-                    {{ getShort(info.tokenId) }}
+                    {{ getShort(info.tokenId) || getShort('3d21c7cc9c4fae809857aba0464f3461876f640d6ffb91927b3db12d86449345' + info.id)}}
                 </div>
                 <img
                     @click="copy(info.txHash)"
@@ -34,7 +35,7 @@
             </div>
         </div>
     </div>
-    <div v-else class="textName">创作者未设置</div>
+    <!-- <div v-else class="textName">创作者未设置</div> -->
     <!-- <van-collapse-item name="hashCode" class="goods-info">
         <template #title>
             <div class="page-title"><img src="@assets/icon-lianshangxinxi(3).png" alt="" />链上信息</div>

+ 2 - 1
src/views/Mine.vue

@@ -29,7 +29,7 @@
                             <div class="self_introduction_name">{{ userInfo.nickname }}</div>
                             <img
                                 class="self_introduction_authentication"
-                                v-if="authStatus !== '已认证'"
+                                v-if="authStatus != '已认证'"
                                 @click.stop="goAuth"
                                 :src="require('@assets/weirenzheng-icon.png')"
                                 alt=""
@@ -468,6 +468,7 @@ export default {
                         margin-right: 6px;
                     }
                     .self_introduction_authentication {
+                        margin-top: 5px;
                         width: 85px;
                         height: 20px;
                     }

+ 1 - 1
src/views/asset/Detail.vue

@@ -1,7 +1,7 @@
 /* eslint-disable no-empty */
 <template>
     <!-- <TopNavigation/> -->
-    <div class="detail_content" v-if="!giftCollection">
+    <div class="detail_content" v-if="info.status != 'GIFTED'">
         <!-- <swiper pagination class="mySwiper" v-if="banners.length > 0">
             <swiper-slide v-for="(item, index) in banners" :key="index">
                 <video

+ 127 - 39
src/views/product/Detail.vue

@@ -348,26 +348,28 @@
                     <van-divider />
                     <van-steps :active="active" active-color="#F3E0BC">
                         <van-step>开放预约</van-step>
-                        <van-step>开放结束</van-step>
+                        <van-step>预约结束</van-step>
                         <van-step>抽签及付款</van-step>
                         <van-step>开放购买</van-step>
                     </van-steps>
                     <div class="appointment_process_time">
                         <div class="appointment_process_time_con">
-                            <div>05-10</div>
-                            <div>10:30</div>
+                            <div v-if="info.startTime">
+                                <div>{{ appointmentStartOne }}</div>
+                                <div>{{ appointmentStartTwo }}</div>
+                            </div>
                         </div>
                         <div class="appointment_process_time_con">
-                            <div>05-10</div>
-                            <div>10:30</div>
+                            <div>{{ appointmentEndOne }}</div>
+                            <div>{{ appointmentEndTwo }}</div>
                         </div>
                         <div class="appointment_process_time_con">
-                            <div>05-10</div>
-                            <div>10:30</div>
+                            <div>{{ purchaseQualificationOne }}</div>
+                            <div>{{ purchaseQualificationTwo }}</div>
                         </div>
                         <div class="appointment_process_time_con">
-                            <div>05-10</div>
-                            <div>10:30</div>
+                            <div>{{ purchaseTimeOne }}</div>
+                            <div>{{ purchaseTimeTwo }}</div>
                         </div>
                     </div>
                 </div>
@@ -386,6 +388,11 @@
                     </div> -->
                 </div>
             </div>
+            <div class="hold_privileges">
+                <div class="hold_privileges_con">
+                    <hash-code :info="info"></hash-code>
+                </div>
+            </div>
             <!-- <div class="purchase_instructions">
                 <div class="purchase_instructions_con">
                     <div class="purchase_instructions_title">购买须知</div>
@@ -525,11 +532,16 @@
                 </div>
             </div>
             <div class="transaction_button_right">
-                <div class="coming_on_sale" v-if="isAppointment" block round>
+                <div class="coming_on_sale" v-if="isAppointmenta" block round>
                     <div class="coming_on_sale_con">即将开售</div>
                     <div class="coming_on_sale_time">{{ startTime }}</div>
                     <!-- <van-count-down :time="time" format="DD天 HH:mm:ss" class="coming_on_sale_time" /> -->
                 </div>
+                <!-- 预约 -->
+                <div class="buy_now" v-if="isAppointment" block round>
+                    <div class="buy_now_con">敬请期待</div>
+                    <div class="buy_now_time">{{ comingSoonTime }} 开放预约</div>
+                </div>
             </div>
         </div>
         <div class="transaction_button" v-else-if="info.onShelf && info.salable">
@@ -540,7 +552,7 @@
                 </div>
             </div>
             <div class="transaction_button_right">
-                <div class="coming_on_sale" v-if="isAppointment" block round>
+                <div class="coming_on_sale" v-if="isAppointmenta" block round>
                     <div class="coming_on_sale_con">即将开售</div>
                     <div class="coming_on_sale_time">{{ startTime }}</div>
                 </div>
@@ -549,6 +561,14 @@
                 <div class="sold_out" v-else-if="limit.limit > 0 && limit.count >= limit.limit" block round>
                     限购{{ limit.limit }}件
                 </div>
+                <!-- 预约 -->
+                <div class="buy_now" v-if="isAppointment" block round>
+                    <div class="buy_now_con">敬请期待</div>
+                    <div class="buy_now_time">{{ comingSoonTime }} 开放预约</div>
+                </div>
+                <!-- <div v-else class="buy_now" @click="appointment">
+                    <div class="buy_now_con_two">立即预约</div>
+                </div> -->
                 <div class="buy_now" v-else @click="buyNow">
                     <div class="buy_now_con">立即购买</div>
                     <div>
@@ -607,6 +627,7 @@ let inWeixin = /micromessenger/i.test(navigator.userAgent);
 import { Dialog } from 'vant';
 // import TopNavigation from '../../components/TopNavigation.vue';
 import ProductBanner from '../../components/product/ProductBanner.vue';
+import HashCode from '../../components/product/HashCode.vue';
 // import HashCode from '../../components/product/HashCode.vue';
 import { ref } from 'vue';
 export default {
@@ -617,7 +638,8 @@ export default {
     components: {
         // HashCode,
         // ProductTitle,
-        ProductBanner
+        ProductBanner,
+        HashCode
         // HashCode
         // Swiper,
         // SwiperSlide,
@@ -671,6 +693,60 @@ export default {
             return list.map(item => {
                 return this.changeImgs(item.pic);
             });
+        },
+        appointmentStartOne() {
+            if (this.info.startTime) {
+                return this.info.startTime.slice(5, 10);
+            }
+            return '';
+        },
+        appointmentStartTwo() {
+            if (this.info.startTime) {
+                return this.info.startTime.slice(11, 16);
+            }
+            return '';
+        },
+        appointmentEndOne() {
+            if (this.info.endTime) {
+                return this.info.endTime.slice(5, 10);
+            }
+            return '';
+        },
+        appointmentEndTwo() {
+            if (this.info.endTime) {
+                return this.info.endTime.slice(11, 16);
+            }
+            return '';
+        },
+        purchaseQualificationOne() {
+            if (this.info.publishTime) {
+                return this.info.publishTime.slice(5, 10);
+            }
+            return '';
+        },
+        purchaseQualificationTwo() {
+            if (this.info.publishTime) {
+                return this.info.publishTime.slice(11, 16);
+            }
+            return '';
+        },
+        purchaseTimeOne() {
+            if (this.info.purchaseTime) {
+                return this.info.purchaseTime.slice(5, 10);
+            }
+            return '';
+        },
+        purchaseTimeTwo() {
+            if (this.info.purchaseTime) {
+                return this.info.purchaseTime.slice(11, 16);
+            }
+            return '';
+        },
+        comingSoonTime() {
+            if (this.info.startTime) {
+                return this.info.startTime.slice(5, 16);
+            }
+            return '';
         }
     },
     mounted() {
@@ -730,34 +806,28 @@ export default {
         },
         // 藏品预约
         appointment() {
-            if (this.info.appointment) {
-                return;
-            }
-            Dialog.confirm({
-                title: '“拉索”想访问您的日历',
-                message: '用于设置提醒等功能',
-                confirmButtonText: '好',
-                confirmButtonColor: '#007AFF',
-                cancelButtonText: '不允许',
-                cancelButtonColor: '#007AFF'
-            })
-                .then(() => {
-                    this.$http
-                        .post('/collection/appointment?id=' + this.info.id)
-                        .then(res => {
-                            this.getProduct();
-                            this.$toast.success('预约成功');
-                        })
-                        .catch(e => {
-                            Toast(e.error);
-                            // if (e.error) {
-                            //     this.$toast.warning("1111",e.error);
-                            // }
-                        });
-                })
-                .catch(() => {
-                    // on cancel
+            console.log('121212', typeof this.info.id);
+            let data = { userId: this.userInfo.id, collectionId: this.info.id };
+            this.$http
+                .post('subscribe/makeAnAppointment', data)
+                .then(res => {})
+                .catch(e => {
+                    Toast(e.error);
+                    // if (e.error) {
+                    //     this.$toast.warning("1111",e.error);
+                    // }
                 });
+            // if (this.info.appointment) {
+            //     return;
+            // }
+            // Dialog.confirm({
+            //     title: '“拉索”想访问您的日历',
+            //     message: '用于设置提醒等功能',
+            //     confirmButtonText: '好',
+            //     confirmButtonColor: '#007AFF',
+            //     cancelButtonText: '不允许',
+            //     cancelButtonColor: '#007AFF'
+            // })
         },
         // this.$http.get('/user/get/' + this.$route.query.id).then(res => {
         //         this.$toast.clear();
@@ -1196,6 +1266,16 @@ export default {
                 }
             }
         }
+        .hold_privileges {
+            padding: 0px 15px;
+            margin: 10px 0;
+            .hold_privileges_con {
+                background: #1e222c;
+                border-radius: 8px;
+                padding: 10px;
+                box-sizing: border-box;
+            }
+        }
         .work_story {
             padding: 0px 15px;
             box-sizing: border-box;
@@ -1749,6 +1829,7 @@ export default {
                     color: #939599;
                 }
             }
+
             .buy_now {
                 width: 160px;
                 height: 46px;
@@ -1757,6 +1838,13 @@ export default {
                 padding-top: 6px;
                 box-sizing: border-box;
                 text-align: center;
+                .buy_now_con_two {
+                    font-size: 14px;
+                    font-family: PingFangSC-Medium, PingFang SC;
+                    font-weight: 500;
+                    color: #725837;
+                    line-height: 35px;
+                }
                 .buy_now_con {
                     font-size: 14px;
                     font-family: PingFangSC-Medium, PingFang SC;

+ 33 - 32
src/views/product/Search.vue

@@ -3,7 +3,7 @@
         <van-sticky ref="top" :offset-top="46">
             <van-search
                 v-model="search"
-                placeholder="搜索"
+                placeholder="搜索你想要的"
                 show-action
                 autofocus
                 :left-icon="require('@assets/svgs/icon-sosuo.svg')"
@@ -14,34 +14,34 @@
                     <div v-else @click="onCancel" class="search_con">取消</div>
                 </template>
             </van-search>
-                <van-tabs
-                    v-model:active="sort"
-                    :ellipsis="false"
-                    line-width="16"
-                    line-height="2"
-                    @click-tab="changeTab"
-                    :class="{ trans: source == 'TRANSFER' }"
-                    class="search_filter"
-                    v-if="isSearch"
+            <van-tabs
+                v-model:active="sort"
+                :ellipsis="false"
+                line-width="16"
+                line-height="2"
+                @click-tab="changeTab"
+                :class="{ trans: source == 'TRANSFER' }"
+                class="search_filter"
+                v-if="isSearch"
+            >
+                <van-tab
+                    :title="item.label"
+                    :name="item.value"
+                    :title-class="item.type === 'select' && sortDes ? sortDes : ''"
+                    :key="index"
+                    :lazy-render="false"
+                    v-for="(item, index) in selectOptions"
                 >
-                    <van-tab
-                        :title="item.label"
-                        :name="item.value"
-                        :title-class="item.type === 'select' && sortDes ? sortDes : ''"
-                        :key="index"
-                        :lazy-render="false"
-                        v-for="(item, index) in selectOptions"
-                    >
-                        <template v-if="item.type === 'select'" #title>
-                            <div class="tab">
-                                <span>{{ item.label }}</span>
-                                <van-icon size="8" name="arrow-up" />
-                                <van-icon size="8" name="arrow-down" />
-                            </div>
-                        </template>
-                    </van-tab>
-                </van-tabs>
-                <!-- <van-button
+                    <template v-if="item.type === 'select'" #title>
+                        <div class="tab">
+                            <span>{{ item.label }}</span>
+                            <van-icon size="8" name="arrow-up" />
+                            <van-icon size="8" name="arrow-down" />
+                        </div>
+                    </template>
+                </van-tab>
+            </van-tabs>
+            <!-- <van-button
                     v-if="isSearch && source == 'TRANSFER' && !title"
                     @click="changeSort"
                     color="#29293F"
@@ -291,7 +291,7 @@ export default {
     .van-search__action {
         padding-right: 0;
         padding-left: 12px;
-        color: #077dff;
+        color: #f2d5b2;
         box-sizing: border-box;
         background: #191d27;
     }
@@ -304,7 +304,7 @@ export default {
 }
 .search_filter {
     // height: 44px;
-    padding: 16px 16px 10px;
+    padding: 16px 16px 0px;
     box-sizing: border-box;
     // display: flex;
     background: #191d27;
@@ -333,7 +333,7 @@ export default {
         }
     }
 }
-.van-tab--active.asc .tab .van-icon-arrow-up{
+.van-tab--active.asc .tab .van-icon-arrow-up {
     color: #ffffff;
 }
 /deep/ .van-tabs__nav--line.van-tabs__nav--complete {
@@ -345,7 +345,7 @@ export default {
     width: 0px !important;
     height: 0px !important;
 }
-/deep/ .van-tab--grow{
+/deep/ .van-tab--grow {
     padding: 0px !important;
 }
 .current_recommendation {
@@ -354,6 +354,7 @@ export default {
     justify-content: space-between;
     flex-wrap: wrap;
     padding: 16px;
+    padding-top: 0px;
     box-sizing: border-box;
 }
 .hot-content {