Răsfoiți Sursa

Merge branch 'dev' of http://git.izouma.com/yuanyuan/nanjing_nft_front into dev

panhui 3 ani în urmă
părinte
comite
75418ed747
66 a modificat fișierele cu 3939 adăugiri și 2122 ștergeri
  1. 2 2
      .env.app
  2. 2 2
      .env.app_test
  3. 3 3
      .env.development
  4. 1 1
      .env.production
  5. BIN
      src/assets/icon-fenxiang@3x.png
  6. BIN
      src/assets/icon_querendingdan.png
  7. BIN
      src/assets/icon_shaixuan_sanjiao@3x.png
  8. BIN
      src/assets/png-ka@3x.png
  9. BIN
      src/assets/png-shangchuan@3x.png
  10. BIN
      src/assets/yaoqingtupian.png
  11. 7 3
      src/components/CollectionList.vue
  12. 2 3
      src/components/Post.vue
  13. 26 12
      src/components/UserShare.vue
  14. 18 0
      src/components/asset/assetInfo.vue
  15. 1 1
      src/components/level/Level.vue
  16. 3 3
      src/components/level/LevelCard.vue
  17. 5 3
      src/components/order/OrderInfo.vue
  18. 59 74
      src/components/product/HashCode.vue
  19. 11 11
      src/components/product/ProductBanner.vue
  20. 3 2
      src/components/product/ThreeMode.vue
  21. 1 3
      src/components/product/productInfo.vue
  22. 5 3
      src/components/product/productLarge.vue
  23. 17 17
      src/main.js
  24. 3 2
      src/mixins/banner.js
  25. 1 1
      src/mixins/common.js
  26. 20 20
      src/mixins/level.js
  27. 1 2
      src/mixins/list.js
  28. 10 0
      src/router/index.js
  29. 1 1
      src/styles/app.less
  30. 4 4
      src/styles/font.less
  31. 122 87
      src/views/Discover.vue
  32. 291 210
      src/views/Givesubmit.vue
  33. 5 5
      src/views/Hall.vue
  34. 88 36
      src/views/Home.vue
  35. 153 103
      src/views/Mine.vue
  36. 86 59
      src/views/Store.vue
  37. 52 30
      src/views/Submit.vue
  38. 2 1
      src/views/account/Agreement.vue
  39. 182 158
      src/views/account/ChangePhone.vue
  40. 196 127
      src/views/account/Forget.vue
  41. 6 6
      src/views/account/Introduction.vue
  42. 99 48
      src/views/account/Login.vue
  43. 1 1
      src/views/account/Question.vue
  44. 1 1
      src/views/account/Register.vue
  45. 1 1
      src/views/account/Security.vue
  46. 14 2
      src/views/account/Setting.vue
  47. 159 142
      src/views/account/TradingPassword.vue
  48. 30 22
      src/views/account/Verified.vue
  49. 23 15
      src/views/account/Waiting.vue
  50. 7 7
      src/views/asset/Agreement.vue
  51. 5 3
      src/views/asset/Consignment.vue
  52. 229 101
      src/views/asset/Detail.vue
  53. 7 2
      src/views/order/Detail.vue
  54. 67 52
      src/views/order/Orders.vue
  55. 136 100
      src/views/product/Detail.vue
  56. 757 0
      src/views/product/HopeMarket.vue
  57. 18 4
      src/views/product/List.vue
  58. 120 160
      src/views/product/Search.vue
  59. 224 53
      src/views/user/Banks.vue
  60. 127 109
      src/views/user/BanksAdd.vue
  61. 334 144
      src/views/user/Exchange.vue
  62. 94 99
      src/views/user/accountSecurity.vue
  63. 89 53
      src/views/user/myLove.vue
  64. 1 1
      src/views/user/myOrder.vue
  65. 4 4
      upload.js
  66. 3 3
      vue.config.js

+ 2 - 2
.env.app

@@ -1,7 +1,7 @@
-VUE_APP_BASE_URL=https://www.raex.vip
+VUE_APP_BASE_URL=https://www.adcs.vip
 NODE_ENV=production
 VUE_APP_PUBLIC_PATH=./
 ASSETS_PATH=raex
-TITLE=南京数藏
+TITLE=古藏站
 VUE_APP_CORDOVA=true
 VUE_APP_PAGE_TYPE=raex

+ 2 - 2
.env.app_test

@@ -1,7 +1,7 @@
-VUE_APP_BASE_URL=https://www.raex.vip
+VUE_APP_BASE_URL=https://www.adcs.vip
 NODE_ENV=production
 VUE_APP_PUBLIC_PATH=./
 ASSETS_PATH=raex
-TITLE=南京数藏
+TITLE=古藏站
 VUE_APP_CORDOVA=true
 VUE_APP_PAGE_TYPE=raex

+ 3 - 3
.env.development

@@ -1,6 +1,6 @@
-VUE_APP_BASE_URL=https://njnft.izouma.com/
+VUE_APP_BASE_URL=https://www.adcs.vip
 NODE_ENV=development
 VUE_APP_PUBLIC_PATH=/
 ASSETS_PATH=raex
-TITLE=南京数藏
-VUE_APP_PAGE_TYPE=raex
+TITLE=古藏站
+VUE_APP_PAGE_TYPE=raex

+ 1 - 1
.env.production

@@ -2,5 +2,5 @@ VUE_APP_BASE_URL=/
 NODE_ENV=production
 VUE_APP_PUBLIC_PATH=/9th/
 ASSETS_PATH=raex
-TITLE=南京数藏
+TITLE=古藏站
 VUE_APP_PAGE_TYPE=raex

BIN
src/assets/icon-fenxiang@3x.png


BIN
src/assets/icon_querendingdan.png


BIN
src/assets/icon_shaixuan_sanjiao@3x.png


BIN
src/assets/png-ka@3x.png


BIN
src/assets/png-shangchuan@3x.png


BIN
src/assets/yaoqingtupian.png


+ 7 - 3
src/components/CollectionList.vue

@@ -4,9 +4,9 @@
         <van-image width="100%" height="164px" :src="getImg(info.pic[0].url)" fit="cover" />
         <!-- <van-image width="100%" height="calc(50vw - 24px)" :src="getImg(changeImgs(info.pic, 600))" fit="cover" class="current_recommendation_img"/> -->
         <div class="current_recommendation_title">{{ info.name }}</div>
-        <div class="current_recommendation_price" :style="{ 'padding-left': info.salable ? '18px' : '9px' }">
+        <div class="current_recommendation_price" :style="{ 'padding-left': info.salable ? '16px' : '9px' }">
             <div v-if="info.salable">
-                <div class="current_recommendation_price_one"></div>
+                <div class="current_recommendation_price_one">¥</div>
                 <div class="current_recommendation_price_two">{{ info.price }}</div>
             </div>
             <div v-else class="showOnly">仅展示</div>
@@ -18,7 +18,7 @@
                 <div class="current_recommendation_name">{{ info.owner }}</div>
             </div>
             <div class="current_recommendation_bottom_right">
-                <img :src="info.liked ? likes : noLikes" alt="" />
+                <img :src="info.liked ? likes : noLikes" alt="" class="current_recommendation_bottom_right_img"/>
                 <div class="give_number">{{ info.likes }}</div>
             </div>
         </div>
