panhui 4 years ago
parent
commit
7876f72dcf

+ 31 - 18
src/components/auction/banner.vue

@@ -61,25 +61,34 @@
 
 
         <post ref="post" :info="assetInfo" noButton :pageUrl="pageUrl" />
         <post ref="post" :info="assetInfo" noButton :pageUrl="pageUrl" />
     </div>
     </div>
+    <div class="top-box" v-else>
+        <three-mode :info="info.model3d" v-if="!!info.model3d" :pageType="pageType"></three-mode>
 
 
-    <swiper v-else :pagination="{ type: 'fraction' }" :space-between="16" class="mySwiper" :autoplay="{ delay: 3500 }">
-        <swiper-slide v-for="(item, index) in banners" :key="index">
-            <video
-                class="video"
-                v-if="isVideo(item)"
-                :src="item.url"
-                controls
-                :poster="getImg(changeImgs([item]), '', 1200)"
-                playsinline="true"
-                webkit-playsinline="true"
-                autoplay
-                loop
-            >
-                您的浏览器不支持 video 标签。
-            </video>
-            <van-image width="100vw" height="100vw" :src="getImg(item.url, '', 1200)" fit="cover" />
-        </swiper-slide>
-    </swiper>
+        <swiper
+            v-else
+            :pagination="{ type: 'fraction' }"
+            :space-between="16"
+            class="mySwiper"
+            :autoplay="{ delay: 3500 }"
+        >
+            <swiper-slide v-for="(item, index) in banners" :key="index">
+                <video
+                    class="video"
+                    v-if="isVideo(item)"
+                    :src="item.url"
+                    controls
+                    :poster="getImg(changeImgs([item]), '', 1200)"
+                    playsinline="true"
+                    webkit-playsinline="true"
+                    autoplay
+                    loop
+                >
+                    您的浏览器不支持 video 标签。
+                </video>
+                <van-image width="100vw" height="100vw" :src="getImg(item.url, '', 1200)" fit="cover" />
+            </swiper-slide>
+        </swiper>
+    </div>
 </template>
 </template>
 
 
 <script>
 <script>
@@ -328,4 +337,8 @@ export default {
         margin-left: 3px;
         margin-left: 3px;
     }
     }
 }
 }
+
+.top-box {
+    background-color: @bg3;
+}
 </style>
 </style>

+ 112 - 9
src/components/auction/deposit.vue

@@ -36,9 +36,18 @@
                 </div>
                 </div>
                 <img src="../../assets/icon_inter.png" alt="" />
                 <img src="../../assets/icon_inter.png" alt="" />
             </div>
             </div>
+
+            <div class="pay" v-if="!($store.state.review && inIos)">
+                <div class="pay-item" @click="payType = item.type" v-for="(item, index) in payInfos" :key="index">
+                    <img class="icon" :src="item.icon" alt="" />
+                    <span>{{ item.name }}</span>
+                    <img class="choose-icon" :src="payType === item.type ? icons[1] : icons[0]" alt="" />
+                </div>
+            </div>
         </div>
         </div>
         <div class="agreement" @click="showRule">竞拍需要同意协议<span>《拍卖服务协议》</span></div>
         <div class="agreement" @click="showRule">竞拍需要同意协议<span>《拍卖服务协议》</span></div>
         <div class="btn">
         <div class="btn">
+            <a id="pay" :href="hrefUrl"></a>
             <van-button type="primary" block round @click="submit">同意协议并支付</van-button>
             <van-button type="primary" block round @click="submit">同意协议并支付</van-button>
         </div>
         </div>
     </van-action-sheet>
     </van-action-sheet>
@@ -47,6 +56,9 @@
 <script>
 <script>
 import auction from '../../mixins/auction';
 import auction from '../../mixins/auction';
 import resolveUrl from 'resolve-url';
 import resolveUrl from 'resolve-url';
