| <template> | 
|     <!-- 商品详情 --> | 
|     <view> | 
|         <navigator open-type="navigateBack" hover-class="none"> | 
|             <view class="back iconfont iconzuojiantou"></view> | 
|         </navigator> | 
|         <swiper class="banner" | 
|             autoplay="true"  | 
|             interval="5000"  | 
|             duration="1500"     | 
|             @change="swiperChange"> | 
|             <swiper-item v-for="(item,index) in banner" :key="index"> | 
|                 <image class="img" :src="item?item:'../../../static/images/no-img.png'"></image> | 
|                 <view class="indicator"> | 
|                     <text>{{swiperIndex+1}}/{{banner.length}}</text> | 
|                 </view> | 
|             </swiper-item> | 
|         </swiper> | 
|         <view class="product-info"> | 
|             <text class="price">¥{{productInfo.salePrice}}</text> | 
|             <view class="flex justify-between align-center"> | 
|                 <text>{{productInfo.goodsName}}</text> | 
|                 <text class="gray">月销:{{productInfo.saleCnt}}</text> | 
|             </view> | 
|         </view> | 
|         <view class="product-desc-wrap"> | 
|             <h-tabs | 
|                 class="tab" | 
|                 :tabData="tabs"  | 
|                 :config="{ | 
|                     color: '#abb1cc', | 
|                     activeColor: '#518EFF', | 
|                     underLineColor: '#518EFF', | 
|                     underLineHeight: 4, | 
|                     fontSize: '28', | 
|                     underLineWidth: 110 | 
|                 }" | 
|                 @tabClick="tabClick($event)" | 
|             /> | 
|             <template v-if="tabIndex==0"> | 
|                 <view class="product-desc" v-html="productInfo.desc"></view> | 
|             </template> | 
|             <template v-else> | 
|                 <product :productInfo="productInfo" v-if="goodsType=='家居产品'"></product> | 
|                 <project :productInfo="productInfo" v-if="goodsType=='项目'"></project> | 
|                 <combo :productInfo="productInfo" v-if="goodsType=='套餐'"></combo> | 
|                 <refillCard :productInfo="productInfo" v-if="goodsType=='充值卡'"></refillCard> | 
|             </template> | 
|         </view> | 
|     </view> | 
| </template> | 
|   | 
| <script> | 
|     import HTabs from "@/components/liuyuno-tabs/liuyuno-tabs.vue"; | 
|     import product from './product.vue'; | 
|     import project from './project.vue'; | 
|     import combo from './combo.vue' | 
|     import refillCard from './refillCard.vue' | 
|     export default{ | 
|         components: { | 
|             HTabs, | 
|             product, | 
|             project, | 
|             combo, | 
|             refillCard | 
|         }, | 
|         data(){ | 
|             return{ | 
|                 goodsType: '家居产品', | 
|                 banner:[], | 
|                 swiperIndex:0, | 
|                 tabs:[ | 
|                     { | 
|                         state: 1, | 
|                         name: '商品介绍' | 
|                     }, | 
|                     { | 
|                         state: 2, | 
|                         name: '商品属性' | 
|                     } | 
|                 ], | 
|                 tabIndex:0, | 
|                 productInfo: {} | 
|             } | 
|         }, | 
|         onLoad(options) { | 
|             this.goodsType = options.goodsType; | 
|             this.getInfo(options.id); | 
|         }, | 
|         methods:{ | 
|             swiperChange(e){ | 
|                 this.swiperIndex = e.detail.current; | 
|             }, | 
|             tabClick(index){ | 
|                 this.tabIndex=index | 
|             }, | 
|             getInfo(id){ | 
|                 this.$httpUtils.request('/api/order/findGoodsDetailById/'+id).then((res) => { | 
|                     if(res.status == 200){ | 
|                         this.productInfo = res.mapInfo.goods; | 
|                         this.banner = this.productInfo.img?this.productInfo.img.split(','):[]; | 
|                         if(this.productInfo.desc){ | 
|                             this.productInfo.desc = this.productInfo.desc.replace(/\<img/gi, '<img style="max-width:100%;height:auto" '); | 
|                         } | 
|                          | 
|                     } | 
|                 }) | 
|             } | 
|         } | 
|     } | 
| </script> | 
|   | 
| <style> | 
|     page{ | 
|         background: #F6F6F8; | 
|     } | 
|     .back{ | 
|         position: absolute; | 
|         top: var(--status-bar-height); | 
|         left: 10px; | 
|         z-index: 9; | 
|         font-size: 28px; | 
|         opacity: 0.5; | 
|     } | 
|     .banner{ | 
|         width: 100%; | 
|         height: 300px; | 
|     } | 
|     .banner .img{ | 
|         width: 100%; | 
|         height: 100%; | 
|     } | 
|     .banner .indicator{ | 
|         position: absolute; | 
|         right: 10px; | 
|         bottom: 10px; | 
|         background: rgba(0,0,0,0.5); | 
|         border-radius: 20px; | 
|         padding: 2px 15px; | 
|         color: #FFFFFF; | 
|         font-size: 10px; | 
|     } | 
|     .product-info{ | 
|         background: #FFFFFF; | 
|         padding: 15px 10px; | 
|         font-size: 14px; | 
|         margin-bottom: 10px; | 
|     } | 
|     .product-info .price{ | 
|         display: block; | 
|         font-size: 24px; | 
|         font-weight: bold; | 
|         color: #FA5151; | 
|         margin-bottom: 5px; | 
|     } | 
|     .product-desc-wrap{ | 
|         background: #FFFFFF; | 
|     } | 
|     .tab{ | 
|         background: #FFFFFF; | 
|         border-bottom: 1px solid #EDEAF4; | 
|     } | 
|     .product-desc{ | 
|         padding: 10px; | 
|         min-height: 500rpx; | 
|         font-size: 14px; | 
|     } | 
|      | 
| </style> |