zoukankan      html  css  js  c++  java
  • 谷粒商城学习——P52商品服务-API-三级分类-新增效果

    这节主要讲了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 class="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>
    <style scoped>
    </style>
    View Code
  • 相关阅读:
    [solr]
    [solr]
    [Linux] CentOS 加入开机启动
    [Linux] VirtualBox
    [Eclipse]
    [JBoss]
    [solr]
    [solr]
    [solr]
    [solr]
  • 原文地址:https://www.cnblogs.com/yanan7890/p/14901459.html
Copyright © 2011-2022 走看看