+let inWeixin = /micromessenger/i.test(navigator.userAgent);
+let inApp = /#cordova#/i.test(navigator.userAgent);
+let inIos = /iPhone|iPad|iPod/i.test(navigator.userAgent);
 export default {
 export default {
     props: {
     props: {
         info: {
         info: {
@@ -61,11 +73,68 @@ export default {
         return {
         return {
             show: false,
             show: false,
             time: 30 * 60 * 60 * 1000,
             time: 30 * 60 * 60 * 1000,
-            addressInfo: {}
+            addressInfo: {},
+            payType: inWeixin ? 'WEIXIN' : 'ALIPAY',
+            icons: [require('@assets/svgs/icon_gouxuan_huise.svg'), require('@assets/icon_gouxuan_pre.png')],
+            payInfos: [
+                {
+                    icon: require('@assets/svgs/zhifubao.svg'),
+                    name: '支付宝',
+                    type: 'ALIPAY'
+                },
+                {
+                    icon: require('@assets/svgs/wechat.svg'),
+                    name: '微信',
+                    type: 'WEIXIN'
+                }
+                // {
+                //   icon: require("@assets/svgs/png-decp.svg"),
+                //   name: "DCEP",
+                // },
+            ],
+            enable_wx_lite: false,
+            enable_wx_pub: false,
+            hrefUrl: ''
         };
         };
     },
     },
     mounted() {
     mounted() {
         if (this.isLogin) {
         if (this.isLogin) {
+            Promise.all([
+                inWeixin
+                    ? this.$http.get('/sysConfig/get/enable_wx_pub').then(res => {
+                          this.enable_wx_pub = res.value.split(',').findIndex(i => i === this.$route.query.id) > -1;
+                          return Promise.resolve();
+                      })
+                    : Promise.resolve(),
+                this.$http.get('/sysConfig/get/enable_wx_lite').then(res => {
+                    this.enable_wx_lite =
+                        res.value.split(',').findIndex(i => i === this.$route.query.id) > -1 &&
+                        !/AliApp/i.test(navigator.userAgent);
+                    return Promise.resolve();
+                })
+            ]).then(() => {
+                if (!(this.enable_wx_lite || this.enable_wx_pub)) {
+                    this.payInfos.splice(1, 1);
+                    this.payType = 'ALIPAY';
+                } else if (this.enable_wx_pub) {
+                    this.payChannel = 'wx_pub';
+                } else {
+                    this.payChannel = 'wx_lite';
+                }
+                this.$http.get('/sysConfig/get/enable_sand_quick').then(res => {
+                    // eslint-disable-next-line no-extra-boolean-cast
+                    if (res.value === 'true' || res.value === true || res.value === '1') {
+                        this.payType = 'H5PAY';
+                        this.payInfos = [
+                            {
+                                icon: require('@assets/icon_yinlian.png'),
+                                name: '银联快捷付',
+                                type: 'H5PAY'
+                            }
+                        ];
+                    }
+                });
+            });
             this.emitter.on('updateChoose', info => {
             this.emitter.on('updateChoose', info => {
                 console.log(info);
                 console.log(info);
                 this.addressInfo = info;
                 this.addressInfo = info;
@@ -114,14 +183,22 @@ export default {
             if (!this.isNFT) {
             if (!this.isNFT) {
                 form.addressId = this.addressInfo.id;
                 form.addressId = this.addressInfo.id;
             }
             }
-            this.$http
-                .post('/auctionOrder/createDeposit', form)
-                .then(res => {
-                    document.location.href = resolveUrl(this.$baseUrl, '/payOrder/payAuctionOrder?id=' + res.id);
-                })
-                .catch(e => {
-                    this.$toast(e.error);
-                });
+            this.$toast.loading({
+                message: '加载中...',
+                forbidClick: true
+            });
+            if (this.payType === 'H5PAY') {
+                this.$http
+                    .post('/auctionOrder/createDeposit', form)
+                    .then(res => {
+                        document.location.href = resolveUrl(this.$baseUrl, '/payOrder/payAuctionOrder?id=' + res.id);
+                    })
+                    .catch(e => {
+                        this.$toast(e.error);
+                    });
+            } else {
+                this.$toast('暂未支持');
+            }
         }
         }
     }
     }
 };
 };
@@ -141,6 +218,7 @@ export default {
         flex-grow: 1;
         flex-grow: 1;
         .flex-col();
         .flex-col();
         margin-left: 10px;
         margin-left: 10px;
+        align-self: stretch;
 
 
         .name {
         .name {
             font-size: 14px;
             font-size: 14px;
@@ -260,4 +338,29 @@ export default {
 .btn {
 .btn {
     padding: 9px 48px;
     padding: 9px 48px;
 }
 }
+.pay {
+    padding-top: 10px;
+}
+.pay-item {
+    display: flex;
+    align-items: center;
+    height: 48px;
+    border-top: 1px solid @tabBorder;
+    .icon {
+        height: 24px;
+        display: block;
+    }
+    span {
+        font-size: 14px;
+        font-weight: bold;
+        color: @text0;
+        line-height: 24px;
+        flex-grow: 1;
+        padding: 0 10px;
+    }
+    .choose-icon {
+        width: 24px;
+        height: 24px;
+    }
+}
 </style>
 </style>

+ 9 - 1
src/components/auction/info.vue

@@ -9,7 +9,7 @@
         class="auction-info"
         class="auction-info"
         :class="{ isEnd: isEnd }"
         :class="{ isEnd: isEnd }"
     >
     >
-        <van-image width="128" height="128" :src="getImg(changeImgs(info.pic, 600))" fit="cover" />
+        <van-image :radius="8" width="128" height="128" :src="getImg(changeImgs(info.pic, 600))" fit="cover" />
         <div class="content">
         <div class="content">
             <div class="text1 van-multi-ellipsis--l2">
             <div class="text1 van-multi-ellipsis--l2">
                 {{ info.name }}
                 {{ info.name }}
@@ -53,6 +53,14 @@ export default {
             default: () => {
             default: () => {
                 return {};
                 return {};
             }
             }
+        },
+        size: {
+            type: String,
+            default: 'normall'
+        },
+        isLink: {
+            type: Boolean,
+            default: true
         }
         }
     },
     },
     mixins: [auction],
     mixins: [auction],

+ 5 - 1
src/components/auction/records.vue

@@ -5,7 +5,7 @@
                 <div class="title">
                 <div class="title">
                     <img src="../../assets/icon-paimaijilu.png" alt="" />
                     <img src="../../assets/icon-paimaijilu.png" alt="" />
                     <span class="text1">拍卖纪录</span>
                     <span class="text1">拍卖纪录</span>
-                    <span class="text2">共8条</span>
+                    <span class="text2">共{{ recordNum }}条</span>
                     <img src="../../assets/icon_close_tips.png" @click="show = false" alt="" class="close" />
                     <img src="../../assets/icon_close_tips.png" @click="show = false" alt="" class="close" />
                 </div>
                 </div>
                 <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">
@@ -31,6 +31,10 @@ export default {
         auctionId: {
         auctionId: {
             type: Number,
             type: Number,
             default: 0
             default: 0
+        },
+        recordNum: {
+            type: Number,
+            default: 0
         }
         }
     },
     },
     mixins: [list, auction],
     mixins: [list, auction],

+ 333 - 0
src/components/order/OrderInfoAuction.vue

@@ -0,0 +1,333 @@
+<template>
+    <router-link
+        :to="{
+            path: '/auctionOrderDetail',
+            query: {
+                id: info.id
+            }
+        }"
+        class="orderInfo"
+        @click="click"
+    >
+        <div class="order-top">
+            <!-- <span>{{ info.name }}</span> -->
+            <span class="status">{{ getLabelName(info.status, statusOptions) }}</span>
+        </div>
+
+        <div class="auction-info" :class="{ isEnd: isEnd }">
+            <van-image :radius="8" width="128" height="128" :src="getImg(changeImgs(info.pic, 600))" fit="cover" />
+            <div class="content">
+                <div class="text1 van-multi-ellipsis--l2">
+                    {{ info.name }}
+                </div>
+                <div class="text2">
+                    <div class="time" v-if="!isEnd">
+                        <img src="../../assets/info_icon_time.png" alt="" />
+                        <span>{{ timeText }}:<van-count-down :time="time" format="HH 小时 mm 分 ss 秒" /></span>
+                    </div>
+                    <div class="time" v-else>{{ timeText }}</div>
+                </div>
+
+                <div class="text3">
+                    <span class="text3-1">保证金</span>
+                    <div class="price">
+                        <!-- <img src="../../assets/icon_jiage_hei.png" alt="" /> -->
+                        <span>¥{{ showPrice }}</span>
+                    </div>
+                    <!-- <span class="text3-3">出价{{ info.bids }}次</span> -->
+                </div>
+            </div>
+        </div>
+        <div class="bottom">
+            <div class="tips">结束时间: {{ info.createdAt }}</div>
+            <div class="price">
+                <span class="text1">实际支付</span>
+                <span class="text2">¥{{ info.totalPrice }}</span>
+            </div>
+        </div>
+        <!-- <div class="total-price">
+            <span class="time flex1">{{ info.payTime }}</span>
+            <span>实际支付</span>
+            <span>¥{{ info.gasPrice }}</span>
+        </div> -->
+    </router-link>
+</template>
+
+<script>
+import auctionOrder from '../../mixins/auctionOrder';
+import auction from '../../mixins/auction';
+export default {
+    props: {
+        info: {
+            type: Object,
+            default: () => {
+                return {};
+            }
+        }
+    },
+    mixins: [auctionOrder, auction],
+    computed: {
+        materials() {
+            if (!this.info.material) {
+                return [];
+            } else if (this.info.material.length < 4) {
+                return [...this.info.material] || [];
+            } else {
+                return [...this.info.material].slice(0, 2);
+            }
+        }
+    },
+    methods: {
+        delInit() {
+            this.$emit('delFn');
+        },
+        del() {
+            this.Dialog.confirm({
+                title: '确定删除吗?',
+                message: '删除此记录将消失'
+            }).then(() => {
+                this.$http
+                    .post('/order/hide/', {
+                        id: this.info.id
+                    })
+                    .then(() => {
+                        this.$toast.success('删除成功');
+                        setTimeout(() => {
+                            this.delInit();
+                        }, 1000);
+                    });
+            });
+            // this.$http
+            //     .post('/order/hide/', {
+            //         id: this.info.id
+            //     })
+            //     .then(() => {
+            //         this.$toast.success('删除成功');
+            //         setTimeout(() => {
+            //             this.delInit();
+            //         }, 1000);
+            //     });
+        },
+        likeProduct() {
+            if (!this.info.liked) {
+                this.$http.get(`/collection/${this.info.id}/like`).then(() => {
+                    this.$emit('update:info', {
+                        ...this.info,
+                        liked: true,
+                        likes: this.info.likes + 1
+                    });
+                    this.$toast.success('收藏成功');
+                });
+            } else {
+                this.$http.get(`/collection/${this.info.id}/unlike`).then(() => {
+                    this.$emit('update:info', {
+                        ...this.info,
+                        liked: false,
+                        likes: this.info.likes - 1
+                    });
+                    this.$toast.success('取消收藏');
+                });
+            }
+        },
+        sure() {
+            this.$dialog
+                .confirm({
+                    title: '确定已经收到货了吗?'
+                })
+                .then(() => {
+                    return this.$http.get('/mintOrder/finish/' + this.info.id);
+                })
+                .then(() => {
+                    this.$toast.success('确认成功');
+                    this.$emit('update:info', {
+                        ...this.info,
+                        status: 'FINISH'
+                    });
+                });
+        }
+    }
+};
+</script>
+
+<style lang="less" scoped>
+.orderInfo {
+    background: @bg;
+    border-radius: 12px;
+    color: @text0;
+    padding: 16px 10px 0;
+    margin: 20px 16px 0;
+    display: block;
+}
+.order-top {
+    display: flex;
+    justify-content: space-between;
+    padding-bottom: 10px;
+    span {
+        font-size: 14px;
+        color: @text0;
+        line-height: 22px;
+    }
+
+    .status {
+        color: @prim;
+    }
+}
+
+.order {
+    .flex();
+    .van-image {
+        margin-right: 10px;
+    }
+    position: relative;
+}
+
+.tips {
+    padding: 12px 0;
+    font-size: 12px;
+    color: #c8c9cc;
+    line-height: 24px;
+}
+
+.order-content {
+    position: absolute;
+    right: -8px;
+    top: 28px;
+    .flex();
+    font-size: 12px;
+    color: #c8c9cc;
+    line-height: 24px;
+    img {
+        width: 24px;
+        height: 24px;
+        transform: translateX(-2px);
+    }
+}
+
+.btns {
+    padding: 12px 0;
+    border-top: 1px solid @bg3;
+    .flex();
+    justify-content: flex-end;
+    .sure {
+        border: 1px solid @prim;
+    }
+}
+
+.auction-info {
+    border-radius: 8px;
+    overflow: hidden;
+    background-color: #fff;
+    display: inline-flex;
+    width: calc(100% - 16px);
+    margin: 8px;
+    align-items: stretch;
+    box-sizing: border-box;
+    color: #000;
+    .van-image {
+        flex-shrink: 0;
+    }
+
+    .content {
+        flex-grow: 1;
+        padding: 10px 12px;
+        .flex-col();
+        .text1 {
+            font-size: 14px;
+            font-weight: bold;
+        }
+
+        .text2 {
+            flex-grow: 1;
+            margin-top: 8px;
+
+            .time {
+                .flex();
+                height: 22px;
+                background: #fff7f2;
+                border-radius: 4px;
+                display: inline-flex;
+                padding: 0 4px;
+                img {
+                    width: 18px;
+                    height: 18px;
+                }
+                span {
+                    margin-left: 2px;
+                    .flex();
+                    font-size: 12px;
+                    color: #ff7f1f;
+                    line-height: 22px;
+                    .van-count-down {
+                        font-size: 12px;
+                        color: #ff7f1f;
+                        line-height: 22px;
+                    }
+                }
+            }
+        }
+        .text3 {
+            .flex();
+            .text3-1 {
+                font-size: 12px;
+                color: #c8c9cc;
+                line-height: 17px;
+            }
+            .price {
+                .flex();
+                margin-left: 10px;
+                img {
+                    width: 8px;
+                    height: 8px;
+                    margin-top: 4px;
+                }
+                span {
+                    font-size: 12px;
+                    color: #c8c9cc;
+                    line-height: 17px;
+                }
+
+                flex-grow: 1;
+                padding: 0 2px;
+            }
+
+            .text3-3 {
+                font-size: 10px;
+                color: #c8c9cc;
+                line-height: 10px;
+            }
+        }
+    }
+
+    &.isEnd {
+        .text2 {
+            .time {
+                font-size: 12px;
+                color: #939599;
+                background-color: #f2f4f5;
+            }
+        }
+    }
+}
+
+.bottom {
+    .flex();
+    justify-content: space-between;
+
+    .price {
+        .text1 {
+            font-size: 14px;
+            font-weight: bold;
+            color: #000000;
+            line-height: 24px;
+        }
+
+        .text2 {
+            font-size: 16px;
+            font-weight: bold;
+            color: #939599;
+            line-height: 24px;
+            margin-left: 10px;
+        }
+    }
+}
+</style>

+ 3 - 0
src/mixins/auction.js

@@ -53,6 +53,9 @@ export default {
         },
         },
         showPrice() {
         showPrice() {
             return this.info.purchasePrice || this.info.startingPrice || this.info.fixedPrice || 0;
             return this.info.purchasePrice || this.info.startingPrice || this.info.fixedPrice || 0;
+        },
+        isLeader() {
+            return this.isLogin && this.info.purchaserId === this.$store.state.userInfo.id;
         }
         }
     },
     },
     methods: {
     methods: {

+ 4 - 0
src/mixins/common.js

@@ -177,10 +177,14 @@ export default {
             }
             }
         },
         },
         getLabelName(val = '', list = [], key = 'label') {
         getLabelName(val = '', list = [], key = 'label') {
+            console.log(list);
+            console.log(val);
             let info = list.find(item => {
             let info = list.find(item => {
                 return item.value === val;
                 return item.value === val;
             });
             });
 
 
+            console.log(info);
+
             return info ? info[key] : '';
             return info ? info[key] : '';
         },
         },
         scrollRefreash() {
         scrollRefreash() {

+ 18 - 0
src/router/index.js

@@ -380,6 +380,24 @@ const routes = [
             title: '拍卖'
             title: '拍卖'
         }
         }
     },
     },
+    {
+        path: '/auctionList',
+        name: 'auctionList',
+        component: () => import('../views/auction/List.vue'),
+        meta: {
+            pageType: Page.Every,
+            title: '拍卖'
+        }
+    },
+    {
+        path: '/auctionSearch',
+        name: 'auctionSearch',
+        component: () => import('../views/auction/Search.vue'),
+        meta: {
+            pageType: Page.Every,
+            title: '拍卖'
+        }
+    },
     {
     {
         path: '/auctionOffer',
         path: '/auctionOffer',
         name: 'auctionOffer',
         name: 'auctionOffer',

+ 1 - 1
src/views/Mine.vue

@@ -120,7 +120,7 @@
                 <img src="@assets/info_icon_zhuzaodingdan.png" alt="" />
                 <img src="@assets/info_icon_zhuzaodingdan.png" alt="" />
                 <span>铸造订单</span>
                 <span>铸造订单</span>
             </div>
             </div>
-            <div class="order-info" @click="$router.push('/auctionyOrders')">
+            <div class="order-info" @click="$router.push('/auctionOrders')">
                 <img src="@assets/info_icon_paimaidingdan.png" alt="" />
                 <img src="@assets/info_icon_paimaidingdan.png" alt="" />
                 <span>拍卖订单</span>
                 <span>拍卖订单</span>
             </div>
             </div>

+ 41 - 8
src/views/auction/Detail.vue

@@ -1,5 +1,12 @@
 <template>
 <template>
-    <div class="detail" :class="{ dark: isNFT, isEnd: isEnd }">
+    <van-pull-refresh
+        success-text="加载成功"
+        success-duration="1000"
+        class="detail"
+        :class="{ dark: isNFT, isEnd: isEnd }"
+        v-model="isLoading"
+        @refresh="onRefresh"
+    >
         <div class="top">
         <div class="top">
             <auction-banner :info="info" :assetInfo="assetInfo" @getProduct="getDetail"></auction-banner>
             <auction-banner :info="info" :assetInfo="assetInfo" @getProduct="getDetail"></auction-banner>
             <div class="price-bar" v-if="isEnd">
             <div class="price-bar" v-if="isEnd">
@@ -41,7 +48,7 @@
             </div>
             </div>
         </div>
         </div>
 
 
-        <div class="card">
+        <div class="card" v-if="recordNum > 0">
             <div class="card-title" @click="showRecord">
             <div class="card-title" @click="showRecord">
                 <img src="../../assets/icon-paimaijilu-bai.png" v-if="isNFT" alt="" />
                 <img src="../../assets/icon-paimaijilu-bai.png" v-if="isNFT" alt="" />
                 <img src="../../assets/icon-paimaijilu.png" alt="" v-else />
                 <img src="../../assets/icon-paimaijilu.png" alt="" v-else />
@@ -126,10 +133,15 @@
                             <div>直接购买</div>
                             <div>直接购买</div>
                             <div class="sub">¥{{ info.fixedPrice }}</div>
                             <div class="sub">¥{{ info.fixedPrice }}</div>
                         </van-button>
                         </van-button>
-                        <van-button type="primary" block v-if="isLogin && info.purchaserId === userInfo.id">
+                        <van-button type="primary" block v-if="isLeader">
                             <div>竞价中</div>
                             <div>竞价中</div>
                             <div class="sub">(出价金额为 ¥{{ info.purchasePrice }})</div>
                             <div class="sub">(出价金额为 ¥{{ info.purchasePrice }})</div>
                         </van-button>
                         </van-button>
+
+                        <van-button type="primary" block v-else-if="isOut" @click="goCreated">
+                            <div>已出局</div>
+                            <div class="sub">(重新出价)</div>
+                        </van-button>
                         <van-button type="primary" block v-else-if="recordInfo.payDeposit" @click="goCreated"
                         <van-button type="primary" block v-else-if="recordInfo.payDeposit" @click="goCreated"
                             >去出价</van-button
                             >去出价</van-button
                         >
                         >
@@ -155,8 +167,8 @@
 
 
         <auction-help ref="help" @changePopup="changePopup"></auction-help>
         <auction-help ref="help" @changePopup="changePopup"></auction-help>
         <auction-rule ref="rule" @changePopup="changePopup"></auction-rule>
         <auction-rule ref="rule" @changePopup="changePopup"></auction-rule>
-        <auction-records ref="record" :auctionId="auctionId"></auction-records>
-    </div>
+        <auction-records ref="record" :auctionId="auctionId" :recordNum="recordNum"></auction-records>
+    </van-pull-refresh>
 </template>
 </template>
 
 
 <script>
 <script>
@@ -227,6 +239,13 @@ export default {
             }
             }
             hours += this.current.hours || 0;
             hours += this.current.hours || 0;
             return hours;
             return hours;
+        },
+        isOut() {
+            if (this.recordInfo.bidderPrice && !this.isLeader) {
+                return true;
+            } else {
+                return false;
+            }
         }
         }
     },
     },
     mounted() {
     mounted() {
@@ -286,7 +305,7 @@ export default {
                 )
                 )
                 .then(res => {
                 .then(res => {
                     this.records = res.content;
                     this.records = res.content;
-                    this.recordNum = res.totalPages;
+                    this.recordNum = res.totalElements;
                 });
                 });
         },
         },
         getDetail() {
         getDetail() {
@@ -294,9 +313,16 @@ export default {
                 message: '加载中...',
                 message: '加载中...',
                 forbidClick: true
                 forbidClick: true
             });
             });
