detailshop detailgoods detailswiper

这是一个关于商品详细信息展示的组件模板,包括轮播图、商品名称、价格、折扣、商品属性、服务信息以及店铺信息如销售量、评分等。同时,页面中还包含了店铺的Logo、名称、总销量和评分详情。整个页面布局清晰,信息丰富。
摘要由CSDN通过智能技术生成

detailswiper

<template>
  <detswiper class="fa">
      <detswiperitem v-for="item in itemtopimg">
          <img :src="item" alt="">
      </detswiperitem>
  </detswiper>
</template>

<script>
import detswiper from "../../../components/Swiper/Swiper.vue";
import detswiperitem from "../../../components/Swiper/SwiperItem.vue";
export default {
  name: "detailswiper",
  components: {
    detswiper,
    detswiperitem,
  },
  props: {
    itemtopimg: {
      type: Array,
      default() {
        return [];
      },
    },
  },
};
</script>
<style scoped>
.fa{
    margin-top: 5px;
}
.fa img{
    width: 100%;
    height: 350px;
}
</style>

detailgoods

<template>
  <div>
    <div style="margin: 5px 10px">{{ this.goods.title }}</div>
    <div class="two">
      {{ this.goods.newPrice }}
      <span class="old">{{ this.goods.oldPrice }}</span>
      <span class="y">{{ this.goods.discount }}</span>
    </div>
    <div class="three">
      <span v-for="item in this.goods.columns" class="san">
        {{ item }}
      </span>
    </div>
    <div class="onefen"></div>
    <div class="four">
      <span class="fouritem" v-for="item in goods.services">
        <img :src="item.icon" />
        <span>{{ item.name }}</span></span
      >
    </div>
    <div class="twofen"></div>
  </div>
</template>

<script>
export default {
  name: "goodsdetail",
  props: {
    goods: {
      type: Object,
      default() {
        return {};
      },
    },
  },
  created() {
    console.log(this.goods);
  },
};
</script>

<style>
.two {
  margin: 5px 10px;
  font-size: 20px;
  color: rgb(427, 188, 0);
}
.old {
  font-size: 10px;
  color: darkgray;
  text-decoration: line-through;
}
.y {
  background-color: rgb(427, 188, 0);
  color: white;
  font-weight: bold;
  border-radius: 5px;
  font-size: 12px;
  margin-left: 10px;
  margin-bottom: 5px;
  padding: 0px 3px;
}
.three {
  display: flex;
  color: darkgrey;
  width: 100%;
  margin-top: 25px;
}
.san {
  flex: 1;
  margin: 5px 20px;
  font-size: 10px;
}
.onefen {
  background-color: rgb(236, 228, 228);
  width: 100%;
  height: 0.7px;
}
.four {
  display: flex;
  justify-content: space-between;
  line-height: 40px;
  padding: 10px;
  margin-top: 10px;
  overflow: hidden;
  height: 25px;
}
.fouritem img {
  width: 10px;
  height: 10px;
  position: relative;
  top: 0px;
}
.four span {
  color: #333;
  font-size: 8px;
}
.twofen {
  background-color: rgb(245, 239, 239);
  width: 100%;
  height: 6px;
}
</style>

detailshop

<template>
  <div class="shop">
    <img :src="this.shop.logo" alt="" class="logo" />
    <span class="name">{{ this.shop.name }}</span>
    <div class="sell">
        <table >
            <tr >
                <td >{{ sell +"&nbsp"}}</td>
               
                <td>{{this.shop.goodsCount}}</td>
            </tr>
             <tr >
                <td style="font-size:10px;color:rgb(93, 94, 94)">总销量</td>
                <td style="font-size:10px;color:rgb(93, 94, 94)">商品数目</td>
            </tr>
        </table>
     
    </div>
    <div class="score" >
        <div v-for="item in this.shop.score">
           {{item.name}} &nbsp &nbsp{{item.score}}  &nbsp &nbsp 
           <span :class="{ 'isbettertrue': item.isBetter }" class="isbetter"> 
               
               <span>
                   {{item.isBetter? "高":"低"}}
               </span>
               </span>
        </div>
        
    </div>
       <button class="detailshopbtn">进店逛逛</button>
  </div>
</template>

<script>
export default {
  name: "detailshop",
  props: {
    shop: {
      type: Object,
      default() {
        return {};
      },
    },
  },
  created(){
      console.log("shop数据");
      console.log(this.shop.score);
  },
  computed:{
      sell(){
       if(this.shop.sells<10000){
           return this.shop.sells
       }else{
           return(this.shop.sells/10000).toFixed(1)+'万'
       }
      },

    
  }
};
</script>

<style>
.shop {
  position: relative;
}
.logo {
  width: 50px;
  height: 50px;
  border-radius: 40px;
  margin: 20px;
  display: inline-block;
}
.name {
  color: rgb(93, 94, 94);
  position: absolute;
  top: 30px;
  left: 80px;
  font-size: 20px;
}
.sell{
       width: 36%;
    font-size: 20px;
    margin-left: 25px;
    margin-top: 25px;
    border-right: 1px solid slategrey;
    padding: 0px;
}
.sell span{
    margin: 20px;
}
.score{
    position: absolute;
   right: 40px;
    top: 105px;
    line-height: 25px;
    font-size: 12px ;
    
}
.isbetter{
    background-color: rgb(55, 190, 123);
    padding: 2px;
    color: white;
    height: 15px;
    width: 15px;
   border-radius: 15px;
}
.detailshopbtn{
    background-color: rgb(241, 235, 235);
    border-radius: 20px;
    border: none;
    width: 70%;
    height: 40px;
    color: rgb(49, 47, 47);
    margin-top: 35px;
    margin-left: 59px;
}
.isbettertrue{
    background-color: red;
}
</style>

detail

<template>
   <!-- 导入导航 -->
  <detailnavbar ></detailnavbar>
  <!-- 导入轮播图 -->
  <detailswiper :itemtopimg="topimg"></detailswiper>
  <!-- 导入商品详情 -->
  <goodsdetail :goods="goods"></goodsdetail>
  <!-- 导入店铺详情 -->
  <detailshop :shop="shop"></detailshop>
</template>

<script>
import detailswiper from "./childcom/detailswiper.vue"
import detailnavbar from "./childcom/detailnavbar.vue";
//导入商品详情
import goodsdetail from "./childcom/goodsdetail.vue"
// 导入店铺详情
import detailshop from "./childcom/detailshop.vue"
import { detailjs,Goods,Shop} from "../../components/network/detail.js";
export default {
  name: "detail",
  data() {
    return {
      ids: null,
      topimg:[],
      goods:{},
      shop:{}
    };
  },
  components: {
    detailnavbar,
    detailswiper,
    goodsdetail,
    detailshop,

  },
  created() {
    this.ids = this.$route.params.id;
    detailjs(this.ids).then(res=> {
      console.log(res);
      const result = res.data.result;
      this.topimg=result.itemInfo.topImages
      // console.log(this.topimg);
        // 获取商品详情信息
      this.goods = new Goods(
        result.itemInfo,
        result.columns,
        result.shopInfo.services
      );
      //获取店铺详情
     this.shop = new Shop(result.shopInfo);
    });
    },
  methods: {},
};
</script>

<style>
</style>

在这里插入图片描述
写样式真的是太肝了

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万事胜意sy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值