董国庆
2025-05-29 5171ef076666056ad996c8cacdcb6f665e361741
实验师管理端角色权限
5个文件已修改
120 ■■■■■ 已修改文件
laboratory/src/views/system/role/add.vue 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/system/role/detail.vue 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/system/role/edit.vue 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/system/role/index.vue 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/system/role/service.js 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
laboratory/src/views/system/role/add.vue
@@ -37,7 +37,7 @@
          </div>
          <div class="sconed">
            <div class="subpage"
              v-if="(item.children.length > 0 && item.children[0].children.length > 0) || item.children[0].children.menuType != 'F'">
              v-if="item.children && item.children.length > 0 && item.children[0]">
              <div v-for="item1 in item.children" :key="item1.menuId" class="two">
                <div class="left">
                  <el-checkbox v-model="item1.selected" @change="(e) => {
@@ -119,15 +119,15 @@
    roleInfoFromUserId({ userId: 1 }).then(res => {
      if (this.$route.query.roleId) {
        getRoleInfo({ roleId: this.$route.query.roleId }).then(resp => {
          this.menu = this.setSelectedIds(res.data.data, resp.data.data.menus || []);
          this.menu = this.setSelectedIds(res.data || [], resp.menus || []);
          this.form = {
            roleName: resp.data.data.roleName,
            remark: resp.data.data.remark,
            roleId: resp.data.data.roleId
            roleName: resp.roleName || '',
            remark: resp.remark || '',
            roleId: resp.roleId
          }
        })
      } else {
        this.menu = res.data.data
        this.menu = res || []
      }
    })
  },
laboratory/src/views/system/role/detail.vue
@@ -66,12 +66,6 @@
            <el-form-item label="人员搜索">
              <el-input v-model="nickNameOrPhone" placeholder="请输入姓名/联系电话"></el-input>
            </el-form-item>
            <el-form-item label="所属部门">
              <el-select v-model="deptId" placeholder="请选择(多选)" multiple>
                <el-option v-for="item in deptList" :key="item.id" :label="item.deptName" :value="item.id">
                </el-option>
              </el-select>
            </el-form-item>
            <el-form-item label="登陆状态">
              <el-select v-model="status" placeholder="请选择">
                <el-option
@@ -82,7 +76,7 @@
            </el-form-item>
            <el-form-item>
              <el-button @click="reset">重置</el-button>
              <el-button type="primary" @click="onSubmit">查询</el-button>
              <el-button type="primary" @click="onSubmit" style="margin-left: 10px;">查询</el-button>
            </el-form-item>
          </div>
        </el-form>
@@ -94,11 +88,6 @@
          <el-table-column prop="nickName" label="姓名"></el-table-column>
          <el-table-column prop="phonenumber" label="联系电话">
          </el-table-column>
          <el-table-column prop="deptList" label="所属部门">
            <template slot-scope="{ row }">
              <el-tag v-for="(item, index) in row.deptList" :key="index">{{ item }}</el-tag>
            </template>
          </el-table-column>
          <el-table-column prop="roleName" label="角色">
          </el-table-column>
          <el-table-column prop="userName" label="登陆账号">
@@ -109,7 +98,7 @@
            <template slot-scope="{row}">
              <div class="status_class">
                <div :class="row.status == 0 ? 'green' : 'red'"></div>
                <div>{{ row.status == 0 ? '正常' : '停用' }}</div>
                <div>{{ row.status == 0 ? '启用' : '停用' }}</div>
                <div v-if="row.status == 1" style="cursor: pointer;" @click="dialogVisibleView = true, rowView = row">
                  <i class="el-icon-warning"></i>
                </div>
