云e办前端学习(八)权限组页面逻辑

前言

本系列博客基于B站的云e办管理系统,前端和后端我都自己敲了一遍,这里做一个学习记录。云e办的原始视频链接如下:https://www.bilibili.com/video/BV1Ai4y1P7Tk?p=1


<template>
  <div>
<!--    输入框-->
    <div class="permissMana">
      <el-input size="small" placeholder="请输入角色英文名" v-model="role.name">
        <template size="small" slot="prepend">Role_</template>
      </el-input>
      <el-input
        size="small"
        placeholder="请输入角色中文名"
        v-model="role.nameZh"
        @keydown.enter.native="doAddRole"
      >
      </el-input>
      <el-button size="small" type="primary" @click="doAddRole"
        >添加角色</el-button
      >
    </div>
    <div class="permissManaMain">
<!--      折叠面板/手风琴面板-->
<!--      activeName:初始化打开的面板-->
<!--      @change:展开手风琴激活事件-->
      <el-collapse v-model="activeName" accordion @change="change">
        <el-collapse-item
          :title="r.nameZh"
          :name="r.id"
          v-for="(r, index) in roles"
          :key="index"
        >
<!--          卡片列表-->
          <el-card class="box-card">
            <div slot="header" class="clearfix">
              <span>可访问权限</span>
<!--              删除按钮-->
              <el-button
                style="float: right; padding: 3px 0; color: #ff0000"
                icon="el-icon-delete"
                type="text"
                @click="doDeleteRole(r)"
              ></el-button>
            </div>
            <div>
<!--              展示列表/树形展示-->
              <el-tree
                show-checkbox
                ref="tree"
                :data="allMenus"
                :props="defaultProps"
                :default-checked-keys="selectedMenus"
                :key="index"
                node-key="id"
              ></el-tree>
              <div style="display: flex; justify-content: flex-end">
                <el-button size="mini" @click="cancelUpdate"
                  >取消修改</el-button
                >
                <el-button
                  size="mini"
                  type="primary"
                  @click="doUpdate(r.id, index)"
                  >确认修改</el-button
                >
              </div>
            </div>
          </el-card>
        </el-collapse-item>
      </el-collapse>
    </div>
  </div>
</template>

<script>
export default {
  name: "PermissMana",
  data() {
    return {
      role: {
        //英文名
        name: "",
        //中文名
        nameZh: "",
      },
      roles: [],
      allMenus: [],
      //显示菜单项的默认内容
      defaultProps: {
        children: "children",
        label: "name",
      },
      selectedMenus: [],
      activeName: -1,
    };
  },
  mounted() {
    this.initRoles();
  },
  methods: {
    doDeleteRole(role) {
      this.$confirm("删除[" + role.nameZh + "]角色, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.deleteRequest("/system/basic/permiss/role/" + role.id)
              .then((res) => {
            if (res) {
              this.initRoles();
            }
          });
        })
        .catch(() => {
          this.$message({
            type: "info",
            message: "已取消删除",
          });
        });
    },
    //添加权限组
    doAddRole() {
      if (this.role.name && this.role.nameZh) {
        this.postRequest("/system/basic/permiss/", this.role).then(
          (resp) => {
            if (resp) {
              this.initRoles();
              this.role.name = "";
              this.role.nameZh = "";
            }
          }
        );
      } else {
        this.$message.error("所有字段不能为空!");
      }
    },
    //取消修改,不初始化菜单
    cancelUpdate() {
      this.activeName = -1;
    },
    //更新权限组
    doUpdate(rid, index) {
      let tree = this.$refs.tree[index];
      let selectedKeys = tree.getCheckedKeys(true);
      let url = "/system/basic/permiss/?rid=" + rid;
      selectedKeys.forEach((key) => {
        url += "&mids=" + key;
      });
      this.putRequest(url).then((resp) => {
        if (resp) {
          this.initRoles();
          this.activeName = -1;
        }
      });
    },
    //激活手风琴面板触发,展示所有菜单项,展示当前选中菜单项
    change(rid) {
      if (rid) {
        this.selectedMenus = [];
        this.initAllMenus();
        this.initSelectedMenus(rid);
      }
    },
    initSelectedMenus(rid) {
      let url = "/system/basic/permiss/mid/" + rid;
      this.getRequest(url).then((resp) => {
        if (resp) {
          this.selectedMenus = resp;
        }
      })
    },
    initAllMenus() {
      this.getRequest("/system/basic/permiss/menus").then((resp) => {
        if (resp) {
          this.allMenus = resp;
        }
      });
    },
    initRoles() {
      this.getRequest("/system/basic/permiss/").then((resp) => {
        if (resp) {
          this.roles = resp;
        }
      });
    },
  },
};
</script>

