Browse Source

Merge branch 'master' of http://git.izouma.com/xiongzhu/raex_front into 拍卖

panhui 3 years ago
parent
commit
fe3ad27fe2

+ 60 - 55
package-lock.json

@@ -1742,6 +1742,11 @@
                 "@popperjs/core": "^2.9.2"
             }
         },
+        "@vant/touch-emulator": {
+            "version": "1.4.0",
+            "resolved": "https://registry.npmjs.org/@vant/touch-emulator/-/touch-emulator-1.4.0.tgz",
+            "integrity": "sha512-Zt+zISV0+wpOew2S1siOJ3G22y+hapHAKmXM+FhpvWzsRc4qahaYXatCAITuuXt0EcDp7WvEeTO4F7p9AtX/pw=="
+        },
         "@vant/use": {
             "version": "1.3.5",
             "resolved": "https://registry.npmjs.org/@vant/use/-/use-1.3.5.tgz",
@@ -2049,17 +2054,6 @@
                     "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==",
                     "dev": true
                 },
-                "chalk": {
-                    "version": "4.1.2",
-                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-                    "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "ansi-styles": "^4.1.0",
-                        "supports-color": "^7.1.0"
-                    }
-                },
                 "debug": {
                     "version": "4.3.3",
                     "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
@@ -2080,25 +2074,6 @@
                         "universalify": "^0.1.0"
                     }
                 },
-                "has-flag": {
-                    "version": "4.0.0",
-                    "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-                    "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-                    "dev": true,
-                    "optional": true
-                },
-                "loader-utils": {
-                    "version": "2.0.2",
-                    "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz",
-                    "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "big.js": "^5.2.2",
-                        "emojis-list": "^3.0.0",
-                        "json5": "^2.1.2"
-                    }
-                },
                 "ms": {
                     "version": "2.1.2",
                     "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -2113,28 +2088,6 @@
                     "requires": {
                         "minipass": "^3.1.1"
                     }
-                },
-                "supports-color": {
-                    "version": "7.2.0",
-                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-                    "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "has-flag": "^4.0.0"
-                    }
-                },
-                "vue-loader-v16": {
-                    "version": "npm:vue-loader@16.8.3",
-                    "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
-                    "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
-                    "dev": true,
-                    "optional": true,
-                    "requires": {
-                        "chalk": "^4.1.0",
-                        "hash-sum": "^2.0.0",
-                        "loader-utils": "^2.0.0"
-                    }
                 }
             }
         },
@@ -4442,8 +4395,7 @@
         "cropperjs": {
             "version": "1.5.12",
             "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.12.tgz",
-            "integrity": "sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw==",
-            "dev": true
+            "integrity": "sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw=="
         },
         "croppie": {
             "version": "2.6.5",
@@ -13337,6 +13289,60 @@
                 }
             }
         },
+        "vue-loader-v16": {
+            "version": "npm:vue-loader@16.8.3",
+            "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz",
+            "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==",
+            "dev": true,
+            "optional": true,
+            "requires": {
+                "chalk": "^4.1.0",
+                "hash-sum": "^2.0.0",
+                "loader-utils": "^2.0.0"
+            },
+            "dependencies": {
+                "chalk": {
+                    "version": "4.1.2",
+                    "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+                    "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+                    "dev": true,
+                    "optional": true,
+                    "requires": {
+                        "ansi-styles": "^4.1.0",
+                        "supports-color": "^7.1.0"
+                    }
+                },
+                "has-flag": {
+                    "version": "4.0.0",
+                    "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+                    "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+                    "dev": true,
+                    "optional": true
+                },
+                "loader-utils": {
+                    "version": "2.0.4",
+                    "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz",
+                    "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==",
+                    "dev": true,
+                    "optional": true,
+                    "requires": {
+                        "big.js": "^5.2.2",
+                        "emojis-list": "^3.0.0",
+                        "json5": "^2.1.2"
+                    }
+                },
+                "supports-color": {
+                    "version": "7.2.0",
+                    "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+                    "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+                    "dev": true,
+                    "optional": true,
+                    "requires": {
+                        "has-flag": "^4.0.0"
+                    }
+                }
+            }
+        },
         "vue-lottie": {
             "version": "0.2.1",
             "resolved": "https://registry.npmjs.org/vue-lottie/-/vue-lottie-0.2.1.tgz",
@@ -13349,7 +13355,6 @@
             "version": "0.5.1",
             "resolved": "https://registry.npmjs.org/vue-picture-cropper/-/vue-picture-cropper-0.5.1.tgz",
             "integrity": "sha512-hHwTRsmpHazd1ZVDZA7hMm2FSAUSfnagi60orxX5qsEhx3dxwb8jOv8weC6pz9YMitQs8US7KTbusi01UeRTkg==",
-            "dev": true,
             "requires": {
                 "cropperjs": "^1.5.12"
             }

+ 1 - 0
package.json

@@ -12,6 +12,7 @@
     "@better-scroll/core": "^2.4.2",
     "@chenfengyuan/vue-qrcode": "^2.0.0-rc.1",
     "@vant/area-data": "^1.1.3",
+    "@vant/touch-emulator": "^1.4.0",
     "@vueuse/core": "^8.7.5",
     "ali-oss": "^6.16.0",
     "axios": "^0.21.4",

+ 14 - 3
public/index.html

@@ -16,9 +16,9 @@
         <meta name="full-screen" content="yes" />
         <meta name="x5-fullscreen" content="true" />
         <meta name="theme-color" content="#000000" />
-        <meta http-equiv="Pragma" content="no-cache">
-        <meta http-equiv="Cache-Control" content="no-cache">
-        <meta http-equiv="Expires" content="0">
+        <meta http-equiv="Pragma" content="no-cache" />
+        <meta http-equiv="Cache-Control" content="no-cache" />
+        <meta http-equiv="Expires" content="0" />
         <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
         <% if (htmlWebpackPlugin.options.app) { %>
         <script src="cordova.js"></script>
@@ -31,6 +31,17 @@
                     url('<%= BASE_URL %>font/iconfont.woff?t=1658717109985') format('woff'),
                     url('<%= BASE_URL %>font/iconfont.ttf?t=1658717109985') format('truetype');
             }
+
+            .filter-gray {
+                /* filter: progid:DXImageTransform.Microsoft.BasicImage(grayscale=1);
+                -webkit-filter: grayscale(100%);
+                -moz-filter: grayscale(100%);
+                -ms-filter: grayscale(100%);
+                -o-filter: grayscale(100%);
+                filter: grayscale(100%);
+                -webkit-filter: gray;
+                filter: gray; */
+            }
         </style>
     </head>
     <body>

+ 16 - 9
src/App.vue

@@ -138,7 +138,7 @@ export default {
             checkEvent: null,
             keeps: [],
             bodyScroll: 0,
-            showSplash: true,
+            showSplash: false,
             setting: false
         };
     },
@@ -147,13 +147,20 @@ export default {
             this.$nextTick(() => {
                 this.$el.scrollTop = 0;
             });
-            if(
-                this.$route.name == 'userSettingComplete' ||
-                this.$route.name == 'userSetting'
-            ){
-                this.setting = true
-            }else{
-                this.setting = false
+            if (this.$route.name == 'userSettingComplete' || this.$route.name == 'userSetting') {
+                this.setting = true;
+            } else {
+                this.setting = false;
+            }
+        }
+    },
+    mounted() {
+        if ('1' !== window.localStorage.getItem('AppSplash')) {
+            this.showSplash = true;
+            window.localStorage.setItem('AppSplash', '1');
+        } else {
+            if (window.cordova && StatusBar) {
+                StatusBar.styleDefault();
             }
         }
     },
