Selaa lähdekoodia

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

panhui 4 vuotta sitten
vanhempi
commit
864d1a18ef

+ 5 - 0
src/main/java/com/izouma/nineth/repo/GiftOrderRepo.java

@@ -1,8 +1,13 @@
 package com.izouma.nineth.repo;
 
 import com.izouma.nineth.domain.GiftOrder;
+import com.izouma.nineth.enums.OrderStatus;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 
+import java.time.LocalDateTime;
+import java.util.List;
+
 public interface GiftOrderRepo extends JpaRepository<GiftOrder, Long>, JpaSpecificationExecutor<GiftOrder> {
+    List<GiftOrder> findByStatusAndCreatedAtBeforeAndDelFalse(OrderStatus status, LocalDateTime time);
 }

+ 27 - 0
src/main/java/com/izouma/nineth/service/GiftOrderService.java

@@ -26,6 +26,7 @@ import org.apache.commons.codec.EncoderException;
 import org.apache.commons.codec.net.URLCodec;
 import org.springframework.context.ApplicationContext;
 import org.springframework.core.env.Environment;
+import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Service;
 import org.springframework.ui.Model;
 
@@ -33,6 +34,7 @@ import javax.transaction.Transactional;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.util.Arrays;
+import java.util.List;
 
 @Service
 @AllArgsConstructor
@@ -170,4 +172,29 @@ public class GiftOrderService {
         }
         throw new BusinessException("不支持此付款方式");
     }
+
+    @Scheduled(fixedRate = 60000)
+    public void batchCancel() {
+        List<GiftOrder> orders = giftOrderRepo.findByStatusAndCreatedAtBeforeAndDelFalse(OrderStatus.NOT_PAID,
+                LocalDateTime.now().minusMinutes(5));
+        orders.forEach(o -> {
+            try {
+                cancel(o);
+            } catch (Exception ignored) {
+            }
+        });
+    }
+
+    public void cancel(GiftOrder order) {
+        if (order.getStatus() != OrderStatus.NOT_PAID) {
+            throw new BusinessException("已支付订单无法取消");
+        }
+        Asset asset = assetRepo.findById(order.getAssetId()).orElseThrow(new BusinessException("藏品不存在"));
+        asset.setStatus(AssetStatus.NORMAL);
+        assetRepo.save(asset);
+
+        order.setStatus(OrderStatus.CANCELLED);
+        order.setCancelTime(LocalDateTime.now());
+        giftOrderRepo.save(order);
+    }
 }

+ 6 - 1
src/main/java/com/izouma/nineth/service/OrderService.java

