Fixiaobai
2023-08-23 71b0ce1621125802d9f66b7cf94bdabbe878c55d
角色管理
已修改1个文件
已添加1个文件
148 ■■■■ 文件已修改
src/api/laboratory/role.js 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/laboratory/role/index.vue 139 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/laboratory/role.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,9 @@
import request from '@/utils/request'
export function getMenusTree(params) {
    return request({
      url: '/role-manager/getMenusTree',
      method: 'get',
      params
    })
  }
src/views/laboratory/role/index.vue
@@ -4,72 +4,36 @@
          <div class="top-bar">
              <el-form ref="form" :inline="true" :model="searchData">
              <el-form-item label="角色名称:" class="sermargin">
                <el-input
                  v-model="searchData.roleName"
                  class="input-form"
                  placeholder="请输入角色名称"
                  style="width:250px"
                >
            <el-input v-model="searchData.roleName" class="input-form" placeholder="请输入角色名称" style="width:250px">
                </el-input>
              </el-form-item>
              <el-form-item label="权限:" class="sermargin">
                <el-input
                  v-model="searchData.permission"
                  class="input-form"
                  placeholder="请输入权限"
                  style="width:250px"
                >
            <el-input v-model="searchData.permission" class="input-form" placeholder="请输入权限" style="width:250px">
                </el-input>
              </el-form-item>
              <el-form-item class="rightBtn">
                <el-button type="primary" @click="search">查询</el-button>
                <el-button type="primary" plain @click="reset">重置</el-button>
            <el-button type="primary">查询</el-button>
            <el-button type="primary" plain>重置</el-button>
              </el-form-item>
              </el-form>
              <el-form>
                <el-form-item class="rightBtn">
                  <el-button type="primary" @click="addRole" icon="el-icon-plus">新增权限</el-button>
            <el-button type="primary" @click="addClickRole" icon="el-icon-plus">新增角色</el-button>
                </el-form-item>
              </el-form>
              </el-form>
          </div>
          <div class="library-table">
            <div class="table-box">
              <el-table
                :max-height="800"
                :cell-style="{textAlign: 'center'}"
          <el-table :max-height="800" :cell-style="{ textAlign: 'center' }"
                :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}"
                :data="roleTable"
                style="width: 100%"
              >
                <el-table-column
                  type="selection"
                  min-width="8%"
                />
                <el-table-column
                  prop="rolename"
                  label="角色名称"
                  min-width="20%"
                />
                <el-table-column
                  prop="permission"
                  label="权限"
                  min-width="20%"
                />
                <el-table-column
                  prop="create_time"
                  label="创建时间"
                  min-width="20%"
                />
                <el-table-column
                  prop="update_time"
                  label="更新时间"
                  min-width="20%"
                />
                <el-table-column
                  label="操作"
                  min-width="12%"
                >
            :data="roleTable" style="width: 100%">
            <el-table-column type="selection" min-width="8%" />
            <el-table-column prop="rolename" label="角色名称" min-width="20%" />
            <el-table-column prop="permission" label="权限" min-width="20%" />
            <el-table-column prop="create_time" label="创建时间" min-width="20%" />
            <el-table-column prop="update_time" label="更新时间" min-width="20%" />
            <el-table-column label="操作" min-width="12%">
                  <template slot-scope="scope">
                    <el-button type="text" size="small" >编辑</el-button>
                    <el-button type="text" size="small" >删除</el-button>
