衣服、商品、商城网站模板首页,仿U袋网,vue+elementui简洁实现(三)

news2024/11/19 17:39:47

一.以往版本回顾

作者成品效果访问:点击访问
官方详情页访问:点击访问

  1. 版本1《衣服、商品、商城网站模板首页,仿U袋网,vue+elementui简洁实现》
  2. 版本2《衣服、商品、商城网站模板首页,仿U袋网,vue+elementui简洁实现(二)》

注意:

以往版本博客里面的源码下载并不是当前博客介绍的最新源码,由于其他原因,当前最新demo源码并没有提供下载,需要最新源码或需要增加其他页面的,私聊作者即可(会及时回复)或通过博客最后面的微信名片添加作者

效果图:
在这里插入图片描述
评论:
在这里插入图片描述
售后服务:
在这里插入图片描述

二.功能说明

1.文件结构说明

以往版本功能这里就不再重复描述,可通过访问以往版本了解,当前版本主要增加了商品详情页,虽然看着只是一个详情页,实际上子页面还蛮多的,作者这里详情页与官方的对比,删减了一些功能,简单点,暂时总共有6个页面(1个主页面,5个子页面)

  • index.vue 主页面
  • comment_index.vue 评论主页面
  • comment_list.vue 评论列表子页面(分页)
  • product_detail.vue 商品详情介绍子页面
  • sale_service.vue 售后服务子页面

在这里插入图片描述

2.index.vue,通过el-tabs和子页面组件封装访问:

<template>
    <div style="margin: 0 400px 0 400px;font-size: 14px;">
      <div style="display: flex;">
        <div style="flex: 1;">
          <div style="margin: 20px 0;">
            <el-breadcrumb separator=">">
              <el-breadcrumb-item :to="{ path: '/home/index' }">首页</el-breadcrumb-item>
              <el-breadcrumb-item :to="{ path: '/type/index' }">爆款推荐</el-breadcrumb-item>
              <el-breadcrumb-item><span style="color: #b31e22;">原创设计日常汉服女款绣花长褙子吊带改良宋裤春夏</span></el-breadcrumb-item>
            </el-breadcrumb>
          </div>
          <div style="display: flex;">
            <div style="width: 363px;overflow: hidden;">
              <div style="width: 363px;height: 363px;">
                <el-image :src="bigImg" :preview-src-list="banners" style="width: 363px;height: 363px;"></el-image>
              </div>
              <div style="display: flex;margin-top: 10px;overflow: auto;">
                <div v-for="(item,index) in banners" @mouseenter="selImg(index)" :key="index" style="width: 50px;height: 50px;margin: 5px 5px;" :class="item===bigImg?'img-active':''">
                  <el-image :src="item" style="width: 50px;height: 50px;"></el-image>
                </div>
              </div>
            </div>
            <div style="flex: 1;margin-left: 20px;">
              <div style="font-size: 16px;">
                原创设计日常汉服女款绣花长褙子吊带改良宋裤春夏
              </div>
              <div style="color: #b31e22;line-height: 30px;">
                优惠活动:该商品享受8折优惠
              </div>
              <div style="height: 60px;background-color: #f5f5f5;padding: 10px 5px;">
                <div style="height: 40px;">
                  <span>售价:</span>
                  <span style="font-size: 24px;color: #d00;">19.20</span>
                  <span style="font-size: 16px;color: #999;text-decoration: line-through;">19.20</span>
                </div>
                <div>
                  <span>普通会员限购 2 件,想要
                    <span style="color: #97191d;text-decoration-line: underline;cursor: pointer;">购买更多</span></span>
                </div>
              </div>
              <div style="border: 1px dotted #ccc;height: 46px;margin: 20px 0;display: flex;line-height: 46px;">
                <div style="width: 33.3%;text-align: center;">
                  <span style="color: #999;">累计销量</span>
                  <span style="color: #b31e22;font-weight: bold;">1688</span>
                </div>
                <div style="width: 33.3%;text-align: center;">
                  <span style="color: #999;">累计评论</span>
                  <span style="color: #b31e22;font-weight: bold;">1314</span>
                </div>
                <div style="width: 33.3%;text-align: center;">
                  <span style="color: #999;">赠送积分</span>
                  <span style="color: #280;font-weight: bold;">666</span>
                </div>
              </div>
              <div style="height: 50px;line-height: 50px;margin: 10px 0;display: flex;">
                <span style="color: #999;margin-left: 10px;">颜色:</span>
                <div v-for="(item,index) in colors" :key="item" @click="selColor(index)" :class="'type-item '+(colorIndex===index?'type-item-active':'')">
                  {{item}}
                </div>
              </div>
              <div style="height: 50px;line-height: 50px;margin: 10px 0;display: flex;">
                <span style="color: #999;margin-left: 10px;">尺寸:</span>
                <div v-for="(item,index) in sizes" :key="item" @click="selSize(index)" :class="'type-item '+(sizeIndex===index?'type-item-active':'')">
                  {{item}}
                </div>
              </div>
              <div style="height: 130px;background-color: #f5f5f5;padding: 10px;">
                <div style="line-height: 40px;display: flex;">
                  <span style="color: #999;">数量:</span>
                  <div style="margin-left: 10px;">
                    <el-input-number v-model="buyNum" size="medium" controls-position="right" :min="1" :max="stockNum"></el-input-number>
                  </div>
                  <span style="margin-left: 10px;">库存:<span style="font-weight: bold">1000</span></span>
                </div>
                <div style="margin: 30px 0 0 55px;">
                  <el-button type="danger" style="width: 130px;">立即购买</el-button>
                  <el-button type="warning" style="margin-left: 50px;"><i class="el-icon-shopping-cart-2"></i> 加入购物车</el-button>
                </div>
              </div>

            </div>
          </div>
        </div>
        <div style="width: 200px">

        </div>
      </div>
      <div style="margin-top: 20px;">
        <el-tabs type="card" v-model="activeName" @tab-click="handleClick">
          <el-tab-pane label="商品详情" name="first">
            <product-info></product-info>
          </el-tab-pane>
          <el-tab-pane label="累计评价" name="second">
            <span slot="label">
              累计评价
              <span :style="'color: #ffffff;border-radius: 10px;padding: 2px 5px;'+(activeName==='second'?'background-color: #b31e22;':'background-color: #858585;')">1314</span>
            </span>
            <comment-index></comment-index>
          </el-tab-pane>
          <el-tab-pane label="售后服务" name="third">
            <sale-service></sale-service>
          </el-tab-pane>
        </el-tabs>
      </div>


    </div>