@@ -344,7 +344,12 @@ public class OrderService {
     public void batchCancel() {
         List<Order> orders = orderRepo.findByStatusAndCreatedAtBeforeAndDelFalse(OrderStatus.NOT_PAID,
                 LocalDateTime.now().minusMinutes(5));
-        orders.forEach(this::cancel);
+        orders.forEach(o -> {
+            try {
+                cancel(o);
+            } catch (Exception ignored) {
+            }
+        });
     }
 
     public void refundCancelled(Order order) {

BIN
src/main/pc-space/src/assets/bg@3x.png


+ 10 - 6
src/main/pc-space/src/components/ConsignmentInfo.vue

@@ -13,7 +13,7 @@
             <div class="name" v-for="(item, index) in list" :key="index">
                 <span>{{ item.title }}</span>
             </div>
-            <div class="name">4. 平台会收取作品出售价格的<span> 5% </span>作为服务费</div>
+            <div class="name">4. 平台会收取作品出售价格的<span style="color: #ff4f50"> 5% </span>作为服务费</div>
             <div class="name">5. 因电子支付通道限制,单笔限额20000元</div>
             <div class="border1"></div>
             <div class="title">寄售价格</div>
@@ -178,12 +178,16 @@ input::-webkit-inner-spin-button {
     background: #ffffff;
     border-radius: 8px;
     .el-dialog__title {
-        font-size: 20px;
-        font-weight: 500;
-        color: #292c33;
-        line-height: 28px;
+        font-size: 18px;
+        font-family: PingFangSC-Medium, PingFang SC;
+        font-weight: bold;
+        color: #000000;
+        line-height: 24px;
     }
 }
+/deep/ .el-dialog__header {
+    padding: 18px 0;
+}
 /deep/ .el-dialog__body {
     padding: 0;
 }
@@ -207,7 +211,7 @@ input::-webkit-inner-spin-button {
     border: 0;
 }
 .content {
-    margin-top: 0;
+    margin-top: 0 !important;
     .title {
         font-size: 16px;
         font-weight: 400;

+ 3 - 4
src/main/pc-space/src/components/CouponInfo.vue

@@ -135,11 +135,11 @@ export default {
     margin-bottom: 16px;
     .box {
         display: flex;
+        align-items: center;
+        justify-content: center;
         .img {
             width: 189px;
             height: 120px;
-            position: relative;
-            z-index: 1;
         }
         .coupon-top {
             padding: 16px 0;
@@ -152,14 +152,13 @@ export default {
                 font-weight: bold;
                 color: #1a1a1a;
                 line-height: 36px;
-                margin: 15px 0 0 27px;
             }
             .text2 {
                 font-size: 12px;
                 font-weight: 400;
                 color: #1a1a1a;
                 line-height: 22px;
-                margin-left: 30px;
+                text-align: center;
             }
         }
     }

+ 17 - 3
src/main/pc-space/src/components/PageHeader.vue

@@ -1,6 +1,6 @@
 <template>
     <div class="container">
-        <div class="header center-content">
+        <div class="header top-content">
             <router-link class="logo-link" :to="{ path: '/' }">
                 <img class="logo" src="../assets/nav_logo@3x (1).png" alt=""
             /></router-link>
@@ -60,7 +60,7 @@ export default {
             show: false,
             activeName: '',
             lists: '',
-            url: '/identityAuth/all',
+            // url: '/identityAuth/all',
             menus: [
                 {
                     label: '铸造者',
@@ -74,6 +74,10 @@ export default {
                     label: '数字盲盒',
                     value: '/collection?type=BLIND_BOX'
                 },
+                {
+                    label: '铸造商店',
+                    value: 'wait'
+                },
                 {
                     label: '我的藏品',
                     value: '/my'
@@ -314,18 +318,28 @@ export default {
     width: 100%;
     position: sticky;
     top: 0;
-    z-index: 20;
+    z-index: 999;
 
     .header {
         display: flex;
         align-items: center;
         justify-content: space-between;
+        &.top-content {
+            width: 100%;
+            box-sizing: border-box;
+            padding: 0 45px;
+            // max-width: 1300px;
+            // max-width: 1600px;
+            margin: 0 auto;
+            margin-right: 0 !important;
+        }
         .logo {
             width: 130px;
             height: 50px;
         }
         .logo-link {
             padding: 15px 0px 15px 0px;
+            margin-left: 12.5%;
         }
         .content {
             display: flex;

+ 47 - 25
src/main/pc-space/src/views/AssetDetail.vue

@@ -141,9 +141,7 @@
                         </div>
                         <div class="del" v-else>铸造者未设置</div>
                     </div>
-
                     <div class="bor"></div>
-                    <!-- <div v-if="init"> -->
                     <div class="iconBox" v-if="init.length > 0">
                         <div v-for="(item, index) in init" :key="index">
                             <div
@@ -176,14 +174,13 @@
                         </div>
                     </div>
                     <div class="del" v-else>铸造者未设置</div>
-                    <!-- </div> -->
                 </div>
                 <div style="margin-top: 30px">
                     <div class="time">
                         <div class="time1">商品特性</div>
                     </div>
                     <div class="card">
-                        <div v-if="properties.length != 0">
+                        <div class="storeCard" v-if="properties.length != 0">
                             <div class="box1" v-for="(item, index) in properties" :key="index">
                                 <div class="box2">{{ item.name }}</div>
                                 <div class="box3">{{ item.value }}</div>
@@ -218,9 +215,28 @@
                             <span>交易历史</span>
                         </template>
                         <el-table :data="tableData" stripe style="width: 100%; background: #1c1e26">
-                            <el-table-column prop="fromUser" label="用户" width="555"> </el-table-column>
-                            <el-table-column prop="operation" label="操作" width="455"> </el-table-column>
-                            <el-table-column prop="createdAt" label="时间"> </el-table-column>
+                            <el-table-column prop="fromUser" label="用户" width="455">
+                                <template slot-scope="scope">
+                                    <div style="color: #fdfb60; font-size: 16px">
+                                        {{ scope.row.fromUser }}
+                                    </div>
+                                </template>
+                            </el-table-column>
+                            <el-table-column prop="operation" label="操作" width="505">
+                                <template slot-scope="scope">
+                                    <div style="font-size: 16px">
+                                        {{ scope.row.operation }}
+                                        <span v-if="scope.row.price">{{ scope.row.price }}</span>
+                                    </div>
+                                </template>
+                            </el-table-column>
+                            <el-table-column prop="createdAt" label="时间">
+                                <template slot-scope="scope">
+                                    <div style="font-size: 16px">
+                                        {{ scope.row.createdAt }}
+                                    </div>
+                                </template>
+                            </el-table-column>
                         </el-table>
                     </el-collapse-item>
                 </div>
@@ -1273,24 +1289,30 @@ export default {
             padding: 0 60px;
             display: flex;
             align-items: center;
-            justify-content: space-between;
-            .box1 {
-                width: 120px;
-                height: 62px;
-                text-align: center;
-                .line();
-                .box2 {
-                    font-size: 14px;
-                    font-weight: 400;
-                    color: #939599;
-                    line-height: 24px;
-                    margin-top: 5px;
-                }
-                .box3 {
-                    font-size: 14px;
-                    font-weight: 400;
-                    color: #ffffff;
-                    line-height: 24px;
+            // justify-content: space-between;
+            .storeCard {
+                display: flex;
+                width: 100%;
+                flex-wrap: wrap;
+                .box1 {
+                    width: 120px;
+                    height: 62px;
+                    text-align: center;
+                    margin-left: 20px;
+                    .line();
+                    .box2 {
+                        font-size: 14px;
+                        font-weight: 400;
+                        color: #939599;
+                        line-height: 24px;
+                        margin-top: 5px;
+                    }
+                    .box3 {
+                        font-size: 14px;
+                        font-weight: 400;
+                        color: #ffffff;
+                        line-height: 24px;
+                    }
                 }
             }
         }

+ 66 - 39
src/main/pc-space/src/views/CollectionDetail.vue

@@ -129,11 +129,9 @@
                                 <p>{{ init2.description }}</p>
                             </div>
                         </div>
-                        <div class="del" v-else>铸造者未设置</div>
                     </div>
-
+                    <div class="del" v-else>铸造者未设置</div>
                     <div class="bor"></div>
-                    <!-- <div v-if="init"> -->
                     <div class="iconBox" v-if="init.length > 0">
                         <div v-for="(item, index) in init" :key="index">
                             <div
@@ -150,18 +148,21 @@
                             </div>
                         </div>
                     </div>
-                    <div class="del" v-else>铸造者未设置</div>
-                    <!-- </div> -->
+                    <div v-else class="del">铸造者未设置</div>
                 </div>
-                <div v-if="properties.length > 0">
+
+                <div>
                     <div class="time">
                         <div class="time1">商品特性</div>
                     </div>
                     <div class="card">
-                        <div class="box1" v-for="(item, index) in properties" :key="index">
-                            <div class="box2">{{ item.name }}</div>
-                            <div class="box3">{{ item.value }}</div>
+                        <div class="storeCard" v-if="properties.length != 0">
+                            <div class="box1" v-for="(item, index) in properties" :key="index">
+                                <div class="box2">{{ item.name }}</div>
+                                <div class="box3">{{ item.value }}</div>
+                            </div>
                         </div>
+                        <div class="del" v-else>铸造者未设置</div>
                     </div>
                 </div>
             </div>
@@ -202,9 +203,28 @@
                             <span>交易历史</span>
                         </template>
                         <el-table :data="tableData" stripe style="width: 100%; background: #1c1e26">
-                            <el-table-column prop="fromUser" label="用户" width="555"> </el-table-column>
-                            <el-table-column prop="operation" label="操作" width="455"> </el-table-column>
-                            <el-table-column prop="createdAt" label="时间"> </el-table-column>
+                            <el-table-column prop="fromUser" label="用户" width="455">
+                                <template slot-scope="scope">
+                                    <div style="color: #fdfb60; font-size: 16px">
+                                        {{ scope.row.fromUser }}
+                                    </div>
+                                </template>
+                            </el-table-column>
+                            <el-table-column prop="operation" label="操作" width="505">
+                                <template slot-scope="scope">
+                                    <div style="font-size: 16px">
+                                        {{ scope.row.operation }}
+                                        <span v-if="scope.row.price">{{ scope.row.price }}</span>
+                                    </div>
+                                </template>
+                            </el-table-column>
+                            <el-table-column prop="createdAt" label="时间">
+                                <template slot-scope="scope">
+                                    <div style="font-size: 16px">
+                                        {{ scope.row.createdAt }}
+                                    </div>
+                                </template>
+                            </el-table-column>
                         </el-table>
                     </el-collapse-item>
                 </div>
@@ -656,6 +676,14 @@ export default {
                 cursor: pointer;
             }
         }
+        .del {
+            font-size: 14px;
+            width: 220px;
+            font-weight: 400;
+            color: #939599;
+            line-height: 24px;
+            padding-left: 16px;
+        }
         .init1 {
             display: flex;
             align-items: center;
@@ -694,14 +722,6 @@ export default {
                     cursor: pointer;
                 }
             }
-            .del {
-                font-size: 14px;
-                width: 220px;
-                font-weight: 400;
-                color: #939599;
-                line-height: 24px;
-                padding-left: 16px;
-            }
             .iconBox {
                 margin-left: -22px;
                 display: flex;
@@ -777,29 +797,36 @@ export default {
             height: 112px;
             border-radius: 0px 0px 8px 8px;
             background: #1f2230;
-            padding: 0 60px;
+            padding: 0 40px;
             display: flex;
             align-items: center;
-            justify-content: space-between;
-            .box1 {
-                width: 120px;
-                height: 62px;
-                text-align: center;
-                .line();
-                .box2 {
-                    font-size: 14px;
-                    font-weight: 400;
-                    color: #939599;
-                    line-height: 24px;
-                    margin-top: 5px;
-                }
-                .box3 {
-                    font-size: 14px;
-                    font-weight: 400;
-                    color: #ffffff;
-                    line-height: 24px;
+            // justify-content: space-between;
+            .storeCard {
+                display: flex;
+                width: 100%;
+                flex-wrap: wrap;
+                .box1 {
+                    width: 120px;
+                    height: 62px;
+                    text-align: center;
+                    margin-left: 20px;
+                    .line();
+                    .box2 {
+                        font-size: 14px;
+                        font-weight: 400;
+                        color: #939599;
+                        line-height: 24px;
+                        margin-top: 5px;
+                    }
+                    .box3 {
+                        font-size: 14px;
+                        font-weight: 400;
+                        color: #ffffff;
+                        line-height: 24px;
+                    }
                 }
             }
+
             &.init3 {
                 height: 79px;
                 padding-left: 16px;

+ 107 - 453
src/main/pc-space/src/views/Home.vue

@@ -1,60 +1,20 @@
 <template>
     <div class="container">
-        <div class="topBox1">
-            <img class="topBox" src="../assets/矩形@3x (1).png" alt="" />
-            <div class="header center-content">
-                <!-- <router-link class="logo-link" :to="{ path: '/' }"> -->
-                <img class="logo" src="../assets/nav_logo@3x (1).png" alt="" />
-                <div class="content">
-                    <el-tabs v-model="activeName" class="menus" @tab-click="change">
-                        <el-tab-pane
-                            v-for="(item, index) in menus"
-                            :key="index"
-                            :label="item.label"
-                            :name="item.value"
-                        ></el-tab-pane>
-                    </el-tabs>
-                    <div class="btn-list" v-if="isLogin">
-                        <el-dropdown @command="onCommand" style="margin-left: 20px">
-                            <span class="el-dropdown-link">
-                                <img style="margin-top: 8px" class="img" :src="avatarBox" />
-                            </span>
-                            <el-dropdown-menu slot="dropdown">
-                                <el-dropdown-item command="nickname" style="word-break: keep-all"
-                                    >{{ userInfo.nickname }}
-                                </el-dropdown-item>
-                                <div class="border"></div>
-                                <el-dropdown-item
-                                    v-if="userInfo.authStatus != 'SUCCESS'"
-                                    command="supply"
-                                    style="word-break: keep-all"
-                                    >去认证
-                                </el-dropdown-item>
-                                <el-dropdown-item command="edit" style="word-break: keep-all"
-                                    >编辑资料
-                                </el-dropdown-item>
-                                <div class="border"></div>
-                                <el-dropdown-item command="logout">退出登录 </el-dropdown-item>
-                            </el-dropdown-menu>
-                        </el-dropdown>
-                    </div>
-                    <el-button v-else class="login" plain @click="Login">[登录]</el-button>
-                </div>
-            </div>
+        <img class="topBox" src="../assets/矩形@3x (1).png" alt="" />
 
-            <div class="top center-content">
-                <div>
-                    <div class="title1">嗨! 我们是第九空间</div>
-                    <div class="title2">全球领先的游戏数字藏品NFT集结地</div>
-                    <div class="btnCon" @click="$router.push('/collection')"><span>立即探索</span></div>
-                </div>
-                <div class="back">
-                    <swiper class="mySwiper imgBox" ref="mySwiper" :options="swiperOptions">
-                        <swiper-slide>
-                            <el-image :src="getImg(banners[0].pic, '', 800)" style="width: 500px; height: 500px" />
-                        </swiper-slide>
-                    </swiper>
-                </div>
+        <div class="top">
+            <div class="top1">
+                <div class="title1">嗨! 我们是第九空间</div>
+                <div class="title2">全球领先的游戏数字藏品NFT集结地</div>
+                <div class="btnCon" @click="$router.push('/collection')"><span>立即探索</span></div>
+            </div>
+            <div class="back">
+                <!-- <swiper class="mySwiper imgBoxBack" ref="mySwiper" :options="swiperOptions">
+                    <swiper-slide>
+                    <el-image :src="getImg(banners[0].pic, '', 800)" />
+                    </swiper-slide>
+                </swiper> -->
+                <img class="el-image" src="../assets/bg@3x.png" alt="" />
             </div>
         </div>
 
@@ -166,19 +126,17 @@
                 </div>
             </div>
         </div>
-        <login-info ref="ref" @close="show = false"></login-info>
     </div>
 </template>
 <script>
 import CollectionInfo from '../components/CollectionInfo.vue';
 import MoreTitle from '../components/MoreTitle.vue';
-import LoginInfo from '../components/LoginInfo.vue';
-// import pageableTable from '@/mixins/pageableTable';
-import { mapState, mapMutations } from 'vuex';
+import pageableTable from '@/mixins/pageableTable';
 import { Swiper, SwiperSlide } from 'vue-awesome-swiper';
 import 'swiper/css/swiper.css';
 export default {
-    components: { CollectionInfo, MoreTitle, Swiper, SwiperSlide, LoginInfo },
+    components: { CollectionInfo, MoreTitle, Swiper, SwiperSlide },
+    mixins: [pageableTable],
     data() {
         return {
             creators: [],
@@ -196,51 +154,10 @@ export default {
             active: '',
             show: false,
             activeName: '',
-            lists: '',
-            url: '/identityAuth/all',
-            menus: [
-                {
-                    label: '铸造者',
-                    value: '/casting'
-                },
-                {
-                    label: '收藏探索',
-                    value: '/collection'
-                },
-                {
-                    label: '数字盲盒',
-                    value: '/collection?type=BLIND_BOX'
-                },
-                {
-                    label: '我的藏品',
-                    value: '/my'
-                },
-                {
-                    label: '了解更多',
-                    value: 'wait'
-                }
-            ]
+            lists: ''
         };
     },
-    computed: {
-        ...mapState(['userInfo']),
-        avatarBox() {
-            return this.userInfo.avatar;
-        }
-    },
     mounted() {
-        this.$EventBus.$on('login', () => {
-            this.Login();
-        });
-        this.getActive();
-        if (this.isLogin) {
-            if (this.userInfo.authStatus !== 'NOT_AUTH') {
-                setTimeout(() => {
-                    this.add();
-                }, 1000);
-            }
-        }
-
         this.getCreators();
         this.getProduct().then(res => {
             this.products = res;
@@ -259,169 +176,25 @@ export default {
             .then(res => {
                 this.bannersList = res.content;
             });
-        this.$http
-            .post(
-                '/banner/all',
-                {
-                    query: {
-                        del: false,
-                        type: null
-                    }
-                },
-                { body: 'json' }
-            )
-            .then(res => {
-                console.log(res);
+        // this.$http
+        //     .post(
+        //         '/banner/all',
+        //         {
+        //             query: {
+        //                 del: false,
+        //                 type: null
+        //             }
+        //         },
+        //         { body: 'json' }
+        //     )
+        //     .then(res => {
 
-                this.banners = res.content.filter(item => {
-                    return item.name === '首页大图';
-                });
-            });
+        //         this.banners = res.content.filter(item => {
+        //             return item.name === '首页大图';
+        //         });
+        //     });
     },
     methods: {
-        add() {
-            this.$http
-                .post(
-                    '/identityAuth/all',
-                    {
-                        query: {
-                            userId: this.userInfo.id
-                        },
-                        sort: 'createdAt,desc',
-                        size: 1,
-                        page: 0
-                    },
-                    {
-                        body: 'json'
-                    }
-                )
-                .then(res => {
-                    this.lists = res.content[0].org;
-                    console.log(this.lists);
-                });
-        },
-        Login() {
-            this.$refs.ref.flag();
-        },
-        ...mapMutations(['updateUserInfo']),
-        batchRead() {},
-        onCommand(command) {
-            if (command === 'edit') {
-                this.$router.push('/accountdata');
-            } else if (command === 'nickname') {
-                this.$router.push('/accountdata');
-            } else if (command === 'logout') {
-                localStorage.removeItem('webToken');
-                this.updateUserInfo(null);
-                this.$router.push('/');
-            } else if (command === 'supply') {
-                this.add();
-                if (this.userInfo.authStatus === 'NOT_AUTH') {
-                    this.$router.push('/authentication');
-                } else {
-                    this.$nextTick(() => {
-                        console.log(this.lists);
-                        setTimeout(() => {
-                            if (this.userInfo.authStatus !== 'NOT_AUTH' && this.lists == false) {
-                                this.add();
-                                this.$router.push('/userauthentication');
-                            }
-                        }, 1000);
-                        setTimeout(() => {
-                            if (this.userInfo.authStatus !== 'NOT_AUTH' && this.lists == true) {
-                                this.add();
-                                this.$router.push('/enterpriseauthentication');
-                            }
-                        }, 1000);
-                    });
-                }
-            }
-        },
-        getActive() {
-            this.activeName = '';
-            let menus = [...this.menus];
-            menus.forEach(item => {
-                let _route = this.parsePath(item.value);
-                if (this.$route.path == _route.path && Object.keys(_route.query).length === 0) {
-                    this.activeName = item.value;
-                } else if (this.$route.path == _route.path) {
-                    Object.keys(_route.query).forEach(key => {
-                        if (_route.query[key] === this.$route.query[key]) {
-                            this.activeName = item.value;
-                        }
-                    });
-                }
-            });
-        },
-        change(info) {
-            if (info.paneName !== 'wait') {
-                window.scrollTo({
-                    top: 0,
-                    behavior: 'smooth'
-                });
-                this.$router.push(info.paneName);
-            } else {
-                this.wait();
-            }
-        },
-        parsePath(path = '') {
-            let hash = '';
-            let query = {};
-
-            let hashIndex = path.indexOf('#');
-            if (hashIndex >= 0) {
-                hash = path.slice(hashIndex);
-                path = path.slice(0, hashIndex);
-            }
-
-            let queryIndex = path.indexOf('?');
-            if (queryIndex >= 0) {
-                query = this.parseQuery(path.slice(queryIndex + 1));
-                path = path.slice(0, queryIndex);
-            }
-
-            return {
-                path,
-                query,
-                hash
-            };
-        },
-        parseQuery(query) {
-            const res = {};
-            console.log(query);
-            query = query.trim().replace(/^(\?|#|&)/, '');
-
-            if (!query) {
-                return res;
-            }
-
-            query.split('&').forEach(param => {
-                const parts = param.replace(/\+/g, ' ').split('=');
-                const key = decode(parts.shift());
-                const val = parts.length > 0 ? decode(parts.join('=')) : null;
-
-                if (res[key] === undefined) {
-                    res[key] = val;
-                } else if (Array.isArray(res[key])) {
-                    res[key].push(val);
-                } else {
-                    res[key] = [res[key], val];
-                }
-            });
-
-            function decode(str = '') {
-                try {
-                    return decodeURIComponent(str);
-                } catch (err) {
-                    if (process.env.NODE_ENV !== 'production') {
-                        //   warn(false, `Error decoding "${str}". Leaving it intact.`)
-                    }
-                }
-                return str;
-            }
-
-            return res;
-        },
         getCreators() {
             this.$http
                 .post(
@@ -479,9 +252,6 @@ export default {
         }
     },
     watch: {
-        $route() {
-            this.getActive();
-        },
         initChange() {
             if (this.initChange) {
                 if (this.timer) {
@@ -496,208 +266,92 @@ export default {
 <style lang="less" scoped>
 .topBox {
     width: 100%;
-    height: 550px;
-}
-/deep/.btn-list {
-    .el-tabs__nav-scroll {
-        padding-left: 13px;
-    }
-    .el-tabs__item {
-        font-weight: bold;
-        font-size: 14px;
-        width: 300px;
-    }
-}
-/deep/ .el-dropdown-menu__item {
-    font-weight: bold;
-    text-align: center;
-}
-/deep/.menus {
-    padding: 22px 25px 0px;
-    .el-tabs__item {
-        padding: 0 25px;
-        color: #ffffff;
-        font-size: 16px;
-        font-weight: 400;
-        &.is-active {
-            color: #fff;
-            font-weight: bold;
-        }
-        &:focus {
-            &.is-active.is-focus {
-                box-shadow: none;
-            }
-        }
-    }
-
-    .el-tabs__nav-wrap {
-        &::after {
-            background-color: transparent;
-        }
-    }
-    .el-tabs__active-bar {
-        background-color: transparent;
-        &::after {
-            content: '';
-            position: absolute;
-            left: 30%;
-            right: 30%;
-            background-color: #fff;
-            top: 0;
-            bottom: 0;
-        }
-    }
+    height: 460px;
 }
 .container {
-    .header {
-        background: transparent;
-        z-index: 188;
-        position: absolute;
-        top: 0;
-        left: 0;
-        right: 0;
-        margin: 0 auto;
-        width: 1300px;
-        display: flex;
-        align-items: center;
-        justify-content: space-between;
-        .logo {
-            width: 130px;
-            height: 50px;
-        }
-        .logo-link {
-            padding: 15px 0px 15px 0px;
-        }
-        .content {
-            display: flex;
-            align-items: center;
-            justify-content: space-between;
-            z-index: 88;
-            background: transparent;
-            position: relative;
-            .tabs {
-                display: flex;
-                align-items: center;
-                padding-top: 10px;
-                cursor: pointer;
-                .tab {
-                    width: 130px;
-                    font-size: 18px;
-                    font-weight: bold;
-                    text-align: center;
-                    color: #939599;
-                    line-height: 28px;
-                    &.active {
-                        color: #ffffff;
-                        font-weight: bold;
-                    }
-                    .slip {
-                        width: 26px;
-                        margin: 0 auto;
-                        padding-bottom: 13px;
-                        &.active {
-                            border-bottom: 2px solid #fff;
-                            border-radius: 2px;
-                        }
-                    }
-                }
-            }
-            .btn-list {
-                .img {
-                    width: 34px;
-                    height: 34px;
-                    border-radius: 50%;
-                    display: block;
-                    border: 2px solid #fff;
-                    cursor: pointer;
-                }
-            }
-
-            .login {
-                width: 80px;
-                height: 28px;
-                line-height: 0px;
-                margin-top: 7px;
-                border-radius: 4px;
-                font-size: 14px;
-                font-family: PingFangSC-Regular, PingFang SC;
-                font-weight: 400;
-                color: #ffffff;
-                background: transparent;
-                border: 1px solid #ffffff;
-            }
-        }
-    }
     .top {
         display: flex;
         position: absolute;
-        width: 1300px;
-        margin: auto;
+        width: 100%;
         top: 0;
         left: 0;
         right: 0;
         z-index: 88;
         justify-content: space-between;
         .back {
-            border-radius: 16px;
-            margin-right: 110px;
-            .mySwiper {
-                width: 500px;
-                height: 500px;
+            .el-image {
+                width: 745px;
+                height: 460px;
                 display: inline-block;
                 position: absolute;
-                top: 120px;
-                right: 150px;
-                // .line();
-                /deep/.el-image {
-                    display: block;
-                    width: 500px !important;
-                    height: 500px !important;
-                    border-radius: 8px !important;
-                    // margin-left: 1px;
-                    img {
-                        display: block;
-                    }
-                }
+                top: 90px;
+                right: 0px;
+            }
+            // margin-right: 110px;
+            // .mySwiper {
+            //     width: 745px;
+            //     height: 460px;
+            //     display: inline-block;
+            //     position: absolute;
+            //     top: 90px;
+            //     .imgBoxBack {
+            //         border-radius: 0px;
+            //     }
+            //     /deep/.el-image {
+            //         display: block;
+            //         width: 745px !important;
+            //         height: 460px !important;
+            //         border-radius: 0px !important;
+            //         // margin-left: 1px;
+            //         img {
+            //             display: block;
+            //         }
+            //     }
+            // }
+        }
+        .top1 {
+            // width: 100%;
+            box-sizing: border-box;
+            padding: 0 50px;
+            margin-left: 11.5%;
+            .title {
+                height: 42px;
+                font-size: 32px;
+                font-weight: 400;
+                color: #ffffff;
+                line-height: 42px;
+                font-family: ZhenyanGB-Regular, ZhenyanGB;
+                padding: 130px 0 25px 10px;
+            }
+            .title1 {
+                line-height: 47px;
+                font-size: 46px;
+                font-weight: 400;
+                color: #ffffff;
+                font-family: ZhenyanGB-Regular, ZhenyanGB;
+                padding: 220px 0 25px 10px;
+            }
+            .title2 {
+                font-size: 20px;
+                font-family: PingFangSC-Regular, PingFang SC;
+                font-weight: 400;
+                color: #ffffff;
+                padding-left: 10px;
+            }
+            .btnCon {
+                line-height: 44px;
+                text-align: center;
+                background: transparent;
+                margin: 60px 0 0 10px;
+                font-size: 20px;
+                width: 136px;
+                cursor: pointer;
+                height: 44px;
+                border: 1px solid;
+                border-radius: 8px;
+                color: #fdfb60;
+                border-image: linear-gradient(135deg, rgba(253, 251, 96, 1), rgba(255, 143, 62, 1)) 1 1;
             }
-        }
-        .title {
-            height: 42px;
-            font-size: 32px;
-            font-weight: 400;
-            color: #ffffff;
-            line-height: 42px;
-            font-family: ZhenyanGB-Regular, ZhenyanGB;
-            padding: 130px 0 25px 10px;
-        }
-        .title1 {
-            line-height: 47px;
-            font-size: 46px;
-            font-weight: 400;
-            color: #ffffff;
-            font-family: ZhenyanGB-Regular, ZhenyanGB;
-            padding: 220px 0 25px 10px;
-        }
-        .title2 {
-            font-size: 20px;
-            font-family: PingFangSC-Regular, PingFang SC;
-            font-weight: 400;
-            color: #ffffff;
-            padding-left: 10px;
-        }
-        .btnCon {
-            line-height: 44px;
-            text-align: center;
-            background: transparent;
-            margin: 60px 0 0 10px;
-            font-size: 20px;
-            width: 136px;
-            cursor: pointer;
-            height: 44px;
-            border: 1px solid;
-            border-radius: 8px;
-            color: #fdfb60;
-            border-image: linear-gradient(135deg, rgba(253, 251, 96, 1), rgba(255, 143, 62, 1)) 1 1;
         }
     }
 }
@@ -767,7 +421,7 @@ export default {
     color: #ffffff;
     line-height: 34px;
     font-family: ZhenyanGB-Regular, ZhenyanGB;
-    padding: 121px 0 40px 0;
+    padding: 80px 0 40px;
 }
 .content {
     background: #0f1111;

+ 1 - 1
src/main/pc-space/src/views/Index.vue

@@ -1,6 +1,6 @@
 <template>
     <el-container direction="vertical">
-        <page-header v-if="this.$route.name !== 'home'"></page-header>
+        <page-header></page-header>
         <el-container direction="vertical" style="padding: 0" class="page-content">
             <el-main class="main">
                 <router-view v-if="!loading" />

+ 6 - 0
src/main/pc-space/src/views/Send.vue

@@ -460,6 +460,12 @@ export default {
 /deep/.el-loading-mask {
     background-color: #ffffffee;
 }
+/deep/ .el-dialog__header {
+    padding: 18px 0;
+}
+/deep/ .el-dialog__title {
+    font-weight: bold;
+}
 .title {
     font-size: 16px;
     font-weight: 400;

+ 20 - 12
src/main/pc-space/src/views/Submit.vue

@@ -197,7 +197,6 @@ export default {
         if (this.isLogin) {
             this.add();
         }
-        
     },
     methods: {
         initTime(dingdanId, initTime) {
@@ -249,7 +248,7 @@ export default {
                 }, 1000);
             }
         },
-        
+
         add() {
             this.$http
                 .post(
@@ -264,13 +263,16 @@ export default {
                     }
                 )
                 .then(res => {
+                    // this.listAll = res.content.filter(item => {
+                    //     return item.used || !this.checkTime(item);
+                    // });
                     this.list = res.content.filter(item => {
                         return !item.used && this.checkTime(item) && this.checkUse(item, this.$route.query.id);
                     });
                     this.listAll = res.content.filter(item => {
                         return !item.used && this.checkTime(item) && this.checkUse(item, this.$route.query.id);
                     });
-                    console.log(this.listAll);
+                    // console.log(this.listAll);
                 });
         },
         IdFn(e) {
@@ -484,6 +486,13 @@ export default {
 /deep/ .el-dialog {
     border-radius: 8px;
 }
+/deep/ .el-dialog__header {
+    padding: 18px 0;
+}
+/deep/ .el-dialog__title {
+    font-weight: bold;
+    font-size: 18px;
+}
 .list {
     padding: 24px 0 50px;
 }
@@ -493,11 +502,11 @@ export default {
     margin-bottom: 16px;
     .box {
         display: flex;
+        align-items: center;
+        justify-content: center;
         .img {
             width: 189px;
             height: 120px;
-            position: relative;
-            z-index: 1;
         }
         .coupon-top {
             padding: 16px 0;
@@ -510,14 +519,13 @@ export default {
                 font-weight: bold;
                 color: #1a1a1a;
                 line-height: 36px;
-                margin: 15px 0 0 27px;
             }
             .text2 {
                 font-size: 12px;
                 font-weight: 400;
                 color: #1a1a1a;
                 line-height: 22px;
-                margin-left: 30px;
+                text-align: center;
             }
         }
     }
@@ -548,11 +556,11 @@ export default {
             line-height: 16px;
             margin-top: 45px;
         }
-        .icon {
-            width: 24px;
-            height: 24px;
-            margin-top: 33px;
-        }
+    }
+    .icon {
+        width: 24px;
+        height: 24px;
+        margin-top: 33px;
     }
 }
 /deep/.el-radio {