Quellcode durchsuchen

订阅静态页面

natasha vor 1 Jahr
Ursprung
Commit
6c6e302135

+ 11 - 2
src/components/common/BookListModule.vue

@@ -24,12 +24,12 @@
       </div>
       <div class="list">
         <template v-if="name==='baozhi'">
-            <a class="img-box">
+            <a class="img-box" @click="toSubscribe">
                 <img src="../../assets/baozhi-ding.png" class="baozhi-ding" />
             </a>
         </template>
         <template v-if="name==='jingdu'">
-            <a class="img-box">
+            <a class="img-box" @click="toSubscribe">
                 <img src="../../assets/jingdu-ding.png" class="baozhi-dings" />
             </a>
         </template>
@@ -122,6 +122,15 @@ export default {
           }
         })
     },
+    toSubscribe(){
+        this.$router.push({
+          path: "/subscribe",
+          query: {
+            name: encodeURIComponent(this.typeList[this.name].name),
+            type: this.name
+          }
+        })
+    }
   },
   //生命周期 - 创建完成(可以访问当前this实例)
   created() {

+ 10 - 0
src/icons/svg/icon-mark.svg

@@ -0,0 +1,10 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_3170_101364)">
+<path d="M7.9987 14.6654C4.3168 14.6654 1.33203 11.6806 1.33203 7.9987C1.33203 4.3168 4.3168 1.33203 7.9987 1.33203C11.6806 1.33203 14.6654 4.3168 14.6654 7.9987C14.6654 11.6806 11.6806 14.6654 7.9987 14.6654ZM7.9987 13.332C10.9442 13.332 13.332 10.9442 13.332 7.9987C13.332 5.05318 10.9442 2.66536 7.9987 2.66536C5.05318 2.66536 2.66536 5.05318 2.66536 7.9987C2.66536 10.9442 5.05318 13.332 7.9987 13.332ZM7.33203 4.66536H8.66536V5.9987H7.33203V4.66536ZM7.33203 7.33203H8.66536V11.332H7.33203V7.33203Z" fill="currentColor"/>
+</g>
+<defs>
+<clipPath id="clip0_3170_101364">
+<rect width="16" height="16" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 5 - 0
src/router/index.js

@@ -144,6 +144,11 @@ export const constantRoutes = [{
         component: () =>
             import ('@/views/organize_manage/EditPerson.vue')
     },
+    {
+        path: '/subscribe',
+        component: () =>
+            import ('@/views/bookStore/Subscribe.vue')
+    },
     // 404 page must be placed at the end !!!
     { path: '*', redirect: '/', hidden: true }
 ]

+ 976 - 0
src/views/bookStore/Subscribe.vue

