楼层装修新特征
| After Width: | Height: | Size: 682 B | 
| After Width: | Height: | Size: 2.4 KiB | 
| After Width: | Height: | Size: 2.9 KiB | 
| After Width: | Height: | Size: 2.0 KiB | 
| After Width: | Height: | Size: 2.2 KiB | 
| After Width: | Height: | Size: 1.6 KiB | 
| After Width: | Height: | Size: 2.1 KiB | 
| After Width: | Height: | Size: 2.3 KiB | 
| After Width: | Height: | Size: 2.8 KiB | 
| After Width: | Height: | Size: 3.2 KiB | 
| After Width: | Height: | Size: 1.8 KiB | 
|  | @ -10,14 +10,14 @@ $warning_color: #ff9900; | ||||||
| $error_color: #ed3f14; | $error_color: #ed3f14; | ||||||
| $handle-btn-color: #438cde; | $handle-btn-color: #438cde; | ||||||
| 
 | 
 | ||||||
| $theme_color: #e4393c; | $theme_color: #F31947; | ||||||
| 
 | 
 | ||||||
| $border_color: #dddee1; | $border_color: #dddee1; | ||||||
| $title_color: #8c8c8c; | $title_color: #8c8c8c; | ||||||
| $light_title_color: #1c2438; | $light_title_color: #1c2438; | ||||||
| $light_content_color: #495060; | $light_content_color: #495060; | ||||||
| $light_sub_color: #80848f; | $light_sub_color: #80848f; | ||||||
| $light_background_color: #f8f8f9; | $light_background_color: #F5F5F7; | ||||||
| $light_white_background_color: #fff; | $light_white_background_color: #fff; | ||||||
| // 暗黑主题颜色 | // 暗黑主题颜色 | ||||||
| $dark_background_color: #141414; | $dark_background_color: #141414; | ||||||
|  | @ -283,8 +283,18 @@ li { | ||||||
|         left: auto; |         left: auto; | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | .flex{ | ||||||
| 
 |   display: flex; | ||||||
|  | } | ||||||
|  | .flex-a-c{ | ||||||
|  |   align-items: center; | ||||||
|  | } | ||||||
|  | .flex-j-sb{ | ||||||
|  |   justify-content: space-between; | ||||||
|  | } | ||||||
|  | .flex-j-c{ | ||||||
|  |   justify-content: center; | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| <template> | <template> | ||||||
|   <div> |   <div class="navbar" :class="{'small-search-box':useClass == 'fixed-show'}"> | ||||||
|     <div class="container"> |     <div class="container flex flex-a-c"> | ||||||
|       <img |       <img | ||||||
|         :src="$store.state.logoImg" |         :src="$store.state.logoImg" | ||||||
|         v-if="showLogo" |         v-if="showLogo" | ||||||
|  | @ -8,31 +8,36 @@ | ||||||
|         alt="" |         alt="" | ||||||
|         @click="$router.push('/')" |         @click="$router.push('/')" | ||||||
|       /> |       /> | ||||||
|       <i-input |       <div :class="{'small-search-box':useClass == 'fixed-show'}" class="search-box"> | ||||||
|         v-model="searchData" |         <i-input | ||||||
|         size="large" |           v-model="searchData" | ||||||
|         class="search" |           size="large" | ||||||
|         placeholder="输入你想查找的商品" |           class="search " | ||||||
|         @keyup.enter.native="search" |           placeholder="输入你想查找的商品" | ||||||
|       > |           @keyup.enter.native="search" | ||||||
|         <Button v-if="!store"  slot="append" @click="search">搜索</Button> |         > | ||||||
|       </i-input> | 
 | ||||||
|       <div v-if="store" class="btn-div"> |           <div class="search-icon" slot="append"> | ||||||
|         <Button class="store-search" type="warning" @click="searchStore">搜本店</Button> |             <Icon type="ios-search" size="21"/> | ||||||
|         <Button class="store-search" type="primary" @click="search">搜全站</Button> |           </div> | ||||||
|       </div> |         </i-input> | ||||||
|       <template v-if="showTag"> |         <div v-if="store" class="btn-div"> | ||||||
|         <div style="height:12px" v-if="promotionTags.length === 0"></div> |           <Button class="store-search" type="warning" @click="searchStore">搜本店</Button> | ||||||
|         <div v-else> |           <Button class="store-search" type="primary" @click="search">搜全站</Button> | ||||||
|           <Tag |  | ||||||
|             v-for="(item, index) in promotionTags" |  | ||||||
|             :key="index" |  | ||||||
|             class="mr_10" |  | ||||||
|           > |  | ||||||
|             <span class="hover-color" @click="selectTags(item)">{{ item }}</span> |  | ||||||
|           </Tag> |  | ||||||
|         </div> |         </div> | ||||||
|       </template> |         <template v-if="showTag"> | ||||||
|  |           <div style="height:12px" v-if="promotionTags.length === 0"></div> | ||||||
|  |           <div v-else class="history-list flex"> | ||||||
|  |             <div | ||||||
|  |               v-for="(item, index) in promotionTags" | ||||||
|  |               :key="index" | ||||||
|  |               class="mr_10" | ||||||
|  |             > | ||||||
|  |               <span class="history-item" @click="selectTags(item)">{{ item }}</span> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </template> | ||||||
|  |       </div> | ||||||
|     </div> |     </div> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
|  | @ -40,6 +45,7 @@ | ||||||
| <script> | <script> | ||||||
| import storage from '@/plugins/storage.js' | import storage from '@/plugins/storage.js' | ||||||
| import {hotWords} from '@/api/goods.js' | import {hotWords} from '@/api/goods.js' | ||||||
|  | 
 | ||||||
| export default { | export default { | ||||||
|   name: 'search', |   name: 'search', | ||||||
|   props: { |   props: { | ||||||
|  | @ -58,30 +64,34 @@ export default { | ||||||
|     hover: { |     hover: { | ||||||
|       type: Boolean, |       type: Boolean, | ||||||
|       default: false |       default: false | ||||||
|  |     }, | ||||||
|  |     useClass:{ | ||||||
|  |       type:null, | ||||||
|  |       default:'' | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   data () { |   data() { | ||||||
|     return { |     return { | ||||||
|       searchData: '' // 搜索内容 |       searchData: '' // 搜索内容 | ||||||
|     }; |     }; | ||||||
|   }, |   }, | ||||||
|   methods: { |   methods: { | ||||||
|     selectTags (item) { // 选择热门标签 |     selectTags(item) { // 选择热门标签 | ||||||
|       this.searchData = item; |       this.searchData = item; | ||||||
|       this.search(); |       this.search(); | ||||||
|     }, |     }, | ||||||
|     search () { // 全平台搜索商品 |     search() { // 全平台搜索商品 | ||||||
|       this.$router.push({ |       this.$router.push({ | ||||||
|         path: '/goodsList', |         path: '/goodsList', | ||||||
|         query: { keyword: this.searchData } |         query: {keyword: this.searchData} | ||||||
|       }); |       }); | ||||||
|     }, |     }, | ||||||
|     searchStore () { // 店铺搜索商品 |     searchStore() { // 店铺搜索商品 | ||||||
|       this.$emit('search', this.searchData) |       this.$emit('search', this.searchData) | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   computed: { |   computed: { | ||||||
|     promotionTags () { |     promotionTags() { | ||||||
|       if (this.$store.state.hotWordsList) { |       if (this.$store.state.hotWordsList) { | ||||||
|         return JSON.parse(this.$store.state.hotWordsList) |         return JSON.parse(this.$store.state.hotWordsList) | ||||||
|       } else { |       } else { | ||||||
|  | @ -89,7 +99,7 @@ export default { | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   created () { |   created() { | ||||||
|     this.searchData = this.$route.query.keyword |     this.searchData = this.$route.query.keyword | ||||||
|     if (!this.hover) { // 首页顶部固定搜索栏不调用热词接口 |     if (!this.hover) { // 首页顶部固定搜索栏不调用热词接口 | ||||||
|       // 搜索热词每5分钟请求一次 |       // 搜索热词每5分钟请求一次 | ||||||
|  | @ -111,27 +121,65 @@ export default { | ||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
| <style scoped lang="scss"> | <style scoped lang="scss"> | ||||||
| .container { | .navbar { | ||||||
|   margin: 30px auto; |   height: 113px; | ||||||
|   width: 460px; |   background: #fff; | ||||||
|   position: relative; |  | ||||||
| } | } | ||||||
|  | .small-search-box{ | ||||||
|  |   height: 60px; | ||||||
|  | 
 | ||||||
|  |   margin: 0 !important; | ||||||
|  | } | ||||||
|  | .search-input { | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .container { | ||||||
|  |   position: relative; | ||||||
|  |   width: 1200px; | ||||||
|  |   margin: 0 auto; | ||||||
|  |   height: 100%; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| .search { | .search { | ||||||
|  |   width: 778.4px; | ||||||
|   margin: 10px 0px 5px 0; |   margin: 10px 0px 5px 0; | ||||||
|  | 
 | ||||||
|  |   border-radius: 18.9px; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|   /deep/ .ivu-input.ivu-input-large { |   /deep/ .ivu-input.ivu-input-large { | ||||||
|     border: 2px solid $theme_color; |     border: 1.4px solid $theme_color; | ||||||
|     font-size: 12px; |     box-sizing: border-box; | ||||||
|     height: 34px; |     border-radius: 19.6px; | ||||||
|  |     position: relative; | ||||||
|  |     padding-left: 26px; | ||||||
|  |     font-size: 14px; | ||||||
|  |     font-weight: normal; | ||||||
|  |     height: 37.8px; | ||||||
|  |     color: #999; | ||||||
|     &:focus { |     &:focus { | ||||||
|       box-shadow: none; |       box-shadow: none; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|   /deep/ .ivu-input-group-append { |   /deep/ .ivu-input-group-append { | ||||||
|     border: 1px solid $theme_color; |     border-radius: 19.6px !important; | ||||||
|     border-left: none; |     cursor: pointer; | ||||||
|     height: 30px; |     box-sizing: border-box; | ||||||
|  |     border: 1.4px solid $theme_color; | ||||||
|  |     width: 67.2px; | ||||||
|  |     height: 37.8px; | ||||||
|  |     position: absolute; | ||||||
|  |     right: 0; | ||||||
|  |     display: flex; | ||||||
|  |     align-items: center; | ||||||
|  |     justify-content: center; | ||||||
|  |     top: 0; | ||||||
|  |     z-index: 99; | ||||||
|     background-color: $theme_color; |     background-color: $theme_color; | ||||||
|     color: #ffffff; |     color: #ffffff; | ||||||
|  | 
 | ||||||
|     button { |     button { | ||||||
|       font-size: 14px; |       font-size: 14px; | ||||||
|       font-weight: 600; |       font-weight: 600; | ||||||
|  | @ -139,28 +187,46 @@ export default { | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | .search-box{ | ||||||
|  |   margin-left: 28px; | ||||||
|  | } | ||||||
| .logo-img { | .logo-img { | ||||||
|   position: absolute; |  | ||||||
|   left: -360px; |  | ||||||
|   top: -9px; |  | ||||||
|   max-width: 150px; |   max-width: 150px; | ||||||
|   cursor: pointer; |   cursor: pointer; | ||||||
| } | } | ||||||
| .store-search{ | 
 | ||||||
|   width:55.6px; | .store-search { | ||||||
|  |   width: 55.6px; | ||||||
|   padding: 0 9px; |   padding: 0 9px; | ||||||
|   border-radius: 0; |   border-radius: 0; | ||||||
|   border-radius: 3px; |   border-radius: 3px; | ||||||
|   &:nth-child(2){ | 
 | ||||||
|     width:55px; |   &:nth-child(2) { | ||||||
|  |     width: 55px; | ||||||
|     margin-left: -2px; |     margin-left: -2px; | ||||||
|     border-radius: 3px; |     border-radius: 3px; | ||||||
|   } |   } | ||||||
| } | } | ||||||
| .btn-div{ | 
 | ||||||
|  | .btn-div { | ||||||
|   position: relative; |   position: relative; | ||||||
|   height: 0px; |   height: 0px; | ||||||
|   top: -38px; |   top: -38px; | ||||||
|   left: 352px; |   left: 352px; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | .history-list { | ||||||
|  |   margin-top: 2px; | ||||||
|  |   margin-left: 28px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .history-item { | ||||||
|  |   font-size: 13px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 16px; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  |   margin-right: 17px; | ||||||
|  |   color: #666666; | ||||||
|  |   cursor: pointer; | ||||||
|  | } | ||||||
| </style> | </style> | ||||||
|  |  | ||||||
|  | @ -0,0 +1,110 @@ | ||||||
|  | <template> | ||||||
|  |     <div class="shadow-box"> | ||||||
|  |         <div class="shadow-item flex flex-a-c flex-j-c" v-for="(item,index) in iconList" @click="handleClickIcon(item)" :key="index"> | ||||||
|  |           <img class="icon" :src="require(`@/assets/iconfont/${item.icon}.png`)"> | ||||||
|  |           <div class="shadow-label">{{item.label}}</div> | ||||||
|  |           <div class="line" v-if="iconList.length-1 !=index"></div> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  | export default { | ||||||
|  |   name: "fixed-index", | ||||||
|  |   data(){ | ||||||
|  |     return{ | ||||||
|  |       iconList:[ | ||||||
|  |         { | ||||||
|  |           icon:"user", | ||||||
|  |           label:"会员中心" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           icon:"consumer", | ||||||
|  |           label:"客服" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           icon:"notification", | ||||||
|  |           label:"消息" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           icon:"feedback", | ||||||
|  |           label:"反馈" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           icon:"back", | ||||||
|  |           label:"顶部" | ||||||
|  |         }, | ||||||
|  |       ], | ||||||
|  |       isScrolling:false, | ||||||
|  |       timeoutId:"", | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   mounted() { | ||||||
|  |     // 添加滚轮事件监听器 | ||||||
|  |     window.addEventListener('wheel', function() { | ||||||
|  |       if (this.isScrolling) { | ||||||
|  |         // 如果页面正在滚动,则取消定时器并设置 isScrolling 为 false | ||||||
|  |         window.cancelAnimationFrame(this.timeoutId); | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |   }, | ||||||
|  |   methods:{ | ||||||
|  |     scrollToTop() { | ||||||
|  |       const c = document.documentElement.scrollTop || document.body.scrollTop; | ||||||
|  |       if (c > 0) { | ||||||
|  |         this.timeoutId = window.requestAnimationFrame(this.scrollToTop); | ||||||
|  |         window.scrollTo(0, c - c / 4); | ||||||
|  |         this.isScrolling = true; | ||||||
|  |       }else { | ||||||
|  |         this.isScrolling = false; | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     handleClickIcon(val){ | ||||||
|  |         if(val.icon === 'back'){ | ||||||
|  |           this.scrollToTop() | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style scoped lang="scss"> | ||||||
|  | .shadow-box{ | ||||||
|  |   width: 64px; | ||||||
|  |   height: 354px; | ||||||
|  |   border-radius: 10px; | ||||||
|  |   opacity: 1; | ||||||
|  | 
 | ||||||
|  |   background: #FFFFFF; | ||||||
|  | 
 | ||||||
|  |   box-shadow: 0px 1px 10px 0px rgba(154, 154, 154, 0.5); | ||||||
|  | } | ||||||
|  | .shadow-label{ | ||||||
|  |   font-size: 13px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 16px; | ||||||
|  |   text-align: center; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  |   color: #666666; | ||||||
|  | } | ||||||
|  | .icon{ | ||||||
|  |   margin-top: 15px; | ||||||
|  |   width: 20px; | ||||||
|  |   height: 20px; | ||||||
|  |   margin-bottom: 5px; | ||||||
|  | } | ||||||
|  | .shadow-item{ | ||||||
|  |   cursor: pointer; | ||||||
|  |   flex-direction: column; | ||||||
|  |   height: 70px; | ||||||
|  |   >.line{ | ||||||
|  |     width: 34px; | ||||||
|  |     height: 1px; | ||||||
|  |     opacity: 1; | ||||||
|  |     margin-top: 17px; | ||||||
|  |     border: 0.7px solid #EAEAEA; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </style> | ||||||
|  | @ -3,20 +3,20 @@ | ||||||
|     <footer class="footer"> |     <footer class="footer"> | ||||||
|       <div class="clearfix"></div> |       <div class="clearfix"></div> | ||||||
|       <div class="icon-row"> |       <div class="icon-row"> | ||||||
|         <div class="footer-icon"> |         <div class="footer-icon flex flex-a-c"> | ||||||
|           <h5 class="footer-icon-child"></h5> |           <h5 class="footer-icon-child">多</h5> | ||||||
|           <span class="footer-icon-text">品类齐全,轻松购物</span> |           <span class="footer-icon-text">品类齐全,轻松购物</span> | ||||||
|         </div> |         </div> | ||||||
|         <div class="footer-icon"> |         <div class="footer-icon flex flex-a-c"> | ||||||
|           <h5 class="footer-icon-child footer-icon-child-2"></h5> |           <h5 class="footer-icon-child footer-icon-child-2">块</h5> | ||||||
|           <span class="footer-icon-text">多仓直发,极速配送</span> |           <span class="footer-icon-text">多仓直发,极速配送</span> | ||||||
|         </div> |         </div> | ||||||
|         <div class="footer-icon"> |         <div class="footer-icon flex flex-a-c"> | ||||||
|           <h5 class="footer-icon-child footer-icon-child-3"></h5> |           <h5 class="footer-icon-child footer-icon-child-3">好</h5> | ||||||
|           <span class="footer-icon-text">正品行货,精致服务</span> |           <span class="footer-icon-text">正品行货,精致服务</span> | ||||||
|         </div> |         </div> | ||||||
|         <div class="footer-icon"> |         <div class="footer-icon flex flex-a-c"> | ||||||
|           <h5 class="footer-icon-child footer-icon-child-4"></h5> |           <h5 class="footer-icon-child footer-icon-child-4">省</h5> | ||||||
|           <span class="footer-icon-text">天天低价,畅选无忧</span> |           <span class="footer-icon-text">天天低价,畅选无忧</span> | ||||||
|         </div> |         </div> | ||||||
|       </div> |       </div> | ||||||
|  | @ -37,27 +37,28 @@ | ||||||
|               </li> |               </li> | ||||||
| 
 | 
 | ||||||
|             </ul> |             </ul> | ||||||
|             <div class="icp"> | 
 | ||||||
|               <li v-if="config.icpCard"> |  | ||||||
|                 <a :href='"https://tsm.miit.gov.cn/dxxzsp/xkz/xkzgl/resource/qiyesearch.jsp?num="+config.icpCard+"&type=xuke"' target="_blank"> |  | ||||||
|                   {{config.icpCard}} |  | ||||||
|                 </a> |  | ||||||
|               </li> |  | ||||||
|               <li v-if="config.icpMessage" class="footer-bottmom"> |  | ||||||
|                 <a href="https://beian.miit.gov.cn/" target="_blank"> |  | ||||||
|                   {{config.icpMessage}} |  | ||||||
|                 </a> |  | ||||||
|               </li> |  | ||||||
|             </div> |  | ||||||
|           </div> |           </div> | ||||||
| 
 | 
 | ||||||
|           <div class="information footer-bottmom"> |  | ||||||
| 
 |  | ||||||
|             <a class="flex " :href="config.company.href"> |  | ||||||
|               <img class="zhizhao" src="@/assets/images/zhizhao.jpg" mode="" />{{config.company.name}} |  | ||||||
|             </a> |  | ||||||
|           </div> |           </div> | ||||||
|  |         <div class="information footer-bottmom"> | ||||||
|  |           <div class="icp"> | ||||||
|  |             <li v-if="config.icpCard"> | ||||||
|  |               <a :href='"https://tsm.miit.gov.cn/dxxzsp/xkz/xkzgl/resource/qiyesearch.jsp?num="+config.icpCard+"&type=xuke"' target="_blank"> | ||||||
|  |                 {{config.icpCard}} | ||||||
|  |               </a> | ||||||
|  |             </li> | ||||||
|  |             <li v-if="config.icpMessage" class="footer-bottmom"> | ||||||
|  |               <a href="https://beian.miit.gov.cn/" target="_blank"> | ||||||
|  |                 {{config.icpMessage}} | ||||||
|  |               </a> | ||||||
|  |             </li> | ||||||
|  |           </div> | ||||||
|  |           <a class="flex " :href="config.company.href"> | ||||||
|  |             <img class="zhizhao" src="@/assets/images/zhizhao.jpg" mode="" />{{config.company.name}} | ||||||
|  |           </a> | ||||||
|         </div> |         </div> | ||||||
|  | 
 | ||||||
|         <div class="clearfix"></div> |         <div class="clearfix"></div> | ||||||
|         <div class="copyright"> |         <div class="copyright"> | ||||||
|           <p>Copyright © {{year}} {{config.title}}</p> |           <p>Copyright © {{year}} {{config.title}}</p> | ||||||
|  | @ -77,7 +78,7 @@ export default { | ||||||
|       guideArr: [ |       guideArr: [ | ||||||
|         // 导航链接 |         // 导航链接 | ||||||
|         ["购物指南", "购物流程", "会员介绍", "生活旅行", "常见问题"], |         ["购物指南", "购物流程", "会员介绍", "生活旅行", "常见问题"], | ||||||
|         ["配送方式", "上门自提", "配送服务查询", "收取标准", "物流规则"], |         ["配送方式", "上门自提", "配送查询", "收取标准", "物流规则"], | ||||||
|         ["支付方式", "在线支付", "公司转账", "余额支付", "积分支付"], |         ["支付方式", "在线支付", "公司转账", "余额支付", "积分支付"], | ||||||
|         ["售后服务", "售后政策", "退款说明", "返修/退货", "取消订单"], |         ["售后服务", "售后政策", "退款说明", "返修/退货", "取消订单"], | ||||||
|       ], |       ], | ||||||
|  | @ -101,40 +102,36 @@ export default { | ||||||
| /*****************************底 部 开 始*****************************/ | /*****************************底 部 开 始*****************************/ | ||||||
| .footer { | .footer { | ||||||
|   width: 100%; |   width: 100%; | ||||||
|   padding-top: 30px; |   height: 370px; | ||||||
| 
 |   background: #FFFFFF; | ||||||
|   @include background_color($light_background_color); |  | ||||||
| } | } | ||||||
| .icon-row { | .icon-row { | ||||||
|   margin: 15px auto; |   display: flex; | ||||||
|   padding-top: 8px; |   align-items: center; | ||||||
|   width: 1000px; |   justify-content: space-between; | ||||||
|   height: 64px; |   width: 1056px; | ||||||
|  |   height: 71px; | ||||||
|  |   margin: 0 auto; | ||||||
| } | } | ||||||
| .footer-icon { | .footer-icon { | ||||||
|   margin-left: 17px; |  | ||||||
|   margin-right: 17px; |  | ||||||
|   float: left; |   float: left; | ||||||
| } | } | ||||||
| .footer-icon-child { | .footer-icon-child { | ||||||
|   margin-top: 10px; |  | ||||||
|   overflow: hidden; |   overflow: hidden; | ||||||
|   position: absolute; |   width: 36.4px; | ||||||
|   width: 36px; |   display: flex; | ||||||
|   height: 42px; |   align-items: center; | ||||||
|   background-image: url("../../assets/images/footer/ico_service.png"); |   justify-content: center; | ||||||
|   text-indent: -999px; |   font-size: 18.2px; | ||||||
| } |   font-weight: normal; | ||||||
| .footer-icon-child-2 { |   color: #333; | ||||||
|   background-position: 0 -43px; |   height: 36.4px; | ||||||
| } |   border: 1.4px solid #CECECE; | ||||||
| .footer-icon-child-3 { |   border-radius: 50%; | ||||||
|   background-position: 0 -86px; |  | ||||||
| } |  | ||||||
| .footer-icon-child-4 { |  | ||||||
|   background-position: 0 -129px; |  | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .icp { | .icp { | ||||||
|  |   margin-right: 30px !important; | ||||||
|   >*{ |   >*{ | ||||||
|     margin: 0 4px; |     margin: 0 4px; | ||||||
|   } |   } | ||||||
|  | @ -148,59 +145,69 @@ export default { | ||||||
|   } |   } | ||||||
| } | } | ||||||
| .footer-icon-text { | .footer-icon-text { | ||||||
|   margin-left: 45px; |   margin-left: 11px; | ||||||
|   font-size: 18px; |   font-size: 16px; | ||||||
|   font-weight: bold; | 
 | ||||||
|   line-height: 64px; |   font-weight: normal; | ||||||
|  | 
 | ||||||
|  |   text-align: center; | ||||||
| } | } | ||||||
| .service-intro { | .service-intro { | ||||||
|   width: 100%; |   width: 100%; | ||||||
|   border-top: 1px solid $border_color; |   border-top: 1px solid $border_color; | ||||||
| } | } | ||||||
| .servece-type { | .servece-type { | ||||||
|   margin: 15px auto; |   width: 952px; | ||||||
|   width: 800px; |   margin: 22px auto 10px auto; | ||||||
|   display: flex; |   display: flex; | ||||||
|   flex-direction: row; |   flex-direction: row; | ||||||
|   justify-content: space-between; |   justify-content: space-between; | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
|  | } | ||||||
|  | .servece-type-info{ | ||||||
|  | 
 | ||||||
|  | } | ||||||
| .servece-type-info ul { | .servece-type-info ul { | ||||||
|   list-style: none; |   list-style: none; | ||||||
| } | } | ||||||
| .servece-type-info li { | .servece-type-info li { | ||||||
|   font-size: 14px; |   font-size: 12px; | ||||||
|   cursor: pointer; |   cursor: pointer; | ||||||
|   line-height: 26px; |   font-weight: normal; | ||||||
| } |   line-height: 15px; | ||||||
| .servece-type-info li:hover{ |   text-align: center; | ||||||
|   color:#b8b8be; |   margin-bottom: 13px; | ||||||
|  |   color: #333; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .servece-type-info li:first-child { | .servece-type-info li:first-child { | ||||||
|   font-size: 16px; |   font-size: 14.82px; | ||||||
|   line-height: 28px; |   font-weight: normal; | ||||||
|   font-weight: bold; |   line-height: 18px; | ||||||
| } | 
 | ||||||
| .servece-type-info li:first-child:hover{ |   letter-spacing: 0px; | ||||||
|   // font-size:15px; |   margin-bottom: 17px; | ||||||
|   // font-weight: bold; |   color: #333333; | ||||||
|   color:#b8b8be; |  | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .friend-link { | .friend-link { | ||||||
|   display: flex; |   display: flex; | ||||||
|   align-items: flex-start; |   align-items: flex-start; | ||||||
|   justify-content: space-between; |   justify-content: center; | ||||||
|   width: 908px; |   width: 908px; | ||||||
|   padding: 10px 0; |   padding: 10px 0; | ||||||
|   margin: 0px auto; |   margin: 0px auto; | ||||||
|   border-top: 1px solid $border_color; |   border-top: 1px solid $border_color; | ||||||
| } | } | ||||||
| .information { | .information { | ||||||
|  |   margin-top: 23px; | ||||||
|  |   margin-bottom: 21px; | ||||||
|   display: flex; |   display: flex; | ||||||
|   flex-direction: column; |   justify-content: center; | ||||||
|   > * { | 
 | ||||||
|     margin: 2px 0; | } | ||||||
|   } | a{ | ||||||
|  |   color: #3457FF; | ||||||
| } | } | ||||||
| .zhizhao { | .zhizhao { | ||||||
|   width: 20px; |   width: 20px; | ||||||
|  | @ -213,35 +220,38 @@ export default { | ||||||
| .friend-link-item li { | .friend-link-item li { | ||||||
|   padding: 5px 0px; |   padding: 5px 0px; | ||||||
|   float: left; |   float: left; | ||||||
|  |   margin-right: 59px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 13px; | ||||||
|  |   color: #333333; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .friend-link-item li:hover{ | 
 | ||||||
|   color:#b8b8be; | 
 | ||||||
|   margin-top:-2px; |  | ||||||
| } |  | ||||||
| .footer-bottmom:hover{ |  | ||||||
|    margin-top:0 !important; |  | ||||||
| } |  | ||||||
| .footer-bottmom>a:hover{ |  | ||||||
|    color:#e4393c; |  | ||||||
| } |  | ||||||
| .link-item { | .link-item { | ||||||
|   padding: 0px 8px; |   padding: 0px 8px; | ||||||
|   cursor: pointer; |   cursor: pointer; | ||||||
|   border-right: 1px solid $border_color; | 
 | ||||||
| } | } | ||||||
| .link-last-item { | .link-last-item { | ||||||
|   border: none; |   border: none; | ||||||
| } | } | ||||||
| .copyright { | .copyright { | ||||||
|   width: 100%; |   width: 100%; | ||||||
|   line-height: 30px; |   cursor: pointer; | ||||||
|   text-align: center; |   text-align: center; | ||||||
|  |   height:25px; | ||||||
|  |   opacity: 1; | ||||||
|  |   margin-bottom: 12px; | ||||||
|  |   font-size: 12px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 13px; | ||||||
|  | 
 | ||||||
|  |   letter-spacing: 0px; | ||||||
|  | 
 | ||||||
|  |   color: #959595; | ||||||
| } | } | ||||||
| .copyright a { | 
 | ||||||
|   color: #232323; |  | ||||||
|   font-size: 20px; |  | ||||||
| } |  | ||||||
| .footer-icon-text { | .footer-icon-text { | ||||||
|   @include title_color($light_title_color); |   @include title_color($light_title_color); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,25 +1,32 @@ | ||||||
| <template> | <template> | ||||||
|   <div class="box"> |   <div class="box"> | ||||||
|     <div class="nav"> |     <div class="nav"> | ||||||
|       <ul class="location"> |       <ul class="location flex"> | ||||||
|         <li v-if="$route.path.includes('home')" style="margin-left:10px"><router-link to="/">首页</router-link></li> |         <li v-if="$route.path.includes('home')" style="margin-left:10px"> | ||||||
|  |           <router-link to="/">首页</router-link> | ||||||
|  |         </li> | ||||||
|  |         <ul class="flex"> | ||||||
|  |           <li>Hi,欢迎来到{{ config.title }}</li> | ||||||
|  |           <li class="first" v-show="!userInfo.username"> | ||||||
|  |             <router-link :to="`/signUp`" class="nav-item"> | ||||||
|  |               <span>立即注册</span> | ||||||
|  |             </router-link> | ||||||
|  |           </li> | ||||||
|  |           <li v-show="!userInfo.username"> | ||||||
|  |             <router-link class="nav-item" :to="`/login?rePath=${$route.path}&query=${JSON.stringify($route.query)}`"> | ||||||
|  |               <span>请登录</span> | ||||||
|  |             </router-link> | ||||||
|  |           </li> | ||||||
|  |         </ul> | ||||||
|       </ul> |       </ul> | ||||||
|       <ul class="detail"> |       <ul class="detail flex"> | ||||||
|         <li class="first" v-show="!userInfo.username"> |  | ||||||
|           <router-link :to="`/signUp`"> |  | ||||||
|             <span style="border:none">立即注册</span> |  | ||||||
|           </router-link> |  | ||||||
|         </li> |  | ||||||
|         <li v-show="!userInfo.username"> |  | ||||||
|           <router-link :to="`/login?rePath=${$route.path}&query=${JSON.stringify($route.query)}`"> |  | ||||||
|             <span style="border:none">请登录</span> |  | ||||||
|           </router-link> |  | ||||||
|         </li> |  | ||||||
|         <li v-show="!!userInfo.username"> |         <li v-show="!!userInfo.username"> | ||||||
|           <div class="username-p"> |           <div class="username-p"> | ||||||
|             <div> |             <div> | ||||||
|               <Avatar class="person-icon" :src="userInfo.face" icon="person" size="small" /> |               <Avatar class="person-icon" :src="userInfo.face" icon="person" size="small"/> | ||||||
|               <span class="username">{{ userInfo.nickName? userInfo.nickName : userInfo.username | secrecyMobile }}</span> |               <span class="username">{{ | ||||||
|  |                   userInfo.nickName ? userInfo.nickName : userInfo.username | secrecyMobile | ||||||
|  |                 }}</span> | ||||||
|             </div> |             </div> | ||||||
|             <transition name='fade'> |             <transition name='fade'> | ||||||
|               <ul class="drop-items"> |               <ul class="drop-items"> | ||||||
|  | @ -31,16 +38,15 @@ | ||||||
|             </transition> |             </transition> | ||||||
|           </div> |           </div> | ||||||
|         </li> |         </li> | ||||||
|         <li @click="goUserCenter('/home/MyOrder')"><span class="nav-item hover-color">我的订单</span></li> |         <li @click="goUserCenter('/home/MyOrder')"><span class="nav-item">我的订单</span></li> | ||||||
|         <li @click="goUserCenter('/home/MyTracks')"><span class="nav-item hover-color">我的足迹</span></li> |         <li @click="goUserCenter('/home/MyTracks')"><span class="nav-item">我的足迹</span></li> | ||||||
|         <li @click="goUserCenter('/home/MsgList')"><span class="nav-item hover-color">我的消息</span></li> |         <li @click="goUserCenter('/home/MsgList')"><span class="nav-item">我的消息</span></li> | ||||||
|         <li v-if="$route.name !== 'Cart'" style="position:relative;"> |         <li v-if="$route.name !== 'Cart'" style="position:relative;"> | ||||||
|           <i class="cart-badge" v-show="Number(cartNum)">{{cartNum < 100 ? cartNum : '99'}}</i> |  | ||||||
|           <Dropdown placement="bottom-start"> |           <Dropdown placement="bottom-start"> | ||||||
|             <router-link to="/cart" target="_blank"> |             <router-link to="/cart" target="_blank"> | ||||||
|               <span @mouseenter="getCartList"> |               <span class="nav-item" @mouseenter="getCartList"> | ||||||
|                 <Icon size="18" type="ios-cart-outline"></Icon> |                 <Icon size="18" type="ios-cart-outline"></Icon> | ||||||
|                 购物车 |                 购物车({{ cartNum < 100 ? cartNum : '99' }}) | ||||||
|               </span> |               </span> | ||||||
|             </router-link> |             </router-link> | ||||||
|             <DropdownMenu slot="list"> |             <DropdownMenu slot="list"> | ||||||
|  | @ -52,25 +58,25 @@ | ||||||
|               <div class="shopping-cart-list" v-show="shoppingCart.length > 0"> |               <div class="shopping-cart-list" v-show="shoppingCart.length > 0"> | ||||||
|                 <div class="shopping-cart-box" v-for="(item, index) in shoppingCart" @click="goToPay" :key="index"> |                 <div class="shopping-cart-box" v-for="(item, index) in shoppingCart" @click="goToPay" :key="index"> | ||||||
|                   <div class="shopping-cart-img"> |                   <div class="shopping-cart-img"> | ||||||
|                     <img :src="item.goodsSku.thumbnail" class="hover-pointer" /> |                     <img :src="item.goodsSku.thumbnail" class="hover-pointer"/> | ||||||
|                   </div> |                   </div> | ||||||
|                   <div class="shopping-cart-info"> |                   <div class="shopping-cart-info"> | ||||||
|                     <div class="shopping-cart-title "> |                     <div class="shopping-cart-title "> | ||||||
|                       <p class="hover-pointer goods-title ellipsis">{{ item.goodsSku.goodsName }}</p> |                       <p class="hover-pointer goods-title ellipsis">{{ item.goodsSku.goodsName }}</p> | ||||||
|                     </div> |                     </div> | ||||||
|                     <div class="shopping-cart-detail"> |                     <div class="shopping-cart-detail"> | ||||||
|                       <p> |                       <div> | ||||||
|                         数量: |                         数量: | ||||||
|                         <span class="shopping-cart-text">{{ item.num }}</span> |                         <span class="shopping-cart-text">{{ item.num }}</span> | ||||||
|                         价钱: | 
 | ||||||
|                         <span class="shopping-cart-text">{{ item.purchasePrice | unitPrice('¥') }}</span> |                       </div> | ||||||
|                       </p> |                       <div class="shopping-price"> | ||||||
|  |                         {{ item.purchasePrice | unitPrice('¥') }} | ||||||
|  |                       </div> | ||||||
|                     </div> |                     </div> | ||||||
|                   </div> |                   </div> | ||||||
|                 </div> |                 </div> | ||||||
|                 <div class="go-to-buy"> | 
 | ||||||
|                   <Button type="error" size="small" @click="goToPay">去结账</Button> |  | ||||||
|                 </div> |  | ||||||
|               </div> |               </div> | ||||||
|             </DropdownMenu> |             </DropdownMenu> | ||||||
|           </Dropdown> |           </Dropdown> | ||||||
|  | @ -78,6 +84,7 @@ | ||||||
|         <li> |         <li> | ||||||
|           <span class="nav-item" @click="shopEntry">店铺入驻</span> |           <span class="nav-item" @click="shopEntry">店铺入驻</span> | ||||||
|         </li> |         </li> | ||||||
|  | 
 | ||||||
|       </ul> |       </ul> | ||||||
|     </div> |     </div> | ||||||
|   </div> |   </div> | ||||||
|  | @ -85,42 +92,45 @@ | ||||||
| 
 | 
 | ||||||
| <script> | <script> | ||||||
| import storage from '@/plugins/storage.js'; | import storage from '@/plugins/storage.js'; | ||||||
| import { cartGoodsAll } from '@/api/cart.js'; | import {cartGoodsAll} from '@/api/cart.js'; | ||||||
| import { logout } from '@/api/account.js'; | import {logout} from '@/api/account.js'; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| export default { | export default { | ||||||
|   name: 'M-Header', |   name: 'M-Header', | ||||||
|   created () { |   created() { | ||||||
|     if (storage.getItem('userInfo')) { |     if (storage.getItem('userInfo')) { | ||||||
|       this.userInfo = JSON.parse(storage.getItem('userInfo')); |       this.userInfo = JSON.parse(storage.getItem('userInfo')); | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
| 
 | 
 | ||||||
|   data () { |   data() { | ||||||
|     return { |     return { | ||||||
|  |       config: require('@/config'), | ||||||
|       userInfo: {}, // 用户信息 |       userInfo: {}, // 用户信息 | ||||||
|       shoppingCart: [] // 购物车 |       shoppingCart: [] // 购物车 | ||||||
|     }; |     }; | ||||||
|   }, |   }, | ||||||
|   computed: { |   computed: { | ||||||
|     // 购物车商品数量 |     // 购物车商品数量 | ||||||
|     cartNum () { |     cartNum() { | ||||||
|       return this.$store.state.cartNum; |       return this.$store.state.cartNum; | ||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   methods: { |   methods: { | ||||||
|     goToPay () { // 跳转购物车 |     goToPay() { // 跳转购物车 | ||||||
|       let url = this.$router.resolve({ |       let url = this.$router.resolve({ | ||||||
|         path: '/cart' |         path: '/cart' | ||||||
|       }); |       }); | ||||||
|       window.open(url.href, '_blank'); |       window.open(url.href, '_blank'); | ||||||
|     }, |     }, | ||||||
|     myInfo () { // 跳转会员中心 |     myInfo() { // 跳转会员中心 | ||||||
|       let url = this.$router.resolve({ |       let url = this.$router.resolve({ | ||||||
|         path: '/home' |         path: '/home' | ||||||
|       }); |       }); | ||||||
|       window.open(url.href, '_blank'); |       window.open(url.href, '_blank'); | ||||||
|     }, |     }, | ||||||
|     signOutFun () { // 退出登录 |     signOutFun() { // 退出登录 | ||||||
|       logout().then(res => { |       logout().then(res => { | ||||||
|         storage.removeItem('accessToken'); |         storage.removeItem('accessToken'); | ||||||
|         storage.removeItem('refreshToken'); |         storage.removeItem('refreshToken'); | ||||||
|  | @ -130,10 +140,10 @@ export default { | ||||||
|         this.$router.push('/login'); |         this.$router.push('/login'); | ||||||
|       }); |       }); | ||||||
|     }, |     }, | ||||||
|     goUserCenter (path) { |     goUserCenter(path) { | ||||||
|       // 跳转我的订单,我的足迹、收藏等 |       // 跳转我的订单,我的足迹、收藏等 | ||||||
|       if (this.userInfo.username) { |       if (this.userInfo.username) { | ||||||
|         this.$router.push({ path: path }); |         this.$router.push({path: path}); | ||||||
|       } else { |       } else { | ||||||
|         this.$Modal.confirm({ |         this.$Modal.confirm({ | ||||||
|           title: '请登录', |           title: '请登录', | ||||||
|  | @ -152,19 +162,19 @@ export default { | ||||||
|         }); |         }); | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     shopEntry () { |     shopEntry() { | ||||||
|       // 店铺入驻 |       // 店铺入驻 | ||||||
|       if (storage.getItem('accessToken')) { |       if (storage.getItem('accessToken')) { | ||||||
|         let routeUrl = this.$router.resolve({ |         let routeUrl = this.$router.resolve({ | ||||||
|           path: '/shopEntry', |           path: '/shopEntry', | ||||||
|           query: { id: 1 } |           query: {id: 1} | ||||||
|         }); |         }); | ||||||
|         window.open(routeUrl.href, '_blank'); |         window.open(routeUrl.href, '_blank'); | ||||||
|       } else { |       } else { | ||||||
|         this.$router.push('login'); |         this.$router.push('login'); | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|     getCartList () { |     getCartList() { | ||||||
|       // 获取购物车列表 |       // 获取购物车列表 | ||||||
|       if (this.userInfo.username) { |       if (this.userInfo.username) { | ||||||
|         cartGoodsAll().then((res) => { |         cartGoodsAll().then((res) => { | ||||||
|  | @ -179,106 +189,91 @@ export default { | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <style scoped lang="scss"> | <style scoped lang="scss"> | ||||||
| .shopping-cart-detail, |  | ||||||
| .shopping-cart-text, |  | ||||||
| .shopping-cart-info, |  | ||||||
| .nav a, |  | ||||||
| .location, |  | ||||||
| .first, |  | ||||||
| .username, |  | ||||||
| .shopping-cart-null span { |  | ||||||
|   |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| .box { | .box { | ||||||
|   width: 100%; |   width: 100%; | ||||||
|   font-size: 12px!important; |   font-size: 12px !important; | ||||||
|   // height: 35px; |    height: 36px; | ||||||
|   @include background_color($light_white_background_color); |   background: #333; | ||||||
|  |   color: #fff; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .nav { | .nav { | ||||||
|   margin: 0 auto; |   margin: 0 auto; | ||||||
|   width: 1200px; |   width: 1200px; | ||||||
|   display: flex; |   display: flex; | ||||||
|   flex-direction: row; |   flex-direction: row; | ||||||
|   justify-content: space-between; |   justify-content: space-between; | ||||||
|  | 
 | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .nav ul { | .nav ul { | ||||||
|   list-style: none; |   list-style: none; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .nav li { | .nav li { | ||||||
|  |   cursor: pointer; | ||||||
|   float: left; |   float: left; | ||||||
|   font-size: 12px; |   line-height: 36px; | ||||||
|   line-height: 35px; |   margin-right: 15px; | ||||||
|   margin-right: 10px; | 
 | ||||||
|   font-weight: bold; |  | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .nav a, | .nav a, | ||||||
| .nav-item { | .nav-item { | ||||||
|  |   font-size: 13px; | ||||||
|  |   font-weight: normal; | ||||||
|   text-decoration: none; |   text-decoration: none; | ||||||
|   padding-left: 14px; | 
 | ||||||
|   border-left: 1px solid #ccc; |   border-left: 1px solid #ccc !important; | ||||||
|   color: #999; |  | ||||||
|   cursor: pointer; |   cursor: pointer; | ||||||
|  |   color: #fff; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | .nav-item { | ||||||
|  |   padding-left: 20px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| .location a { | .location a { | ||||||
|   border-left: none; |   border-left: none; | ||||||
| } | } | ||||||
| .nav a:hover { | 
 | ||||||
|   color: $theme_color; |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| .icon { | .icon { | ||||||
|   color: gray; |   color: gray; | ||||||
|   vertical-align: middle; |   vertical-align: middle; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .first a:first-child { |  | ||||||
|   padding-left: 3px; |  | ||||||
|   border-left: none; |  | ||||||
| } |  | ||||||
| .city { | .city { | ||||||
|   padding: 10px 15px; |   padding: 10px 15px; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .city-item { | .city-item { | ||||||
|   font-weight: bold; |   font-weight: bold; | ||||||
|   cursor: pointer; |   cursor: pointer; | ||||||
|   padding: 5px; |   padding: 5px; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .city-item:hover { | .city-item:hover { | ||||||
|   color: $theme_color; |   color: $theme_color; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .person-icon { | .person-icon { | ||||||
|   color: $theme_color; |   color: $theme_color; | ||||||
|   background-color: #f0cdb2; |   background-color: #f0cdb2; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .shopping-cart-list { | 
 | ||||||
|   padding: 10px 15px; |  | ||||||
|   box-sizing: border-box; |  | ||||||
|   max-height: 300px; |  | ||||||
|   overflow: scroll; |  | ||||||
| } |  | ||||||
| .shopping-cart-box { |  | ||||||
|   margin: 8px 0px; |  | ||||||
|   margin-top: 15px; |  | ||||||
|   padding-bottom: 15px; |  | ||||||
|   height: 40px; |  | ||||||
|   display: flex; |  | ||||||
|   align-items: center; |  | ||||||
|   border-bottom: 1px #ccc dotted; |  | ||||||
| } |  | ||||||
| .shopping-cart-box:first-child { |  | ||||||
|   margin-top: 8px; |  | ||||||
| } |  | ||||||
| .shopping-cart-img { | .shopping-cart-img { | ||||||
|   margin-right: 15px; |   margin-right: 15px; | ||||||
|   width: 40px; |   width: 40px; | ||||||
|   height: 40px; |   height: 40px; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .shopping-cart-img img { | .shopping-cart-img img { | ||||||
|   width: 100%; |   width: 100%; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .shopping-cart-info { | .shopping-cart-info { | ||||||
|   display: flex; |   display: flex; | ||||||
|   flex-direction: column; |   flex-direction: column; | ||||||
|  | @ -290,10 +285,7 @@ export default { | ||||||
|   line-height: 20px; |   line-height: 20px; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .go-to-buy { | 
 | ||||||
|   display: flex; |  | ||||||
|   justify-content: flex-end; |  | ||||||
| } |  | ||||||
| .shopping-cart-null { | .shopping-cart-null { | ||||||
|   padding: 15px; |   padding: 15px; | ||||||
|   display: flex; |   display: flex; | ||||||
|  | @ -301,22 +293,28 @@ export default { | ||||||
|   align-items: center; |   align-items: center; | ||||||
|   justify-content: center; |   justify-content: center; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .cart-null-icon { | .cart-null-icon { | ||||||
|   font-size: 38px; |   font-size: 38px; | ||||||
|   margin-bottom: 15px; |   margin-bottom: 15px; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .shopping-cart-null span { | .shopping-cart-null span { | ||||||
|   font-size: 12px; |   font-size: 12px; | ||||||
|   line-height: 16px; |   line-height: 16px; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .username-p { | .username-p { | ||||||
|   position: relative; |   position: relative; | ||||||
|   div{ | 
 | ||||||
|  |   div { | ||||||
|     cursor: pointer; |     cursor: pointer; | ||||||
|     >span{ | 
 | ||||||
|  |     > span { | ||||||
|       margin-left: 5px; |       margin-left: 5px; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|   .drop-items { |   .drop-items { | ||||||
|     position: absolute; |     position: absolute; | ||||||
|     display: none; |     display: none; | ||||||
|  | @ -335,19 +333,21 @@ export default { | ||||||
|     li { |     li { | ||||||
|       color: rgb(107, 106, 106); |       color: rgb(107, 106, 106); | ||||||
|       width: 100%; |       width: 100%; | ||||||
|       border-bottom:1px solid rgb(207, 206, 206); |       border-bottom: 1px solid rgb(207, 206, 206); | ||||||
|       font-weight: normal; |       font-weight: normal; | ||||||
|       text-align: center; |       text-align: center; | ||||||
|       &:last-child{ | 
 | ||||||
|  |       &:last-child { | ||||||
|         border: none; |         border: none; | ||||||
|       } |       } | ||||||
|       &:hover{ | 
 | ||||||
|  |       &:hover { | ||||||
|         cursor: pointer; |         cursor: pointer; | ||||||
|         color: $theme_color; |         color: $theme_color; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     &::before{ |     &::before { | ||||||
|       position: absolute; |       position: absolute; | ||||||
|       top: -20px; |       top: -20px; | ||||||
|       left: 30px; |       left: 30px; | ||||||
|  | @ -355,10 +355,10 @@ export default { | ||||||
|       width: 0; |       width: 0; | ||||||
|       height: 0; |       height: 0; | ||||||
|       border: 10px solid #999; |       border: 10px solid #999; | ||||||
|       border-color:  transparent transparent #fff transparent ; |       border-color: transparent transparent #fff transparent; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     &::after{ |     &::after { | ||||||
|       content: ''; |       content: ''; | ||||||
|       position: absolute; |       position: absolute; | ||||||
|       width: 80px; |       width: 80px; | ||||||
|  | @ -367,8 +367,9 @@ export default { | ||||||
|       left: 0; |       left: 0; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   &:hover{ | 
 | ||||||
|     .drop-items{ |   &:hover { | ||||||
|  |     .drop-items { | ||||||
|       display: block; |       display: block; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | @ -382,11 +383,13 @@ export default { | ||||||
|   justify-content: center; |   justify-content: center; | ||||||
|   align-items: center; |   align-items: center; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .my-page a { | .my-page a { | ||||||
|   margin: 0px; |   margin: 0px; | ||||||
|   padding: 0px; |   padding: 0px; | ||||||
|   border: none; |   border: none; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .my-info { | .my-info { | ||||||
|   padding: 5px; |   padding: 5px; | ||||||
|   width: 50%; |   width: 50%; | ||||||
|  | @ -394,15 +397,19 @@ export default { | ||||||
|   text-align: center; |   text-align: center; | ||||||
|   cursor: pointer; |   cursor: pointer; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .my-info:hover { | .my-info:hover { | ||||||
|   box-shadow: 0px 0px 5px #ccc; |   box-shadow: 0px 0px 5px #ccc; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .my-info i { | .my-info i { | ||||||
|   font-size: 28px; |   font-size: 28px; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .my-info p { | .my-info p { | ||||||
|   font-size: 12px; |   font-size: 12px; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .sign-out { | .sign-out { | ||||||
|   padding: 5px; |   padding: 5px; | ||||||
|   width: 50%; |   width: 50%; | ||||||
|  | @ -410,18 +417,23 @@ export default { | ||||||
|   text-align: center; |   text-align: center; | ||||||
|   cursor: pointer; |   cursor: pointer; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .sign-out:hover { | .sign-out:hover { | ||||||
|   box-shadow: 0px 0px 5px $border_color; |   box-shadow: 0px 0px 5px $border_color; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .sign-out i { | .sign-out i { | ||||||
|   font-size: 28px; |   font-size: 28px; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .sign-out p { | .sign-out p { | ||||||
|   font-size: 12px; |   font-size: 12px; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .goods-title:hover { | .goods-title:hover { | ||||||
|   color: $theme_color; |   color: $theme_color; | ||||||
| } | } | ||||||
|  | 
 | ||||||
| .cart-badge { | .cart-badge { | ||||||
|   position: absolute; |   position: absolute; | ||||||
|   right: -8px; |   right: -8px; | ||||||
|  | @ -437,4 +449,34 @@ export default { | ||||||
|   z-index: 3; |   z-index: 3; | ||||||
|   top: 3px; |   top: 3px; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | .shopping-cart-box { | ||||||
|  |   padding: 8px 0; | ||||||
|  |   cursor: pointer; | ||||||
|  |   display: flex; | ||||||
|  |   align-items: center; | ||||||
|  |   border-bottom: 1px #ccc dotted; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .shopping-cart-list { | ||||||
|  |   padding: 10px 10px; | ||||||
|  |   box-sizing: border-box; | ||||||
|  |   max-height: 300px; | ||||||
|  |   overflow-y: scroll; | ||||||
|  |   color: #333; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .shopping-cart-detail { | ||||||
|  |   color: #999; | ||||||
|  |   font-size: 12px; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .shopping-price { | ||||||
|  |   color: $theme_color; | ||||||
|  |   font-size: 14px; | ||||||
|  |   font-weight: bold; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| </style> | </style> | ||||||
|  |  | ||||||
|  | @ -1,22 +1,27 @@ | ||||||
| <template> | <template> | ||||||
|   <div class="scroll-show"> |   <div class="scroll-show"> | ||||||
|     <div class="content clearfix"> |     <div class="content clearfix"> | ||||||
|       <cateNav class="cate" :hover="true" :showNavBar="false"></cateNav> |       <cateNav class="cate" :hover="true" :showNavBar="false" | ||||||
|  |                useClass="fixed-show"></cateNav> | ||||||
|       <Search |       <Search | ||||||
|         class="search-con" |         class="search-con" | ||||||
|         :hover="true" |         :hover="true" | ||||||
|  |         ref="search" | ||||||
|         :showLogo="false" |         :showLogo="false" | ||||||
|         :showTag="false" |         :showTag="false" | ||||||
|  |         useClass="fixed-show" | ||||||
|       ></Search> |       ></Search> | ||||||
|       <Icon |       <div class="flex flex-a-c cart"> | ||||||
|         type="ios-cart-outline" |         <Icon | ||||||
|         @click="goCartList" |           type="ios-cart-outline" | ||||||
|         class="cart-icon" |           @click="goCartList" | ||||||
|         @mouseenter.native="getCartList" |           class="cart-icon" | ||||||
|       /> |           @mouseenter.native="getCartList" | ||||||
|       <i class="cart-badge">{{ cartNum < 100 ? cartNum : "99" }}</i> |         /> | ||||||
|  |         <i class="cart-badge">{{ cartNum < 100 ? cartNum : "99" }}</i> | ||||||
|  |       </div> | ||||||
|     </div> |     </div> | ||||||
|     <hr class="hr"/> | 
 | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
| <script> | <script> | ||||||
|  | @ -53,6 +58,7 @@ export default { | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
|   mounted() { |   mounted() { | ||||||
|  | 
 | ||||||
|     if (storage.getItem("userInfo")) { |     if (storage.getItem("userInfo")) { | ||||||
|       this.userInfo = JSON.parse(storage.getItem("userInfo")); |       this.userInfo = JSON.parse(storage.getItem("userInfo")); | ||||||
|     } |     } | ||||||
|  | @ -60,14 +66,11 @@ export default { | ||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
| <style lang="scss" scoped> | <style lang="scss" scoped> | ||||||
| .hr{ | 
 | ||||||
|   height:1px; |  | ||||||
|   background:$theme_color; |  | ||||||
| } |  | ||||||
| .content { | .content { | ||||||
|   width: 1200px; |   width: 1200px; | ||||||
|   height: 40px; |   height: 40px; | ||||||
|   margin: 10px auto; |   margin: 0 auto; | ||||||
|   position: relative; |   position: relative; | ||||||
| } | } | ||||||
| .cate { | .cate { | ||||||
|  | @ -80,11 +83,14 @@ export default { | ||||||
|   overflow: hidden; |   overflow: hidden; | ||||||
|   margin-top: -27px; |   margin-top: -27px; | ||||||
| } | } | ||||||
|  | .cart{ | ||||||
|  |   height: 60px; | ||||||
|  | } | ||||||
| .cart-icon { | .cart-icon { | ||||||
|   width: 30px; |   width: 30px; | ||||||
|   float: left; |   float: left; | ||||||
|   font-size: 25px; |   font-size: 25px; | ||||||
|   margin-top: 8px; | 
 | ||||||
|   color: $theme_color; |   color: $theme_color; | ||||||
|   z-index: 1; |   z-index: 1; | ||||||
|   position: relative; |   position: relative; | ||||||
|  | @ -106,6 +112,6 @@ export default { | ||||||
|   line-height: 17px; |   line-height: 17px; | ||||||
|   text-align: center; |   text-align: center; | ||||||
|   z-index: 5; |   z-index: 5; | ||||||
|   top: 3px; |   top: 10px; | ||||||
| } | } | ||||||
| </style> | </style> | ||||||
|  |  | ||||||
|  | @ -81,6 +81,11 @@ | ||||||
|     <template v-if="element.type == 'recommend'"> |     <template v-if="element.type == 'recommend'"> | ||||||
|       <recommend :data="element" class="mb_20 width_1200_auto"></recommend> |       <recommend :data="element" class="mb_20 width_1200_auto"></recommend> | ||||||
|     </template> |     </template> | ||||||
|  | 
 | ||||||
|  |     <!-- 一行三列 --> | ||||||
|  |     <template v-if="element.type == 'oneRowThreeColumns'"> | ||||||
|  |       <oneRowThreeColumns :data="element" class="mb_20 width_1200_auto"></oneRowThreeColumns> | ||||||
|  |     </template> | ||||||
|     <!-- 新品排行 --> |     <!-- 新品排行 --> | ||||||
|     <template v-if="element.type == 'newGoodsSort'"> |     <template v-if="element.type == 'newGoodsSort'"> | ||||||
|       <new-goods-sort |       <new-goods-sort | ||||||
|  | @ -100,7 +105,7 @@ | ||||||
|       <div style="width: 100%; text-align: center"> |       <div style="width: 100%; text-align: center"> | ||||||
|         <img |         <img | ||||||
|           width="1200" |           width="1200" | ||||||
|           class="hover-pointer mb_20" |           class="hover-pointer mb_20 bannerAd" | ||||||
|           @click="linkTo(element.options.url)" |           @click="linkTo(element.options.url)" | ||||||
|           :src="element.options.img" |           :src="element.options.img" | ||||||
|           alt="" |           alt="" | ||||||
|  | @ -126,6 +131,7 @@ import NewGoodsSort from "./modelList/NewGoodsSort.vue"; | ||||||
| import Recommend from "./modelList/Recommend.vue"; | import Recommend from "./modelList/Recommend.vue"; | ||||||
| import NotEnough from "./modelList/NotEnough.vue"; | import NotEnough from "./modelList/NotEnough.vue"; | ||||||
| import Seckill from "./modelList/Seckill.vue"; | import Seckill from "./modelList/Seckill.vue"; | ||||||
|  | import oneRowThreeColumns from "./modelList/oneRowThreeColumns.vue"; | ||||||
| 
 | 
 | ||||||
| export default { | export default { | ||||||
|   name: "modelFormItem", |   name: "modelFormItem", | ||||||
|  | @ -139,6 +145,7 @@ export default { | ||||||
|     FirstPageAdvert, |     FirstPageAdvert, | ||||||
|     NotEnough, |     NotEnough, | ||||||
|     Seckill, |     Seckill, | ||||||
|  |     oneRowThreeColumns | ||||||
|   }, |   }, | ||||||
|   data() { |   data() { | ||||||
|     return { |     return { | ||||||
|  | @ -153,7 +160,11 @@ export default { | ||||||
|   position: relative; |   position: relative; | ||||||
|   margin-bottom: 10px; |   margin-bottom: 10px; | ||||||
| } | } | ||||||
| 
 | .bannerAd{ | ||||||
|  |   width: 1183px; | ||||||
|  |   height: 166.6px; | ||||||
|  |   border-radius: 10px; | ||||||
|  | } | ||||||
| /** 热门广告 */ | /** 热门广告 */ | ||||||
| .advert-list { | .advert-list { | ||||||
|   background: $theme_color; |   background: $theme_color; | ||||||
|  | @ -201,6 +212,6 @@ export default { | ||||||
| .width_1200_auto { | .width_1200_auto { | ||||||
|   width: 1200px; |   width: 1200px; | ||||||
|   margin: 0 auto; |   margin: 0 auto; | ||||||
|   background-color: #fff; | 
 | ||||||
| } | } | ||||||
| </style> | </style> | ||||||
|  |  | ||||||
|  | @ -5,14 +5,13 @@ | ||||||
|       <div class="nav-side"></div> |       <div class="nav-side"></div> | ||||||
|       <div class="nav-content"> |       <div class="nav-content"> | ||||||
|         <!-- 轮播图 --> |         <!-- 轮播图 --> | ||||||
|         <Carousel autoplay> | <!--        autoplay autoplay-speed="10000"--> | ||||||
|  |         <Carousel :height="333.9" > | ||||||
|           <CarouselItem v-for="(item, index) in data.options.list" :key="index"> |           <CarouselItem v-for="(item, index) in data.options.list" :key="index"> | ||||||
|             <div style="overflow: hidden"> |             <div class="swiper-img" > | ||||||
|               <img |               <img | ||||||
|                 :src="item.img" |                 :src="item.img" | ||||||
|                 width="790" |  | ||||||
|                 @click="linkTo(item.url)" |                 @click="linkTo(item.url)" | ||||||
|                 height="340" |  | ||||||
|                 class="hover-pointer" |                 class="hover-pointer" | ||||||
|               /> |               /> | ||||||
|             </div> |             </div> | ||||||
|  | @ -21,47 +20,62 @@ | ||||||
|       </div> |       </div> | ||||||
|       <div class="nav-right"> |       <div class="nav-right"> | ||||||
|         <div class="person-msg"> |         <div class="person-msg"> | ||||||
|           <img :src="userInfo.face" v-if="userInfo.face" alt /> |           <img class="user-face" :src="userInfo.face || defaultAvatar"  alt /> | ||||||
|           <Avatar icon="ios-person" class="mb_10" v-else size="80" /> |           <div class="welcome"> | ||||||
|           <div> |  | ||||||
|             Hi, {{ |             Hi, {{ | ||||||
|               userInfo.nickName || `欢迎来到${config.title}` | secrecyMobile |               userInfo.nickName || `欢迎来到${config.title}` | secrecyMobile | ||||||
|             }} |             }} | ||||||
|           </div> |           </div> | ||||||
|           <div v-if="userInfo.id"> |           <div v-if="userInfo.id"> | ||||||
|             <Button class="btns" shape="circle" @click="$router.push('home')" |             <div class="icon-list flex flex-j-sb" @click="entryControl"> | ||||||
|               >会员中心</Button |               <div class="icon-item" :key="index" v-for="(item,index) in recentList"> | ||||||
|  |                 <div class="value"> | ||||||
|  |                   {{ item.value}} | ||||||
|  |                 </div> | ||||||
|  |                 <div class="label"> | ||||||
|  |                   {{ item.label}} | ||||||
|  |                 </div> | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |           <div v-else class="flex flex-a-c "> | ||||||
|  |             <div class="btns" @click="$router.push('login')" shape="circle" | ||||||
|  |             >登录</div | ||||||
|  |             > | ||||||
|  |             <div class="btns sign-up" @click="$router.push('signUp')" shape="circle" | ||||||
|  |             >注册</div | ||||||
|             > |             > | ||||||
|           </div> |           </div> | ||||||
|           <div v-else> | 
 | ||||||
|             <Button class="btns" @click="$router.push('login')" shape="circle" |           <div class="gray-line"></div> | ||||||
|               >请登录</Button |           <div class="icon-list flex flex-j-sb" @click="entryControl"> | ||||||
|             > |             <div class="icon-item" :key="index" v-for="(item,index) in entranceList"> | ||||||
|  |               <img class="icon" :src="require(`@/assets/iconfont/${item.icon}.png`)"> | ||||||
|  |               <div> | ||||||
|  |                 {{ item.label}} | ||||||
|  |               </div> | ||||||
|  |             </div> | ||||||
|           </div> |           </div> | ||||||
|         </div> |           <div class="icon-list flex flex-j-sb" @click="entryControl"> | ||||||
|         <div class="shop-msg"> |             <div class="icon-item" :key="index" v-for="(item,index) in appendList"> | ||||||
|           <div> |               <img class="icon" :src="require(`@/assets/iconfont/${item.icon}.png`)"> | ||||||
|             <span>常见问题</span> |               <div> | ||||||
|             <ul class="article-list"> |                 {{ item.label}} | ||||||
|               <li |               </div> | ||||||
|                 class="ellipsis" |             </div> | ||||||
|                 :alt="article.title" |  | ||||||
|                 v-for="(article, index) in articleList" |  | ||||||
|                 :key="index" |  | ||||||
|                 @click="goArticle(article.id)" |  | ||||||
|               > |  | ||||||
|                 {{ article.title }} |  | ||||||
|               </li> |  | ||||||
|             </ul> |  | ||||||
|           </div> |           </div> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|         </div> |         </div> | ||||||
|  | 
 | ||||||
|       </div> |       </div> | ||||||
|     </div> |     </div> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
| <script> | <script> | ||||||
| import { articleList } from "@/api/common.js"; | 
 | ||||||
| import storage from "@/plugins/storage"; | import storage from "@/plugins/storage"; | ||||||
| export default { | export default { | ||||||
|   name: "modelCarousel", |   name: "modelCarousel", | ||||||
|  | @ -69,60 +83,225 @@ export default { | ||||||
|   data() { |   data() { | ||||||
|     return { |     return { | ||||||
|       config: require("@/config"), |       config: require("@/config"), | ||||||
|  |       defaultAvatar: require("@/assets/images/default.png"), | ||||||
|       userInfo: {}, // 用户信息 |       userInfo: {}, // 用户信息 | ||||||
|       articleList: [], // 常见问题 |       entranceList:[ | ||||||
|       params: { |         { | ||||||
|         // 请求常见问题参数 |           icon:"collage", | ||||||
|         pageNumber: 1, |           label:"宝贝收藏" | ||||||
|         pageSize: 5, |         }, | ||||||
|         type: "ANNOUNCEMENT", |         { | ||||||
|         sort: "sort", |           icon:"shop", | ||||||
|       }, |           label:"收藏店铺" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           icon:"carts", | ||||||
|  |           label:"购物车" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           icon:"story", | ||||||
|  |           label:"我的足迹" | ||||||
|  |         }, | ||||||
|  |       ], | ||||||
|  |       appendList:[ | ||||||
|  |         { | ||||||
|  |           icon:"support", | ||||||
|  |           label:"帮助中心" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           icon:"feedback", | ||||||
|  |           label:"问题反馈" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           icon:"notice", | ||||||
|  |           label:"平台公告" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           icon:"notification", | ||||||
|  |           label:"我的消息" | ||||||
|  |         }, | ||||||
|  |       ], | ||||||
|  |       recentList:[ | ||||||
|  |         { | ||||||
|  |           value:"0", | ||||||
|  |           label:"购物车" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           value:"0", | ||||||
|  |           label:"待收货" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           value:"0", | ||||||
|  |           label:"待发货" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           value:"0", | ||||||
|  |           label:"代付款" | ||||||
|  |         }, | ||||||
|  |       ], | ||||||
|     }; |     }; | ||||||
|   }, |   }, | ||||||
|   methods: { |   methods: { | ||||||
|     getArticleList() { |     // 快捷跳转中心 | ||||||
|       // 获取常见问题列表 |     entryControl(){ | ||||||
|       articleList(this.params).then((res) => { | 
 | ||||||
|         if (res.success) { |  | ||||||
|           this.articleList = res.result.records; |  | ||||||
|         } |  | ||||||
|       }); |  | ||||||
|     }, |  | ||||||
|     goArticle(id) { |  | ||||||
|       // 跳转文章详情 |  | ||||||
|       let routeUrl = this.$router.resolve({ |  | ||||||
|         path: "/article", |  | ||||||
|         query: { id }, |  | ||||||
|       }); |  | ||||||
|       window.open(routeUrl.href, "_blank"); |  | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
|   mounted() { |    mounted() { | ||||||
|     if (storage.getItem("userInfo")) |     if (storage.getItem("userInfo")) | ||||||
|       this.userInfo = JSON.parse(storage.getItem("userInfo")); |       this.userInfo = JSON.parse(storage.getItem("userInfo")); | ||||||
|     this.getArticleList(); | 
 | ||||||
|   }, |   }, | ||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <style scoped lang="scss"> | <style scoped lang="scss"> | ||||||
|  | .label{ | ||||||
|  |   font-size: 12px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 14px; | ||||||
|  |   text-align: center; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  | 
 | ||||||
|  |   color: #666666; | ||||||
|  | } | ||||||
|  | .swiper-img{ | ||||||
|  |   overflow: hidden; | ||||||
|  |   width: 637px; | ||||||
|  |   height: 329.9px; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .icon-list{ | ||||||
|  |   width: 216px | ||||||
|  | } | ||||||
|  | .icon-list:nth-last-of-type(1){ | ||||||
|  |   margin-top: 20px; | ||||||
|  | } | ||||||
|  | .hot-box{ | ||||||
|  |   margin-top: 35px; | ||||||
|  |   width: 216px; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | .hot-tag{ | ||||||
|  |   margin-right: 6px; | ||||||
|  |   width: 36px; | ||||||
|  |   height: 18px; | ||||||
|  |   border-radius: 4px; | ||||||
|  |   opacity: 1; | ||||||
|  |   font-size: 12px; | ||||||
|  |   border: 1px solid $theme_color; | ||||||
|  |   color: $theme_color; | ||||||
|  |   text-align: center; | ||||||
|  |   line-height: 18px; | ||||||
|  | } | ||||||
|  | .gray-line{ | ||||||
|  |   width: 216px; | ||||||
|  |   height: 1px; | ||||||
|  |   border: 1px solid #E5E5E5; | ||||||
|  |   margin-bottom: 13px; | ||||||
|  | } | ||||||
|  | .icon{ | ||||||
|  |   width: 20px !important; | ||||||
|  |   height: 20px !important; | ||||||
|  |   margin-bottom: 7px; | ||||||
|  | } | ||||||
|  | .icon-item{ | ||||||
|  | 
 | ||||||
|  |   cursor: pointer; | ||||||
|  |   text-align: center; | ||||||
|  |   >div{ | ||||||
|  |     font-size: 11px; | ||||||
|  |     font-weight: normal; | ||||||
|  |     line-height: 13px; | ||||||
|  |     text-align: center; | ||||||
|  |     letter-spacing: 0px; | ||||||
|  | 
 | ||||||
|  |     color: #666666; | ||||||
|  |   } | ||||||
|  |   >.value{ | ||||||
|  |     font-size: 14px; | ||||||
|  | 
 | ||||||
|  |     line-height: 17px; | ||||||
|  |     text-align: center; | ||||||
|  |     font-weight: 400; | ||||||
|  |     letter-spacing: 0px; | ||||||
|  |     margin-bottom: 3px; | ||||||
|  |     color: $theme_color; | ||||||
|  |   } | ||||||
|  |   >.label{ | ||||||
|  |     font-weight: 400; | ||||||
|  |     font-size: 12px; | ||||||
|  | 
 | ||||||
|  |     line-height: 14px; | ||||||
|  |     text-align: center; | ||||||
|  |     letter-spacing: 0px; | ||||||
|  |     color: #666666; | ||||||
|  |     margin-bottom: 13px; | ||||||
|  |   } | ||||||
|  | } | ||||||
| .model-carousel { | .model-carousel { | ||||||
|   width: 1200px; |   width: 1200px; | ||||||
|   height: 340px; |   height: 340px; | ||||||
|   overflow: hidden; |   overflow: hidden; | ||||||
| } | } | ||||||
|  | .hover-pointer{ | ||||||
|  |   //display: block; | ||||||
|  |   //width: 100%; | ||||||
|  |   //height: 100%; | ||||||
|  |   width: 637px; | ||||||
|  |   height: 329.9px; | ||||||
|  |   object-fit: cover; | ||||||
|  |   border-radius: 10px; | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | .welcome{ | ||||||
|  |   font-size: 14px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 17px; | ||||||
|  |   text-align: center; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  | 
 | ||||||
|  |   color: #333333; | ||||||
|  | } | ||||||
|  | .hr{ | ||||||
|  |   width: 216px; | ||||||
|  |   height: 1px; | ||||||
|  |   border: 1px solid #E5E5E5; | ||||||
|  | } | ||||||
| .btns { | .btns { | ||||||
|   background-color:#363634 ; |   margin-top: 21px; | ||||||
|   line-height:30px; |   margin-bottom: 13px; | ||||||
|   color: white !important; |   width: 77px; | ||||||
|  |   height: 28px; | ||||||
|  |   border-radius: 14px; | ||||||
|  |   opacity: 1; | ||||||
|  |   font-size: 13px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 28px; | ||||||
|  |   text-align: center; | ||||||
|  |   cursor: pointer; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  | 
 | ||||||
|  |   color: #FFFFFF; | ||||||
|  |   background: $theme_color; | ||||||
| } | } | ||||||
| .btns:hover { | .sign-up{ | ||||||
|   background-color: #363634; |   background: #F39519; | ||||||
|   line-height:32px !important; |   margin-left: 10px; | ||||||
|   color: #e5d790 !important; |  | ||||||
| } | } | ||||||
|  | .avatar{ | ||||||
|  |   margin-bottom: 13px; | ||||||
|  | } | ||||||
|  | .user-face{ | ||||||
|  | 
 | ||||||
|  |     margin-bottom: 12px; | ||||||
|  |     width: 70px; | ||||||
|  |     height: 70px; | ||||||
|  |     border-radius: 50%; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | 
 | ||||||
| /* 导航主体 */ | /* 导航主体 */ | ||||||
| .nav-body { | .nav-body { | ||||||
|   width: 1200px; |   width: 1200px; | ||||||
|  | @ -131,45 +310,47 @@ export default { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .nav-side { | .nav-side { | ||||||
|   height: 100%; |   height: 334px; | ||||||
|   width: 200px; |   width: 263.2px; | ||||||
|  |   border-bottom-left-radius: 10px; | ||||||
|  |   border-bottom-right-radius: 10px; | ||||||
|   float: left; |   float: left; | ||||||
|   padding: 0px; |   padding: 0px; | ||||||
|   color: #fff; |   color: #fff; | ||||||
|   background-color: #6e6568; |   background-color: #6e6568; | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| /*导航内容*/ | /*导航内容*/ | ||||||
| .nav-content { | .nav-content { | ||||||
|   width: 790px; |   width: 637px; | ||||||
|   overflow: hidden; |   margin-left: 10.8px; | ||||||
|  | 
 | ||||||
|  |   margin-top: 10px; | ||||||
|  |   height: 333.9px; | ||||||
|  | 
 | ||||||
|   float: left; |   float: left; | ||||||
|   position: relative; |   position: relative; | ||||||
| } | } | ||||||
| .nav-right { | .nav-right { | ||||||
|   float: left; |   float: left; | ||||||
|   width: 210px; |   margin-top: 10px; | ||||||
|  |   width: 263.2px; | ||||||
|  |   margin-left: 10px; | ||||||
|  | 
 | ||||||
|  |   border-radius: 10px; | ||||||
|  |   background: #FFFFFF; | ||||||
|   .person-msg { |   .person-msg { | ||||||
|  |     height: 333px; | ||||||
|     display: flex; |     display: flex; | ||||||
|     align-items: center; |     align-items: center; | ||||||
|     flex-direction: column; |     flex-direction: column; | ||||||
|     margin: 20px auto; |     padding-top: 28px; | ||||||
|     button { |     padding-bottom: 25px; | ||||||
|       height: 30px !important; | 
 | ||||||
|       margin-top: 10px; | 
 | ||||||
|       line-height: 30px; |  | ||||||
|       border: none; |  | ||||||
|     } |  | ||||||
|     .ivu-btn-default { |  | ||||||
|       // color: $theme_color; |  | ||||||
|       // border-color: $theme_color; |  | ||||||
|     } |  | ||||||
|     img { |  | ||||||
|       margin-bottom: 10px; |  | ||||||
|       width: 80px; |  | ||||||
|       height: 80px; |  | ||||||
|       border-radius: 50%; |  | ||||||
|     } |  | ||||||
|   } |   } | ||||||
|   .shop-msg { |   .shop-msg { | ||||||
|     div { |     div { | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| <template> | <template> | ||||||
|   <div class="seckill" v-if="goodsList.length"> | <!--   v-if="goodsList.length"--> | ||||||
|  |   <div class="seckill"> | ||||||
|     <div class="aside hover-pointer" @click="goToSeckill"> |     <div class="aside hover-pointer" @click="goToSeckill"> | ||||||
|       <div class="title">{{ actName }}</div> |       <div class="title">{{ actName }}</div> | ||||||
|       <div class="hour"> |       <div class="hour"> | ||||||
|  |  | ||||||
|  | @ -0,0 +1,132 @@ | ||||||
|  | <template> | ||||||
|  |   <div class="goods-type-wrapper"> | ||||||
|  |     <div class="flex goods-type-line"> | ||||||
|  |       <div class="goods-type-title">{{data.options.title}}</div> | ||||||
|  |       <div class="flex goods-type-labels"> | ||||||
|  |         <div :class="{'active':current === index}" class="goods-type-item" v-for="(item,index) in data.options.labels" :key="index"> | ||||||
|  |           {{item.label}} | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  |     <!-- 商品部分 --> | ||||||
|  |     <div class="goods-list"> | ||||||
|  |       <div class="goods-list-item" v-for="(item,index) in data.options.list" :key="index"> | ||||||
|  |         <div class="goods-img"> | ||||||
|  |           <img :src="item.img"> | ||||||
|  |         </div> | ||||||
|  |         <div> | ||||||
|  |           <div class="goods-name wes-2">{{item.title}}</div> | ||||||
|  |           <div class="goods-desc">{{item.desc}}</div> | ||||||
|  | 
 | ||||||
|  |         </div> | ||||||
|  |         <div class="goods-price"> | ||||||
|  |           {{item.price | unitPrice("¥")}} | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  | 
 | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  | export default { | ||||||
|  |   name: "goods", | ||||||
|  |   props: { | ||||||
|  |     data: { | ||||||
|  |       type: Object, | ||||||
|  |       default: {} | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   data(){ | ||||||
|  |     return{ | ||||||
|  |       current:0 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   methods:{ | ||||||
|  | 
 | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style scoped lang="scss"> | ||||||
|  | 
 | ||||||
|  | .goods-list-item{ | ||||||
|  |   width: 287px; | ||||||
|  |   height: 343.7px; | ||||||
|  |   border-radius: 9.8px; | ||||||
|  |   opacity: 1; | ||||||
|  |   cursor: pointer; | ||||||
|  |   background: #FFFFFF; | ||||||
|  |   transition: 0.35s; | ||||||
|  |   box-shadow: 0px 1px 13px 0px #E5E5E5; | ||||||
|  |   &:hover{ | ||||||
|  |     box-shadow: 0px 1px 14px 0px #C5C5C5; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | .goods-img{ | ||||||
|  |   text-align: center; | ||||||
|  |   >img{ | ||||||
|  |     width: auto; | ||||||
|  |     max-height: 183px; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | .goods-name{ | ||||||
|  |   font-size: 18px; | ||||||
|  | 
 | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 22px; | ||||||
|  |   text-align: center; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  |   width: 200px; | ||||||
|  |   margin: 0 auto 12.4px auto; | ||||||
|  |   color: #333333; | ||||||
|  |   -webkit-text-stroke: #979797 0.7px; /* 浏览器可能不支持 */ | ||||||
|  | } | ||||||
|  | .goods-desc{ | ||||||
|  |   font-size: 14px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 17px; | ||||||
|  |   text-align: center; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  |   margin-bottom: 12.4px; | ||||||
|  |   color: #666666; | ||||||
|  | 
 | ||||||
|  |   -webkit-text-stroke: #979797 0.7px; /* 浏览器可能不支持 */ | ||||||
|  | } | ||||||
|  | .goods-price{ | ||||||
|  |   font-size: 25.2px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 30px; | ||||||
|  |   text-align: center; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  | 
 | ||||||
|  |   color: #F31947; | ||||||
|  |   -webkit-text-stroke: #979797 0.7px; /* 浏览器可能不支持 */ | ||||||
|  | } | ||||||
|  | .goods-type-line{ | ||||||
|  |   justify-content: space-between; | ||||||
|  |   align-items: center; | ||||||
|  |   margin-bottom: 25px; | ||||||
|  | } | ||||||
|  | .goods-type-title{ | ||||||
|  |   font-size: 31px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 37px; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  | 
 | ||||||
|  |   color: #333333; | ||||||
|  | } | ||||||
|  | .active{ | ||||||
|  |   color: #F31947; | ||||||
|  | } | ||||||
|  | .goods-type-labels{ | ||||||
|  |   font-size: 21px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 25px; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | .goods-type-item{ | ||||||
|  |   margin-left: 28px; | ||||||
|  | } | ||||||
|  | </style> | ||||||
|  | @ -0,0 +1,36 @@ | ||||||
|  | <template> | ||||||
|  |     <div class="line flex flex-a-c flex-j-sb"> | ||||||
|  |         <div class="column" v-for="(item,index) in data.options.list" :key="index"> | ||||||
|  |           <img  :src="item.img" class="three-column-img"> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  | export default { | ||||||
|  |   name: "oneRowThreeColumns", | ||||||
|  |   props: { | ||||||
|  |     data: { | ||||||
|  |       type: Object, | ||||||
|  |       default: {} | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   data () { | ||||||
|  |     return { | ||||||
|  | 
 | ||||||
|  |     }; | ||||||
|  |   }, | ||||||
|  |   methods: {} | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style scoped lang="scss"> | ||||||
|  | .column{ | ||||||
|  |   width: 385px; | ||||||
|  |   height: 165px; | ||||||
|  |   >img{ | ||||||
|  |     width: 100%; | ||||||
|  |     height: 100%; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </style> | ||||||
|  | @ -16,7 +16,6 @@ export default { | ||||||
|   methods: { |   methods: { | ||||||
|     // 跳转im客服 |     // 跳转im客服 | ||||||
|     async IMService(id) { |     async IMService(id) { | ||||||
| 
 |  | ||||||
|       // 获取访问Token |       // 获取访问Token | ||||||
|       let accessToken = Storage.getItem("accessToken"); |       let accessToken = Storage.getItem("accessToken"); | ||||||
|       await this.getIMDetailMethods(); |       await this.getIMDetailMethods(); | ||||||
|  |  | ||||||
|  | @ -1,22 +1,22 @@ | ||||||
| <template> | <template> | ||||||
|   <div class="cate-nav"> |   <div class="cate-nav" :class="{'fixed-show':useClass == 'fixed-show'}"> | ||||||
|     <div class="nav-con"> |     <div class="nav-con"  > | ||||||
|       <div |       <div | ||||||
|         class="all-categories hover-pointer" |         class="all-categories hover-pointer" | ||||||
|         @mouseenter="showFirstLists" |         @mouseenter="showFirstLists" | ||||||
|         @mouseleave="showFirstList = false" |         @mouseleave="showFirstList = false" | ||||||
|       > |       > | ||||||
|         全部商品分类 |         商品分类 | ||||||
|       </div> |       </div> | ||||||
|       <ul class="nav-item" v-if="showNavBar"> |       <ul class="nav-item " v-if="showNavBar"> | ||||||
|         <li |         <li | ||||||
|           class="nav-lis" |           class="nav-lis flex flex-a-c flex-j-c" | ||||||
|           v-for="(item, index) in navList.list" |           v-for="(item, index) in navList.list" | ||||||
|           :key="index" |           :key="index" | ||||||
|           @click="linkTo(item.url)" |           @click="linkTo(item.url)" | ||||||
|         > |         > | ||||||
|           {{ item.name }} |           {{ item.name }} | ||||||
|           <!-- {{item}} --> |           <div class="colum"></div> | ||||||
|         </li> |         </li> | ||||||
|       </ul> |       </ul> | ||||||
|     </div> |     </div> | ||||||
|  | @ -131,6 +131,10 @@ export default { | ||||||
|       default: false, |       default: false, | ||||||
|       type: Boolean, |       type: Boolean, | ||||||
|     }, |     }, | ||||||
|  |     useClass:{ | ||||||
|  |       type:null, | ||||||
|  |       default:'' | ||||||
|  |     } | ||||||
|   }, |   }, | ||||||
|   data() { |   data() { | ||||||
|     return { |     return { | ||||||
|  | @ -226,43 +230,77 @@ export default { | ||||||
| .nav-lis:hover { | .nav-lis:hover { | ||||||
|   color: $theme_color !important; |   color: $theme_color !important; | ||||||
|   cursor: pointer; |   cursor: pointer; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | .nav-lis{ | ||||||
|  |   width: 103px; | ||||||
|  |   text-align: center; | ||||||
|  |   position: relative; | ||||||
|  | } | ||||||
|  | .fixed-show{ | ||||||
|  |   margin-top: 0 !important; | ||||||
|  |   >.nav-con{ | ||||||
|  |   >.all-categories{ | ||||||
|  |     align-items: center !important; | ||||||
|  |     height: 60px; | ||||||
|  |     display: inherit; | ||||||
|  |     justify-content: center; | ||||||
|  |     padding: 0 !important; | ||||||
|  |   } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | .colum{ | ||||||
|  |   height: 14.7px; | ||||||
|  |   opacity: 1; | ||||||
|  |   border: 0.7px solid #CBC8C8; | ||||||
|  |   position: absolute; | ||||||
|  |   right: 0; | ||||||
| } | } | ||||||
| .cate-nav { | .cate-nav { | ||||||
|   width: 1200px; |   width: 1200px; | ||||||
|   position: relative; |   position: relative; | ||||||
|   margin: 0 auto; |   margin: 14px auto 0 auto; | ||||||
| } | } | ||||||
| /** 商品分类 */ | /** 商品分类 */ | ||||||
| .nav-con { | .nav-con { | ||||||
|   width: 1200px; |   width: 1200px; | ||||||
|   height: 40px; |   height: 46px; | ||||||
|   margin: 0 auto; |   margin: 0 auto; | ||||||
|   display: flex; |   display: flex; | ||||||
|   .all-categories { |   .all-categories { | ||||||
|     width: 200px; |     border-top-left-radius: 10px; | ||||||
|     line-height: 40px; |     border-top-right-radius: 10px; | ||||||
|     color: #fff; |     padding-left: 37.4px; | ||||||
|     background-color: $theme_color; |     background: #FFFFFF; | ||||||
|     text-align: center; |     width: 263.2px; | ||||||
|     font-size: 16px; |     padding-top: 15.4px; | ||||||
|  |     line-height: 20px; | ||||||
|     border-bottom: none; |     border-bottom: none; | ||||||
|  |     font-size: 16.8px; | ||||||
|  |     font-weight: normal; | ||||||
|  |     color: #333333; | ||||||
|  |     letter-spacing: 0px; | ||||||
|   } |   } | ||||||
|   .nav-item { |   .nav-item { | ||||||
|     width: 1000px; |     width: 914px; | ||||||
|     height: 40px; |     height: 46px; | ||||||
|     line-height: 40px; |     border-radius: 10px; | ||||||
|  |     background: #FFFFFF; | ||||||
|  |     margin-left: 10px; | ||||||
|  |     line-height: 46px; | ||||||
|     overflow: hidden; |     overflow: hidden; | ||||||
|     list-style: none; |     list-style: none; | ||||||
|     // background-color: #eee; |     // background-color: #eee; | ||||||
|     display: flex; |     display: flex; | ||||||
|     li { |     li { | ||||||
|       float: left; |       float: left; | ||||||
|       font-weight: bold; |       font-size: 17px; | ||||||
|       margin-left: 20px; |       font-weight: normal; | ||||||
|       color: rgb(129, 127, 127); |       color: #333333; | ||||||
|       font-size: 15px; | 
 | ||||||
|  | 
 | ||||||
|       &:hover { |       &:hover { | ||||||
|         color: #e1251b; |         color: $theme_color; | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  | @ -275,13 +313,28 @@ export default { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .nav-side { | .nav-side { | ||||||
|   width: 200px; |   width: 263.2px; | ||||||
|  |   color: #666; | ||||||
|   float: left; |   float: left; | ||||||
|   padding: 0px; |   overflow:hidden; | ||||||
|   color: #fff; | 
 | ||||||
|   background-color: #6e6568; |   border-bottom-left-radius: 10px; | ||||||
|   height: 335px; |   border-bottom-right-radius: 10px; | ||||||
|   overflow: hidden; |   background-color: #fff; | ||||||
|  |   height: 340px; | ||||||
|  |   ////自动移滚动条样式 | ||||||
|  |   //&::-webkit-scrollbar { | ||||||
|  |   //  width: 1px; | ||||||
|  |   //  height: 5px; | ||||||
|  |   //} | ||||||
|  |   //&::-webkit-scrollbar-thumb { | ||||||
|  |   //  border-radius: 1em; | ||||||
|  |   //  background-color: rgba(50, 50, 50, 0.3); | ||||||
|  |   //} | ||||||
|  |   //&::-webkit-scrollbar-track { | ||||||
|  |   //  border-radius: 1em; | ||||||
|  |   //  background-color: rgba(50, 50, 50, 0.1); | ||||||
|  |   //} | ||||||
| } | } | ||||||
| .large-nav { | .large-nav { | ||||||
|   height: 470px; |   height: 470px; | ||||||
|  | @ -294,22 +347,16 @@ export default { | ||||||
| } | } | ||||||
| .nav-side ul { | .nav-side ul { | ||||||
|   width: 100%; |   width: 100%; | ||||||
|   padding: 0px; |  | ||||||
|   padding-top: 5px; |  | ||||||
|   list-style: none; |   list-style: none; | ||||||
| } | } | ||||||
| .nav-side li { | .nav-side li { | ||||||
|   padding: 7.5px 0; |   padding: 0 0 16.2px 37.4px; | ||||||
|   padding-left: 12px; |  | ||||||
|   font-size: 13px; |   font-size: 13px; | ||||||
|   line-height: 18px; |   line-height: 18px; | ||||||
|   &:hover { |  | ||||||
|     background: #999395; |  | ||||||
|   } |  | ||||||
| } | } | ||||||
| .nav-side-item:hover { | .nav-side-item:hover { | ||||||
|   cursor: pointer; |   cursor: pointer; | ||||||
|   color: #e1251b; |   color: $theme_color; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /*显示商品详细信息*/ | /*显示商品详细信息*/ | ||||||
|  | @ -335,10 +382,11 @@ export default { | ||||||
|   padding-left: 12px; |   padding-left: 12px; | ||||||
|   margin-right: 15px; |   margin-right: 15px; | ||||||
|   font-size: 12px; |   font-size: 12px; | ||||||
|   background-color: #6e6568; |   color: #333; | ||||||
| } | } | ||||||
| .nav-detail-item span:hover { | .nav-detail-item span:hover { | ||||||
|   background-color: #e1251b; |   background-color: $theme_color; | ||||||
|  |   color: #fff; | ||||||
| } | } | ||||||
| .detail-item-panel li { | .detail-item-panel li { | ||||||
|   line-height: 30px; |   line-height: 30px; | ||||||
|  | @ -353,7 +401,7 @@ export default { | ||||||
|   text-align: right; |   text-align: right; | ||||||
| } | } | ||||||
| .detail-item-title:hover { | .detail-item-title:hover { | ||||||
|   color: #e1251b; |   color: $theme_color; | ||||||
| } | } | ||||||
| .detail-item-row { | .detail-item-row { | ||||||
|   display: flex; |   display: flex; | ||||||
|  | @ -373,6 +421,6 @@ export default { | ||||||
|   } |   } | ||||||
| } | } | ||||||
| .detail-item:hover { | .detail-item:hover { | ||||||
|   color: #e1251b; |   color: $theme_color; | ||||||
| } | } | ||||||
| </style> | </style> | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ | ||||||
|                 <Button type="error" @click="showCpmodel=false">确定</Button> |                 <Button type="error" @click="showCpmodel=false">确定</Button> | ||||||
|             </template> |             </template> | ||||||
|         </Modal> |         </Modal> | ||||||
|     <drawer></drawer> | 
 | ||||||
|     <!-- 固定头部 --> |     <!-- 固定头部 --> | ||||||
|     <hover-search class="hover-search" :class="{show: topSearchShow}"></hover-search> |     <hover-search class="hover-search" :class="{show: topSearchShow}"></hover-search> | ||||||
|     <!-- 顶部广告 --> |     <!-- 顶部广告 --> | ||||||
|  | @ -37,6 +37,8 @@ | ||||||
|     <model-form ref="modelForm" :data="modelForm"></model-form> |     <model-form ref="modelForm" :data="modelForm"></model-form> | ||||||
|     <!-- 底部栏 --> |     <!-- 底部栏 --> | ||||||
|     <BaseFooter></BaseFooter> |     <BaseFooter></BaseFooter> | ||||||
|  |     <!-- 侧边栏 --> | ||||||
|  |     <fixedBar class="fixed-bar"></fixedBar> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
| 
 | 
 | ||||||
|  | @ -44,6 +46,7 @@ | ||||||
| import Search from '@/components/Search'; | import Search from '@/components/Search'; | ||||||
| import ModelForm from '@/components/indexDecorate/ModelForm'; | import ModelForm from '@/components/indexDecorate/ModelForm'; | ||||||
| import HoverSearch from '@/components/header/hoverSearch'; | import HoverSearch from '@/components/header/hoverSearch'; | ||||||
|  | import fixedBar from '@/components/fixed/index'; | ||||||
| import storage from "@/plugins/storage"; | import storage from "@/plugins/storage"; | ||||||
| import { indexData,getAutoCoup } from '@/api/index.js'; | import { indexData,getAutoCoup } from '@/api/index.js'; | ||||||
| import {seckillByDay} from '@/api/promotion' | import {seckillByDay} from '@/api/promotion' | ||||||
|  | @ -77,7 +80,7 @@ export default { | ||||||
|     }; |     }; | ||||||
|   }, |   }, | ||||||
|   // created(){ |   // created(){ | ||||||
|     | 
 | ||||||
|   // }, |   // }, | ||||||
|   methods: { |   methods: { | ||||||
|     // 优惠券可用范围 |     // 优惠券可用范围 | ||||||
|  | @ -114,7 +117,7 @@ export default { | ||||||
|         // window.localStorage.setItem('getTimes',datas)//存储缓存 |         // window.localStorage.setItem('getTimes',datas)//存储缓存 | ||||||
|         this.getcps() |         this.getcps() | ||||||
|       } |       } | ||||||
|     },   |     }, | ||||||
|     getcps(){ |     getcps(){ | ||||||
|       console.log(123123) |       console.log(123123) | ||||||
|       let data = new Date() |       let data = new Date() | ||||||
|  | @ -139,10 +142,10 @@ export default { | ||||||
|               storage.setItem('getTimes',datas)//存储缓存 |               storage.setItem('getTimes',datas)//存储缓存 | ||||||
|             } |             } | ||||||
|       }) |       }) | ||||||
|     },  |     }, | ||||||
|     handleReachBottom(){ |     handleReachBottom(){ | ||||||
|       console.log(111) | 
 | ||||||
|     } ,  |     } , | ||||||
|     getIndexData () { |     getIndexData () { | ||||||
|       // 获取首页装修数据 |       // 获取首页装修数据 | ||||||
|       indexData({ clientType: 'PC' }).then(async (res) => { |       indexData({ clientType: 'PC' }).then(async (res) => { | ||||||
|  | @ -181,7 +184,8 @@ export default { | ||||||
|   components: { |   components: { | ||||||
|     Search, |     Search, | ||||||
|     ModelForm, |     ModelForm, | ||||||
|     HoverSearch |     HoverSearch, | ||||||
|  |     fixedBar | ||||||
|   } |   } | ||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
|  | @ -213,4 +217,37 @@ export default { | ||||||
|   transform: translateZ(0); |   transform: translateZ(0); | ||||||
|   top: 0; |   top: 0; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | /* 2K */ | ||||||
|  | @media screen and (min-width: 2561px) and (max-width: 3840px) { | ||||||
|  |   /* 样式 */ | ||||||
|  |   .fixed-bar{ | ||||||
|  |     position: fixed; | ||||||
|  |     right:900px; | ||||||
|  |     top: 500px; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 1080p */ | ||||||
|  | @media screen and (max-width: 2560px) { | ||||||
|  |   /* 样式 */ | ||||||
|  |   .fixed-bar{ | ||||||
|  |     position: fixed; | ||||||
|  |     right:300px; | ||||||
|  |     top: 500px; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | @media screen and (max-width: 2025px) { | ||||||
|  |   /* 样式 */ | ||||||
|  |   .fixed-bar{ | ||||||
|  |     position: fixed; | ||||||
|  |     right:150px; | ||||||
|  |     top: 400px; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| </style> | </style> | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ var BASE = { | ||||||
|       buyer: "https://buyer-api.pickmall.cn", |       buyer: "https://buyer-api.pickmall.cn", | ||||||
|       seller: "https://store-api.pickmall.cn", |       seller: "https://store-api.pickmall.cn", | ||||||
|       manager: "https://admin-api.pickmall.cn" |       manager: "https://admin-api.pickmall.cn" | ||||||
|  |       // manager: "http://admin-api.pickmall.cn:18889"
 | ||||||
|     }, |     }, | ||||||
|     API_PROD: { |     API_PROD: { | ||||||
|       common: "https://common-api.pickmall.cn", |       common: "https://common-api.pickmall.cn", | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ | ||||||
|   border-radius: 1em; |   border-radius: 1em; | ||||||
|   background-color: rgba(50,50,50,.1); |   background-color: rgba(50,50,50,.1); | ||||||
| } | } | ||||||
| .ivu-table table{  | .ivu-table table{ | ||||||
|   width: 100%!important; |   width: 100%!important; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -99,4 +99,30 @@ $theme_color: #FF5C58; | ||||||
| } | } | ||||||
| $bg_color: #f1f6fa; | $bg_color: #f1f6fa; | ||||||
| 
 | 
 | ||||||
| @import "./table-common.scss"; | .wes { | ||||||
|  |   /* 多出部分用省略号表示 , 用于一行 */ | ||||||
|  |   overflow: hidden; | ||||||
|  |   word-wrap: normal; | ||||||
|  |   white-space: nowrap; | ||||||
|  |   text-overflow: ellipsis; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .wes-2 { | ||||||
|  |   /* 适用于webkit内核和移动端 */ | ||||||
|  |   display: -webkit-box; | ||||||
|  |   -webkit-box-orient: vertical; | ||||||
|  |   -webkit-line-clamp: 2; | ||||||
|  |   overflow: hidden; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | .wes-3 { | ||||||
|  |   /* 适用于webkit内核和移动端 */ | ||||||
|  |   display: -webkit-box; | ||||||
|  |   -webkit-box-orient: vertical; | ||||||
|  |   -webkit-line-clamp: 3; | ||||||
|  |   overflow: hidden; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | @import "./table-common.scss"; | ||||||
|  |  | ||||||
|  | @ -300,6 +300,25 @@ export const modelData = [{ | ||||||
|       ] |       ] | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
|  |   { | ||||||
|  |     type: 'seckill-only-album', | ||||||
|  |     name: '促销活动-图片版', | ||||||
|  |     icon: 'md-image', | ||||||
|  |     showName: '', | ||||||
|  |     options: { | ||||||
|  |       list: [{ | ||||||
|  |         time: 6, | ||||||
|  |         goodsList: [{ | ||||||
|  |           img: require('@/assets/nav/1.jpg'), | ||||||
|  | 
 | ||||||
|  |           url: '' | ||||||
|  |         }, | ||||||
|  | 
 | ||||||
|  |         ] | ||||||
|  |       }, | ||||||
|  |       ] | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|   { |   { | ||||||
|     type: 'discountAdvert', |     type: 'discountAdvert', | ||||||
|     name: '折扣广告', |     name: '折扣广告', | ||||||
|  | @ -681,6 +700,67 @@ export const modelData = [{ | ||||||
|       size: '1200*自定义' |       size: '1200*自定义' | ||||||
|     }, |     }, | ||||||
|   }, |   }, | ||||||
|  |   { | ||||||
|  |     type: 'oneRowThreeColumns', | ||||||
|  |     name: '一行三列', | ||||||
|  |     icon: 'md-image', | ||||||
|  |     options: { | ||||||
|  |       list:[ | ||||||
|  |         { | ||||||
|  |           img: require('@/assets/nav/decorate8.png'), | ||||||
|  |           url:"", | ||||||
|  |           size:"385*165" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           img: require('@/assets/nav/decorate8.png'), | ||||||
|  |           url:"", | ||||||
|  |           size:"385*165" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           img: require('@/assets/nav/decorate8.png'), | ||||||
|  |           url:"", | ||||||
|  |           size:"385*165" | ||||||
|  |         }, | ||||||
|  |       ] | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  |   { | ||||||
|  |     type: 'goodsType', | ||||||
|  |     name: '商品模块', | ||||||
|  |     icon: 'md-image', | ||||||
|  |     options: { | ||||||
|  |       title:"智能家居", | ||||||
|  |       labels:[ | ||||||
|  |         { | ||||||
|  |           label: '音箱', | ||||||
|  |           ___index:0, | ||||||
|  | 
 | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           label: '门锁', | ||||||
|  |           ___index:1 | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           label: '路由器', | ||||||
|  |           ___index:2 | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           label: '智能设备', | ||||||
|  |           ___index:3 | ||||||
|  |         }, | ||||||
|  |       ], | ||||||
|  |       list:[ | ||||||
|  |         { | ||||||
|  |           img: "https://i.loli.net/2021/05/14/KTLSrOVJmEdX12A.png", | ||||||
|  |           price: "120", | ||||||
|  |           title:" 微软 (Microsoft) Xbox 无线控制器/手柄 湛蓝色 | 3.5mm耳机接口蓝牙连接 Xbox主机电脑平板通用", | ||||||
|  |           desc:"万家宝藏好店等你来", | ||||||
|  |           ___index: 0 | ||||||
|  |         }, | ||||||
|  | 
 | ||||||
|  |       ] | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|   { |   { | ||||||
|     type: 'notEnough', |     type: 'notEnough', | ||||||
|     name: '还没逛够', |     name: '还没逛够', | ||||||
|  |  | ||||||
|  | @ -56,6 +56,10 @@ | ||||||
|     <template v-if="element.type == 'seckill'"> |     <template v-if="element.type == 'seckill'"> | ||||||
|       <seckill :data="element"></seckill> |       <seckill :data="element"></seckill> | ||||||
|     </template> |     </template> | ||||||
|  |     <!-- 限时秒杀 待完善 --> | ||||||
|  |     <template v-if="element.type == 'seckill-only-album'"> | ||||||
|  |       <seckill-only-album :data="element"></seckill-only-album> | ||||||
|  |     </template> | ||||||
|     <!-- 折扣广告 --> |     <!-- 折扣广告 --> | ||||||
|     <template v-if="element.type == 'discountAdvert'"> |     <template v-if="element.type == 'discountAdvert'"> | ||||||
|       <div |       <div | ||||||
|  | @ -111,6 +115,14 @@ | ||||||
|     <template v-if="element.type == 'firstAdvert'"> |     <template v-if="element.type == 'firstAdvert'"> | ||||||
|       <first-page-advert :data="element"></first-page-advert> |       <first-page-advert :data="element"></first-page-advert> | ||||||
|     </template> |     </template> | ||||||
|  |     <!-- 商品模块 --> | ||||||
|  |     <template v-if="element.type == 'goodsType'"> | ||||||
|  |       <goodsType :data="element" class="mb_20 width_1200_auto"></goodsType> | ||||||
|  |     </template> | ||||||
|  |     <!-- 一行三列 --> | ||||||
|  |     <template v-if="element.type == 'oneRowThreeColumns'"> | ||||||
|  |       <oneRowThreeColumns :data="element" class="mb_20 width_1200_auto"></oneRowThreeColumns> | ||||||
|  |     </template> | ||||||
|     <!-- 横幅广告 --> |     <!-- 横幅广告 --> | ||||||
|     <template v-if="element.type == 'bannerAdvert'"> |     <template v-if="element.type == 'bannerAdvert'"> | ||||||
|       <div class="horizontal-advert setup-content"> |       <div class="horizontal-advert setup-content"> | ||||||
|  | @ -237,8 +249,11 @@ import NewGoodsSort from "./modelList/newGoodsSort.vue"; | ||||||
| import Recommend from "./modelList/recommend.vue"; | import Recommend from "./modelList/recommend.vue"; | ||||||
| import NotEnough from "./modelList/notEnough.vue"; | import NotEnough from "./modelList/notEnough.vue"; | ||||||
| import Seckill from "./modelList/seckill.vue"; | import Seckill from "./modelList/seckill.vue"; | ||||||
|  | import goodsType from "./modelList/goodsAndType.vue"; | ||||||
| import ossManage from "@/views/sys/oss-manage/ossManage"; | import ossManage from "@/views/sys/oss-manage/ossManage"; | ||||||
| 
 | 
 | ||||||
|  | import oneRowThreeColumns from "./modelList/oneRowThreeColumns.vue"; | ||||||
|  | import seckillOnlyAlbum from "./modelList/seckill-only-album.vue"; | ||||||
| export default { | export default { | ||||||
|   name: "modelFormItem", |   name: "modelFormItem", | ||||||
|   props: ["element", "select", "index", "data"], |   props: ["element", "select", "index", "data"], | ||||||
|  | @ -251,7 +266,10 @@ export default { | ||||||
|     FirstPageAdvert, |     FirstPageAdvert, | ||||||
|     NotEnough, |     NotEnough, | ||||||
|     Seckill, |     Seckill, | ||||||
|  |     goodsType, | ||||||
|     ossManage, |     ossManage, | ||||||
|  |     oneRowThreeColumns, | ||||||
|  |     "seckill-only-album":seckillOnlyAlbum | ||||||
|   }, |   }, | ||||||
|   data() { |   data() { | ||||||
|     return { |     return { | ||||||
|  |  | ||||||
|  | @ -0,0 +1,253 @@ | ||||||
|  | <template> | ||||||
|  |     <div class="goods-type-wrapper"> | ||||||
|  |       <div class="flex goods-type-line"> | ||||||
|  |           <div class="goods-type-title">{{data.options.title}}</div> | ||||||
|  |           <div class="flex goods-type-labels"> | ||||||
|  |             <div :class="{'active':current === index}" class="goods-type-item" v-for="(item,index) in data.options.labels" :key="index"> | ||||||
|  |               {{item.label}} | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |       </div> | ||||||
|  |       <!-- 商品部分 --> | ||||||
|  |       <div class="goods-list"> | ||||||
|  |           <div class="goods-list-item" v-for="(item,index) in data.options.list" :key="index"> | ||||||
|  |               <div class="goods-img"> | ||||||
|  |                 <img :src="item.img"> | ||||||
|  |               </div> | ||||||
|  |               <div> | ||||||
|  |                 <div class="goods-name wes-2">{{item.title}}</div> | ||||||
|  |                 <div class="goods-desc">{{item.desc}}</div> | ||||||
|  | 
 | ||||||
|  |               </div> | ||||||
|  |               <div class="goods-price"> | ||||||
|  |                 {{item.price | unitPrice("¥")}} | ||||||
|  |               </div> | ||||||
|  |           </div> | ||||||
|  | 
 | ||||||
|  |       </div> | ||||||
|  |       <div class="setup-box"> | ||||||
|  |         <div> | ||||||
|  |           <Button | ||||||
|  |             size="small" | ||||||
|  |             @click.stop="handleSelectModel(data.options.list)" | ||||||
|  |           >编辑</Button | ||||||
|  |           > | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |       <Modal | ||||||
|  |         v-model="showModal" | ||||||
|  |         title="装修" | ||||||
|  |         draggable | ||||||
|  |         width="800" | ||||||
|  |         :z-index="100" | ||||||
|  |         :mask-closable="false" | ||||||
|  |       > | ||||||
|  |         <div class="modal-tab-bar"> | ||||||
|  | 
 | ||||||
|  |           <Tabs type="card" :draggable="true" @on-drag-drop="handleDragDrop"> | ||||||
|  |             <TabPane v-for="(tab, index) in data.options.labels" :key="index" :label="tab.label" :name="index"> | ||||||
|  |                | ||||||
|  |             </TabPane> | ||||||
|  |           </Tabs> | ||||||
|  | 
 | ||||||
|  |           <div v-for="(item,index) in data.options.list" :key="index"> | ||||||
|  |             <img :src="item.img" class="column-img"> | ||||||
|  | 
 | ||||||
|  |             <Button | ||||||
|  |               size="small" | ||||||
|  |               class="ml_10" | ||||||
|  |               type="primary" | ||||||
|  |               @click="handleSelectImg(index)" | ||||||
|  |             >选择图片</Button | ||||||
|  |             > | ||||||
|  |             <Button | ||||||
|  |               size="small" | ||||||
|  |               class="ml_10" | ||||||
|  |               type="primary" | ||||||
|  |               @click="handleSelectLink(index)" | ||||||
|  |             >选择链接</Button | ||||||
|  |             > | ||||||
|  |           </div> | ||||||
|  | 
 | ||||||
|  |         </div> | ||||||
|  |       </Modal> | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |       <!-- 选择商品。链接 --> | ||||||
|  |       <liliDialog | ||||||
|  |         ref="liliDialog" | ||||||
|  |         @selectedLink="selectedLink" | ||||||
|  |         @selectedGoodsData="selectedGoodsData" | ||||||
|  |       ></liliDialog> | ||||||
|  |       <!-- 选择图片 --> | ||||||
|  |       <Modal width="1200px" v-model="picModelFlag" footer-hide> | ||||||
|  |         <ossManage | ||||||
|  |           @callback="callbackSelected" | ||||||
|  |           :isComponent="true" | ||||||
|  |           ref="ossManage" | ||||||
|  |         /> | ||||||
|  |       </Modal> | ||||||
|  |     </div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  | import ossManage from "@/views/sys/oss-manage/ossManage"; | ||||||
|  | export default { | ||||||
|  |   name: "goods", | ||||||
|  |   components:{ossManage}, | ||||||
|  |   props: { | ||||||
|  |     data: { | ||||||
|  |       type: Object, | ||||||
|  |       default: {} | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   data(){ | ||||||
|  |     return{ | ||||||
|  |       current:0, | ||||||
|  |       showModal:false, | ||||||
|  |       selected: {}, // 已选数据 | ||||||
|  |       picModelFlag:false, | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   methods:{ | ||||||
|  |     handleDragDrop (name, newName, a, b, names) { | ||||||
|  |       // names 为调整后的 name 集合 | ||||||
|  |       this.data.options.labels.splice(b,1,...this.data.options.labels.splice(a, 1 , this.data.options.labels[b])); | ||||||
|  |     }, | ||||||
|  |     // 回显图片 | ||||||
|  |     callbackSelected(val) { | ||||||
|  |       this.picModelFlag = false; | ||||||
|  |       this.selected[this.current].img = val.url; | ||||||
|  |       console.log(this.selected) | ||||||
|  |     }, | ||||||
|  |     // 编辑模块 | ||||||
|  |     handleSelectModel(item) { | ||||||
|  |       console.log(item) | ||||||
|  |       this.selected = item; | ||||||
|  |       this.showModal = true; | ||||||
|  | 
 | ||||||
|  |     }, | ||||||
|  |     // 选择商品回调 | ||||||
|  |     selectedGoodsData(val) { | ||||||
|  |       console.log(val); | ||||||
|  |       let goods = val[0]; | ||||||
|  |       this.selected.img = goods.thumbnail; | ||||||
|  |       this.selected.price = goods.price; | ||||||
|  |       this.selected.name = goods.goodsName; | ||||||
|  |       this.selected.url = `/goodsDetail?skuId=${goods.id}&goodsId=${goods.goodsId}`; | ||||||
|  |     }, | ||||||
|  |     // 选择链接回调 | ||||||
|  |     selectedLink(val) { | ||||||
|  |       this.selected.url = this.$options.filters.formatLinkType(val); | ||||||
|  |       this.selected.type = | ||||||
|  |         val.___type === "other" && val.url === "" ? "link" : "other"; | ||||||
|  |     }, | ||||||
|  |     handleSelectLink(index) { | ||||||
|  |       // 调起选择链接弹窗 | ||||||
|  |       this.$refs.liliDialog.open("link"); | ||||||
|  |       this.current = index; | ||||||
|  |     }, | ||||||
|  |     handleSelectImg(index){ | ||||||
|  |       // 选择图片 | ||||||
|  |       this.$refs.ossManage.selectImage = true; | ||||||
|  |       this.picModelFlag = true; | ||||||
|  |       this.current = index; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style scoped lang="scss"> | ||||||
|  | @import "./setup-box.scss"; | ||||||
|  | .goods-type-wrapper{ | ||||||
|  |   position: relative; | ||||||
|  |   &:hover{ | ||||||
|  |     >.setup-box{ | ||||||
|  |       display: block; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | .column-img{ | ||||||
|  |   width: 100px; | ||||||
|  |   height: 100px; | ||||||
|  | } | ||||||
|  | .goods-list-item{ | ||||||
|  |   width: 287px; | ||||||
|  |   height: 343.7px; | ||||||
|  |   border-radius: 9.8px; | ||||||
|  |   opacity: 1; | ||||||
|  |   cursor: pointer; | ||||||
|  |   background: #FFFFFF; | ||||||
|  |   transition: 0.35s; | ||||||
|  |   box-shadow: 0px 1px 13px 0px #E5E5E5; | ||||||
|  |   &:hover{ | ||||||
|  |     box-shadow: 0px 1px 14px 0px #C5C5C5; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | .goods-img{ | ||||||
|  |   text-align: center; | ||||||
|  |   >img{ | ||||||
|  |     width: auto; | ||||||
|  |     max-height: 183px; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | .goods-name{ | ||||||
|  |   font-size: 18px; | ||||||
|  | 
 | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 22px; | ||||||
|  |   text-align: center; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  |   width: 200px; | ||||||
|  |   margin: 0 auto 12.4px auto; | ||||||
|  |   color: #333333; | ||||||
|  |   -webkit-text-stroke: #979797 0.7px; /* 浏览器可能不支持 */ | ||||||
|  | } | ||||||
|  | .goods-desc{ | ||||||
|  |   font-size: 14px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 17px; | ||||||
|  |   text-align: center; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  |   margin-bottom: 12.4px; | ||||||
|  |   color: #666666; | ||||||
|  | 
 | ||||||
|  |   -webkit-text-stroke: #979797 0.7px; /* 浏览器可能不支持 */ | ||||||
|  | } | ||||||
|  | .goods-price{ | ||||||
|  |   font-size: 25.2px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 30px; | ||||||
|  |   text-align: center; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  | 
 | ||||||
|  |   color: #F31947; | ||||||
|  |   -webkit-text-stroke: #979797 0.7px; /* 浏览器可能不支持 */ | ||||||
|  | } | ||||||
|  | .goods-type-line{ | ||||||
|  |   justify-content: space-between; | ||||||
|  |   align-items: center; | ||||||
|  |   margin-bottom: 25px; | ||||||
|  | } | ||||||
|  | .goods-type-title{ | ||||||
|  |   font-size: 31px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 37px; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  | 
 | ||||||
|  |   color: #333333; | ||||||
|  | } | ||||||
|  | .active{ | ||||||
|  |   color: #F31947; | ||||||
|  | } | ||||||
|  | .goods-type-labels{ | ||||||
|  |   font-size: 21px; | ||||||
|  |   font-weight: normal; | ||||||
|  |   line-height: 25px; | ||||||
|  |   letter-spacing: 0px; | ||||||
|  | 
 | ||||||
|  | } | ||||||
|  | .goods-type-item{ | ||||||
|  |   margin-left: 28px; | ||||||
|  | } | ||||||
|  | </style> | ||||||
|  | @ -0,0 +1,154 @@ | ||||||
|  | <template> | ||||||
|  |   <div class="line flex flex-j-sb"> | ||||||
|  |     <div class="column" v-for="(item,index) in data.options.list" :key="index"> | ||||||
|  |       <div v-if="!item.img" class="placeholder">占位符</div> | ||||||
|  |       <img v-else :src="item.img" class="three-column-img"> | ||||||
|  |     </div> | ||||||
|  |     <div class="setup-box"> | ||||||
|  |       <div> | ||||||
|  |         <Button | ||||||
|  |           size="small" | ||||||
|  |           @click.stop="handleSelectModel(data.options.list)" | ||||||
|  |         >编辑</Button | ||||||
|  |         > | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  |     <Modal | ||||||
|  |       v-model="showModal" | ||||||
|  |       title="装修" | ||||||
|  |       draggable | ||||||
|  |       width="800" | ||||||
|  |       :z-index="100" | ||||||
|  |       :mask-closable="false" | ||||||
|  |     > | ||||||
|  |       <div class="modal-tab-bar"> | ||||||
|  |         <div v-for="(item,index) in data.options.list" :key="index"> | ||||||
|  |           <img :src="item.img" class="three-column-img"> | ||||||
|  |           <div>推荐尺寸:{{item.size}}</div> | ||||||
|  |           <Button | ||||||
|  |             size="small" | ||||||
|  |             class="ml_10" | ||||||
|  |             type="primary" | ||||||
|  |             @click="handleSelectImg(index)" | ||||||
|  |           >选择图片</Button | ||||||
|  |           > | ||||||
|  |           <Button | ||||||
|  |             size="small" | ||||||
|  |             class="ml_10" | ||||||
|  |             type="primary" | ||||||
|  |             @click="handleSelectLink(index)" | ||||||
|  |           >选择链接</Button | ||||||
|  |           > | ||||||
|  |         </div> | ||||||
|  | 
 | ||||||
|  |       </div> | ||||||
|  |     </Modal> | ||||||
|  |     <!-- 选择商品。链接 --> | ||||||
|  |     <liliDialog | ||||||
|  |       ref="liliDialog" | ||||||
|  |       @selectedLink="selectedLink" | ||||||
|  |       @selectedGoodsData="selectedGoodsData" | ||||||
|  |     ></liliDialog> | ||||||
|  |     <!-- 选择图片 --> | ||||||
|  |     <Modal width="1200px" v-model="picModelFlag" footer-hide> | ||||||
|  |       <ossManage | ||||||
|  |         @callback="callbackSelected" | ||||||
|  |         :isComponent="true" | ||||||
|  |         ref="ossManage" | ||||||
|  |       /> | ||||||
|  |     </Modal> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script> | ||||||
|  | import ossManage from "@/views/sys/oss-manage/ossManage"; | ||||||
|  | export default { | ||||||
|  |   name: "oneRowThreeColumns", | ||||||
|  |   components:{ossManage}, | ||||||
|  |   props: { | ||||||
|  |     data: { | ||||||
|  |       type: Object, | ||||||
|  |       default: {} | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   data () { | ||||||
|  |     return { | ||||||
|  |       showModal:false, | ||||||
|  |       selected: {}, // 已选数据 | ||||||
|  |       picModelFlag:false, | ||||||
|  |       current:0, | ||||||
|  |     }; | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     // 回显图片 | ||||||
|  |     callbackSelected(val) { | ||||||
|  |       this.picModelFlag = false; | ||||||
|  |       this.selected[this.current].img = val.url; | ||||||
|  |       console.log(this.selected) | ||||||
|  |     }, | ||||||
|  |     // 编辑模块 | ||||||
|  |     handleSelectModel(item) { | ||||||
|  |       this.selected = item; | ||||||
|  |       this.showModal = true; | ||||||
|  | 
 | ||||||
|  |     }, | ||||||
|  |     // 选择商品回调 | ||||||
|  |     selectedGoodsData(val) { | ||||||
|  |       console.log(val); | ||||||
|  |       let goods = val[0]; | ||||||
|  |       this.selected.img = goods.thumbnail; | ||||||
|  |       this.selected.price = goods.price; | ||||||
|  |       this.selected.name = goods.goodsName; | ||||||
|  |       this.selected.url = `/goodsDetail?skuId=${goods.id}&goodsId=${goods.goodsId}`; | ||||||
|  |     }, | ||||||
|  |     // 选择链接回调 | ||||||
|  |     selectedLink(val) { | ||||||
|  |       this.selected.url = this.$options.filters.formatLinkType(val); | ||||||
|  |       this.selected.type = | ||||||
|  |         val.___type === "other" && val.url === "" ? "link" : "other"; | ||||||
|  |     }, | ||||||
|  |     handleSelectLink(index) { | ||||||
|  |       // 调起选择链接弹窗 | ||||||
|  |       this.$refs.liliDialog.open("link"); | ||||||
|  |       this.current = index; | ||||||
|  |     }, | ||||||
|  |     handleSelectImg(index){ | ||||||
|  |       // 选择图片 | ||||||
|  |       this.$refs.ossManage.selectImage = true; | ||||||
|  |       this.picModelFlag = true; | ||||||
|  |       this.current = index; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </script> | ||||||
|  | 
 | ||||||
|  | <style scoped lang="scss"> | ||||||
|  | @import "./setup-box.scss"; | ||||||
|  | .three-column-img{ | ||||||
|  |   width:385px; | ||||||
|  |   height: 165px | ||||||
|  | } | ||||||
|  | .line:hover{ | ||||||
|  |   >.setup-box{ | ||||||
|  |     display: block; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | .placeholder{ | ||||||
|  |   background: #666; | ||||||
|  |   width: 100%; | ||||||
|  |   height: 100%; | ||||||
|  | } | ||||||
|  | .line{ | ||||||
|  |   position: relative; | ||||||
|  |   justify-content: space-between; | ||||||
|  | } | ||||||
|  | .column{ | ||||||
|  |   width: 385px; | ||||||
|  |   height: 165px; | ||||||
|  | 
 | ||||||
|  |   >img{ | ||||||
|  |     width: 100%; | ||||||
|  |     height: 100%; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </style> | ||||||
|  | @ -0,0 +1,291 @@ | ||||||
|  | <template> | ||||||
|  |   <div class="seckill"> | ||||||
|  |     <div class="desc">秒杀商品需要在促销活动中添加商品,有商品时才会在首页展示</div> | ||||||
|  |     <div class="aside"> | ||||||
|  |       <div class="title">{{ actName }}</div> | ||||||
|  |       <div class="hour"> | ||||||
|  |         <span>{{ currHour }}:00</span>点场 倒计时 | ||||||
|  |       </div> | ||||||
|  |       <div class="count-down" v-if="actStatus === 1"> | ||||||
|  |         <span>{{ hours }}</span | ||||||
|  |         ><span>{{ minutes }}</span | ||||||
|  |       ><span>{{ seconds }}</span> | ||||||
|  |       </div> | ||||||
|  |       <div class="act-status" v-else> | ||||||
|  |         {{ actStatus == 0 ? "未开始" : "已结束" }} | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  |     <div class="section"> | ||||||
|  |       <swiper ref="mySwiper" :options="swiperOptions"> | ||||||
|  |         <swiper-slide | ||||||
|  |           v-for="(item, index) in options.list[0].goodsList" | ||||||
|  |           :key="index" | ||||||
|  |         > | ||||||
|  |           <div class="content"> | ||||||
|  |             <img :src="item.img" width="140" height="140" :alt="item.name" /> | ||||||
|  |             <div class="ellipsis">{{ item.name }}</div> | ||||||
|  |             <div> | ||||||
|  |               <span>{{ item.price | unitPrice("¥") }}</span> | ||||||
|  |               <span>{{ item.originalPrice | unitPrice("¥") }}</span> | ||||||
|  |             </div> | ||||||
|  |           </div> | ||||||
|  |         </swiper-slide> | ||||||
|  |       </swiper> | ||||||
|  |     </div> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  | <script> | ||||||
|  | import { Swiper, SwiperSlide, directive } from "vue-awesome-swiper"; | ||||||
|  | import "swiper/swiper-bundle.css"; | ||||||
|  | export default { | ||||||
|  |   components: { | ||||||
|  |     Swiper, | ||||||
|  |     SwiperSlide, | ||||||
|  |   }, | ||||||
|  |   directives: { | ||||||
|  |     swiper: directive, | ||||||
|  |   }, | ||||||
|  |   props: { | ||||||
|  |     data: { | ||||||
|  |       type: Object, | ||||||
|  |       default: null, | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       options: this.data.options, // 当前数据 | ||||||
|  |       actStatus: 0, // 0 未开始  1 进行中   2 已结束 | ||||||
|  |       actName: "限时秒杀", | ||||||
|  |       currHour: "00", // 当前秒杀场 | ||||||
|  |       diffSeconds: 0, // 倒地时 | ||||||
|  |       hours: "00", // 小时 | ||||||
|  |       minutes: "00", // 分钟 | ||||||
|  |       seconds: "00", // 秒 | ||||||
|  |       interval: undefined, // 定时器 | ||||||
|  |       swiperOptions: { | ||||||
|  |         // 轮播图参数 | ||||||
|  |         slidesPerView: 5, | ||||||
|  |         autoplay: true, | ||||||
|  |         loop: true, | ||||||
|  |       }, | ||||||
|  |     }; | ||||||
|  |   }, | ||||||
|  |   watch: { | ||||||
|  |     diffSeconds(val) { | ||||||
|  |       const hours = Math.floor(val / 3600); | ||||||
|  |       // 当前秒数 / 60,向下取整 | ||||||
|  |       // 获取到所有分钟数 3600 / 60 = 60分钟 | ||||||
|  |       // 对60取模,超过小时数的分钟数 | ||||||
|  |       const minutes = Math.floor(val / 60) % 60; | ||||||
|  |       // 当前的秒数 % 60,获取到 超过小时数、分钟数的秒数(秒数) | ||||||
|  |       const seconds = val % 60; | ||||||
|  |       this.hours = hours < 10 ? "0" + hours : hours; | ||||||
|  |       this.minutes = minutes < 10 ? "0" + minutes : minutes; | ||||||
|  |       this.seconds = seconds < 10 ? "0" + seconds : seconds; | ||||||
|  | 
 | ||||||
|  |       if (val === 0) { | ||||||
|  |         clearInterval(this.interval); | ||||||
|  |         this.hours = 0; | ||||||
|  |         this.minutes = 0; | ||||||
|  |         this.seconds = 0; | ||||||
|  |         this.countDown(this.options.list); | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  |   mounted() { | ||||||
|  |     this.countDown(this.options.list); | ||||||
|  |   }, | ||||||
|  |   beforeDestroy() { | ||||||
|  |     clearInterval(this.interval); | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     // 倒计时 | ||||||
|  |     countDown(list) { | ||||||
|  |       /** | ||||||
|  |        * 默认倒计时两小时 | ||||||
|  |        * 如果没有开始,则显示未开始 | ||||||
|  |        * 进行中显示倒计时 | ||||||
|  |        * 今天的秒杀结束则显示已结束 | ||||||
|  |        */ | ||||||
|  |       let nowHour = new Date().getHours(); | ||||||
|  |       if (nowHour < Number(list[0].time)) { | ||||||
|  |         // 活动未开始 | ||||||
|  |         this.currHour = list[0].time; | ||||||
|  |         this.actStatus = 0; | ||||||
|  |       } else if (nowHour >= Number(list[list.length - 1].time + 2)) { | ||||||
|  |         // 活动已结束 | ||||||
|  |         this.actStatus = 2; | ||||||
|  |         this.currHour = list[list.length - 1].time; | ||||||
|  |       } else { | ||||||
|  |         // 活动进行中 | ||||||
|  |         this.actStatus = 1; | ||||||
|  |         for (let i = 0; i < list.length; i++) { | ||||||
|  |           if (nowHour == Number(list[i].time)) { | ||||||
|  |             this.currHour = list[i].time; | ||||||
|  |           } | ||||||
|  |           if ( | ||||||
|  |             nowHour > Number(list[i].time) && | ||||||
|  |             nowHour < Number(list[i].time + 2) | ||||||
|  |           ) { | ||||||
|  |             this.currHour = list[i].time; | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |         // 当前0点时间戳 | ||||||
|  |         let zeroTime = new Date(new Date().toLocaleDateString()).getTime(); | ||||||
|  |         // 活动倒计时 | ||||||
|  |         this.diffSeconds = Math.floor( | ||||||
|  |           (zeroTime + | ||||||
|  |             3600 * 1000 * (this.currHour + 2) - | ||||||
|  |             new Date().getTime()) / | ||||||
|  |           1000 | ||||||
|  |         ); | ||||||
|  |         const that = this; | ||||||
|  |         this.interval = setInterval(() => { | ||||||
|  |           this.diffSeconds--; | ||||||
|  |         }, 1000); | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |   }, | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  | <style lang="scss" scoped> | ||||||
|  | .seckill { | ||||||
|  |   width: 100%; | ||||||
|  |   height: 260px; | ||||||
|  |   display: flex; | ||||||
|  |   position: relative; | ||||||
|  |   .desc{ | ||||||
|  |     position: absolute; | ||||||
|  |     color: $theme_color; | ||||||
|  |     left: 200px; | ||||||
|  |     top: 5px; | ||||||
|  |   } | ||||||
|  |   .aside { | ||||||
|  |     overflow: hidden; | ||||||
|  |     width: 190px; | ||||||
|  |     height: 100%; | ||||||
|  |     color: #fff; | ||||||
|  |     background-image: url("../../../assets/seckillBg.png"); | ||||||
|  | 
 | ||||||
|  |     .title { | ||||||
|  |       width: 100%; | ||||||
|  |       text-align: center; | ||||||
|  |       font-size: 28px; | ||||||
|  |       margin-top: 31px; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     .hour { | ||||||
|  |       margin-top: 90px; | ||||||
|  |       text-align: center; | ||||||
|  |       span { | ||||||
|  |         font-size: 18px; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     .count-down { | ||||||
|  |       margin: 10px 0 0 30px; | ||||||
|  |       > span { | ||||||
|  |         position: relative; | ||||||
|  |         float: left; | ||||||
|  |         width: 30px; | ||||||
|  |         height: 30px; | ||||||
|  |         text-align: center; | ||||||
|  |         background-color: #2f3430; | ||||||
|  |         margin-right: 20px; | ||||||
|  |         color: white; | ||||||
|  |         font-size: 20px; | ||||||
|  |         &::after { | ||||||
|  |           content: ":"; | ||||||
|  |           display: block; | ||||||
|  |           position: absolute; | ||||||
|  |           right: -20px; | ||||||
|  |           font-weight: bolder; | ||||||
|  |           font-size: 18px; | ||||||
|  |           width: 20px; | ||||||
|  |           height: 100%; | ||||||
|  |           top: 0; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       > span:last-child::after { | ||||||
|  |         content: ""; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     .act-status { | ||||||
|  |       margin: 10px 0 0 65px; | ||||||
|  |       font-size: 20px; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   .section { | ||||||
|  |     width: 1000px; | ||||||
|  |     // background: #efefef; | ||||||
|  |     .swiper-slide { | ||||||
|  |       height: 260px; | ||||||
|  |       .content { | ||||||
|  |         width: 200px; | ||||||
|  |         display: flex; | ||||||
|  |         justify-content: center; | ||||||
|  |         align-items: center; | ||||||
|  |         flex-direction: column; | ||||||
|  |         position: relative; | ||||||
|  |         &::after { | ||||||
|  |           content: ""; | ||||||
|  |           display: block; | ||||||
|  |           position: absolute; | ||||||
|  |           top: 50%; | ||||||
|  |           right: 0; | ||||||
|  |           width: 1px; | ||||||
|  |           height: 200px; | ||||||
|  |           transform: translateY(-50%); | ||||||
|  |           background: linear-gradient(180deg, white, #eeeeee, white); | ||||||
|  |         } | ||||||
|  |         img { | ||||||
|  |           margin-top: 30px; | ||||||
|  |         } | ||||||
|  |         > div { | ||||||
|  |           width: 160px; | ||||||
|  |           margin-top: 10px; | ||||||
|  |           font-size: 12px; | ||||||
|  |           position: relative; | ||||||
|  |         } | ||||||
|  |         > div:nth-of-type(1):hover { | ||||||
|  |           color: $theme_color; | ||||||
|  |           cursor: pointer; | ||||||
|  |         } | ||||||
|  |         > div:nth-of-type(2) { | ||||||
|  |           border: 1px solid $theme_color; | ||||||
|  |           line-height: 24px; | ||||||
|  |           display: flex; | ||||||
|  |           text-align: center; | ||||||
|  | 
 | ||||||
|  |           span:nth-child(1) { | ||||||
|  |             color: #fff; | ||||||
|  |             font-size: 16px; | ||||||
|  |             width: 92px; | ||||||
|  |             background-color: $theme_color; | ||||||
|  |             position: relative; | ||||||
|  |             &::before { | ||||||
|  |               content: " "; | ||||||
|  |               width: 0; | ||||||
|  |               height: 0; | ||||||
|  |               border-color: transparent white transparent transparent; | ||||||
|  |               border-style: solid; | ||||||
|  |               border-width: 24px 8px 0 0; | ||||||
|  |               position: absolute; | ||||||
|  |               top: 0; | ||||||
|  |               left: 84px; | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  | 
 | ||||||
|  |           span:nth-child(2) { | ||||||
|  |             color: #999; | ||||||
|  |             width: 66px; | ||||||
|  |             text-decoration: line-through; | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </style> | ||||||
|  | @ -49,7 +49,7 @@ export default { | ||||||
|     // 提交模板 |     // 提交模板 | ||||||
|     submitTemplate(pageShow) { |     submitTemplate(pageShow) { | ||||||
|       this.submitLoading = true |       this.submitLoading = true | ||||||
|       const modelForm = JSON.parse(JSON.stringify(this.modelForm))  |       const modelForm = JSON.parse(JSON.stringify(this.modelForm)) | ||||||
|       modelForm.list.unshift(this.$refs.modelForm.navList); |       modelForm.list.unshift(this.$refs.modelForm.navList); | ||||||
|       modelForm.list.unshift(this.$refs.modelForm.topAdvert); |       modelForm.list.unshift(this.$refs.modelForm.topAdvert); | ||||||
|       const data = { |       const data = { | ||||||
|  | @ -107,7 +107,7 @@ export default { | ||||||
|   display: flex; |   display: flex; | ||||||
| } | } | ||||||
| .model-list { | .model-list { | ||||||
|   width: 120px; |   width: 130px; | ||||||
|   height: auto; |   height: auto; | ||||||
|   padding: 10px; |   padding: 10px; | ||||||
|   background: #fff; |   background: #fff; | ||||||
|  | @ -121,17 +121,21 @@ export default { | ||||||
|     line-height: 30px; |     line-height: 30px; | ||||||
|   } |   } | ||||||
|   .model-item { |   .model-item { | ||||||
|     width: 100px; |     width: 110px; | ||||||
|     height: 30px; |     height: 30px; | ||||||
|     background: #eee; |     background: #eee; | ||||||
|     margin-top: 10px; |     margin-top: 10px; | ||||||
|     line-height: 30px; |     line-height: 30px; | ||||||
|     text-align: center; |     text-align: center; | ||||||
|     color: #999; |     color: #999; | ||||||
|  |     transition:0.15s; | ||||||
|  |     border-radius: 4px; | ||||||
|     &:hover { |     &:hover { | ||||||
|       border: 1px dashed #409eff; | 
 | ||||||
|       color: #409eff; |       background: $theme_color; | ||||||
|       cursor: move; |       cursor: move; | ||||||
|  |       color: #fff; | ||||||
|  | 
 | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   .ghost::after { |   .ghost::after { | ||||||
|  |  | ||||||
|  | @ -128,7 +128,7 @@ li { | ||||||
| $success_color: #68cabe; | $success_color: #68cabe; | ||||||
| $warning_color: #fa6419; | $warning_color: #fa6419; | ||||||
| $error_color: #ff3c2a; | $error_color: #ff3c2a; | ||||||
| $theme_color: #FF5C58;   | $theme_color: #F31947; | ||||||
| .theme_color { | .theme_color { | ||||||
|   color: $theme_color !important; |   color: $theme_color !important; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,8 +1,8 @@ | ||||||
| @import "~view-design/src/styles/index.less"; | @import "~view-design/src/styles/index.less"; | ||||||
| // iview 自定义样式 | // iview 自定义样式 | ||||||
| 
 | 
 | ||||||
| @primary-color: #ff5c58;  | @primary-color: #F31947; | ||||||
| @info-color: #fa6419;   | @info-color: #fa6419; | ||||||
| @success-color: #68cabe; | @success-color: #68cabe; | ||||||
| @error-color: #ff3c2a; | @error-color: #ff3c2a; | ||||||
| @table-thead-bg: #f8f8f9; | @table-thead-bg: #f8f8f9; | ||||||
|  |  | ||||||