-            this.$http
+            return this.$http
                 .get('/auctionActivity/get/' + this.auctionId)
                 .get('/auctionActivity/get/' + this.auctionId)
                 .then(res => {
                 .then(res => {
+                    // res.model3d = {
+                    //     name: '99.FBX',
+                    //     thumb: null,
+                    //     type: null,
+                    //     url: 'https://cdn.raex.vip/fbx/2022-01_20-11/LzpIMaHFSiCmINEx/99.FBX'
+                    // };
+
                     this.info = res;
                     this.info = res;
                     this.startCount();
                     this.startCount();
                     this.getRecord();
                     this.getRecord();
@@ -344,13 +370,20 @@ export default {
             });
             });
         },
         },
         goDeposit() {
         goDeposit() {
-            this.$refs.deposit.init();
+            this.checkLogin().then(() => {
+                this.$refs.deposit.init();
+            });
         },
         },
         goCreated() {
         goCreated() {
             this.$router.push('/auctionOffer?auctionId=' + this.auctionId);
             this.$router.push('/auctionOffer?auctionId=' + this.auctionId);
         },
         },
         showRecord() {
         showRecord() {
             this.$refs.record.show = true;
             this.$refs.record.show = true;
+        },
+        onRefresh() {
+            this.getDetail().then(() => {
+                this.isLoading = false;
+            });
         }
         }
     }
     }
 };
 };

