参数管理

参数管理概述

商品参数用于显示商品的固定的特征信息,可以通过电商平台商品详情页面直观的看到

商品分类选择

选择商品分类
  • 页面布局
<div><!-- 面包屑导航区域 --><el-breadcrumb separator-class="el-icon-arrow-right"><el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item><el-breadcrumb-item>商品管理</el-breadcrumb-item><el-breadcrumb-item>参数列表</el-breadcrumb-item></el-breadcrumb><!-- 卡片视图 --><el-card><!-- 警告区域 --><el-alert title="注意: 只允许为第三级分类设置相关参数!" type="warning" :closable="false" show-icon></el-alert><!-- 选择商品分类区域--><el-row class="cat_opt"><el-col><span>选择商品分类: </span><!-- 选择商品分类的级联选择框 --><el-cascaderexpand-trigger="hover":options="catelist"v-model="selectedCateKeys"@change="handleChange":props="cateProps":change-on-select="true"></el-cascader></el-col></el-row><el-table></el-table></el-card></div>
  • 加载商品分类数据
// 商品分类列表
catelist: [],
// 选中的分类id值
selectedCateKeys: [],
//获取所有的商品分类列表
async getCateList() {const {data: res} = await this.$http.get('categories')if (res.meta.status !== 200) {return this.$message.error("获取商品分类失败!")}this.catelist = res.dataconsole.log(this.catelist);
},
  • 实现商品分类的级联选择效果

    • 级联选择框的配置对象
    // 级联选择框的配置对象
    cateProps: {// 指定选项的值为数据源对象的某个属性value: 'cat_id',// 指定选项标签为数据源对象的某个属性label: 'cat_name',// 指定选项的子选项为选项对象的某个属性值children: 'children'
    },
    
    • 级联选择框选中项变化,会触发这个函数
    // 级联选择框选中项变化,会触发这个函数
    handleChange() {},
    
控制级联菜单分类选择
  • 只允许选择三级分类