@@ -162,17 +151,18 @@
  created() {
    roleInfoFromUserId({ userId: 1 }).then(res => {
      getRoleInfo({ roleId: this.$route.query.roleId }).then(resp => {
        this.menu = this.setSelectedIds(res.data.data, resp.data.data.menus);
        this.form = {
          roleName: resp.data.data.roleName,
          remark: resp.data.data.remark,
          roleName: resp.roleName,
          remark: resp.remark,
        }
        this.menu = this.setSelectedIds(res, resp.menus);
      })
    })
    this.getListData()
    getDeptList().then((res) => {
      this.deptList = res.data.data
    })
    // getDeptList().then((res) => {
    //   this.deptList = res.data.data
    // })
  },
  mounted() { },
  methods: {
@@ -180,14 +170,15 @@
      let obj = {
        ...this.pagination,
        nickNameOrPhone: this.nickNameOrPhone,
        deptIds: this.deptId,
        status: this.status,
        roleIds: [this.$route.query.roleId]
      }
      this.listLoading = true
      const { data: { data: { records, total } } } = await getUserList(obj)
      this.data = records
      this.pagination.total = total
      getUserList(obj).then(res => {
        this.data = res.records
        this.pagination.total = res.total
      })
    },
    setSelectedIds(arr, selectKeyList) {
      function traverse(item) {
@@ -223,6 +214,11 @@
};
</script>
<style lang="less" scoped>
.el-checkbox__inner {
  background-color: #009688;
  border-color: #009688;
}
.header-title {
  font-size: 18px;
  font-weight: bold;
laboratory/src/views/system/role/edit.vue
@@ -119,15 +119,15 @@
    roleInfoFromUserId({ userId: 1 }).then(res => {
      if (this.$route.query.roleId) {
        getRoleInfo({ roleId: this.$route.query.roleId }).then(resp => {
          this.menu = this.setSelectedIds(res.data.data, resp.data.data.menus || []);
          this.menu = this.setSelectedIds(res, resp.menus || []);
          this.form = {
            roleName: resp.data.data.roleName,
            remark: resp.data.data.remark,
            roleId: resp.data.data.roleId
            roleName: resp.roleName,
            remark: resp.remark,
            roleId: resp.roleId
          }
        })
      } else {
        this.menu = res.data.data
        this.menu = res
      }
    })
  },
laboratory/src/views/system/role/index.vue
@@ -1,7 +1,7 @@
<template>
  <div class="list">
    <TableCustom :queryForm="pagination" :tableData="data" :total="pagination.total" @currentChange="handleCurrentChange"
      @sizeChange="handleSizeChange">
    <TableCustom :queryForm="pagination" :tableData="data" :total="pagination.total" :height="null"
      @handleCurrentChange="handleCurrentChange" @handleSizeChange="handleSizeChange">
      <template #search>
        <el-form inline>
          <el-form-item label="角色名称">
@@ -9,7 +9,7 @@
          </el-form-item>
          <el-form-item style="margin-left: 63px;">
            <el-button @click="reset">重置</el-button>
            <el-button type="primary" @click="onSubmit">查询</el-button>
            <el-button type="primary" @click="onSubmit" style="margin-left: 10px;">查询</el-button>
          </el-form-item>
        </el-form>
      </template>
@@ -19,14 +19,13 @@
      <template #table>
        <el-table-column type="index" width="55" label="序号"></el-table-column>
        <el-table-column prop="roleName" label="角色名称"></el-table-column>
        <el-table-column prop="roleNum" label="角色人数"></el-table-column>
        <el-table-column prop="userCount" label="角色人数"></el-table-column>
        <el-table-column prop="remark" label="备注"></el-table-column>
        <el-table-column prop="createTime" label="创建时间"></el-table-column>
        <el-table-column label="操作" width="300">
          <template slot-scope="{row}">
            <div>
              <el-button type="text"
                @click="$router.push(`/system/detail-role?roleId=${row.roleId}`)">详情</el-button>
              <el-button type="text" @click="$router.push(`/system/detail-role?roleId=${row.roleId}`)">详情</el-button>
              <el-button v-if="row.roleId != 1" type="text"
                @click="$router.push(`/system/edit-role?roleId=${row.roleId}`)">编辑</el-button>
              <el-button v-if="row.roleId != 1" type="text" @click="del(row)">删除</el-button>
@@ -63,7 +62,7 @@
  },
  watch: {},
  created() {
    // this.getListData()
    this.getListData()
  },
  mounted() { },
  methods: {
@@ -73,9 +72,12 @@
    delConfirm() {
      delRole(this.delId).then(() => {
        this.delShow = false
        this.disbRow = {}
        this.getListData()
        this.msgsuccess('删除成功')
      }).catch(err => {
        console.error('删除失败', err)
        this.delShow = false
        this.msgerror('删除失败')
      })
    },
    del(row) {
@@ -89,9 +91,19 @@
        pageSize: this.pagination.pageSize
      }
      this.listLoading = true
      const { data: { data: { records, total } } } = await getList(obj)
      this.data = records
      this.pagination.total = total
      try {
        getList(obj).then(res => {
          this.data = res.records
          this.pagination.total = res.total
        })
      } catch (error) {
        console.error('获取列表失败', error)
        this.msgerror('获取列表失败')
      } finally {
        this.listLoading = false
      }
    },
    reset() {
      this.roleName = ''
laboratory/src/views/system/role/service.js
@@ -12,7 +12,7 @@
// 编辑
export const edit = (data) => {
  return axios.put('/system/role', { ...data })
  return axios.post('/api/system/role/edit', { ...data })
}
// 删除
@@ -29,13 +29,23 @@
export const getRoleInfo = (params) => {
  return axios.get(`/system/role/roleInfo`, { params })
}
// 状态修改
export const changeStatus = (data) => {
  return axios.put(`/system/role/changeStatus`, { ...data })
}
// 角色数量统计
export const roleCount = (data) => {
  return axios.post(`/system/role/roleCount`, { ...data })
}
// 角色数量统计
export const listNotPage = (data) => {
  return axios.post(`/system/role/listNotPage`, { ...data })
}
// 列表
export const getUserList = (data) => {
  return axios.post('/system/user/list', { ...data })
}
export const getDeptList = (params) => {
  return axios.post('/t-dept/listAll')
}
// export const getDeptList = (params) => {
//   return axios.post('/t-dept/listAll')
// }