@@ -0,0 +1,976 @@
+<template>
+  <div class="bookItem">
+    <Header
+      :headerBg="headerBg"
+      :headerBorder="headerBorder"
+      :userBg="userBg"
+    />
+    <div class="navBar" v-if="info">
+        <div class="navBar-left">
+            <a class="goback" @click="$router.go(-1)"><i class="el-icon-arrow-left"></i>主页</a>
+            <div class="border"></div>
+            <p>{{info.name}}</p>
+        </div>
+    </div>
+    <div class="main-top" v-if="info">
+        <div class="main-top-inner">
+            <el-carousel class="swiper-container" trigger="click" arrow="never" height="414px">
+                <!-- <el-carousel-item v-for="(item1, index) in data.imgList" :key="index"> -->
+                    <el-image
+                        class="image"
+                        :src="info.cover_image_url?info.cover_image_url:bookType==='baozhi'?require('../../assets/baozhi'+(Math.floor(Math.random()*2)+1)+'.png'):require('../../assets/kecheng'+(Math.floor(Math.random()*3)+1)+'.png')"
+                        :fit="'cover'">
+                    </el-image>
+                <!-- </el-carousel-item> -->
+            </el-carousel>
+            <div class="book-info-right">
+                <h1 class="title">{{info.name}}</h1>
+                <!-- <b class="org">{{data.org}}</b><span class="date">2023.07.01-2023.07.21</span> -->
+                <div class="sales-box">
+                    <div class="sales-left">
+                        <span>订阅价格</span>
+                        <span class="OPPOSans">¥{{info.price_discount?info.price_discount:info.price|cutMoneyFiter}}</span>
+                        <span class="old-price" v-if="info.price_discount&&info.price_discount!==info.price">¥{{info.price|cutMoneyFiter}}</span>
+                        <b>元 / 期</b>
+                    </div>
+                    <span class="sales-right" v-if="sales>=1000">累计销售 {{salesCn}}</span>
+                </div>
+                <div class="label-box">
+                    <label v-for="(itemL,indexL) in info.label_name_list" :key="indexL" :style="{background:tagBg[indexL%3],color:tagColor[indexL%3]}">
+                        {{ '# ' + itemL }}
+                    </label>
+                </div>
+                <!-- <div class="book-describe">
+                    <h2 class="title">{{data.describe.title}}</h2>
+                    <span class="author">{{'BY '+data.describe.author}}</span>
+                    <p class="describe">{{data.describe.describe}}</p>
+                </div> -->
+                <div class="info-box">
+                    <div class="info-item">
+                        <label>适合年龄</label>
+                        <span>{{info.org_name}}</span>
+                    </div>
+                    <div class="info-item">
+                        <label>期刊页数</label>
+                        <span>78291</span>
+                        <el-tooltip placement="right">
+                            <div slot="content">双刊、特辑、寒暑假合刊除外</div>
+                            <el-button class="tooltip-btn"><svg-icon icon-class="icon-mark"></svg-icon></el-button>
+                        </el-tooltip>
+                    </div>
+                    <div class="info-item">
+                        <label>出版周期</label>
+                        <span>2023-05-15</span>
+                    </div>
+                    <div class="info-item">
+                        <label>期刊定价</label>
+                        <span>中英双语</span>
+                    </div>
+                    <div class="info-item">
+                        <label>主办单位</label>
+                        <span>815 期</span>
+                    </div>
+                </div>
+                <div class="info-box order-box">
+                    <div class="info-item order-item" style="margin-bottom:16px">
+                        <label>订阅学段</label>
+                        <div class="order-content">
+                            <ul>
+                                <li v-for="item in $studyType" :key="item.study_phase" :class="[studyType===item.study_phase?'active':'']" @click="studyType=item.study_phase">
+                                    {{item.study_phase_name}}
+                                </li>
+                            </ul>
+                        </div>
+                    </div>
+                    <div class="info-item order-item" style="margin-bottom:16px">
+                        <label>订阅期数</label>
+                        <div class="order-content">
+                            <ul>
+                                <li v-for="item in orderList" :key="item.value" :class="[orderTotalNumber===item.value?'active':'']" @click="orderTotalNumber=item.value">
+                                    {{item.label}}
+                                </li>
+                                <el-tooltip placement="right" style="height:32px">
+                                    <div slot="content">一次性订阅:<br/>
+                                        5 期 9 折 <br/>
+                                        10 期 8 折<br/>
+                                        20 期 6 折<br/>
+                                        40 期 5 折</div>
+                                    <el-button class="tooltip-btn"><svg-icon icon-class="icon-mark"></svg-icon></el-button>
+                                </el-tooltip>
+                            </ul>
+                            <div v-if="orderTotalNumber===-1" class="custom-box">
+                                <div class="custom-box-top">
+                                    <h5>{{custonList[customPage].title}}</h5>
+                                    <div class="btn-box">
+                                        <a><i class="el-icon-arrow-left"></i></a>
+                                        <a><i class="el-icon-arrow-right"></i></a>
+                                    </div>
+                                </div>
+                                <ul class="custom-box-bottom">
+                                    <li v-for="(itemc,indexc) in custonList[customPage].list" :key="indexc" :style="{width:itemc.width?itemc.width*52+'px':'',borderRight:itemc.farRight?'none !important':'',borderBottom:itemc.farBottom?'none !important':''}" :class="[customOrderNumberList.indexOf(itemc.value)>-1?'active':'']" @click="changeCustomOrder(itemc)">
+                                        {{itemc.label}}
+                                    </li>
+                                </ul>
+                            </div>
+                            <b v-if="orderTotalNumber!==-1">915 期 - 919 期</b>
+                            <b v-else>已选 {{customOrderNumberList.length}} 期</b>
+                            <el-tooltip placement="bottom" style="height:32px">
+                                <div slot="content">
+                                    <el-table
+                                        class="order-table"
+                                        :data="orderTable"
+                                        max-height="200px"
+                                        style="width: 317px">
+                                        <el-table-column
+                                            label="#"
+                                            type="index"
+                                            width="30">
+                                        </el-table-column>
+                                        <el-table-column
+                                            property="name"
+                                            label="期"
+                                            width="112">
+                                        </el-table-column>
+                                        <el-table-column
+                                            property="date"
+                                            label="发行日期"
+                                            width="100">
+                                        </el-table-column>
+                                        <el-table-column
+                                            property="price"
+                                            label="价格"
+                                            width="75">
+                                            <template slot-scope="scope">
+                                                {{scope.row.price|cutMoneyFiter}}
+                                            </template>
+                                        </el-table-column>
+                                    </el-table>
+                                </div>
+                                <el-button class="tooltip-btn"><svg-icon icon-class="icon-mark"></svg-icon></el-button>
+                            </el-tooltip>
+                        </div>
+                    </div>
+                    <div class="info-item order-item">
+                        <label>有效期</label>
+                        <div class="order-content">
+                            <b>365天</b>
+                            <el-tooltip placement="right">
+                                <div slot="content">2023.08.14~2024.08.13</div>
+                                <el-button class="tooltip-btn"><svg-icon icon-class="icon-mark"></svg-icon></el-button>
+                            </el-tooltip>
+                        </div>
+                    </div>
+                    <div class="info-item order-item">
+                        <label>结算价格</label>
+                        <div class="order-content">
+                            <span class="OPPOSans">¥{{info.price_discount|cutMoneyFiter}}</span>
+                            <span class="old-price">¥{{info.price|cutMoneyFiter}}</span>
+                        </div>
+                    </div>
+                </div>
+                <div class="btn-box">
+                    <a class="el-button" @click="handleChangeWay('wei')">立即购买</a>
+                    <a class="upgrade" @click="handleChangeWay('dui')">使用兑换码</a>
+                </div>
+            </div>
+        </div>
+    </div>
+  </div>
+</template>
+
+<script>
+//这里可以导入其它文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+//例如:import 《组件名称》from ‘《组件路径》';
+import Header from "../../components/Header.vue";
+import { cutMoneyFiter } from '@/utils/defined';
+import { getLogin } from "@/api/ajax";
+import { mapState } from 'vuex';
+
+export default {
+  //import引入的组件需要注入到对象中才能使用
+  components: { Header},
+  props: [],
+  filters:{
+    cutMoneyFiter
+  },
+  data() {
+    //这里存放数据
+    return {
+        config: this.$route.query.headerConfig?decodeURIComponent(this.$route.query.headerConfig):'',
+        LoginNavIndex: 0,
+        userBg: 'rgba(0, 0, 0, 0.24)',
+        headerBorder: '#5C5C5C',
+        headerBg: '#1F1F1F',
+        previousPage: '商城',
+        data:{
+            navTitle: '第 815 期 Celebrating new King',
+            title: '第 815 期 Celebrating new King',
+            org: '二十一世纪英文报',
+            tagList: ['中英双语','经典读物','初中必读'],
+            imgList:[
+                require('../../assets/img1.png'), require('../../assets/bookcard-image.png'),
+            ],
+            describe:{
+                title: 'Bring books up to date',
+                author: 'TEENS',
+                describe: 'Should childrenn read the original or adapted version? 英国童书再版遭大量删改引争议 词数 372 测试见IV版 建议阅读时间 5分钟 Puffin ...'
+            },
+            price: '3.9',
+            oldPrice: '5.99',
+            isBuy: this.$route.query.isBuy?this.$route.query.isBuy:false,
+        },
+        tagBg:['#C9EBFF','#FFFAC9','#D7C9FF'], // 标签背景色
+        tagColor:['#006DAA','#AA8500','#7849C4'], // 标签字体颜色
+        paymentShow: false, // 支付弹窗
+        payWay:'dui',
+        bookType: this.$route.query.cardType?this.$route.query.cardType:'baozhi', // 书籍类型
+        bannerFlag: true, // 是否展示广告
+        id: this.$route.query.id?this.$route.query.id:'',
+        info: null, // 信息
+        courseList:[],
+        sales: null,
+        salesCn: '',
+        isBuy: 'false',
+        studyType: null,
+        orderTotalNumber: null,
+        orderList:[
+            {
+                label:'5 期',
+                value: 5
+            },
+            {
+                label:'10 期',
+                value: 10
+            },
+            {
+                label:'20 期',
+                value: 20
+            },
+            {
+                label:'40 期',
+                value: 40
+            },
+            {
+                label:'自定义',
+                value: -1
+            }
+        ],
+        orderTable:[
+            {
+                name:'915 期(合刊)',
+                date:'2023-06-26',
+                price:12
+            },
+            {
+                name:'915 期(合刊)',
+                date:'2023-06-26',
+                price:12
+            },
+            {
+                name:'915 期(合刊)',
+                date:'2023-06-26',
+                price:12
+            },
+            {
+                name:'915 期(合刊)',
+                date:'2023-06-26',
+                price:12
+            },
+            {
+                name:'915 期(合刊)',
+                date:'2023-06-26',
+                price:12
+            },
+            {
+                name:'915 期(合刊)',
+                date:'2023-06-26',
+                price:12
+            },
+            {
+                name:'915 期(合刊)',
+                date:'2023-06-26',
+                price:12
+            },
+            {
+                name:'915 期(合刊)',
+                date:'2023-06-26',
+                price:12
+            },
+            {
+                name:'915 期(合刊)',
+                date:'2023-06-26',
+                price:12
+            }
+            
+        ],
+        customPage: 0,
+        custonList:[
+            {
+                title: '2019-2020 学年',
+                total: 14,
+                list: [
+                    {
+                        label: '759',
+                        value: '759',
+                        width: 1,
+                        number: 1 // 算完下一个去复制上一个是不是末位 如果下一个加起来的number/10有余数那就是下一行了
+                    },
+                    {
+                        label: '758',
+                        value: '758',
+                        width: 1,
+                        number: 2
+                    },
+                    {
+                        label: '757',
+                        value: '757',
+                        width: 1,
+                        number: 3
+                    },
+                    {
+                        label: '756',
+                        value: '756',
+                        width: 1,
+                        number: 4
+                    },
+                    {
+                        label: '755',
+                        value: '755',
+                        width: 1,
+                        number: 5
+                    },
+                    {
+                        label: '754',
+                        value: '754',
+                        width: 1,
+                        number: 1
+                    },
+                    {
+                        label: '753',
+                        value: '753',
+                        width: 1,
+                        number: 1
+                    },
+                    {
+                        label: '752',
+                        value: '752',
+                        width: 1,
+                        number: 1
+                    },
+                    {
+                        label: '751',
+                        value: '751',
+                        width: 1,
+                        number: 1,
+                    },
+                    {
+                        label: '751',
+                        value: '751',
+                        width: 1,
+                        number: 1,
+                        farRight: true
+                    },
+                    {
+                        label: '共同战“疫”',
+                        value: 'gong',
+                        width: 2,
+                        number: 1,
+                        farBottom: true
+                    },
+                    {
+                        label: '750',
+                        value: '750',
+                        width: 1,
+                        number: 1,
+                        farBottom: true
+                    },
+                    {
+                        label: '769',
+                        value: '769',
+                        width: 1,
+                        number: 1,
+                        farBottom: true
+                    },
+                ]
+            }
+        ],
+        customOrderNumberList: []
+    }
+  },
+  //计算属性 类似于data概念
+  computed: {
+    ...mapState(['$studyType']),
+  },
+  //监控data中数据变化
+  watch: {},
+  //方法集合
+  methods: {
+    // 分享
+    handleShare(){
+
+    },
+    // 收藏
+    handlelike(){
+
+    },
+    handleChangeWay(type){
+        this.payWay = type;
+        this.paymentShow = true;
+    },
+    // 关闭弹窗
+    handleClose(){
+        this.paymentShow = false
+    },
+    // 详情
+    getInfo(){
+        let MethodName = "/CourseServer/Client/LBCourseQuery/GetLBCourseInfo";
+        let data = {
+            id: '001-202307051147PXIKH4JPGX',
+            is_contain_cs_item: "true",
+            cs_item_sort_mode: "ASCE"
+        }
+        getLogin(MethodName, data)
+        .then((res) => {
+            if(res.status===1){
+                this.info = res.lb_course
+                this.isBuy = res.buy_info.is_buy
+                this.sales = res.buy_info.total_buy_count
+                if(this.sales<1000){
+                    this.salesCn = ''
+                }else if(1000<=this.sales&&this.sales<10000){
+                    this.salesCn = this.sales.toString().substring(0,1)+'000+'
+                }else if(10000<=this.sales&&this.sales<100000){
+                    this.salesCn = this.sales.toString().substring(0,1)+'万+'
+                }else if(100000<=this.sales&&this.sales<1000000){
+                    this.salesCn = this.sales.toString().substring(0,1)+'0万+'
+                }else if(1000000<=this.sales&&this.sales<10000000){
+                    this.salesCn = this.sales.toString().substring(0,1)+'00万+'
+                }else if(10000000<=this.sales&&this.sales<100000000){
+                    this.salesCn = this.sales.toString().substring(0,1)+'000万+'
+                }else if(100000000<=this.sales){
+                    this.salesCn = this.sales.toString().substring(0,1)+'亿+'
+                }
+            }
+        })
+        .catch(() => {
+            
+        }); 
+    },
+    changeCustomOrder(item){
+        if(this.customOrderNumberList.indexOf(item.value)>-1){
+            this.customOrderNumberList.splice(this.customOrderNumberList.indexOf(item.value),1)
+        }else{
+            this.customOrderNumberList.push(item.value)
+        }
+    }
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {
+    if(this.config){
+        let arr = this.config.split('&&&')
+        this.LoginNavIndex = arr[0] * 1
+        this.userBg = arr[1] ? arr[1] : 'rgba(0, 0, 0, 0.24)'
+        this.headerBorder = arr[2] ? arr[2] : '#5C5C5C'
+        this.headerBg = arr[3] ? arr[3] : '#1F1F1F'
+        this.previousPage = arr[4] ? arr[4] : '商城'
+    }
+    this.getInfo()
+  },
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+
+  },
+  //生命周期-创建之前
+  beforeCreated() { },
+  //生命周期-挂载之前
+  beforeMount() { },
+  //生命周期-更新之前
+  beforUpdate() { },
+  //生命周期-更新之后
+  updated() { },
+  //生命周期-销毁之前
+  beforeDestory() { },
+  //生命周期-销毁完成
+  destoryed() { },
+  //如果页面有keep-alive缓存功能,这个函数会触发
+  activated() { }
+}
+</script>
+<style lang="scss" scoped>
+/* @import url(); 引入css类 */
+.bookItem {
+  background: #F7F8FA;
+  min-height: calc(100vh - 135px);
+  .main-top {
+    background: #FFFFFF;
+    padding: 48px 0;
+    margin-top: 56px;
+    min-height: calc(100vh - 135px);
+    &-inner{
+        width: 1200px;
+        margin: 0 auto;
+        display: flex;
+        .swiper-container{
+            width: 416px;
+            height: 440px;
+            text-align: center;
+            .el-image{
+                width: 297px;
+                height: 414px;
+                border: 1px solid #F3F3F3;
+            }
+        }
+        .book-info-right{
+            flex: 1;
+            padding-left: 88px;
+            .title{
+                color: #2F3742;
+                font-weight: 500;
+                font-size: 32px;
+                line-height: 44px;
+                margin: 0 0 16px 0;
+            }
+            .org,.date{
+                font-weight: 500;
+                font-size: 14px;
+                line-height: 22px;
+                color: rgba(0, 0, 0, 0.4);
+            }
+            .date{
+                margin-left: 32px;
+                line-height: 24px;
+            }
+            .label-box{
+                display: flex;
+                flex-flow: wrap;
+                margin: 16px 0;
+                label{
+                    margin: 0 8px 8px 0;
+                    border-radius: 20px;
+                    padding: 4px 12px;
+                    font-weight: 400;
+                    font-size: 14px;
+                    line-height: 22px;
+                }
+            }
+            .book-describe{
+                border-top: 1px solid #E5E6EB;
+                border-bottom: 1px solid #E5E6EB;
+                padding: 16px 0;
+                .title{
+                    font-weight: 500;
+                    font-size: 16px;
+                    line-height: 24px;
+                    color: #000000;
+                    margin-bottom: 8px;
+                }
+                .author{
+                    font-weight: 400;
+                    font-size: 12px;
+                    line-height: 20px;
+                    color: #000000;
+                    margin-bottom: 8px;
+                    display: block;
+                }
+                .describe{
+                    font-weight: 400;
+                    font-size: 14px;
+                    line-height: 22px;
+                    color: #000000;
+                    margin: 0;
+                }
+            }
+            .price-box{
+                padding: 20px 0 16px 0;
+                display: flex;
+                align-items: flex-end;
+                .price{
+                    font-weight: 500;
+                    font-size: 32px;
+                    line-height: 40px;
+                    color: #EA5939;
+                }
+                .oldPrice{
+                    padding: 0 0 2px 7px;
+                    font-weight: 500;
+                    font-size: 14px;
+                    line-height: 22px;
+                    color: rgba(0, 0, 0, 0.4);
+                    text-decoration-line: line-through;
+                }
+            }
+            .info-box{
+                display: flex;
+                flex-flow: wrap;
+                border-bottom: 1px solid #EBEBEB;
+                width: 592px;
+                .info-item{
+                    width: 50%;
+                    margin-bottom: 15px;
+                    font-size: 14px;
+                    line-height: 22px;
+                    display: flex;
+                }
+                label{
+                    color: #C2C2C2;
+                    font-weight: 400;
+                    margin-right: 16px;
+                    width: 58px;
+                    display: block;
+                    text-align:justify;
+                    text-justify:distribute-all-lines;
+                    text-align-last:justify;
+                    -moz-text-align-last:justify;
+                    -webkit-text-align-last:justify;
+                }
+            }
+            .order-box{
+                margin-bottom: 24px;
+                padding: 24px 0 0;
+                .order-item{
+                    margin-bottom: 24px;
+                    width: 100%;
+                    label{
+                        line-height: 32px;
+                    }
+                    .order-content{
+                        line-height: 32px;
+                        ul{
+                            margin: 0;
+                            padding: 0;
+                            list-style: none;
+                            display: flex;
+                            flex-flow: wrap;
+                            li{
+                                cursor: pointer;
+                                border-radius: 2px;
+                                background: #F2F3F5;
+                                margin-right: 8px;
+                                margin-bottom: 8px;
+                                padding: 4px 15px;
+                                color: #000;
+                                font-size: 14px;
+                                font-weight: 500;
+                                line-height: 22px;
+                                border: 1px solid #F2F3F5;
+                                &.active{
+                                    color: #EA5939;
+                                    background: #ffffff;
+                                    border-color: #EA5939;
+                                }
+                            }
+                        }
+                        .el-table{
+                            background: #303133;
+                        }
+                    }
+                    .OPPOSans{
+                        margin: 0 8px 0 0;
+                        color: #EA5939;
+                        font-size: 20px;
+                        font-weight: 500;
+                        line-height: 28px;
+                    }
+                    .old-price{
+                        color: rgba(0, 0, 0, 1);
+                        font-size: 12px;
+                        font-weight: 500;
+                        line-height: 22px;
+                        text-decoration: line-through;
+                    }
+                }
+            }
+            .btn-box{
+                display: flex;
+                .el-button{
+                    width: 112px;
+                    height: 40px;
+                    background: #EA5939;
+                    box-shadow: 0px 8px 16px rgba(234, 89, 57, 0.24);
+                    border-radius: 4px;
+                    font-weight: 500;
+                    font-size: 16px;
+                    color: #FFFFFF;
+                    border: none;
+                }
+                .svg-icon{
+                    margin-left: 7px;
+                }
+                .continue{
+                    width: 112px;
+                    height: 40px;
+                    background: #175DFF;
+                    border-radius: 4px;
+                    font-weight: 500;
+                    font-size: 16px;
+                    line-height: 40px;
+                    color: rgba(255, 255, 255, 1);
+                    display: block;
+                    text-align: center;
+                    box-shadow: 0px 8px 16px rgba(23, 93, 255, 0.24);
+                }
+                .upgrade{
+                    margin-left: 16px;
+                    display: block;
+                    padding: 0px 24px;
+                    height: 40px;
+                    background: #E9E9E9;
+                    box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.06);
+                    border-radius: 4px;
+                    color: #595959;
+                    font-weight: 500;
+                    font-size: 16px;
+                    line-height: 40px;
+                    text-align: center;
+                }
+            }
+        }
+    }
+  }
+  .main-center{
+    width: 1200px;
+    margin: 0 auto;
+    padding: 40px 0;
+    .el-tabs--card>.el-tabs__header .el-tabs__item.is-active{
+        border-color: #E7E7E7;
+    }
+  }
+  .main-bottom{
+    width: 1200px;
+    margin: 0 auto;
+    padding-bottom: 40px;
+    &-top{
+        display: flex;
+        justify-content: space-between;
+        p{
+            margin: 0;
+            font-weight: 500;
+            font-size: 24px;
+            line-height: 32px;
+            color: #1F2C5C;
+            font-family: initial;
+        }
+        .right{
+            color: rgba(0, 0, 0, 0.88);
+            font-weight: 400;
+            font-size: 16px;
+            line-height: 24px;
+            cursor: pointer;
+            a{
+                margin-right: 8px;
+            }
+        }
+    }
+  }
+  .list {
+    margin-top: 24px;
+    display: flex;
+    flex-wrap: wrap;
+    > div {
+        width: 200px;
+        border-radius: 8px;
+        overflow: hidden;
+        background: #ffffff;
+        margin-bottom: 24px;
+    }
+  }
+}
+.banner-box-close{
+    margin-top: 40px;
+}
+.sales-box{
+    display: flex;
+    width: 592px;
+    padding: 16px;
+    border-radius: 4px;
+    background: #F5F5F5;
+    justify-content: space-between;
+    align-items: flex-end;
+    color: #ADADAD;
+    font-size: 14px;
+    font-weight: 400;
+    line-height: 22px;
+    .OPPOSans{
+        margin: 0 8px 0 16px;
+        color: #EA5939;
+        font-size: 32px;
+        font-weight: 500;
+        line-height: 40px;
+    }
+    .old-price{
+        color: rgba(0, 0, 0, 0.40);
+        font-size: 14px;
+        font-weight: 500;
+        line-height: 22px;
+        text-decoration: line-through;
+    }
+    b{
+        color: rgba(0, 0, 0, 0.40);
+        font-size: 14px;
+        font-weight: 700;
+        line-height: 22px; 
+    }
+}
+.custom-box{
+    width: 522px;
+    border: 1px solid #E5E6EB;
+    background: #FFF;
+    margin: 4px 0 8px 0;
+    &-top{
+        padding: 8px 16px;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+        h5{
+            margin: 0;
+            color: #000;
+            font-size: 12px;
+            font-weight: 600;
+            line-height: 20px; 
+        }
+        .btn-box{
+            a{
+                margin-left: 6px;
+                border-radius: 2px;
+                background: #F2F2F2;
+                width: 24px;
+                height: 24px;
+                display: block;
+                text-align: center;
+                line-height: 24px;
+            }
+        }
+    }
+    &-bottom{
+      border-top: 1px solid #E5E6EB;  
+      li{
+        padding: 8px !important;
+        margin: 0 !important;
+        background: #ffffff !important;
+        border: none !important;
+        min-width: 52px;
+        text-align: center;
+        border-right: 1px solid #E5E6EB !important;
+        border-bottom: 1px solid #E5E6EB !important;
+        border-radius: 0 !important;
+        &.active{
+            border-right: 1px solid #F5F5F5 !important;
+            border-bottom: 1px solid #F5F5F5 !important;
+            background: #EA5939 !important;
+            color: #FFF !important;
+        }
+      }
+    }
+}
+</style>
+<style lang="scss">
+.bookItem{
+    .el-carousel__button{
+        width: 8px;
+        height: 8px;
+        background: #D9D9D9;
+        opacity: 1;
+        border-radius: 4px;
+    }
+    .el-carousel__indicator.is-active{
+        .el-carousel__button{
+            background: #5E5E5E;
+        }
+    }
+    .el-tabs__header{
+        margin: 0;
+    }
+    .el-tab-pane{
+        background: #F8F8F8;
+        border: 1px solid #E7E7E7;
+        border-top: none;
+        padding: 24px;
+    }
+    .el-tabs__item{
+        width: 160px;
+        height: 38px;
+        text-align: center;
+        font-weight: 500;
+        font-size: 14px;
+        line-height: 38px;
+        color: #1F2C5C;
+        &:hover{
+            background: #E7E7E7;
+        }
+        &.is-active{
+            // background: #3459D2;
+            // color: #EEF3FF;
+            border-bottom: none;
+            background: #E7E7E7;
+        }
+    }
+}
+.bookitem-dropdown.el-dropdown-menu{
+    padding: 4px;
+    .el-dropdown-menu__item{
+        font-weight: 500;
+        font-size: 16px;
+        line-height: 40px;
+        color: #000000;
+    }
+    .el-dropdown-menu__item:focus, .el-dropdown-menu__item:not(.is-disabled):hover{
+        background: #FDECEE;
+        border-radius: 4px;
+        color: #EA5939;
+    }
+}
+
+.bookItem-dialog{
+    .el-dialog__header,.el-dialog__body{
+        padding: 0;
+    }
+    .el-dialog{
+        border: 1px solid #EBEBEB;
+        box-shadow: 0px 6px 30px 5px rgba(0, 0, 0, 0.05), 0px 16px 24px 2px rgba(0, 0, 0, 0.04), 0px 8px 10px -5px rgba(0, 0, 0, 0.08);
+        border-radius: 8px;
+        overflow: hidden;
+    }
+}
+.tooltip-btn{
+    border: none;
+    padding: 0;
+    margin-left: 6px;
+    color: #BEBEBE;
+    &:focus,&:hover{
+        color: #BEBEBE;
+        background: none;
+    }
+}
+.order-table.el-table{
+    font-size: 12px;
+    color: #FFF;
+    line-height: 20px;
+}
+.order-table.el-table th.el-table__cell{
+    background: #3E424B !important;
+    padding: 2px 5px;
+}
+.order-table.el-table .el-table__cell{
+    padding: 2px 5px;
+}
+.order-table.el-table thead{
+    font-size: 12px;
+    color: #FFF;
+    line-height: 20px;
+}
+.order-table.el-table td.el-table__cell, .order-table.el-table th.el-table__cell.is-leaf{
+    border-bottom-color: #3E424B;
+}
+.order-table.el-table tr,.order-table.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{
+    background: #1D2129;
+}
+.order-table.el-table .cell{
+    padding: 0 5px !important;
+}
+.order-table.el-table::before{
+    height: 0;
+}
+.order-table.el-table--scrollable-y .el-table__body-wrapper::-webkit-scrollbar {
+    display: none;
+}
+</style>