弹出对话框:
对话框里面的表单数据
发送的请求:
控制对话框显示
<el-button type="primary" @click="addCateVisible=true">添加分类</el-button>
对话框内容
<!-- 点击按钮弹出添加分类的对话框 -->
<el-dialog title="添加分类" :visible.sync="addCateVisible" width="50%" @close="addDialogClose">
<!--分类 内容主题区域 -->
<!-- 表单数据 addFromRules验证规则 addFromRef索引-->
<el-form :model="addFrom" :rules="addFromRules" ref="addFromRef" label-width="100px">
<el-form-item label="分类名称:" prop="cateName">
<el-input v-model="addFrom.cateName"></el-input>
</el-form-item>
<el-form-item label="父级分类:">
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<!-- 底部按钮区域 取消按钮的时候隐藏对话框 -->
<el-button @click="addCateVisible= false">取 消</el-button>
<el-button type="primary" @click="addCateVisible= false">确 定</el-button>
</span>
</el-dialog>
验证规则和内容
addCateVisible:false,//控制对话框的显示隐藏
addFrom: {//添加角色的表单数据
roleName: '',//角色名称
roleDesc: ''//角色描述
},
addFrom: {//添加角色的表单数据
cateName: '',//分类名称
cat_pid:0,//分类父 ID 默认添加1级分类
cat_level: 0//父级分类 默认添加1级分类
},
addFromRules: {//验证规则
cateName: [
{ required: true, message: '请输入分类名称', trigger: 'blur' },
],
},
实现效果
由于父级分类那里是级联选择框 -之后设置
<template>
<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 class="box-card">
<el-row>
<el-col>
<el-button type="primary" @click="addCateVisible=true">添加分类</el-button>
</el-col>
</el-row>
<!-- 表格区域 tree-table和我们前面注册的自定义名称一样-->
<!-- data数据源cateList columns列配置 election-type除复选框 去除展开行expand-type show-index索引 index-text索引名称 border分割线 show-row-hover高亮效果-->
<tree-table :data="cateList" :columns="columns" :selection-type="false" :expand-type="false" show-index index-text="#" border :show-row-hover="false" class="treeTable">
<!-- 在内容节点定义模板 -->
<!-- 是否有效 -->
<template slot="isok" slot-scope="scope">
<i style="color: lightgreen;" class="el-icon-success" v-if="scope.row.cat_deleted===false"></i>
<i style="color: red;" class="el-icon-error" v-if="scope.row.cat_deleted===true"></i>
</template>
<!-- 是否排序 -->
<template slot="issort" slot-scope="scope">
<el-tag size="mini" v-if="scope.row.cat_level===0">一级</el-tag>
<el-tag type="success" size="mini" v-if="scope.row.cat_level===1">二级</el-tag>
<el-tag type="warning" size="mini" v-if="scope.row.cat_level===2">三级</el-tag>
</template>
<!-- 是否操作 -->
<template slot="isopt" slot-scope="scope">
<el-button type="primary" icon="el-icon-edit" size="mini">编辑</el-button>
<el-button type="danger" icon="el-icon-delete" size="mini">编辑</el-button>
</template>
</tree-table>
<!-- 分页区域 -->
<!-- current-page当前页码数 page-sizes当前每页显示多少条数据 layout 展示菜单项 -->
<!-- @size-change页码值发生改变 :current-page当前的页码值 :page-sizes 总共可选值 :page-size当前显示几条数据-->
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="queryInfo.pagenum"
:page-sizes="[3,5,10,15]"
:page-size="queryInfo.pagesize"
layout="total,sizes, prev, pager, next,jumper"
:total="total">
</el-pagination>
</el-card>
<!-- 点击按钮弹出添加分类的对话框 -->
<el-dialog title="添加分类" :visible.sync="addCateVisible" width="50%" @close="addDialogClose">
<!--分类 内容主题区域 -->
<!-- 表单数据 addFromRules验证规则 addFromRef索引-->
<el-form :model="addFrom" :rules="addFromRules" ref="addFromRef" label-width="100px">
<el-form-item label="分类名称:" prop="cateName">
<el-input v-model="addFrom.cateName"></el-input>
</el-form-item>
<el-form-item label="父级分类:">
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<!-- 底部按钮区域 取消按钮的时候隐藏对话框 -->
<el-button @click="addCateVisible= false">取 消</el-button>
<el-button type="primary" @click="addCateVisible= false">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
cateList: [],//商品分类的数据列表 默认为空
queryInfo: {//查询条件
type: 3,//3级分类
pagenum: 1,//当前页码值
pagesize: 5//每页显示5条数据
},
total: 0,//总数据条数
columns: [//表格各列的配置
{//列定义
label: '分类名称',//列标题名称
prop: 'cat_name',//对应列内容的属性名
width: '400px',
},
{
label: '是否有效',//列标题名称
width: '400px',
type:'template',//表示将当前列渲染成为模板列
template:'isok',//表示当前使用这一类使用的模板名称-再表格内容节点中使用
},
{
label: '排序',//列标题名称
width: '400px',
type:'template',//表示将当前列渲染成为模板列
template:'issort',//表示当前使用这一类使用的模板名称-再表格内容节点中使用
},
{
label: '操作',//列标题名称
width: '400px',
type:'template',//表示将当前列渲染成为模板列
template:'isopt',//表示当前使用这一类使用的模板名称-再表格内容节点中使用
},
],
addCateVisible:false,//控制对话框的显示隐藏
addFrom: {//添加角色的表单数据
roleName: '',//角色名称
roleDesc: ''//角色描述
},
addFrom: {//添加角色的表单数据
cateName: '',//分类名称
cat_pid:0,//分类父 ID 默认添加1级分类
cat_level: 0//父级分类 默认添加1级分类
},
addFromRules: {//验证规则
cateName: [
{ required: true, message: '请输入分类名称', trigger: 'blur' },
],
},
}
},
created() {//一开始进行获取数据
this.getCateList()//获取商品信息
},
methods: {
async getCateList() {//获取商品分类数据-涉及分页 查询条件
const { data: res } = await this.$http.get('categories', { params: this.queryInfo })
if (res.meta.status !== 200) return this.$message.error('获取商品分类数据失败')
//console.log(res.data) 测试
this.cateList = res.data.result//将商品分类数据赋值给cateList
this.total = res.data.total//为总数据条数赋值
},
handleCurrentChange(val) {//监听页码值改变的事件 val最新的页码值
this.queryInfo.pagenum=val//重新赋值
this.getCateList()//并且重新发送数据请求
},
handleSizeChange(val) { //切换每页显示条触发 拿到最新的
this.queryInfo.pagesize=val
this.getCateList()//并且重新发送数据请求
},
},
}
</script>
<style lang="less" scoped>
.treeTable{
margin-top: 15px;
}
</style>