</template>

<script>
  import productInfo from "./child/product_info.vue";
  import commentIndex from "./child/comment_index.vue";
  import saleService from "./child/sale_service.vue";

  export default {
    components:{
      productInfo,
      commentIndex,
      saleService
    },
    data() {
      return {
        bigImg: 'http://shop.jlkjgf.cn/images/temp/S-001-5_s.jpg',
        banners: [
          'http://shop.jlkjgf.cn/images/temp/S-001-1_s.jpg',
          'http://shop.jlkjgf.cn/images/temp/S-001-2_s.jpg',
          'http://shop.jlkjgf.cn/images/temp/S-001-3_s.jpg',
          'http://shop.jlkjgf.cn/images/temp/S-001-4_s.jpg',
          'http://shop.jlkjgf.cn/images/temp/S-001-5_s.jpg',
          'http://shop.jlkjgf.cn/images/temp/S-001-6_s.jpg',
          'http://shop.jlkjgf.cn/images/temp/S-001-7_s.jpg',
          'http://shop.jlkjgf.cn/images/temp/S-001-8_s.jpg',
          'http://shop.jlkjgf.cn/images/temp/S-001-9_s.jpg',
        ],
        colors: ['白色','黑色','粉红色','黄色'],
        colorIndex: 0,
        sizes: ['S','M','L','XL'],
        sizeIndex: 0,
        buyNum: 1,
        stockNum: 1000,
        activeName: 'first'
      };
    },
    mounted() {
    },
    methods: {
      selImg(index){
        this.bigImg = this.banners[index];
      },
      selColor(index){
        this.colorIndex = index;
      },
      selSize(index){
        this.sizeIndex = index;
      },
      handleClick(tab, event) {
        console.log(tab, event);
      }
    }
  };
</script>

<style scoped>
  .img-active{
    border: 2px solid #b31e22;
  }
  .type-item{
    width: 75px;
    height: 30px;
    text-align: center;
    line-height: 30px;
    border: 1px solid #d1d1d1;
    margin: 10px 10px;
  }
  .type-item-active{
    border: 1px solid #b31e22!important;
    font-weight: bold;
  }
  .type-item:hover{
    cursor: pointer;
    border: 1px solid #b31e22!important;
    font-weight: bold;
  }
</style>

3.comment_index.vue 通过el-tabs和子页面(评论列表)组件封装访问