@@ -213,7 +220,7 @@ export default {
 .scroll-wrapper {
     background-color: @bg;
 }
-.scroll-wrappers{
+.scroll-wrappers {
     background-color: #272b2e;
 }
 .appSwiper {

BIN
src/assets/banquanshichang@3x.png


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


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


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


BIN
src/assets/icon_dingdan@3x.png


BIN
src/assets/icon_inter@3x (1).png


BIN
src/assets/icon_jiaoyijilu@3x.png


BIN
src/assets/icon_kefuliuyan@3x.png


BIN
src/assets/icon_lingqishangcheng@3x.png


BIN
src/assets/icon_qianbao@3x.png


BIN
src/assets/icon/search@3x.png


BIN
src/assets/info_icon_banquanshichang@3x (1).png


BIN
src/assets/info_icon_banquanshichang@3x.png


BIN
src/assets/info_icon_paimaixilie@3x.png


BIN
src/assets/info_icon_yanshengping@3x.png


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


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


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


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


+ 5 - 5
src/components/AppBar.vue

@@ -100,11 +100,11 @@ export default {
         }
     },
     mounted() {
-        if (this.$route.meta.menuPage) {
-            this.show = false;
-        } else {
-            this.show = true;
-        }
+        // if (this.$route.meta.menuPage) {
+        //     this.show = false;
+        // } else {
+        //     this.show = true;
+        // }
         this.getColor();
         this.setTitle();
     },

+ 1 - 0
src/main.js

@@ -4,6 +4,7 @@ import router from './router';
 import store from './store';
 import Vant from 'vant';
 import { ConfigProvider } from 'vant';
+import '@vant/touch-emulator';
 import 'vant/lib/index.css';
 import './styles/app.less';
 import './styles/font.less';

+ 1 - 1
src/router/index.js

@@ -572,7 +572,7 @@ const routes = [
         name: 'orders',
         component: () => import('../views/order/Orders.vue'),
         meta: {
-            title: '艺术品订单'
+            title: '我的订单'
         }
     },
     {

+ 162 - 80
src/views/Discover.vue

@@ -36,15 +36,70 @@
         </swiper> -->
 
         <div class="menu">
-            <div class="menu-item menu-left" @click="goHall">
-                <div class="text1">
+            <div class="menu-con menu-cons">
+                <div
+                    class="menu-item_con menu-item_con_one"
+                    @click="$router.push('/hopeMarket')"
+                    v-if="!$store.state.review"
+                >
+                    <img :src="require(`@assets/info_icon_banquanshichang@3x.png`)" alt="" class="menu-item_con_img" />
+                    <div>
+                        <div class="menu-item_con_title">元宇宙物资市场</div>
+                        <div class="menu-item_con_text">买卖你的元宇宙资产</div>
+                    </div>
+                    <img :src="require(`@assets/png-yuanyuzhou@3x.png`)" alt="" class="menu-item_con_bg" />
+                </div>
+                <div class="menu-item_con menu-item_con_two" @click="$router.push('/activityList')">
+                    <img
+                        :src="require(`@assets/info_icon_banquanshichang@3x (1).png`)"
+                        alt=""
+                        class="menu-item_con_img"
+                    />
+                    <div>
+                        <div class="menu-item_con_title">铸造合成中心</div>
+                        <div class="menu-item_con_text">虚实结合,探索未知</div>
+                    </div>
+                    <img src="../assets/png-hecheng@3x.png" alt="" class="menu-item_con_bg" />
+                </div>
+                <!-- <div class="text1">
+                    <img src="../assets/info_icon_yishuzhanguan.png" alt="" />
+                    <span>艺术展览</span>
+                </div>
+                <div class="text2">环球捕猎顶级艺术展览,尽在绿洲宇宙!</div>
+                <img src="../assets/discover/yishuzhanlan-diwen.png" alt="" class="menu-bg" /> -->
+            </div>
+            <div class="menu-con">
+                <div class="menu-item_con menu-item_con_three" @click="this.$toast('升级改版中')">
+                    <img :src="require(`@assets/info_icon_paimaixilie@3x.png`)" alt="" class="menu-item_con_img" />
+                    <div>
+                        <div class="menu-item_con_title">绿洲易拍</div>
+                        <div class="menu-item_con_text">精品元宇宙物资与数字艺术品拍卖商</div>
+                    </div>
+                    <img :src="require(`@assets/png-yipai@3x.png`)" alt="" class="menu-item_con_bg" />
+                </div>
+                <div
+                    class="menu-item_con menu-item_con_four"
+                    @click="
+                        goWin(
+                            'https://shop103867459.m.youzan.com/v2/showcase/homepage?alias=Zp3noaegLR&reft=1649311507717_1652343999681&spm=f.100904662_f.100904662_t.1688564850'
+                        )
+                    "
+                >
+                    <img :src="require(`@assets/info_icon_yanshengping@3x.png`)" alt="" class="menu-item_con_img" />
+                    <div>
+                        <div class="menu-item_con_title">艺术衍生品商城</div>
+                        <div class="menu-item_con_text">最酷炫的艺术衍生品集成店快来pick你的精彩!</div>
+                    </div>
+                    <img src="../assets/png-yanshengpin@3x.png" alt="" class="menu-item_con_bg" />
+                </div>
+                <!-- <div class="text1">
                     <img src="../assets/info_icon_yishuzhanguan.png" alt="" />
                     <span>艺术展览</span>
                 </div>
                 <div class="text2">环球捕猎顶级艺术展览,尽在绿洲宇宙!</div>
-                <img src="../assets/discover/yishuzhanlan-diwen.png" alt="" class="menu-bg" />
+                <img src="../assets/discover/yishuzhanlan-diwen.png" alt="" class="menu-bg" /> -->
             </div>
-            <div class="menu-right">
+            <!-- <div class="menu-right">
                 <div class="menu-item" @click="$router.push('/hopeMarket')" v-if="!$store.state.review">
                     <div class="text1">
                         <img src="../assets/discover/info_icon_banquanshichang.png" alt="" />
@@ -68,10 +123,10 @@
                     <div class="text2">最酷炫的艺术衍生品集成店,快来pick你的精彩!</div>
                     <img src="../assets/shangcheng-diwen.png" alt="" class="menu-bg" />
                 </div>
-            </div>
+            </div> -->
         </div>
 
-        <van-grid :border="false" :column-num="$store.state.review ? 2 : 4">
+        <!-- <van-grid :border="false" :column-num="$store.state.review ? 2 : 4">
             <van-grid-item
                 text="绿洲头条"
                 :to="{
@@ -101,13 +156,13 @@
                 <template v-slot:icon>
                     <img class="grid-img" src="@assets/info_icon_weshoushichang.png" />
                 </template>
-            </van-grid-item>
-            <!-- <van-grid-item text="铸造商店" @click="wait">
+            </van-grid-item> -->
+        <!-- <van-grid-item text="铸造商店" @click="wait">
                 <template v-slot:icon>
                     <img class="grid-img" src="@assets/info_icon_zhuzaoshangdian.png" />
                 </template>
             </van-grid-item> -->
-        </van-grid>
+        <!-- </van-grid> -->
 
         <div class="box" ref="box">
             <van-sticky :offset-top="tabOffSet">
@@ -136,16 +191,17 @@
                 :finished="finished"
                 finished-text=""
                 @load="getList"
-                :class="{ hotList: sort === 'hot' }"
+                :class="{ hotList: sort === 'hot' || sort === 'art_Exhibition' }"
                 :immediate-check="false"
             >
-                <template v-for="(item, index) in list" :key="item.id">
+                <template v-for="(item, index) in showList" :key="item.id">
                     <product-info
                         v-if="sort === 'collection' || sort === 'collection_MY'"
                         v-model:info="list[index]"
                         dark
                     ></product-info>
                     <creator-small v-else-if="sort === 'creator'" v-model:info="list[index]"></creator-small>
+                    <show-info v-else-if="sort === 'art_Exhibition'" v-model:info="list[item.index]" list></show-info>
                     <show-info v-else-if="sort === 'hot'" v-model:info="list[index]" list></show-info>
                 </template>
                 <van-empty
@@ -194,16 +250,20 @@ export default {
             sort: 'collection',
             selectOptions: [
                 {
-                    label: '最新发布',
+                    label: '最新',
                     value: 'collection'
                 },
                 {
-                    label: '机构专区',
+                    label: '机构',
                     value: 'creator'
                 },
                 {
-                    label: '个人发布',
+                    label: '个人',
                     value: 'collection_MY'
+                },
+                {
+                    label: '展览',
+                    value: 'art_Exhibition'
                 }
             ],
             icons: [
@@ -219,6 +279,23 @@ export default {
     computed: {
         tabOffSet() {
             return Number((this.safeTop || '0').replace('px', '')) + 50;
+        },
+        showList() {
+            if (this.sort === 'art_Exhibition') {
+                let list = [...this.list];
+                return list
+                    .map((item, index) => {
+                        return {
+                            ...item,
+                            index: index
+                        };
+                    })
+                    .filter(item => {
+                        return item.collections && item.collections.length > 0;
+                    });
+            } else {
+                return this.list;
+            }
         }
     },
     mounted() {
@@ -348,6 +425,15 @@ export default {
                     type: 'MINTER',
                     del: false
                 };
+            } else if (this.sort === 'art_Exhibition') {
+                url = 'showroom/all';
+                query = {
+                    del: false,
+                    status: 'SUCCESS',
+                    publish: true,
+                    type: ''
+                };
+                sort = 'heats,desc';
             } else if (this.sort === 'hot') {
                 url = 'showroom/all';
                 query = {
@@ -532,76 +618,70 @@ export default {
 }
 
 .menu {
-    .flex();
-    padding: 16px 16px 0;
-    justify-content: space-between;
-    .menu-item {
-        width: calc(50vw - 16px);
-        box-sizing: border-box;
-        position: relative;
-        padding: 8px;
-        background: linear-gradient(132deg, #3dbb00 0%, #01d890 100%);
-        border-radius: 6px 8px 8px;
-
-        .text1 {
-            .flex();
-            img {
-                width: 18px;
-                height: 18px;
+    padding: 16px 16px 16px;
+    .menu-con {
+        display: flex;
+        justify-content: space-between;
+        .menu-item_con {
+            width: calc(50vw - 22.5px);
+            height: 66px;
+            display: flex;
+            position: relative;
+            padding: 0px 10px;
+            box-sizing: border-box;
+            align-items: center;
+            border-radius: 8px;
+            .menu-item_con_img {
+                width: 32px;
+                height: 32px;
+                margin-right: 4px;
             }
-            span {
+            .menu-item_con_title {
                 font-size: 14px;
+                font-family: PingFangSC-Semibold, PingFang SC;
                 font-weight: bold;
                 color: #ffffff;
-                line-height: 24px;
-                margin-left: 2px;
+                line-height: 14px;
+                text-shadow: 0px 0px 4px rgba(0, 0, 0, 0.8);
+                margin-bottom: 4px;
+                position: relative;
+                z-index: 11;
+            }
+            .menu-item_con_text {
+                font-size: 9px;
+                font-family: PingFangSC-Medium, PingFang SC;
+                font-weight: bold;
+                color: rgba(255, 255, 255, 0.8);
+                line-height: 12px;
+                text-shadow: 0px 0px 4px rgba(0, 0, 0, 0.6);
+                position: relative;
+                z-index: 11;
+            }
+            .menu-item_con_bg {
+                position: absolute;
+                width: 100%;
+                height: 100%;
+                top: 0;
+                right: 0;
             }
         }
-
-        .text2 {
-            font-size: 10px;
-            color: rgba(255, 255, 255, 0.8);
-            line-height: 12px;
-            margin-top: 6px;
-        }
-
-        .menu-bg {
-            position: absolute;
-            right: 0;
-            top: 0;
-            width: 54px;
-            height: 34px;
+        .menu-item_con_one {
+            background: #10e63b;
         }
-    }
-    .menu-left + .menu-right {
-        margin-left: 12px;
-    }
-    .menu-left {
-        align-self: stretch;
-        .menu-bg {
-            width: 100%;
-            height: 100%;
+        .menu-item_con_two {
+            background: #c501e6;
         }
-
-        background: linear-gradient(136deg, #0bc734 0%, #0ed0d8 100%);
-    }
-    .menu-right {
-        .menu-item + .menu-item {
-            margin-top: 12px;
+        .menu-item_con_three {
+            background: #f18b1d;
         }
-
-        .menu-item {
-            &:nth-child(1) {
-                background: linear-gradient(132deg, #6c7df9 0%, #87acf0 100%);
-            }
-
-            &:nth-child(2) {
-                background: linear-gradient(132deg, #2f87d7 0%, #0ad2e6 100%);
-            }
+        .menu-item_con_four {
+            background: #1a7bd3;
         }
     }
+    .menu-cons {
+        margin-bottom: 12px;
+    }
 }
-
 .grid-img {
     display: block;
     width: 32px;
@@ -660,25 +740,27 @@ export default {
 
 /deep/.van-tab {
     color: #fff;
-    flex: 0;
+    // flex: 0;
     // padding: 20px;
     flex-shrink: 0;
     // min-width: 74px;
     font-size: 16px;
-    margin-right: 30px !important;
+    flex-grow: 1 !important;
+    margin-right: 0 !important;
+    // margin-right: 30px !important;
     &.van-tab--active {
         color: @prim;
     }
 }
+/deep/.van-tab:last-child {
+    margin-right: 0px !important;
+}
 .casting {
     padding-bottom: 10px;
 }
-.van-tabs {
-    border-top: 2px solid #373b3e;
-}
-/deep/.van-tab {
-    margin-right: 0;
-}
+// .van-tabs {
+//     border-top: 2px solid #373b3e;
+// }
 
 /deep/.van-sticky--fixed {
     background-color: #272b2e;

+ 68 - 21
src/views/Home.vue

@@ -1,6 +1,6 @@
 <template>
     <van-pull-refresh
-        class="home"
+        class="home filter-gray"
         success-text="加载成功"
         success-duration="500"
         v-model="isLoading"
@@ -35,7 +35,7 @@
                     <product-small :info="item"></product-small>
                 </swiper-slide>
             </swiper>
-            <van-grid :column-num="3" :border="false" class="top-grid">
+            <van-grid :column-num="3" :border="false" class="top-grid" v-if="!$store.state.review">
                 <van-grid-item
                     url="https://yags.raex.vip/h5/home"
                     :icon="require('@assets/icon2.png')"
@@ -86,7 +86,10 @@
         <div class="card-list">
             <div
                 class="card card-hot"
-                :style="{ order: index < 1 ? index + 1 : index + 2 }"
+                :style="{
+                    order: index < 1 ? index + 1 : index + 2,
+                    display: item.name === '新手引导' ? 'none' : 'block'
+                }"
                 v-for="(item, index) in hots"
                 :key="index"
                 @click="goNext(item)"
@@ -109,7 +112,15 @@
                     </div>
                 </div>
                 <div class="rank-list">
-                    <swiper
+                    <div class="rankSwiper">
+                        <hot-collect
+                            v-for="(item, index) in HotCollects"
+                            :key="index"
+                            :index="index"
+                            :info="item"
+                        ></hot-collect>
+                    </div>
+                    <!-- <swiper
                         class="rankSwiper"
                         @reachEnd="reachEnd"
                         @slidePrevTransitionStart="slidePrevTransitionStart"
@@ -118,15 +129,9 @@
                         free-mode
                     >
                         <swiper-slide v-for="(item, index) in HotCollects" :key="index">
-                            <!-- <rank-info :index="index" v-model:info="hotUsers[index]"></rank-info> -->
-                            <hot-collect :index="index" :info="item"></hot-collect>
+                           <rank-info :index="index" v-model:info="hotUsers[index]"></rank-info> 
                         </swiper-slide>
-                    </swiper>
-
-                    <div class="rank-more" :style="{ visibility: hideMore ? 'hidden' : 'visible' }">
-                        <van-icon name="icon-a-iconarrowdown1" class-prefix="font_family" />
-                        <div>上滑显示更多</div>
-                    </div>
+                    </swiper> -->
                 </div>
             </div>
 
@@ -169,6 +174,21 @@
                 :type="item.type"
             >
             </product-large>
+
+            <div class="tips-content">
+                <div class="tips">【华储艺术品中心(深圳)有限公司】</div>
+                <a target="_blank" href="https://beian.miit.gov.cn" class="tips1">
+                    <span>粤ICP备2021166549号-1</span>
+                </a>
+                <a
+                    class="tips2"
+                    target="_blank"
+                    href="http://www.beian.gov.cn/portal/registerSystemInfo?recordcode=44030302002216"
+                >
+                    <img src="@assets/icon.png" alt="" />
+                    <p>粤公网安备 44030302002216号</p></a
+                >
+            </div>
         </div>
         <img src="../assets/png-zhiding.png" @click="goTop" class="goTop" v-if="bodyScroll > 200" alt="" />
     </van-pull-refresh>
@@ -366,14 +386,13 @@ export default {
             }
         },
         showRisk() {
-            let show = window.sessionStorage.getItem('riskShow')
-                ? JSON.parse(window.sessionStorage.getItem('riskShow'))
-                : false;
-
-            if (!show) {
-                this.riskShow = true;
-                window.sessionStorage.setItem('riskShow', JSON.stringify(true));
-            }
+            // let show = window.sessionStorage.getItem('riskShow')
+            //     ? JSON.parse(window.sessionStorage.getItem('riskShow'))
+            //     : false;
+            // if (!show) {
+            //     this.riskShow = true;
+            //     window.sessionStorage.setItem('riskShow', JSON.stringify(true));
+            // }
         },
         getInit() {
             // this.$toast.loading({
@@ -421,7 +440,7 @@ export default {
             return this.$http
                 .get('/asset/topTen')
                 .then(res => {
-                    this.HotCollects = res;
+                    this.HotCollects = res.slice(0, 5);
                     return Promise.resolve();
                 })
                 .catch(() => {
@@ -1014,4 +1033,32 @@ export default {
     display: block;
     z-index: 20;
 }
+.tips-content {
+    .flex-col();
+    align-items: center;
+    .tips {
+        padding: 15px 0 0;
+        font-size: 12px;
+        text-align: center;
+        color: #939599;
+    }
+    .tips1 {
+        padding: 5px 0 0;
+        font-size: 12px;
+        text-align: center;
+        color: #939599;
+    }
+
+    .tips2 {
+        font-size: 12px;
+        text-align: center;
+        color: #939599;
+        padding: 20px 0;
+        .flex();
+        justify-content: center;
+        img {
+            margin-right: 3px;
+        }
+    }
+}
 </style>

+ 1 - 0
src/views/Index.vue

@@ -12,6 +12,7 @@
             safe-area-inset-bottom
             route
             ref="tabbar"
+            class="filter-gray"
             :class="tabClass"
         >
             <van-tabbar-item replace v-for="item in menus" :name="item.name" :to="`/${item.name}`" :key="item.name">

+ 160 - 59
src/views/Mine.vue

@@ -15,21 +15,18 @@
                 fit="cover"
                 class="top-img"
             />
-            <template v-if="publishShow">
+            <!-- <template v-if="publishShow">
                 <div class="yinsi" v-if="userInfo.isPublicShow" @click="turnOffPrivacy = true">
                     <img src="@assets/icon-kaiqiyinsi@3x.png" alt="" />
-                    <!-- <span>开启隐私</span> -->
                 </div>
                 <div class="yinsi" v-else @click="turnPrivacy = true">
                     <img src="@assets/icon-guanbiyinsi@3x.png" alt="" />
-                    <!-- <span>关闭隐私</span> -->
                 </div>
             </template>
 
             <div class="edit-btn" @click="$router.push('/setting')">
                 <img src="../assets/icon-bi@3x.png" alt="" />
-                <!-- <span>编辑</span> -->
-            </div>
+            </div> -->
             <div class="userInfo-content">
                 <div class="userInfo-top">
                     <van-image
@@ -133,27 +130,29 @@
                 </div>
             </div>
         </div>
-        <driver />
+        <!-- <driver /> -->
         <div class="orderList">
-            <div class="order-info" @click="$router.push('/orders?type=DEFAULT')">
-                <img src="@assets/info_icon_yishuping.png" alt="" />
-                <span>艺术品订单</span>
-            </div>
-            <div class="order-info" @click="$router.push('/activityOrders')">
-                <img src="@assets/info_icon_zhuzaodingdan.png" alt="" />
-                <span>铸造订单</span>
-            </div>
-            <div class="order-info" @click="goAuction">
-                <img src="@assets/info_icon_paimaidingdan.png" alt="" />
-                <span>拍卖订单</span>
-            </div>
-            <!-- <div class="order-info" @click="this.$toast('升级改版中')">
+            <div class="orderList_con">
+                <div class="order-info" @click="$router.push('/orders')">
+                    <img src="@assets/icon_dingdan@3x.png" alt="" />
+                    <span>我的订单</span>
+                </div>
+                <div class="order-info" @click="$router.push('/mineWallet')">
+                    <img src="@assets/icon_qianbao@3x.png" alt="" />
+                    <span>我的钱包</span>
+                </div>
+                <!-- <div class="order-info" @click="$router.push('/auctionOrders')">
                 <img src="@assets/info_icon_paimaidingdan.png" alt="" />
                 <span>拍卖订单</span>
             </div> -->
+                <div class="order-info" @click="$router.push('/mineExchange')" v-if="!$store.state.review">
+                    <img src="@assets/icon_jiaoyijilu@3x.png" alt="" />
+                    <span>交易历史</span>
+                </div>
+            </div>
         </div>
-        <driver />
-        <div class="orderList prim">
+        <!-- <driver /> -->
+        <!-- <div class="orderList prim">
             <div class="menu-info" :style="{ width: $store.state.review ? '100%' : '50%' }" @click="wait">
                 <img src="@assets/info_icon_lingqishangcheng.png" alt="" />
                 <span>灵气商城</span>
@@ -164,8 +163,59 @@
                 </van-badge>
                 <span>立即邀请</span>
             </div>
+        </div> -->
+        <div class="menus">
+            <div class="menus_list">
+                <div class="menus_list_con" @click="share" v-if="!$store.state.review">
+                    <div class="menus_list_con_left">
+                        <img src="@assets/icon-yaoqing@3x.png" alt="" class="menus_list_con_left_img" />
+                        <span>邀请好友</span>
+                    </div>
+                    <img src="@assets/icon_inter@3x.png" alt="" class="menus_list_con_right_img" />
+                </div>
+                <div class="menus_list_division" v-if="!$store.state.review">
+                    <div class="menus_list_division_con"></div>
+                </div>
+                <div class="menus_list_con" @click="$router.push('/message')" v-if="!$store.state.review">
+                    <div class="menus_list_con_left">
+                        <img src="@assets/icon_kefuliuyan@3x.png" alt="" class="menus_list_con_left_img" />
+                        <span>在线客服</span>
+                    </div>
+                    <img src="@assets/icon_inter@3x.png" alt="" class="menus_list_con_right_img" />
+                </div>
+                <div class="menus_list_division" v-if="!$store.state.review">
+                    <div class="menus_list_division_con"></div>
+                </div>
+                <div class="menus_list_con" @click="wait">
+                    <div class="menus_list_con_left">
+                        <img src="@assets/icon_lingqishangcheng@3x.png" alt="" class="menus_list_con_left_img" />
+                        <span>灵气商城</span>
+                    </div>
+                    <img src="@assets/icon_inter@3x.png" alt="" class="menus_list_con_right_img" />
+                </div>
+                 <div class="menus_list_division">
+                    <div class="menus_list_division_con"></div>
+                </div>
+                <div class="menus_list_con" @click="$router.push('/about')">
+                    <div class="menus_list_con_left">
+                        <img src="@assets/icon-guanyuwomen@3x.png" alt="" class="menus_list_con_left_img" />
+                        <span>关于我们</span>
+                    </div>
+                    <img src="@assets/icon_inter@3x.png" alt="" class="menus_list_con_right_img" />
+                </div>
+                 <div class="menus_list_division">
+                    <div class="menus_list_division_con"></div>
+                </div>
+                <div class="menus_list_con" @click="$router.push('/security')">
+                    <div class="menus_list_con_left">
+                        <img src="@assets/icon-anquan@3x.png" alt="" class="menus_list_con_left_img" />
+                        <span>设置与安全</span>
+                    </div>
+                    <img src="@assets/icon_inter@3x.png" alt="" class="menus_list_con_right_img" />
+                </div>
+            </div>
         </div>
-        <van-grid class="menus">
+        <!-- <van-grid class="menus">
             <van-grid-item v-if="enableWallet" text="我的钱包" :to="{ path: '/mineWallet' }">
                 <template #icon>
                     <van-icon :name="require('@assets/icon_yinhangka.png')" class="search-icon" />
@@ -195,14 +245,14 @@
                 <template #icon>
                     <van-icon :name="require('@assets/info_icon_jiaoyijilu.png')" class="search-icon" />
                 </template>
-            </van-grid-item>
+            </van-grid-item> -->
             <!-- <van-grid-item text="了解更多" :to="{ path: '/question' }">
                 <template #icon>
                     <van-icon :name="require('@assets/icon_liaojiegengduo.png')" class="search-icon" />
                 </template>
             </van-grid-item> -->
 
-            <van-grid-item text="地址管理" :to="{ path: '/mineAddress' }">
+            <!-- <van-grid-item text="地址管理" :to="{ path: '/mineAddress' }">
                 <template #icon>
                     <van-icon :name="require('@assets/icon_dizhi.png')" class="search-icon" />
                 </template>
@@ -217,9 +267,9 @@
                     <van-icon :name="require('@assets/icon-anquan.png')" class="search-icon" />
                 </template>
             </van-grid-item>
-        </van-grid>
+        </van-grid> -->
 
-        <div class="tabbar-placeholder"></div>
+        <!-- <div class="tabbar-placeholder"></div> -->
         <post ref="post" :info="shareProduct" noButton></post>
         <tuan-rank></tuan-rank>
     </van-pull-refresh>
@@ -256,7 +306,7 @@
             </div>
         </template>
     </van-dialog>
-    <van-dialog :show="turnPrivacy" theme="round-button" className="risk">
+    <van-popup :show="turnPrivacy" position="bottom" :style="{ height: '260px',borderTopLeftRadius: '16px',borderTopRightRadius: '16px'}">
         <div class="wrapper">
             <img
                 :src="require('@assets/icon_close@3x.png')"
@@ -276,8 +326,8 @@
             </div>
         </div>
         <template #footer> </template>
-    </van-dialog>
-    <van-dialog :show="turnOffPrivacy" theme="round-button" className="risk">
+    </van-popup>
+    <van-popup :show="turnOffPrivacy" position="bottom" :style="{ height: '260px',borderTopLeftRadius: '16px',borderTopRightRadius: '16px'}">
         <div class="wrapper">
             <img
                 :src="require('@assets/icon_close@3x.png')"
@@ -297,7 +347,7 @@
             </div>
         </div>
         <template #footer> </template>
-    </van-dialog>
+    </van-popup>
 </template>
 
 <script>
@@ -604,7 +654,8 @@ export default {
 }
 .wrapper {
     height: 260px;
-    width: calc(100vw - 115px);
+    width: calc(100vw);
+    // width: calc(100vw - 115px);
     // width: calc(100vw);
     background: #ffffff;
     border-radius: 16px 16px 0px 0px;
@@ -771,10 +822,19 @@ export default {
     }
 }
 .orderList {
-    .flex();
+    width: 100%;
+    padding: 0px 16px;
+    box-sizing: border-box;
+    margin-top: 2px;
+    .orderList_con {
+        width: 100%;
+        background: #2d3134;
+        border-radius: 4px;
+        .flex();
+    }
     // padding: 0 12px;
     .order-info {
-        padding: 16px 0;
+        padding: 16px 0 14px;
         position: relative;
         width: 33%;
         box-sizing: border-box;
@@ -792,25 +852,25 @@ export default {
             // margin-right: 8px;
         }
         span {
-            font-size: 14px;
-            font-weight: bold;
+            font-size: 13px;
+            font-weight: 400;
             color: #ffffff;
             line-height: 24px;
             margin-top: 4px;
         }
     }
-    .order-info + .order-info {
-        // margin-left: 20px;
-        &::before {
-            content: '';
-            width: 1px;
-            background-color: #373b3e;
-            position: absolute;
-            left: -0.5px;
-            top: 0;
-            bottom: 0;
-        }
-    }
+    // .order-info + .order-info {
+    //     // margin-left: 20px;
+    //     &::before {
+    //         content: '';
+    //         width: 1px;
+    //         background-color: #373b3e;
+    //         position: absolute;
+    //         left: -0.5px;
+    //         top: 0;
+    //         bottom: 0;
+    //     }
+    // }
 
     // /deep/.van-badge__wrapper {
     //     width: 50%;
@@ -1149,25 +1209,66 @@ export default {
     }
 }
 .menus {
+    margin-top: 16px;
+    padding: 0px 16px;
+    box-sizing: border-box;
+    padding-bottom: 100px;
+    .menus_list {
+        width: 100%;
+        padding: 16px 0px;
+        background: #2d3134;
+        border-radius: 4px;
+        .menus_list_division {
+            padding: 14px 16px;
+            .menus_list_division_con {
+                height: 1px;
+                background: rgba(255, 255, 255, 0.06);
+            }
+        }
+        .menus_list_con {
+            padding-left: 16px;
+            padding-right: 12px;
+            display: flex;
+            justify-content: space-between;
+            align-items: center;
+            .menus_list_con_left {
+                display: flex;
+                font-size: 13px;
+                font-family: PingFangSC-Regular, PingFang SC;
+                font-weight: 400;
+                color: #ffffff;
+                line-height: 24px;
+                .menus_list_con_left_img {
+                    width: 24px;
+                    height: 24px;
+                    margin-right: 12px;
+                }
+            }
+            .menus_list_con_right_img {
+                width: 24px;
+                height: 24px;
+            }
+        }
+    }
     // margin: 0 16px;
     // background-color: @bg;
     // border-radius: 8px;
     // overflow: hidden;
-    &.van-grid {
-        margin: 0;
-    }
+    // &.van-grid {
+    //     margin: 0;
+    // }
 
-    /deep/.van-grid-item__text {
-        color: #fff;
-    }
+    // /deep/.van-grid-item__text {
+    //     color: #fff;
+    // }
 
-    /deep/.van-grid-item__content:after {
-        border-color: #373b3e;
-    }
+    // /deep/.van-grid-item__content:after {
+    //     border-color: #373b3e;
+    // }
 
-    /deep/&.van-hairline--top:after {
-        border-color: #373b3e;
-    }
+    // /deep/&.van-hairline--top:after {
+    //     border-color: #373b3e;
+    // }
 }
 
 /deep/.auth {

+ 133 - 20
src/views/Store.vue

@@ -13,6 +13,9 @@
                         <div class="btn" :class="{ active: active === 'explore' }" @click="changeActive('explore')">
                             我拥有的
                         </div>
+                        <div class="btn" :class="{ active: active === 'likeIt' }" @click="changeActive('likeIt')">
+                            我喜欢的
+                        </div>
                         <div
                             class="btn"
                             v-if="showRoom"
@@ -38,10 +41,10 @@
                         v-if="isLogin && active !== 'coupon'"
                         @click="$router.push('/assetSearch?status=' + status)"
                     >
+                        <div class="search_division"></div>
                         <img src="@assets/svgs/search.svg" alt="" />
                     </div>
                 </div>
-
                 <van-tabs
                     class="darkTabs"
                     v-model:active="type"
@@ -49,6 +52,7 @@
                     line-height="2"
                     :ellipsis="false"
                     @click="changeTab"
+                    v-if="active != 'likeIt'"
                 >
                     <van-tab
                         :title="item.label"
@@ -66,6 +70,31 @@
                         </template>
                     </van-tab>
                 </van-tabs>
+                <van-tabs
+                    class="darkTabs"
+                    v-model:active="type"
+                    line-width="16"
+                    line-height="2"
+                    :ellipsis="false"
+                    @change="change"
+                    v-else-if="active === 'likeIt'"
+                >
+                    <van-tab
+                        :title="item.label"
+                        :name="item.type"
+                        :title-class="item.type === 'select' && sortDes ? sortDes : ''"
+                        :key="index"
+                        v-for="(item, index) in typeOptionLike"
+                    >
+                        <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-button
@@ -91,6 +120,7 @@
             :finished="finished"
             finished-text=""
             @load="getList"
+            v-if="active != 'likeIt'"
         >
             <template v-for="(item, index) in showList" :key="index">
                 <coupon-info :info="item" v-if="active == 'coupon'"></coupon-info>
@@ -140,6 +170,16 @@
             />
             <img src="../assets/icon_zhiding.png" @click="goTop" class="goTop" v-if="bodyScroll > 100" alt="" />
         </van-list>
+        <div class="list" v-else>
+            <template v-for="(item, index) in showListLike" :key="index">
+                <product-info v-model:info="likeList[item.index]" @update:info="init"></product-info>
+            </template>
+            <van-empty
+                v-if="showListLike.length === 0"
+                description="你还没有点赞哦~"
+                :image="require('@assets/kong_png_dianzan.png')"
+            />
+        </div>
         <van-action-sheet
             ref="action"
             v-model:show="showSelect"
@@ -180,6 +220,7 @@ import CouponInfo from '../components/CouponInfo.vue';
 import asset from '../mixins/asset';
 import coupon from '../mixins/coupon';
 import starAssetInfo from '../components/star/assetInfo.vue';
+import ProductInfo from '../components/product/productInfo.vue';
 export default {
     name: 'store',
     mixins: [asset, coupon],
@@ -189,7 +230,8 @@ export default {
         AssetInfoSe,
         CouponInfo,
         ShowInfo,
-        starAssetInfo
+        starAssetInfo,
+        ProductInfo
     },
     data() {
         return {
@@ -198,6 +240,7 @@ export default {
             type: '',
             empty: false,
             list: [],
+            likeList: [],
             label: '全部',
             showSelect: false,
             actions: [{ name: '选项一' }, { name: '选项二' }, { name: '选项三' }],
@@ -215,7 +258,21 @@ export default {
             assetLoading: false,
             assetFinished: false,
             assetPage: 0,
-            assetList: []
+            assetList: [],
+            typeOptionLike: [
+                {
+                    label: '全部',
+                    type: ''
+                },
+                {
+                    label: '收藏品',
+                    type: 'DEFAULT'
+                },
+                {
+                    label: '数字盲盒',
+                    type: 'BLIND_BOX'
+                }
+            ]
         };
     },
     computed: {
@@ -346,6 +403,18 @@ export default {
                 });
             }
         },
+        showListLike() {
+            return [...this.likeList]
+                .map((item, index) => {
+                    return {
+                        ...item,
+                        index
+                    };
+                })
+                .filter(item => {
+                    return !this.type || this.type === item.type;
+                });
+        },
         sort() {
             return 'createdAt,desc';
         },
@@ -507,13 +576,24 @@ export default {
     methods: {
         showMore(asset) {
             console.log(asset);
-
             this.moreTitle = asset.prefixName;
             this.show = true;
             this.assetLoading = true;
             this.getMoreList(true);
             //
         },
+        init() {
+            this.$toast.loading({
+                message: '加载中...',
+                forbidClick: true
+            });
+            this.empty = false;
+            this.$http.get('/collection/myLikes').then(res => {
+                this.likeList = res;
+                this.empty = res.length === 0;
+                this.$toast.clear();
+            });
+        },
         getMoreList(init = false) {
             if (init) {
                 this.assetList = [];
@@ -659,16 +739,21 @@ export default {
             return form;
         },
         changeActive(active) {
-            this.list = [];
-            this.active = active;
-            this.loading = true;
-            setTimeout(() => {
-                this.$nextTick(() => {
-                    this.type = this.typeOptions[0].type;
-                    this.page = 0;
-                    this.getList();
-                });
-            }, 100);
+            if (active === 'likeIt') {
+                this.init();
+                this.active = active;
+            } else {
+                this.list = [];
+                this.active = active;
+                this.loading = true;
+                setTimeout(() => {
+                    this.$nextTick(() => {
+                        this.type = this.typeOptions[0].type;
+                        this.page = 0;
+                        this.getList();
+                    });
+                }, 100);
+            }
         },
         changeTab(info) {
             if (info.name === 'price') {
@@ -688,6 +773,9 @@ export default {
             this.getList().then(() => {
                 this.isLoading = false;
             });
+        },
+        change() {
+            this.$root.$el.scrollTop = 0;
         }
     }
 };
@@ -696,19 +784,26 @@ export default {
 <style lang="less" scoped>
 .top {
     display: flex;
-    padding: 10px 16px;
     background-color: #222426;
+    width: calc(100vw);
     .top-btn {
-        flex-grow: 1;
+        padding: 10px 16px;
+        padding-right: 0px;
+        width: 100%;
+        height: 50px;
+        box-sizing: border-box;
+        overflow-x: auto;
+        display: flex;
+        align-items: center;
         .btn {
             font-size: @font3;
             line-height: 26px;
             display: inline-block;
             vertical-align: text-bottom;
-            color: #fff;
-
+            color: #939599;
+            flex-shrink: 0;
             &.active {
-                color: @prim2;
+                color: #ffffff;
                 font-size: @font3;
                 font-weight: bold;
             }
@@ -718,8 +813,23 @@ export default {
             margin-left: 20px;
         }
     }
-
     .search {
+        width: 50px;
+        height: 50px;
+        display: flex;
+        align-items: center;
+        padding-left: 10px;
+        box-sizing: border-box;
+        background: #222426;
+        position: relative;
+        .search_division {
+            position: absolute;
+            top: 13px;
+            left: 4px;
+            width: 1px;
+            height: 24px;
+            background-color: #272b2e;
+        }
         img {
             display: block;
         }
@@ -751,6 +861,9 @@ export default {
     min-height: var(--app-height);
     box-sizing: border-box;
 }
+.list {
+    padding: 8px;
+}
 .grid-img {
     display: block;
 }

+ 183 - 1
src/views/account/About.vue

@@ -3,6 +3,7 @@
         <div class="title">关于我们</div>
         <van-cell-group :border="false">
             <van-cell title="平台简介" is-link :to="{ path: '/introduction' }" />
+            <van-cell title="图文介绍" is-link @click="showSplash = true" />
             <van-cell title="了解更多" is-link :to="{ path: '/question' }" />
             <van-cell
                 title="用户协议"
@@ -16,6 +17,7 @@
             />
             <van-cell title="隐私政策" is-link :to="{ path: '/agreement' }" />
             <van-cell title="商务合作" @click="show = true" is-link />
+            <van-cell title="风险提示" is-link @click="riskShow = true" />
         </van-cell-group>
 
         <div class="tips">【华储艺术品中心(深圳)有限公司】</div>
@@ -39,15 +41,73 @@
                 >
             </div>
         </van-overlay>
+
+        <van-dialog v-model:show="riskShow" theme="round-button" className="risk">
+            <div class="risk-box">
+                <img src="@assets/png-bg.png" class="risk-bg" alt="" />
+                <div class="risk-content">
+                    <div class="text1">官方公告</div>
+                    <div class="text2">ANNOUNCEMENT</div>
+                    <div class="text3">
+                        RAEX绿洲宇宙的探索者:法律许可范围内,最终解释权归RAEX绿洲宇宙平台所有,RAEX绿洲宇宙平台有权对宣传内容进行修改、调整,敬请留意最新宣传资料或公告通知。华储艺术品中心(深圳)有限公司进行拍卖的数字艺术品及RAEX绿洲宇宙平台发售的数字艺术品仅具备收藏欣赏、版权价值。RAEX绿洲宇宙发售的数字艺术品首发价格为官方指导价,版权市场拍卖价格均为数字艺术品持有者自行决定,平台不干涉拍卖价格,对发行的艺术品二手市场价格不构成任何指导建议。平台严禁未满22周岁以及超过55周岁的用户注册平台账号及使用相关功能,请各位探索者理性消费,仔细阅读相关权益,切勿盲从、轻信他人谣言,杜绝恶意炒作,远离一切非法行为,切实维护自身财产安全,共同营造健康数字艺术品生态。
+                    </div>
+                </div>
+            </div>
+            <template #footer>
+                <div class="risk-footer">
+                    <van-button block color="#E85C58" @click="riskShow = false">我已知晓</van-button>
+                </div>
+            </template>
+        </van-dialog>
+
+        <swiper
+            v-if="showSplash"
+            pagination
+            @reachEnd="reachEnd"
+            class="appSwiper"
+            :autoplay="{ delay: 3000, disableOnInteraction: false }"
+        >
+            <swiper-slide>
+                <img src="https://cdn.raex.vip/image/splash1.jpg" alt="" />
+            </swiper-slide>
+            <swiper-slide>
+                <img src="https://cdn.raex.vip/image/splash2.jpg" alt="" />
+            </swiper-slide>
+            <swiper-slide>
+                <img src="https://cdn.raex.vip/image/splash3.jpg" alt="" />
+            </swiper-slide>
+            <swiper-slide>
+                <img src="https://cdn.raex.vip/image/splash4.jpg" alt="" />
+            </swiper-slide>
+            <swiper-slide>
+                <img src="https://cdn.raex.vip/image/splash5.jpg" alt="" />
+            </swiper-slide>
+            <swiper-slide>
+                <img src="https://cdn.raex.vip/image/splash6.jpg" alt="" />
+            </swiper-slide>
+            <div class="tiaozhuan" @click="goApp">知道了</div>
+        </swiper>
     </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]);
 export default {
+    components: { Swiper, SwiperSlide },
     data() {
         return {
             codeImg: '',
-            show: false
+            show: false,
+            riskShow: false,
+            showSplash: false
         };
     },
     mounted() {
@@ -56,6 +116,14 @@ export default {
         });
     },
     methods: {
+        reachEnd() {
+            setTimeout(() => {
+                this.goApp();
+            }, 3000);
+        },
+        goApp() {
+            this.showSplash = false;
+        },
         getImgBase64(img2, key) {
             let img = new Image();
             img.crossOrigin = 'anonymous';
@@ -158,4 +226,118 @@ export default {
         margin-right: 3px;
     }
 }
+
+.risk-box {
+    position: relative;
+    img {
+        width: 288px;
+        height: 400px;
+        display: block;
+    }
+
+    .risk-content {
+        position: absolute;
+        top: 0;
+        left: 0;
+        right: 0;
+        .flex-col();
+        align-items: center;
+        .text1 {
+            font-size: 20px;
+            font-family: ZhenyanGB-Regular, ZhenyanGB;
+            color: #3e4293;
+            line-height: 20px;
+            padding: 22px 0 5px;
+            position: relative;
+            &::before {
+                content: '';
+                width: 38px;
+                height: 1px;
+                background: linear-gradient(-90deg, rgba(62, 66, 147, 0.3) 0%, rgba(62, 66, 147, 0.06) 100%);
+                position: absolute;
+                left: -50px;
+                top: 32px;
+            }
+            &::after {
+                content: '';
+                width: 38px;
+                height: 1px;
+                background: linear-gradient(90deg, rgba(62, 66, 147, 0.3) 0%, rgba(62, 66, 147, 0.06) 100%);
+                position: absolute;
+                right: -50px;
+                top: 32px;
+            }
+        }
+        .text2 {
+            font-size: 10px;
+            color: rgba(62, 66, 147, 0.5);
+            line-height: 14px;
+        }
+        .text3 {
+            align-self: stretch;
+            font-size: 14px;
+            font-family: PingFangSC-Regular, PingFang SC;
+            font-weight: 400;
+            color: #1c1c1c;
+            line-height: 24px;
+            margin: 10px 24px;
+            height: 254px;
+            overflow: auto;
+        }
+    }
+}
+
+.risk-footer {
+    padding: 16px 24px 12px;
+    position: absolute;
+    left: 0;
+    right: 0;
+    bottom: 12px;
+    .van-button {
+        border-radius: 8px;
+    }
+}
+
+.appSwiper {
+    position: fixed;
+    width: 100vw;
+    height: 100vh;
+    // height: var(--app-height);
+    top: 0;
+    left: 0;
+    right: 0;
+    bottom: 0;
+    z-index: 9999;
+    object-fit: cover;
+    opacity: 1;
+    transition: opacity 0.8s ease-in-out;
+    background-color: #000;
+    --swiper-theme-color: #fff;
+    .swiper-slide {
+        img {
+            width: 100%;
+            height: 100%;
+            object-fit: cover;
+        }
+    }
+
+    /deep/.swiper-pagination {
+        .fixedBottom(40px);
+    }
+
+    .tiaozhuan {
+        height: 26px;
+        background: rgba(0, 0, 0, 0.3);
+        border-radius: 14px;
+        font-size: 14px;
+        font-weight: 400;
+        color: #ffffff;
+        line-height: 26px;
+        padding: 0 16px;
+        position: fixed;
+        z-index: 30;
+        top: calc(var(--safe-top) + 36px);
+        right: 30px;
+    }
+}
 </style>

+ 120 - 16
src/views/account/Question.vue

@@ -2,27 +2,131 @@
     <div class="page">
         <div class="content">
             <div>
-                <div class="align-center">常见问题</div>
-                <h6>1.什么是数字艺术品?</h6>
+                <div class="align-center">了解更多</div>
+                <h6>Q1:什么是NFT?</h6>
                 <p>
-                    您好~数字艺术品是使用区块链技术进行唯一标识的经数字化的特定作品、艺术品和商品,包括但不限于数字画作、图片、音乐、视频、3D模型等各种形式。数字艺术品作为虚拟数字视频,而非实物,一经售出,不支持退换。每个数字艺术品都映射着特定区块链上的唯一序列号,不可篡改、不可分割,也不能互相替代。每一个数字艺术品都映射着特定作品、艺术品和商品或其限量发售的单个数字复制品,记录着其不可篡改的链上权利。因此数字艺术品与虚拟货币等同质化代币存在本质的不同,有特定作品、艺术品和商品的实际价值做支撑
+                    A1:NFT简称非同质化通证,是一个独特的数字资产。所谓的非同质化通证,就是不可替代的一种可流通的加密数字权益证明,即在智能合约中记录着唯一信息。在区块链上认证后,每个NFT都是独一无二的
                 </p>
-                <h6>2.购买的数字艺术品有什么作用?</h6>
-                <p>您好~已购买的数字艺术品是经过蚂蚁链确权,权属清晰、数量透明,永不增发的藏品,极具收藏价值。</p>
-                <h6>3.如何购买数字艺术品?</h6>
-                <p>您好~购买步骤如下:</p>
-                <p>1)下载RAEX宇宙;</p>
-                <p>2)注册账号;</p>
-                <p>3)浏览首页/发现页中的商品;</p>
-                <p>4)点击“立即购买“,付款;</p>
-                <p>5)付款完成,在藏品室中“我拥有的”栏目下即可看到购买的数字艺术品</p>
-                <h6>4.数字艺术品是否可以退换?</h6>
-                <p>您好~数字艺术品一经售出不支持退换。</p>
+                <h6>Q2:什么是数字商品?</h6>
+                <p>
+                    A2:数字商品是数字经济与元宇宙发展的产物,是基于区块链技术进行唯一标识的数字化文创产品,涵盖绘画、图片、音频、视频、三维模型等多种内容形式。数字商品具有不可篡改、不可分割、不可复制、可追溯等特性,极具收藏价值且是现实资产属性的数字资产。
+                </p>
+                <h6>Q3:数字商品的作用是什么?</h6>
+                <p>A3:</p>
+                <p>1)数字商品是经过区块链确权的,权属清晰、数量透明,永不增发,极具收藏价值</p>
+                <p>
+                    2)数字商品是元宇宙内价值和自我个性化表达的重要媒介,同时,数字商品有助于依虚转实,实现产业赋能和创新。
+                </p>
+                <h6>Q4:数字商品的玩法及逻辑是什么?</h6>
+                <p>A4:</p>
+                <p>1)盲盒玩法</p>
+                <p>盲盒内的每一个数字商品都极具个性化且具有唯一性。</p>
+                <p>2)赋能玩法</p>
+                <p>针对某些IP进行赋能,赋予特殊权益,让藏品具有更大价值。</p>
+                <p>3)合成玩法</p>
+                <p>将一个或多个藏品合成一个全新藏品,合成后原藏品会被销毁,通常新藏品价格会更高。</p>
                 <!-- <h6>5.数字艺术品是否可以售卖与转赠?</h6>
                 <p>您好~售卖与转赠功能将在后续开放,敬请期待。</p> -->
-                <h6>5.当我购买数字艺术品,是否能获得实物?</h6>
+                <h6>Q5:什么是首发市场?</h6>
+                <p>A5:指发行方首次公开发售某一系列藏品。</p>
+
+                <h6>Q6:什么是拍卖市场?</h6>
+                <p>A6:指数字商品日常拍卖流转的市场。</p>
+
+                <h6>Q7:什么是优先购/白名单?</h6>
+                <p>A7:指在公开发售前的指定时间内拥有优先抢购相应藏品数量的资格。</p>
+
+                <h6>Q8:什么是空投?</h6>
+                <p>A8:指平台将官方发行的指定数字商品直接转入至用户的藏品室中。</p>
+
+                <h6>Q9:什么是快照?</h6>
+                <p>A9:指记录某一时刻某一区块高度的区块链状态,即对用户持仓藏品进行一个统计。</p>
+
+                <h6>Q10:PFP头像?</h6>
+                <p>A10:即版权品头像,一种以数字商品形式存在的带有版权性质的头像。</p>
+
+                <h6>Q11:购买数字商品,能否获得实物?</h6>
+                <p>
+                    A11:数字商品是使用区块链技术进行唯一标识的数字化的特定作品、艺术品和商品,在平台后期开放铸造功能时,可以铸造实物商品,RAEX绿洲追求“以虚赋能实体”,为更多的传统商家带来优质的元宇宙体验与服务。
+                </p>
+
+                <h6>Q12:数字商品是否可以退换?</h6>
+                <p>A12:数字商品作为虚拟商品,而非实物,一经售出,不支持退换,请谨慎购买。</p>
+
+                <h6>●平台指南</h6>
+
+                <h6>Q1:怎么购买数字商品?</h6>
+                <p>A1:1)进入绿洲宇宙APP;</p>
+                <p>2)个人主页—我的,点击登录按钮,在暂无RAEX宇宙登陆许可处,点击立即申领完成账号注册;</p>
+                <p>3)浏览首页/发现页中的商品;</p>
+                <p>4)选择心仪的数字商品,点击“立即购买“前往付款;</p>
+                <p>5)付款完成,在藏品室中“我拥有的”栏目下即可看到已购买的数字商品。</p>
+
+                <h6>Q2:持有的数字商品有哪几种操作方式?</h6>
+                <p>A2:1)一口价拍卖</p>
+                <p>2)竞价拍卖</p>
+                <p>3)赠送</p>
+                <p>4)封存</p>
+                <p>5)铸造星图</p>
+                <p>6)销毁数字商品</p>
+
+                <h6>Q3:购入数字商品后多久可以寄售?</h6>
+                <p>A3:购入数字商品后,右下角有个寄售倒计时,会显示寄售时间。</p>
+
+                <h6>Q4:售出的数字商品多久到账?</h6>
+                <p>A4:请先行开通绿魔卡,卖出即刻到账个人帐户余额,自行提现后T+1工作日到账银行卡。</p>
+
+                <h6>Q5:售出的数字商品如何提现?</h6>
+                <p>A5:1)进入APP登录个人账号一我的钱包—申请开通绿魔卡;</p>
+                <p>2)绑定个人银行卡自助提现,每日可提1次;</p>
+
+                <h6>Q6:提现的手续费标准?</h6>
+                <p>A6:从钱包余额提现至银行卡,手续费收取千分之八,单笔手续费不满2元按2元计算。</p>
+
+                <h6>Q7:什么是绿洲石?</h6>
+                <p>
+                    A7:在RAEX绿洲平台内消费1元即可获得对应的1个绿洲石。绿洲石会产生原力,原力是绿洲藏家晋升之路的基础。原力越高,境界与头衔越高。
+                </p>
+
+                <h6>Q8:绿洲版税和手续费是多少?</h6>
+                <p>A8:每个数字商品寄售时都会显示相关费率,请在寄售时查看。</p>
+
+                <h6>Q9:为什么要账号实名认证?</h6>
+                <p>A9:NFT或数字商品是您的私人财产,为保障您的个人权益不受侵犯,需要进行账号实名认证。</p>
+
+                <h6>Q10:账号实名认证要求有哪些?</h6>
+                <p>A10:22-55周岁,证件有效期内,证件照片清晰无遮挡无反光。</p>
+
+                <h6>Q11:一个身份证可以绑定多少个账号?</h6>
+                <p>A11:一个身份证最多可绑定3个账号,申请超额审核不予通过,请勿频繁使用同一证件认证。</p>
+
+                <h6>Q12:没有实名认证,绑定银行卡可以进行正常数字商品购买和出售吗?</h6>
+                <p>A12:没有实名认证可以正常购买数字商品,转赠以及出售数字商品需要实名认证绑定银行卡。</p>
+
+                <h6>Q13:什么是“绿洲链上星图”?</h6>
+                <p>
+                    A13:“绿洲链上星图”是属于每一个人的元宇宙物资铸造中心!
+                    在这里,每一个人都可以铸造自己的元宇宙物资,在 OASISMETA绿洲元宇宙里进行展示与流通!
+                    “绿洲链上星图”也是使用“IPFS全球分布式存储技术”与“区块链确权技术”的永恒纪念之地!在这里,可以自由上传对您拥有重大意义的照片,比如全家福、孩子的满月照、宠物的Q萌形象、团队聚会的瞬间...让这些具有历史意义的照片,在链上永存!
+                </p>
+
+                <h6>Q14:如何生成自己的NFT作品?</h6>
+                <p>A14: 1)进入RAEX绿洲宇宙APP;</p>
+                <p>2)选择下方菜单栏星图按钮;</p>
+                <p>3)点击立即铸造星图;</p>
+                <p>4)通过审核后即可生成自己的NFT作品。</p>
+
+                <h6>Q15:什么是“绿洲易拍”?</h6>
+                <p>A15:RAEX绿洲宇宙拍卖中心将全面升级并更名为“绿洲易拍”!</p>
+                <p>
+                    “绿洲易拍”采用全新的拍卖模式,带来更多有趣的玩法,催生新的产品、新的业态,促进藏家与数字资产进行互动,利用数字技术带动实体经济发展,赋能传统产业升级。
+                </p>
+                <h6>●风险提示</h6>
+                <p>
+                    RAEX绿洲宇宙的探索者:法律许可范围内,最终解释权归RAEX绿洲宇宙平台所有,RAEX绿洲宇宙平台有权对宣传内容进行修改、调整,敬请留意最新宣传资料或公告通知。华储艺术品中心(深圳)有限公司进行拍卖的数字商品及RAEX绿洲宇宙平台发售的数字商品仅具备收藏欣赏、版权价值。
+                </p>
                 <p>
-                    您好~数字艺术品是使用蚂蚁区块链技术进行唯一标识的数字化的特定作品、艺术品和商品,在平台后期开放铸造功能时,可以铸造实物商品。
+                    RAEX绿洲宇宙发售的数字商品首发价格为官方指导价,版权市场拍卖价格均为数字商品持有者自行决定,平台不干涉拍卖价格,对发行的数字商品二手市场价格不构成任何指导建议。平台严禁未满22周岁以及超过55周岁的用户注册平台账号及使用相关功能,请各位探索者理性消费,仔细阅读相关权益,切勿盲从、轻信他人谣言,杜绝恶意炒作,远离一切非法行为,切实维护自身财产安全,共同营造健康数字商品生态
                 </p>
             </div>
         </div>

+ 188 - 4
src/views/account/Security.vue

@@ -1,21 +1,116 @@
 <template>
     <div class="page">
-        <div class="title">账户与安全</div>
+        <div class="title">设置与安全</div>
+        <van-cell-group :border="false" style="margin-bottom: 6px">
+            <van-cell title="元宇宙身份证" value="去编辑" :to="{ path: '/setting' }" is-link />
+            <van-cell title="实名认证" value="去认证" @click="goAuth" is-link v-if="authStatus !== '已认证'" />
+            <van-cell title="实名认证" value="已认证" is-link v-if="authStatus == '已认证'" />
+            <van-cell
+                title="隐私设置"
+                value="当前主页开启状态"
+                @click="turnOffPrivacy = true"
+                is-link
+                v-if="userInfo.isPublicShow"
+            />
+            <van-cell
+                title="隐私设置"
+                value="当前主页关闭状态"
+                @click="turnPrivacy = true"
+                is-link
+                v-if="!userInfo.isPublicShow"
+            />
+            <van-cell title="地址管理" :to="{ path: '/mineAddress' }" is-link />
+        </van-cell-group>
         <van-cell-group :border="false">
             <van-cell title="修改登录密码" :to="{ path: '/forget' }" is-link />
             <van-cell title="修改支付密码" :to="{ path: '/tradingPassword' }" is-link />
             <!-- <van-cell title="修改手机号" :to="{ path: '/changePhone' }" is-link /> -->
             <van-cell title="注销账号" @click="cancel" is-link />
         </van-cell-group>
-        <div class="logout">
-            <van-button type="primary" @click="logout" plain block round>退出登录</van-button>
+        <div class="logout" @click="logout">
+            退出登录
+            <!-- <van-button type="primary" @click="logout" plain block round></van-button> -->
         </div>
     </div>
+    <van-popup :show="turnOffPrivacy" position="bottom" :style="{ height: '260px',borderTopLeftRadius: '16px',borderTopRightRadius: '16px'}" >
+        <div class="wrapper">
+            <img
+                :src="require('@assets/icon_close@3x.png')"
+                alt=""
+                class="privacy_off_img"
+                @click="turnOffPrivacy = false"
+            />
+            <div class="wrapper_img">
+                <img :src="require('@assets/icon-kechakan@3x.png')" alt="" class="privacy_img" />
+            </div>
+            <div class="wrapper_title">隐私设置</div>
+            <div class="wrapper_tip">关闭后,他人将无法查看你主页的任何信息。</div>
+            <div class="wrapper_division"></div>
+            <div class="wrapper_btn">
+                <div class="wrapper_btn_left" @click="changeShow(false)">关闭主页</div>
+                <div class="wrapper_btn_right" @click="turnOffPrivacy = false">保持开启</div>
+            </div>
+        </div>
+        <template #footer> </template>
+    </van-popup>
+     <van-popup :show="turnPrivacy" position="bottom" :style="{ height: '260px',borderTopLeftRadius: '16px',borderTopRightRadius: '16px'}" >
+        <div class="wrapper">
+            <img
+                :src="require('@assets/icon_close@3x.png')"
+                alt=""
+                class="privacy_off_img"
+                @click="turnPrivacy = false"
+            />
+            <div class="wrapper_img">
+                <img :src="require('@assets/icon-wufachakan.png')" alt="" class="privacy_img" />
+            </div>
+            <div class="wrapper_title">隐私设置</div>
+            <div class="wrapper_tip">当前关闭状态,他人将无法查看你主页的任何信息。</div>
+            <div class="wrapper_division"></div>
+            <div class="wrapper_btn">
+                <div class="wrapper_btn_left" @click="turnPrivacy = false">保持关闭</div>
+                <div class="wrapper_btn_right" @click="changeShow(true)">开启主页</div>
+            </div>
+        </div>
+        <template #footer> </template>
+    </van-popup>
 </template>
 
 <script>
+import { mapState } from 'vuex';
 export default {
+    computed: {
+        ...mapState(['userInfo'])
+    },
+    data() {
+        return {
+            faceAuth: false,
+            turnOffPrivacy: false,
+            turnPrivacy: false
+        };
+    },
+    mounted() {
+        this.$http.get('/sysConfig/get/share_lvzhoushi_num,enable_wallet,enable_face_auth').then(res => {
+            this.faceAuth = res['enable_face_auth'].value === '1';
+        });
+    },
     methods: {
+        goAuth() {
+            if (this.authStatus === '认证中' || this.authStatus === '认证失败') {
+                this.$router.push('/waiting');
+            } else if (this.authStatus === '未认证') {
+                if (this.faceAuth) {
+                    this.$router.push('/faceAuth');
+                } else {
+                    this.$router.push('/verified');
+                }
+            }
+        },
+        changeShow(isPublicShow) {
+            this.turnPrivacy = false;
+            this.turnOffPrivacy = false;
+            this.updateUser({ isPublicShow: isPublicShow });
+        },
         logout() {
             this.$dialog
                 .confirm({
@@ -63,9 +158,98 @@ export default {
     padding: 23px 16px;
 }
 .logout {
-    padding: 50px 30px 50px;
+    padding-top: 40px;
+    font-size: 14px;
+    font-family: PingFangSC-Medium, PingFang SC;
+    font-weight: bold;
+    color: #3ab200;
+    line-height: 24px;
+    text-align: center;
+    background-color: #ffffff;
+    padding-bottom: 150px;
 }
 .van-button {
     border-width: 1px;
 }
+.wrapper {
+    height: 260px;
+    width: calc(100vw);
+    // width: calc(100vw);
+    background: #ffffff;
+    border-radius: 16px 16px 0px 0px;
+    position: relative;
+    position: absolute;
+    .privacy_off_img {
+        width: 24px;
+        height: 24px;
+        position: absolute;
+        top: 16px;
+        right: 16px;
+    }
+    .wrapper_img {
+        display: flex;
+        justify-content: center;
+        .privacy_img {
+            width: 64px;
+            height: 64px;
+            padding-top: 22px;
+        }
+    }
+    .wrapper_title {
+        font-size: 16px;
+        font-family: PingFangSC-Medium, PingFang SC;
+        font-weight: bold;
+        color: #000000;
+        line-height: 24px;
+        margin-top: 4px;
+        margin-bottom: 8px;
+        text-align: center;
+    }
+    .wrapper_tip {
+        padding: 0px 16px;
+        font-size: 14px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 400;
+        color: #939599;
+        line-height: 20px;
+        text-align: center;
+        margin-bottom: 28px;
+    }
+    .wrapper_division {
+        width: 100%;
+        height: 1px;
+        background: #f2f4f5;
+        margin-bottom: 9px;
+    }
+    .wrapper_btn {
+        padding: 0px 16px;
+        display: flex;
+        justify-content: space-between;
+        .wrapper_btn_left {
+            width: calc(50vw - 26.5px);
+            height: 38px;
+            border-radius: 22px;
+            border: 1px solid #939599;
+            box-sizing: border-box;
+            font-size: 16px;
+            font-family: PingFangSC-Medium, PingFang SC;
+            font-weight: bold;
+            color: #939599;
+            line-height: 38px;
+            text-align: center;
+        }
+        .wrapper_btn_right {
+            width: calc(50vw - 26.5px);
+            height: 38px;
+            background: #3ab200;
+            border-radius: 22px;
+            font-size: 16px;
+            font-family: PingFangSC-Medium, PingFang SC;
+            font-weight: 500;
+            color: #ffffff;
+            line-height: 38px;
+            text-align: center;
+        }
+    }
+}
 </style>

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

@@ -68,11 +68,11 @@
             <div class="setting_listTwo">
                 <div class="setting_listTwo_con">
                     <div class="setting_listTwo_con_num">{{ info.nftCount || 0 }}</div>
-                    <div class="setting_listTwo_con_title">持有总量</div>
+                    <div class="setting_listTwo_con_title">NFT总量</div>
                 </div>
                 <div class="setting_listTwo_con">
                     <div class="setting_listTwo_con_num">{{ info.buildCount || 0 }}</div>
-                    <div class="setting_listTwo_con_title">建筑总量</div>
+                    <div class="setting_listTwo_con_title">角色总量</div>
                 </div>
                 <div class="setting_listTwo_con">
                     <div class="setting_listTwo_con_num">{{ info.plotCount || 0 }}</div>
@@ -80,19 +80,19 @@
                 </div>
                 <div class="setting_listTwo_con">
                     <div class="setting_listTwo_con_num">{{ info.fansCount || 0 }}</div>
-                    <div class="setting_listTwo_con_title">粉丝总量</div>
+                    <div class="setting_listTwo_con_title">建筑总量</div>
                 </div>
                 <div class="setting_listTwo_con">
                     <div class="setting_listTwo_con_num">{{ info.reikiCount || 0 }}</div>
-                    <div class="setting_listTwo_con_title">灵气总量</div>
+                    <div class="setting_listTwo_con_title">粉丝总量</div>
                 </div>
                 <div class="setting_listTwo_con">
                     <div class="setting_listTwo_con_num">{{ info.medalCount || 0 }}</div>
-                    <div class="setting_listTwo_con_title">徽章总量</div>
+                    <div class="setting_listTwo_con_title">灵气总量</div>
                 </div>
                 <div class="setting_listTwo_con">
                     <div class="setting_listTwo_con_num">{{ info.personalheatCount || 0 }}</div>
-                    <div class="setting_listTwo_con_title">个人热力值</div>
+                    <div class="setting_listTwo_con_title">徽章总量</div>
                 </div>
             </div>
             <div class="setting_listThree">

+ 9 - 3
src/views/activity/ChooseProduct.vue

@@ -246,7 +246,6 @@ export default {
             let list = [...this.list];
             let nots = [...this.nots];
             let _map = new Map();
-            console.log(list);
             list.forEach(item => {
                 let flag = true;
                 nots.forEach(_not => {
@@ -277,13 +276,20 @@ export default {
                     }
                 }
             });
-            console.log(_map);
 
             return [..._map.values()];
         },
         numList() {
             let chooseIds = [...this.chooseIds];
-            let collections = [...this.collections];
+            let collections = [...this.collections]
+                .map(item => {
+                    if (item.collectionInfos) {
+                        return [item, ...item.collectionInfos];
+                    } else {
+                        return item;
+                    }
+                })
+                .flat();
             let nums = [];
             chooseIds.forEach(item => {
                 let info = collections.find(coll => {

+ 85 - 16
src/views/order/Orders.vue

@@ -11,46 +11,75 @@
         <van-sticky ref="top" :offset-top="bar && bar.show ? bar.height : 0">
             <div class="top">
                 <div class="top-btn">
+                    <div class="btn" :class="{ active: type === '' }" @click="changeActive('')">
+                        藏品订单
+                    </div>
                     <div class="btn" :class="{ active: type === 'DEFAULT' }" @click="changeActive('DEFAULT')">
-                        作品订单
+                        铸造订单
                     </div>
-                    <div class="btn" :class="{ active: type === 'BLIND_BOX' }" @click="changeActive('BLIND_BOX')">
-                        盲盒订单
+                    <div class="btn" :class="{ active: type === 'BLI' }" @click="this.$toast('升级改版中')">
+                        绿洲易拍
                     </div>
                 </div>
-                <!-- <div class="search">
-                    <img src="@assets/svgs/search.svg" alt="" />
-                </div> -->
+                <!-- <img src="@assets/icon/search@3x.png" alt="" class="top_img"/> -->
             </div>
 
-            <van-tabs v-model:active="status" :ellipsis="false" line-width="16" line-height="2" @click="changeStatus">
+            <van-tabs
+                v-model:active="status"
+                :ellipsis="false"
+                line-width="16"
+                line-height="2"
+                @click="changeStatus"
+                v-if="type == ''"
+            >
                 <van-tab v-for="(item, index) in tabs" :key="index" :title="item.name" :name="item.status"></van-tab>
             </van-tabs>
+            <van-tabs
+                v-model:active="status"
+                :ellipsis="false"
+                line-width="16"
+                line-height="2"
+                @click="changeStatus"
+                v-if="type == 'DEFAULT'"
+            >
+                <van-tab v-for="(item, index) in tab" :key="index" :title="item.name" :name="item.status"></van-tab>
+            </van-tabs>
         </van-sticky>
 
-        <van-list class="list" v-model:loading="loading" :finished="finished" finished-text="" @load="getData">
+        <van-list class="list" v-model:loading="loading" :finished="finished" finished-text="" @load="getData" v-if="type == ''">
             <order-info @delFn="delFn" v-for="item in list" :key="item.id" :info="item"></order-info>
             <van-empty v-if="empty" description="你还没有订单哦~" :image="require('@assets/kong_png_wudingdan.png')" />
         </van-list>
+        <van-list class="list" v-model:loading="loading" :finished="finished" finished-text="" @load="getData" v-if="type == 'DEFAULT'">
+            <order-info-act
+                @delFn="delFn"
+                v-for="(item, index) in list"
+                :key="item.id"
+                v-model:info="list[index]"
+            ></order-info-act>
+            <van-empty v-if="empty" description="你还没有订单哦~" :image="require('@assets/kong_png_wudingdan.png')" />
+        </van-list>
     </van-pull-refresh>
 </template>
 
 <script>
 import OrderInfo from '../../components/order/OrderInfo.vue';
+import OrderInfoAct from '../../components/order/OrderInfoAct.vue';
 import list from '../../mixins/list';
 export default {
     name: 'discover',
     inject: ['bar'],
     mixins: [list],
     components: {
-        OrderInfo
+        OrderInfo,
+        OrderInfoAct
     },
     data() {
         return {
             active: 'explore',
             stiky: null,
             status: 'PROCESSING,FINISH',
-            type: 'DEFAULT',
+            type: '',
             list: [],
             tabs: [
                 {
@@ -66,6 +95,32 @@ export default {
                     name: '已完成'
                 }
             ],
+            tab: [
+                {
+                    status: 'DELIVERY,PENDING,RECEIVE,AIR_DROP,FINISH',
+                    name: '全部'
+                },
+                {
+                    status: 'PENDING',
+                    name: '待审核'
+                },
+                {
+                    status: 'DELIVERY,',
+                    name: '待发货'
+                },
+                {
+                    status: 'AIR_DROP,',
+                    name: '待空投'
+                },
+                {
+                    status: 'RECEIVE',
+                    name: '待收货'
+                },
+                {
+                    status: 'FINISH',
+                    name: '已完成'
+                }
+            ],
             url: '/order/all'
         };
     },
@@ -82,7 +137,8 @@ export default {
                     status: this.status,
                     type: this.type,
                     hide: false,
-                    del: false
+                    del: false,
+                    companyId: 1
                 }
             };
         },
@@ -110,6 +166,13 @@ export default {
                 }
             });
             this.type = type;
+            if(this.type == 'DEFAULT'){
+                this.url = '/mintOrder/all',
+                this.status = 'DELIVERY,PENDING,RECEIVE,AIR_DROP,FINISH'
+            }else if(this.type == ''){
+                this.url = '/order/all',
+                this.status = 'PROCESSING,FINISH'
+            }
             this.getData(true);
         },
         onRefresh() {
@@ -127,20 +190,26 @@ export default {
     padding: 10px 16px;
     background-color: @bg;
     align-items: center;
+    .top_img{
+        width: 24px;
+        height: 24px;
+    }
     .top-btn {
         flex-grow: 1;
         .flex();
         .btn {
-            font-size: @font3;
-            line-height: 26px;
+            font-size: 16px;
+            font-family: PingFangSC-Regular, PingFang SC;
+            font-weight: 400;
+            color: #939599;
+            line-height: 24px;
             display: inline-block;
             vertical-align: text-bottom;
 
             &.active {
-                color: @prim;
-                font-size: @font3;
+                color: #000000;
                 font-weight: bold;
-                line-height: 30px;
+                line-height: 24px;
             }
         }
 

+ 5 - 1
src/views/product/Detail.vue

@@ -329,7 +329,7 @@
                 </van-collapse-item>
             </van-collapse>
         </div>
-        <div class="copyright_market" @click="$router.push(`/productSearch?search=${info.prefixName}`)">
+        <div class="copyright_market" @click="goSearch()">
             <img src="@assets/icon-jiantou@3x.png" alt="" class="copyright_market_img" />
             <div class="copyright_market_title">前往版权市场看看</div>
             <img src="@assets/icon-jiantou@3x.png" alt="" class="copyright_market_img" />
@@ -626,6 +626,10 @@ export default {
         // }
     },
     methods: {
+        goSearch() {
+            this.setKeeps(['productSearch'], false);
+            this.$router.push(`/productSearch?search=${this.info.prefixName}`);
+        },
         showSale() {
             this.$refs.sale.init();
         },

+ 5 - 0
yarn.lock

@@ -1318,6 +1318,11 @@
   dependencies:
     "@popperjs/core" "^2.9.2"
 
+"@vant/touch-emulator@^1.4.0":
+  version "1.4.0"
+  resolved "https://registry.yarnpkg.com/@vant/touch-emulator/-/touch-emulator-1.4.0.tgz#02420ca5f312a7eb6c36c349cbb8e80e6f29ff2f"
+  integrity sha512-Zt+zISV0+wpOew2S1siOJ3G22y+hapHAKmXM+FhpvWzsRc4qahaYXatCAITuuXt0EcDp7WvEeTO4F7p9AtX/pw==
+
 "@vant/use@^1.3.5":
   version "1.3.5"
   resolved "https://registry.npmjs.org/@vant/use/-/use-1.3.5.tgz"