@@ -78,51 +42,52 @@
              </el-table>
              <!-- åˆ†é¡µå™¨ -->
              <div class="pagination">
                <el-pagination
                  @size-change="handleSizeChange"
                  @current-change="handleCurrentChange"
                  :current-page="currentPage"
                  :page-sizes="[5, 10, 20]"
                  :page-size="pageSize"
                  layout="total, sizes, prev, pager, next, jumper"
                  :total="total">
            <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
              :current-page="currentPage" :page-sizes="[5, 10, 20]" :page-size="pageSize"
              layout="total, sizes, prev, pager, next, jumper" :total="total">
                </el-pagination>
              </div>
            </div>
          </div>
      </div>
      <el-dialog title="修改密码" :visible.sync="dialogTableVisible" width="30%">
        <el-form :model="updateData" ref="updateData" label-position="right" label-width="100px">
          <el-form-item label="原密码:">
            <el-input style="width: 300px" v-model="updateData.oldPassWord" placeholder="请输入原密码" >
    <el-dialog title="新增角色" :visible.sync="dialogTableVisible" width="60%">
      <el-form :model="roleAdd" ref="roleAdd" label-position="right" label-width="100px">
        <el-form-item label="角色名:">
          <el-input style="width: 300px" v-model="roleAdd.roleName" placeholder="请输入角色名">
            </el-input>
          </el-form-item>
          <el-form-item label="新密码:">
            <el-input style="width: 300px" v-model="updateData.newPassWord" placeholder="请输入新密码">
            </el-input>
          </el-form-item>
          <el-form-item label="确认密码:">
            <el-input style="width: 300px" v-model="updateData.confirmPassWord" placeholder="再次输入密码">
            </el-input>
        <el-form-item label="功能选择:">
          <el-cascader size="medium " v-model="roleAdd.menuData" :options="menuInfo">
            <template slot-scope="{ node, data }">
              <span>{{ data.label }}</span>
              <span v-if="!node.isLeaf"> ({{  }}) </span>
            </template>
          </el-cascader>
          </el-form-item>
        </el-form>
        <span slot="footer" class="dialog-footer">
          <el-button @click="dialogTableVisible = false">取 æ¶ˆ</el-button>
          <el-button type="primary" @click="changePassword">ç¡® å®š</el-button>
        <el-button type="primary" @click="addRole">ç¡® å®š</el-button>
        </span>
      </el-dialog>
  </div>
</template>
<script>
import { getPlanPageList, getStandingPageList } from '@/api/laboratory/measure'
import { getMenusTree } from '@/api/laboratory/role'
export default {
  data() {
    return {
      props: { multiple: true },
      roleAdd: {
        roleName: null,
        menuData: null
      },
      searchData:{
        roleName: '',
        permission: ''
      },
      menuInfo: [],
      roleTable:[{
        rolename: '部长',
        permission: 'ROOT',
@@ -149,9 +114,33 @@
    
  },
  methods: {
    addRole(){
    async addClickRole() {
      let res = await getMenusTree();
      this.menuInfo = res.data
      this.menuInfo.forEach(item => {
        item.select = false
        item.add = false
        item.update = false
        item.delete = false
        if (item.children.length == 0) {
          delete item['children']
        } else {
          item.children.forEach(c => {
            c.select = false
            c.add = false
            c.update = false
            c.delete = false
            if (c.children.length == 0) {
              delete c['children']
            }
          })
        }
      })
      this.dialogTableVisible = true
      // console.log(this.dialogTableVisible)
    },
    addRole() {
      console.log(this.roleAdd);
    },
    // search(){},
    // reset(){},
@@ -170,20 +159,22 @@
</script>
<style scoped>
.top-bar{
    margin: -25px -15px;
    background: #fff;
    display: flex;
    justify-content: space-between;
    padding: 5px 24px 0px 24px;
    .sermargin{
      margin-right: 60px;
    }
  }
.rightBtn{
    margin-right: 50px
}
.library-table{
      background-color: #fff;
      flex: 1;
@@ -191,6 +182,7 @@
      margin-top: 40px;
      display: flex;
      flex-direction: column;
      .table-box{
          padding: 10px 20px;
          margin-top: 0px;
@@ -199,15 +191,16 @@
          /* padding: 20px 20px 10px 20px; */
          display: flex;
          flex-direction: column;
          .el-table {
            flex: 1;
          }
      }
      .pagination{
        display:flex;
        justify-content:end;
        margin-top: 20px
      }
    }
</style>