<template>
    <div>
      <el-tabs type="border-card" v-model="activeName" @tab-click="handleClick">
        <el-tab-pane label="全部评价" name="first">
           <span slot="label">
              全部评价
              <span :style="'color: #ffffff;border-radius: 10px;padding: 2px 5px;'+(activeName==='first'?'background-color: #b31e22;':'background-color: #858585;')">1314</span>
            </span>
          <comment-list></comment-list>
        </el-tab-pane>
        <el-tab-pane label="好评" name="second">
            <span slot="label">
              好评
              <span :style="'color: #ffffff;border-radius: 10px;padding: 2px 5px;'+(activeName==='second'?'background-color: #b31e22;':'background-color: #858585;')">1000</span>
            </span>
          <comment-list></comment-list>
        </el-tab-pane>
        <el-tab-pane label="中评" name="third">
           <span slot="label">
              中评
              <span :style="'color: #ffffff;border-radius: 10px;padding: 2px 5px;'+(activeName==='third'?'background-color: #b31e22;':'background-color: #858585;')">314</span>
            </span>
          <comment-list></comment-list>
        </el-tab-pane>
        <el-tab-pane label="差评" name="fourth">
           <span slot="label">
              差评
              <span :style="'color: #ffffff;border-radius: 10px;padding: 2px 5px;'+(activeName==='fourth'?'background-color: #b31e22;':'background-color: #858585;')">0</span>
            </span>
          <comment-list></comment-list>
        </el-tab-pane>
      </el-tabs>
    </div>
</template>

<script>
  import commentList from "./comment_list.vue";

  export default {
    components:{
      commentList
    },
    data() {
      return {
        activeName: 'first'
      };
    },
    mounted() {
    },
    methods: {
      handleClick(tab, event) {
        console.log(tab, event);
      }
    }
  };
</script>
<style scoped>

</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/147748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【微服务】springboot 实现elasticsearch索引数据迁移

一、前言 在生产系统中&#xff0c;经常可能面临的一个状况就是&#xff0c;随着实际业务发生变更&#xff0c;现有的数据模型可能需要调整&#xff0c;而且到了必须调整不可的时候&#xff0c;那就只能硬着头皮做了&#xff1b; 数据模型的调整&#xff0c;说的大一点&#xf…

flask 和 echarts 使用柱状图折线图等可视化图表展示二手房统计数据

目录 一、实战场景 二、知识点 python 基础语法 python 文件读写 pandas 数据处理 flask web 框架 echarts 图表 jinja 模版 三、菜鸟实战 初始化 Flask 框架&#xff0c;设置路由 各行政区房屋均价柱状图分析 echarts 渲染柱状图 各面积区间房屋占比饼状图 echa…

逻辑漏洞渗透与攻防(六)之其他类型逻辑漏洞

目录 其他类型逻辑漏洞 数据包重放漏洞 条件竞争漏洞 订单金额任意修改 接口无限制枚举 支付漏洞 修改商品数量 修改支付状态 修改附属值 越权支付 无限制试用 支付漏洞总结 SRC中的逻辑漏洞总结 其他类型逻辑漏洞 数据包重放漏洞 漏洞介绍&#xff1a;通…

SpringBoot下RabbitMQ的实战应用:动态创建和动态监控队列、死信、备份交换机

一、应用场景 业务中心根据业务需求向特定用户发送消息&#xff1b;发送前不确定由哪个用户接收 特定用户接收特定消息&#xff1b;用户可以退出&#xff0c;再切换别的用户登录&#xff0c;用户登录后只接收与自已对应的消息 二、总体要求 项目要足够稳健&#xff0c;消息不能…

(3分钟了解)SLAM后端优化的四大金刚!g2o ceres gtsam SE-Sync

后端优化常用的库有g2o ceres gtsam 和 se-sync这篇博客首先介绍se-sync&#xff0c;然后比较四种库之间的差异。编辑切换为居中添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09;编辑切换为居中添加图片注释&#xff0c;不超过 140 字&#xff08;可选&…

Python实现检测图片中的人脸,将识别到的人脸向量存入数据库,并实现提交的图片的人脸信息与入库的人脸信息进行比对

facenet_face_regonistant 完整代码下载地址&#xff1a;Python实现检测图片中的人脸&#xff0c;将识别到的人脸向量存入数据库 利用facenet实现检测图片中的人脸&#xff0c;将识别到的人脸向量存入数据库&#xff0c;此外利用post提交一个新图片&#xff08;也可以提交一个…

【Qt】通过继承ui界面类的方式加载.ui转化的.h头文件显示窗体

【Qt】通过继承ui界面类的方式加载.ui转化的.h头文件显示窗体1、背景2、实例3、验证1、背景 将.ui文件转化为.h头文件参考如下博客&#xff1a; 【Qt】将QtDesigner生成的.ui文件转化为.h头文件 https://jn10010537.blog.csdn.net/article/details/128589666其中生成的ui_wid…

Web学习

Web概念JavaWeb&#xff1a;使用Java语言开发基于互联网小贷项目软件架构&#xff1a;B/S架构详解静态资源HTML举例标签学习文件标签<!--注释-->文本标签图片标签* img&#xff1a;展示图片* 属性&#xff1a;* src&#xff1a;指定图片的位置* 代码&#xff1a;<!--展…

