• 2021年6月1日


    时间:2.7个小时左右

    代码:220行左右

    博客:1

    学习内容:商品分类

    <!-- 添加分类按钮区域 -->
    <el-row>
      <el-col>
        <el-button type="primary" @click="showAddCateDialog">添加分类</el-button>
      </el-col>
    </el-row>
    ......
    <!-- 添加分类对话框 -->
    <el-dialog title="添加分类" :visible.sync="addCateDialogVisible" width="50%"  @close="addCateDialogClosed">
      <!-- 添加分类表单 -->
      <el-form :model="addCateForm" :rules="addCateFormRules" ref="addCateFormRuleForm" label-width="100px">
        <el-form-item label="分类名称" prop="cat_name">
          <el-input v-model="addCateForm.cat_name"></el-input>
        </el-form-item>
        <el-form-item label="父级分类" prop="cat_pid">
          
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
        <el-button @click="addCateDialogVisible = false">取 消</el-button>
        <el-button type="primary" @click="addCate">确 定</el-button>
      </span>
    </el-dialog>
    
    
    //用来显示或隐藏添加分类对话框
    addCateDialogVisible: false,
    //添加分类的表单数据对象
    addCateForm:{
      //分类名称
      cat_name:'',
      //添加分类的父级id,0则表示父级为0.添加一级分类
      cat_pid:0,
      //添加分类的等级,0则表示添加一级分类
      cat_level:0
    },
    //添加分类校验规则
    addCateFormRules:{
      //验证规则
      cat_name:[ {required:true , message:'请输入分类名称',trigger:'blur'} ]
    },
    //保存1,2级父级分类的列表
    parentCateList:[]
    .......
    showAddCateDialog() {
      //调用getParentCateList获取分类列表
      this.getParentCateList()
      //显示添加分类对话框
      this.addCateDialogVisible = true
    },
    async getParentCateList(){
      //获取父级分类数据列表
      const { data: res } = await this.$http.get('categories', {
        params: {type:2}
      })
    
      if (res.meta.status !== 200) {
        return this.$message.error('获取商品分类列表数据失败')
      }
      this.parentCateList = res.data
    }
    ```
    
    添加级联菜单显示父级分类
    先导入Cascader组件,并注册
    然后添加使用级联菜单组件:
    ```
    <el-form-item label="父级分类" prop="cat_pid">
      <!-- expandTrigger='hover'(鼠标悬停触发级联) v-model(设置级联菜单绑定数据) :options(指定级联菜单数据源)  :props(用来配置数据显示的规则) 
      clearable(提供“X”号完成删除文本功能) change-on-select(是否可以选中任意一级的菜单) -->
      <el-cascader expandTrigger='hover' v-model="selectedKeys" :options="parentCateList" :props="cascaderProps" @change="parentCateChange" clearable change-on-select></el-cascader>
    </el-form-item>
    
    添加数据
    //配置级联菜单中数据如何展示
    cascaderProps:{
      value:'cat_id',
      label:'cat_name',
      children:'children',
      expandTrigger:'hover'
    },
    //绑定用户选择的分类值
    selectedKeys:[]
    .....
    methods:{
      .....
      parentCateChange(){
        //级联菜单中选择项发生变化时触发
        console.log(this.selectedKeys)
        //如果用户选择了父级分类
        if(this.selectedKeys.length > 0){
          //则将数组中的最后一项设置为父级分类
          this.addCateForm.cat_pid = this.selectedKeys[this.selectedKeys.length - 1]
          //level也要跟着发生变化
          this.addCateForm.cat_level = this.selectedKeys.length
          return
        }else{
          this.addCateForm.cat_pid = 0
          this.addCateForm.cat_level = 0
          return
        }
      },
      addCateDialogClosed(){
        //当关闭添加分类对话框时,重置表单
        this.$refs.addCateFormRef.resetFields()
        this.selectedKeys = [];
        this.addCateForm.cat_pid = 0
        this.addCateForm.cat_level = 0
      },
      addCate() {
        //点击确定,完成添加分类
        console.log(this.addCateForm)
        this.$refs.addCateFormRef.validate(async valid => {
          if (!valid) return
          //发送请求完成添加分类
          const { data: res } = await this.$http.post(
            'categories',
            this.addCateForm
          )
    
          if (res.meta.status !== 201) {
            return this.$message.error('添加分类失败')
          }
    
          this.$message.success('添加分类成功')
          this.getCateList()
          this.addCateDialogVisible = false
        })
      }
    }
  • 相关阅读:
    FreeSql学习笔记——11.LinqToSql
    前端实现阿里云oss直传 进度条
    Mysql授权用户 库名带横线的方法
    Clickhouse 单机版
    Linux OOM Killer
    git clone 失败 443 解决方法
    sentinel 基本原理
    sentinel 简介
    sentinel 中rule的加载过程
    vuex 重置清空所有数据(注意这里使用的Vuex4.x,3.x不可以这样实现重置数据)
  • 原文地址:https://www.cnblogs.com/j-y-s/p/14903368.html
Copyright © 2020-2023  润新知