穀粒商城學習——P52商品服務-API-三級分類-新增效果
阿新 • • 發佈:2021-06-19
這節主要講了elementui的對話方塊,以及對話方塊結合form使用
關鍵程式碼:
<el-dialog title="提示" :visible.sync="dialogVisible" width="30%"> <el-form :model="category"> <el-form-item label="分類名稱"> <el-input v-model="category.name" 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="addCategory">確 定</el-button> </span> </el-dialog>
:visible.sync控制對話方塊是否顯示
<el-form繫結整個表單,el-input繫結輸入框
我的本節category.vue程式碼:
<template> <div> <el-tree :data="menus" :props="defaultProps" show-checkbox="" node-key="catId" :expand-on-click-node="false" :default-expanded-keys="expandedkey" > <span classView Code="custom-tree-node" slot-scope="{ node, data }"> <span>{{ node.label }}</span> <span> <el-button v-if="node.level <= 2" type="text" size="mini" @click="() => append(data)" > Append </el-button> <el-button v-if="node.childNodes.length == 0" type="text" size="mini" @click="() => remove(node, data)" > Delete </el-button> </span> </span> </el-tree> <el-dialog title="提示" :visible.sync="dialogVisible" width="30%"> <el-form :model="category"> <el-form-item label="分類名稱"> <el-input v-model="category.name" 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="addCategory">確 定</el-button> </span> </el-dialog> </div> </template> <script> //這裡可以匯入其他檔案(比如:元件,工具js,第三方外掛js,json檔案,圖片檔案等等) //例如:import《元件名稱》from'《元件路徑》'; export default { data() { return { category: { name: "", parentCid: 0, catLevel: 0, showStatus: 1, sort: 0 }, dialogVisible: false, expandedkey: [], menus: [], defaultProps: { children: "children", label: "name", }, }; }, created() { console.log(this.expandedkey); this.getMenus(); }, methods: { addCategory() { 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]; }); }, remove(node, data) { let ids = [data.catId]; console.log(ids); console.log(node); 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(); console.log(node.parent.data.catId); this.expandedkey = [node.parent.data.catId]; }); }) .catch(() => {}); }, append(data) { this.dialogVisible = true; this.category.parentCid = data.catId; this.category.catLevel = data.catLevel * 1 + 1; }, getMenus() { this.$http({ url: this.$http.adornUrl("/product/category/list/tree"), method: "get", }).then(({ data }) => { console.log("成功獲取選單", data.data); this.menus = data.data; console.log("thismenus", this.menus); }); }, }, }; </script> <stylescoped> </style>