+ 25 - 5
src/views/auction/Home.vue

@@ -1,9 +1,16 @@
 <template>
 <template>
-    <div class="auction">
+    <van-pull-refresh
+        class="auction"
+        success-text="加载成功"
+        success-duration="1000"
+        :style="{ backgroundColor: isSearch ? $colors.bg3 : $colors.bg }"
+        v-model="isLoading"
+        @refresh="onRefresh"
+    >
         <van-sticky :offset-top="46">
         <van-sticky :offset-top="46">
             <div class="search-bar">
             <div class="search-bar">
                 <span class="icon">拍卖中心</span>
                 <span class="icon">拍卖中心</span>
-                <div class="search-input">
+                <div class="search-input" @click="$router.push('/auctionSearch')">
                     <img src="../../assets/icon-sosuo1.png" alt="" />
                     <img src="../../assets/icon-sosuo1.png" alt="" />
                     <span>搜索你要的精彩</span>
                     <span>搜索你要的精彩</span>
                 </div>
                 </div>
@@ -23,9 +30,17 @@
             </swiper-slide>
             </swiper-slide>
         </swiper>
         </swiper>
         <van-grid :border="false">
         <van-grid :border="false">
-            <van-grid-item :icon="require('../../assets/yikou.png')" text="随时拍" />
+            <van-grid-item
+                :icon="require('../../assets/yikou.png')"
+                :to="{ path: '/auctionList', query: { status: 'ONGOING', pageName: '随时拍' } }"
+                text="随时拍"
+            />
             <van-grid-item :icon="require('../../assets/suishi.png')" text="一口价" />
             <van-grid-item :icon="require('../../assets/suishi.png')" text="一口价" />