cascaderChanged() {if (this.selectedCateList.length !== 3) {// 没有选中三级分类,把分类重置为空this.selectedCateList = []this.manyTableData = []this.onlyTableData = []} else {// 选中了三级分类后,获取该分类对应的参数列表数据this.getParamsList()}
}
  • 通过计算属性方式获取分类id
cateId() {if (this.selectedCateList.length === 3) {return this.selectedCateList[this.selectedCateList.length - 1]} else {return null}
}

实现参数列表

根据选择的商品分类加载对应的参数数据
  • 参数列表布局
  • 根据分类id加载参数列表数据
// 获取所有商品的分类列表
const { data: res } = await this.$http.get(`categories/${this.cateId}/attributes`, {params: { sel: this.activeName }
})
处理标签数据格式

将字符串形式的数据分隔为数组

res.data.forEach(item => {// 把字符串的可选项,分割为数组,重新赋值给 attr_valsitem.attr_vals = item.attr_vals.length > 0 ? item.attr_vals.split(‘,') : []
})
控制添加标签文本框的显示

$nextTick的执行时机: DOM更新完毕之后

<el-button size="small" v-else @click="showTagInput(scope.row)">+ New Tag</el-button>
showTagInput(row) {row.tagInputVisible = true// 当我们修改了 data 中 tagInputVisible 的值以后,如果要操作文本框,必须等页面重新渲染完毕之后才可以,所以,必须把操作文本框的代码放到 $nextTick 中,当作回调去执行($nextTick 的执行时机,是在DOM 更新完毕之后)this.$nextTick(() => {this.$refs.saveTagInput.$refs.input.focus()})
}
实现标签动态添加的文本框控制逻辑
  • 控制标签输入域的显示和隐藏
  • 对输入的内容进行数据绑定
res.data.forEach(item => {// 把字符串的可选项,分割为数组,重新赋值给 attr_valsitem.attr_vals = item.attr_vals.length > 0 ? item.attr_vals.split(‘,') : []// 为每个数据行,添加自己的 tagInputVisible ,从而控制自己展开行中的输入框的显示与隐藏item.tagInputVisible = false// 把文本框中输入的值,双向绑定到 item.tagInputValue 上item.tagInputValue = ''
})
实现标签的添加和删除操作
const { data: res } = await this.$http.put(`categories/${this.cateId}/attributes/${row.attr_id}`,{attr_name: row.attr_name,attr_sel: row.attr_sel,attr_vals: row.attr_vals.join(' ')}
)
if (res.meta.status !== 200) {return this.$message.error('更新参数项失败!')
}
this.$message.success('更新参数项成功!')

实现动态参数与静态属性添加

  • 动态参数与静态属性表单重用

  • 添加动态参数与静态属性使用的是同一个接口,参数是一样的

const { data: res } = await this.$http.post(`categories/${this.cateId}/attributes`, {// 参数的名称attr_name: this.addForm.attr_name,// 参数类型 many onlyattr_sel: this.activeName
})
if (res.meta.status !== 201) return this.$message.error('添加参数失败!')
this.$message.success('添加参数成功!')

[Vue.js]实战 -- 电商项目(五)相关推荐

  1. [Vue.js]实战 -- 电商项目(一)

    项目目录 项目概述 项目初始化 登录/退出功能 主页布局 用户管理模块 权限管理模块 分类管理模块 参数管理模块 商品管理模块 订单管理模块 数据统计模块 项目概述 电商项目基本业务概述 电商后台管理 ...

  2. [Vue.js]实战 -- 电商项目(四)

    分类管理 商品分类概述 商品分类用于在购物时,快速找到所要购买的商品,可以通过电商平台主页直观的看到 商品分类列表 基本布局与数据获取 基本布局 面包屑导航区域 <!-- 面包屑导航区域 --& ...

  3. [Vue.js]实战 -- 电商项目(二)

    主页布局 整体布局 主页布局开始 引入官网的框架时,首先要在element.js中添加 import { Container,Header,Aside,Main } from 'element-ui' ...

  4. [Vue.js]实战 -- 电商项目(六)

    商品管理 商品管理概述 用于维护电商平台的商品信息 包括商品的类型.参数.图片.详情等信息.通过商品管理模块可以实现商品的添加.修改.展示和删除等功能 商品列表 实现商品列表布局效果 调用后台接口获取 ...

  5. [Vue.js]实战 -- 电商项目(八)

    数据统计 数据统计概述 用于统计电商平台运营过程的中的各种统计数据 通过直观的可视化方式展示出来,方便相关运营和管理人员查看 用户来源数据统计报表 Echarts 第三方可视化库的基本使用 安装ech ...

  6. [Vue.js]实战 -- 电商项目(三)

    权限管理 权限管理业务分析 通过权限管理模块控制不同的用户可以进行哪些操作,具体可以通过角色的方式进行控制,即每个用户分配一个特定的角色,角色包括不同的功能权限 权限列表展示 创建对应规格 在comp ...

  7. [Vue.js]实战 -- 电商项目(七)

    订单管理 订单管理概述 用于维护商品的订单信息 可以查看订单的商品信息.物流信息,并且可以根据实际的运营情况对订单做适当的调整. 订单列表 订单列表展示 订单数据加载 订单列表布局 const { d ...

  8. Vue实战电商系统-五商品管理

    Vue实战电商系统-五商品管理 商品管理 1.新建goods_cate子分支并上传码云 2.商品管理-商品分类 1.新建文件并配置路由 2.页面布局 3.获取分类列表数据 4.将数据渲染在树形表格控件 ...

  9. JS任务机制 - springboot实战电商项目mall4j

    springboot实战电商项目mall4j (https://gitee.com/gz-yami/mall4j) java商城系统源码 1.介绍 工作一段时间了,今天在这总结一下浏览器执行JS任务机 ...

最新文章

  1. iOS逆向(8)-Monkey、Logos
  2. 开发日记-20190602 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  3. Andriod --- JetPack (四):BaseObservable 与 ObservableField 双向绑定
  4. wifi 2.4g 5g 区别_wifi信号差,网速慢?可能是你没有配置好2.4G和5G WiFi
  5. Spring Cloud Gateway-ServerWebExchange核心方法与请求或者响应内容的修改
  6. android 6关闭防火墙,安卓手机如何关闭防火墙
  7. 含有5亿个整数的大文件,如果排序?
  8. python面试题(6)--- read、readline和readlines的区别
  9. 【LeetCode】剑指 Offer 58 - I. 翻转单词顺序
  10. Lucene的索引不跨平台
  11. 济南python工资一般多少-2020年济南学python好点的学校
  12. 修改mysql表前缀_使用phpMyAdmin批量修改Mysql数据表前缀的方法
  13. java+jdk+1.6.0+45+64_jdk1.6.0_45.tar.gz
  14. leetcode1037 有效的回旋镖(Java练习)
  15. 2016/7/7 设置wamp2.5 mysql密码 重点是mysql版本
  16. SIMULATE ANNEAL
  17. 关于rollup 和cude 举例浅分析
  18. lattice planner 规划详解
  19. godaddy空间如何建网站教程
  20. AESECB加密算法 C 语言代码实现

热门文章

  1. python链表节点的插入p.next curnode_leetcode刷题总结之链表
  2. centos 配置mysql环境变量_Centos7.1部署mysql-5.6.34(笔记)
  3. php 数组改成索引数组_PHP 自定义集合与数组规范
  4. 信安精品课:第2章网络攻击原理与常用方法精讲笔记
  5. OWASP Top 10关键点记录
  6. Oracle从零开始1——SQLplus
  7. 音游android平板,音游专题 - 有时候听歌远远不够,试试这些音游吧 - Android 应用 - 【最美应用】...
  8. python学生名片系统_基于python的学生信息管理系统!听说好多人的作业都是这个...
  9. 小汤学编程之JavaEE学习day04——EL表达式、JSTL
  10. C++ 数据抽象 封装 接口