第十五章:分类修改功能
查询请求:/product/category/info/{catId}
请求参数:catId路径参数
响应数据示例:
{
"msg": "success",
"code": 0,
"data": {
"catId": 1,
"name": "图书、音像、电子书刊",
"parentCid": 0,
"catLevel": 1,
"showStatus": 1,
"sort": 0,
"icon": null,
"productUnit": null,
"productCount": 0
}
}
修改请求:/product/category/update
请求参数:
{
"catId": 1,
"name": "图书",
"icon": "xx",
"productUnit": "本"
}
响应数据示例:
{
"msg": "success",
"code": 0
}
操作数据库表:pms_category
1、修改页面
src\views\modules\product\category.vue
<template>
<div>
<!-- elemnetUI tree组件
:data="menus":绑定的数据
:props="defaultProps":要渲染的数据项
:expand-on-click-node="false":点击添加和删除时不触发展开事件
show-checkbox:显示单选框
node-key="catId":数据唯一性id
:default-expanded-keys="expandedkey":删除成功后,展开父节点
-->
<el-tree
:data="menus"
:props="defaultProps"
:expand-on-click-node="false"
show-checkbox
node-key="catId"
:default-expanded-keys="expandedkey"
>
<span class="custom-tree-node" slot-scope="{ node, data }">
<span>{{ node.label }}</span>
<span>
<!-- 当层级小于等于2时 才会出现添加按钮 -->
<el-button v-if="node.level<=2" type="text" size="mini" @click="() => append(data)">添加</el-button>
<!-- 修改按钮 -->
<el-button type="text" size="mini" @click="() => edit(data)">修改</el-button>
<!-- 当没有子节点时才会出现删除按钮 -->
<el-button
v-if="node.childNodes.length==0"
type="text"
size="mini"
@click="() => remove(node, data)"
>刪除</el-button>
</span>
</span>
</el-tree>
<!-- 添加分类组件 需要在最外层套一个div-->
<el-dialog :title="title" :visible.sync="dialogVisible" width="30%">
<el-form :model="category">
<el-form-item label="分类名称" :label-width="formLabelWidth">
<el-input v-model="category.name" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="图标" :label-width="formLabelWidth">
<el-input v-model="category.icon" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="计量单位" :label-width="formLabelWidth">
<el-input v-model="category.productUnit" autocomplete="off"></el-input>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="submitData()">确 定</el-button>
</span>
</el-dialog>
</div>
</template>
<script>
// elemnetUI tree组件的script
export default {
data() {
return {
//elemnetUI tree组件的数据改为null
menus: [],
// 删除成功后需要展开的节点
expandedkey: [],
// 为false 表示添加组件默认不显示
dialogVisible: false,
// 表单绑定对象
category: {
name: "",
parentCid: 0,
catLevel: 0,
showStatus: 1,
sort: 0,
productUnit: "",
icon: "",
catId: null //要修改数据的id
},
dialogType: "", //等于add是添加 等于edit时是修改
title: "", //弹出框的标题
defaultProps: {
// children为显示的子节点,必须返回的menus数组的属性key
children: "children",
// 要显示出来的名称,必须是返回menus数组的属性key
label: "name"
}
};
},
methods: {
//获取tree数据列表
getMenus() {
this.$http({
//请求的url
url: this.$http.adornUrl("/product/category/list/tree"),
//请求方式
method: "get"
//成功以后的对数据的处理,把数据打印测试 ({data}):解构表达式
}).then(({ data }) => {
console.log("成功获取数据:" + data.data);
// 把获取到的数据赋值给menus
this.menus = data.data;
});
},
submitData() {
if (this.dialogType == "add") {
this.addCategory();
}
if (this.dialogType == "edit") {
this.editCategory();
}
},
// 添加方法
append(data) {
// 修改为true 打开添加三级分类组件
this.dialogVisible = true;
//得到要添加对象的父id
this.category.parentCid = data.catId;
//得到要添加对象的层级 当前对象的层级+1
this.category.catLevel = data.catLevel * 1 + 1;
//等于add时时添加操作
this.dialogType = "add";
// 弹框的标题
this.title = "添加分类";
// 添加时初始哈form表单信息,否则点击修改后修改的的数据会显示出来
this.category.catId = null;
this.category.icon = "";
this.category.productUnit = "";
this.category.sort = 0;
this.category.showStatus = 1;
this.category.name = "";
},
// 添加三级分类的数据
addCategory() {
console.log("提交的三级分类数据", this.category);
this.$http({
url: this.$http.adornUrl("/product/category/save"),
method: "post",
data: this.$http.adornData(this.category, false)
//添加成功的调用
}).then(({ data }) => {
this.$message({
message: "菜单数据添加成功",
type: "success"
});
// 关闭添加组件
this.dialogVisible = false;
//刷新菜单
this.getMenus();
//添加成功后,把父节点展开进行赋值
this.expandedkey = [this.category.parentCid];
});
},
// 修改方法
edit(data) {
console.log("要修改的数据", data);
// 弹出修改对话框
this.dialogVisible = true;
//等于edit时是修改操作
this.dialogType = "edit";
// 弹框的标题
this.title = "修改分类";
// 从服务器获取最新的数据 进行修改
this.$http({
url: this.$http.adornUrl(`/product/category/info/${data.catId}`),
method: "get"
}).then(({ data }) => {
console.log("最新修改数据", data);
// 要修改的名称
this.category.name = data.data.name;
// 要修改的数据
this.category.catId = data.data.catId;
this.category.icon = data.data.icon;
this.category.productUnit = data.data.productUnit;
this.category.parentCid = data.data.parentCid;
});
},
editCategory() {
//解构表达式,指定要修改的字段
var { catId, name, icon, productUnit } = this.category;
var updatedata = {
catId: catId,
name: name,
icon: icon,
productUnit: productUnit
};
this.$http({
url: this.$http.adornUrl("/product/category/update"),
method: "post",
data: this.$http.adornData(updatedata, false)
}).then(({ data }) => {
this.$message({
message: "菜单数据修改成功",
type: "success"
});
// 关闭修改组件
this.dialogVisible = false;
//刷新菜单
this.getMenus();
//修改成功后,把父节点展开进行赋值
this.expandedkey = [this.category.parentCid];
});
},
// 删除方法 发送post请求
remove(node, data) {
//获取当前要删掉的id
var ids = [data.catId];
// 弹出删除提示框
this.$confirm(`要删除 ${data.name} 菜单数据, 是否继续?`, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(() => {
//确认删除
this.$http({
url: this.$http.adornUrl("/product/category/delete"),
method: "post",
data: this.$http.adornData(ids, false)
//删除成功的调用
}).then(({ data }) => {
this.$message({
message: "菜单数据删除成功",
type: "success"
});
//删除成功后重新调用获取菜单数据
this.getMenus();
// 删除成功后,把父节点展开进行赋值
this.expandedkey = [node.parent.data.catId];
});
}) //取消删除
.catch(() => {});
console.log(node);
}
},
//在组件刚被加载完调用获取tree数据的函数
created() {
this.getMenus();
}
};
</script>
<style>
</style>
2、点击修改时请求最新的修改数据
com.applesnt.onlinemall.product.controller.CategoryController
代码生成器自动生成的方法,需要把返回值key改成data即可使用
/**
* 信息
*/
@RequestMapping("/info/{catId}")
public R info(@PathVariable("catId") Long catId){
CategoryEntity category = categoryService.getById(catId);
return R.ok().put("data", category);
}
3、提交修改数据操作
com.applesnt.onlinemall.product.controller.CategoryController
代码生成器自动生成的方法,直接使用
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody CategoryEntity category){
categoryService.updateById(category);
return R.ok();
}

浙公网安备 33010602011771号