-            <van-grid-item :icon="require('../../assets/shuzi.png')" text="数字艺术" />
+            <van-grid-item
+                :icon="require('../../assets/shuzi.png')"
+                :to="{ path: '/auctionList', query: { auctionType: 'NFT', pageName: '数字艺术' } }"
+                text="数字艺术"
+            />
             <van-grid-item :icon="require('../../assets/zhengji.png')" text="拍卖征集" />
             <van-grid-item :icon="require('../../assets/zhengji.png')" text="拍卖征集" />
         </van-grid>
         </van-grid>
         <van-tabs v-model:active="auctionType" @change="getData(true)">
         <van-tabs v-model:active="auctionType" @change="getData(true)">
@@ -46,7 +61,7 @@
                 description="没有任何藏品哦~"
                 description="没有任何藏品哦~"
             />
             />
         </van-list>
         </van-list>
-    </div>
+    </van-pull-refresh>
 </template>
 </template>
 
 
 <script>
 <script>
@@ -108,6 +123,11 @@ export default {
                     auctionType: this.auctionType
                     auctionType: this.auctionType
                 }
                 }
             };
             };
+        },
+        onRefresh() {
+            Promise.all([this.getBanner(), this.getData(true)]).then(() => {
+                this.isLoading = false;
+            });
         }
         }
     },
     },
     activated() {
     activated() {

+ 406 - 0
src/views/auction/List.vue

@@ -0,0 +1,406 @@
+<template>
+    <van-pull-refresh
+        success-text="加载成功"
+        success-duration="1000"
+        class="follow"
+        v-model="isLoading"
+        @refresh="onRefresh"
+    >
+        <van-sticky ref="top" class="list-top" :offset-top="bar.value && bar.value.show ? 46 : 0">
+            <div class="top" v-if="!minterId">
+                <div class="name">{{ pageName }}</div>
+                <img src="@assets/icon-sosuo.png" alt="" @click="goSearch" class="search" />
+            </div>
+            <van-tabs
+                v-model:active="sort"
+                :ellipsis="false"
+                line-width="16"
+                line-height="2"
+                @click-tab="changeTab"
+                :class="{ trans: source == 'TRANSFER' }"
+            >
+                <van-tab
+                    :title="item.label"
+                    :name="item.value"
+                    :title-class="item.type === 'select' && sortDes ? sortDes : ''"
+                    :key="index"
+                    v-for="(item, index) in selectOptions"
+                >
+                    <template v-if="item.type === 'select'" #title>
+                        <div class="tab">
+                            <span>{{ item.label }}</span>
+                            <van-icon size="8" name="arrow-up" />
+                            <van-icon size="8" name="arrow-down" />
+                        </div>
+                    </template>
+                </van-tab>
+            </van-tabs>
+            <!-- <van-checkbox v-if="source == 'TRANSFER' && !title" @change="getData(true)" class="sala" v-model="salable"
+                >仅看在售</van-checkbox
+            > -->
+
+            <van-button
+                @click="changeSort"
+                v-if="source == 'TRANSFER' && !title"
+                class="sala"
+                color="#F5F7FA"
+                type="primary"
+                size="small"
+                icon="arrow-down"
+                icon-position="right"
+                round
+                >{{ salable ? '在售中' : salable === false ? '仅展示' : '综合排序' }}</van-button
+            >
+        </van-sticky>
+
+        <van-action-sheet
+            v-model:show="showAction"
+            @select="selectAction"
+            :actions="actions"
+            cancel-text="取消"
+            close-on-click-action
+        />
+
+        <van-list v-model:loading="loading" :finished="finished" finished-text="" @load="getData">
+            <template v-for="(item, index) in showList" :key="index">
+                <auction-info v-model:info="list[index]"></auction-info>
+            </template>
+
+            <van-empty
+                :image="require('@assets/kong_png_yongyoude  (1).png')"
+                v-if="empty"
+                description="没有任何藏品哦~"
+            />
+        </van-list>
+    </van-pull-refresh>
+</template>
+
+<script>
+import auctionInfo from '../../components/auction/info.vue';
+import product from '../../mixins/product';
+import list from '../../mixins/list';
+import banner from '../../mixins/banner';
+export default {
+    name: 'productList',
+    components: { auctionInfo },
+    inject: ['bar', 'setKeeps', 'scrollWrapper', 'changeScroll'],
+    mixins: [product, list, banner],
+    data() {
+        return {
+            list: [],
+            empty: false,
+            beforeSort: '',
+            sort: 'id,desc',
+            sortDes: '',
+            auctionType: '',
+            source: '',
+            minterId: '',
+            selectOptions: [
+                {
+                    label: '全部',
+                    value: 'id,desc'
+                },
+                {
+                    label: '最新',
+                    value: 'id,desc;'
+                },
+                {
+                    label: '最热',
+                    value: 'likes,desc'
+                }
+                // {
+                //     label: '价格',
+                //     value: 'price',
+                //     type: 'select'
+                // }
+            ],
+            url: '/auctionActivity/all',
+            title: '',
+            salable: '',
+            scrollTop: 0,
+            showAction: false,
+            banners: [],
+            swiperRef: null,
+            pageName: '',
+            status: ''
+        };
+    },
+    computed: {
+        showList() {
+            let list = [];
+            let allList = [...this.list];
+            allList.forEach(item => {
+                let info = list.find(_item => {
+                    return _item.id === item.id;
+                });
+                if (!info) {
+                    list.push(item);
+                }
+            });
+            return list;
+        },
+        actions() {
+            let list = [{ name: '综合排序' }, { name: '在售中' }, { name: '仅展示' }];
+            if (this.salable === '') {
+                list[0].color = this.$colors.prim;
+            }
+            if (this.salable === true) {
+                list[1].color = this.$colors.prim;
+            }
+            if (this.salable === false) {
+                list[2].color = this.$colors.prim;
+            }
+            return list;
+        }
+    },
+    mounted() {
+        this.$store.dispatch('getUsedBuy');
+        if (this.$route.query.auctionType) {
+            this.auctionType = this.$route.query.auctionType;
+        }
+        if (this.$route.query.status) {
+            this.status = this.$route.query.status;
+        }
+
+        if (this.$route.query.pageName) {
+            this.pageName = this.$route.query.pageName;
+        }
+    },
+    methods: {
+        changeSort() {
+            this.showAction = true;
+        },
+        selectAction(action) {
+            if (action.name == '综合排序') {
+                this.salable = '';
+            }
+            if (action.name == '在售中') {
+                this.salable = true;
+            }
+            if (action.name == '仅展示') {
+                this.salable = false;
+            }
+            this.getData(true);
+        },
+        changeTab(info) {
+            console.log(info);
+            this.$nextTick(() => {
+                if (info.name === 'price') {
+                    this.sortDes = this.sortDes == 'desc' ? 'asc' : 'desc';
+                }
+                this.getData(true);
+            });
+        },
+        beforeData() {
+            let sort = this.sort;
+            if (sort == 'price') {
+                sort = 'price,' + this.sortDes;
+            }
+            return {
+                query: {
+                    auctionType: this.auctionType,
+                    del: false,
+                    status: this.status
+                },
+                sort: this.sort === 'id,desc' ? this.sortOptions[this.title] || sort : sort
+            };
+        },
+        goSearch() {
+            let url = '/auctionSearch';
+            if (this.auctionType) {
+                url += '?auctionType=' + this.type;
+            }
+            if (this.status) {
+                url += '?status=' + this.status;
+            }
+            this.$router.push(url);
+        },
+        setSwiperRef(ref) {
+            this.swiperRef = ref;
+        },
+        onRefresh() {
+            this.getData(true).then(() => {
+                this.isLoading = false;
+            });
+        }
+    },
+    activated() {
+        this.$nextTick(() => {
+            this.changeScroll(this.scrollTop);
+            setTimeout(() => {
+                this.sort = this.beforeSort;
+            }, 1000);
+        });
+    },
+    beforeRouteLeave(to, from, next) {
+        if (to.name === 'productDetail') {
+            this.beforeSort = this.sort;
+            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.setKeeps(['productList']);
+        } else {
+            this.beforeSort = '';
+            this.scrollTop = 0;
+            this.setKeeps(['productList'], false);
+        }
+        next();
+    }
+};
+</script>
+
+<style lang="less" scoped>
+.follow {
+    background-color: @bg3;
+    padding-bottom: 100px;
+}
+.van-list {
+    padding: 8px;
+    box-sizing: border-box;
+    min-height: calc(100vh - 200px);
+}
+.top {
+    background-color: @bg;
+    padding: 0 16px;
+    height: 50px;
+    display: flex;
+    align-items: center;
+    position: relative;
+    .name {
+        font-size: @font3;
+        font-weight: bold;
+        color: @text0;
+        line-height: 30px;
+    }
+
+    .search {
+        width: 24px;
+        height: 24px;
+        position: absolute;
+        right: 16px;
+        top: 13px;
+    }
+}
+
+/deep/.van-tabs__nav--line.van-tabs__nav--complete {
+    border-color: @tabBorder;
+}
+// /deep/.van-tab {
+// flex-grow: 0;
+// padding: 0 0 0 0;
+// margin-right: 50px;
+
+.tab {
+    position: relative;
+    padding-right: 14px;
+    .van-icon {
+        position: absolute;
+        right: 0;
+
+        &.van-icon-arrow-down {
+            top: 8px;
+        }
+
+        &.van-icon-arrow-up {
+            bottom: 8px;
+        }
+    }
+}
+
+/deep/.trans {
+    .van-tab {
+        margin-right: 30px;
+    }
+}
+
+.van-tabs {
+    background-color: @bg;
+}
+
+.list-top {
+    position: relative;
+}
+/deep/.sala {
+    position: absolute;
+    right: 16px;
+    top: 57px;
+    color: @text3!important;
+    min-width: 92px;
+    font-size: 14px;
+    // .van-checkbox__icon {
+    //     color: #fff;
+    //     transform: scale(0.6);
+
+    //     .van-icon {
+    //         border-color: @text3;
+    //     }
+
+    //     &.van-checkbox__icon--checked {
+    //         .van-icon {
+    //             border-width: 0;
+    //             .linear();
+    //             &::before {
+    //                 color: #fff;
+    //             }
+    //         }
+    //     }
+    // }
+    // .van-checkbox__label {
+    //     color: @text3;
+    //     margin-left: 0px;
+    //     font-size: @font1;
+    // }
+}
+.swiperContent {
+    background: #fff;
+    border-bottom: 1px solid @tabBorder;
+}
+::v-deep(.mySwiper) {
+    width: calc(100vw - 32px);
+    height: 134px;
+    padding: 20px 0;
+
+    .swiper-pagination {
+        bottom: 6px;
+    }
+
+    .swiper-pagination-bullet {
+        width: 6px;
+        height: 2px;
+        border-radius: 1px;
+        background: #d7d7d7;
+        margin: 0 3px;
+    }
+
+    .swiper-pagination-bullet-active {
+        background: @prim;
+    }
+}
+
+.swiper-slide {
+    text-align: center;
+    font-size: 18px;
+    width: 132px;
+    height: 132px;
+
+    /* Center slide text vertically */
+    display: -webkit-box;
+    display: -ms-flexbox;
+    display: -webkit-flex;
+    display: flex;
+    -webkit-box-pack: center;
+    -ms-flex-pack: center;
+    -webkit-justify-content: center;
+    justify-content: center;
+    -webkit-box-align: center;
+    -ms-flex-align: center;
+    -webkit-align-items: center;
+    align-items: center;
+}
+
+.swiper-slide img {
+    display: block;
+    width: 100%;
+    height: 100%;
+    object-fit: cover;
+    border-radius: 12px;
+}
+</style>

+ 12 - 0
src/views/auction/Offer.vue

@@ -16,6 +16,9 @@
                     v-model="value"
                     v-model="value"
                     theme="round"
                     theme="round"
                     button-size="22"
                     button-size="22"
+                    :decimal-length="2"
+                    allow-empty
+                    :default-value="defValue"
                 />
                 />
                 <div class="panel-tips">加价幅度¥{{ info.increment }}</div>
                 <div class="panel-tips">加价幅度¥{{ info.increment }}</div>
                 <van-button type="primary" block round @click="submit">立即出价</van-button>
                 <van-button type="primary" block round @click="submit">立即出价</van-button>
@@ -35,6 +38,8 @@
                         <span>¥{{ item.bidderPrice || 0 }}</span>
                         <span>¥{{ item.bidderPrice || 0 }}</span>
                     </div>
                     </div>
                 </div>
                 </div>
+
+                <div class="empty" v-if="records.length === 0">暂无数据</div>
             </div>
             </div>
         </div>
         </div>
     </div>
     </div>
@@ -281,4 +286,11 @@ export default {
         }
         }
     }
     }
 }
 }