你的PC机或者终端,是怎么上网的?怎么连接到网络的?无线网怎么接入Internet,如何访问网络资源?

你的PC机或者终端&#xff0c;是怎么上网的&#xff1f;怎么连接到网络的&#xff1f;无线网怎么接入Internet&#xff0c;如何访问网络资源&#xff1f; 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都…

就该去造空调吗?

今天在知乎上收到一个网友的提问&#xff1a;大佬&#xff0c;我想咨询点人生问题&#xff0c;但是碍于没工作囊中羞涩&#xff0c;实在没钱问。希望能问一问人生选择问题 是这样的一个是奥克斯空调电控部&#xff0c;一个是大陆汽车电子重庆研发&#xff0c;奥克斯偏裸机&…

光耦合器:其类型和在DC/AC电路中的各种应用

光耦合器&#xff1a;其类型和在DC/AC电路中的各种应用 介绍 光耦合器是一种在两个隔离电路之间传输电信号的电子元件。光耦合器也称为光隔离器、光电耦合器或光隔离器。 光耦合器通常用于电路&#xff0c;尤其是低电压或高噪声敏感电路&#xff0c;用于隔离电路&#xff0c…

【C++常用算法】STL基础语法学习 | 排序算法

目录 ●sort ●random_shuffle ● merge ●reverse ●sort 1.功能描述&#xff1a; 对容器内元素进行排序 2.查看sort定义下底层代码的函数原型&#xff1a; 3.向vector容器中插入10个无序数&#xff0c;并且用sort排序法对其进行升序和降序&#xff08;内建仿函数greater<…

伦敦交通局在这里为您的无障碍旅程提供支持

伦敦交通局首席人事官特里西亚赖特&#xff08;Tricia Wright&#xff09;详细介绍了伦敦交通局努力使该市的交通网络更易于所有乘客使用的方式&#xff0c;并强调尽管已经做了很多工作&#xff0c;但这项工作只是一个开始。公共交通是伦敦人和游客在首都生活中必不可少的。它连…

c++写一个连接池

用c写一个数据库连接池 数据库连接池是为了提高数据库连接的性能&#xff0c;进行连接复用 对于复杂数据库进行大量引用的场景下就会出现访问瓶颈 常见的两种解决方法就是&#xff1a;为了减少磁盘 I/O的次数&#xff0c;在数据库和服务器的应用中间加一层 缓存数据库&#…

2023/1/7 Vue学习笔记-4-组件的理解

1 对组件的理解 模块与组件、模块化与组件化&#xff1a; 1.模块&#xff1a; &#xff08;1&#xff09;理解&#xff1a;向外提供特定功能的js程序&#xff0c;一般就是一个js文件 &#xff08;2&#xff09;为什么&#xff1a;js文件很多很复杂 &#xff08;3&#xff09;作…

元编程:constexpr +特例化 判断质数

重点&#xff1a; 1.constexpr 函数支持在编译期间完成计算 2.特例化是模板中一种定义 using namespace std;//编译期进行判断 constexpr bool isPrime(unsigned int p) {for (unsigned int d2;d<p/2;d){if (p % d 0){return false;}}return p > 1; }template<int…

【安全硬件】Chap.6 芯片生产猜疑链与SoC设计流程;可能会存在的安全威胁Untrusted IC Supply Chain Threats

【安全硬件】Chap.6 芯片生产猜疑链与SoC设计流程&#xff1b;可能会存在的安全威胁Untrusted IC Supply Chain Threats背景1. IC和半导体产业的全球化2. 芯片生产猜疑链——Untrusted IC Supply Chain Threats可能会存在的安全威胁3. SoC Design Flow主要参考来源背景 在现代 …

专属 Python 开发者的完美终端工具

目录 前言 1.Rich 兼容性 2.Rich 安装说明 3.Rich 的 Print 功能 4.自定义 Console 控制台输出 5.Console 控制台记录 6.表情符号 7.表格 8.进度条 9.按列输出数据 10.Markdown 11.语法突出显示 12.错误回溯(traceback) 前言 今天给大家推荐一个非常精美的终端工…

数学建模——线性规划

目录 一. 线性规划 1.基本概念 线性规划的标准形式为&#xff1a; 线性规划的解&#xff1a; 线性规划三要素&#xff1a; 灵敏度分析&#xff1a; 2.matlab的实现 二. 整形规划 1.整型规划分类 2.基础模型 2.1 非线性约束条件的线性化 3.模型求解 一.钢管下料问题…

【模板初阶】

目录 1. 泛型编程 2. 函数模板 2.1 函数模板概念 2.2 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.4.1 隐式实例化 2.4.2 显式实例化 2.5 模板参数的匹配原则 3. 类模板 3.1 类模板的定义格式 3.2 类模板的实例化 4 总结 1. 泛型编程 如何实现一个通用的…