panhui 4 năm trước cách đây
mục cha
commit
f8b5e46540

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 12 - 0
src/main/nine-space/src/assets/svgs/shenqing_shenhezhong.svg


Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 12 - 0
src/main/nine-space/src/assets/svgs/shenqing_weitongguo.svg


+ 11 - 1
src/main/nine-space/src/components/product/productInfo.vue

@@ -13,7 +13,9 @@
       </div>
       <div class="price"><i class="font_family icon-icon_jiage"></i>320</div>
       <div class="text">
-        <div class="text1">已售 23份</div>
+        <div class="text1">
+          {{ info.type === "BLIND_BOX" ? "已售 23份" : "" }}
+        </div>
         <like-button>20</like-button>
       </div>
     </div>
@@ -22,6 +24,14 @@
 
 <script>
 export default {
+  props: {
+    info: {
+      type: Object,
+      default: () => {
+        return {};
+      },
+    },
+  },
   setup() {
     const click = function () {
       console.log("wyt6w");

+ 11 - 2
src/main/nine-space/src/mixins/common.js

@@ -4,12 +4,21 @@ export default {
       return !!this.$store.state.userInfo;
     },
     authStatus() {
-      return this.$store.state.authStatus;
+      let status = this.$store.state.userInfo?.authStatus;
+
+      return this.AuthStatus.has(status)
+        ? this.AuthStatus.get(status)
+        : "未认证";
     },
   },
   data() {
     return {
-      AuthStatus: [],
+      AuthStatus: new Map([
+        ["NOT_AUTH", "未认证"],
+        ["PENDING", "认证中"],
+        ["SUCCESS", "认证成功"],
+        ["FAIL", "认证失败"],
+      ]),
     };
   },
   methods: {

+ 5 - 0
src/main/nine-space/src/router/index.js

@@ -92,6 +92,11 @@ const routes = [
     name: "userChangeText",
     component: () => import("../views/user/ChangeText.vue"),
   },
+  {
+    path: "/waiting",
+    name: "userWaiting",
+    component: () => import("../views/user/Waiting.vue"),
+  },
   {
     path: "/detail",
     name: "detail",

+ 98 - 24
src/main/nine-space/src/views/Home.vue

@@ -14,14 +14,43 @@
       }"
       loop
       class="mySwiper"
+      v-if="banners.length > 0"
     >
-      <swiper-slide><img src="../assets/banner.jpg" /></swiper-slide>
-      <swiper-slide><img src="../assets/banner.jpg" /></swiper-slide>
-      <swiper-slide><img src="../assets/banner.jpg" /></swiper-slide>
-      <swiper-slide><img src="../assets/banner.jpg" /></swiper-slide>
+      <template v-for="item in banners" :key="item.id">
+        <swiper-slide>
+          <van-image
+            width="100%"
+            height="calc(45vw - 29px)"
+            :src="item.pic"
+            fit="cover"
+          />
+        </swiper-slide>
+      </template>
     </swiper>
 
-    <page-title title="最HOT收藏品"></page-title>
+    <div class="box" v-if="box.length > 0">
+      <page-title title="数字盲盒"></page-title>
+      <div class="box-list">
+        <product-info
+          v-for="item in box"
+          :key="item.id"
+          :info="item"
+        ></product-info>
+      </div>
+    </div>
+
+    <div class="box">
+      <page-title title="最HOT收藏品"></page-title>
+      <div class="box-list">
+        <product-info
+          v-for="item in products"
+          :key="item.id"
+          :info="item"
+        ></product-info>
+      </div>
+    </div>
+
+    <!-- <page-title title="最HOT收藏品"></page-title>
 
     <div class="hot">
       <product-info></product-info>
@@ -29,26 +58,16 @@
         <product-small></product-small>
         <product-small></product-small>
       </div>
-    </div>
+    </div> -->
 
     <div class="casting">
       <page-title title="最受欢迎铸造者"></page-title>
-
-      <creator-info :rank="1"></creator-info>
-      <creator-info :rank="2"></creator-info>
-      <creator-info :rank="3"></creator-info>
-    </div>
-
-    <div class="box">
-      <page-title title="数字盲盒"></page-title>
-      <div class="box-list">
-        <product-info></product-info>
-        <product-info></product-info>
-        <product-info></product-info>
-        <product-info></product-info>
-        <product-info></product-info>
-        <product-info></product-info>
-      </div>
+      <template v-for="(item, index) in miners" :key="index">
+        <creator-info
+          :rank="index < 3 ? index + 1 : 0"
+          :info="item"
+        ></creator-info>
+      </template>
     </div>
   </div>
 </template>
@@ -65,7 +84,7 @@ import "swiper/swiper-bundle.min.css";
 
 import SwiperCore, { EffectCoverflow } from "swiper";
 import ProductInfo from "../components/product/productInfo.vue";
-import ProductSmall from "../components/product/productSmall.vue";
+// import ProductSmall from "../components/product/productSmall.vue";
 import CreatorInfo from "../components/creator/CreatorInfo.vue";
 
 // install Swiper modules
@@ -78,9 +97,64 @@ export default {
     Swiper,
     SwiperSlide,
     ProductInfo,
-    ProductSmall,
     CreatorInfo,
   },
+  data() {
+    return {
+      banners: [],
+      box: [],
+      products: [],
+      miners: [],
+    };
+  },
+  mounted() {
+    this.$http.post("/banner/all", {}, { body: "json" }).then((res) => {
+      this.banners = res.content;
+    });
+    this.getProduct("BLIND_BOX").then((res) => {
+      this.box = res;
+    });
+    this.getProduct().then((res) => {
+      this.products = res;
+    });
+    this.getMiner();
+  },
+  methods: {
+    getProduct(type = "DEFAULT") {
+      return this.$http
+        .post(
+          "/collection/all",
+          {
+            page: 0,
+            size: 4,
+            query: {
+              type: type,
+            },
+            sort: "createdAt,desc",
+          },
+          { body: "json" }
+        )
+        .then((res) => {
+          return Promise.resolve(res.content);
+        });
+    },
+    getMiner() {
+      this.$http
+        .post(
+          "/user/all",
+          {
+            page: 0,
+            query: { hasRole: "ROLE_MINTER" },
+            size: 5,
+            sort: "createdAt,desc",
+          },
+          { body: "json" }
+        )
+        .then((res) => {
+          this.miners = res.content;
+        });
+    },
+  },
 };
 </script>
 

+ 12 - 2
src/main/nine-space/src/views/Mine.vue

@@ -49,9 +49,9 @@
             size="mini"
             :icon="require('../assets/svgs/person.svg')"
             round
-            @click="$router.push('/verified')"
+            @click="goAuth"
           >
-            未认证
+            {{ authStatus }}
           </van-button>
           <van-button
             plain
@@ -182,6 +182,9 @@ export default {
   computed: {
     ...mapState(["userInfo"]),
   },
+  mounted() {
+    this.$store.dispatch("getUserInfo");
+  },
   methods: {
     copy() {
       this.$copyText(this.userInfo.id).then(
@@ -195,6 +198,13 @@ export default {
         }
       );
     },
+    goAuth() {
+      if (this.authStatus === "认证中" || this.authStatus === "认证失败") {
+        this.$router.push("/waiting");
+      } else if (this.authStatus === "未认证") {
+        this.$router.push("/verfied");
+      }
+    },
   },
 };
 </script>

+ 7 - 3
src/main/nine-space/src/views/user/Verified.vue

@@ -157,9 +157,13 @@ export default {
           let form = { ...this.form };
           form.userId = this.userInfo.id;
           form.status = "PENDING";
-          this.$http.post("/identityAuth/save").then(() => {
-            this.$toast.success("更新成功");
-          });
+          this.$http
+            .post("/identityAuth/apply", {
+              ...form,
+            })
+            .then(() => {
+              this.$router.replace("/Waiting");
+            });
         })
         .catch(() => {
           this.bs.value.refresh();

+ 74 - 1
src/main/nine-space/src/views/user/Waiting.vue

@@ -1,3 +1,76 @@
 <template>
-  <div></div>
+  <div class="page">
+    <img class="img" :src="statusInfo.img" alt="" />
+    <div class="title">{{ statusInfo.title }}</div>
+    <div class="sub">
+      {{ statusInfo.sub }}
+    </div>
+
+    <div class="btn" v-if="authStatus === '认证失败'">
+      <van-button type="primary" block plain round> 重新申请 </van-button>
+    </div>
+  </div>
 </template>
+
+<script>
+import { mapState } from "vuex";
+export default {
+  computed: {
+    ...mapState(["userInfo"]),
+    statusInfo() {
+      if (this.userInfo.authStatus) {
+        return { ...this.info }[this.userInfo.authStatus];
+      } else {
+        return {};
+      }
+    },
+  },
+  data() {
+    return {
+      info: {
+        PENDING: {
+          img: require("../../assets/svgs/shenqing_shenhezhong.svg"),
+          title: "资料审核中",
+          sub: "平台将于3日内完成资料审核,并将审核结果以短信的形式通知您",
+        },
+        FAIL: {
+          img: require("../../assets/svgs/shenqing_weitongguo.svg"),
+          title: "资料审核失败",
+          sub: "很遗憾,您的资料审核失败,请检查您填写的资料是否正确以及上传照片是否清晰",
+        },
+      },
+    };
+  },
+  mounted() {
+    this.$store.dispatch("getUserInfo");
+  },
+};
+</script>
+
+<style lang="less" scoped>
+.page {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  padding: 50px;
+
+  .title {
+    font-size: 20px;
+    color: #ffffff;
+    line-height: 30px;
+    margin-top: 38px;
+  }
+  .sub {
+    font-size: 14px;
+    color: #939599;
+    line-height: 24px;
+    margin-top: 16px;
+    text-align: center;
+  }
+
+  .btn {
+    margin-top: 60px;
+    width: 100%;
+  }
+}
+</style>

Một số tệp đã không được hiển thị bởi vì quá nhiều tập tin thay đổi trong này khác