+
+.empty {
+    text-align: center;
+    font-size: 12px;
+    color: #939599;
+    padding: 16px;
+}
 </style>
 </style>

+ 426 - 0
src/views/auction/Search.vue

@@ -0,0 +1,426 @@
+<template>
+    <van-pull-refresh
+        class="search"
+        success-text="加载成功"
+        success-duration="1000"
+        :style="{ backgroundColor: isSearch ? $colors.bg3 : $colors.bg }"
+        v-model="isLoading"
+        @refresh="onRefresh"
+    >
+        <van-sticky ref="top" class="list-top" :offset-top="bar.value && bar.value.show ? 46 : 0">
+            <van-search
+                ref="top"
+                shape="round"
+                v-model="search"
+                placeholder="请输入"
+                show-action
+                autofocus
+                :left-icon="require('@assets/svgs/icon-sosuo.svg')"
+                @search="getSearch"
+            >
+                <template #action>
+                    <div v-if="!isSearch" @click="getSearch(search)">搜索</div>
+                    <div v-else @click="onCancel">取消</div>
+                </template>
+            </van-search>
+            <van-tabs
+                v-if="isSearch"
+                v-model:active="sort"
+                :ellipsis="false"
+                line-width="16"
+                line-height="2"
+                @click-tab="changeTab"
+                :class="{ trans: source == 'TRANSFER' }"
+            >
+                <van-tab
+                    :title="item.label"
+                    :name="item.value"
+                    :title-class="item.type === 'select' && sortDes ? sortDes : ''"
+                    :key="index"
+                    :lazy-render="false"
+                    v-for="(item, index) in selectOptions"
+                >
+                    <template v-if="item.type === 'select'" #title>
+                        <div class="tab">
+                            <span>{{ item.label }}</span>
+                            <van-icon size="8" name="arrow-up" />
+                            <van-icon size="8" name="arrow-down" />
+                        </div>
+                    </template>
+                </van-tab>
+            </van-tabs>
+            <!-- <van-checkbox
+                v-if="isSearch && source == 'TRANSFER' && !title"
+                @change="getData(true)"
+                class="sala"
+                v-model="salable"
+                >仅看在售</van-checkbox
+            > -->
+
+            <van-button
+                @click="changeSort"
+                v-if="isSearch && source == 'TRANSFER' && !title"
+                class="sala"
+                color="#F5F7FA"
+                type="primary"
+                size="small"
+                icon="arrow-down"
+                icon-position="right"
+                round
+                >{{ salable ? '在售中' : salable === false ? '仅展示' : '综合排序' }}</van-button
+            >
+        </van-sticky>
+
+        <van-action-sheet
+            v-model:show="showAction"
+            @select="selectAction"
+            :actions="actions"
+            cancel-text="取消"
+            close-on-click-action
+        />
+        <van-list
+            class="list"
+            v-model:loading="loading"
+            :immediate-check="false"
+            :finished="finished"
+            finished-text=""
+            @load="getData"
+            v-if="isSearch"
+        >
+            <template v-for="(item, index) in list" :key="index">
+                <auction-info v-model:info="list[index]"></auction-info>
+            </template>
+            <van-empty v-if="empty" description="什么都没有搜到哦~" :image="require('@assets/kong_png_wusousuo.png')" />
+        </van-list>
+        <div class="search-content" v-else>
+            <div class="hot-content" v-if="historys.length > 0">
+                <div class="title">最近搜索</div>
+                <div class="hot-list">
+                    <span v-for="(item, index) in historys" :key="index" @click="getSearch(item)">{{ item }}</span>
+                </div>
+            </div>
+            <div class="hot-content" v-if="hots.length > 0">
+                <div class="title">热门搜索</div>
+                <div class="hot-list">
+                    <span v-for="(item, index) in hots" :key="index" @click="getSearch(item)">{{ item }}</span>
+                </div>
+            </div>
+        </div>
+    </van-pull-refresh>
+</template>
+
+<script>
+import auctionInfo from '../../components/auction/info.vue';
+import product from '../../mixins/product';
+import list from '../../mixins/list';
+import search from '../../mixins/search';
+export default {
+    name: 'auctionSearch',
+    components: { auctionInfo },
+    inject: ['bar', 'setKeeps', 'scrollWrapper', 'changeScroll'],
+    mixins: [product, list, search],
+    data() {
+        return {
+            list: [],
+            beforeSort: '',
+            empty: false,
+            search: '',
+            stiky: null,
+            auctionType: '',
+            source: '',
+            status: '',
+            minterId: '',
+            url: '/auctionActivity/all',
+            scrollTop: 0,
+            sort: 'id,desc',
+            sortDes: '',
+            title: '',
+            selectOptions: [
+                {
+                    label: '全部',
+                    value: 'id,desc'
+                },
+                {
+                    label: '最新',
+                    value: 'createdAt,desc'
+                },
+                {
+                    label: '最热',
+                    value: 'likes,desc'
+                }
+                // {
+                //     label: '价格',
+                //     value: 'price',
+                //     type: 'select'
+                // }
+            ],
+            salable: '',
+            showAction: false
+        };
+    },
+    watch: {
+        isSearch() {
+            this.changeScroll(0);
+        }
+    },
+    computed: {
+        actions() {
+            let list = [{ name: '综合排序' }, { name: '在售中' }, { name: '仅展示' }];
+            if (this.salable === '') {
+                list[0].color = this.$colors.prim;
+            }
+            if (this.salable === true) {
+                list[1].color = this.$colors.prim;
+            }
+            if (this.salable === false) {
+                list[2].color = this.$colors.prim;
+            }
+            return list;
+        }
+    },
+    mounted() {
+        this.$store.dispatch('getUsedBuy');
+        if (this.$route.query.auctionType) {
+            this.auctionType = this.$route.query.auctionType;
+        }
+        if (this.$route.query.status) {
+            this.status = this.$route.query.status;
+        }
+        if (this.$route.query.search) {
+            this.search = this.$route.query.search;
+            this.getSearch(this.search);
+        }
+    },
+    methods: {
+        changeSort() {
+            this.showAction = true;
+        },
+        selectAction(action) {
+            if (action.name == '综合排序') {
+                this.salable = '';
+            }
+            if (action.name == '在售中') {
+                this.salable = true;
+            }
+            if (action.name == '仅展示') {
+                this.salable = false;
+            }
+            this.getData(true);
+        },
+        changeTab(info) {
+            this.$nextTick(() => {
+                if (info.name === 'price') {
+                    this.sortDes = this.sortDes == 'desc' ? 'asc' : 'desc';
+                }
+                this.getData(true);
+            });
+        },
+        beforeData() {
+            let sort = this.sort;
+            if (sort == 'price') {
+                sort = 'price,' + this.sortDes;
+            }
+            return {
+                query: {
+                    auctionType: this.auctionType,
+                    status: this.status,
+                    del: false
+                },
+                search: this.search,
+                sort: this.sort === 'id,desc' ? this.sortOptions[this.title] || sort : sort
+            };
+        },
+        onRefresh() {
+            if (this.isSearch) {
+                this.getData(true).then(() => {
+                    this.isLoading = false;
+                });
+            } else {
+                this.$http.get('sysConfig/get/hot_search').then(res => {
+                    this.hots = res.value.split(',').filter(item => {
+                        return item !== ' ' && !!item;
+                    });
+
+                    this.isLoading = false;
+                });
+                this.getHistory();
+            }
+        }
+    },
+    activated() {
+        this.$nextTick(() => {
+            this.changeScroll(this.scrollTop);
+
+            // setTimeout(() => {
+            //     this.sort = this.beforeSort;
+            // }, 1000);
+        });
+    },
+    beforeRouteLeave(to, from, next) {
+        if (to.name === 'auctionDetail') {
+            this.beforeSort = this.sort;
+            this.scrollTop = this.scrollWrapper.value.scrollTop;
+            this.setKeeps(['auctionSearch']);
+        } else {
+            this.beforeSort = '';
+            this.scrollTop = 0;
+            this.setKeeps(['auctionSearch'], false);
+        }
+        next();
+    }
+};
+</script>
+
+<style lang="less" scoped>
+.search {
+    background-color: @bg3;
+    padding-bottom: 100px;
+}
+.top {
+    background-color: @bg3;
+    padding: 0 16px;
+    height: 50px;
+    display: flex;
+    align-items: center;
+    .name {
+        font-size: 20px;
+        // font-weight: bold;
+        color: @prim;
+        line-height: 30px;
+    }
+}
+
+/deep/.trans {
+    .van-tab {
+        margin-right: 30px;
+    }
+}
+
+.list-top {
+    position: relative;
+}
+/deep/.van-tabs {
+    .van-tabs__nav {
+        padding-left: 16px;
+    }
+}
+.list {
+    padding: 8px 8px 100px;
+}
+// /deep/.van-tab {
+// flex-grow: 0;
+// padding: 0 0 0 0;
+// margin-right: 50px;
+
+.tab {
+    position: relative;
+    padding-right: 14px;
+    .van-icon {
+        position: absolute;
+        right: 0;
+
+        &.van-icon-arrow-down {
+            top: 8px;
+        }
+
+        &.van-icon-arrow-up {
+            bottom: 8px;
+        }
+    }
+}
+/deep/.van-tab--active {
+    .tab {
+        .van-icon-arrow-up {
+            color: #646566;
+        }
+    }
+    &.asc {
+        .tab {
+            .van-icon-arrow-up {
+                color: @prim;
+            }
+            .van-icon-arrow-down {
+                color: #646566;
+            }
+        }
+    }
+}
+.van-tabs {
+    background-color: @bg;
+}
+/deep/.van-tabs__nav--line.van-tabs__nav--complete {
+    border-color: @tabBorder;
+}
+/deep/.van-search {
+    .van-field__left-icon {
+        display: flex;
+        align-items: center;
+    }
+    .van-icon {
+        display: flex;
+        align-items: center;
+    }
+    .van-field__control {
+        color: @text0;
+    }
+
+    .van-search__action {
+        color: @text4;
+    }
+}
+
+.hot-content {
+    padding: 10px 0 6px 16px;
+
+    .title {
+        font-size: @font2;
+        color: @text3;
+        line-height: 24px;
+    }
+
+    .hot-list {
+        span {
+            display: inline-block;
+            font-size: @font1;
+            color: @text4;
+            line-height: 22px;
+            padding: 0 12px;
+            margin: 6px 16px 0 0;
+            background: @hotBg;
+            border-radius: 12px;
+        }
+    }
+}
+
+/deep/.sala {
+    position: absolute;
+    right: 16px;
+    top: 60px;
+    color: @text3!important;
+    min-width: 92px;
+    font-size: 14px;
+    // .van-checkbox__icon {
+    //     color: #fff;
+    //     transform: scale(0.6);
+
+    //     .van-icon {
+    //         border-color: @text3;
+    //     }
+
+    //     &.van-checkbox__icon--checked {
+    //         .van-icon {
+    //             border-width: 0;
+    //             .linear();
+    //             &::before {
+    //                 color: #fff;
+    //             }
+    //         }
+    //     }
+    // }
+    // .van-checkbox__label {
+    //     color: @text3;
+    //     margin-left: 0px;
+    //     font-size: @font1;
+    // }
+}
+</style>