@@ -171,6 +171,10 @@ export default {
         .current_recommendation_bottom_right {
             display: flex;
             height: 18px;
+            .current_recommendation_bottom_right_img{
+                width: 18px;
+                height: 18px;
+            }
         }
         .current_recommendation_name {
             margin-left: 4px;

+ 2 - 3
src/components/Post.vue

@@ -127,9 +127,8 @@ export default {
                 id = this.info.publicCollectionId;
                 pageUrl = 'productDetail';
             }
-
             if (pageUrl === 'productDetail' && !this.assignment) {
-                pageUrl = 'productDetail/' + id;
+                pageUrl = 'productDetail';
             }
             if (this.isLogin && this.assignment && pageUrl === 'productDetail') {
                 return resolveUrl(
@@ -139,7 +138,7 @@ export default {
             } else if (this.isLogin) {
                 return resolveUrl(
                     this.$baseUrl,
-                    '9th/' + pageUrl + '?id=' + id + '&invitor=' + this.$store.state.userInfo.id
+                    '9th/' + pageUrl + '?collectionId=' + id + '&invitor=' + this.$store.state.userInfo.id
                 );
             } else {
                 return resolveUrl(this.$baseUrl, '9th/' + pageUrl + '?id=' + id);

+ 26 - 12
src/components/UserShare.vue

@@ -2,19 +2,28 @@
     <van-overlay :show="show" @click="show = false">
         <div class="wrapper">
             <img :src="img" @click.stop class="wrapper-img" v-if="img" alt="" />
-            <div class="wrapper-box" v-else ref="post" @click.stop>
-                <div class="wrapper-top">
+            <div class="wrapper-box" ref="post" v-else @click.stop>
+                <van-image
+                    width="100%"
+                    height="480px"
+                    radius="20px"
+                    :src="bg"
+                    fit="cover"
+                />
+                <vue-qrcode :value="url" :options="{ width: 88, margin: 1 }" class="share-code"></vue-qrcode>
+                <!-- <img  alt="" style="width:100%;height:75px"> -->
+                <!-- <div class="wrapper-top">
                     <img :src="avatar" class="avatar" alt="" />
                     <div class="name">{{ userInfo.nickname }}</div>
-                </div>
+                </div> -->
                 <!-- <img class="share2" :src="shareBg" alt="" /> -->
-                <div class="wrapper-text">
+                <!-- <div class="wrapper-text">
                     <div class="wrapper-left">
                         <div class="text1">古玩数字藏品站</div>
                         <div class="text2">扫码立即注册,快去探索吧</div>
                     </div>
                     <vue-qrcode :value="url" :options="{ width: 46, margin: 1 }" class="share-code"></vue-qrcode>
-                </div>
+                </div> -->
             </div>
             <div class="tips">长按图片保存</div>
 
@@ -44,12 +53,12 @@ export default {
         return {
             show: false,
             img: '',
-            avatar: ''
+            bg: ''
         };
     },
     mounted() {
         this.$nextTick(() => {
-            this.getImgBase64(this.userInfo.avatar || require('@assets/img_default_photo.png'), 'avatar');
+            this.getImgBase64('https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/image/2022-05-10-10-00-35xmYxvIiq.jpg', 'bg');
         });
     },
     methods: {
@@ -110,7 +119,8 @@ export default {
     justify-content: center;
 }
 .wrapper-box {
-    width: 240px;
+    width: 340px;
+    height: 480px;
     background: #ffffff;
     border-radius: 20px;
     overflow: hidden;
@@ -133,7 +143,11 @@ export default {
         margin-top: 12px;
     }
 }
-
+.share-code {
+    position: absolute;
+    bottom: 85px;
+    right: 15px;
+}
 .wrapper-text {
     .flex();
     padding: 20px 16px;
@@ -157,8 +171,8 @@ export default {
 }
 .wrapper-img {
     display: block;
-    width: 240px;
-    height: auto;
+    width: 340px;
+    height: 480px;
 }
 .tips {
     font-size: 12px;
@@ -168,7 +182,7 @@ export default {
 .close {
     position: absolute;
     right: 16px;
-    top: 16px;
+    top: 8px;
     width: 24px;
     height: 24px;
 }

+ 18 - 0
src/components/asset/assetInfo.vue

@@ -8,6 +8,8 @@
         }"
     > -->
         <div class="data_display_con" @click="$router.push({path: '/assetDetail',query:{id: info.id}})">
+            <div class="data_display_con_tip" v-if="info.consignment === true">出售中</div>
+            <div class="data_display_con_tip" v-if="info.publicShow === true">展示中</div>
             <!-- <div class="sales_information_tips" v-if="item.salesInformationTips!=''">{{item.salesInformationTips}}</div> -->
             <!-- <img :src="getImg(changeImgs(info.pic))" alt="" class="data_display_con_img"> -->
             <van-image width="100%" height="164px" radius="4" :src="getImg(changeImgs(info.pic))" fit="cover" class="data_display_con_img"/>
@@ -122,6 +124,22 @@ export default {
     border-radius: 8px;
     margin-bottom: 16px;
     position: relative;
+    .data_display_con_tip{
+        width: 50px;
+        height: 18px;
+        background: #FFFFFF;
+        border-radius: 4px;
+        font-size: 10px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #28B6FF;
+        text-align: center;
+        line-height: 18px;
+        position: absolute;
+        left: 10px;
+        top: 10px;
+        z-index: 9;
+    }
     .sales_information_tips{
         width: 50px;
         height: 18px;

+ 1 - 1
src/components/level/Level.vue

@@ -19,7 +19,7 @@
             <div class="box-content">
                 <div class="text1">
                     您已升级至<span :style="{ color: levelInfo.color }">V{{ levelInfo.level }}</span
-                    >,感谢您对RAEX宇宙的信任。愿RAEX宇宙的荣光普照河山!!
+                    >,感谢您对古藏站宇宙的信任。愿古藏站宇宙的荣光普照河山!!
                 </div>
                 <div class="btn">
                     <van-button :color="levelInfo.color" block round>领取</van-button>

+ 3 - 3
src/components/level/LevelCard.vue

@@ -44,7 +44,7 @@
                         >
                     </div>
                     <div class="nowTips" :style="{ color: levelInfo.textColor || levelInfo.color }">
-                        {{ now }}个绿洲
+                        {{ now }}个古藏站
                     </div>
 
                     <div class="text2" :style="{ color: (levelInfo.textColor || levelInfo.color) + '70' }">
@@ -73,7 +73,7 @@
                         >
                     </div>
                     <div class="nowTips" :style="{ color: levelInfo.textColor || levelInfo.color }">
-                        {{ now }}个绿洲
+                        {{ now }}个古藏站
                     </div>
 
                     <div class="text2" :style="{ color: (levelInfo.textColor || levelInfo.color) + '70' }">
@@ -88,7 +88,7 @@
                 <div class="text1" :style="{ color: levelInfo.textColor || levelInfo.color }">
                     距离等级Lv{{ levelInfo.level ? levelInfo.level + 1 : 1 }}还差
                 </div>
-                <div class="text2" :style="{ backgroundColor: levelInfo.color + 'DD' }">{{ need }}个绿洲石</div>
+                <div class="text2" :style="{ backgroundColor: levelInfo.color + 'DD' }">{{ need }}个古藏站石</div>
             </div>
         </div>
     </div>

+ 5 - 3
src/components/order/OrderInfo.vue

@@ -211,7 +211,9 @@ export default {
                 }
             }
         }
-        .list_display_con:last-child{
-            margin-bottom: 0;
-        }
+/deep/ .van-divider::before{
+    height: 1px;
+background: #5F646F;
+opacity: 0.2;
+} 
 </style>

+ 59 - 74
src/components/product/HashCode.vue

@@ -1,14 +1,34 @@
 <template>
-    <van-collapse-item name="hashCode" class="goods-info">
+    <div class="information_on_the_chain_con">链上信息</div>
+    <div v-if="info.txHash">
+        <div class="information_on_the_chain">
+            <span class="information_on_the_chain_title">Hash地址</span>
+            <span class="information_on_the_chain_content"
+                >{{ getShort(info.txHash) }}</span
+            >
+        </div>
+        <div class="information_on_the_chain">
+            <span class="information_on_the_chain_title">区块高度</span>
+            <span class="information_on_the_chain_title">{{ info.blockNumber }}</span>
+        </div>
+        <div class="information_on_the_chain">
+            <span class="information_on_the_chain_title">令牌ID</span>
+            <span class="information_on_the_chain_content"
+                >{{ getShort(info.tokenId) }}</span
+            >
+        </div>
+    </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>
         </template>
-        <div class="page-text" v-if="info.txHash">
+        <div class="page-text">
             <div class="text-info">
                 <span class="text1">Hash地址:</span>
                 <span class="flex1"></span>
                 <img @click="copy(info.txHash)" src="@assets/svgs/copy_icon.svg" alt="" />
-                <span class="van-ellipsis">{{ getShort(info.txHash) }}</span>
+                <span class="van-ellipsis"></span>
             </div>
             <div class="text-info">
                 <span class="text1">区块高度: </span>
@@ -20,16 +40,16 @@
                 <span class="flex1"></span>
                 <img @click="copy(info.tokenId)" src="@assets/svgs/copy_icon.svg" alt="" />
                 <span class="van-ellipsis">{{ getShort(info.tokenId) }}</span>
-            </div>
-            <div class="text-info" v-if="pageType === 'asset'">
+            </div> -->
+    <!-- <div class="text-info" v-if="pageType === 'asset'">
                 <span class="text1">IPFS地址: </span>
                 <span class="flex1"></span>
                 <img @click="copy(info.ipfsUrl)" src="@assets/svgs/copy_icon.svg" alt="" />
                 <span class="van-ellipsis">{{ getShort(info.ipfsUrl) }}</span>
-            </div>
-        </div>
-        <div v-else class="textName">铸造者未设置</div>
-    </van-collapse-item>
+            </div> -->
+    <!-- </div> -->
+
+    <!-- </van-collapse-item> -->
 </template>
 
 <script>
@@ -41,11 +61,11 @@ export default {
             default: () => {
                 return {};
             }
-        },
-        pageType: {
-            type: String,
-            default: 'product'
         }
+        // pageType: {
+        //     type: String,
+        //     default: 'product'
+        // }
     },
     mixins: [product],
     methods: {
@@ -66,72 +86,37 @@ export default {
 </script>
 
 <style lang="less" scoped>
-/deep/.goods-info {
-    .van-cell {
-        // padding: 0 0;
-        &::after {
-            content: none;
-        }
-    }
-}
-.page-title {
-    // padding: 0 16px;
-    font-size: @font2;
-    font-weight: bold;
+.information_on_the_chain_con {
+    font-size: 14px;
+    font-family: PingFangSC-Medium, PingFang SC;
+    font-weight: 500;
     color: #ffffff;
-    line-height: 28px;
-    span {
-        color: @text3;
-        font-size: @font1;
-    }
+    margin-bottom: 8px;
 }
-
-.page-title {
-    font-size: @font2;
-    font-weight: bold;
-    color: #ffffff;
-    line-height: 24px;
+.information_on_the_chain {
     display: flex;
-    align-items: center;
-    &:not(:first-child) {
-        padding-top: 16px;
+    justify-content: space-between;
+    .information_on_the_chain_title {
+        font-size: 14px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #939599;
+        line-height: 24px;
     }
-    img {
-        width: 18px;
-        height: 18px;
-        margin-right: 6px;
+    .information_on_the_chain_content {
+        // width: 158px;
+        font-size: 14px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #939599;
+        line-height: 24px;
+        overflow: hidden; //超出的文本隐藏
+        text-overflow: ellipsis; //溢出用省略号显示
+        white-space: nowrap; //溢出则不换行
     }
 }
-.page-text {
-    font-size: @font2;
-    color: @text3;
-    line-height: 28px;
-    word-break: break-all;
-    // margin-top: 10px;
-    // p {
-    //     font-size: @font2;
-    //     color: #ffffff;
-    //     line-height: 28px;
-    //     // margin-top: 10px;
-    //     word-break: break-all;
-    // }
-
-    .text-info {
-        .flex();
-        .text1 {
-            min-width: 80px;
-        }
-        .van-ellipsis {
-            // width: 200px;
-            text-align: right;
-        }
-
-        img {
-            width: 18px;
-            height: 18px;
-            flex-shrink: 0;
-            margin-right: 6px;
-        }
-    }
+.textName{
+    color: #939599;
+    // text-align: center;
 }
 </style>

+ 11 - 11
src/components/product/ProductBanner.vue

@@ -11,8 +11,8 @@
                     </div> -->
                     <van-image
                         v-if="opened === false"
-                        width="calc(100vw - 134px)"
-                        height="calc(100vw - 134px)"
+                        width="calc(100vw - 150px)"
+                        height="calc(100vw - 150px)"
                         :src="require('../../assets/manghe.png')"
                         fit="cover"
                     />
@@ -32,13 +32,12 @@
                         v-else
                         @click="preview(index, changeImgs(banners))"
                         :src="getImg(item.url, '', 1200)"
-                        width="calc(100vw - 134px)"
-                        height="calc(100vw - 134px)"
+                        width="calc(100vw - 150px)"
+                        height="calc(100vw - 150px)"
                         fit="cover"
                     />
                 </swiper-slide>
             </swiper>
-
             <div class="share-content">
                 <!-- <div class="setAvatar" @click="setAvatar" v-if="pageType == 'asset' && onlyImg">
                     <img src="../../assets/icon-sheweitouxiang.png" alt="" />
@@ -50,7 +49,7 @@
                 </like-button>
 
                 <div class="share-icon shareLeft" @click="share" v-if="isShare && !startTime && !assignment">
-                    <img src="@assets/svgs/icon-fenxiang.svg" alt="" />
+                    <img :src="require('@assets/icon-fenxiang@3x.png')" alt="" />
                     <span>分享</span>
                 </div>
             </div>
@@ -192,7 +191,7 @@ export default {
 @radius: 30px;
 .detail-top {
     position: relative;
-    height: 380px;
+    height: calc(100vw - 50px);
     .detail-info {
         position: absolute;
         top: 50%;
@@ -212,7 +211,9 @@ export default {
         padding: 5px;
         overflow: hidden;
         .detail-animate();
-        width: calc(100vw - 124px);
+        width: calc(100vw - 150px);
+        height: calc(100vw - 150px);
+        margin-bottom: 20px;
         .swiper-slide {
             display: flex;
             align-items: center;
@@ -232,15 +233,14 @@ export default {
 .swiper-video {
     border: 2px solid #2f2f2f;
     border-radius: @radius;
-    width: calc(100vw - 134px);
-    height: calc(100vw - 134px);
+    width: calc(100vw - 150px);
+    height: calc(100vw - 150px);
     display: block;
     overflow: hidden;
 }
 
 .share-content {
     display: flex;
-    margin-top: 20px;
 }
 .share-icon {
     img {

+ 3 - 2
src/components/product/ThreeMode.vue

@@ -183,8 +183,9 @@ export default {
 <style lang="less" scoped>
 .mode {
     canvas {
-        width: 100vw;
-        height: 100vw;
+        width: calc(100vw - 50px) !important;
+        height: calc(100vw - 50px) !important;
+        // height: 100vw -150px;
     }
 }
 </style>

+ 1 - 3
src/components/product/productInfo.vue

@@ -99,9 +99,7 @@ export default {
             if (!this.usedBuy && this.info.source === 'TRANSFER') {
                 this.$toast('该通道暂且关闭');
             } else {
-                this.$router.push({
-                    path: '/productDetail/' + this.info.id
-                });
+                this.$router.push({ path: '/productDetail', query: { collectionId: this.info.id } });
             }
         }
     }

+ 5 - 3
src/components/product/productLarge.vue

@@ -16,7 +16,7 @@
             <!-- 已售完 -->
             <div class="shop_sold_out" v-if="isSolded">已售罄</div>
             <!-- 即将售罄 -->
-            <div class="shop_sold_out" v-else-if="isSold" style="color: #ff4f50">即将售罄</div>
+            <div class="shop_sold_out" v-else-if="isSold">即将售罄</div>
             <!-- <img :src="getImg(changeImgs(info.pic, 600))" alt="" class="commodity_map" /> -->
             <van-image width="100%" height="343px" :radius="20" :src="getImg(changeImgs(info.pic))" fit="cover" />
             <div class="shop_title">{{ info.name }}</div>
@@ -107,7 +107,7 @@ export default {
 <style lang="less" scoped>
 .shop_list {
     width: 100%;
-            height: 449px;
+            height: 455px;
             background: #29293f;
             border-radius: 20px;
             margin-bottom: 20px;
@@ -146,6 +146,7 @@ export default {
                 position: absolute;
                 top: 16px;
                 left: 16px;
+                z-index: 99;
             }
             .commodity_map {
                 width: 100%;
@@ -153,6 +154,7 @@ export default {
                 border-radius: 30px;
             }
             .shop_title {
+                margin-bottom: 6px;
                 padding: 10px 16px 6px 16px;
                 box-sizing: border-box;
                 font-size: 14px;
@@ -182,7 +184,7 @@ export default {
                     box-sizing: border-box;
                     height: 22px;
                     background: rgba(255, 255, 255, 0.1);
-                    border-radius: 4px;
+                    border-radius: 0px 4px 4px 0px;
                     font-size: 12px;
                     font-family: PingFangSC-Regular, PingFang SC;
                     font-weight: 400;

+ 17 - 17
src/main.js

@@ -133,7 +133,7 @@ const loadSplash = (onload, onerror) =>
         setTimeout(() => {
             hideSplash();
         }, 5000);
-        splash.src = 'https://cdn.raex.vip/splash.jpg?ts=' + new Date().getTime();
+        splash.src = 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/splash.jpg?ts=' + new Date().getTime();
         // document.body.append(splash);
     });
 
@@ -216,22 +216,22 @@ if (navigator.userAgent.includes('#cordova#')) {
                 false
             );
 
-            if (!(/.+\.raex\.vip/.test(location.host) || /192\.168/.test(location.host))) {
-                if (!/iphone|ipad|ipod|Macintosh/i.test(navigator.userAgent)) {
-                    window.$vm.$dialog.alert({
-                        message: '检测到新版本,请下载更新',
-                        confirmButtonText: '下载更新',
-                        beforeClose(action, done) {
-                            console.log(action);
-                            if (/iphone|ipad|ipod|Macintosh/i.test(navigator.userAgent)) {
-                                //location.href = 'https://apps.apple.com/cn/app/id1598469798';
-                            } else {
-                                location.href = 'http://download.raex.vip';
-                            }
-                        }
-                    });
-                }
-            }
+            // if (!(/.+\.raex\.vip/.test(location.host) || /192\.168/.test(location.host))) {
+            //     if (!/iphone|ipad|ipod|Macintosh/i.test(navigator.userAgent)) {
+            //         window.$vm.$dialog.alert({
+            //             message: '检测到新版本,请下载更新',
+            //             confirmButtonText: '下载更新',
+            //             beforeClose(action, done) {
+            //                 console.log(action);
+            //                 if (/iphone|ipad|ipod|Macintosh/i.test(navigator.userAgent)) {
+            //                     //location.href = 'https://apps.apple.com/cn/app/id1598469798';
+            //                 } else {
+            //                     location.href = 'http://download.raex.vip';
+            //                 }
+            //             }
+            //         });
+            //     }
+            // }
 
             if (window.store && /iphone|ipad|ipod|Macintosh/i.test(navigator.userAgent)) {
                 window.store.register({

+ 3 - 2
src/mixins/banner.js

@@ -2,11 +2,12 @@ export default {
     methods: {
         goNext(info, props = '') {
             if (info.link && info.linkType === 'collection') {
-                this.$router.push(`/productDetail/${info.linkContent}${props}`);
+                this.$router.push(`/productDetail?collectionId=${info.linkContent}${props}`);
             } else if (info.link && info.linkType === 'user') {
                 this.$router.push(`/creatorDetail?id=${info.linkContent}${props}`);
             } else if (info.link && info.linkType === 'activity') {
-                this.$router.push(`/activityDetail?id=${info.linkContent}${props}`);
+                // this.$router.push(/activityDetail?id=${info.linkContent}${props}`);
+                this.$router.push("/mineAccountSecurity")
             } else if (info.link && info.linkType === 'collections') {
                 this.$router.push(`/productSearch?search=${info.linkContent}${props}`);
             }

+ 1 - 1
src/mixins/common.js

@@ -183,7 +183,7 @@ export default {
         },
         backReson(error) {
             if (error && error.indexOf('超过商户单日额度') !== -1) {
-                return '绿洲宇宙冷却系统已启动,请稍后支付。';
+                return '古藏站冷却系统已启动,请稍后支付。';
             } else {
                 return error;
             }

+ 20 - 20
src/mixins/level.js

@@ -7,8 +7,8 @@ export default {
                     end: 9,
                     color1: '#717171',
                     color: '#3B445D',
-                    vicon: 'https://cdn.raex.vip/medals/v.png',
-                    icon: 'https://cdn.raex.vip/medals/LV0-1-icon.png',
+                    vicon: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/v.png',
+                    icon: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/LV0-1-icon.png',
                     hide: true,
                     textColor: '#ffffff',
                     startColor: '#A5AEC9',
@@ -20,8 +20,8 @@ export default {
                     color: '#557595',
                     startColor: '#AAD4FF',
                     endColor: '#C5E2FF',
-                    icon: 'https://cdn.raex.vip/medals/LV10-19-icon.png',
-                    bg: 'https://cdn.raex.vip/medals/V10-19.png'
+                    icon: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/LV10-19-icon.png',
+                    bg: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/V10-19.png'
                 },
                 {
                     start: 20,
@@ -29,8 +29,8 @@ export default {
                     color: '#A65F3B',
                     startColor: '#fec391',
                     endColor: '#fde9cb',
-                    icon: 'https://cdn.raex.vip/medals/LV20-29-icon.png',
-                    bg: 'https://cdn.raex.vip/medals/V20-29.png'
+                    icon: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/LV20-29-icon.png',
+                    bg: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/V20-29.png'
                 },
                 {
                     start: 30,
@@ -38,8 +38,8 @@ export default {
                     color: '#3C62FF',
                     startColor: '#B6C2FF',
                     endColor: '#A8B7FF',
-                    icon: 'https://cdn.raex.vip/medals/LV30-39-icon.png',
-                    bg: 'https://cdn.raex.vip/medals/V30-39.png'
+                    icon: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/LV30-39-icon.png',
+                    bg: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/V30-39.png'
                 },
                 {
                     start: 40,
@@ -47,8 +47,8 @@ export default {
                     color: '#663FA7',
                     startColor: '#CEAFFF',
                     endColor: '#C19AFF',
-                    icon: 'https://cdn.raex.vip/medals/LV40-49-icon.png',
-                    bg: 'https://cdn.raex.vip/medals/V40-49.png'
+                    icon: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/LV40-49-icon.png',
+                    bg: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/V40-49.png'
                 },
                 {
                     start: 50,
@@ -56,8 +56,8 @@ export default {
                     color: '#1076E1',
                     startColor: '#B3EAFF',
                     endColor: '#7CDAFF',
-                    icon: 'https://cdn.raex.vip/medals/LV50-59-icon.png',
-                    bg: 'https://cdn.raex.vip/medals/V50-59.png'
+                    icon: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/LV50-59-icon.png',
+                    bg: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/V50-59.png'
                 },
                 {
                     start: 60,
@@ -65,8 +65,8 @@ export default {
                     color: '#DB31CA',
                     startColor: '#FFBEF8',
                     endColor: '#FF8DF5',
-                    icon: 'https://cdn.raex.vip/medals/LV60-69-icon.png',
-                    bg: 'https://cdn.raex.vip/medals/V60-69.png'
+                    icon: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/LV60-69-icon.png',
+                    bg: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/V60-69.png'
                 },
                 {
                     start: 70,
@@ -74,8 +74,8 @@ export default {
                     color: '#3D26D2',
                     startColor: '#B6AAFC',
                     endColor: '#9F8EFF',
-                    icon: 'https://cdn.raex.vip/medals/LV70-79-icon.png',
-                    bg: 'https://cdn.raex.vip/medals/V70-79.png'
+                    icon: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/LV70-79-icon.png',
+                    bg: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/V70-79.png'
                 },
                 {
                     start: 80,
@@ -83,8 +83,8 @@ export default {
                     color: '#DF1637',
                     startColor: '#FFB2B9',
                     endColor: '#F89BA3',
-                    icon: 'https://cdn.raex.vip/medals/LV80-89-icon.png',
-                    bg: 'https://cdn.raex.vip/medals/V80-89.png'
+                    icon: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/LV80-89-icon.png',
+                    bg: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/V80-89.png'
                 },
                 {
                     start: 90,
@@ -92,8 +92,8 @@ export default {
                     color: '#FA6802',
                     startColor: '#FFE3BB',
                     endColor: '#FFCF8C',
-                    icon: 'https://cdn.raex.vip/medals/LV90-99-icon.png',
-                    bg: 'https://cdn.raex.vip/medals/V90-99.png'
+                    icon: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/LV90-99-icon.png',
+                    bg: 'https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/V90-99.png'
                 }
             ],
             levels: [],

+ 1 - 2
src/mixins/list.js

@@ -15,7 +15,7 @@ export default {
                 this.list = [];
                 this.$root.$el.scrollTop = scrollTop;
             }
-            this.loading = true;
+            this.loading = true; 
             this.finished = false;
             this.empty = false;
             let data = { page: this.page, size: 20, sort: 'createdAt,desc' };
@@ -25,7 +25,6 @@ export default {
                     ...this.beforeData()
                 };
             }
-
             if (this.httpType === 'get') {
                 return this.$http.get(this.url, data, { body: 'json' }).then(res => {
                     if (res.first) {

+ 10 - 0
src/router/index.js

@@ -339,6 +339,16 @@ const routes = [
             title: '第九空间'
         }
     },
+    {
+        path: '/hopeMarket',
+        name: 'hopeMarket',
+        component: () => import('../views/product/HopeMarket.vue'),
+        meta: {
+            pageType: Page.Every,
+            // tabColor: '#222426',
+            title: '二手市场'
+        }
+    },
     {
         path: '/productSearch',
         name: 'productSearch',

+ 1 - 1
src/styles/app.less

@@ -257,7 +257,7 @@ input:-webkit-autofill {
     position: relative;
     &::after {
         content: '';
-        background-image: url(https://cdn.raex.vip/png-touxiangkuang.png);
+        background-image: url(https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/png-touxiangkuang.png);
         background-size: 100% 100%;
         position: absolute;
         left: 50%;

+ 4 - 4
src/styles/font.less

@@ -1,20 +1,20 @@
 @font-face {
   font-family: 'ZhenyanGB';
-  src: url(https://zhirongip.oss-cn-hangzhou.aliyuncs.com/fonts/RuiZiZhenYanTiMianFeiShangYong-2.ttf);
+  src: url(https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/RuiZiZhenYanTiMianFeiShangYong-2.ttf);
 }
 
 @font-face {
   font-family: 'OSP';
-  src: url(https://cdn.raex.vip/font/OSP-DIN.ttf);
+  src: url(https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/OSP-DIN.ttf);
 }
 
 @font-face {
   font-family: 'DIN';
-  src: url(https://cdn.raex.vip/font/OSP-DIN.ttf);
+  src: url(https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/OSP-DIN.ttf);
 }
 @font-face {
   font-family: 'SourceHanSans-Medium';
-  src: url(https://cdn.raex.vip/font/SourceHanSans-Medium.otf);
+  src: url(https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/SourceHanSans-Medium.otf);
 }
 
 

+ 122 - 87
src/views/Discover.vue

@@ -1,66 +1,86 @@
 <template>
     <!-- 顶部导航栏 -->
     <!-- <TopNavigation/> -->
-    <div
-        class="explore_content"
-        :class="
-            (currentRecommendationList.length < 3 && hotCollectionList.length == 0) ||
-            (currentRecommendationList.length == 0 && hotCollectionList.length < 3)
-                ? 'shop_list_one'
-                : ''
-        "
+    <!-- 搜素 -->
+    <van-pull-refresh
+        success-text="加载成功"
+        success-duration="1000"
+        class="discover"
+        v-model="isLoading"
+        @refresh="onRefresh"
     >
-        <!-- 搜素 -->
-        <div class="search" @click="$router.push('/productSearch')">
-            <img src="@assets/icon-sosuo.png" alt="" class="search_img" />
-            <span class="search_text">搜索你想要的</span>
-        </div>
-        <!-- 商品展示 -->
-        <div class="commodity_display">
-            <!-- <van-swipe :loop="false" :width="94" :height="90" :show-indicators="false">
+        <van-sticky :offset-top="0">
+            <div class="search_con">
+                <div class="search" @click="$router.push('/productSearch')">
+                    <img src="@assets/icon-sosuo.png" alt="" class="search_img" />
+                    <span class="search_text">搜索你想要的</span>
+                </div>
+            </div>
+        </van-sticky>
+        <div
+            class="explore_content"
+            :class="
+                (currentRecommendationList.length < 3 && hotCollectionList.length == 0) ||
+                (currentRecommendationList.length == 0 && hotCollectionList.length < 3)
+                    ? 'shop_list_one'
+                    : ''
+            "
+        >
+            <!-- 商品展示 -->
+            <div class="commodity_display">
+                <!-- <van-swipe :loop="false" :width="94" :height="90" :show-indicators="false">
                 <van-swipe-item v-for="(item, index) in commodityDisplayList" :key="index">
                     <van-image width="94px" height="90px" :src="getImg(item.pic)" fit="cover" />
                 </van-swipe-item>
             </van-swipe> -->
-            <swiper v-if="commodityDisplayList.length > 0" slides-per-view="auto">
-                <swiper-slide class="setting" v-for="item in commodityDisplayList" :key="item.id" style="width: 94px">
-                    <van-image width="94px" height="90px" radius="8" :src="getImg(item.pic)" fit="cover" />
-                </swiper-slide>
-            </swiper>
-        </div>
-        <!-- banner图展示 -->
-        <div class="banner">
-            <div class="banner_con" v-for="(item, index) in bannerList" :key="index" @click="showJump(index)">
-                <img :src="item.img" alt="" class="banner_con_img" />
-                <div class="banner_con_title">
-                    <div class="banner_con_titleone">{{ item.titleone }}</div>
-                    <div class="banner_con_titletwo">{{ item.titletwo }}</div>
-                </div>
+                <swiper v-if="commodityDisplayList.length > 0" slides-per-view="auto">
+                    <swiper-slide
+                        class="setting"
+                        v-for="item in commodityDisplayList"
+                        :key="item.id"
+                        style="width: 94px"
+                    >
+                        <van-image width="94px" height="90px" radius="8" :src="getImg(item.pic)" fit="cover" @click="goNext(item)"/>
+                    </swiper-slide>
+                </swiper>
             </div>
-        </div>
-        <div class="content_list">
-            <!-- 本期推荐 -->
-            <page-title title="本期推荐" :to="{ path: '/productList', query: { type: 'DEFAULT', title: '本期推荐' } }">
-            </page-title>
-            <div class="current_recommendation">
-                <template v-for="(item, index) in currentRecommendationList" :key="item.id">
-                    <CollectionList v-model:info="currentRecommendationList[index]"></CollectionList
-                ></template>
+            <!-- banner图展示 -->
+            <div class="banner">
+                <div class="banner_con" v-for="(item, index) in bannerList" :key="index" @click="showJump(index)">
+                    <img :src="item.img" alt="" class="banner_con_img" />
+                    <div class="banner_con_title">
+                        <div class="banner_con_titleone">{{ item.titleone }}</div>
+                        <!-- <div class="banner_con_titletwo">{{ item.titletwo }}</div> -->
+                    </div>
+                </div>
             </div>
-            <!-- <List :dataList="currentRecommendationList"></List> -->
-            <!-- 最HOT收藏品 -->
-            <page-title
-                title="最HOT收藏品"
-                :to="{ path: '/productList', query: { type: 'DEFAULT', title: '最HOT收藏品' } }"
-            >
-            </page-title>
-            <div class="current_recommendation">
-                <template v-for="(item, index) in hotCollectionList" :key="item.id">
-                    <CollectionList v-model:info="hotCollectionList[index]"></CollectionList
-                ></template>
+            <div class="content_list">
+                <!-- 本期推荐 -->
+                <page-title
+                    title="本期推荐"
+                    :to="{ path: '/productList', query: { type: 'DEFAULT', title: '本期推荐' } }"
+                >
+                </page-title>
+                <div class="current_recommendation">
+                    <template v-for="(item, index) in currentRecommendationList" :key="item.id">
+                        <CollectionList v-model:info="currentRecommendationList[index]"></CollectionList
+                    ></template>
+                </div>
+                <!-- <List :dataList="currentRecommendationList"></List> -->
+                <!-- 最HOT收藏品 -->
+                <page-title
+                    title="最HOT收藏品"
+                    :to="{ path: '/productList', query: { type: 'DEFAULT', title: '最HOT收藏品' } }"
+                >
+                </page-title>
+                <div class="current_recommendation">
+                    <template v-for="(item, index) in hotCollectionList" :key="item.id">
+                        <CollectionList v-model:info="hotCollectionList[index]"></CollectionList
+                    ></template>
+                </div>
             </div>
         </div>
-    </div>
+    </van-pull-refresh>
 </template>
 
 <script>
@@ -82,11 +102,12 @@ import 'swiper/swiper-bundle.min.css';
 // import CreatorInfo from '../components/creator/CreatorInfo.vue';
 import product from '../mixins/product';
 import CollectionList from '../components/CollectionList.vue';
+import banner from '../mixins/banner';
 // import TopNavigation from "../components/TopNavigation.vue"
 export default {
     // name: 'discover',
     // inject: ['bar', 'setKeeps', 'scrollWrapper', 'changeScroll'],
-    mixins: [product],
+    mixins: [product,banner],
     components: {
         CollectionList,
         Swiper,
@@ -101,17 +122,17 @@ export default {
     data() {
         return {
             page: 0,
+            isLoading: true,
             bannerList: [
                 {
                     img: require('@assets/icon-jingxuan.png'),
-                    titleone: '精选推荐',
-                    titletwo: '介绍介绍介绍介绍'
+                    titleone: '精选推荐'
+                    // titletwo: '介绍介绍介绍介绍'
                 },
-                {
-                    img: require('@assets/icon-zhanlan.png'),
-                    titleone: '藏品展览',
-                    titletwo: '介绍介绍介绍介绍'
-                }
+                // {
+                //     img: require('@assets/icon-zhanlan.png'),
+                //     titleone: '藏品展览'
+                // }
             ],
             // 商品展示列表
             commodityDisplayList: [],
@@ -150,8 +171,9 @@ export default {
             if (index == 0) {
                 // this.$router.push( "/productList")
                 this.$router.push({ path: '/productList', query: { title: '精选推荐' } });
-            }else{
-                this.wait()
+            } else {
+                this.$router.push({ path: '/hopeMarket', query: { title: '藏品展览' } });
+                // this.wait();
             }
         },
         // 获取图片展示数据
@@ -212,6 +234,12 @@ export default {
                     // this.miners = res.content;
                     console.log('12354664', res.content);
                 });
+        },
+        onRefresh() {
+            this.page = 0;
+            Promise.all([this.getInit(), this.$store.dispatch('getUsedBuy')]).then(res => {
+                this.isLoading = false;
+            });
         }
     },
     activated() {
@@ -363,39 +391,19 @@ export default {
     height: 100%;
     position: absolute;
 }
-.setting {
-    height: 90px;
-    margin-right: 16px;
-}
-.setting:last-child{
-    margin-right: 0px;
-}
-.current_recommendation {
-    width: 100%;
-    display: flex;
-    justify-content: space-between;
-    flex-wrap: wrap;
-}
-.explore_content {
-    width: 100%;
+.discover{
     background: #0f0f27;
-    padding: 12px 16px 16px 16px;
-    // margin-top: 44px;
+}
+.search_con {
+    padding: 12px 16px 24px 16px;
     box-sizing: border-box;
-    /deep/ .van-cell__title span {
-        color: #ffffff;
-    }
-    /deep/ .van-cell {
-        padding: 4px 0px 8px 2px;
-        box-sizing: border-box;
-    }
+    background: #0f0f27;
     .search {
         width: 100%;
         height: 32px;
         background: #29293f;
         border-radius: 4px;
         padding: 5px 0 4px 33px;
-        margin-bottom: 24px;
         box-sizing: border-box;
         position: relative;
         .search_img {
@@ -412,6 +420,33 @@ export default {
             color: #5f646f;
         }
     }
+}
+.setting {
+    height: 90px;
+    margin-right: 16px;
+}
+.setting:last-child {
+    margin-right: 0px;
+}
+.current_recommendation {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    flex-wrap: wrap;
+}
+.explore_content {
+    width: 100%;
+    background: #0f0f27;
+    padding: 0px 16px 16px 16px;
+    // margin-top: 44px;
+    box-sizing: border-box;
+    /deep/ .van-cell__title span {
+        color: #ffffff;
+    }
+    /deep/ .van-cell {
+        padding: 4px 0px 8px 2px;
+        box-sizing: border-box;
+    }
     /deep/ .van-swipe__track {
         width: 100%;
     }
@@ -452,7 +487,7 @@ export default {
                 margin-right: 4px;
             }
             .banner_con_title {
-                padding-top: 8px;
+                padding-top: 14px;
                 .banner_con_titleone {
                     font-size: 16px;
                     font-family: PingFangSC-Semibold, PingFang SC;

+ 291 - 210
src/views/Givesubmit.vue

@@ -6,7 +6,14 @@
             <div class="gift_confirmation_information_title">用户信息</div>
             <van-divider />
             <div class="gift_confirmation_information_con">
-                <van-image width="40px" height="40px" radius="65" :src="getImg(infos.avatar)" fit="cover" style="margin-right: 10px"/>
+                <van-image
+                    width="40px"
+                    height="40px"
+                    radius="65"
+                    :src="getImg(infos.avatar)"
+                    fit="cover"
+                    style="margin-right: 10px"
+                />
                 <div>
                     <div class="gift_confirmation_information_con_name">{{ infos.realName || '保密' }}</div>
                     <div class="gift_confirmation_information_con_phone">手机号码&nbsp;{{ infos.phone }}</div>
@@ -16,7 +23,7 @@
         <div class="transaction_password">
             <div class="transaction_password_one">
                 <div class="transaction_password_one_title">请输入交易密码</div>
-                <div class="transaction_password_forget">
+                <div class="transaction_password_forget" @click="$router.push('/tradingPassword')">
                     忘记密码
                     <van-divider />
                 </div>
@@ -26,20 +33,19 @@
                 <!-- v-if="sets" -->
                 <!-- 密码输入框 -->
                 <van-password-input
-                :value="password"
-                :gutter="10"
-                :focused="showKeyboard"
-                @focus="showKeyboard = true"
+                    :value="password"
+                    :gutter="10"
+                    :focused="showKeyboard"
+                    @focus="showKeyboard = true"
                 />
                 <!-- 数字键盘 -->
                 <van-number-keyboard
-                v-model="password"
-                :show="showKeyboard"
-                @blur="showKeyboard = false"
-                maxlength="6"
-                theme="custom"
-                close-button-text="完成"
-                random-key-order
+                    v-model="password"
+                    :show="showKeyboard"
+                    @blur="showKeyboard = false"
+                    maxlength="6"
+                    theme="custom"
+                    close-button-text="完成"
                 />
             </div>
             <!-- <div v-else class="text3" @click="$router.push('/tradingPassword')">您当前没有交易密码,点击去设置</div> -->
@@ -48,24 +54,33 @@
             <div class="additional_costs_left">GAS费用</div>
             <div class="additional_costs_right">¥{{ gas }}</div>
         </div>
-        <div class="payment_method">
+        <!-- <div class="payment_method">
             <div class="payment_method_con" @click="payType = item.type" v-for="(item, index) in payInfos" :key="index">
                 <div class="payment_method_con_left">
-                    <img :src="item.icon" alt="" class="payment_method_img">
-                    <div class="payment_method_title">{{item.name}}</div>
+                    <img :src="item.icon" alt="" class="payment_method_img" />
+                    <div class="payment_method_title">{{ item.name }}</div>
                 </div>
                 <van-radio-group v-model="payType">
                     <van-radio :name="item.type" icon-size="24px" checked-color="#28B6FF"></van-radio>
                 </van-radio-group>
             </div>
-        </div>  
+        </div> -->
+        <div class="payment_method">
+            <div class="payment_method_con" @click="payType = item.type" v-for="(item, index) in payInfos" :key="index">
+                <div class="payment_method_con_left">
+                    <img :src="item.icon" alt="" class="payment_method_img" />
+                    <div class="payment_method_title">{{ item.name }}</div>
+                </div>
+                <img class="choose-icon" :src="payType === item.type ? icons[1] : icons[0]" alt="" />
+            </div>
+        </div>
     </div>
     <div class="gift_button">
         <div class="gift_button_cancel" @click="$router.go(-1)">取消</div>
         <div class="gift_button_payment" @click="submit">
             <a id="pay" :href="hrefUrl"></a>
-        确认支付</div>
-        
+            确认支付
+        </div>
     </div>
 </template>
 
@@ -87,7 +102,7 @@ export default {
     data() {
         return {
             info: {},
-            infos:{},
+            infos: {},
             message: '',
             password: '',
             enable_wx_lite: false,
@@ -133,7 +148,7 @@ export default {
         }
     },
     mounted() {
-        this.getGiverInformation()
+        this.getGiverInformation();
         this.$toast.loading({
             message: '加载中...',
             forbidClick: true
@@ -174,14 +189,14 @@ export default {
         });
     },
     methods: {
-        getGiverInformation(){
+        getGiverInformation() {
             this.$http
                 .post('/user/searchByPhone', {
                     phone: this.$route.query.phone
                 })
-                .then(res=>{
-                    this.infos = res
-                })
+                .then(res => {
+                    this.infos = res;
+                });
         },
         passFn() {
             this.$http
@@ -247,36 +262,92 @@ export default {
                                     //     resolveUrl(this.$baseUrl, 'payOrder/gift/alipay?id=' + res.id)
                                     // );
                                     if (this.inWeixin) {
-                                        document.location.replace(
-                                            resolveUrl(this.$baseUrl, '/payOrder/gift/alipay_wx?id=' + res.id)
-                                        );
+                                        if (this.gas === '0') {
+                                            this.$http
+                                                .get('/payOrder/gift/alipay_wx?id=' + res.id)
+                                                .then(res => {
+                                                    this.$toast.success('转赠成功');
+                                                    this.getOrder(true);
+                                                    // setTimeout(() => {
+                                                        // this.$router.push({
+                                                        //     path: '/orderDetail',
+                                                        //     query: {
+                                                        //         id: res.id,
+                                                        //     }
+                                                        // });
+                                                        // this.$router.replace('/orders');
+                                                        // document.location.replace("https://www.adcs.vip/9th/giftOrder/223639");
+                                                        // this.$router.replace('/giftOrder/' + order.getId());
+                                                    // }, 1000);
+                                                })
+                                                .catch(e => {
+                                                    if (e.error) {
+                                                        this.$toast(e.error);
+                                                    }
+                                                });
+                                        } else {
+                                            document.location.replace(
+                                                resolveUrl(this.$baseUrl, '/payOrder/gift/alipay_wx?id=' + res.id)
+                                            );
+                                        }
                                     } else {
-                                        this.$http
-                                            .get(
-                                                `/payOrder/gift/${this.inApp ? 'alipay_app' : 'alipay_h5'}?id=${res.id}`
-                                            )
-                                            .then(res => {
-                                                this.hrefUrl =
-                                                    'alipays://platformapi/startapp?saId=10000007&qrcode=' + res;
-                                                // window.open(
-                                                //     'alipays://platformapi/startapp?saId=10000007&qrcode=' + res,
-                                                //     '_blank'
-                                                // );
-                                                this.$nextTick(() => {
-                                                    document.getElementById('pay').click();
+                                        if (this.gas === '0') {
+                                            this.$http
+                                                .get(
+                                                    `/payOrder/gift/${this.inApp ? 'alipay_app' : 'alipay_h5'}?id=${
+                                                        res.id
+                                                    }`
+                                                )
+                                                .then(res => {
+                                                    this.$toast.success('转赠成功');
+                                                    this.getOrder(true);
+                                                    // setTimeout(() => {
+                                                        // this.$router.push({
+                                                        //     path: '/orderDetail',
+                                                        //     query: {
+                                                        //         id: res.id,
+                                                        //     }
+                                                        // });
+                                                        // this.$router.replace('/giftOrder/' + order.getId());
+                                                        // this.$router.replace('/orders');
+                                                        // document.location.replace("https://www.adcs.vip/9th/giftOrder/223639");
+                                                    // }, 1000);
+                                                })
+                                                .catch(e => {
+                                                    if (e.error) {
+                                                        this.$toast(e.error);
+                                                    }
                                                 });
+                                        } else {
+                                            this.$http
+                                                .get(
+                                                    `/payOrder/gift/${this.inApp ? 'alipay_app' : 'alipay_h5'}?id=${
+                                                        res.id
+                                                    }`
+                                                )
+                                                .then(res => {
+                                                    this.hrefUrl =
+                                                        'alipays://platformapi/startapp?saId=10000007&qrcode=' + res;
+                                                    // window.open(
+                                                    //     'alipays://platformapi/startapp?saId=10000007&qrcode=' + res,
+                                                    //     '_blank'
+                                                    // );
+                                                    this.$nextTick(() => {
+                                                        document.getElementById('pay').click();
+                                                    });
 
-                                                this.$toast.loading({
-                                                    message: '加载中...',
-                                                    forbidClick: true
+                                                    this.$toast.loading({
+                                                        message: '加载中...',
+                                                        forbidClick: true
+                                                    });
+                                                    this.getOrder(true);
+                                                })
+                                                .catch(e => {
+                                                    if (e.error) {
+                                                        this.$toast(e.error);
+                                                    }
                                                 });
-                                                this.getOrder(true);
-                                            })
-                                            .catch(e => {
-                                                if (e.error) {
-                                                    this.$toast(e.error);
-                                                }
-                                            });
+                                        }
                                     }
                                 } else if (this.payType === 'WEIXIN') {
                                     if (this.inWeixin) {
@@ -340,197 +411,207 @@ export default {
 </script>
 
 <style lang="less" scoped>
-    .content{
+.content {
+    width: 100%;
+    height: 100%;
+    position: absolute;
+    background: #0a0a1b;
+    padding: 16px;
+    box-sizing: border-box;
+    .gift_confirmation {
+        font-size: 20px;
+        font-family: PingFangSC-Medium, PingFang SC;
+        font-weight: 500;
+        margin-bottom: 6px;
+        color: #ffffff;
+    }
+    .gift_confirmation_tip {
+        font-size: 12px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #939599;
+        margin-bottom: 20px;
+    }
+    .gift_confirmation_information {
         width: 100%;
-        height: 100%;
-        position: absolute;
-        background: #0A0A1B;
-        padding: 16px;
+        height: 103px;
+        background: #29293f;
+        border-radius: 8px;
+        padding: 10px;
         box-sizing: border-box;
-        .gift_confirmation{
-            font-size: 20px;
-            font-family: PingFangSC-Medium, PingFang SC;
-            font-weight: 500;
-            margin-bottom: 6px;
-            color: #FFFFFF;
-        }
-        .gift_confirmation_tip{
-            font-size: 12px;
+        .gift_confirmation_information_title {
+            font-size: 14px;
             font-family: PingFangSC-Regular, PingFang SC;
             font-weight: 400;
-            color: #939599;
-            margin-bottom: 20px;
+            color: #ffffff;
+            line-height: 24px;
+            margin-bottom: 4px;
         }
-        .gift_confirmation_information{
-            width: 100%;
-            height: 103px;
-            background: #29293F;
-            border-radius: 8px;
-            padding: 10px;
-            box-sizing: border-box;
-            .gift_confirmation_information_title{
+        .gift_confirmation_information_con {
+            margin-top: 8px;
+            display: flex;
+            // .gift_confirmation_information_con_img{
+            //     width: 40px;
+            //     height: 40px;
+            //     border-radius: 65px;
+            //     margin-right: 10px;
+            // }
+            .gift_confirmation_information_con_name {
                 font-size: 14px;
                 font-family: PingFangSC-Regular, PingFang SC;
                 font-weight: 400;
-                color: #FFFFFF;
+                color: #ffffff;
                 line-height: 24px;
-                margin-bottom: 4px;
-            }
-            .gift_confirmation_information_con{
-                margin-top: 8px;
-                display: flex;
-                // .gift_confirmation_information_con_img{
-                //     width: 40px;
-                //     height: 40px;
-                //     border-radius: 65px;
-                //     margin-right: 10px;
-                // }
-                .gift_confirmation_information_con_name{
-                    font-size: 14px;
-                    font-family: PingFangSC-Regular, PingFang SC;
-                    font-weight: 400;
-                    color: #FFFFFF;
-                    line-height: 24px;
-                }
-                .gift_confirmation_information_con_phone{
-                    font-size: 12px;
-                    font-family: PingFangSC-Regular, PingFang SC;
-                    font-weight: 400;
-                    color: #939599;
-                    line-height: 17px;
-                }
-            }
-        }
-        .transaction_password{
-            width: 100%;
-            height: 103px;
-            background: #29293F;
-            border-radius: 8px;
-            padding: 10px;
-            box-sizing: border-box;
-            margin-top: 10px;
-            .transaction_password_one{
-                display: flex;
-                justify-content: space-between;
-                margin-bottom: 4px;
-                .transaction_password_one_title{
-                    font-size: 14px;
-                    font-family: PingFangSC-Regular, PingFang SC;
-                    font-weight: 400;
-                    color: #FFFFFF;
-                }
-                .transaction_password_forget{
-                    width: 48px;
-                    font-size: 12px;
-                    font-family: PingFangSC-Regular, PingFang SC;
-                    font-weight: 400;
-                    color: #939599;
-                }
             }
-            /deep/ .van-password-input{
-                margin: 0;
-                margin-top: 8px;
-                .van-password-input__item{
-                    width: 44px;
-                    height: 44px;
-                    background: rgba(10, 10, 27, 0.3);
-                    border-radius: 8px;
-                }
+            .gift_confirmation_information_con_phone {
+                font-size: 12px;
+                font-family: PingFangSC-Regular, PingFang SC;
+                font-weight: 400;
+                color: #939599;
+                line-height: 17px;
             }
         }
-        .additional_costs{
-            width: 100%;
-            margin-top: 10px;
-            background: #29293F;
-            border-radius: 8px;
-            padding: 12px 10px;
-            box-sizing: border-box;
+    }
+    .transaction_password {
+        width: 100%;
+        height: 103px;
+        background: #29293f;
+        border-radius: 8px;
+        padding: 10px;
+        box-sizing: border-box;
+        margin-top: 10px;
+        .transaction_password_one {
             display: flex;
             justify-content: space-between;
-            .additional_costs_left{
+            margin-bottom: 4px;
+            .transaction_password_one_title {
                 font-size: 14px;
                 font-family: PingFangSC-Regular, PingFang SC;
                 font-weight: 400;
-                color: #FFFFFF;
+                color: #ffffff;
             }
-            .additional_costs_right{
-                font-size: 14px;
-                font-family: PingFangSC-Medium, PingFang SC;
-                font-weight: 500;
-                color: #28B6FF;
+            .transaction_password_forget {
+                width: 48px;
+                font-size: 12px;
+                font-family: PingFangSC-Regular, PingFang SC;
+                font-weight: 400;
+                color: #939599;
             }
         }
-        .payment_method{
-            width: 100%;
-            background: #29293F;
-            border-radius: 8px;
-            padding: 12px 10px;
-            box-sizing: border-box;
-            margin-top: 10px;
-            .payment_method_con{
-                display: flex;
-                justify-content: space-between;
-                font-size: 14px;
-                font-family: PingFangSC-Medium, PingFang SC;
-                font-weight: 500;
-                color: #FFFFFF;
-                .payment_method_con_left{
-                    display: flex;
-                    .payment_method_title{
-                        margin-top: 2px;
-                    }
-                }
-                .payment_method_img{
-                    width: 24px;
-                    height: 24px;
-                    margin-right: 6px;
-                }
+        /deep/ .van-password-input {
+            margin: 0;
+            margin-top: 8px;
+            .van-password-input__item {
+                width: 44px;
+                height: 44px;
+                background: rgba(10, 10, 27, 0.3);
+                border-radius: 8px;
             }
-            .payment_method_con:first-child{
-            margin-bottom: 10px;
-            border-bottom: 1px solid #5F646F;
-            padding-bottom: 10px;
-            box-sizing: border-box;
-        }
-        }
-        .fee_details_divider{
-            margin: 10px 0;
         }
     }
-    .gift_button{
-        position: fixed;
-        bottom: 0;
+    .additional_costs {
         width: 100%;
-        height: 56px;
-        background: #15152D;
-        padding: 8px 16px;
+        margin-top: 10px;
+        background: #29293f;
+        border-radius: 8px;
+        padding: 12px 10px;
         box-sizing: border-box;
         display: flex;
         justify-content: space-between;
-        .gift_button_cancel{
-            width: 164px;
-            height: 40px;
-            border-radius: 8px;
-            border: 1px solid #28B6FF;
-            box-sizing: border-box;
-            line-height: 40px;
-            text-align: center;
-            font-size: 16px;
+        .additional_costs_left {
+            font-size: 14px;
+            font-family: PingFangSC-Regular, PingFang SC;
+            font-weight: 400;
+            color: #ffffff;
+        }
+        .additional_costs_right {
+            font-size: 14px;
             font-family: PingFangSC-Medium, PingFang SC;
             font-weight: 500;
-            color: #28B6FF;
+            color: #28b6ff;
         }
-        .gift_button_payment{
-            width: 164px;
-            height: 40px;
-            background: #28B6FF;
-            border-radius: 8px;
-            font-size: 16px;
+    }
+    .payment_method {
+        width: 100%;
+        background: #29293f;
+        border-radius: 8px;
+        padding: 12px 10px;
+        box-sizing: border-box;
+        margin-top: 10px;
+        .payment_method_con {
+            display: flex;
+            justify-content: space-between;
+            font-size: 14px;
             font-family: PingFangSC-Medium, PingFang SC;
             font-weight: 500;
-            color: #FFFFFF;
-            text-align: center;
-            line-height: 40px;
+            color: #ffffff;
+            border-bottom: 1px solid rgba(94, 99, 110, 0.2);
+            padding-bottom: 10px;
+            margin-bottom: 10px;
+            box-sizing: border-box;
+            .payment_method_con_left {
+                display: flex;
+                .payment_method_title {
+                    margin-top: 2px;
+                }
+            }
+            .payment_method_img {
+                width: 24px;
+                height: 24px;
+                margin-right: 6px;
+            }
+            .choose-icon {
+                width: 24px;
+                height: 24px;
+            }
         }
+        .payment_method_con:last-child {
+            border-bottom: none;
+            padding-bottom: 0px;
+            margin-bottom: 0px;
+        }
+    }
+    .fee_details_divider {
+        margin: 10px 0;
+    }
+}
+.gift_button {
+    position: fixed;
+    bottom: 0;
+    width: 100%;
+    height: 56px;
+    background: #15152d;
+    padding: 8px 16px;
+    box-sizing: border-box;
+    display: flex;
+    justify-content: space-between;
+    .gift_button_cancel {
+        width: 164px;
+        height: 40px;
+        border-radius: 8px;
+        border: 1px solid #28b6ff;
+        box-sizing: border-box;
+        line-height: 40px;
+        text-align: center;
+        font-size: 16px;
+        font-family: PingFangSC-Medium, PingFang SC;
+        font-weight: 500;
+        color: #28b6ff;
+    }
+    .gift_button_payment {
+        width: 164px;
+        height: 40px;
+        background: #28b6ff;
+        border-radius: 8px;
+        font-size: 16px;
+        font-family: PingFangSC-Medium, PingFang SC;
+        font-weight: 500;
+        color: #ffffff;
+        text-align: center;
+        line-height: 40px;
     }
+}
+/deep/ .van-password-input__security i {
+    background-color: #fff !important;
+}
 </style>

+ 5 - 5
src/views/Hall.vue

@@ -29,7 +29,7 @@
         <swiper-slide class="user">
             <div class="icon" data-swiper-parallax="-300">
                 <van-image
-                    src="https://raex-meta.oss-cn-shenzhen.aliyuncs.com/nft/2022-02-07-01-15-56Liekxwjf.jpg"
+                    src="https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/2022-02-07-01-15-56Liekxwjf.jpg"
                     :width="isVertical && windowVertical ? 110 : 120"
                     :height="isVertical && windowVertical ? 110 : 120"
                     fit="coevr"
@@ -49,7 +49,7 @@
         <swiper-slide class="imgs" v-for="i in 10" :key="i">
             <div class="icon" data-swiper-parallax="-20">
                 <van-image
-                    src="https://raex-meta.oss-cn-shenzhen.aliyuncs.com/nft/2022-02-07-01-15-56Liekxwjf.jpg"
+                    src="https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/2022-02-07-01-15-56Liekxwjf.jpg"
                     :width="isVertical && windowVertical ? 110 : 120"
                     :height="isVertical && windowVertical ? 110 : 120"
                     fit="coevr"
@@ -58,7 +58,7 @@
             </div>
             <div class="icon" data-swiper-parallax="-40">
                 <van-image
-                    src="https://raex-meta.oss-cn-shenzhen.aliyuncs.com/nft/2022-02-07-01-15-56Liekxwjf.jpg"
+                    src="https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/2022-02-07-01-15-56Liekxwjf.jpg"
                     :width="isVertical && windowVertical ? 110 : 120"
                     :height="isVertical && windowVertical ? 110 : 120"
                     fit="coevr"
@@ -67,7 +67,7 @@
             </div>
             <div class="icon" data-swiper-parallax="-100">
                 <van-image
-                    src="https://raex-meta.oss-cn-shenzhen.aliyuncs.com/nft/2022-02-07-01-15-56Liekxwjf.jpg"
+                    src="https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/2022-02-07-01-15-56Liekxwjf.jpg"
                     :width="isVertical && windowVertical ? 110 : 120"
                     :height="isVertical && windowVertical ? 110 : 120"
                     fit="coevr"
@@ -76,7 +76,7 @@
             </div>
             <div class="icon" data-swiper-parallax="-200">
                 <van-image
-                    src="https://raex-meta.oss-cn-shenzhen.aliyuncs.com/nft/2022-02-07-01-15-56Liekxwjf.jpg"
+                    src="https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/font/2022-02-07-01-15-56Liekxwjf.jpg"
                     :width="isVertical && windowVertical ? 110 : 120"
                     :height="isVertical && windowVertical ? 110 : 120"
                     fit="coevr"

+ 88 - 36
src/views/Home.vue

@@ -1,14 +1,27 @@
 <template>
-    <div class="home">
-        <div class="contect" :class="shopList.length < 2 ? 'shop_list_one' : ''">
-            <!-- 首页轮播 -->
-            <van-swipe class="swipe_banner" :autoplay="3000" indicator-color="#ffffff">
-                <van-swipe-item v-for="(item, index) in banners" :key="index">
-                    <!-- <img :src="item.pic" alt="" class="swipe_banner_img" /> -->
-                    <van-image width="100%" height="140px" :src="getImg(item.pic)" fit="cover" />
-                </van-swipe-item>
-            </van-swipe>
-            <!-- <swiper
+    <van-pull-refresh
+        class="home_refresh"
+        success-text="加载成功"
+        success-duration="1000"
+        v-model="isLoading"
+        @refresh="onRefresh"
+    >
+        <div class="home">
+            <div class="contect" :class="shopList.length < 2 ? 'shop_list_one' : ''">
+                <!-- 首页轮播 -->
+                <van-swipe class="swipe_banner" :autoplay="3000" indicator-color="#ffffff">
+                    <van-swipe-item v-for="(item, index) in banners" :key="index">
+                        <!-- <img :src="item.pic" alt="" class="swipe_banner_img" /> -->
+                        <van-image
+                            width="100%"
+                            height="140px"
+                            :src="getImg(item.pic)"
+                            fit="cover"
+                            @click="goNext(item)"
+                        />
+                    </van-swipe-item>
+                </van-swipe>
+                <!-- <swiper
             pagination
             class="swipe_banner"
             :slidesPerView="'auto'"
@@ -20,25 +33,29 @@
                     <product-small :info="item"></product-small>
                 </swiper-slide>
             </swiper> -->
-            <!-- 商品列表 -->
-            <div class="collection_list">
-                <!-- <van-list v-model:loading="loading" :finished="finished" finished-text="" @load="getList"> -->
-                <!-- @load="getList" -->
-                <product-large
-                v-for="(item, index) in shopList"
-                :key="index"
-                v-model:info="shopList[index].obj"
-                :type="item.type"
-                ></product-large>
-            <!-- </van-list> -->
+                <!-- 商品列表 -->
+                <div class="collection_list">
+                    <!-- <van-list v-model:loading="loading" :finished="finished" finished-text="" @load="getList"> -->
+                    <!-- @load="getList" -->
+                    <product-large
+                        v-for="(item, index) in shopList"
+                        :key="index"
+                        v-model:info="shopList[index].obj"
+                        :type="item.type"
+                    ></product-large>
+                    <!-- </van-list> -->
+                    <div class="tip_title">
+                        <van-divider class="tip_title_one">南京数藏文化科技有限公司</van-divider>
+                        <div class="tip_title_two" @click="keepRecord">苏ICP备2022016578号-1</div>
+                    </div>
+                </div>
             </div>
-        </div>
-        <!-- <van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
+            <!-- <van-swipe class="my-swipe" :autoplay="3000" indicator-color="white">
              <van-swipe-item v-for="item in banners" :key="item.id">
                  <img :src="item.img" alt="">
              </van-swipe-item>
         </van-swipe> -->
-        <!-- <swiper
+            <!-- <swiper
             pagination
             class="mySwiper"
             :slidesPerView="'auto'"
@@ -50,7 +67,7 @@
                 <img :src="item.img" alt="">
             </swiper-slide>
         </swiper> -->
-        <!-- <div class="filter-bg" :style="{ backgroundImage: `url(${bgImg})` }"></div>
+            <!-- <div class="filter-bg" :style="{ backgroundImage: `url(${bgImg})` }"></div>
         <div class="welcom">
             <div class="left">
                 <div class="text1">WELCOME</div>
@@ -78,12 +95,12 @@
             </swiper-slide>
         </swiper> -->
 
-        <!-- <div class="tabs" v-if="!empty">
+            <!-- <div class="tabs" v-if="!empty">
             <div class="tab" :class="{ active: active === 0 }" @click="active = 0">数字藏品</div>
             <div class="tab" :class="{ active: active === 1 }" @click="active = 1">产品新闻端</div>
         </div> -->
 
-        <!-- <div class="list" v-if="active == 0">
+            <!-- <div class="list" v-if="active == 0">
             <product-large
                 v-for="(item, index) in products"
                 :key="index"
@@ -96,11 +113,13 @@
                 <news-info v-for="item in news" :key="item.id" :info="item"></news-info>
             </van-list>
         </template> -->
-    </div>
+        </div>
+    </van-pull-refresh>
 </template>
 <script>
 import product from '../mixins/product';
 import ProductLarge from '../components/product/productLarge.vue';
+import banner from '../mixins/banner';
 // import ProductSmall from '../components/product/productSmall.vue';
 export default {
     data() {
@@ -111,9 +130,10 @@ export default {
             loading: false,
             finished: false,
             page: 0,
+            isLoading: true
         };
     },
-    mixins: [product],
+    mixins: [product, banner],
     components: {
         ProductLarge
         // ProductSmall
@@ -129,12 +149,12 @@ export default {
                 forbidClick: true
             });
             this.loading = true;
-            this.$http.get('/collection/recommend').then(res=>{
+            this.$http.get('/collection/recommend').then(res => {
                 this.shopList = res.filter(item => {
                     return item.type === 'collection';
-                })
+                });
                 this.$toast.clear();
-            })
+            });
         },
         // 获取首页轮播
         getBanner() {
@@ -156,8 +176,15 @@ export default {
                 });
         },
         getUser() {
-            this.$http.post('user/my').then(res => {
+            this.$http.post('user/my').then(res => {});
+        },
+        onRefresh() {
+            Promise.all([this.getBanner(), this.getList()]).then(res => {
+                this.isLoading = false;
             });
+        },
+        keepRecord() {
+            document.location.replace('https://beian.miit.gov.cn');
         }
     },
     mounted() {
@@ -229,8 +256,8 @@ export default {
 //         if (!window.localStorage.getItem('AppTips') && !inIos && inApp) {
 //             this.$dialog
 //                 .confirm({
-//                     title: 'RAEX宇宙服务协议和隐私政策',
-//                     message: `在您使用我的各项服务之前,请务必审慎阅读、充分理解<a href="javascript:void(0)" onclick="goFetch('/agreement?page=service')" >《用户隐私协议》</a>、<a href="javascript:void(0)" onclick="goFetch('/agreement')" >《隐私政策》</a>的条款。并且我们会申请获取您的设备信息,以向您提供安全风控服务。同时您应特别注意前述协议中免除或者限制我们责任的条款、对您权利进行限制的条款。如您已详细阅读并同意RAEX宇宙用户协议、隐私政策,请点击【同意并继续】开始使用我们的服务。`,
+//                     title: '古藏站服务协议和隐私政策',
+//                     message: `在您使用我的各项服务之前,请务必审慎阅读、充分理解<a href="javascript:void(0)" onclick="goFetch('/agreement?page=service')" >《用户隐私协议》</a>、<a href="javascript:void(0)" onclick="goFetch('/agreement')" >《隐私政策》</a>的条款。并且我们会申请获取您的设备信息,以向您提供安全风控服务。同时您应特别注意前述协议中免除或者限制我们责任的条款、对您权利进行限制的条款。如您已详细阅读并同意古藏站宇宙用户协议、隐私政策,请点击【同意并继续】开始使用我们的服务。`,
 //                     confirmButtonText: '同意并继续',
 //                     cancelButtonText: '不同意',
 //                     allowHtml: true
@@ -360,6 +387,9 @@ export default {
 </script>
 
 <style lang="less" scoped>
+.home_refresh {
+    background: #0f0f27;
+}
 .home {
     .contect {
         width: 100%;
@@ -376,8 +406,30 @@ export default {
                 width: 100%;
             }
         }
-        .collection_list{
+        .collection_list {
             margin-bottom: 50px;
+            .tip_title {
+                text-align: center;
+                font-size: 12px;
+                font-family: PingFangSC-Regular, PingFang SC;
+                font-weight: 400;
+                color: #939599;
+            }
+            .tip_title_one {
+                font-size: 14px;
+                color: #939599;
+                // background: rgba(147, 149, 153, 0.3);
+            }
+            .tip_title_one::before {
+                height: 1px;
+                background: #5f646f;
+                opacity: 0.3;
+            }
+            .tip_title_one::after {
+                height: 1px;
+                background: #5f646f;
+                opacity: 0.3;
+            }
         }
     }
     .shop_list_one {

+ 153 - 103
src/views/Mine.vue

@@ -182,21 +182,17 @@
     </div> -->
     <!-- 我的内容区 -->
     <div class="content">
-        <img :src="isLogin ? userInfo.bg || require('@assets/bg.png'): require('@assets/bg.png')" alt="" class="backgroundImg" />
+        <van-image width="100%" height="120px" radius="1" :src="isLogin ? userInfo.bg || require('@assets/bg.png'): require('@assets/bg.png')" fit="cover" style="position:relative"/>
         <!-- <van-image width="100%" height="120px" :src="isLogin?getImg(userInfo.bg):noLogin" fit="cover" class="backgroundImg"/> -->
         <div class="share-btn" @click="share" v-if="isLogin">
             <img src="../assets/fenxiang-icon@3x.png" alt="" />
             <span>分享</span>
         </div>
-        <div class="content_con" :style="{ paddingTop: isLogin ? '85px' : '54px' }">
+        <div class="content_con">
             <!-- 已登录 -->
             <div class="self_introduction" v-if="isLogin">
                 <div class="self_introduction_top">
-                    <img
-                        :src="userInfo.avatar || require('@assets/img_default_photo.png')"
-                        alt=""
-                        class="self_introduction_top_img"
-                    />
+                    <van-image width="60px" height="60px" radius="40" :src="userInfo.avatar || require('@assets/img_default_photo.png')" fit="cover" style="margin-right: 10px" @click="$router.push('/setting')"/>
                     <img
                         :src="require('@assets/icon_inter.png')"
                         alt=""
@@ -228,14 +224,14 @@
                         </div>
                         <div class="self_introduction_top_con_two">
                             <div class="self_introduction_top_con_id">用户ID:{{ userInfo.id }}</div>
-                            <img :src="require('@assets/copy_icon.png')" alt="" class="copy_id" />
+                            <img :src="require('@assets/copy_icon.png')" alt="" class="copy_id" @click="copy"/>
                         </div>
                     </div>
                 </div>
-                <div class="self_introduction_bottom">{{ userInfo.intro }}</div>
+                <div class="self_introduction_bottom" :style="userInfo.intro === ''?'':'margin-top: 6px'">{{ userInfo.intro }}</div>
             </div>
             <!-- 未登录 -->
-            <div class="not_logged" v-else>
+            <div class="not_logged" v-else @click="$router.push('/login')">
                 <div class="not_logged_con">
                     <img :src="require('@assets/png-moren-touxiang.png')" alt="" class="not_logged_touxiang" />
                     <div class="not_logged_con_content">
@@ -254,19 +250,68 @@
             </div>
             <!-- 展示列表 -->
             <div class="display_list">
-                <div
-                    class="display_list_con"
-                    v-for="(item, index) in displayList"
-                    :key="index"
-                    @click="clickList(index)"
-                >
+                <div class="display_list_con" @click="$router.push('/orders')">
+                    <div class="display_list_con_one">
+                        <img :src="require('@assets/my-order.png')" alt="" class="display_list_con_displayIcon" />
+                        <div class="display_list_con_title">我的订单</div>
+                    </div>
+                    <div class="display_list_con_two">
+                        <img :src="require('@assets/icon_inter.png')" alt="" class="display_list_con_listArrow" />
+                    </div>
+                </div>
+                <div class="display_list_con" @click="$router.push('/mineBanks')">
                     <div class="display_list_con_one">
-                        <img :src="item.displayIcon" alt="" class="display_list_con_displayIcon" />
-                        <div class="display_list_con_title">{{ item.title }}</div>
+                        <img :src="require('@assets/icon-yinhangka.png')" alt="" class="display_list_con_displayIcon" />
+                        <div class="display_list_con_title">我的银行卡</div>
                     </div>
                     <div class="display_list_con_two">
-                        <div class="binding_information">{{ item.bindingInformation }}</div>
-                        <img :src="item.listArrow" alt="" class="display_list_con_listArrow" />
+                        <div class="binding_information" v-if="isLogin">{{userInfo.isUserBankCard?'已绑定':'未绑定'}}</div>
+                        <img :src="require('@assets/icon_inter.png')" alt="" class="display_list_con_listArrow" />
+                    </div>
+                </div>
+                <div class="display_list_con" @click="$router.push('/mineLove')">
+                    <div class="display_list_con_one">
+                        <img :src="require('@assets/my-love.png')" alt="" class="display_list_con_displayIcon" />
+                        <div class="display_list_con_title">我喜欢的</div>
+                    </div>
+                    <div class="display_list_con_two">
+                        <img :src="require('@assets/icon_inter.png')" alt="" class="display_list_con_listArrow" />
+                    </div>
+                </div>
+                <div class="display_list_con" @click="$router.push('/mineExchange')">
+                    <div class="display_list_con_one">
+                        <img :src="require('@assets/transaction-record.png')" alt="" class="display_list_con_displayIcon" />
+                        <div class="display_list_con_title">交易记录</div>
+                    </div>
+                    <div class="display_list_con_two">
+                        <img :src="require('@assets/icon_inter.png')" alt="" class="display_list_con_listArrow" />
+                    </div>
+                </div>
+                <div class="display_list_con" @click="this.wait">
+                    <div class="display_list_con_one">
+                        <img :src="require('@assets/learn-more.png')" alt="" class="display_list_con_displayIcon" />
+                        <div class="display_list_con_title">了解更多</div>
+                    </div>
+                    <div class="display_list_con_two">
+                        <img :src="require('@assets/icon_inter.png')" alt="" class="display_list_con_listArrow" />
+                    </div>
+                </div>
+                <div class="display_list_con" @click="this.wait">
+                    <div class="display_list_con_one">
+                        <img :src="require('@assets/about-us.png')" alt="" class="display_list_con_displayIcon" />
+                        <div class="display_list_con_title">关于我们</div>
+                    </div>
+                    <div class="display_list_con_two">
+                        <img :src="require('@assets/icon_inter.png')" alt="" class="display_list_con_listArrow" />
+                    </div>
+                </div>
+                <div class="display_list_con" @click="$router.push('/security')">
+                    <div class="display_list_con_one">
+                        <img :src="require('@assets/account-security.png')" alt="" class="display_list_con_displayIcon" />
+                        <div class="display_list_con_title">账号与安全</div>
+                    </div>
+                    <div class="display_list_con_two">
+                        <img :src="require('@assets/icon_inter.png')" alt="" class="display_list_con_listArrow" />
                     </div>
                 </div>
             </div>
@@ -294,57 +339,57 @@ export default {
         return {
             // authentication: false,
             // userInfo: {},
-            displayList: [
-                {
-                    displayIcon: require('@assets/my-order.png'),
-                    bindingInformation: '',
-                    title: '我的订单',
-                    listArrow: require('@assets/icon_inter.png')
-                },
-                {
-                    displayIcon: require('@assets/icon-yinhangka.png'),
-                    bindingInformation: '未绑定',
-                    title: '我的银行卡',
-                    listArrow: require('@assets/icon_inter.png')
-                },
-                {
-                    displayIcon: require('@assets/my-love.png'),
-                    bindingInformation: '',
-                    title: '我喜欢的',
-                    listArrow: require('@assets/icon_inter.png')
-                },
-                {
-                    displayIcon: require('@assets/transaction-record.png'),
-                    bindingInformation: '',
-                    title: '交易记录',
-                    listArrow: require('@assets/icon_inter.png')
-                },
-                {
-                    displayIcon: require('@assets/learn-more.png'),
-                    bindingInformation: '',
-                    title: '了解更多',
-                    listArrow: require('@assets/icon_inter.png')
-                },
-                {
-                    displayIcon: require('@assets/about-us.png'),
-                    bindingInformation: '',
-                    title: '关于我们',
-                    listArrow: require('@assets/icon_inter.png')
-                },
-                {
-                    displayIcon: require('@assets/account-security.png'),
-                    bindingInformation: '',
-                    title: '账号与安全',
-                    listArrow: require('@assets/icon_inter.png')
-                }
-            ],
+            // displayList: [
+            //     {
+            //         displayIcon: require('@assets/my-order.png'),
+            //         bindingInformation: '',
+            //         title: '我的订单',
+            //         listArrow: require('@assets/icon_inter.png')
+            //     },
+            //     {
+            //         displayIcon: require('@assets/icon-yinhangka.png'),
+            //         title: '我的银行卡',
+            //         listArrow: require('@assets/icon_inter.png')
+            //     },
+            //     {
+            //         displayIcon: require('@assets/my-love.png'),
+            //         bindingInformation: '',
+            //         title: '我喜欢的',
+            //         listArrow: require('@assets/icon_inter.png')
+            //     },
+            //     {
+            //         displayIcon: require('@assets/transaction-record.png'),
+            //         bindingInformation: '',
+            //         title: '交易记录',
+            //         listArrow: require('@assets/icon_inter.png')
+            //     },
+            //     // {
+            //     //     displayIcon: require('@assets/learn-more.png'),
+            //     //     bindingInformation: '',
+            //     //     title: '了解更多',
+            //     //     listArrow: require('@assets/icon_inter.png')
+            //     // },
+            //     // {
+            //     //     displayIcon: require('@assets/about-us.png'),
+            //     //     bindingInformation: '',
+            //     //     title: '关于我们',
+            //     //     listArrow: require('@assets/icon_inter.png')
+            //     // },
+            //     {
+            //         displayIcon: require('@assets/account-security.png'),
+            //         bindingInformation: '',
+            //         title: '账号与安全',
+            //         listArrow: require('@assets/icon_inter.png')
+            //     }
+            // ],
             org: false,
             showMore: false,
             assetNum: 0,
             shareProduct: {
                 openQuota: false
             },
-            shareMoney: 0
+            shareMoney: 0,
+            height: ""
         };
     },
     mounted() {
@@ -395,6 +440,9 @@ export default {
             StatusBar.backgroundColorByHexString('#222426');
             StatusBar.styleLightContent();
         }
+        // let topHeight = this.$refs.top.offsetHeight // 获取高度
+        // console.log("111111111",this.$refs.top)
+        // this.height = topHeight
         // this.$nextTick(() => {
         //     this.$el.parentNode.childNodes[1].className =
         //         this.$el.parentNode.childNodes[1].className.replace(/ bgBack/, '') + ' bgBack';
@@ -443,30 +491,30 @@ export default {
             this.$refs.userShare.share();
         },
         // 点击列表信息跳转
-        clickList(index) {
-            switch (index) {
-                case 0:
-                    this.$router.push('/orders');
-                    break;
-                case 1:
-                    this.$router.push('/mineBanksAdd');
-                    break;
-                case 2:
-                    this.$router.push('/mineLove');
-                    break;
-                case 3:
-                   this.wait()
-                    break;
-                case 4:
-                    this.wait()
-                    break;
-                case 5:
-                    this.wait()
-                    break;
-                default:
-                    this.$router.push('/security');
-            }
-        }
+        // clickList(index) {
+        //     switch (index) {
+        //         case 0:
+        //             this.$router.push('/orders');
+        //             break;
+        //         case 1:
+        //             this.$router.push('/mineBanksAdd');
+        //             break;
+        //         case 2:
+        //             this.$router.push('/mineLove');
+        //             break;
+        //         case 3:
+        //             this.$router.push('/mineExchange');
+        //             break;
+        //         // case 4:
+        //         //     this.wait()
+        //         //     break;
+        //         // case 5:
+        //         //     this.wait()
+        //         //     break;
+        //         default:
+        //             this.$router.push('/security');
+        //     }
+        // }
     }
     // beforeRouteLeave(to, from, next) {
     //     this.$el.parentNode.childNodes[1].className = this.$el.parentNode.childNodes[1].className.replace(
@@ -485,11 +533,11 @@ export default {
     // position: absolute;
     // margin-top: 44px;
     background: #0f0f27;
+    position: relative;
     .backgroundImg {
         width: 100%;
         height: 120px;
         border-radius: 1px;
-        position: relative;
     }
     .authentication_img {
         margin-top: 2px;
@@ -500,18 +548,23 @@ export default {
         width: 100%;
         padding: 0 10px;
         box-sizing: border-box;
-        background: #0f0f27;
-        position: relative;
+        // background: #0f0f27;
+        // position: absolute;
+        // left: 0;
+        // top: 80px;
+        // z-index: 2;
+        transform: translateY(-42px);
         .not_logged {
             // width: 100%;
             // height: 80px;
             background: #29293f;
             border-radius: 8px;
             padding: 10px;
-            position: absolute;
-            left: 10px;
-            right: 10px;
-            top: -35px;
+            margin-bottom: 10px;
+            // position: absolute;
+            // left: 10px;
+            // right: 10px;
+            // top: -35px;
             box-sizing: border-box;
             // position: relative;
             .not_logged_con {
@@ -557,16 +610,13 @@ export default {
         // width: 100%;
         // height: 130px;
         background: #29293f;
-        position: absolute;
-        left: 10px;
-        right: 10px;
-        top: -35px;
+        margin-bottom: 10px;
         border-radius: 8px;
         padding: 10px;
         box-sizing: border-box;
         .self_introduction_top {
             position: relative;
-            margin-bottom: 6px;
+            // margin-bottom: 6px;
             display: flex;
             .self_introduction_top_img {
                 width: 60px;
@@ -578,7 +628,7 @@ export default {
                 width: 24px;
                 height: 24px;
                 position: absolute;
-                top: 9px;
+                top: 18px;
                 right: 5px;
             }
             .self_introduction_top_con {
@@ -690,7 +740,7 @@ export default {
             display: flex;
             .binding_information {
                 font-size: 12px;
-                padding-top: 6px;
+                padding-top: 5px;
                 box-sizing: border-box;
                 font-family: PingFangSC-Regular, PingFang SC;
                 font-weight: 400;

+ 86 - 59
src/views/Store.vue

@@ -1,63 +1,71 @@
 <template>
     <div class="explore_content" :class="collections.length < 5 ? 'shop_list_one' : ''">
-        <!-- 搜素 -->
-        <van-sticky :offset-top="0">
-            <div class="explore_content_top">
-                <div class="search" @click="$router.push('/productSearch')">
-                    <img src="@assets/icon-sosuo.png" alt="" class="search_img" />
-                    <span class="search_text">搜索你想要的</span>
-                </div>
-                <!-- 标签页展示切换 -->
-                <div class="label_tabs">
-                    <div
-                        :class="tabLabel == 'whole' ? 'label_selected' : 'label_not_selected'"
-                        @click="tabLabelName('whole')"
-                        class="label_tab"
-                    >
-                        全部
+        <van-pull-refresh
+            class="load_refresh"
+            success-text="加载成功"
+            success-duration="1000"
+            v-model="isLoading"
+            @refresh="onRefresh"
+        >
+            <!-- 搜素 -->
+            <van-sticky :offset-top="0" class="explore_content_con">
+                <div class="explore_content_top">
+                    <div class="search" @click="$router.push('/productSearch')">
+                        <img src="@assets/icon-sosuo.png" alt="" class="search_img" />
+                        <span class="search_text">搜索你想要的</span>
                     </div>
-                    <div
-                        :class="tabLabel == 'onSale' ? 'label_selected' : 'label_not_selected'"
-                        @click="tabLabelName('onSale')"
-                        class="label_tab"
-                    >
-                        出售中
+                    <!-- 标签页展示切换 -->
+                    <div class="label_tabs">
+                        <div
+                            :class="tabLabel == 'whole' ? 'label_selected' : 'label_not_selected'"
+                            @click="tabLabelName('whole')"
+                            class="label_tab"
+                        >
+                            全部
+                        </div>
+                        <div
+                            :class="tabLabel == 'onSale' ? 'label_selected' : 'label_not_selected'"
+                            @click="tabLabelName('onSale')"
+                            class="label_tab"
+                        >
+                            出售中
+                        </div>
+                        <div
+                            :class="tabLabel == 'showOnly' ? 'label_selected' : 'label_not_selected'"
+                            @click="tabLabelName('showOnly')"
+                            class="label_tab"
+                        >
+                            仅展示
+                        </div>
+                        <div
+                            :class="tabLabel == 'notShown' ? 'label_selected' : 'label_not_selected'"
+                            @click="tabLabelName('notShown')"
+                            class="label_tab"
+                        >
+                            未展示
+                        </div>
                     </div>
-                    <div
-                        :class="tabLabel == 'showOnly' ? 'label_selected' : 'label_not_selected'"
-                        @click="tabLabelName('showOnly')"
-                        class="label_tab"
-                    >
-                        仅展示
+                </div>
+            </van-sticky>
+            <div class="data_display">
+                <!-- 藏品展示 -->
+                <van-list v-model:loading="loading" :finished="finished" finished-text="" @load="getAllCollections">
+                    <div class="data_display_fanter">
+                        <template v-for="(item, index) in collections" :key="index">
+                            <asset-info :info="item"></asset-info>
+                        </template>
                     </div>
-                    <div
-                        :class="tabLabel == 'notShown' ? 'label_selected' : 'label_not_selected'"
-                        @click="tabLabelName('notShown')"
-                        class="label_tab"
+                    <van-empty
+                        v-if="empty || (collections.length === 0 && !loading)"
+                        :description="'你还没有藏品哦~'"
+                        :image="require(`@assets/storage_room_icon_01.png`)"
                     >
-                        未展示
-                    </div>
-                </div>
+                        <van-button class="h44" size="small" color="#28B6FF" :round="true" to="/">去逛逛</van-button>
+                    </van-empty>
+                    <!-- </van-empty> -->
+                </van-list>
             </div>
-        </van-sticky>
-        <div class="data_display">
-            <!-- 藏品展示 -->
-            <van-list v-model:loading="loading" :finished="finished" finished-text="" @load="getAllCollections">
-                <div class="data_display_fanter">
-                    <template v-for="(item, index) in collections" :key="index">
-                        <asset-info :info="item"></asset-info>
-                    </template>
-                </div>
-                <van-empty
-                    v-if="empty || (collections.length === 0 && !loading)"
-                    :description="'你还没有藏品哦~'"
-                    :image="require(`@assets/storage_room_icon_01.png`)"
-                >
-                    <van-button class="h44" size="small" color="#28B6FF" :round="true" to="/">去逛逛</van-button>
-                </van-empty>
-                <!-- </van-empty> -->
-            </van-list>
-        </div>
+        </van-pull-refresh>
     </div>
 </template>
 
@@ -75,7 +83,8 @@ export default {
             loading: false,
             finished: false,
             // 藏品列表
-            collections: []
+            collections: [],
+            isLoading: true
         };
     },
     computed: {
@@ -92,7 +101,7 @@ export default {
             if (!this.isLogin) {
                 this.empty = true;
                 this.loading = false;
-                return;
+                return Promise.resolve();
             }
             if (this.page === 0) {
                 this.collections = [];
@@ -112,8 +121,12 @@ export default {
                 message: '加载中...',
                 forbidClick: true
             });
-            this.$http.post('/asset/all', form, { body: 'json' }).then(res => {
-                this.collections = [...this.collections, ...res.content];
+            return this.$http.post('/asset/all', form, { body: 'json' }).then(res => {
+                if (res.first) {
+                    this.collections = [];
+                }
+
+                this.collections = [...this.collections, ...res.content].filter(item => item.status === 'NORMAL'||item.status === 'GIFTING'||item.status === 'TRADING'||item.status === 'MINTING');
                 this.empty = res.empty;
                 this.loading = false;
                 this.finished = res.last;
@@ -127,7 +140,7 @@ export default {
         tabLabelName(title) {
             this.tabLabel = title;
             this.page = 0;
-            this.loading = true
+            this.loading = true;
             this.getAllCollections();
         },
         beforeQuery() {
@@ -156,17 +169,27 @@ export default {
                 };
             }
             return form;
+        },
+        onRefresh() {
+            this.page = 0;
+            this.getAllCollections().then(() => {
+                this.isLoading = false;
+            });
         }
     }
 };
 </script>
 <style lang="less" scoped>
-/deep/ .van-button{
+.load_refresh {
+    background: #0f0f27;
+}
+/deep/ .van-button {
     width: 280px;
     height: 38px;
 }
 .explore_content {
     width: 100%;
+    height: 100%;
     // margin-top: 44px;
     box-sizing: border-box;
     background: #0f0f27;
@@ -241,4 +264,8 @@ export default {
     height: 100%;
     position: absolute;
 }
+.explore_content_con {
+    position: relative;
+    z-index: 10;
+}
 </style>

+ 52 - 30
src/views/Submit.vue

@@ -4,13 +4,13 @@
         <div class="confirm_order">
             <div class="confirm_order_top">
                 <img :src="require('@assets/icon_querendingdan.png')" alt="" class="confirm_order_top_img" />
-                <div>确认订单</div>
+                <div class="confirm_order_top_text">确认订单</div>
             </div>
             <div class="order_information">
                 <img :src="getImg(changeImgs(info.pic))" alt="" class="order_information_img" />
                 <div class="order_information_title">
                     <div class="order_information_title_one">{{ info.name }}</div>
-                    <div class="order_information_title_two">{{info.category}}</div>
+                    <div class="order_information_title_two">{{ info.category || '收藏品' }}</div>
                     <div class="order_information_title_number">x1</div>
                 </div>
             </div>
@@ -25,26 +25,29 @@
                     <div class="fee_details_price">¥{{ gas }}</div>
                 </div>
             </div>
-                <div class="payment_method">
-                    <div
-                        class="payment_method_con"
-                        @click="payType = item.type"
-                        v-for="(item, index) in payInfos"
-                        :key="index"
-                    >
-                        <div class="payment_method_con_left">
-                            <img :src="item.icon" alt="" class="payment_method_img" />
-                            <div class="payment_method_title">{{ item.name }}</div>
-                        </div>
-                        <van-radio-group v-model="payType">
-                            <van-radio :name="item.type" icon-size="24px" checked-color="#28B6FF"></van-radio>
-                        </van-radio-group>
+            <div class="payment_method">
+                <div
+                    class="payment_method_con"
+                    @click="payType = item.type"
+                    v-for="(item, index) in payInfos"
+                    :key="index"
+                >
+                    <div class="payment_method_con_left">
+                        <img :src="item.icon" alt="" class="payment_method_img" />
+                        <div class="payment_method_title">{{ item.name }}</div>
                     </div>
+                    <img class="choose-icon" :src="payType === item.type ? icons[1] : icons[0]" alt="" />
                 </div>
+            </div>
             <div class="bottom van-safe-area-bottom" ref="bottom">
                 <div class="bottom-content immediate_payment">
-                    <span class="immediate_payment_total">总计</span>
-                    <span class="price"> <img src="@assets/jiage_huang.png" alt="" />{{ money }} </span>
+                    <div class="immediate_payment_left">
+                        <div class="immediate_payment_total">总计</div>
+                        <span class="price">
+                            <div class="price_con">¥</div>
+                            {{ money }}
+                        </span>
+                    </div>
                     <div class="btn">
                         <div class="immediate_payment_con" @click="submit" :disabled="!!orderId">立即支付</div>
                     </div>
@@ -71,7 +74,7 @@ export default {
     name: 'Submit',
     mixins: [product, coupon],
     components: {
-    //    TopNavigation 
+        //    TopNavigation
     },
     data() {
         return {
@@ -708,12 +711,13 @@ export default {
             .font_family {
                 font-size: 10px;
             }
-
-            img {
-                width: 10px;
-                height: 11px;
-                display: block;
-                margin-top: 8px;
+            .price_con {
+                font-size: 14px;
+                font-family: PingFangSC-Medium, PingFang SC;
+                font-weight: 500;
+                color: #28b6ff;
+                padding-top: 10px;
+                box-sizing: border-box;
             }
         }
     }
@@ -744,6 +748,9 @@ export default {
             height: 24px;
             margin-right: 8px;
         }
+        .confirm_order_top_text {
+            margin-top: 2px;
+        }
     }
     .order_information {
         width: 100%;
@@ -837,6 +844,10 @@ export default {
             font-family: PingFangSC-Medium, PingFang SC;
             font-weight: 500;
             color: #ffffff;
+            border-bottom: 1px solid rgba(94, 99, 110 ,.2);
+            padding-bottom: 10px;
+            margin-bottom: 10px;
+            box-sizing: border-box;
             .payment_method_con_left {
                 display: flex;
                 .payment_method_title {
@@ -848,12 +859,15 @@ export default {
                 height: 24px;
                 margin-right: 6px;
             }
+            .choose-icon {
+                width: 24px;
+                height: 24px;
+            }
         }
-        .payment_method_con:first-child{
-            margin-bottom: 10px;
-            border-bottom: 1px solid #5F646F;
-            padding-bottom: 10px;
-            box-sizing: border-box;
+        .payment_method_con:last-child {
+            border-bottom: none;
+            padding-bottom: 0px;
+            margin-bottom: 0px;
         }
     }
     .fee_details_actual_payment {
@@ -870,6 +884,9 @@ export default {
     box-sizing: border-box;
     display: flex;
     justify-content: space-between;
+    .immediate_payment_left{
+        display: flex;
+    }
     .immediate_payment_total {
         margin-top: 16px;
         box-sizing: border-box;
@@ -906,4 +923,9 @@ export default {
         text-align: center;
     }
 }
+/deep/ .van-divider::before{
+        height: 1px;
+        background: #5F646F;
+        opacity: 0.2;
+    }
 </style>

+ 2 - 1
src/views/account/Agreement.vue

@@ -19,9 +19,10 @@ export default {
         let page = this.$route.query.page || 'privacy';
         this.$http.get(`/${page}.html`).then(res => {
             let contents = res.split('<body>')[1].split('</body>');
-            let detail = contents[0].replace(/绿洲/g, 'RAEX');
+            let detail = contents[0].replace(/古藏站/g, '古藏站');
             detail = detail.replace(/<\/h1>/, `</h1><h3>生效时间:【${day}】</h3><h3>更新时间:【${day}】</h3>`);
             this.detail = detail;
+            // this.detail = res
         });
     },
     methods: {}

+ 182 - 158
src/views/account/ChangePhone.vue

@@ -1,101 +1,104 @@
 <template>
     <div class="login">
-        <div class="tabs">
-            <div class="tab active">{{ step ? '绑定新号码' : '修改手机号' }}</div>
-            <div class="text">修改手机号即同时修改登录账户名称</div>
-        </div>
-
         <van-form v-if="step === 0" @submit="next">
-            <van-cell class="phone" :title="phone" label="修改手机号需先验证当前手机号" />
-            <van-field
-                type="digit"
-                name="验证码"
-                placeholder="请输入验证码"
-                v-model="form.code"
-                :maxlength="4"
-                :rules="[{ required: true, message: '请输入验证码' }]"
-            >
-                <template #left-icon>
-                    <img :src="require('@assets/svgs/login_icon_code.svg')" class="icon" />
-                </template>
-                <template #button>
-                    <van-button
-                        @click="sendBefPhone"
-                        class="sub-code"
-                        size="small"
-                        plain
-                        type="primary"
-                        :disabled="isSend"
-                    >
-                        {{ isSend ? `已发送(${sendNum})S` : '发送验证码' }}
-                    </van-button>
-                </template>
-            </van-field>
-
-            <div class="button">
+            <div class="tabs">修改手机号</div>
+            <div class="transaction_tips">
+                <div class="transaction_tips_phone">{{phone}}</div>
+                <div class="transaction_tips_con">修改手机号需先验证当前手机号</div>
+            </div>
+            <div class="login_information">
+                <img
+                    :src="require('@assets/verification_code.png')"
+                    alt=""
+                    class="login_information_img login_information_img_con"
+                />
+                <van-field
+                    v-model="form.code"
+                    :maxlength="4"
+                    type="tel"
+                    placeholder="请输入验证码"
+                    :rules="[{ required: true, message: '请输入验证码' }]"
+                    class="login_information_con"
+                >
+                    <template #button>
+                        <van-button
+                            @click="sendBefPhone"
+                            class="send_verification"
+                            size="small"
+                            plain
+                            :disabled="isSend"
+                            type="primary"
+                        >
+                            {{ isSend ? `${sendNum}S后重新发送` : '发送验证码' }}
+                        </van-button>
+                    </template>
+                </van-field>
+            </div>
+            <van-divider class="login_divider" />
+            <div>
                 <van-button
-                    round
-                    block
                     native-type="submit"
-                    :color="`linear-gradient(to right, ${$colors.prim}, ${$colors.warn})`"
                     class="sure"
-                    >下一步</van-button
+                    color="#28B6FF"
+                    >确认修改</van-button
                 >
             </div>
         </van-form>
-
         <van-form v-else ref="form" @submit="submit">
-            <van-field
-                type="tel"
-                name="用户名"
-                placeholder="请输入手机号"
-                v-model="form.phone"
-                :maxlength="11"
-                :rules="[
-                    { required: true, message: '请输入手机号码' },
-                    {
-                        pattern: phonePattern,
-                        message: '手机号码格式错误'
-                    }
-                ]"
-            >
-                <template #left-icon>
-                    <img :src="require('@assets/svgs/login_icon_zhanghao.svg')" class="icon" />
-                </template>
-            </van-field>
-
-            <van-field
-                type="digit"
-                name="验证码"
-                placeholder="请输入验证码"
-                v-model="form.code"
-                :maxlength="4"
-                :rules="[{ required: true, message: '请输入验证码' }]"
-            >
-                <template #left-icon>
-                    <img :src="require('@assets/svgs/login_icon_code.svg')" class="icon" />
-                </template>
-                <template #button>
-                    <van-button
-                        @click="sendPhone"
-                        class="sub-code"
-                        size="small"
-                        plain
-                        type="primary"
-                        :disabled="isSend"
-                    >
-                        {{ isSend ? `已发送(${sendNum})S` : '发送验证码' }}
-                    </van-button>
-                </template>
-            </van-field>
-
-            <div class="button">
+            <div class="tabs">绑定新号码</div>
+            <div class="transaction_tips_cons">修改手机号即同时修改登录账户</div>
+            <div class="login_information">
+                <img :src="require('@assets/login_icon_zhanghao.png')" alt="" class="login_information_img" />
+                <van-field
+                    v-model="form.phone"
+                    :maxlength="11"
+                    type="tel"
+                    placeholder="请输入手机号"
+                    class="login_information_con"
+                    :rules="[
+                        { required: true, message: '请输入手机号码' },
+                        {
+                            pattern: phonePattern,
+                            message: '手机号码格式错误'
+                        }
+                    ]"
+                />
+            </div>
+            <van-divider class="login_divider" />
+            <div class="login_information">
+                <img
+                    :src="require('@assets/verification_code.png')"
+                    alt=""
+                    class="login_information_img login_information_img_con"
+                />
+                <van-field
+                    v-model="form.code"
+                    :maxlength="4"
+                    type="tel"
+                    placeholder="请输入验证码"
+                    :rules="[{ required: true, message: '请输入验证码' }]"
+                    class="login_information_con"
+                >
+                    <template #button>
+                        <van-button
+                            @click="sendPhone"
+                            class="send_verification"
+                            size="small"
+                            plain
+                            :disabled="isSend"
+                            type="primary"
+                        >
+                            {{ isSend ? `${sendNum}S后重新发送` : '发送验证码' }}
+                        </van-button>
+                    </template>
+                </van-field>
+            </div>
+            <van-divider class="login_divider" />
+            <div>
                 <van-button
-                    round
-                    block
                     native-type="submit"
-                    :color="`linear-gradient(to right, ${$colors.prim}, ${$colors.warn})`"
-                    class="sure"
+                    color="#28B6FF"
+                    class="sure suretwo"
                     >确定修改</van-button
                 >
             </div>
@@ -106,6 +109,7 @@
 <script>
 import { mapState } from 'vuex';
 import phone from '../../mixins/phone';
+import { Toast } from 'vant';
 export default {
     mixins: [phone],
     data() {
@@ -129,9 +133,11 @@ export default {
             this.sendMsg(this.userInfo.phone);
         },
         sendPhone() {
-            this.$refs.form.validate('手机号码').then(() => {
+            if (this.form.phone == '') {
+                Toast('手机号码格式错误');
+            } else {
                 this.sendMsg(this.form.phone);
-            });
+            }
         },
         submit() {
             this.$toast.loading({
@@ -165,88 +171,106 @@ export default {
 </script>
 
 <style lang="less" scoped>
-.login {
-    padding: 40px 16px 100px;
+/deep/ .van-field__control::placeholder {
+    font-size: 14px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #5f646f;
 }
-
-.van-form {
-    padding: 0 30px;
+/deep/ .van-divider::before {
+    height: 1px;
+    background: #5f646f;
+    opacity: 0.2;
+}
+/deep/ .van-field__control {
+    color: #ffffff;
+    background: #0f0f27;
+}
+.login {
+    padding: 60px 48px 0px;
+    background: #0f0f27;
 }
-
 .tabs {
-    .tab {
-        font-size: 18px;
-        color: #c8c9cc;
-        line-height: 25px;
-
-        &.active {
-            font-size: 24px;
-            font-weight: bold;
-            color: @text0;
-            line-height: 33px;
-        }
-    }
-
-    .text {
-        font-size: 12px;
-        color: @text3;
-        line-height: 22px;
-        margin-top: 4px;
-    }
+    font-size: 28px;
+    font-family: PingFangSC-Medium, PingFang SC;
+    font-weight: 500;
+    color: #ffffff;
+    line-height: 34px;
 }
-
-.icon {
-    display: block;
-    margin-top: 12px;
+.transaction_tips_cons{
+    font-size: 12px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #939599;
+    line-height: 17px;
+    margin-top: 6px;
+    margin-bottom: 30px;
 }
-/deep/ .van-form {
-    margin-top: 28px;
-    .van-cell {
-        padding: 0px 0;
-
-        .van-field__left-icon {
-            margin-right: 8px;
-        }
-    }
-
-    .van-cell + .van-cell {
-        margin-top: 20px;
+.transaction_tips {
+    margin-top: 50px;
+    margin-bottom: 30px;
+    .transaction_tips_phone {
+        font-size: 20px;
+        font-family: PingFangSC-Medium, PingFang SC;
+        font-weight: 500;
+        color: #ffffff;
+        line-height: 28px;
+        margin-bottom: 2px;
     }
-    .van-field__body {
-        height: 44px;
-        align-items: center;
+    .transaction_tips_con {
+        font-size: 14px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #939599;
+        line-height: 24px;
     }
 }
-.button {
-    margin-top: 120px;
-
-    .del {
-        margin-top: 20px;
-        border-color: @text0;
+.login_information {
+    display: flex;
+    // margin-left: 45px;
+    .login_information_img {
+        width: 24px;
+        height: 24px;
+        margin-right: 8px;
     }
-
-    .sure {
-        color: @bg !important;
+    .login_information_img_con {
+        padding-top: 5px;
     }
-
-    .van-button {
-        font-weight: bold;
+    .van-cell {
+        padding: 0;
     }
-}
-
-.sub-code {
-    padding-right: 0;
-    border-width: 0;
-}
-
-/deep/.phone {
-    .van-cell__title > span {
-        font-size: 20px;
-        font-weight: bold;
+    .login_information_con {
+        width: 250px;
+        // height: 24px;
+        background: #0f0f27;
+        overflow: visible;
     }
-
-    .van-cell__label {
-        color: @text3;
+    .send_verification {
+        background-color: #0f0f27;
+        border: none;
+        font-size: 12px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #28b6ff;
+        margin-right: -20px;
     }
 }
+.login_divider {
+    padding: 7px 0px 30px 29px;
+    box-sizing: border-box;
+    // background: #5F646F;
+    // opacity: 0.2;
+}
+.sure {
+    width: 100%;
+    margin-top: 30px;
+    height: 40px;
+    border-radius: 8px;
+    font-size: 16px;
+    font-family: PingFangSC-Medium, PingFang SC;
+    font-weight: 500;
+}
+.suretwo{
+    margin-top: 100px;
+}
 </style>

+ 196 - 127
src/views/account/Forget.vue

@@ -1,72 +1,86 @@
 <template>
     <div class="login">
-        <div class="tabs">
-            <div class="tab active">设置新密码</div>
-        </div>
-
+        <div class="tabs">修改登录密码</div>
         <van-form ref="form" @submit="submit">
-            <van-field
-                type="tel"
-                name="手机号码"
-                placeholder="请输入手机号码"
-                v-model="form.phone"
-                :maxlength="11"
-                :rules="[
-                    { required: true, message: '请输入手机号码' },
-                    {
-                        pattern: phonePattern,
-                        message: '手机号码格式错误'
-                    }
-                ]"
-            >
-                <template #left-icon>
-                    <img :src="require('@assets/svgs/login_icon_zhanghao.svg')" class="icon" />
-                </template>
-            </van-field>
-
-            <van-field
-                type="digit"
-                name="验证码"
-                placeholder="请输入验证码"
-                v-model="form.code"
-                :maxlength="4"
-                :rules="[{ required: true, message: '请输入验证码' }]"
-            >
-                <template #left-icon>
-                    <img :src="require('@assets/svgs/login_icon_code.svg')" class="icon" />
-                </template>
-                <template #button>
-                    <van-button
-                        @click="sendPhone"
-                        class="sub-code"
-                        size="small"
-                        plain
-                        :disabled="isSend"
-                        type="primary"
-                    >
-                        {{ isSend ? `已发送(${sendNum})S` : '发送验证码' }}
-                    </van-button>
-                </template>
-            </van-field>
-
-            <van-field
-                type="password"
-                name="密码"
-                placeholder="请输入密码"
-                v-model="form.password"
-                :rules="[{ required: true, message: '请填写密码' }]"
-            >
-                <template #left-icon>
-                    <img :src="require('@assets/svgs/login_icon_mima.svg')" class="icon" />
-                </template>
-            </van-field>
-
-            <van-field
-                type="password"
-                name="密码"
-                placeholder="请再次输入密码"
-                v-model="form.password2"
-                :rules="[
+            <div class="login_information">
+                <img :src="require('@assets/login_icon_zhanghao.png')" alt="" class="login_information_img" />
+                <van-field
+                    v-model="form.phone"
+                    :maxlength="11"
+                    type="tel"
+                    placeholder="请输入手机号"
+                    class="login_information_con"
+                    :rules="[
+                        { required: true, message: '请输入手机号码' },
+                        {
+                            pattern: phonePattern,
+                            message: '手机号码格式错误'
+                        }
+                    ]"
+                />
+            </div>
+            <van-divider class="login_divider" />
+            <div class="login_information">
+                <img
+                    :src="require('@assets/verification_code.png')"
+                    alt=""
+                    class="login_information_img login_information_img_con"
+                />
+                <van-field
+                    v-model="form.code"
+                    :maxlength="4"
+                    type="tel"
+                    placeholder="请输入验证码"
+                    :rules="[{ required: true, message: '请输入验证码' }]"
+                    class="login_information_con"
+                >
+                    <template #button>
+                        <van-button
+                            @click="sendPhone"
+                            class="send_verification"
+                            size="small"
+                            plain
+                            :disabled="isSend"
+                            type="primary"
+                        >
+                            {{ isSend ? `${sendNum}S后重新发送` : '发送验证码' }}
+                        </van-button>
+                    </template>
+                    <!-- <template #button>
+                            <div v-if="verifyDisplay == true" class="login_information_verification">
+                                <van-count-down
+                                    :time="timeOne"
+                                    format="ss"
+                                    :auto-start="countDownOne"
+                                    @finish="onFinish"
+                                />
+                                <div>S后重新发送</div>
+                            </div>
+                            <van-button size="small" class="send_verification" @click="sendPhone" v-else
+                                >发送验证码</van-button
+                            >
+                        </template> -->
+                </van-field>
+            </div>
+            <van-divider class="login_divider" />
+            <div class="login_information">
+                <img :src="require('@assets/login_icon_mima.png')" alt="" class="login_information_img" />
+                <van-field
+                    v-model="form.password"
+                    type="password"
+                    placeholder="建议8-16位,数字、大小写字母组合"
+                    :rules="[{ required: true, message: '请填写密码' }]"
+                    class="login_information_con"
+                />
+            </div>
+            <van-divider class="login_divider" />
+            <div class="login_information">
+                <img :src="require('@assets/login_icon_mima.png')" alt="" class="login_information_img" />
+                <van-field
+                    v-model="form.password2"
+                    type="password"
+                    placeholder="请再次输入密码"
+                    :rules="[
                     { required: true, message: '请再次填写密码' },
                     {
                         validator: val => {
@@ -78,19 +92,15 @@
                         },
                         message: '两次密码输入不一致'
                     }
-                ]"
-            >
-                <template #left-icon>
-                    <img :src="require('@assets/svgs/login_icon_mima.svg')" class="icon" />
-                </template>
-            </van-field>
-
+                    ]"
+                    class="login_information_con"
+                />
+            </div>
+            <van-divider class="login_divider" />
             <div class="button">
                 <van-button
-                    round
-                    block
                     native-type="submit"
-                    :color="`linear-gradient(to right, ${$colors.prim}, ${$colors.warn})`"
+                    color="#28B6FF"
                     class="sure"
                     >确定修改</van-button
                 >
@@ -109,6 +119,7 @@
 
 <script>
 import phone from '../../mixins/phone';
+import { Toast } from 'vant';
 export default {
     mixins: [phone],
     data() {
@@ -124,9 +135,11 @@ export default {
     },
     methods: {
         sendPhone() {
-            this.$refs.form.validate('手机号码').then(() => {
+            if (this.form.phone == '') {
+                Toast('手机号码格式错误');
+            } else {
                 this.sendMsg(this.form.phone);
-            });
+            }
         },
         submit() {
             this.$toast.loading({
@@ -152,69 +165,125 @@ export default {
 </script>
 
 <style lang="less" scoped>
+/deep/ .van-field__control::placeholder {
+    font-size: 14px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #5f646f;
+}
+/deep/ .van-divider::before {
+    height: 1px;
+    background: #5f646f;
+    opacity: 0.2;
+}
+/deep/ .van-field__control {
+    color: #ffffff;
+    background: #0f0f27;
+}
 .login {
-    padding: 40px 50px 100px;
+    padding: 60px 48px 0px;
+    background: #0f0f27;
 }
-
 .tabs {
     display: flex;
     justify-content: space-between;
     align-items: center;
-    .tab {
-        font-size: 18px;
-        color: #c8c9cc;
-        line-height: 25px;
-
-        &.active {
-            font-size: 24px;
-            font-weight: bold;
-            color: @text0;
-            line-height: 33px;
-        }
-    }
-}
-
-.icon {
-    display: block;
-    margin-top: 12px;
+    margin-bottom: 50px;
+    font-size: 28px;
+    font-family: PingFangSC-Medium, PingFang SC;
+    font-weight: 500;
+    color: #ffffff;
+    line-height: 34px;
 }
-/deep/ .van-form {
-    margin-top: 28px;
+.login_information {
+    display: flex;
+    // margin-left: 45px;
+    .login_information_img {
+        width: 24px;
+        height: 24px;
+        margin-right: 8px;
+    }
+    .login_information_img_con {
+        padding-top: 5px;
+    }
     .van-cell {
-        padding: 0px 0;
-
-        .van-field__left-icon {
-            margin-right: 8px;
-        }
+        padding: 0;
     }
-
-    .van-cell + .van-cell {
-        margin-top: 20px;
+    .login_information_con {
+        width: 250px;
+        // height: 24px;
+        background: #0f0f27;
+        overflow: visible;
     }
-    .van-field__body {
-        height: 44px;
-        align-items: center;
+    .send_verification {
+        background-color: #0f0f27;
+        border: none;
+        font-size: 12px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #28b6ff;
+        margin-right: -20px;
     }
 }
-.button {
-    margin-top: 60px;
+.login_information:last-child {
+    margin-top: 20px;
+}
+.login_divider {
+    padding: 7px 0px 30px 29px;
+    box-sizing: border-box;
+    // background: #5F646F;
+    // opacity: 0.2;
+}
+.sure{
+    width: 100%;
+    margin-top: 30px;
+    height: 40px;
+    border-radius: 8px;
+    font-size: 16px;
+    font-family: PingFangSC-Medium, PingFang SC;
+    font-weight: 500;
+}
+// .icon {
+//     display: block;
+//     margin-top: 12px;
+// }
+// /deep/ .van-form {
+//     margin-top: 28px;
+//     .van-cell {
+//         padding: 0px 0;
 
-    .del {
-        margin-top: 20px;
-        border-color: @text0;
-    }
+//         .van-field__left-icon {
+//             margin-right: 8px;
+//         }
+//     }
 
-    .sure {
-        color: @bg !important;
-    }
+//     .van-cell + .van-cell {
+//         margin-top: 20px;
+//     }
+//     .van-field__body {
+//         height: 44px;
+//         align-items: center;
+//     }
+// }
+// .button {
+//     margin-top: 60px;
 
-    .van-button {
-        font-weight: bold;
-    }
-}
+//     .del {
+//         margin-top: 20px;
+//         border-color: @text0;
+//     }
 
-.sub-code {
-    padding-right: 0;
-    border-width: 0;
-}
+//     .sure {
+//         color: @bg !important;
+//     }
+
+//     .van-button {
+//         font-weight: bold;
+//     }
+// }
+
+// .sub-code {
+//     padding-right: 0;
+//     border-width: 0;
+// }
 </style>

+ 6 - 6
src/views/account/Introduction.vue

@@ -4,19 +4,19 @@
             <div>
                 <div class="align-center">平台简介</div>
                 <p>
-                    RAEXRAEX宇宙是全球领先的专业艺术品生态簇运营商,重点打造“全球领先数字藏品生态簇”的产业闭环,持续塑造推出中国权威数字文创商品,参与全球数字藏品定价体系,加速“一带一路”的全球文化内容输出。在这里您可以创造、收集、售卖您的艺术品及数字手办潮玩,感受全球顽家为您带来的新奇别致体验,共同探索艺术宇宙的真实奥秘!欢迎您的加入!
+                    古藏站是全球领先的专业艺术品生态簇运营商,重点打造“全球领先数字藏品生态簇”的产业闭环,持续塑造推出中国权威数字文创商品,参与全球数字藏品定价体系,加速“一带一路”的全球文化内容输出。在这里您可以创造、收集、售卖您的艺术品及数字手办潮玩,感受全球顽家为您带来的新奇别致体验,共同探索艺术宇宙的真实奥秘!欢迎您的加入!
                 </p>
                 <p>
-                    RAEX宇宙,是元宇宙游戏《The Oasis
-                    RAEX宇宙》旗下重要的艺术品生态簇底层架构及原生内容展示平台,是《The Oasis
-                    RAEX宇宙》体系中的核心载体之一。
+                    古藏站,是元宇宙游戏《The Oasis
+                    古藏站》旗下重要的艺术品生态簇底层架构及原生内容展示平台,是《The Oasis
+                    古藏站》体系中的核心载体之一。
                 </p>
                 <p>
                     《The Oasis
-                    RAEX宇宙》的重要特征是开放和自由创作,且可进行不断扩张,摆脱了现实世界时间和空间的束缚,让用户能够放飞自己的想象力,在虚拟世界里自由搭建自己想要做的东西,并在用户互动中碰撞出更多的灵感火花。用户可以搭建建筑并展出自己的成果。用户购买虚拟地产后,可以通过搭建自己喜欢的建筑,展示自己的数字藏品,或者搭建自己的办公室甚至可以在里面开餐厅、数字展厅等。这些成果还可以在项目内进行交易、展览,获得项目积分支持。
+                    古藏站》的重要特征是开放和自由创作,且可进行不断扩张,摆脱了现实世界时间和空间的束缚,让用户能够放飞自己的想象力,在虚拟世界里自由搭建自己想要做的东西,并在用户互动中碰撞出更多的灵感火花。用户可以搭建建筑并展出自己的成果。用户购买虚拟地产后,可以通过搭建自己喜欢的建筑,展示自己的数字藏品,或者搭建自己的办公室甚至可以在里面开餐厅、数字展厅等。这些成果还可以在项目内进行交易、展览,获得项目积分支持。
                 </p>
                 <p>
-                    RAEX宇宙于全球范围内持续性引入世界级IP,建立强大且完善的IP数据库:包含演艺明星、体育赛事、科技潮玩,潮流音乐,当红小说、知名艺术品及流量动漫在内的多种配置。
+                    古藏站于全球范围内持续性引入世界级IP,建立强大且完善的IP数据库:包含演艺明星、体育赛事、科技潮玩,潮流音乐,当红小说、知名艺术品及流量动漫在内的多种配置。
                 </p>
             </div>
         </div>

+ 99 - 48
src/views/account/Login.vue

@@ -50,7 +50,7 @@
     <!-- 
                 <van-button block native-type="submit" color="#26F50D" class="sure">现在出发!</van-button>
                 <van-button class="del" block plain @click="$router.replace('/register')"
-                    >暂无RAEX宇宙登陆许可 立即申领</van-button
+                    >暂无古藏站登陆许可 立即申领</van-button
                 >
             </div>
         </van-form>
@@ -106,7 +106,7 @@
     <!-- 
                 <van-button block native-type="submit" color="#26F50D" class="sure">现在出发!</van-button>
                 <van-button class="del" block plain @click="$router.replace('/register')"
-                    >暂无RAEX宇宙登陆许可 立即申领</van-button
+                    >暂无古藏站登陆许可 立即申领</van-button
                 >
             </div>
         </van-form>
@@ -134,7 +134,6 @@
                             v-model="loginForm.phone"
                             type="tel"
                             placeholder="请输入手机号"
-                            
                             :rules="[
                                 { required: true, message: '请输入手机号码' },
                                 {
@@ -158,7 +157,7 @@
                     </div>
                     <van-divider class="login_divider" />
                     <div class="login_verification">
-                        <div>忘记密码?</div>
+                        <div @click="$router.replace('/forget')">忘记密码?</div>
                         <div
                             class="login_verification_con"
                             @click="(verificationCode = true), (verification = true), (active = 'code')"
@@ -167,20 +166,11 @@
                         </div>
                     </div>
                     <div class="login">
-                        <van-button round block native-type="submitLogin" color="#28B6FF" class="register_now_con_login"
-                            >登录</van-button
-                        >
+                        <van-button native-type="submitLogin" color="#28B6FF" class="login_now_con">登录</van-button>
                     </div>
                 </van-form>
                 <div class="register">
-                    <van-button
-                        round
-                        block
-                        @click="registerNowConLogin"
-                        color="#28B6FF"
-                        class="register_now_con_login register_now_con_register"
-                        >注册</van-button
-                    >
+                    <van-button @click="registerNowConLogin" class="register_con">注册</van-button>
                 </div>
             </div>
             <!-- 验证码登录 -->
@@ -212,11 +202,9 @@
                         <van-divider class="login_divider" />
                         <div class="verification_code_login">
                             <van-button
-                                round
-                                block
                                 native-type="submitLoginCode"
                                 color="#28B6FF"
-                                class="register_now_con_login"
+                                class="verification_code_login_con"
                                 >发送验证码</van-button
                             >
                         </div>
@@ -238,6 +226,7 @@
                         <van-password-input
                             :value="value"
                             :mask="false"
+                            length="4"
                             :focused="showKeyboard"
                             @focus="showKeyboard = true"
                         />
@@ -254,13 +243,8 @@
                         />
                     </div>
                     <div class="verification_code_login_register">
-                        <van-button
-                            round
-                            block
-                            @click="submitLoginCodeOne"
-                            color="#28B6FF"
-                            class="register_now_con_login"
-                            >发送验证码</van-button
+                        <van-button @click="submitLogin" color="#28B6FF" class="register_now_con_login"
+                            >登录</van-button
                         >
                     </div>
                 </div>
@@ -294,7 +278,7 @@
                 </div>
                 <van-divider class="login_divider" />
                 <div class="login_information">
-                    <img :src="require('@assets/verification_code.png')" alt="" class="login_information_img" />
+                    <img :src="require('@assets/verification_code.png')" alt="" class="login_information_img login_information_img_con" />
                     <van-field
                         v-model="form.code"
                         type="tel"
@@ -331,9 +315,7 @@
                 </div>
                 <van-divider class="login_divider" />
                 <div class="register_now">
-                    <van-button round block native-type="submit" color="#28B6FF" class="register_now_con"
-                        >立即注册</van-button
-                    >
+                    <van-button native-type="submit" color="#28B6FF" class="register_now_con">立即注册</van-button>
                     <!-- <div class="register_now_con" @click="registerNow">立即注册</div> -->
                 </div>
             </van-form>
@@ -342,7 +324,9 @@
             </div>
         </div>
         <div class="login_tip">
-            登录则代表同意 <span class="login_tip_con">用户协议</span> 和 <span class="login_tip_con">隐私协议</span>
+            登录则代表同意
+            <span class="login_tip_con" @click.stop="$router.push('/agreement?page=service')">用户协议</span> 和
+            <span class="login_tip_con" @click.stop="$router.push('/agreement')">隐私协议</span>
         </div>
     </div>
 </template>
@@ -637,23 +621,55 @@ export default {
 </script>
 
 <style lang="less" scoped>
+.frist{
+    height: 379px;
+    background-color: #fff;
+}
+/deep/ .van-password-input {
+    padding-right: 50px;
+    .van-password-input__item {
+        flex: 1;
+    }
+}
+/deep/ .van-field__control::placeholder {
+    font-size: 14px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #5f646f;
+}
+/deep/ .van-divider::before {
+    height: 1px;
+    background: #5f646f;
+    opacity: 0.2;
+}
 .content {
     width: 100%;
     height: 100%;
-    position: absolute;
+    // position: absolute;
     background: #0f0f27;
     // margin-top: 44px;
     .login_information_verification {
         color: #28b6ff;
         display: flex;
+        margin-right: -15px;
     }
     .verification_code_login_register {
-        margin-top: 133px;
+        width: 100%;
+        margin-top: 144px;
         margin-bottom: 30px;
-        margin-right: 47px;
+        padding: 0px 47px 0px 0px;
+        box-sizing: border-box;
+        .register_now_con_login {
+            width: 100%;
+            height: 40px;
+            border-radius: 8px;
+            font-size: 16px;
+            font-family: PingFangSC-Medium, PingFang SC;
+            font-weight: 500;
+        }
     }
     /deep/ .van-count-down {
-        // padding-top: 2px;
+        padding-top: 2px;
         box-sizing: border-box;
         font-size: 14px;
         font-family: PingFangSC-Regular, PingFang SC;
@@ -686,6 +702,9 @@ export default {
             height: 24px;
             margin-right: 8px;
         }
+        .login_information_img_con{
+            padding-top: 5PX;
+        }
         .van-cell {
             padding: 0;
         }
@@ -693,6 +712,7 @@ export default {
             width: 250px;
             // height: 24px;
             background: #0f0f27;
+            overflow: visible;
         }
         .send_verification {
             background-color: #0f0f27;
@@ -701,6 +721,7 @@ export default {
             font-family: PingFangSC-Regular, PingFang SC;
             font-weight: 400;
             color: #28b6ff;
+            margin-right: -23px;
         }
     }
     .login_information:last-child {
@@ -709,6 +730,8 @@ export default {
     .login_divider {
         padding: 10px 48px 10px 77px;
         box-sizing: border-box;
+        // background: #5F646F;
+        // opacity: 0.2;
     }
     .login_verification {
         padding: 0px 48px 0px 77px;
@@ -724,9 +747,21 @@ export default {
         }
     }
     .login {
-        margin-top: 50px;
+        width: 100%;
+        margin-top: 75px;
         padding: 0px 47px 0px 48px;
         box-sizing: border-box;
+        .login_now_con {
+            width: 100%;
+            height: 40px;
+            background: #28b6ff;
+            border-radius: 8px;
+            line-height: 40px;
+            font-size: 16px;
+            font-family: PingFangSC-Medium, PingFang SC;
+            font-weight: 500;
+            color: #ffffff;
+        }
         .login_con {
             width: 100%;
             height: 40px;
@@ -741,6 +776,7 @@ export default {
         }
     }
     .register {
+        width: 100%;
         margin-top: 28px;
         padding: 0px 47px 0px 48px;
         box-sizing: border-box;
@@ -748,15 +784,13 @@ export default {
         .register_con {
             width: 100%;
             height: 40px;
-            background: #29293f;
             border-radius: 8px;
             font-size: 16px;
             font-family: PingFangSC-Medium, PingFang SC;
             font-weight: 500;
             color: #939599;
-            line-height: 40px;
-            text-align: center;
-            margin-bottom: 153px;
+            background: #29293f;
+            border: none;
         }
     }
     .login_tip {
@@ -770,19 +804,16 @@ export default {
         }
     }
     .verification_code_login {
-        padding: 146px 47px 30px 48px;
+        width: 100%;
+        padding: 136px 47px 30px 48px;
         box-sizing: border-box;
         .verification_code_login_con {
             width: 100%;
             height: 40px;
-            background: #28b6ff;
             border-radius: 8px;
             font-size: 16px;
             font-family: PingFangSC-Medium, PingFang SC;
             font-weight: 500;
-            color: #ffffff;
-            text-align: center;
-            line-height: 40px;
         }
     }
     .account_password_login {
@@ -792,6 +823,7 @@ export default {
         color: #28b6ff;
         text-align: center;
         margin-bottom: 167px;
+        line-height: 24px;
     }
     .verification_code_input {
         padding: 60px 0 0 50px;
@@ -826,16 +858,19 @@ export default {
                 margin: 0;
             }
             /deep/ .van-password-input__security li {
-                width: 36px;
+                width: 48px;
                 height: 48px;
                 background: #29293f;
                 border-radius: 4px;
-                margin-right: 12px;
+                margin-right: 28px;
                 font-size: 24px;
                 color: #ffffff;
-                flex: none;
+                flex: 1;
                 border: none;
             }
+            /deep/ .van-password-input__security li:last-child {
+                margin-right: 0;
+            }
             /deep/ [class*='van-hairline']:after {
                 border: none;
             }
@@ -856,8 +891,18 @@ export default {
         color: #ffffff;
     }
     .register_now {
-        padding: 66px 47px 30px 48px;
+        width: 100%;
+        padding: 94px 47px 30px 48px;
         box-sizing: border-box;
+        .register_now_con {
+            width: 100%;
+            height: 40px;
+            background: #28b6ff;
+            border-radius: 8px;
+            font-size: 16px;
+            font-family: PingFangSC-Medium, PingFang SC;
+            font-weight: 500;
+        }
         .register_now_con_login {
             width: 100%;
             height: 40px;
@@ -882,6 +927,12 @@ export default {
         color: #28b6ff;
         text-align: center;
         margin-bottom: 167px;
+        line-height: 24px;
     }
 }
+// /deep/ .van-button:before{
+//     height: 40px;
+//     background: #28B6FF;
+//     border-radius: 8px;
+// }
 </style>

+ 1 - 1
src/views/account/Question.vue

@@ -11,7 +11,7 @@
                 <p>您好~已购买的数字藏品是经过蚂蚁链确权,权属清晰、数量透明,永不增发的藏品,极具收藏价值。</p>
                 <h6>3.如何购买数字藏品?</h6>
                 <p>您好~购买步骤如下:</p>
-                <p>1)下载RAEX宇宙;</p>
+                <p>1)下载古藏站;</p>
                 <p>2)注册账号;</p>
                 <p>3)浏览首页/发现页中的商品;</p>
                 <p>4)点击“立即购买“,付款;</p>

+ 1 - 1
src/views/account/Register.vue

@@ -119,7 +119,7 @@
             <div class="button">
                 <van-button round block native-type="submit" color="#26F50D" class="sure"> 立即申领 </van-button>
                 <van-button class="del" round block plain @click="$router.replace('/login')">
-                    已有RAEX宇宙登陆许可 去登陆
+                    已有古藏站登陆许可 去登陆
                 </van-button>
             </div>
         </van-form>

+ 1 - 1
src/views/account/Security.vue

@@ -83,7 +83,7 @@ export default {
         box-sizing: border-box;
         width: 100%;
         height: 100%;
-        position: absolute;
+        // position: absolute;
         background: #0F0F27;
         .account_security{
             margin-left: 6px;

+ 14 - 2
src/views/account/Setting.vue

@@ -42,7 +42,7 @@
             <div class="user_id_title">用户ID</div>
             <div class="user_id_con">
                 <div>{{userInfo.id}}</div>
-                <img :src="require('@assets/copy_icon.png')" alt="" class="user_id_con_img">
+                <img :src="require('@assets/copy_icon.png')" alt="" class="user_id_con_img" @click="copy">
             </div>
         </div>
     </div>
@@ -60,6 +60,18 @@ export default {
         ...mapState(['userInfo'])
     },
     methods: {
+        copy() {
+            this.$copyText(this.userInfo.id).then(
+                e => {
+                    this.$toast.success('复制成功');
+                    console.log(e);
+                },
+                e => {
+                    this.$toast('复制失败');
+                    console.log(e);
+                }
+            );
+        },
         chooseSex(val) {
             this.updateUser({ sex: val.name });
         },
@@ -128,7 +140,7 @@ export default {
             margin: 14px 0;
             height: 1px;
             background: #5F646F;
-            opacity: 0.3;
+            opacity: 0.2;
         }
         .user_id{
             display: flex;

+ 159 - 142
src/views/account/TradingPassword.vue

@@ -1,50 +1,51 @@
 <template>
     <div class="login">
-        <div class="tabs">
-            <div class="tab active">修改交易密码</div>
-            <div class="text">修改验证当前账号的手机号码才可以修改</div>
-        </div>
-
+        <div class="tabs">修改交易密码</div>
         <van-form v-if="step === 0" @submit="next">
-            <van-cell class="phone" :title="phone" label="修改交易密码需先验证当前手机号" />
-            <van-field
-                type="digit"
-                name="验证码"
-                placeholder="请输入验证码"
-                v-model="form.code"
-                :maxlength="4"
-                :rules="[{ required: true, message: '请输入验证码' }]"
-            >
-                <template #left-icon>
-                    <img :src="require('@assets/svgs/login_icon_code.svg')" class="icon" />
-                </template>
-                <template #button>
-                    <van-button
-                        @click="sendBefPhone"
-                        class="sub-code"
-                        size="small"
-                        plain
-                        type="primary"
-                        :disabled="isSend"
-                    >
-                        {{ isSend ? `已发送(${sendNum})S` : '发送验证码' }}
-                    </van-button>
-                </template>
-            </van-field>
-
-            <div class="button">
+            <div class="transaction_tips">
+                <div class="transaction_tips_phone">{{phone}}</div>
+                <div class="transaction_tips_con">修改交易密码需先验证当前手机号</div>
+            </div>
+            <div class="login_information">
+                <img
+                    :src="require('@assets/verification_code.png')"
+                    alt=""
+                    class="login_information_img login_information_img_con"
+                />
+                <van-field
+                    v-model="form.code"
+                    :maxlength="4"
+                    type="tel"
+                    placeholder="请输入验证码"
+                    :rules="[{ required: true, message: '请输入验证码' }]"
+                    class="login_information_con"
+                >
+                    <template #button>
+                        <van-button
+                            @click="sendBefPhone"
+                            class="send_verification"
+                            size="small"
+                            plain
+                            :disabled="isSend"
+                            type="primary"
+                        >
+                            {{ isSend ? `${sendNum}S后重新发送` : '发送验证码' }}
+                        </van-button>
+                    </template>
+                </van-field>
+            </div>
+            <van-divider class="login_divider" />
+            <div>
                 <van-button
-                    round
-                    block
                     native-type="submit"
-                    :color="`linear-gradient(to right, ${$colors.prim}, ${$colors.warn})`"
                     class="sure"
-                    >下一步</van-button
+                    color="#28B6FF"
+                    >确认修改</van-button
                 >
             </div>
         </van-form>
-
         <van-form v-else ref="form" @submit="submit">
+            <div class="modification_tips">修改支付密码后立即生效,下次交易请使用新密码</div>
             <div class="input">
                 <div class="text1">请输入交易密码</div>
                 <van-password-input :value="password" :focused="showKeyboard" @focus="showKeyboard = true" />
@@ -58,7 +59,6 @@
                     close-button-text="完成"
                 />
             </div>
-
             <div class="input">
                 <div class="text1">请再次输入交易密码</div>
                 <van-password-input :value="password2" :focused="showKeyboard2" @focus="showKeyboard2 = true" />
@@ -72,14 +72,11 @@
                     close-button-text="完成"
                 />
             </div>
-
-            <div class="button">
+            <div>
                 <van-button
-                    round
-                    block
                     native-type="submit"
-                    :color="`linear-gradient(to right, ${$colors.prim}, ${$colors.warn})`"
-                    class="sure"
+                    class="suretwo"
+                    color="#28B6FF"
                     >确定修改</van-button
                 >
             </div>
@@ -167,126 +164,146 @@ export default {
 </script>
 
 <style lang="less" scoped>
-.login {
-    padding: 40px 16px 100px;
+/deep/ .van-field__control::placeholder {
+    font-size: 14px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #5f646f;
 }
-
-.van-form {
-    padding: 0 30px;
+/deep/ .van-divider::before {
+    height: 1px;
+    background: #5f646f;
+    opacity: 0.2;
+}
+/deep/ .van-field__control {
+    color: #ffffff;
+    background: #0f0f27;
+}
+.login {
+    padding: 60px 48px 0px;
+    background: #0f0f27;
 }
-
 .tabs {
-    .tab {
-        font-size: 18px;
-        color: #c8c9cc;
-        line-height: 25px;
-
-        &.active {
-            font-size: 24px;
-            font-weight: bold;
-            color: @text0;
-            line-height: 33px;
-        }
+    font-size: 28px;
+    font-family: PingFangSC-Medium, PingFang SC;
+    font-weight: 500;
+    color: #ffffff;
+    line-height: 34px;
+}
+.transaction_tips {
+    margin-top: 50px;
+    margin-bottom: 30px;
+    .transaction_tips_phone {
+        font-size: 20px;
+        font-family: PingFangSC-Medium, PingFang SC;
+        font-weight: 500;
+        color: #ffffff;
+        line-height: 28px;
+        margin-bottom: 2px;
     }
-
-    .text {
-        font-size: 12px;
-        color: @text3;
-        line-height: 22px;
-        margin-top: 4px;
+    .transaction_tips_con {
+        font-size: 14px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #939599;
+        line-height: 24px;
     }
 }
-
-.icon {
-    display: block;
-    margin-top: 12px;
-}
-/deep/ .van-form {
-    margin-top: 28px;
-    .van-cell {
-        padding: 0px 0;
-
-        .van-field__left-icon {
-            margin-right: 8px;
-        }
+.login_information {
+    display: flex;
+    // margin-left: 45px;
+    .login_information_img {
+        width: 24px;
+        height: 24px;
+        margin-right: 8px;
     }
-
-    .van-cell + .van-cell {
-        margin-top: 20px;
-    }
-    .van-field__body {
-        height: 44px;
-        align-items: center;
+    .login_information_img_con {
+        padding-top: 5px;
     }
-}
-.button {
-    margin-top: 120px;
-
-    .del {
-        margin-top: 20px;
-        border-color: @text0;
+    .van-cell {
+        padding: 0;
     }
-
-    .sure {
-        color: @bg !important;
+    .login_information_con {
+        width: 250px;
+        // height: 24px;
+        background: #0f0f27;
+        overflow: visible;
     }
-
-    .van-button {
-        font-weight: bold;
+    .send_verification {
+        background-color: #0f0f27;
+        border: none;
+        font-size: 12px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #28b6ff;
+        margin-right: -20px;
     }
 }
-
-.sub-code {
-    padding-right: 0;
-    border-width: 0;
+.login_divider {
+    padding: 7px 0px 30px 29px;
+    box-sizing: border-box;
+    // background: #5F646F;
+    // opacity: 0.2;
 }
-
-/deep/.phone {
-    .van-cell__title > span {
-        font-size: 20px;
-        font-weight: bold;
-    }
-
-    .van-cell__label {
-        color: @text3;
-    }
+.sure {
+    width: 100%;
+    margin-top: 30px;
+    height: 40px;
+    border-radius: 8px;
+    font-size: 16px;
+    font-family: PingFangSC-Medium, PingFang SC;
+    font-weight: 500;
 }
-
-/deep/ .van-password-input {
-    margin: 0 0;
-    .van-password-input__security {
-        border: 1px solid @text3;
-        height: 42px;
-        border-radius: 2px;
-        li {
-            background-color: transparent;
-            &:not(:last-child) {
-                border-right: 1px solid @text3;
-            }
-            i {
-                background-color: @text0;
-                //background-color: #fff;
-            }
-        }
-    }
+.suretwo{
+    width: 100%;
+    margin-top: 60px;
+    height: 40px;
+    border-radius: 8px;
+    font-size: 16px;
+    font-family: PingFangSC-Medium, PingFang SC;
+    font-weight: 500;
 }
-/deep/.van-number-keyboard__body {
-    //background-color: #4a4a4a;
-    .van-key {
-        //background-color: @bg;
-        &:active {
-            //background-color: @bg3;
-        }
-    }
+.modification_tips {
+    margin-top: 6px;
+    margin-bottom: 10px;
+    font-size: 12px;
+    font-family: PingFangSC-Regular, PingFang SC;
+    font-weight: 400;
+    color: #939599;
+    line-height: 17px;
 }
-
 .input {
     margin-top: 20px;
     .text1 {
         font-size: 14px;
-        color: @text0;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #ffffff;
         line-height: 24px;
         margin-bottom: 6px;
     }
 }
+/deep/ .van-password-input {
+    margin: 0;
+}
+/deep/ .van-password-input__security li {
+    width: 44px;
+    height: 44px;
+    background: #29293f;
+    border-radius: 2px;
+    margin-right: 2px;
+    font-size: 24px;
+    color: #ffffff;
+    flex: 1;
+    border: none;
+}
+/deep/ .van-password-input__security li:last-child {
+    margin-right: 0;
+}
+/deep/ [class*='van-hairline']:after {
+    border: none;
+}
+/deep/ .van-password-input__security i{
+    background-color: #fff !important;
+}
 </style>

+ 30 - 22
src/views/account/Verified.vue

@@ -46,7 +46,7 @@
             >
             </van-field>
             <!-- 身份证正面 -->
-            <van-field
+            <!-- <van-field
                 label="身份证照片(正面照)"
                 name="正面照"
                 v-model="form.idFront"
@@ -62,15 +62,15 @@
             >
                 <template #input>
                     <div class="img-content">
-                        <van-image :src="form.idFront || require('@assets/svgs/bg-png.svg')" fit="cover" width="160px" height="160px" radius="8"/>
-                        <!-- <img :src="require('@assets/icon_shangchuan.png')" alt="" class="iD_card_upload_con_img">
-                        <div class="iD_card_upload_con_text">点击上传</div> -->
+                        <img v-if="form.idFront === ''" :src="require('@assets/png-shangchuan@3x.png')" alt="" class="img-content_con"/>
+                        <van-image v-else :src="form.idFront" fit="cover" width="160px" height="160px"/>
+                        <div class="img-content_con_text" v-if="form.idFront === ''">点击上传</div>
                         <van-uploader name="idFront" result-type="file" :after-read="afterRead" />
                     </div>
                 </template>
-            </van-field>
+            </van-field> -->
             <!-- 身份证反面 -->
-            <van-field
+            <!-- <van-field
                 label="身份证照片(反面照)"
                 name="反面照"
                 v-model="form.idBack"
@@ -86,22 +86,17 @@
             >
                 <template #input>
                     <div class="img-content">
-                        <van-image :src="form.idBack || require('@assets/svgs/bg-png.svg')" fit="cover" width="160px" height="160px" radius="8"/>
-                        <!-- <img :src="require('@assets/icon_shangchuan.png')" alt="" class="iD_card_upload_con_img">
-                        <div class="iD_card_upload_con_text">点击上传</div> -->
+                        <img v-if="form.idBack === ''" :src="require('@assets/png-shangchuan@3x.png')" alt="" class="img-content_con"/>
+                        <van-image v-else :src="form.idBack" fit="cover" width="160px" height="160px"/>
+                        <div class="img-content_con_text" v-if="form.idBack === ''">点击上传</div>
                         <van-uploader name="idBack" result-type="file" :after-read="afterRead" />
                     </div>
                 </template>
-            </van-field>
+            </van-field> -->
             <div class="next_step" ref="btn">
-                <van-button
-                    round
-                    block
-                    @click="submit"
-                    class="next_step_con"
-                >
+                <div @click="submit" class="next_step_con">
                     提交审核
-                </van-button>
+                </div>
             </div>
         </van-form>
         <!-- <van-field
@@ -271,8 +266,8 @@ export default {
                 phone: '',
                 email: '',
                 idNo: '',
-                idFront: '',
-                idBack: '',
+                // idFront: '',
+                // idBack: '',
                 status: ''
             },
             btn: null
@@ -359,7 +354,7 @@ export default {
     .van-field__body {
         height: 56px;
         align-items: center;
-        border-bottom: 1px solid #5F646F;
+        border-bottom: 1px solid rgba(95, 100, 111,.2);
     }
     .van-field__body:nth-of-type(4){
         margin-top: 22px;
@@ -372,7 +367,7 @@ export default {
     }
     .van-field__label {
         font-size: 14px;
-        font-weight: bold;
+        // font-weight: bold;
         color: #FFFFFF;
         line-height: 24px;
         margin-top: 16px;
@@ -434,7 +429,7 @@ export default {
     width: 160px;
     height: 160px;
     // background-color: #5F646F;
-    border-radius: 8px;
+    // border-radius: 8px;
     // opacity: 0.2;
     // border: 1px dashed #5F646F;
     /deep/.van-uploader {
@@ -459,6 +454,19 @@ export default {
         color: #5F646F;
         margin-left: 56px;
     }
+    .img-content_con{
+        width: 160px;
+        height: 160px;
+    }
+    .img-content_con_text{
+            font-size: 12px;
+            font-family: PingFangSC-Regular, PingFang SC;
+            font-weight: 400;
+            color: #5F646F;
+            position: absolute;
+            top: 87px;
+            left: 57px;
+        }
 }
 /deep/.img {
     &.van-cell {

+ 23 - 15
src/views/account/Waiting.vue

@@ -1,24 +1,28 @@
 <template>
     <!-- <TopNavigation/> -->
     <div class="content">
-        <!-- 实名认证审核中 -->
-        <div class="under_review" v-if="this.userInfo && this.userInfo.authStatus">
-            <img :src="require('@assets/shenqing_shenhezhong.png')" alt="" class="under_review_img">
-            <div class="under_review_title">资料审核中</div>
-            <div class="under_review_tip">平台将于3日内完成资料审核,请耐心等待</div>
-            <div class="under_review_return">
-                <div class="under_review_return_con" @click="$router.go(-1)">返回</div>
-            </div>
-        </div>
         <!-- 实名认证失败 -->
-        <div class="under_review" v-else>
-            <img :src="require('@assets/shenqing_weitongguo.png')" alt="" class="under_review_img">
+        <div class="under_review" v-if="this.userInfo && this.userInfo.authStatus === 'FAIL'">
+            <div class="under_review_img">
+                <img :src="require('@assets/shenqing_weitongguo.png')" alt="" class="under_review_img_con">
+            </div>
             <div class="under_review_title">资料审核失败</div>
             <div class="audit_failed_tip">很遗憾,您的资料审核失败,请检查您填写的资料是否正确以及上传照片是否清晰</div>
             <div class="under_review_return">
                 <div class="under_review_return_con" @click="$router.replace('/verified')">重新填写</div>
             </div>
         </div>
+        <!-- 实名认证审核中 -->
+        <div class="under_review" v-else>
+            <div class="under_review_img">
+                <img :src="require('@assets/shenqing_shenhezhong.png')" alt="" class="under_review_img_con">
+            </div>
+            <div class="under_review_title">资料审核中</div>
+            <div class="under_review_tip">平台将于3日内完成资料审核,请耐心等待</div>
+            <div class="under_review_return">
+                <div class="under_review_return_con" @click="$router.go(-1)">返回</div>
+            </div>
+        </div>
     </div>
     <!-- <div class="page">
         <img class="img" :src="statusInfo.img" alt="" />
@@ -84,12 +88,16 @@ export default {
         height: 100%;
         position: absolute;
         background: #0F0F27;
-        margin-top: 44px;
+        // margin-top: 44px;
         .under_review{
             .under_review_img{
-                margin: 50px 0px 30px 133px;
-                width: 110px;
-                height: 86px;
+                margin: 50px 0px 30px 0px;
+                display: flex;
+                justify-content: center;
+                .under_review_img_con{
+                    width: 110px;
+                    height: 86px;
+                }
             }
             .under_review_title{
                 text-align: center;

+ 7 - 7
src/views/asset/Agreement.vue

@@ -2,7 +2,7 @@
     <van-overlay :show="show" @click="show = false" :lock-scroll="false" z-index="99">
         <div class="content" ref="content" @click.stop="">
             <div>
-                <div class="align-center">RAEX宇宙华储艺术品中心委托拍卖协议</div>
+                <div class="align-center">古藏站华储艺术品中心委托拍卖协议</div>
                 <h4>委托方(以下简称“甲方”):{{ identityAuthInfo.realName }}</h4>
                 <h3>身份证号:{{ identityAuthInfo.idNo }}</h3>
                 <h3>联系电话:{{ identityAuthInfo.phone }}</h3>
@@ -16,7 +16,7 @@
                 </p>
                 <h5>一、委托关系</h5>
                 <p>
-                    1、乙方系接受甲方委托按照乙方的拍卖程序,通过RAEX宇宙APP对外公开拍卖,但乙方对拍卖成交不承担保证责任,也不对竞买人的支付能力承担担保责任。<br />
+                    1、乙方系接受甲方委托按照乙方的拍卖程序,通过古藏站APP对外公开拍卖,但乙方对拍卖成交不承担保证责任,也不对竞买人的支付能力承担担保责任。<br />
                     2、甲方知晓并认可乙方的拍卖程序,并愿意按照乙方的拍卖程序进行拍卖和拍卖交割,由其对拍卖交易的后果承担全部法律责任。
                 </p>
                 <h5>二、拍卖品</h5>
@@ -48,8 +48,8 @@
                 <h5>4、拍卖品的产权转移:</h5>
                 <p>
                     (1)拍卖一旦成交,视为甲方对拍卖结果及拍卖价格无异议。<br />
-                    (2)拍卖成交后,拍卖标的将由RAEX宇宙APP自动转移至买受人。<br />
-                    (3)拍卖成交后,拍卖所得款项在扣除乙方及RAEX宇宙APP应得款项后,在T+1个工作日支付至甲方指定的银行账户内。
+                    (2)拍卖成交后,拍卖标的将由古藏站APP自动转移至买受人。<br />
+                    (3)拍卖成交后,拍卖所得款项在扣除乙方及古藏站APP应得款项后,在T+1个工作日支付至甲方指定的银行账户内。
                 </p>
                 <h5>5、特别承诺:</h5>
                 <p>
@@ -58,10 +58,10 @@
                     (3)乙方不得转委托而将拍卖品委托其他人进行拍卖。
                 </p>
                 <h5>6、拍卖的佣金与费用:</h5>
-                <p>双方确认,拍卖佣金为拍卖成交价的2.5%的佣金。该佣金在甲方向RAEX宇宙APP支付的5%的平台服务费中扣除。</p>
+                <p>双方确认,拍卖佣金为拍卖成交价的2.5%的佣金。该佣金在甲方向古藏站APP支付的5%的平台服务费中扣除。</p>
                 <h5>7、拍卖品的撤回与撤除:</h5>
                 <p>
-                    (1)甲方在拍卖开始前可以在RAEX宇宙APP上取消对拍卖品的拍卖委托并撤回拍卖品。但若因此造成乙方或他方损失的,乙方应承担全部赔偿责任。<br />
+                    (1)甲方在拍卖开始前可以在古藏站APP上取消对拍卖品的拍卖委托并撤回拍卖品。但若因此造成乙方或他方损失的,乙方应承担全部赔偿责任。<br />
                     (2)乙方有确切证据证明拍卖标的存在下列情况之一的,有权单方解除本协议,撤销对拍卖品的拍卖,并不承担由此产生的法律责任:<br />
                     ① 拍卖品的来源不合法或与甲方承诺不符。<br />
                     ② 拍卖品权属存在争议或权属状况与甲方声明不一致的。<br />
@@ -84,7 +84,7 @@
                     (3)甲方参与竞买或委托他人代为竞买自己委托的拍卖品的、甲方故意恶意炒作价格的、甲方进行“托价”行为的,乙方有权制止甲方的相应行为或向有关行政机关举报,并解除合同;甲方对乙方由此受到的损失应承担赔偿责任。<br />
                     2、争议解决:双方因本协议的解释或履行发生争议,应先由双方协商解决。如协商不成,双方任何一方可向乙方所在地人民法院提起诉讼。<br />
                     3、本协议为电子方式签署。自甲方点击“我已阅读且同意签署”按钮即视为协议生效。<br />
-                    4、甲方联络方式为其在乙方RAEX宇宙APP上所确认之联系方式,若甲方变更联络方式的,应及时通过乙方RAEX宇宙APP修改或变更。
+                    4、甲方联络方式为其在乙方古藏站APP上所确认之联系方式,若甲方变更联络方式的,应及时通过乙方古藏站APP修改或变更。
                 </p>
 
                 <h4>甲方(签章):{{ identityAuthInfo.realName }}</h4>

+ 5 - 3
src/views/asset/Consignment.vue

@@ -9,7 +9,7 @@
         </van-cell-group>
         <div class="transaction_password">
             <div class="transaction_password_title">2.请输入交易密码</div>
-            <div class="transaction_password_forget">
+            <div class="transaction_password_forget" @click="$router.push('/tradingPassword')">
                 忘记密码
                 <van-divider />
             </div>
@@ -32,7 +32,6 @@
         maxlength="6"
         theme="custom"
         close-button-text="完成"
-        random-key-order
         />
         </div>
         <!-- <div v-else class="text3" @click="$router.push('/tradingPassword')">您当前没有交易密码,点击去设置</div> -->
@@ -196,7 +195,7 @@ export default {
 
 <style lang="less" scoped> 
     .content{
-        margin-top: 44px;
+        // margin-top: 44px;
         width: 100%;
         height: 100%;
         position: absolute;
@@ -295,4 +294,7 @@ export default {
             line-height: 40px;
         }
     }
+/deep/ .van-password-input__security i{
+        background-color: #fff !important;
+    }
 </style>

+ 229 - 101
src/views/asset/Detail.vue

@@ -54,36 +54,47 @@
             </div>
         </div> -->
         <product-banner :info="info" pageType="asset"></product-banner>
-        <div class="detail_content_title">{{ info.title }}</div>
+        <div :class="!!info.model3d ? 'detail_content_title' : 'detail_content_title_one'">{{ info.name }}</div>
         <div class="item_number">
-            <div class="item_number_collection">{{info.category}}</div>
-            <div class="item_number_number">编号&nbsp;{{info.number}}</div>
+            <div class="item_number_collection">{{ info.category }}</div>
+            <div class="item_number_number">编号&nbsp;{{ info.number }}</div>
         </div>
         <div class="self_information">
             <div class="display_price">
-                <div class="display_price_left">售价</div>
-                <div class="display_price_right">
-                    <div class="display_price_right_symbol">¥</div>
-                    <div class="display_price_right_number">{{ info.price }}</div>
+                <div v-if="info.consignment" class="display_price_con">
+                    <div class="display_price_left">售价</div>
+                    <div class="display_price_right">
+                        <div class="display_price_right_symbol">¥</div>
+                        <div class="display_price_right_number">{{ info.sellPrice || 0 }}</div>
+                    </div>
                 </div>
-            </div>
-            <!-- <div class="display_price">
-                <div class="display_price_left">售价</div>
-                <div class="display_price_right">
-                    <div class="display_price_right_symbol">¥</div>
-                    <div class="display_price_right_number">320</div>
+                <div class="display_price_title" v-else-if="info.status == 'NORMAL'">
+                    {{ info.publicShow ? '当前仅展示' : '当前未展示' }}
                 </div>
-            </div> -->
+            </div>
             <div class="self_information_one">
                 <div class="self_information_one_con">
-                    <van-image width="32px" height="32px" radius="23" :src="info.minterAvatar || require('@assets/svgs/img_default_photo.svg')" fit="cover"/>
+                    <van-image
+                        width="32px"
+                        height="32px"
+                        radius="23"
+                        :src="info.minterAvatar || require('@assets/svgs/img_default_photo.svg')"
+                        fit="cover"
+                    />
                     <div class="self_information_one_text">
                         <div class="self_information_one_text_one">{{ info.minter }}</div>
                         <div class="self_information_one_text_two">创作者</div>
                     </div>
                 </div>
+                <div class="split_line"></div>
                 <div class="self_information_one_con">
-                    <van-image width="32px" height="32px" radius="23" :src="userInfo.avatar || require('@assets/svgs/img_default_photo.svg')" fit="cover"/>
+                    <van-image
+                        width="32px"
+                        height="32px"
+                        radius="23"
+                        :src="userInfo.avatar || require('@assets/svgs/img_default_photo.svg')"
+                        fit="cover"
+                    />
                     <div class="self_information_one_text">
                         <div class="self_information_one_text_one">{{ userInfo.nickname }}</div>
                         <div class="self_information_one_text_two">持有者</div>
@@ -104,7 +115,14 @@
                 <div class="hold_privileges_name" v-if="privileges.length == 0">创作者者暂时未设置</div>
                 <div class="hold_privileged_information" v-else>
                     <div class="hold_privileged_information_con" v-for="(item, index) in privileges" :key="index">
-                        <img :src="item.icon[0]" alt="" class="hold_privileged_information_con_img" />
+                        <van-image
+                            width="18px"
+                            height="18px"
+                            :src="item.icon[0]"
+                            fit="cover"
+                            class="hold_privileged_information_con_img"
+                        />
+                        <!-- <img :src="item.icon[0]" alt="" class="hold_privileged_information_con_img" /> -->
                         <div class="hold_privileged_information_con_title">{{ item.name }}</div>
                     </div>
                 </div>
@@ -121,47 +139,51 @@
                 </div>
             </div>
             <div class="hold_privileges">
-                <div class="information_on_the_chain_con">链上信息</div>
-                <div class="information_on_the_chain">
-                    <span class="information_on_the_chain_title">Hash地址</span>
-                    <span class="information_on_the_chain_content">f6b1a2b4b1bae9dc6f6b1a2b4b1bae9dc6</span>
-                </div>
-                <div class="information_on_the_chain">
-                    <span class="information_on_the_chain_title">区块高度</span>
-                    <span class="information_on_the_chain_title">77259404</span>
-                </div>
-                <div class="information_on_the_chain">
-                    <span class="information_on_the_chain_title">令牌ID</span>
-                    <span class="information_on_the_chain_content">ID5789604461867854ID5789604461867854</span>
-                </div>
+                <hash-code :info="info"></hash-code>
             </div>
             <div class="hold_privileges">
                 <div class="hold_privileges_title">交易记录</div>
-                    <div v-if="list.length > 0">
-                        <div class="hold_privileges_list" v-for="item in list" :key="item.id">
-                            <div class="hold_privileges_list_con">
-                                <div class="hold_privileges_list_con_one text1 van-ellipsis">{{ item.fromUser || '保密' }}</div>
-                                <div class="hold_privileges_list_con_one text2" v-if="item.price">{{ item.operation }}¥{{ item.price }}</div>
-                                <div class="hold_privileges_list_con_one text2" v-else>{{ item.operation }}</div>
-                                <div class="hold_privileges_list_con_one text3 van-ellipsis">{{ item.toUser || '保密' }}</div>
-                                <div class="hold_privileges_list_con_one text4">{{ item.createdAt.substr(0, 16) }}</div>
+                <div v-if="list.length > 0">
+                    <div class="hold_privileges_list" v-for="item in list" :key="item.id">
+                        <div class="hold_privileges_list_con">
+                            <div class="hold_privileges_list_con_one text1 van-ellipsis">
+                                {{ item.fromUser || '保密' }}
+                            </div>
+                            <div class="hold_privileges_list_con_one text2" v-if="item.price">
+                                {{ item.operation }}¥{{ item.price }}
+                            </div>
+                            <div class="hold_privileges_list_con_one text2" v-else>{{ item.operation }}</div>
+                            <div class="hold_privileges_list_con_one text3 van-ellipsis">
+                                {{ item.toUser || '保密' }}
                             </div>
+                            <div class="hold_privileges_list_con_one text4">{{ item.createdAt.substr(0, 16) }}</div>
                         </div>
                     </div>
-                    <div v-else class="textName">暂无购买记录</div>    
+                </div>
+                <div v-else class="textName">暂无购买记录</div>
             </div>
         </div>
         <!-- 购买之后交易按钮 -->
         <div class="purchase_transaction_button">
-            <div class="purchase_transaction_button_give" @click="Add">赠送</div>
-            <div class="purchase_transaction_button_right">
-                <div class="public_display" @click="Exhibition">{{ info.publicShow ? '取消展示' : '公开展示'}}</div>
-                <div class="purchase_transaction_button_deposit" v-if="startTime">
-                    <div class="purchase_transaction_button_deposit_con">寄售倒计时</div>
-                    <div class="purchase_transaction_button_deposit_con">{{ startTime }}</div>
+            <div class="purchase_transaction_button_con">
+                <div class="purchase_transaction_button_left">
+                    <div class="purchase_transaction_button_give" v-if="startTime">
+                        <div class="purchase_transaction_button_give_one">赠送</div>
+                        <div class="purchase_transaction_button_give_two">{{ startTime }}</div>
+                    </div>
+                    <div class="purchase_transaction_button_give_con" @click="Add" v-else>赠送</div>
                 </div>
-                <div class="purchase_transaction_button_deposit" v-else @click="Consignment">
-                    {{ info.consignment ? '取消寄售' : '寄售上架' }}
+                <div class="purchase_transaction_button_right">
+                    <div class="public_display" @click="Exhibition">
+                        {{ info.publicShow ? '取消展示' : '公开展示' }}
+                    </div>
+                    <div class="purchase_transaction_button_deposit" v-if="startTime">
+                        <div class="purchase_transaction_button_deposit_one">寄售倒计时</div>
+                        <div class="purchase_transaction_button_deposit_two">{{ startTime }}</div>
+                    </div>
+                    <div class="purchase_transaction_button_deposit_consignment" v-else @click="Consignment">
+                        {{ info.consignment ? '取消寄售' : '寄售上架' }}
+                    </div>
                 </div>
             </div>
         </div>
@@ -480,13 +502,14 @@ import { Dialog } from 'vant';
 // import HashCode from '../../components/product/HashCode.vue';
 // import ProductTitle from '../../components/product/ProductTitle.vue';
 import ProductBanner from '../../components/product/ProductBanner.vue';
+import HashCode from '../../components/product/HashCode.vue';
 // import OrderOpen from '../../components/order/OrderOpen.vue';
 // import TopNavigation from "../../components/TopNavigation.vue"
 export default {
     components: {
-        // HashCode,
+        HashCode,
         // ProductTitle,
-        ProductBanner,
+        ProductBanner
         // OrderOpen,
         // TopNavigation
     },
@@ -861,7 +884,7 @@ export default {
 </script>
 
 <style lang="less" scoped>
-    .detail_content {
+.detail_content {
     width: 100%;
     background: #0f0f27;
     // margin-top: 44px;
@@ -911,10 +934,28 @@ export default {
             }
         }
     }
+    .detail_content_title_one {
+        padding: 0 20px;
+        box-sizing: border-box;
+        font-size: 18px;
+        // margin-top: -25px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #ffffff;
+        line-height: 24px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        display: -webkit-box;
+        -webkit-box-orient: vertical;
+        -webkit-line-clamp: 2;
+        margin-bottom: 12px;
+        text-align: center;
+    }
     .detail_content_title {
         padding: 0 20px;
         box-sizing: border-box;
         font-size: 18px;
+        margin-top: 25px;
         font-family: PingFangSC-Regular, PingFang SC;
         font-weight: 400;
         color: #ffffff;
@@ -928,10 +969,10 @@ export default {
         text-align: center;
     }
     .item_number {
-        padding: 0 117px;
-        box-sizing: border-box;
+        // padding: 0 117px;
+        // box-sizing: border-box;
         display: flex;
-        justify-content: space-between;
+        justify-content: center;
         font-size: 10px;
         font-family: PingFangSC-Regular, PingFang SC;
         font-weight: 400;
@@ -944,6 +985,7 @@ export default {
             border-radius: 4px;
             line-height: 18px;
             text-align: center;
+            margin-right: 10px;
         }
         .item_number_number {
             width: 77px;
@@ -1009,6 +1051,16 @@ export default {
             box-sizing: border-box;
             display: flex;
             margin-bottom: 10px;
+            .display_price_con{
+                display: flex;
+            }
+            .display_price_title {
+                font-size: 20px;
+                font-family: PingFangSC-Regular, PingFang SC;
+                font-weight: 400;
+                color: #939599;
+                line-height: 56px;
+            }
             .display_price_left {
                 font-size: 12px;
                 font-family: PingFangSC-Regular, PingFang SC;
@@ -1043,9 +1095,11 @@ export default {
             margin-bottom: 10px;
             display: flex;
             justify-content: space-between;
-            .self_information_one_con{
+            position: relative;
+            .self_information_one_con {
+                // width: 50%;
                 display: flex;
-                .self_information_one_text{
+                .self_information_one_text {
                     font-size: 12px;
                     font-family: PingFangSC-Regular, PingFang SC;
                     font-weight: 400;
@@ -1058,6 +1112,17 @@ export default {
                     color: #939599;
                 }
             }
+            .split_line {
+                position: absolute;
+                left: 48%;
+                top: 12px;
+                width: 1px;
+                height: 34px;
+                background: rgba(95, 100, 111, 0.2);
+                // opacity: 0.2;
+                // border: 1px solid #5F646F;
+                // box-sizing: border-box;
+            }
         }
         .description_of_works {
             width: 100%;
@@ -1093,17 +1158,17 @@ export default {
             box-sizing: border-box;
             margin: 10px 0;
             .textName {
-                color: #ffffff;
+                color: #939599;
                 margin-top: 10px;
-                text-align: center;
+                // text-align: center;
             }
-            .hold_privileges_list{
-                .hold_privileges_list_con{
+            .hold_privileges_list {
+                .hold_privileges_list_con {
                     display: flex;
                     padding: 10px 0px;
-                    border-bottom: 1px solid #5F646F;
+                    border-bottom: 1px solid #5f646f;
                     box-sizing: border-box;
-                    .hold_privileges_list_con_one{
+                    .hold_privileges_list_con_one {
                         overflow: hidden;
                         text-overflow: ellipsis;
                         white-space: nowrap;
@@ -1114,13 +1179,20 @@ export default {
                         color: #939599;
                         margin-left: 20px;
                         line-height: 37px;
+                        margin-right: 10px;
                         // text-align: center;
                     }
-                    .hold_privileges_list_con_one{
+                    .hold_privileges_list_con_one {
                         margin-left: 0;
                     }
+                    .text3 {
+                        flex: 2;
+                    }
+                    .text4 {
+                        flex: 2;
+                    }
                 }
-                .hold_privileges_list_con:last-child{
+                .hold_privileges_list_con:last-child {
                     padding-bottom: 0;
                     border-bottom: none;
                 }
@@ -1146,35 +1218,38 @@ export default {
                 color: #939599;
             }
         }
-        .information_on_the_chain {
-            display: flex;
-            justify-content: space-between;
-            .information_on_the_chain_title {
-                font-size: 14px;
-                font-family: PingFangSC-Regular, PingFang SC;
-                font-weight: 400;
-                color: #939599;
-                line-height: 24px;
-            }
-            .information_on_the_chain_content {
-                width: 158px;
-                font-size: 14px;
-                font-family: PingFangSC-Regular, PingFang SC;
-                font-weight: 400;
-                color: #939599;
-                line-height: 24px;
-                overflow: hidden; //超出的文本隐藏
-                text-overflow: ellipsis; //溢出用省略号显示
-                white-space: nowrap; //溢出则不换行
-            }
-        }
-        .information_on_the_chain_con {
-            font-size: 14px;
-            font-family: PingFangSC-Medium, PingFang SC;
-            font-weight: 500;
-            color: #ffffff;
-            margin-bottom: 8px;
+        .hold_privileges:last-child {
+            margin-bottom: 30px;
         }
+        // .information_on_the_chain {
+        //     display: flex;
+        //     justify-content: space-between;
+        //     .information_on_the_chain_title {
+        //         font-size: 14px;
+        //         font-family: PingFangSC-Regular, PingFang SC;
+        //         font-weight: 400;
+        //         color: #939599;
+        //         line-height: 24px;
+        //     }
+        //     .information_on_the_chain_content {
+        //         width: 158px;
+        //         font-size: 14px;
+        //         font-family: PingFangSC-Regular, PingFang SC;
+        //         font-weight: 400;
+        //         color: #939599;
+        //         line-height: 24px;
+        //         overflow: hidden; //超出的文本隐藏
+        //         text-overflow: ellipsis; //溢出用省略号显示
+        //         white-space: nowrap; //溢出则不换行
+        //     }
+        // }
+        // .information_on_the_chain_con {
+        //     font-size: 14px;
+        //     font-family: PingFangSC-Medium, PingFang SC;
+        //     font-weight: 500;
+        //     color: #ffffff;
+        //     margin-bottom: 8px;
+        // }
         .transaction_record_one {
             display: flex;
             justify-content: space-between;
@@ -1365,14 +1440,42 @@ export default {
         background: #15152d;
         position: fixed;
         bottom: 0;
-        padding: 8px 16px;
-        box-sizing: border-box;
-        display: flex;
-        justify-content: space-between;
+        // justify-content: space-between;
         font-size: 16px;
         font-family: PingFangSC-Medium, PingFang SC;
         font-weight: 500;
+        .purchase_transaction_button_con{
+            display: flex;
+            padding: 8px 16px;
+            box-sizing: border-box;
+            // justify-content: center;
+        }
         .purchase_transaction_button_give {
+            width: 80px;
+            height: 40px;
+            border-radius: 8px;
+            background: #29293f;
+            margin-right: 16px;
+            // border: 1px solid #28b6ff;
+            // box-sizing: border-box;
+            // color: #28b6ff;
+            color: #939599;
+            // line-height: 38px;
+            text-align: center;
+            .purchase_transaction_button_give_one {
+                font-size: 14px;
+                font-family: PingFangSC-Medium, PingFang SC;
+                font-weight: 500;
+                line-height: 24px;
+            }
+            .purchase_transaction_button_give_two {
+                font-size: 10px;
+                font-family: PingFangSC-Regular, PingFang SC;
+                font-weight: 400;
+                line-height: 10px;
+            }
+        }
+        .purchase_transaction_button_give_con {
             width: 76px;
             height: 40px;
             border-radius: 8px;
@@ -1381,12 +1484,16 @@ export default {
             color: #28b6ff;
             line-height: 38px;
             text-align: center;
+            font-size: 16px;
+            font-weight: 500;
+            margin-right: 16px;
         }
         .purchase_transaction_button_right {
             display: flex;
+            width: calc(100vw - 124px);
         }
         .public_display {
-            width: 126px;
+            width: 50%;
             height: 40px;
             border-radius: 8px 0px 0px 8px;
             border: 1px solid #28b6ff;
@@ -1394,20 +1501,41 @@ export default {
             color: #28b6ff;
             line-height: 38px;
             text-align: center;
+            // border-width: 0px;
         }
         .purchase_transaction_button_deposit {
-            width: 126px;
+            width: 50%;
             height: 40px;
-            background: #28b6ff;
+            background: #29293f;
             border-radius: 0px 8px 8px 0px;
-            color: #ffffff;
+            color: #939599;
             // line-height: 40px;
             text-align: center;
-            .purchase_transaction_button_deposit_con{
+            .purchase_transaction_button_deposit_one {
                 font-size: 14px;
+                font-family: PingFangSC-Medium, PingFang SC;
+                font-weight: 500;
+                line-height: 24px;
+            }
+            .purchase_transaction_button_deposit_two {
+                font-size: 10px;
+                font-family: PingFangSC-Regular, PingFang SC;
                 font-weight: 400;
+                line-height: 10px;
             }
         }
+        .purchase_transaction_button_deposit_consignment {
+            width: 50%;
+            height: 40px;
+            background: #28b6ff;
+            border-radius: 0px 8px 8px 0px;
+            color: #ffffff;
+            text-align: center;
+            font-size: 16px;
+            font-family: PingFangSC-Medium, PingFang SC;
+            font-weight: 500;
+            line-height: 40px;
+        }
     }
     .show_only {
         width: 100%;
@@ -1430,5 +1558,5 @@ export default {
             text-align: center;
         }
     }
-    }
+}
 </style>

+ 7 - 2
src/views/order/Detail.vue

@@ -1,7 +1,7 @@
 <template>
     <div class="confirm_order">
         <div class="confirm_order_top">
-            <img :src="info.status == 'FINISH'?'require(`@/assets/icon_jiaoyizhong.png`)':require(`@/assets/icon_yiwancheng@3x.png`)" alt="" class="confirm_order_top_img">
+            <img :src="info.status == 'PROCESSING'?require(`@/assets/icon_jiaoyizhong.png`):require(`@/assets/icon_yiwancheng@3x.png`)" alt="" class="confirm_order_top_img">
             <div>{{ getLabelName(info.status, statusOptions) }}</div>
         </div>
         <div class="order_information">
@@ -51,7 +51,7 @@
             <van-divider class="fee_details_divider"/>
             <div class="fee_details_con">
                 <div class="order_details">成交时间</div>
-                <div class="order_details_con">2021-05-20 07:52:36</div>
+                <div class="order_details_con">{{ info.payTime }}</div>
             </div>
         </div>
     </div>
@@ -352,4 +352,9 @@ export default {
             color: #FFFFFF;
         }
     }
+   /deep/  .van-divider::before{
+       height: 1px;
+        background: #5F646F;
+        opacity: 0.2;
+   }
 </style>

+ 67 - 52
src/views/order/Orders.vue

@@ -1,49 +1,59 @@
 <template>
-    <div class="content" :class="list.length < 5 ? 'shop_list_one' : ''">
-        <van-sticky ref="top" :offset-top="bar.value && bar.value.show ? 46 : 0">
-            <div class="my_list">
-                <div class="my_list_con">我的订单</div>
-                <!-- 标签页展示切换 -->
-                <div class="label_tabs">
-                    <div
-                        :class="tabLabel == 'whole' ? 'label_selected' : 'label_not_selected'"
-                        @click="changeStatus('whole')"
-                        class="label_tab"
-                    >
-                        全部
+    <div class="list_display_order">
+        <van-pull-refresh
+            class="load_refresh"
+            success-text="加载成功"
+            success-duration="1000"
+            v-model="isLoading"
+            @refresh="onRefresh"
+        >
+            <div class="content">
+                <van-sticky ref="top" :offset-top="bar.value && bar.value.show ? 46 : 0">
+                    <div class="my_list">
+                        <div class="my_list_con">我的订单</div>
+                        <!-- 标签页展示切换 -->
+                        <div class="label_tabs">
+                            <div
+                                :class="tabLabel == 'whole' ? 'label_selected' : 'label_not_selected'"
+                                @click="changeStatus('whole')"
+                                class="label_tab"
+                            >
+                                全部
+                            </div>
+                            <div
+                                :class="tabLabel == 'inTransaction' ? 'label_selected' : 'label_not_selected'"
+                                @click="changeStatus('inTransaction')"
+                                class="label_tab"
+                            >
+                                交易中
+                            </div>
+                            <div
+                                :class="tabLabel == 'completed' ? 'label_selected' : 'label_not_selected'"
+                                @click="changeStatus('completed')"
+                                class="label_tab"
+                            >
+                                已完成
+                            </div>
+                        </div>
+                        <!-- <van-tabs v-model:active="status" :ellipsis="false" line-width="16" line-height="2" @click="changeStatus">
+                <van-tab v-for="(item, index) in tabs" :key="index" :title="item.name" :name="item.status"></van-tab>
+                </van-tabs> -->
                     </div>
-                    <div
-                        :class="tabLabel == 'inTransaction' ? 'label_selected' : 'label_not_selected'"
-                        @click="changeStatus('inTransaction')"
-                        class="label_tab"
-                    >
-                        交易中
+                </van-sticky>
+                <van-list class="list" v-model:loading="loading" :finished="finished" finished-text="" @load="getData">
+                    <div class="list_display">
+                        <order-info @delFn="delFn" v-for="item in list" :key="item.id" :info="item"></order-info>
                     </div>
-                    <div
-                        :class="tabLabel == 'completed' ? 'label_selected' : 'label_not_selected'"
-                        @click="changeStatus('completed')"
-                        class="label_tab"
+                    <van-empty
+                        v-if="empty"
+                        description="你还有没有订单哦~"
+                        :image="require('@assets/navigation bar_lose.png')"
                     >
-                        已完成
-                    </div>
-                </div>
-                <!-- <van-tabs v-model:active="status" :ellipsis="false" line-width="16" line-height="2" @click="changeStatus">
-                <van-tab v-for="(item, index) in tabs" :key="index" :title="item.name" :name="item.status"></van-tab>
-                </van-tabs> -->
+                        <van-button class="h44" size="small" color="#28B6FF" :round="true" to="/">去逛逛</van-button>
+                    </van-empty>
+                </van-list>
             </div>
-        </van-sticky>
-        <van-list class="list" v-model:loading="loading" :finished="finished" finished-text="" @load="getData">
-            <div class="list_display">
-                <order-info @delFn="delFn" v-for="item in list" :key="item.id" :info="item"></order-info>
-            </div>
-            <van-empty
-                v-if="empty"
-                description="你还有没有订单哦~"
-                :image="require('@assets/navigation bar_lose.png')"
-            >
-                <van-button class="h44" size="small" color="#28B6FF" :round="true" to="/">去逛逛</van-button>
-            </van-empty>
-        </van-list>
+        </van-pull-refresh>
     </div>
 </template>
 
@@ -78,7 +88,8 @@ export default {
             //         name: '已完成'
             //     }
             // ],
-            url: '/order/all'
+            url: '/order/all',
+            isLoading: true
         };
     },
     mounted() {
@@ -123,6 +134,11 @@ export default {
                 }
             });
             this.getData(true);
+        },
+        onRefresh() {
+            this.getData(true).then(res => {
+                this.isLoading = false;
+            });
         }
         // changeActive(type) {
         //     this.$router.replace({
@@ -140,6 +156,9 @@ export default {
 </script>
 
 <style lang="less" scoped>
+.load_refresh {
+    background: #0f0f27;
+}
 /deep/ .van-button {
     width: 280px;
     height: 38px;
@@ -151,13 +170,8 @@ export default {
     width: 100%;
     height: 100%;
     // margin-top: 44px;
-    position: absolute;
     background: #0f0f27;
 }
-.shop_list_one {
-    height: 100%;
-    position: absolute;
-}
 .my_list {
     width: 100%;
     background: #15152d;
@@ -201,7 +215,7 @@ export default {
     width: 100%;
     height: 100%;
     background: #0f0f27;
-    padding: 0px 16px 16px 8px;
+    padding: 10px 16px 0px 16px;
     box-sizing: border-box;
 }
 /deep/ .van-tabs__nav--line {
@@ -244,10 +258,6 @@ export default {
     min-height: 100vh;
 }
 
-.list {
-    padding-bottom: 100px;
-}
-
 /deep/.van-tabs__nav--line.van-tabs__nav--complete {
     border-color: @tabBorder;
 }
@@ -286,4 +296,9 @@ export default {
 .van-tabs {
     background-color: @bg;
 }
+.list_display_order {
+    // padding-bottom: 40px;
+    // box-sizing: border-box;
+    background: #0F0F27;
+}
 </style>

+ 136 - 100
src/views/product/Detail.vue

@@ -6,7 +6,6 @@
             :info="info"
             @getProduct="getProduct"
         ></product-banner>
-
         <div class="info">
             <div class="info-title">
                 <product-title :isSmall="info.name && info.name.length > 16">{{ info.name }}</product-title>
@@ -296,14 +295,12 @@
     <!-- <TopNavigation /> -->
     <!-- 详情内容 -->
     <div class="detail_content">
-        <div class="detail_content_top">
-            <product-banner
-                :startTime="startTime"
-                :assignment="!!assignment"
-                :info="info"
-                @getProduct="getProduct"
-            ></product-banner>
-        </div>
+        <product-banner
+            :startTime="startTime"
+            :assignment="!!assignment"
+            :info="info"
+            @getProduct="getProduct"
+        ></product-banner>
         <!-- <img src="" alt="" class="detail_content_img" />
         <div class="detail_content_one">
             <div class="detail_content_point">
@@ -315,10 +312,13 @@
                 <div class="detail_content_share_con">分享</div>
             </div>
         </div> -->
-        <div class="detail_content_title">{{ info.title }}</div>
+        <div :class="!!info.model3d ? 'detail_content_title' : 'detail_content_title_one'">{{ info.name }}</div>
+
         <div class="limited_label">
-            <div class="limited_label_name">限量</div>
-            <div class="limited_label_number">{{ info.total }}份</div>
+            <div class="limited_label_con">
+                <div class="limited_label_name">限量</div>
+                <div class="limited_label_number">{{ info.total }}份</div>
+            </div>
             <div class="limited_label_collection">{{ info.category }}</div>
         </div>
         <!-- <div class="item_number" v-else>
@@ -327,10 +327,32 @@
         </div> -->
         <div class="self_information">
             <div class="self_information_one">
-                <van-image width="32px" height="32px" radius="23" :src="info.minterAvatar || require('@assets/svgs/img_default_photo.svg')" fit="cover"/>
-                <div class="self_information_one_text">
-                    <div class="self_information_one_text_one">{{ info.minter }}</div>
-                    <div class="self_information_one_text_two">创作者</div>
+                <div class="self_information_one_con">
+                    <van-image
+                        width="32px"
+                        height="32px"
+                        radius="23"
+                        :src="info.minterAvatar || require('@assets/svgs/img_default_photo.svg')"
+                        fit="cover"
+                    />
+                    <div class="self_information_one_text">
+                        <div class="self_information_one_text_one">{{ info.minter }}</div>
+                        <div class="self_information_one_text_two">创作者</div>
+                    </div>
+                </div>
+                <div class="split_line" v-if="info.ownerId !== info.minterId"></div>
+                <div class="self_information_one_con" v-if="info.ownerId !== info.minterId">
+                    <van-image
+                        width="32px"
+                        height="32px"
+                        radius="23"
+                        :src="info.ownerAvatar || require('@assets/svgs/img_default_photo.svg')"
+                        fit="cover"
+                    />
+                    <div class="self_information_one_text">
+                        <div class="self_information_one_text_one">{{ info.owner }}</div>
+                        <div class="self_information_one_text_two">持有者</div>
+                    </div>
                 </div>
             </div>
             <div class="description_of_works">
@@ -347,7 +369,13 @@
                 <div class="hold_privileges_name" v-if="init.length === 0">创作者者暂时未设置</div>
                 <div class="hold_privileged_information" v-else>
                     <div class="hold_privileged_information_con" v-for="(item, index) in init" :key="index">
-                        <img :src="item.icon[0]" alt="" class="hold_privileged_information_con_img" />
+                        <van-image
+                            width="18px"
+                            height="18px"
+                            :src="item.icon[0]"
+                            fit="cover"
+                            class="hold_privileged_information_con_img"
+                        />
                         <div class="hold_privileged_information_con_title">{{ item.name }}</div>
                     </div>
                 </div>
@@ -364,19 +392,7 @@
                 </div>
             </div>
             <div class="hold_privileges">
-                <div class="information_on_the_chain_con">链上信息</div>
-                <div class="information_on_the_chain">
-                    <span class="information_on_the_chain_title">Hash地址</span>
-                    <span class="information_on_the_chain_content">f6b1a2b4b1bae9dc6f6b1a2b4b1bae9dc6</span>
-                </div>
-                <div class="information_on_the_chain">
-                    <span class="information_on_the_chain_title">区块高度</span>
-                    <span class="information_on_the_chain_title">77259404</span>
-                </div>
-                <div class="information_on_the_chain">
-                    <span class="information_on_the_chain_title">令牌ID</span>
-                    <span class="information_on_the_chain_content">ID5789604461867854ID5789604461867854</span>
-                </div>
+                <hash-code :info="info"></hash-code>
             </div>
             <div class="hold_privileges">
                 <div class="hold_privileges_title">交易记录</div>
@@ -433,7 +449,8 @@
             <div class="transaction_button_right">
                 <div class="coming_on_sale" v-if="isAppointment" block round>
                     <div class="coming_on_sale_con">即将开售</div>
-                    <van-count-down :time="time" format="DD天 HH:mm:ss" class="coming_on_sale_time" />
+                    <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>
         </div>
@@ -447,7 +464,8 @@
             <div class="transaction_button_right">
                 <div class="coming_on_sale" v-if="isAppointment" block round>
                     <div class="coming_on_sale_con">即将开售</div>
-                    <van-count-down :time="time" format="DD天 HH:mm:ss" class="coming_on_sale_time" />
+                    <div class="coming_on_sale_time">{{ startTime }}</div>
+                    <!-- <van-count-down :time="time" format="DD天 HH:mm:ss" class="coming_on_sale_time" /> -->
                 </div>
 
                 <!-- <van-button class="no-btn" v-else-if="isSold" block round>已售罄</van-button> -->
@@ -505,11 +523,13 @@ 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';
 export default {
     components: {
         // HashCode,
         // ProductTitle,
-        ProductBanner
+        ProductBanner,
+        HashCode
         // Swiper,
         // SwiperSlide,
         // Post,
@@ -824,9 +844,9 @@ export default {
 .detail_content {
     width: 100%;
     background: #0f0f27;
-    .detail_content_top {
-        height: 380px;
-    }
+    // .detail_content_top {
+    //     height: 380px;
+    // }
     .detail_content_img {
         margin-top: 30px;
         padding: 0px 57px;
@@ -873,10 +893,28 @@ export default {
             }
         }
     }
+    .detail_content_title_one {
+        padding: 0 20px;
+        box-sizing: border-box;
+        font-size: 18px;
+        // margin-top: -25px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #ffffff;
+        line-height: 24px;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        display: -webkit-box;
+        -webkit-box-orient: vertical;
+        -webkit-line-clamp: 2;
+        margin-bottom: 12px;
+        text-align: center;
+    }
     .detail_content_title {
         padding: 0 20px;
         box-sizing: border-box;
         font-size: 18px;
+        margin-top: 25px;
         font-family: PingFangSC-Regular, PingFang SC;
         font-weight: 400;
         color: #ffffff;
@@ -917,9 +955,15 @@ export default {
         }
     }
     .limited_label {
-        margin-left: 108px;
+        // padding: 0px 108px;
+        // box-sizing: border-box;
         margin-bottom: 20px;
         display: flex;
+        justify-content: center;
+        .limited_label_con {
+            display: flex;
+            margin-right: 10px;
+        }
         .limited_label_name {
             width: 44px;
             height: 18px;
@@ -933,17 +977,19 @@ export default {
             line-height: 18px;
         }
         .limited_label_number {
-            width: 51px;
+            // width: 51px;
             height: 18px;
             background: rgba(255, 255, 255, 0.1);
-            border-radius: 4px;
+            border-radius: 0px 4px 4px 0px;
+            padding: 0px 12px;
+            box-sizing: border-box;
             font-size: 10px;
             font-family: PingFangSC-Regular, PingFang SC;
             font-weight: 400;
             color: #28b6ff;
             line-height: 18px;
             text-align: center;
-            margin-right: 10px;
+            // margin-right: 10px;
         }
         .limited_label_collection {
             width: 54px;
@@ -1004,23 +1050,34 @@ export default {
             border-radius: 8px;
             margin-bottom: 10px;
             display: flex;
-            .self_information_one_img {
-                width: 32px;
-                height: 32px;
-                border-radius: 23px;
-                margin-right: 6px;
-            }
-            .self_information_one_text {
-                margin-left: 6px;
-                font-size: 12px;
-                font-family: PingFangSC-Regular, PingFang SC;
-                font-weight: 400;
-            }
-            .self_information_one_text_one {
-                color: #ffffff;
+            justify-content: space-between;
+            position: relative;
+            .self_information_one_con {
+                // width: 50%;
+                display: flex;
+                .self_information_one_text {
+                    font-size: 12px;
+                    font-family: PingFangSC-Regular, PingFang SC;
+                    font-weight: 400;
+                    margin-left: 6px;
+                }
+                .self_information_one_text_one {
+                    color: #ffffff;
+                }
+                .self_information_one_text_two {
+                    color: #939599;
+                }
             }
-            .self_information_one_text_two {
-                color: #939599;
+            .split_line {
+                position: absolute;
+                left: 48%;
+                top: 12px;
+                width: 1px;
+                height: 34px;
+                background: rgba(95, 100, 111, 0.2);
+                // opacity: 0.2;
+                // border: 1px solid #5F646F;
+                // box-sizing: border-box;
             }
         }
         .description_of_works {
@@ -1062,13 +1119,13 @@ export default {
                 font-weight: 500;
                 color: #ffffff;
             }
-            .hold_privileges_list{
-                .hold_privileges_list_con{
+            .hold_privileges_list {
+                .hold_privileges_list_con {
                     display: flex;
                     padding: 10px 0px;
-                    border-bottom: 1px solid #5F646F;
+                    border-bottom: 1px solid #5f646f;
                     box-sizing: border-box;
-                    .hold_privileges_list_con_one{
+                    .hold_privileges_list_con_one {
                         overflow: hidden;
                         text-overflow: ellipsis;
                         white-space: nowrap;
@@ -1079,13 +1136,20 @@ export default {
                         color: #939599;
                         margin-left: 20px;
                         line-height: 37px;
+                        margin-right: 10px;
                         // text-align: center;
                     }
-                    .hold_privileges_list_con_one{
+                    .hold_privileges_list_con_one {
                         margin-left: 0;
                     }
+                    .text3 {
+                        flex: 2;
+                    }
+                    .text4 {
+                        flex: 2;
+                    }
                 }
-                .hold_privileges_list_con:last-child{
+                .hold_privileges_list_con:last-child {
                     padding-bottom: 0;
                     border-bottom: none;
                 }
@@ -1108,40 +1172,11 @@ export default {
         .hold_privileges:last-child {
             margin-bottom: 30px;
             .textName {
-                color: #ffffff;
-                margin-top: 10px;
-                text-align: center;
-            }
-        }
-        .information_on_the_chain {
-            display: flex;
-            justify-content: space-between;
-            .information_on_the_chain_title {
-                font-size: 14px;
-                font-family: PingFangSC-Regular, PingFang SC;
-                font-weight: 400;
-                color: #939599;
-                line-height: 24px;
-            }
-            .information_on_the_chain_content {
-                width: 158px;
-                font-size: 14px;
-                font-family: PingFangSC-Regular, PingFang SC;
-                font-weight: 400;
                 color: #939599;
-                line-height: 24px;
-                overflow: hidden; //超出的文本隐藏
-                text-overflow: ellipsis; //溢出用省略号显示
-                white-space: nowrap; //溢出则不换行
+                margin-top: 10px;
+                // text-align: center;
             }
         }
-        .information_on_the_chain_con {
-            font-size: 14px;
-            font-family: PingFangSC-Medium, PingFang SC;
-            font-weight: 500;
-            color: #ffffff;
-            margin-bottom: 8px;
-        }
         .transaction_record_one {
             display: flex;
             justify-content: space-between;
@@ -1222,6 +1257,7 @@ export default {
             margin-bottom: 0;
         }
     }
+    @bottom: 6px;
     .transaction_button {
         width: 100%;
         background: #15152d;
@@ -1231,8 +1267,8 @@ export default {
         justify-content: space-between;
         position: fixed;
         bottom: 0;
-        // padding-bottom: calc(@bottom+ constant(safe-area-inset-bottom));
-        // padding-bottom: calc(@bottom + env(safe-area-inset-bottom));
+        padding-bottom: calc(@bottom+ constant(safe-area-inset-bottom));
+        padding-bottom: calc(@bottom + env(safe-area-inset-bottom));
         .transaction_button_left {
             display: flex;
             .transaction_price {
@@ -1283,8 +1319,9 @@ export default {
                 height: 46px;
                 background: #29293f;
                 border-radius: 8px;
-                padding: 6px 0 0 52px;
+                padding-top: 6px;
                 box-sizing: border-box;
+                text-align: center;
                 .coming_on_sale_con {
                     font-size: 14px;
                     font-family: PingFangSC-Medium, PingFang SC;
@@ -1328,7 +1365,6 @@ export default {
             }
         }
     }
-    // @bottom: 6px;
     .purchase_transaction_button {
         width: 100%;
         height: 56px;
@@ -1343,7 +1379,7 @@ export default {
         font-family: PingFangSC-Medium, PingFang SC;
         font-weight: 500;
         .purchase_transaction_button_give {
-            width: 76px;
+            width: 80px;
             height: 40px;
             border-radius: 8px;
             border: 1px solid #28b6ff;
@@ -1383,8 +1419,8 @@ export default {
         box-sizing: border-box;
         position: fixed;
         bottom: 0;
-        // padding-bottom: calc(@bottom+ constant(safe-area-inset-bottom));
-        // padding-bottom: calc(@bottom + env(safe-area-inset-bottom));
+        padding-bottom: calc(@bottom+ constant(safe-area-inset-bottom));
+        padding-bottom: calc(@bottom + env(safe-area-inset-bottom));
         .show_only_con {
             width: 100%;
             height: 40px;

+ 757 - 0
src/views/product/HopeMarket.vue

@@ -0,0 +1,757 @@
+
+<template>
+    <!-- <div class="follow">
+        <div ref="top" class="list-top" :style="{ top: barShow ? '46px' : 0 }">
+            <div class="top" v-if="!minterId">
+                <div class="name">版权市场</div>
+                <img src="@assets/icon-sosuo.png" alt="" @click="goSearch" class="search" />
+            </div>
+
+            <div class="swiperContent" ref="swiperContent">
+                <swiper
+                    pagination
+                    :slides-per-view="5"
+                    :space-between="16"
+                    class="mySwiper"
+                    :autoplay="{ delay: 3500 }"
+                    v-if="settings.length > 0"
+                >
+                    <swiper-slide class="setting" v-for="item in settings" :key="item.id">
+                        <van-image
+                            width="calc(20vw - 19.2px)"
+                            height="calc(20vw - 19.2px)"
+                            radius="8"
+                            :src="getImg(item.pic)"
+                            fit="cover"
+                            @click="showBanner(item.id)"
+                        />
+                        <div class="name">{{ item.name }}</div>
+                    </swiper-slide>
+                </swiper>
+                <div class="banner-box" :style="{ height: bannerHeight + 'px' }">
+                    <img :style="{ left: moreLeft + 'px' }" class="more" alt="" />
+                    <div class="banner-list" :style="{ maxHeight: maxBannerHeight + 'px' }">
+                        <div class="banner-item" v-for="item in banners" :key="item.id">
+                            <div class="setting" @click="goNext(item, '&source=TRANSFER')">
+                                <van-image
+                                    width="calc(20vw - 19.2px)"
+                                    height="calc(20vw - 19.2px)"
+                                    radius="8"
+                                    :src="getImg(item.pic)"
+                                    fit="cover"
+                                />
+                                <div class="name">{{ item.name }}</div>
+                            </div>
+                        </div>
+                    </div>
+                </div>
+                <div class="banner-wrapper" v-if="showSetting" @touchstart="touchEvent"></div>
+            </div>
+            <van-tabs
+                v-model:active="sort"
+                :ellipsis="false"
+                line-width="16"
+                line-height="2"
+                @click-tab="changeTab"
+                :class="{ trans: source == 'TRANSFER' }"
+            >
+                <van-tab
+                    :title="item.label"
+                    :name="item.value"
+                    :title-class="item.type === 'select' && sortDes ? sortDes : ''"
+                    :key="index"
+                    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
+                @click="changeSort"
+                v-if="source == 'TRANSFER' && !title"
+                class="sala"
+                color="#F5F7FA"
+                type="primary"
+                size="mini"
+                icon="arrow-down"
+                icon-position="right"
+                round
+                >{{ salable ? '在售中' : salable === false ? '仅展示' : '综合排序' }}</van-button
+            >
+        </div>
+
+        <van-action-sheet
+            v-model:show="showAction"
+            @select="selectAction"
+            :actions="actions"
+            cancel-text="取消"
+            close-on-click-action
+        />
+
+        <van-pull-refresh
+            success-text="加载成功"
+            success-duration="500"
+            v-model="isLoading"
+            :head-height="80"
+            @refresh="onRefresh"
+        >
+            <van-list v-model:loading="loading" :finished="finished" finished-text="" @load="getData">
+                <template v-for="(item, index) in showList" :key="index">
+                    <product-info dark v-model:info="list[index]" @update:info="init"></product-info>
+                </template>
+
+                <van-empty
+                    :image="require('@assets/kong_png_yongyoude  (1).png')"
+                    v-if="empty"
+                    description="没有任何藏品哦~"
+                />
+            </van-list>
+        </van-pull-refresh>
+    </div> -->
+    <div class="content">
+        <van-sticky ref="top" class="list-top" :offset-top="bar.value && bar.value.show ? 46 : 0">
+            <div class="content_top">
+                <div class="selected_recommendations">
+                    <div class="selected_recommendations_title">{{ title || pageName }}</div>
+                    <img
+                        :src="require('@assets/icon-sosuo.png')"
+                        alt=""
+                        class="selected_recommendations_img"
+                        @click="goSearch"
+                    />
+                </div>
+                <div class="recommended_switching">
+                    <!-- 标签页展示切换 -->
+                    <van-tabs
+                        v-model:active="sort"
+                        :ellipsis="false"
+                        line-height="2"
+                        title-active-color="#28B6FF"
+                        @click-tab="changeTab"
+                        :class="{ trans: source == 'TRANSFER' }"
+                    >
+                        <van-tab
+                            :title="item.label"
+                            :name="item.value"
+                            :title-class="item.type === 'select' && sortDes ? sortDes : ''"
+                            :key="index"
+                            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>
+                    <!-- <div class="label_tabs">
+                        <div :class="tabLabel == 'whole'?'label_selected':'label_not_selected'" @click="tabLabel='whole'" class="label_tab">全部</div>
+                        <div :class="tabLabel == 'onSale'?'label_selected':'label_not_selected'" @click="tabLabel='onSale'" class="label_tab">最新</div>
+                        <div :class="tabLabel == 'showOnly'?'label_selected':'label_not_selected'" @click="tabLabel='showOnly'" class="label_tab">最热</div>
+                        <div :class="tabLabel == 'notShown'?'label_selected':'label_not_selected'" @click="tabLabel='notShown'" class="label_tab">价格
+                            <div class="price_symbol" v-if="tabLabel != 'notShown'">
+                                <img :src="require('@assets/icon-arrow-down.png')" alt="" class="price_symbol_one price_symbol_img">
+                                <img :src="require('@assets/icon-arrow-down.png')" alt="" class="price_symbol_img">
+                            </div>
+                            <div class="price_symbol" v-else>
+                                <img :src="require('@assets/iocn_zhankai.png')" alt="" class="price_symbol_img">
+                                <img :src="require('@assets/iocn_zhankai.png')" alt="" class="price_symbol_img price_symbol_one">
+                            </div>
+                        </div>
+                    </div> -->
+                    <div class="sorting_selection" @click="changeSort" v-if="source == 'TRANSFER' && !title">
+                        <div class="sorting_selection_con">
+                            {{ salable ? '在售中' : salable === false ? '仅展示' : '综合排序' }}
+                        </div>
+                        <img :src="require('@assets/icon-arrow-down.png')" alt="" class="sorting_selection_img" />
+                    </div>
+                </div>
+            </div>
+        </van-sticky>
+        <van-action-sheet
+            v-model:show="showAction"
+            :actions="actions"
+            cancel-text="取消"
+            close-on-click-action
+            @select="selectAction"
+        />
+        <van-list
+            style="padding-bottom: 1px"
+            v-model:loading="loading"
+            :finished="finished"
+            finished-text=""
+            @load="getData"
+        >
+            <div class="selected_recommendations_list">
+                <template v-for="(item, index) in showList" :key="item.id">
+                    <CollectionList v-model:info="list[index]"></CollectionList
+                ></template>
+            </div>
+            <van-empty
+                :image="require(`@assets/storage_room_icon_01.png`)"
+                v-if="empty"
+                description="没有任何藏品哦~"
+            >
+            </van-empty>
+            <div class="go_stroll" v-if="empty">
+                    <van-button class="h44" size="small" color="#28B6FF" :round="true" to="/">去逛逛</van-button>
+            </div>
+        </van-list>
+    </div>
+</template>
+
+<script>
+// import { Swiper, SwiperSlide } from 'swiper/vue';
+
+// import 'swiper/swiper.min.css';
+// import 'swiper/swiper-bundle.min.css';
+
+// import SwiperCore, { Pagination, Autoplay } from 'swiper';
+
+// install Swiper modules
+// SwiperCore.use([Pagination, Autoplay]);
+// import ProductInfo from '../../components/product/productInfo.vue';
+import product from '../../mixins/product';
+import CollectionList from '../../components/CollectionList.vue';
+import list from '../../mixins/list';
+import banner from '../../mixins/banner';
+import { useWindowSize } from '@vant/use';
+export default {
+    name: 'productList',
+    // components: { ProductInfo, Swiper, SwiperSlide },
+    components: {
+        CollectionList
+    },
+    inject: ['setKeeps', 'scrollWrapper', 'changeScroll','bar'],
+    mixins: [product, list, banner],
+    setup() {
+        const { width, height } = useWindowSize();
+
+        return { windowWidth: width };
+    },
+    data() {
+        return {
+            list: [],
+            empty: false,
+            beforeSort: '',
+            sort: 'id,desc',
+            sortDes: '',
+            type: '',
+            source: '',
+            minterId: '',
+            selectOptions: [
+                {
+                    label: '全部',
+                    value: 'id,desc'
+                },
+                {
+                    label: '最新',
+                    value: 'id,desc;'
+                },
+                {
+                    label: '最热',
+                    value: 'likes,desc'
+                },
+                {
+                    label: '价格',
+                    value: 'price',
+                    type: 'select'
+                }
+            ],
+            url: '/collection/all',
+            title: '',
+            salable: '',
+            scrollTop: 0,
+            showAction: false,
+            banners: [],
+            settings: [],
+            normalHeight: 0,
+            settingId: 0,
+            showSetting: false,
+            barShow: false
+        };
+    },
+    computed: {
+        pageName() {
+            return this.getLabelName(this.source, this.sourceOptions) || this.getLabelName(this.type, this.typeOptions);
+        },
+        showList() {
+            let list = [];
+            let allList = [...this.list];
+            allList.forEach(item => {
+                let info = list.find(_item => {
+                    return _item.id === item.id;
+                });
+                if (!info) {
+                    list.push(item);
+                }
+            });
+            return list;
+        },
+        actions() {
+            let list = [{ name: '综合排序' }, { name: '在售中' }, { name: '仅展示' }];
+            if (this.salable === '') {
+                list[0].color = this.$colors.prim;
+            }
+            if (this.salable === true) {
+                list[1].color = this.$colors.prim;
+            }
+            if (this.salable === false) {
+                list[2].color = this.$colors.prim;
+            }
+            return list;
+        },
+        bannerHeight() {
+            let height = Math.ceil(this.banners.length / 3);
+            let _h = this.accMul(this.accAdd(this.accMul(this.windowWidth, 0.2), 20), height);
+            if (_h > this.maxBannerHeight - 8) {
+                _h = this.maxBannerHeight - 8;
+            }
+            return this.showSetting && _h ? _h + 24 : 0;
+        },
+        maxBannerHeight() {
+            let _h = this.accMul(this.accAdd(this.accMul(this.windowWidth, 0.2), 20), 3);
+            return _h + 8;
+        },
+        moreLeft() {
+            let index =
+                [...this.settings].findIndex(item => {
+                    return item.id === this.settingId;
+                }) || 0;
+
+            let _l = this.accAdd(-21.6, this.accMul(this.windowWidth, 0.1));
+            let _pW = this.accAdd(-3.2, this.accMul(this.windowWidth, 0.2));
+            let _w = this.accMul(_pW, index);
+            return this.accAdd(_l, _w);
+        }
+    },
+    // watch: {
+    //     showSetting() {
+    //         if (this.showSetting) {
+    //             document.getElementById('scroll-wrapper').style.overflow = 'hidden';
+    //         } else {
+    //             document.getElementById('scroll-wrapper').style.overflow = 'auto';
+    //         }
+    //     }
+    // },
+    mounted() {
+        this.init();
+        if (document.getElementById('navBar')) {
+            this.barShow = true;
+        } else {
+            this.barShow = false;
+        }
+        if (this.$route.query.title) {
+            this.title = this.$route.query.title;
+        }
+    },
+    methods: {
+        onRefresh() {
+            this.getData(true).then(() => {
+                this.isLoading = false;
+            });
+        },
+        init() {
+            this.$store.dispatch('getUsedBuy');
+            this.source = 'TRANSFER';
+            this.salable = true;
+            // this.getBanner();
+            this.getSetting();
+            if (this.isLogin) {
+                this.$store.dispatch('getUserInfo').then(res => {
+                    if (!res.riskWarning) {
+                        this.$dialog.alert({
+                            title: '风险提示声明',
+                            message:
+                                '古藏站平台发售的数字藏品具备收藏欣赏或版权价值,古藏站发售的藏品首发价格为官方指导价,古藏站对藏品二手市场价格不构成任何指导建议。请各位藏家理性消费,仔细阅读相关权益,杜绝恶意炒作,避免损失。',
+                            confirmButtonText: '已阅读并同意'
+                        });
+                        this.updateUser({ riskWarning: true }, false);
+                    }
+                });
+            }
+        },
+        touchEvent() {
+            this.hideSetting();
+        },
+        getSetting() {
+            this.$http
+                .post('/setting/byFlag', { flag: 1 })
+                .then(res => {
+                    this.settings = res;
+                    setTimeout(() => {
+                        this.$nextTick(() => {
+                            this.normalHeight = this.$refs.top.$el.offsetHeight;
+                        });
+                    }, 500);
+                })
+                .catch(e => {
+                    console.log(e);
+                    this.$message.error(e.error);
+                });
+        },
+        showBanner(settingId) {
+            if (this.settingId === settingId && this.showSetting) {
+                this.hideSetting();
+            } else {
+                this.settingId = settingId;
+                this.showSetting = true;
+                this.$http
+                    .post(
+                        '/banner/all',
+                        {
+                            query: {
+                                type: 'MARKET',
+                                del: false,
+                                settingId: settingId
+                            },
+                            sort: 'sort,asc;createdAt,desc'
+                        },
+                        { body: 'json' }
+                    )
+                    .then(res => {
+                        this.banners = res.content;
+                    });
+            }
+        },
+        hideSetting() {
+            this.showSetting = false;
+            setTimeout(() => {
+                this.banners = [];
+            }, 300);
+        },
+        changeSort() {
+            this.showAction = true;
+        },
+        selectAction(action) {
+            if (action.name == '综合排序') {
+                this.salable = '';
+            }
+            if (action.name == '在售中') {
+                this.salable = true;
+            }
+            if (action.name == '仅展示') {
+                this.salable = false;
+            }
+            this.hideSetting();
+            this.getData(true);
+        },
+        changeTab(info) {
+            this.$nextTick(() => {
+                if (info.name === 'price') {
+                    this.sortDes = this.sortDes == 'desc' ? 'asc' : 'desc';
+                }
+                this.hideSetting();
+                this.getData(true, this.normalHeight).then(() => {
+                    this.changeScroll(this.normalHeight);
+                });
+            });
+        },
+        beforeData() {
+            let sort = this.sort;
+            if (sort == 'price') {
+                sort = 'price,' + this.sortDes;
+            }
+            return {
+                query: {
+                    type: this.type,
+                    source: this.source,
+                    onShelf: true,
+                    del: false,
+                    minterId: this.minterId,
+                    salable: this.salable
+                },
+                sort: this.sort === 'id,desc' ? this.sortOptions[this.title] || sort : sort
+            };
+        },
+        goSearch() {
+            let url = '/productSearch';
+            if (this.type) {
+                url += '?type=' + this.type;
+            }
+            if (this.source) {
+                url += '?source=' + this.source;
+            }
+            this.$router.push(url);
+        }
+    },
+    activated() {
+        this.$nextTick(() => {
+            this.changeScroll(this.scrollTop);
+            setTimeout(() => {
+                this.sort = this.beforeSort;
+            }, 1000);
+        });
+    },
+    beforeRouteLeave(to, from, next) {
+        // document.getElementById('scroll-wrapper').style.overflow = 'auto';
+        if (to.name === 'productDetail') {
+            this.beforeSort = this.sort;
+            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.setKeeps(['productList']);
+        } else {
+            this.beforeSort = '';
+            this.scrollTop = 0;
+            this.setKeeps(['productList'], false);
+        }
+        next();
+    }
+};
+</script>
+
+<style lang="less" scoped>
+/deep/ .van-tabs__nav--complete {
+    padding: 0;
+    border: none;
+}
+/deep/ .van-tab {
+    margin-right: 30px;
+}
+/deep/ .van-tabs__nav--line.van-tabs__nav--complete {
+    padding: 0;
+}
+.navBar {
+    width: 100%;
+    height: 44px;
+}
+.shop_list_one {
+    height: 100%;
+    position: absolute;
+}
+/deep/ .van-tabs__line {
+    display: none;
+}
+/deep/ .van-button{
+    width: 100%;
+    height: 38px;
+    font-weight: 500;
+    font-size: 16px;
+}
+.go_stroll{
+    width: 100%;
+    padding: 0px 48px;
+    box-sizing: border-box;
+}
+.content {
+    width: 100%;
+    // height: 100%;
+    background-color: #0a0a1b;
+    .content_top {
+        width: 100%;
+        height: 90px;
+        background: #15152d;
+        padding: 16px 0px 10px 0px;
+        // padding: 16px 16px 10px;
+        box-sizing: border-box;
+        .selected_recommendations {
+            display: flex;
+            justify-content: space-between;
+            margin-bottom: 10px;
+            padding: 0px 16px;
+            .selected_recommendations_title {
+                font-size: 16px;
+                font-family: PingFangSC-Medium, PingFang SC;
+                font-weight: 500;
+                color: #ffffff;
+            }
+            .selected_recommendations_img {
+                width: 24px;
+                height: 24px;
+            }
+        }
+        .recommended_switching {
+            display: flex;
+            justify-content: space-between;
+            padding-right: 16px;
+            box-sizing: border-box;
+            /deep/ .van-tabs__nav--line {
+                padding: 0;
+            }
+            .tab {
+                position: relative;
+                padding-right: 14px;
+                .van-icon {
+                    position: absolute;
+                    right: 0;
+                    &.van-icon-arrow-down {
+                        top: 8px;
+                    }
+                    &.van-icon-arrow-up {
+                        bottom: 8px;
+                    }
+                }
+            }
+            .label_tabs {
+                display: flex;
+                .label_tab {
+                    position: relative;
+                    width: 28px;
+                    font-size: 14px;
+                    font-family: PingFangSC-Regular, PingFang SC;
+                    font-weight: 400;
+                    margin-right: 30px;
+                    line-height: 24px;
+                    .price_symbol {
+                        position: absolute;
+                        top: 3px;
+                        right: -15px;
+                        display: flex;
+                        flex-direction: column;
+                        .price_symbol_img {
+                            width: 10px;
+                            height: 10px;
+                        }
+                        .price_symbol_one {
+                            transform: rotate(180deg);
+                        }
+                    }
+                }
+                .label_selected {
+                    font-weight: 500;
+                    color: #28b6ff;
+                }
+                .label_not_selected {
+                    font-weight: 400;
+                    color: #939599;
+                }
+            }
+            .sorting_selection {
+                margin-top: 8px;
+                width: 86px;
+                height: 24px;
+                background: #29293f;
+                border-radius: 16px;
+                font-size: 12px;
+                font-family: PingFangSC-Regular, PingFang SC;
+                font-weight: 400;
+                color: #939599;
+                display: flex;
+                justify-content: space-between;
+                padding: 4px 10px;
+                box-sizing: border-box;
+                .sorting_selection_con {
+                    width: 50px;
+                    height: 16px;
+                    line-height: 16px;
+                    text-align: center;
+                }
+                .sorting_selection_img {
+                    width: 16px;
+                    height: 16px;
+                }
+            }
+        }
+    }
+    .selected_recommendations_list {
+        width: 100%;
+        background: #0a0a1b;
+        padding: 16px;
+        box-sizing: border-box;
+        display: flex;
+        justify-content: space-between;
+        flex-wrap: wrap;
+        // margin-bottom: 20px;
+        .current_recommendation_con {
+            width: 48%;
+            height: 254px;
+            background: #29293f;
+            border-radius: 8px;
+            margin-bottom: 16px;
+            .current_recommendation_img {
+                width: 100%;
+                height: 164px;
+                margin-bottom: 6px;
+            }
+            .current_recommendation_title {
+                padding: 0 10px;
+                width: 170px;
+                white-space: nowrap;
+                overflow: hidden;
+                text-overflow: ellipsis;
+                box-sizing: border-box;
+                font-size: 14px;
+                font-family: PingFangSC-Medium, PingFang SC;
+                font-weight: 500;
+                color: #ffffff;
+            }
+            .current_recommendation_price {
+                width: 100%;
+                margin-top: 5px;
+                padding-left: 22px;
+                box-sizing: border-box;
+                display: flex;
+                position: relative;
+                margin-bottom: 8px;
+                .current_recommendation_price_one {
+                    font-size: 10px;
+                    font-family: PingFangSC-Medium, PingFang SC;
+                    font-weight: 500;
+                    color: #28b6ff;
+                    position: absolute;
+                    bottom: 1px;
+                    left: 12px;
+                }
+                .current_recommendation_price_two {
+                    font-size: 16px;
+                    font-family: PingFangSC-Medium, PingFang SC;
+                    font-weight: 500;
+                    color: #28b6ff;
+                }
+            }
+            .current_recommendation_bottom {
+                width: 100%;
+                display: flex;
+                justify-content: space-between;
+                padding: 0px 10px;
+                box-sizing: border-box;
+                .current_recommendation_bottom_left {
+                    display: flex;
+                }
+                .current_recommendation_bottom_right {
+                    display: flex;
+                    height: 18px;
+                }
+                .current_recommendation_name_img {
+                    width: 18px;
+                    height: 18px;
+                    border-radius: 50%;
+                    margin-right: 4px;
+                }
+                .current_recommendation_name {
+                    height: 18px;
+                    line-height: 18px;
+                    font-size: 12px;
+                    font-family: PingFangSC-Regular, PingFang SC;
+                    font-weight: 400;
+                    color: #939599;
+                }
+                .give_img {
+                    width: 18px;
+                    height: 18px;
+                    margin-right: 2px;
+                }
+                .give_number {
+                    height: 18px;
+                    line-height: 18px;
+                    font-size: 12px;
+                    font-family: PingFangSC-Regular, PingFang SC;
+                    font-weight: 400;
+                    color: #939599;
+                }
+            }
+        }
+    }
+}
+.van-tab.van-tab--active {
+    color: #28b6ff;
+    font-weight: 500;
+}
+</style>

+ 18 - 4
src/views/product/List.vue

@@ -133,7 +133,7 @@
                             </div>
                         </div>
                     </div> -->
-                    <div class="sorting_selection" @click="changeSort">
+                    <div class="sorting_selection" @click="changeSort" v-if="source == 'TRANSFER' && !title">
                         <div class="sorting_selection_con">
                             {{ salable ? '在售中' : salable === false ? '仅展示' : '综合排序' }}
                         </div>
@@ -162,10 +162,13 @@
                 ></template>
             </div>
             <van-empty
-                :image="require('@assets/kong_png_yongyoude  (1).png')"
+                :image="require(`@assets/storage_room_icon_01.png`)"
                 v-if="empty"
                 description="没有任何藏品哦~"
             />
+            <div class="go_stroll" v-if="empty">
+                <van-button class="h44" size="small" color="#28B6FF" :round="true" to="/">去逛逛</van-button>
+            </div>
         </van-list>
     </div>
 </template>
@@ -265,7 +268,7 @@ export default {
                             this.$dialog.alert({
                                 title: '风险提示声明',
                                 message:
-                                    'RAEX绿洲宇宙平台发售的数字藏品具备收藏欣赏或版权价值,RAEX绿洲宇宙发售的藏品首发价格为官方指导价,RAEX绿洲宇宙对藏品二手市场价格不构成任何指导建议。请各位藏家理性消费,仔细阅读相关权益,杜绝恶意炒作,避免损失。',
+                                    '古藏站平台发售的数字藏品具备收藏欣赏或版权价值,古藏站发售的藏品首发价格为官方指导价,古藏站对藏品二手市场价格不构成任何指导建议。请各位藏家理性消费,仔细阅读相关权益,杜绝恶意炒作,避免损失。',
                                 confirmButtonText: '已阅读并同意'
                             });
                             this.updateUser({ riskWarning: true }, false);
@@ -463,7 +466,7 @@ export default {
 //                             this.$dialog.alert({
 //                                 title: '风险提示声明',
 //                                 message:
-//                                     'RAEX绿洲宇宙平台发售的数字藏品具备收藏欣赏或版权价值,RAEX绿洲宇宙发售的藏品首发价格为官方指导价,RAEX绿洲宇宙对藏品二手市场价格不构成任何指导建议。请各位藏家理性消费,仔细阅读相关权益,杜绝恶意炒作,避免损失。',
+//                                     '古藏站平台发售的数字藏品具备收藏欣赏或版权价值,古藏站发售的藏品首发价格为官方指导价,古藏站对藏品二手市场价格不构成任何指导建议。请各位藏家理性消费,仔细阅读相关权益,杜绝恶意炒作,避免损失。',
 //                                 confirmButtonText: '已阅读并同意'
 //                             });
 //                             this.updateUser({ riskWarning: true }, false);
@@ -591,6 +594,17 @@ export default {
     width: 100%;
     height: 44px;
 }
+/deep/ .van-button{
+    width: 100%;
+    height: 38px;
+    font-weight: 500;
+    font-size: 16px;
+}
+.go_stroll{
+    width: 100%;
+    padding: 0px 48px;
+    box-sizing: border-box;
+}
 .shop_list_one {
     height: 100%;
     position: absolute;

+ 120 - 160
src/views/product/Search.vue

@@ -1,9 +1,7 @@
 <template>
-    <div class="search" :style="{ backgroundColor: isSearch ? $colors.bg3 : $colors.bg }">
-        <van-sticky ref="top" class="list-top" :offset-top="bar.value && bar.value.show ? 46 : 0">
+    <div class="search" :style="{ backgroundColor: isSearch ? '#0F0F27' : '#0F0F27' }">
+        <van-sticky ref="top" :offset-top="46">
             <van-search
-                ref="top"
-                shape="round"
                 v-model="search"
                 placeholder="请输入"
                 show-action
@@ -16,32 +14,43 @@
                     <div v-else @click="onCancel">取消</div>
                 </template>
             </van-search>
-            <van-tabs
-                v-if="isSearch"
-                v-model:active="sort"
-                :ellipsis="false"
-                line-width="16"
-                line-height="2"
-                @click-tab="changeTab"
-                :class="{ trans: source == 'TRANSFER' }"
-            >
-                <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"
+            <div 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' }"
+                >
+                    <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
+                    @click="changeSort"
+                    v-if="isSearch && source == 'TRANSFER' && !title"
+                    color="#29293F"
+                    class="sala"
+                    size="small"
+                    icon="arrow-down"
+                    icon-position="right"
+                    >{{ salable ? '在售中' : salable === false ? '仅展示' : '综合排序' }}</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>
+            </div>
             <!-- <van-checkbox
                 v-if="isSearch && source == 'TRANSFER' && !title"
                 @change="getData(true)"
@@ -49,19 +58,6 @@
                 v-model="salable"
                 >仅看在售</van-checkbox
             > -->
-
-            <van-button
-                @click="changeSort"
-                v-if="isSearch && source == 'TRANSFER' && !title"
-                class="sala"
-                color="#F5F7FA"
-                type="primary"
-                size="small"
-                icon="arrow-down"
-                icon-position="right"
-                round
-                >{{ salable ? '在售中' : salable === false ? '仅展示' : '综合排序' }}</van-button
-            >
         </van-sticky>
 
         <van-action-sheet
@@ -80,10 +76,12 @@
             @load="getData"
             v-if="isSearch"
         >
-            <template v-for="(item, index) in list" :key="index">
-                <product-info v-model:info="list[index]" @update:info="init"></product-info>
-            </template>
-            <van-empty v-if="empty" description="什么都没有搜到哦~" :image="require('@assets/kong_png_wusousuo.png')" />
+            <div class="current_recommendation">
+                 <template v-for="(item, index) in list" :key="index">
+                    <CollectionList v-model:info="list[index]" @update:info="init"></CollectionList>
+                </template>
+            </div>
+            <van-empty v-if="empty" description="什么都没有搜到哦~" :image="require('@assets/storage_room_icon_01.png')" />
         </van-list>
         <div class="search-content" v-else>
             <div class="hot-content" v-if="historys.length > 0">
@@ -103,13 +101,13 @@
 </template>
 
 <script>
-import ProductInfo from '../../components/product/productInfo.vue';
+import CollectionList from '../../components/CollectionList.vue'
 import product from '../../mixins/product';
 import list from '../../mixins/list';
 import search from '../../mixins/search';
 export default {
     name: 'productSearch',
-    components: { ProductInfo },
+    components: { CollectionList },
     inject: ['bar', 'setKeeps', 'scrollWrapper', 'changeScroll'],
     mixins: [product, list, search],
     data() {
@@ -259,106 +257,91 @@ export default {
 </script>
 
 <style lang="less" scoped>
-.search {
-    background-color: @bg3;
-    padding-bottom: 100px;
+.search{
+    background: #0F0F27;
 }
-.top {
-    background-color: @bg3;
-    padding: 0 16px;
-    height: 50px;
-    display: flex;
-    align-items: center;
-    .name {
-        font-size: 20px;
-        // font-weight: bold;
-        color: @prim;
-        line-height: 30px;
-    }
+/deep/ .van-sticky{
+    padding: 12px 0px 10px;
+    box-sizing: border-box;
+    background: #15152D;
 }
-
-/deep/.trans {
-    .van-tab {
-        margin-right: 30px;
-    }
-}
-
-.list-top {
-    position: relative;
-}
-/deep/.van-tabs {
-    .van-tabs__nav {
+/deep/ .van-search {
+    padding: 0px 16px;
+    background: #15152d;
+    box-sizing: border-box;
+    // margin-bottom: 6px;
+    .van-search__content {
         padding-left: 16px;
+        background: #29293f;
+        box-sizing: border-box;
+    }
+    .van-search__content--round {
+        border-radius: 4px;
+    }
+    .van-search__action {
+        padding-right: 0;
+        padding-left: 12px;
+        color: #939599;
+        box-sizing: border-box;
+        background: #15152d;
+    }
+    .van-field__control {
+        color: #ffffff;
+    }
+    .van-icon__image {
+        padding-top: 4px;
     }
 }
-.list {
-    padding: 8px 8px 100px;
+.search_filter{
+    // height: 44px;
+    padding: 16px 16px 10px;
+    box-sizing: border-box;
+    display: flex;
+    background: #15152D;
+    justify-content: space-between;
 }
-// /deep/.van-tab {
-// flex-grow: 0;
-// padding: 0 0 0 0;
-// margin-right: 50px;
-
-.tab {
-    position: relative;
-    padding-right: 14px;
-    .van-icon {
-        position: absolute;
-        right: 0;
-
-        &.van-icon-arrow-down {
-            top: 8px;
-        }
-
-        &.van-icon-arrow-up {
-            bottom: 8px;
-        }
+/deep/ .van-tabs--line .van-tabs__wrap {
+    height: 24px;
+    .van-tab {
+        margin-right: 30px;
     }
-}
-/deep/.van-tab--active {
     .tab {
-        .van-icon-arrow-up {
-            color: #646566;
-        }
-    }
-    &.asc {
-        .tab {
-            .van-icon-arrow-up {
-                color: @prim;
+        position: relative;
+        padding-right: 14px;
+        box-sizing: border-box;
+        .van-icon {
+            position: absolute;
+            right: 0;
+
+            &.van-icon-arrow-down {
+                top: 8px;
             }
-            .van-icon-arrow-down {
-                color: #646566;
+
+            &.van-icon-arrow-up {
+                bottom: 8px;
             }
         }
     }
 }
-.van-tabs {
-    background-color: @bg;
-}
-/deep/.van-tabs__nav--line.van-tabs__nav--complete {
-    border-color: @tabBorder;
-}
-/deep/.van-search {
-    .van-field__left-icon {
-        display: flex;
-        align-items: center;
-    }
-    .van-icon {
-        display: flex;
-        align-items: center;
-    }
-    .van-field__control {
-        color: @text0;
+/deep/ .van-tabs__nav--line.van-tabs__nav--complete {
+        padding: 0 !important;
+        border: none !important;
     }
-
-    .van-search__action {
-        color: @text4;
+/deep/ .van-tabs__line {
+    width: 0px !important;
+    height: 0px !important;
     }
+.current_recommendation {
+    width: 100%;
+    display: flex;
+    justify-content: space-between;
+    flex-wrap: wrap;
+    padding: 16px;
+    box-sizing: border-box;
 }
-
 .hot-content {
     padding: 10px 0 6px 16px;
-
+    box-sizing: border-box;
     .title {
         font-size: @font2;
         color: @text3;
@@ -375,39 +358,16 @@ export default {
             margin: 6px 16px 0 0;
             background: @hotBg;
             border-radius: 12px;
+            box-sizing: border-box;
         }
     }
 }
-
 /deep/.sala {
-    position: absolute;
-    right: 16px;
-    top: 60px;
-    color: @text3!important;
-    min-width: 92px;
-    font-size: 14px;
-    // .van-checkbox__icon {
-    //     color: #fff;
-    //     transform: scale(0.6);
-
-    //     .van-icon {
-    //         border-color: @text3;
-    //     }
-
-    //     &.van-checkbox__icon--checked {
-    //         .van-icon {
-    //             border-width: 0;
-    //             .linear();
-    //             &::before {
-    //                 color: #fff;
-    //             }
-    //         }
-    //     }
-    // }
-    // .van-checkbox__label {
-    //     color: @text3;
-    //     margin-left: 0px;
-    //     font-size: @font1;
-    // }
+    width: 86px;
+    height: 24px;
+    background: #29293F;
+    border-radius: 12px;
+    color: #939599 !important;
+    // background: #29293F !important;
 }
 </style>

+ 224 - 53
src/views/user/Banks.vue

@@ -1,22 +1,58 @@
 <template>
     <div class="page">
-        <page-bar>我的银行卡</page-bar>
-
+        <div class="page_top">我的银行卡</div>
+        <div class="page_tip">成功绑定后不能修改</div>
         <div class="add" @click="add" v-if="list.length === 0">
             <img src="@assets/png-tianjia.png" alt="" />
             <span>添加银行卡</span>
         </div>
-
         <div class="list">
-            <div class="bank-info" v-for="(item, index) in list" :key="index">
-                <div class="info1">
-                    <div class="text1">{{ item.bankName }}</div>
-                    <div class="text2">{{ getNum(item.bankNo) }}</div>
+            <van-swipe-cell :name="index" v-for="(item, index) in list" :key="index" :before-close="beforeClose">
+                <div class="bank_info">
+                    <div class="bank_info_left">
+                        <div class="text1">{{item.bankName}}</div>
+                        <div class="text2">{{ item.cardTypeDesc }}</div>
+                    </div>
+                    <div class="bank_info_right">
+                        <div class="text3">{{ getNum(item.bankNo) }}</div>
+                        <img src="@assets/png-ka@3x.png" alt="" class="bank_info_right_img" />
+                    </div>
                 </div>
-                <div class="info2">{{ item.cardTypeDesc }}</div>
-            </div>
+                <!-- <div class="bank-info">
+                    <div class="info1">
+                        <div class="text1">11111{{ item.bankName }}</div>
+                        <div class="text2">11111{{ getNum(item.bankNo) }}</div>
+                    </div>
+                    <div class="info2">1111{{ item.cardTypeDesc }}</div>
+                    <img class="card-bg" alt="" />
+                </div> -->
+                <template #right>
+                    <van-button text="解绑" type="danger" class="delete-button" />
+                </template>
+            </van-swipe-cell>
         </div>
     </div>
+    <!-- <div class="page">
+        <div class="list">
+            <van-swipe-cell :name="index" v-for="(item, index) in list" :key="index" :before-close="beforeClose">
+                <div class="bank-info">
+                    <div class="info1">
+                        <div class="text1">{{ item.bankName }}</div>
+                        <div class="text2">{{ getNum(item.bankNo) }}</div>
+                    </div>
+                    <div class="info2">{{ item.cardTypeDesc }}</div>
+                    <img class="card-bg" alt="" />
+                </div>
+                <template #right>
+                    <van-button
+                        text="解绑"
+                        type="danger"
+                        class="delete-button"
+                    />
+                </template>
+            </van-swipe-cell>
+        </div>
+    </div> -->
 </template>
 
 <script>
@@ -27,11 +63,14 @@ export default {
         };
     },
     mounted() {
-        this.$http.get('/user/myBankCard').then(res => {
-            this.list = res;
-        });
+        this.getBank();
     },
     methods: {
+        getBank() {
+            this.$http.get('/user/myBankCard').then(res => {
+                this.list = res;
+            });
+        },
         add() {
             this.checkAuth().then(() => {
                 this.$router.push('/mineBanksAdd');
@@ -39,6 +78,42 @@ export default {
         },
         getNum(No) {
             return '**** ' + No.substr(-4, 4);
+        },
+        beforeClose({ position, name }) {
+            console.log(name);
+            console.log(position);
+            if (position === 'right') {
+                return new Promise(resolve => {
+                    this.$dialog
+                        .confirm({
+                            title: '确定解绑该银行卡吗?'
+                        })
+                        .then(() => {
+                            this.cancelBank();
+                            resolve(true);
+                        })
+                        .catch(() => {
+                            resolve(true);
+                        });
+                });
+            } else {
+                return true;
+            }
+        },
+        cancelBank() {
+            this.$toast.loading({
+                message: '加载中...',
+                forbidClick: true
+            });
+            this.$http
+                .post('/user/removeBankCard')
+                .then(res => {
+                    this.$toast.success('解绑成功');
+                    this.getBank();
+                })
+                .catch(e => {
+                    this.$toast(e.error);
+                });
         }
     }
 };
@@ -46,50 +121,146 @@ export default {
 
 <style lang="less" scoped>
 .page {
-    background-color: @bg3;
-}
-.add {
-    .flex-col();
-    padding: 60px 0;
-    align-items: center;
-
-    img {
-        width: 54px;
-        height: 54px;
-    }
-
-    span {
-        font-size: 14px;
-        color: @text0;
+    background: #0f0f27;
+    padding: 16px;
+    box-sizing: border-box;
+    .page_top {
+        font-size: 20px;
+        font-family: PingFangSC-Medium, PingFang SC;
+        font-weight: 500;
+        color: #ffffff;
         line-height: 24px;
-        margin-top: 17px;
+        margin-bottom: 6px;
     }
-}
-@colorList: #37b074, #ea4f56, #36a0b9, #f79439;
-.bank-info {
-    color: #fff;
-    each(@colorList,{
-        &:nth-child( 4n + @{index} ){
-            background:  linear-gradient(90deg, @value, lighten(@value , 20%) 100%);
+    .page_tip {
+        font-size: 12px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #ffca5e;
+        line-height: 17px;
+    }
+    .add {
+        .flex-col();
+        padding: 60px 0;
+        align-items: center;
+        img {
+            width: 54px;
+            height: 54px;
+        }
+        span {
+            font-size: 14px;
+            color: #ffffff;
+            line-height: 24px;
+            margin-top: 17px;
         }
-    
-    });
-
-    height: 100px;
-    .flex-col();
-    border-radius: 8px;
-    margin: 20px 16px;
-    justify-content: center;
-    padding: 0 10px;
-
-    .info1 {
-        .flex();
-        justify-content: space-between;
-        font-size: @font2;
-        line-height: 24px;
     }
-    .info2 {
-        font-size: @font1;
+    .van-swipe-cell {
+        height: 100px;
+        background: #29293f;
+        border-radius: 12px;
+        margin-top: 30px;
+        padding-top: 20px;
+        box-sizing: border-box;
+        .bank_info{
+            height: 80px;
+            display: flex;
+            justify-content: space-between;
+            .bank_info_left {
+            margin-left: 16px;
+            color: #ffffff;
+            font-family: PingFangSC-Regular, PingFang SC;
+            font-weight: 400;
+            .text1 {
+                font-size: 14px;
+                line-height: 24px;
+                margin-bottom: 2px;
+            }
+            .text2 {
+                font-size: 10px;
+                line-height: 10px;
+            }
+        }
+        .bank_info_right {
+            position: relative;
+            .text3 {
+                margin-right: 16px;
+                font-size: 14px;
+                font-family: PingFangSC-Regular, PingFang SC;
+                font-weight: 400;
+                color: #ffffff;
+                line-height: 24px;
+            }
+            .bank_info_right_img {
+                width: 166px;
+                height: 68px;
+                position: absolute;
+                bottom: 0px;
+                right: 0px;
+            }
+        }
+        }
+        /deep/.van-swipe-cell__right {
+        padding: 12px 0 30px 16px;
+        box-sizing: border-box;
+        display: flex;
+    }
     }
 }
-</style>
+// .van-swipe-cell {
+//     .delete-button {
+//         width: 40px;
+//         height: 40px;
+//         border-radius: 20px;
+//         padding: 0;
+//         /deep/.van-button__content {
+//             display: flex;
+//             flex-direction: column;
+//             .van-button__icon {
+//                 font-size: 18px;
+//             }
+//             .van-button__text {
+//                 margin-left: 0;
+//                 font-size: 12px;
+//                 transform: scale(0.8);
+//             }
+//         }
+//     }
+// }
+// .van-swipe-cell + .van-swipe-cell {
+//     margin-top: 16px;
+// }
+// @colorList: #6b73a1, #ea4f56, #36a0b9, #f79439;
+// .bank-info {
+//     color: #fff;
+//     border-radius: 8px;
+//     each(@colorList,{
+//         &:nth-child( 4n + @{index} ){
+//             background:  linear-gradient(90deg, @value, lighten(@value , 10%) 100%);
+//         }
+
+//     });
+//     height: 100px;
+//     .flex-col();
+//     justify-content: center;
+//     padding: 0 10px;
+//     position: relative;
+//     .card-bg {
+//         width: 166px;
+//         height: 68px;
+//         position: absolute;
+//         right: 0;
+//         bottom: 0;
+//         z-index: 0;
+//     }
+
+//     .info1 {
+//         .flex();
+//         justify-content: space-between;
+//         font-size: @font2;
+//         line-height: 24px;
+//     }
+//     .info2 {
+//         font-size: @font1;
+//     }
+// }
+</style>

+ 127 - 109
src/views/user/BanksAdd.vue

@@ -3,31 +3,31 @@
     <div class="content">
         <div class="content_title">我的银行卡</div>
         <div class="content_tip">成功绑定后不能修改</div>
-        <van-form @submit="onSubmit" class="form"> 
+        <van-form @submit="onSubmit" class="form">
             <van-field
-            type="digit"
-            name="银行卡号"
-            label="银行卡号"
-            :maxlength="23"
-            placeholder="点击输入*某某 银行卡号"
-            :formatter="bankFormatter"
-            v-model="form.bankNo"
-            clearable
-            :rules="[{ required: true, message: '请填写银行卡号' }]"
+                type="digit"
+                name="银行卡号"
+                label="银行卡号"
+                :maxlength="23"
+                placeholder="点击输入*某某 银行卡号"
+                :formatter="bankFormatter"
+                v-model="form.bankNo"
+                clearable
+                :rules="[{ required: true, message: '请填写银行卡号' }]"
             />
             <van-field
-            type="tel"
-            name="银行预留手机号"
-            label="银行预留手机号"
-            placeholder="请输入银行预留手机号"
-            v-model="form.phone"
-            :rules="[
-                { required: true, message: '请输入银行预留手机号' },
-                {
-                    pattern: phonePattern,
-                    message: '手机号码格式错误'
-                }
-            ]"
+                type="tel"
+                name="银行预留手机号"
+                label="银行预留手机号"
+                placeholder="请输入银行预留手机号"
+                v-model="form.phone"
+                :rules="[
+                    { required: true, message: '请输入银行预留手机号' },
+                    {
+                        pattern: phonePattern,
+                        message: '手机号码格式错误'
+                    }
+                ]"
             />
             <div class="next_step">
                 <van-button type="primary" :disabled="!canNext" round block native-type="submit">下一步</van-button>
@@ -55,7 +55,7 @@
         <div class="prompt_information">银行预留手机号</div>
         <input type="text" v-model="phoneNumber" placeholder="请输入银行预留手机号" class="input_information"/> -->
     </div>
-        <!-- <page-bar>
+    <!-- <page-bar>
             添加银行卡
             <template #sub>成功绑定银行卡后</template>
             <template #sub-prim>不能修改</template>
@@ -94,6 +94,8 @@
 
 <script>
 import phone from '../../mixins/phone';
+import { mapState } from 'vuex';
+import { Dialog } from 'vant';
 // import TopNavigation from "../../components/TopNavigation.vue"
 export default {
     mixins: [phone],
@@ -107,6 +109,7 @@ export default {
         };
     },
     computed: {
+        ...mapState(['userInfo']),
         canNext() {
             return this.form.bankNo && this.form.phone;
         },
@@ -129,24 +132,40 @@ export default {
             if (!this.form.code || this.form.code.length < 4) {
                 this.$toast('请输入验证码');
             } else {
-                this.$toast.loading({
-                    message: '加载中...',
-                    forbidClick: true
-                });
-                let bankNo = this.form.bankNo.replace(/ /g, '');
-                this.$http
-                    .post(`/user/addBankCard?bankNo=${bankNo}&phone=${this.form.phone}&code=${this.form.code}`)
-                    .then(res => {
-                        this.$toast.success('添加成功');
-                        setTimeout(() => {
-                            this.$router.go(-1);
-                        }, 1000);
-                    })
-                    .catch(e => {
-                        if (e) {
-                            this.$toast(e.error);
-                        }
+                if (this.userInfo.authStatus === 'PENDING' || this.userInfo.authStatus === 'FAIL') {
+                    Dialog.confirm({
+                        title: '认证信息',
+                        message: '用户认证中,是否查看认证'
+                    }).then(() => {
+                        this.$router.push('/waiting');
+                    });
+                } else if (this.userInfo.authStatus === 'NOT_AUTH') {
+                    Dialog.confirm({
+                        title: '认证信息',
+                        message: '用户未认证,是否立即认证'
+                    }).then(() => {
+                        this.$router.push('/verified');
                     });
+                } else {
+                    this.$toast.loading({
+                        message: '加载中...',
+                        forbidClick: true
+                    });
+                    let bankNo = this.form.bankNo.replace(/ /g, '');
+                    this.$http
+                        .post(`/user/addBankCard?bankNo=${bankNo}&phone=${this.form.phone}&code=${this.form.code}`)
+                        .then(res => {
+                            this.$toast.success('添加成功');
+                            setTimeout(() => {
+                                this.$router.go(-1);
+                            }, 1000);
+                        })
+                        .catch(e => {
+                            if (e) {
+                                this.$toast(e.error);
+                            }
+                        });
+                }
             }
         },
         bankFormatter(val) {
@@ -166,73 +185,73 @@ export default {
 </script>
 
 <style lang="less" scoped>
-.content{
+.content {
+    width: 100%;
+    height: 100%;
+    position: absolute;
+    // margin-top: 44px;
+    background: #0f0f27;
+    padding: 16px 16px 16px 16px;
+    box-sizing: border-box;
+    .content_title {
+        font-size: 20px;
+        font-family: PingFangSC-Medium, PingFang SC;
+        font-weight: 500;
+        color: #ffffff;
+        margin-bottom: 6px;
+    }
+    .content_tip {
+        font-size: 12px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #ffca5e;
+    }
+    .prompt_information {
+        font-size: 14px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #939599;
+        margin-top: 20px;
+        margin-bottom: 10px;
+    }
+    .input_information {
         width: 100%;
-        height: 100%;
-        position: absolute;
-        // margin-top: 44px;
-        background: #0F0F27;
-        padding: 16px 16px 16px 16px;
+        height: 44px;
+        background: #29293f;
+        border-radius: 8px;
+        padding-left: 10px;
         box-sizing: border-box;
-        .content_title{
-            font-size: 20px;
-            font-family: PingFangSC-Medium, PingFang SC;
-            font-weight: 500;
-            color: #FFFFFF;
-            margin-bottom: 6px;
-        }
-        .content_tip{
-            font-size: 12px;
-            font-family: PingFangSC-Regular, PingFang SC;
-            font-weight: 400;
-            color: #FFCA5E;
-        }
-        .prompt_information{
-            font-size: 14px;
-            font-family: PingFangSC-Regular, PingFang SC;
-            font-weight: 400;
-            color: #939599;
-            margin-top: 20px;
-            margin-bottom: 10px;
-        }
-        .input_information{
-            width: 100%;
-            height: 44px;
-            background: #29293F;
-            border-radius: 8px;
-            padding-left: 10px;
-            box-sizing: border-box;
-            border: 0;
-            line-height: 44px;
-        }
+        border: 0;
+        line-height: 44px;
     }
-    .next_step{
+}
+.next_step {
+    width: 100%;
+    height: 56px;
+    background: #15152d;
+    position: fixed;
+    bottom: 0;
+    left: 0;
+    padding-bottom: calc(@bottom+ constant(safe-area-inset-bottom));
+    padding-bottom: calc(@bottom + env(safe-area-inset-bottom));
+    padding: 8px 16px;
+    box-sizing: border-box;
+    .next_step_con {
         width: 100%;
-        height: 56px;
-        background: #15152D;
-        position: fixed;
-        bottom: 0;
-        left: 0;
-        padding-bottom: calc(@bottom+ constant(safe-area-inset-bottom));
-        padding-bottom: calc(@bottom + env(safe-area-inset-bottom));
-        padding: 8px 16px;
-        box-sizing: border-box;
-        .next_step_con{
-            width: 100%;
-            height: 40px;
-            background: #28B6FF;
-            border-radius: 8px;
-            line-height: 40px;
-            text-align: center;
-            font-size: 16px;
-            font-family: PingFangSC-Medium, PingFang SC;
-            font-weight: 500;
-            color: #FFFFFF;
-        }
+        height: 40px;
+        background: #28b6ff;
+        border-radius: 8px;
+        line-height: 40px;
+        text-align: center;
+        font-size: 16px;
+        font-family: PingFangSC-Medium, PingFang SC;
+        font-weight: 500;
+        color: #ffffff;
     }
-    /deep/ .van-cell:after{
-            border-bottom: none;
-        }
+}
+/deep/ .van-cell:after {
+    border-bottom: none;
+}
 /deep/.form {
     .van-cell {
         padding: 0px;
@@ -248,7 +267,7 @@ export default {
             // border: 1px solid #939599;
             padding: 0 16px;
             margin-top: 6px;
-            background: #29293F;
+            background: #29293f;
             .van-field__control {
                 font-size: @font1;
                 color: @gray3;
@@ -258,19 +277,18 @@ export default {
         .van-field__error-message {
             margin-top: 6px;
         }
-
     }
 }
-/deep/ .van-password-input__security li{
+/deep/ .van-password-input__security li {
     width: 52px;
     height: 42px;
-    border: 1px solid #C8C9CC;
+    border: 1px solid #c8c9cc;
 }
-/deep/ .van-password-input__security li:nth-of-type(2n){
+/deep/ .van-password-input__security li:nth-of-type(2n) {
     border-left: none;
 }
-/deep/ .van-button{
-    background: #28B6FF;
+/deep/ .van-button {
+    background: #28b6ff;
     border-radius: 8px;
 }
 .sub {

+ 334 - 144
src/views/user/Exchange.vue

@@ -1,29 +1,36 @@
 <template>
-    <div class="search">
-        <van-sticky>
-            <div class="tabs">
-                <div class="tab-item" :class="{ active: !isBuy }" @click="changeBuy(false)">价值证明</div>
-                <div class="tab-item" :class="{ active: isBuy }" @click="changeBuy(true)">支付记录</div>
+    <div class="home">
+        <van-sticky :offset-top="46">
+            <div class="transaction_record">
+                <div class="transaction_record_one">交易记录</div>
+                <div class="transaction_record_two"  @click="changeSort">
+                    <div class="transaction_record_two_con">{{ salable === '' ? '全部状态' : salable === 'purchase' ? '买入' : salable === 'sellOut' ? '卖出' : '赠送'}}</div>
+                    <img
+                        :src="require('@assets/icon_shaixuan_sanjiao@3x.png')"
+                        alt=""
+                        class="transaction_record_two_img"
+                    />
+                </div>
             </div>
+            <van-action-sheet
+            v-model:show="showAction"
+            @select="selectAction"
+            :actions="actions"
+            cancel-text="取消"
+            close-on-click-action
+        />
         </van-sticky>
-        <div class="bg" v-if="!isBuy">
-            <van-image width="100%" :src="require('../../assets/img11.png')" fit="scale-down" />
-            <div class="total-price">
-                <div class="text1">{{ isBuy ? '累计购入' : '累计售出' }}(元)</div>
-                <div class="text2">{{ isBuy ? info.buy : info.sale }}</div>
-            </div>
-        </div>
-        <div class="tab-title" v-if="!isBuy">{{ isBuy ? '购买' : '出售' }}记录</div>
         <van-list v-model:loading="loading" :finished="finished" finished-text="" @load="getData">
             <template v-for="(item, index) in list" :key="index">
                 <div class="exchange">
-                    <div class="text1">{{ item.description }}</div>
-                    <div class="price">
-                        {{ isLogin && item.toUserId == $store.state.userInfo.id ? '-' : '+' }}{{ item.price || 0 }}
+                    <div class="exchange_top">
+                        <div class="text1">{{ item.description }}</div>
+                        <div :class="isLogin && item.toUserId == $store.state.userInfo.id ? 'priceone' : 'pricetwo'">
+                            {{ isLogin && item.toUserId == $store.state.userInfo.id ? '-' : '+' }}{{ item.price || 0 }}
+                        </div>
                     </div>
                     <div class="product">
                         <van-image width="32" height="32" radius="4" :src="getImg(changeImgs(item.pic))" fit="cover" />
-
                         <div class="flex1">
                             <div class="text2">{{ item.assetName }}</div>
                             <div class="text2">
@@ -32,14 +39,29 @@
                         </div>
                     </div>
                     <div class="text3">
-                        <span>来源:{{ item.fromUser }}</span> <span>去向 :{{ item.toUser }}</span>
+                        <span>来源:{{ item.fromUser }}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span>去向 :{{ item.toUser }}</span>
                     </div>
                 </div>
             </template>
-
-            <van-empty v-if="empty" description="暂无交易历史哦~" :image="require('@assets/kong_png_wusousuo.png')" />
+            <van-empty v-if="empty" description="暂无交易历史哦~" :image="require('@assets/storage_room_icon_01.png')" />
         </van-list>
     </div>
+    <!-- <div class="search">
+        <van-sticky>
+            <div class="tabs">
+                <div class="tab-item" :class="{ active: !isBuy }" @click="changeBuy(false)">价值证明</div>
+                <div class="tab-item" :class="{ active: isBuy }" @click="changeBuy(true)">支付记录</div>
+            </div>
+        </van-sticky>
+        <div class="bg" v-if="!isBuy">
+            <van-image width="100%" :src="require('../../assets/img11.png')" fit="scale-down" />
+            <div class="total-price">
+                <div class="text1">{{ isBuy ? '累计购入' : '累计售出' }}(元)</div>
+                <div class="text2">{{ isBuy ? info.buy : info.sale }}</div>
+            </div>
+        </div>
+        <div class="tab-title" v-if="!isBuy">{{ isBuy ? '购买' : '出售' }}记录</div>
+    </div> -->
 </template>
 
 <script>
@@ -48,6 +70,7 @@ import product from '../../mixins/product';
 export default {
     name: 'Search',
     mixins: [list, product],
+    inject: ['bar'],
     data() {
         return {
             list: [],
@@ -55,163 +78,330 @@ export default {
             url: '/asset/userHistory',
             httpType: 'get',
             isBuy: false,
-            info: {}
+            info: {},
+            showAction: false,
+            salable: '',
+            operation: ''
         };
     },
+    computed: {
+        actions() {
+            let list = [{ name: '全部状态' }, { name: '买入' }, { name: '卖出' }, { name: '赠送' }];
+            if (this.salable === '') {
+                list[0].color = this.$colors.prim;
+            }
+            if (this.salable === 'purchase') {
+                list[1].color = this.$colors.prim;
+            }
+            if (this.salable === 'sellOut') {
+                list[2].color = this.$colors.prim;
+            }
+            if (this.salable === 'give') {
+                list[3].color = this.$colors.prim;
+            }
+            return list;
+        }
+    },
     mounted() {
         this.$http.get('/asset/breakdown').then(res => {
             this.info = res;
         });
+        this.changeBuy();
     },
     methods: {
-        changeBuy(isBuy) {
-            this.isBuy = isBuy;
+        changeSort() {
+            this.showAction = true;
+        },
+        selectAction(action) {
+             if (action.name == '全部状态') {
+                this.salable = '';
+            }
+            if (action.name == '买入') {
+                this.salable = 'purchase';
+                this.operation = '买入'
+            }
+            if (action.name == '卖出') {
+                this.salable = 'sellOut';
+                this.operation = '卖出'
+            }
+            if (action.name == '赠送') {
+                this.salable = 'give';
+                this.operation = '赠送'
+            }
+            this.getData(true);
+        },
+        changeBuy() {
             this.getData(true);
         },
         beforeData() {
-            if (this.isBuy) {
+            if(this.salable === ''){
+                return {
+                    // query: {
+                    //     toUserId: this.$store.state.userInfo.id  
+                    // }
+                };
+            }else if(this.salable == 'purchase'){
                 return {
                     query: {
-                        toUserId: this.$store.state.userInfo.id
+                        toUserId: this.$store.state.userInfo.id,
+                        operation: this.operation
                     }
                 };
-            } else {
+            }else if(this.salable == 'sellOut'){
                 return {
                     query: {
-                        fromUserId: this.$store.state.userInfo.id
+                        fromUserId: this.$store.state.userInfo.id,
+                        operation: this.operation
+                    }
+                };
+            }else if(this.salable == 'give'){
+                return {
+                    query: {
+                        // fromUserId: this.$store.state.userInfo.id,
+                        operation: this.operation
                     }
                 };
             }
+            // if (this.isBuy) {
+            //     return {
+            //         query: {
+            //             toUserId: this.$store.state.userInfo.id  
+            //         }
+            //     };
+            // } else {
+            //     return {
+            //         query: {
+            //             fromUserId: this.$store.state.userInfo.id
+            //         }
+            //     };
+            // }
         }
     }
 };
 </script>
 
 <style lang="less" scoped>
-.exchange {
-    padding: 14px 16px 15px;
-    position: relative;
-    .text1 {
-        font-size: 14px;
-        color: @text0;
-        line-height: 20px;
-    }
-
-    .van-ellipsis {
-        margin-bottom: 2px;
-    }
-    border-top: 1px solid #f2f4f5;
-
-    .top {
-        .flex();
+.home {
+    background: #15152d;
+    .transaction_record {
+        height: 56px;
+        padding: 12px 16px;
+        box-sizing: border-box;
+        display: flex;
         justify-content: space-between;
-        overflow: hidden;
-    }
-    .text2 {
-        max-width: 60vw;
-        overflow: hidden;
-        text-overflow: ellipsis;
-        white-space: nowrap;
-        min-width: 0;
-        font-size: 12px;
-        color: #969799;
-        line-height: 17px;
-    }
-    .product {
-        .van-image {
-            flex-shrink: 0;
-        }
-        .flex();
-        overflow: hidden;
-        margin-top: 5px;
-        .flex1 {
-            min-width: 0;
-            overflow: hidden;
-            margin: 0 16px 0 5px;
+        background: #15152d;
+        .transaction_record_one {
+            padding-top: 2px;
+            font-size: 16px;
+            font-family: PingFangSC-Medium, PingFang SC;
+            font-weight: 500;
+            color: #ffffff;
+            line-height: 24px;
         }
-    }
-
-    .price {
-        font-size: 16px;
-        font-weight: bold;
-        color: #d3b374;
-        line-height: 24px;
-        position: absolute;
-        right: 16px;
-        top: 10px;
-    }
-}
-.tabs {
-    .flex();
-    .tab-item {
-        line-height: 50px;
-        flex-grow: 1;
-        background: #d3b374;
-        font-size: 14px;
-        color: #f5f7fa;
-        text-align: center;
-        position: relative;
-
-        &.active {
-            color: #fff;
-            font-weight: bold;
-            &::after {
-                content: '';
-                width: 16px;
-                height: 2px;
-                background: #ffffff;
-                border-radius: 2px;
-                position: absolute;
-                left: 50%;
-                bottom: 8px;
-                transform: translateX(-50%);
+        .transaction_record_two {
+            width: 100px; 
+            height: 32px;
+            background: #29293f;
+            border-radius: 4px;
+            display: flex;
+            justify-content: space-between;
+            padding: 6px 4px 6px 16px;
+            box-sizing: border-box;
+            line-height: 20px;
+            font-size: 13px;
+            font-family: PingFangSC-Regular, PingFang SC;
+            font-weight: 400;
+            color: #939599;
+            .transaction_record_two_con{
+                width: 52px;
+                text-align: center;
+            }
+            .transaction_record_two_img {
+                width: 20px;
+                height: 20px;
             }
         }
     }
-}
-.tab-title {
-    padding: 0 16px 12px;
-    font-size: 14px;
-    color: #939599;
-    line-height: 24px;
-}
-.bg {
-    background-color: #d3b374;
-    padding-top: 10px;
-    .van-image {
-        display: block;
-    }
-    position: relative;
-    .total-price {
-        position: absolute;
-        top: 50%;
-        left: 50%;
-        transform: translate(-50%, -50%);
-        color: #fff;
-        .text1 {
-            font-size: 12px;
-            color: #ffffff;
-            line-height: 17px;
-            text-align: center;
-        }
-        .text2 {
-            font-size: 32px;
-            font-family: OSP-DIN, OSP;
-            color: #ffffff;
-            line-height: 32px;
-            margin-top: 5px;
-            text-align: center;
+    /deep/ .van-list {
+        width: 100%;
+        padding: 0px 16px;
+        box-sizing: border-box;
+        .exchange {
+            width: 100%;
+            padding: 8px 0px;
+            box-sizing: border-box;
+            border-bottom: 1px solid rgba(95, 100, 111, 0.2);
+            .exchange_top {
+                display: flex;
+                justify-content: space-between;
+                font-size: 14px;
+                font-family: PingFangSC-Regular, PingFang SC;
+                font-weight: 400;
+                color: #ffffff;
+                line-height: 24px;
+                .priceone {
+                    font-size: 16px;
+                    font-weight: 500;
+                }
+                .pricetwo {
+                    font-size: 16px;
+                    font-weight: 500;
+                    color: #ffcb2f;
+                }
+            }
+            .product {
+                margin-top: 2px;
+                margin-bottom: 6px;
+                display: flex;
+                .flex1 {
+                    margin-left: 6px;
+                    font-size: 12px;
+                    font-family: PingFangSC-Regular, PingFang SC;
+                    font-weight: 400;
+                    color: #939599;
+                    .text2 {
+                        width: 292px;
+                        line-height: 17px;
+                        white-space: nowrap;
+                        overflow: hidden;
+                        text-overflow: ellipsis;
+                    }
+                }
+            }
+            .text3 {
+                font-size: 12px;
+                font-family: PingFangSC-Regular, PingFang SC;
+                font-weight: 400;
+                color: #939599;
+                line-height: 17px;
+            }
         }
     }
 }
+// .exchange {
+//     padding: 14px 16px 15px;
+//     position: relative;
+//     .text1 {
+//         font-size: 14px;
+//         color: @text0;
+//         line-height: 20px;
+//     }
 
-.text3 {
-    font-size: 12px;
-    color: #939599;
-    line-height: 17px;
-    margin-top: 6px;
-    span + span {
-        margin-left: 20px;
-    }
-}
+//     .van-ellipsis {
+//         margin-bottom: 2px;
+//     }
+//     border-top: 1px solid #f2f4f5;
+
+//     .top {
+//         .flex();
+//         justify-content: space-between;
+//         overflow: hidden;
+//     }
+//     .text2 {
+//         max-width: 60vw;
+//         overflow: hidden;
+//         text-overflow: ellipsis;
+//         white-space: nowrap;
+//         min-width: 0;
+//         font-size: 12px;
+//         color: #969799;
+//         line-height: 17px;
+//     }
+//     .product {
+//         .van-image {
+//             flex-shrink: 0;
+//         }
+//         .flex();
+//         overflow: hidden;
+//         margin-top: 5px;
+//         .flex1 {
+//             min-width: 0;
+//             overflow: hidden;
+//             margin: 0 16px 0 5px;
+//         }
+//     }
+
+//     .price {
+//         font-size: 16px;
+//         font-weight: bold;
+//         color: #d3b374;
+//         line-height: 24px;
+//         position: absolute;
+//         right: 16px;
+//         top: 10px;
+//     }
+// }
+// .tabs {
+//     .flex();
+//     .tab-item {
+//         line-height: 50px;
+//         flex-grow: 1;
+//         background: #d3b374;
+//         font-size: 14px;
+//         color: #f5f7fa;
+//         text-align: center;
+//         position: relative;
+
+//         &.active {
+//             color: #fff;
+//             font-weight: bold;
+//             &::after {
+//                 content: '';
+//                 width: 16px;
+//                 height: 2px;
+//                 background: #ffffff;
+//                 border-radius: 2px;
+//                 position: absolute;
+//                 left: 50%;
+//                 bottom: 8px;
+//                 transform: translateX(-50%);
+//             }
+//         }
+//     }
+// }
+// .tab-title {
+//     padding: 0 16px 12px;
+//     font-size: 14px;
+//     color: #939599;
+//     line-height: 24px;
+// }
+// .bg {
+//     background-color: #d3b374;
+//     padding-top: 10px;
+//     .van-image {
+//         display: block;
+//     }
+//     position: relative;
+//     .total-price {
+//         position: absolute;
+//         top: 50%;
+//         left: 50%;
+//         transform: translate(-50%, -50%);
+//         color: #fff;
+//         .text1 {
+//             font-size: 12px;
+//             color: #ffffff;
+//             line-height: 17px;
+//             text-align: center;
+//         }
+//         .text2 {
+//             font-size: 32px;
+//             font-family: OSP-DIN, OSP;
+//             color: #ffffff;
+//             line-height: 32px;
+//             margin-top: 5px;
+//             text-align: center;
+//         }
+//     }
+// }
+
+// .text3 {
+//     font-size: 12px;
+//     color: #939599;
+//     line-height: 17px;
+//     margin-top: 6px;
+//     span + span {
+//         margin-left: 20px;
+//     }
+// }
 </style>

+ 94 - 99
src/views/user/accountSecurity.vue

@@ -1,116 +1,111 @@
 <template>
-    <!-- 顶部导航栏 -->
-    <van-nav-bar class="navBar" :fixed="true">
-            <template #left>
-                <div @click="$router.go(-1)">
-                    <van-icon name="cross" size="18" color="#333333"/>
-                </div>
-            </template>
-            <template #right>
-                <van-icon name="ellipsis" size="18" color="#333333"/>
-            </template>
-    </van-nav-bar>
-    <div class="content">
-        <div class="account_security">账户安全</div>
-        <div class="modify_list" v-for="(item,index) in modifyList" :key="index">
-            <div class="modify_list_title">{{item.title}}</div>
-            <img :src="item.img" alt="" class="modify_list_img">
-        </div>
-        <div class="log_out">
-            <div class="log_out_con">退出登录</div>
-        </div>
-        <div class="cancellation_of_account">注销账户</div>
-    </div>
+    <van-image width="100%" :src="require('@assets/yaoqingtupian.png')" fit="cover" class="hold_privileged_information_con_img" />
+    <!-- <div class="news-btn btns-only"> -->
+        <!-- https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/image/2022-05-14-12-33-10fKfpWPti.jpg -->
+            <!-- <div class="share-content" @click="like">
+                <img v-if="info.liked" src="../../assets/like.png" alt="" />
+                <img v-else src="../../assets/icon-dianzan1.png" alt="" />
+                <span>{{ info.likes }}</span>
+            </div> -->
+            <!-- <div class="share-content" @click="share">
+                <img src="../../assets/icon-fenxiang.png" alt="" />
+                <span>分享</span>
+            </div> -->
+        <!-- </div> -->
 </template>
 
 <script>
+import resolveUrl from 'resolve-url';
 export default {
-    data(){
-        return{
-            modifyList: [
-                {
-                    title: "修改登录密码",
-                    img: require('@assets/icon_inter.png')
-                },
-                {
-                    title: "修改支付密码",
-                    img: require('@assets/icon_inter.png')
+    data() {},
+    computed: {
+        shareText() {
+            return `${resolveUrl(this.$baseUrl, '9th//mineAccountSecurity')}`;
+        }
+    },
+    methods: {
+        like() {
+            this.checkLogin().then(() => {
+                if (this.info.liked) {
+                    this.$http.get(`newsLike/${this.info.id}/unlike`).then(res => {
+                        this.$toast.success('取消成功');
+                        this.info.liked = false;
+                        this.info.likes--;
+                    });
+                } else {
+                    this.$http.get(`newsLike/${this.info.id}/like`).then(res => {
+                        this.$toast.success('点赞成功');
+                        this.info.liked = true;
+                        this.info.likes++;
+                    });
+                }
+            });
+        },
+        share() {
+            this.$copyText(this.shareText).then(
+                e => {
+                    this.$dialog.alert({
+                        title: '链接已复制',
+                        message: this.shareText,
+                        confirmButtonText: '去微信粘贴给好友'
+                    });
+                    console.log(e);
                 },
-                {
-                    title: "修改手机号",
-                    img: require('@assets/icon_inter.png')
+                e => {
+                    this.$toast('复制失败');
+                    console.log(e);
                 }
-            ]
+            );
         }
     }
 };
 </script>
 
 <style lang="less" scoped>
-    .navBar{
-        width: 100%;
-        height: 44px;
-    }
-    .content{
-        margin-top: 44px;
-        padding: 16px 10px;
-        box-sizing: border-box;
-        width: 100%;
-        height: 100%;
-        position: absolute;
-        background: #0F0F27;
-        .account_security{
-            margin-left: 6px;
-            font-size: 20px;
-            font-family: PingFangSC-Medium, PingFang SC;
-            font-weight: 500;
-            color: #FFFFFF;
-            margin-bottom: 20px;
-        }
-        .modify_list{
-            height: 52px;
-            background: #29293F;
-            border-radius: 8px;
-            padding: 14px 12px;
-            box-sizing: border-box;
-            display: flex;
-            justify-content: space-between;
-            margin-bottom: 10px;
-            .modify_list_title{
-                font-size: 12px;
-                font-family: PingFangSC-Regular, PingFang SC;
-                font-weight: 400;
-                color: #FFFFFF;
-                margin-top: 4px;
-            }
-            .modify_list_img{
-                width: 24px;
-                height: 24px;
-            }
-        }
-        .log_out{
-            margin-top: 90px;
-            padding: 0 58px;
-            box-sizing: border-box;
-            margin-bottom: 264px;
-            .log_out_con{
-                height: 40px;
-                border-radius: 8px;
-                border: 1px solid #939599;
-                font-size: 16px;
-                font-family: PingFangSC-Medium, PingFang SC;
-                font-weight: 500;
-                color: #939599;
-                line-height: 40px;
-                text-align: center;
-            }
-        }
-        .cancellation_of_account{
-            font-size: 14px;
-            font-family: PingFangSC-Medium, PingFang SC;
-            font-weight: 500;
+.news-btn {
+    position: fixed;
+    z-index: 20;
+    background: @bg3;
+    padding: 9px 16px 9px 16px;
+    .flex();
+    left: 0;
+    right: 0;
+    bottom: 0;
+    .bottom(9px);
+
+    /deep/.van-button {
+        &.van-button--disabled {
+            background: #303133;
             color: #939599;
-            text-align: center;
+            opacity: 1;
         }
     }
+
+    .van-button + .share-content {
+        margin-left: 20px;
+    }
+}
+.share-content {
+    .flex();
+    justify-content: center;
+    white-space: nowrap;
+    min-width: 60px;
+    img {
+        width: 24px;
+        height: 24px;
+        display: block;
+    }
+    span {
+        font-size: 14px;
+        color: #939599;
+        margin-left: 3px;
+        line-height: 32px;
+    }
+}
+
+.btns-only {
+    .share-content {
+        width: 50%;
+    }
+}
 </style>

+ 89 - 53
src/views/user/myLove.vue

@@ -1,47 +1,64 @@
 <template>
     <!-- <TopNavigation/> -->
-    <div class="content" :class="showList.length<5? 'shop_list_one' : ''">
-        <van-sticky :offset-top="0">
-            <div class="content_top">我喜欢的</div>
-        </van-sticky>
-        <div class="current_recommendation">
-            <template v-for="(item, index) in showList" :key="index">
-                <CollectionList v-model:info="list[item.index]" @update:info="init"></CollectionList>
-            </template>
-        </div>
-        <van-empty
-                v-if="showList.length === 0"
-                description="你还没有点赞哦~"
-                :image="require('@assets/kong_png_dianzan.png')"
-        />
+    <div class="content_farter">
+        <van-pull-refresh
+            class="load_refresh"
+            success-text="加载成功"
+            success-duration="1000"
+            v-model="isLoading"
+            @refresh="onRefresh"
+        >
+            <div class="content">
+                <van-sticky :offset-top="bar.value && bar.value.show ? 46 : 0">
+                    <div class="content_top">我喜欢的</div>
+                </van-sticky>
+                <div class="current_recommendation">
+                    <template v-for="(item, index) in showList" :key="index">
+                        <CollectionList v-model:info="list[item.index]" @update:info="init"></CollectionList>
+                    </template>
+                </div>
+                <van-empty
+                    v-if="showList.length === 0"
+                    description="你还没有喜欢的藏品哦~"
+                    :image="require(`@assets/storage_room_icon_01.png`)"
+                >
+                </van-empty>
+                <div class="go_stroll" v-if="showList.length === 0">
+                    <van-button class="h44" size="small" color="#28B6FF" :round="true" to="/">去逛逛</van-button>
+                </div>
+            </div>
+        </van-pull-refresh>
     </div>
 </template>
 
 <script>
-import CollectionList from "../../components/CollectionList.vue"
+import CollectionList from '../../components/CollectionList.vue';
+import product from '../../mixins/product';
 // import TopNavigation from "../../components/TopNavigation.vue"
 // import ProductInfo from '../../components/product/productInfo.vue';
 export default {
-    components:{
-        CollectionList,
+    mixins: [product],
+    inject: ['bar'],
+    components: {
+        CollectionList
         // TopNavigation,
         // ProductInfo
-        },
+    },
     data() {
         return {
             list: [],
             empty: false,
+            isLoading: true
         };
     },
     computed: {
         showList() {
-            return [...this.list]
-                .map((item, index) => {
-                    return {
-                        ...item,
-                        index
-                    };
-                })
+            return [...this.list].map((item, index) => {
+                return {
+                    ...item,
+                    index
+                };
+            });
         }
     },
     mounted() {
@@ -62,40 +79,59 @@ export default {
         },
         change() {
             this.$root.$el.scrollTop = 0;
+        },
+        onRefresh() {
+            Promise.all([this.init()]).then(res => {
+                this.isLoading = false;
+            });
         }
     }
-}
+};
 </script>
 
 <style lang="less" scoped>
-    .content{
+.content_farter {
+    background: #0a0a1b;
+}
+.load_refresh {
+    background: #0a0a1b;
+}
+.go_stroll{
+    width: 100%;
+    padding: 0px 48px;
+    box-sizing: border-box;
+}
+/deep/ .van-button{
+    width: 100%;
+    height: 38px;
+    font-weight: 500;
+    font-size: 16px;
+}
+.content {
+    width: 100%;
+    // height: 100%;
+    background: #0a0a1b;
+    .content_top {
         width: 100%;
-        // height: 100%;
-        // position: absolute;
-        background: #0A0A1B;
-        // margin-top: 44px;
-        .content_top{
-            width: 100%;
-            padding: 16px;
-            box-sizing: border-box; 
-            background: #15152D;
-            font-size: 16px;
-            font-family: PingFangSC-Medium, PingFang SC;
-            font-weight: 500;
-            color: #FFFFFF;
-        }
-        .current_recommendation{
-            width: 100%;
-            display: flex;
-            justify-content: space-between;
-            flex-wrap: wrap;
-            padding: 16px;
-            box-sizing: border-box;
-
-        }
+        padding: 16px;
+        box-sizing: border-box;
+        background: #15152d;
+        font-size: 16px;
+        font-family: PingFangSC-Medium, PingFang SC;
+        font-weight: 500;
+        color: #ffffff;
     }
-    .shop_list_one{
-        height: 100%;
-        position: absolute;
+    .current_recommendation {
+        width: 100%;
+        display: flex;
+        justify-content: space-between;
+        flex-wrap: wrap;
+        padding: 16px;
+        box-sizing: border-box;
     }
+}
+// .shop_list_one{
+//     height: 100%;
+//     position: absolute;
+// }
 </style>

+ 1 - 1
src/views/user/myOrder.vue

@@ -3,7 +3,7 @@
     <TopNavigation/>
     <!-- 我的列表 -->
     <div class="content">
-        <van-sticky :offset-top="44">
+        <van-sticky :offset-top="bar.value && bar.value.show ? 46 : 0">
             <div class="my_list">
                 <div class="my_list_con">我的订单</div>
                 <!-- 标签页展示切换 -->

+ 4 - 4
upload.js

@@ -4,10 +4,10 @@ const fs = require('fs');
 const path = require('path');
 
 let client = new OSS({
-    region: 'oss-cn-shenzhen',
-    accessKeyId: 'LTAI5tPoBCiEMSDaS1Q4HKr9',
-    accessKeySecret: 'F8ZNiqdH35T7gikBkn6Fq8tgbvdY88',
-    bucket: 'raex-meta'
+    region: 'oss-cn-hangzhou',
+    accessKeyId: 'LTAI5tMpp8WrkmTPzZ5CPDMb',
+    accessKeySecret: 'D3wIrtL1Y3MSRwqodpRvSdLVvbrAnW',
+    bucket: 'nanjingnft'
 });
 
 class UploadCDNPlugin {

+ 3 - 3
vue.config.js

@@ -7,10 +7,10 @@ switch (process.env.NODE_ENV) {
         publicPath = '/';
         break;
     case 'production':
-        publicPath = `https://cdn.raex.vip/www/` + new Date().getTime();
+        publicPath = `https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/www/` + new Date().getTime();
         break;
     case 'test':
-        publicPath = `https://cdn.raex.vip/www_test/` + new Date().getTime();
+        publicPath = `https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/www_test/` + new Date().getTime();
         break;
 }
 module.exports = {
@@ -27,7 +27,7 @@ module.exports = {
     },
     chainWebpack: config => {
         if (process.env.NODE_ENV === 'production') {
-            config.plugin('upload').use(new UploadPlugin(publicPath.replace('https://cdn.raex.vip/', '')));
+            config.plugin('upload').use(new UploadPlugin(publicPath.replace('https://nanjingnft.oss-cn-hangzhou.aliyuncs.com/', '')));
         }
         config.output.filename('[name].[hash].js').end();
         config.resolve.alias.set('@assets', path.resolve(__dirname, 'src', 'assets'));