<style>
.permissMana {
  display: flex;
  justify-content: flex-start;
}
.permissMana .el-input {
  width: 300px;
  margin-right: 6px;
}
.permissManaMain {
  margin-top: 10px;
  width: 700px;
}
</style>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的注册登录前端页面代码,包括三个不同的权限账户。 HTML代码: ```html <!DOCTYPE html> <html> <head> <title>注册/登录</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> </head> <body> <div class="container"> <div class="form"> <h2>欢迎使用我们的网站</h2> <form id="login-form"> <h3>登录</h3> <input type="text" name="username" placeholder="用户名" required> <input type="password" name="password" placeholder="密码" required> <select name="permission" required> <option value="" disabled selected>请选择权限</option> <option value="admin">管理员</option> <option value="user">普通用户</option> <option value="guest">游客</option> </select> <input type="submit" value="登录"> </form> <form id="register-form"> <h3>注册</h3> <input type="text" name="username" placeholder="用户名" required> <input type="password" name="password" placeholder="密码" required> <input type="password" name="confirm-password" placeholder="确认密码" required> <select name="permission" required> <option value="" disabled selected>请选择权限</option> <option value="admin">管理员</option> <option value="user">普通用户</option> <option value="guest">游客</option> </select> <input type="submit" value="注册"> </form> </div> </div> <script src="script.js"></script> </body> </html> ``` CSS代码: ```css * { margin: 0; padding: 0; box-sizing: border-box; } body { background-color: #f2f2f2; font-family: Arial, sans-serif; } .container { display: flex; justify-content: center; align-items: center; height: 100vh; } .form { background-color: #fff; padding: 20px; border-radius: 10px; box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.2); } h2 { margin-bottom: 20px; text-align: center; } h3 { margin-top: 10px; margin-bottom: 5px; } form { display: none; } input[type="text"], input[type="password"], select { display: block; margin: 10px 0; padding: 10px; width: 100%; border: none; border-radius: 5px; box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.2); } input[type="submit"] { display: block; margin: 10px 0; padding: 10px; width: 100%; background-color: #4CAF50; color: #fff; border: none; border-radius: 5px; cursor: pointer; transition: background-color 0.3s ease; } input[type="submit"]:hover { background-color: #3e8e41; } ``` JavaScript代码: ```javascript // 切换登录和注册表单 document.getElementById("login-form").style.display = "block"; document.getElementById("register-form").style.display = "none"; document.getElementById("login-form").addEventListener("submit", function(e) { e.preventDefault(); // 处理登录逻辑 let username = this.elements.username.value; let password = this.elements.password.value; let permission = this.elements.permission.value; login(username, password, permission); }); document.getElementById("register-form").addEventListener("submit", function(e) { e.preventDefault(); // 处理注册逻辑 let username = this.elements.username.value; let password = this.elements.password.value; let confirmPassword = this.elements["confirm-password"].value; let permission = this.elements.permission.value; register(username, password, confirmPassword, permission); }); // 登录函数 function login(username, password, permission) { // TODO: 发送登录请求 console.log(`登录信息:用户名=${username},密码=${password},权限=${permission}`); } // 注册函数 function register(username, password, confirmPassword, permission) { // TODO: 发送注册请求 console.log(`注册信息:用户名=${username},密码=${password},确认密码=${confirmPassword},权限=${permission}`); } ``` 这个前端页面包含两个表单,一个用于登录,一个用于注册。在登录表单中,用户需要输入用户名、密码和权限信息,然后点击登录按钮。在注册表单中,用户需要输入用户名、密码、确认密码和权限信息,然后点击注册按钮。在JavaScript代码中,我们定义了两个函数来处理登录和注册逻辑,这里只是简单地将信息打印到控制台,实际上应该发送请求到后端服务器进行验证和记录。 这个前端页面可以通过CSS进行样式调整,例如更改背景颜色、字体、间距等等。也可以通过JavaScript添加更多的逻辑,例如验证输入、显示错误信息、跳转页面等等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值