+ 20 - 15
src/views/order/AuctionOrders.vue

@@ -10,16 +10,20 @@
         <van-sticky ref="top" :offset-top="46">
         <van-sticky ref="top" :offset-top="46">
             <div class="top">
             <div class="top">
                 <div class="top-btn">
                 <div class="top-btn">
-                    <div class="btn" :class="{ active: type === 'DEFAULT' }" @click="changeActive('DEFAULT')">
+                    <div class="btn" :class="{ active: type === 'ENTITY' }" @click="changeActive('ENTITY')">
                         藏传文玩拍卖
                         藏传文玩拍卖
                     </div>
                     </div>
-                    <div class="btn" :class="{ active: type === 'BLIND_BOX' }" @click="changeActive('BLIND_BOX')">
-                        数字艺术拍卖
-                    </div>
+                    <div class="btn" :class="{ active: type === 'NFT' }" @click="changeActive('NFT')">数字艺术拍卖</div>
                 </div>
                 </div>
             </div>
             </div>
 
 
-            <van-tabs v-model:active="select" :ellipsis="false" line-width="16" line-height="2" @click="changeStatus">
+            <van-tabs
+                v-model:active="paymentType"
+                :ellipsis="false"
+                line-width="16"
+                line-height="2"
+                @click="changeStatus"
+            >
                 <van-tab v-for="(item, index) in tabs" :key="index" :title="item.name" :name="item.status"></van-tab>
                 <van-tab v-for="(item, index) in tabs" :key="index" :title="item.name" :name="item.status"></van-tab>
             </van-tabs>
             </van-tabs>
 
 
