Bläddra i källkod

Merge branch 'master' of http://git.izouma.com/xiongzhu/9th

xuqiang 4 år sedan
förälder
incheckning
37eeacb353

+ 3 - 2
src/main/nine-space/src/components/asset/assetInfo.vue

@@ -9,7 +9,7 @@
         class="product"
         class="product"
         @click="click"
         @click="click"
     >
     >
-        <van-image width="100%" height="calc(45vw - 21.6px)" :src="getImg(info.pic)" fit="cover" />
+        <van-image width="100%" height="calc(45vw - 21.6px)" :src="getImg(changeImgs(info.pic))" fit="cover" />
 
 
         <div class="content">
         <div class="content">
             <div class="name van-ellipsis">
             <div class="name van-ellipsis">
@@ -42,9 +42,10 @@
 
 
 <script>
 <script>
 import asset from '../../mixins/asset';
 import asset from '../../mixins/asset';
+import product from '../../mixins/product';
 
 
 export default {
 export default {
-    mixins: [asset],
+    mixins: [asset, product],
     props: {
     props: {
         info: {
         info: {
             type: Object,
             type: Object,

+ 3 - 2
src/main/nine-space/src/components/order/OrderInfo.vue

@@ -14,7 +14,7 @@
             <span class="status">{{ getLabelName(info.status, statusOptions) }}</span>
             <span class="status">{{ getLabelName(info.status, statusOptions) }}</span>
         </div>
         </div>
         <div class="order">
         <div class="order">
-            <van-image :radius="6" width="74" height="104" :src="getImg(info.pic)" fit="cover" />
+            <van-image :radius="6" width="74" height="104" :src="getImg(changeImgs(info.pic))" fit="cover" />
 
 
             <div class="content">
             <div class="content">
                 <div class="name van-multi-ellipsis--l2">
                 <div class="name van-multi-ellipsis--l2">
@@ -38,6 +38,7 @@
 
 
 <script>
 <script>
 import order from '../../mixins/order';
 import order from '../../mixins/order';
+import product from '../../mixins/product';
 export default {
 export default {
     props: {
     props: {
         info: {
         info: {
@@ -54,7 +55,7 @@ export default {
 
 
         return { click };
         return { click };
     },
     },
-    mixins: [order],
+    mixins: [order, product],
     methods: {
     methods: {
         likeProduct() {
         likeProduct() {
             if (!this.info.liked) {
             if (!this.info.liked) {

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

@@ -9,7 +9,7 @@
         class="product"
         class="product"
         @click="click"
         @click="click"
     >
     >
-        <van-image width="100%" height="calc(45vw - 21.6px)" :src="getImg(info.pics || info.pic)" fit="cover" />
+        <van-image width="100%" height="calc(45vw - 21.6px)" :src="getImg(changeImgs(info.pics))" fit="cover" />
 
 
         <div class="content">
         <div class="content">
             <div class="name van-ellipsis">
             <div class="name van-ellipsis">
@@ -31,7 +31,9 @@
 </template>
 </template>
 
 
 <script>
 <script>
+import product from '../../mixins/product';
 export default {
 export default {
+    mixins: [product],
     props: {
     props: {
         info: {
         info: {
             type: Object,
             type: Object,

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

@@ -58,7 +58,7 @@ export default {
                 return Promise.resolve(res.data);
                 return Promise.resolve(res.data);
             });
             });
         },
         },
-        getImg(imgs = '') {
+        getImg(imgs = '', type = '') {
             if (!imgs) {
             if (!imgs) {
                 imgs = '';
                 imgs = '';
             }
             }
@@ -70,7 +70,8 @@ export default {
                 return !!item;
                 return !!item;
             });
             });
             if (imgs.length > 0) {
             if (imgs.length > 0) {
-                return imgs[0] + (/\.gif$/i.test(imgs[0]) ? '' : '?x-oss-process=image/resize,h_300,m_lfit');
+                let img = type ? imgs[0][type] : imgs[0];
+                return img + (/\.gif$/i.test(img) ? '' : '?x-oss-process=image/resize,h_300,m_lfit');
             } else {
             } else {
                 return '';
                 return '';
             }
             }

+ 1 - 0
src/main/nine-space/src/mixins/list.js

@@ -12,6 +12,7 @@ export default {
             if (isFirst) {
             if (isFirst) {
                 this.page = 0;
                 this.page = 0;
                 this.list = [];
                 this.list = [];
+                this.$root.$el.scrollTop = 0;
             }
             }
 
 
             this.loading = true;
             this.loading = true;

+ 20 - 0
src/main/nine-space/src/mixins/product.js

@@ -18,7 +18,27 @@ export default {
                     label: '拍卖系列',
                     label: '拍卖系列',
                     value: 'AUCTION'
                     value: 'AUCTION'
                 }
                 }
+            ],
+            picsTypes: [
+                {
+                    label: '视频',
+                    value: 'video/mp4'
+                }
             ]
             ]
         };
         };
+    },
+    methods: {
+        changeImgs(list = []) {
+            return list.map(item => {
+                if (item.type === 'video/mp4') {
+                    return item.thumb;
+                } else {
+                    return item.url;
+                }
+            });
+        },
+        isVideo(info = {}) {
+            return info.type === 'video/mp4';
+        }
     }
     }
 };
 };

+ 26 - 15
src/main/nine-space/src/views/Submit.vue

@@ -2,7 +2,13 @@
     <div class="submit">
     <div class="submit">
         <div class="pageTitle">{{ info.minter }}</div>
         <div class="pageTitle">{{ info.minter }}</div>
         <div class="product">
         <div class="product">
-            <van-image width="74" height="104" :radius="6" :src="getImg(info.pics || info.pic)" fit="cover" />
+            <van-image
+                width="74"
+                height="104"
+                :radius="6"
+                :src="getImg(changeImgs(info.pics || info.pic))"
+                fit="cover"
+            />
             <div class="product-content">
             <div class="product-content">
                 <div class="text1">
                 <div class="text1">
                     {{ info.name }}
                     {{ info.name }}
@@ -55,9 +61,10 @@
 <script>
 <script>
 const path = require('path');
 const path = require('path');
 import { add } from 'mathjs';
 import { add } from 'mathjs';
+import product from '../mixins/product';
 export default {
 export default {
     name: 'Submit',
     name: 'Submit',
-
+    mixins: [product],
     data() {
     data() {
         return {
         return {
             info: {},
             info: {},
@@ -142,20 +149,24 @@ export default {
     },
     },
     methods: {
     methods: {
         submit() {
         submit() {
-            this.$http
-                .post('/order/create?collectionId=' + this.$route.query.id + '&qty=1')
-                .then(res => {
-                    this.orderId = res.id;
-                    this.$router.replace('/submit?orderId=' + res.id);
-                    this.$nextTick(() => {
-                        document.location.replace(path.resolve(this.$baseUrl, 'payOrder/alipay?id=' + res.id));
+            if (this.payType === 'ALIPAY') {
+                this.$http
+                    .post('/order/create?collectionId=' + this.$route.query.id + '&qty=1')
+                    .then(res => {
+                        this.orderId = res.id;
+                        this.$router.replace('/submit?orderId=' + res.id);
+                        this.$nextTick(() => {
+                            document.location.replace(path.resolve(this.$baseUrl, 'payOrder/alipay?id=' + res.id));
+                        });
+                    })
+                    .catch(e => {
+                        if (e) {
+                            this.$toast(e.error);
+                        }
                     });
                     });
-                })
-                .catch(e => {
-                    if (e) {
-                        this.$toast(e.error);
-                    }
-                });
+            } else {
+                this.wait();
+            }
         }
         }
     }
     }
 };
 };

+ 27 - 12
src/main/nine-space/src/views/asset/Detail.vue

@@ -2,7 +2,23 @@
     <div class="detail">
     <div class="detail">
         <swiper pagination class="mySwiper" v-if="banners.length > 0">
         <swiper pagination class="mySwiper" v-if="banners.length > 0">
             <swiper-slide v-for="(item, index) in banners" :key="index">
             <swiper-slide v-for="(item, index) in banners" :key="index">
-                <img :src="item" />
+                <video
+                    class="swiper-video"
+                    v-if="isVideo(item)"
+                    :src="item.url"
+                    :poster="getImg(changeImgs([item]))"
+                    controls="controls"
+                >
+                    您的浏览器不支持 video 标签。
+                </video>
+                <van-image
+                    v-else
+                    @click="preview(index, changeImgs(banners))"
+                    :src="item.url"
+                    width="100vw"
+                    height="100vw"
+                    fit="scale-down"
+                />
             </swiper-slide>
             </swiper-slide>
         </swiper>
         </swiper>
 
 
@@ -39,16 +55,7 @@
 
 
         <driver />
         <driver />
         <div class="user">
         <div class="user">
-            <van-cell
-                is-link
-                class="creator"
-                :to="{
-                    path: '/creatorDetail',
-                    query: {
-                        id: info.minterId
-                    }
-                }"
-            >
+            <van-cell class="creator">
                 <template #icon>
                 <template #icon>
                     <van-image
                     <van-image
                         width="40"
                         width="40"
@@ -134,7 +141,9 @@ import 'swiper/swiper-bundle.min.css';
 import SwiperCore, { Pagination } from 'swiper';
 import SwiperCore, { Pagination } from 'swiper';
 import Post from '../../components/Post.vue';
 import Post from '../../components/Post.vue';
 import asset from '../../mixins/asset';
 import asset from '../../mixins/asset';
+import product from '../../mixins/product';
 import { mapState } from 'vuex';
 import { mapState } from 'vuex';
+import { ImagePreview } from 'vant';
 
 
 // install Swiper modules
 // install Swiper modules
 SwiperCore.use([Pagination]);
 SwiperCore.use([Pagination]);
@@ -146,7 +155,7 @@ export default {
         Post
         Post
     },
     },
 
 
-    mixins: [asset],
+    mixins: [asset, product],
     data() {
     data() {
         return {
         return {
             activeName: '1',
             activeName: '1',
@@ -171,6 +180,12 @@ export default {
         this.getProduct();
         this.getProduct();
     },
     },
     methods: {
     methods: {
+        preview(index = 0, list = []) {
+            ImagePreview({
+                images: [...list],
+                startPosition: index
+            });
+        },
         getProduct() {
         getProduct() {
             this.$toast.loading({
             this.$toast.loading({
                 message: '加载中...',
                 message: '加载中...',

+ 10 - 38
src/main/nine-space/src/views/creator/List.vue

@@ -4,13 +4,7 @@
             <div class="top">
             <div class="top">
                 <div class="name">铸造者</div>
                 <div class="name">铸造者</div>
             </div>
             </div>
-            <van-tabs
-                v-model:active="sort"
-                :ellipsis="false"
-                line-width="16"
-                line-height="2"
-                @change="(page = 0), getList()"
-            >
+            <van-tabs v-model:active="sort" :ellipsis="false" line-width="16" line-height="2" @change="getData(true)">
                 <van-tab
                 <van-tab
                     :title="item.label"
                     :title="item.label"
                     :name="
                     :name="
@@ -30,7 +24,7 @@
                 </van-tab>
                 </van-tab>
             </van-tabs>
             </van-tabs>
         </van-sticky>
         </van-sticky>
-        <van-list class="list" v-model:loading="loading" :finished="finished" finished-text="" @load="getList">
+        <van-list class="list" v-model:loading="loading" :finished="finished" finished-text="" @load="getData">
             <template v-for="(item, index) in list" :key="index">
             <template v-for="(item, index) in list" :key="index">
                 <creator-info v-model:info="list[index]"></creator-info>
                 <creator-info v-model:info="list[index]"></creator-info>
             </template>
             </template>
@@ -41,9 +35,11 @@
 
 
 <script>
 <script>
 import CreatorInfo from '../../components/creator/CreatorInfo.vue';
 import CreatorInfo from '../../components/creator/CreatorInfo.vue';
+import list from '../../mixins/list';
 export default {
 export default {
     components: { CreatorInfo },
     components: { CreatorInfo },
     inject: ['bar'],
     inject: ['bar'],
+    mixins: [list],
     data() {
     data() {
         return {
         return {
             list: [],
             list: [],
@@ -68,39 +64,15 @@ export default {
                     type: 'select'
                     type: 'select'
                 }
                 }
             ],
             ],
-            loading: false,
-            finished: false,
-            page: 0
+            url: '/user/all'
         };
         };
     },
     },
     methods: {
     methods: {
-        getList() {
-            if (this.page === 0) {
-                this.list = [];
-            }
-            this.loading = true;
-            this.finished = false;
-            this.empty = false;
-            this.$http
-                .post(
-                    '/user/all',
-                    {
-                        page: this.page,
-                        query: { hasRole: 'ROLE_MINTER' },
-                        size: 20,
-                        sort: this.sort
-                    },
-                    { body: 'json' }
-                )
-                .then(res => {
-                    this.list = [...this.list, ...res.content];
-                    this.empty = res.empty;
-                    this.loading = false;
-                    this.finished = res.last;
-                    if (!this.finished) {
-                        this.page = this.page + 1;
-                    }
-                });
+        beforeData() {
+            return {
+                query: { hasRole: 'ROLE_MINTER' },
+                sort: this.sort
+            };
         }
         }
     }
     }
 };
 };

+ 3 - 3
src/main/nine-space/src/views/order/Detail.vue

@@ -14,7 +14,7 @@
         <div class="product">
         <div class="product">
             <div class="product-name">{{ info.minter }}</div>
             <div class="product-name">{{ info.minter }}</div>
             <div class="product-info">
             <div class="product-info">
-                <van-image :radius="6" width="74" height="104" :src="getImg(info.pic)" fit="cover" />
+                <van-image :radius="6" width="74" height="104" :src="getImg(changeImgs(info.pic))" fit="cover" />
                 <div class="product-content">
                 <div class="product-content">
                     <div class="text1 van-multi-ellipsis--l2">{{ info.name }}</div>
                     <div class="text1 van-multi-ellipsis--l2">{{ info.name }}</div>
                     <div class="text2" v-if="info.number">编号:{{ info.number }}</div>
                     <div class="text2" v-if="info.number">编号:{{ info.number }}</div>
@@ -74,15 +74,15 @@
 
 
 <script>
 <script>
 import order from '../../mixins/order';
 import order from '../../mixins/order';
+import product from '../../mixins/product';
 export default {
 export default {
     name: 'detail',
     name: 'detail',
-
     data() {
     data() {
         return {
         return {
             info: {}
             info: {}
         };
         };
     },
     },
-    mixins: [order],
+    mixins: [order, product],
     mounted() {
     mounted() {
         this.$toast.loading({
         this.$toast.loading({
             message: '加载中...',
             message: '加载中...',

+ 26 - 5
src/main/nine-space/src/views/product/Detail.vue

@@ -3,7 +3,24 @@
         <swiper pagination class="mySwiper" v-if="banners.length > 0">
         <swiper pagination class="mySwiper" v-if="banners.length > 0">
             <swiper-slide v-for="(item, index) in banners" :key="index">
             <swiper-slide v-for="(item, index) in banners" :key="index">
                 <!-- <img :src="item" /> -->
                 <!-- <img :src="item" /> -->
-                <van-image @click="preview(index, banners)" :src="item" width="100vw" height="100vw" fit="scale-down" />
+
+                <video
+                    class="swiper-video"
+                    v-if="isVideo(item)"
+                    :src="item.url"
+                    :poster="getImg(changeImgs([item]))"
+                    controls="controls"
+                >
+                    您的浏览器不支持 video 标签。
+                </video>
+                <van-image
+                    v-else
+                    @click="preview(index, changeImgs(banners))"
+                    :src="item.url"
+                    width="100vw"
+                    height="100vw"
+                    fit="scale-down"
+                />
             </swiper-slide>
             </swiper-slide>
         </swiper>
         </swiper>
 
 
@@ -122,6 +139,7 @@ import { ImagePreview } from 'vant';
 
 
 // install Swiper modules
 // install Swiper modules
 SwiperCore.use([Pagination]);
 SwiperCore.use([Pagination]);
+import product from '../../mixins/product';
 
 
 export default {
 export default {
     components: {
     components: {
@@ -129,7 +147,7 @@ export default {
         SwiperSlide,
         SwiperSlide,
         Post
         Post
     },
     },
-
+    mixins: [product],
     data() {
     data() {
         return {
         return {
             activeName: '1',
             activeName: '1',
@@ -152,7 +170,7 @@ export default {
         boxs() {
         boxs() {
             let list = [...this.blindBoxItems];
             let list = [...this.blindBoxItems];
             return list.map(item => {
             return list.map(item => {
-                return this.getImg(item.pics);
+                return this.getImg(this.changeImgs(item.pics));
             });
             });
         }
         }
     },
     },
@@ -180,6 +198,7 @@ export default {
                             this.btn = this.$refs.btn;
                             this.btn = this.$refs.btn;
                         }
                         }
                     });
                     });
+                    this.$toast.clear();
 
 
                     if (res.type === 'BLIND_BOX') {
                     if (res.type === 'BLIND_BOX') {
                         return this.$http.post(
                         return this.$http.post(
@@ -199,8 +218,6 @@ export default {
                     if (res) {
                     if (res) {
                         this.blindBoxItems = res.content;
                         this.blindBoxItems = res.content;
                     }
                     }
-
-                    this.$toast.clear();
                 });
                 });
         },
         },
         likeProduct() {
         likeProduct() {
@@ -458,4 +475,8 @@ export default {
         height: auto;
         height: auto;
     }
     }
 }
 }
+.swiper-video {
+    width: 100vw;
+    height: 100vw;
+}
 </style>
 </style>

+ 4 - 1
src/main/nine-space/src/views/user/Likes.vue

@@ -4,7 +4,7 @@
             <div class="top">
             <div class="top">
                 <div class="name">我赞过的</div>
                 <div class="name">我赞过的</div>
             </div>
             </div>
-            <van-tabs v-model:active="type" :ellipsis="false" line-width="16" line-height="2">
+            <van-tabs v-model:active="type" @change="change" :ellipsis="false" line-width="16" line-height="2">
                 <van-tab
                 <van-tab
                     :title="item.label"
                     :title="item.label"
                     :name="item.type"
                     :name="item.type"
@@ -77,6 +77,9 @@ export default {
                 this.empty = res.length === 0;
                 this.empty = res.length === 0;
                 this.$toast.clear();
                 this.$toast.clear();
             });
             });
+        },
+        change() {
+            this.$root.$el.scrollTop = 0;
         }
         }
     }
     }
 };
 };