@@ -29,26 +33,26 @@
         </van-sticky>
         </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">
-            <order-info-act
+            <order-info-auction
                 @delFn="delFn"
                 @delFn="delFn"
                 v-for="(item, index) in list"
                 v-for="(item, index) in list"
                 :key="item.id"
                 :key="item.id"
                 v-model:info="list[index]"
                 v-model:info="list[index]"
-            ></order-info-act>
+            ></order-info-auction>
             <van-empty v-if="empty" description="你还没有订单哦~" :image="require('@assets/kong_png_wudingdan.png')" />
             <van-empty v-if="empty" description="你还没有订单哦~" :image="require('@assets/kong_png_wudingdan.png')" />
         </van-list>
         </van-list>
     </van-pull-refresh>
     </van-pull-refresh>
 </template>
 </template>
 
 
 <script>
 <script>
-import OrderInfoAct from '../../components/order/OrderInfoAct.vue';
+import OrderInfoAuction from '../../components/order/OrderInfoAuction.vue';
 import list from '../../mixins/list';
 import list from '../../mixins/list';
 export default {
 export default {
     name: 'discover',
     name: 'discover',
     inject: ['bar'],
     inject: ['bar'],
     mixins: [list],
     mixins: [list],
     components: {
     components: {
-        OrderInfoAct
+        OrderInfoAuction
     },
     },
     data() {
     data() {
         return {
         return {
@@ -57,14 +61,14 @@ export default {
             status: 'DELIVERY,PENDING,RECEIVE,AIR_DROP,FINISH',
             status: 'DELIVERY,PENDING,RECEIVE,AIR_DROP,FINISH',
             type: 'DEFAULT',
             type: 'DEFAULT',
             list: [],
             list: [],
-            select: 'DELIVERY,PENDING,RECEIVE,AIR_DROP,FINISH',
+            paymentType: 'FIXED_PRICE',
             tabs: [
             tabs: [
                 {
                 {
-                    status: 'DELIVERY,PENDING,RECEIVE,AIR_DROP,FINISH',
+                    status: 'FIXED_PRICE',
                     name: '一口价订单'
                     name: '一口价订单'
                 },
                 },
                 {
                 {
-                    status: 'PENDING',
+                    status: 'PURCHASE_PRICE',
                     name: '竞拍订单'
                     name: '竞拍订单'
                 }
                 }
             ],
             ],
@@ -86,7 +90,7 @@ export default {
                     name: '已完成'
                     name: '已完成'
                 }
                 }
             ],
             ],
-            url: '/mintOrder/all'
+            url: '/auctionOrder/all'
         };
         };
     },
     },
     mounted() {
     mounted() {
@@ -99,7 +103,8 @@ export default {
             return {
             return {
                 query: {
                 query: {
                     userId: this.$store.state.userInfo.id,
                     userId: this.$store.state.userInfo.id,
-                    status: this.status,
+                    paymentType: this.paymentType,
+                    // status: this.status,
                     // type: this.type,
                     // type: this.type,
                     hide: false,
                     hide: false,
                     del: false
                     del: false
@@ -123,7 +128,7 @@ export default {
         },
         },
         changeActive(type) {
         changeActive(type) {
             this.$router.replace({
             this.$router.replace({
-                path: '/orders',
+                path: '/auctionOrders',
                 query: {
                 query: {
                     status: this.status,
                     status: this.status,
                     type: type
                     type: type