Commit f8b8a311 by yuzhenWang

做了角色管理做到了修改

parent 884357e6
...@@ -58,3 +58,11 @@ export function delMenu(menuId) { ...@@ -58,3 +58,11 @@ export function delMenu(menuId) {
method: 'delete' method: 'delete'
}) })
} }
export function getMenuList(data) {
return request({
url: '/user/api//sysMenu/tree/list',
method: 'put',
data: data
})
}
import request from '@/utils/request' import request from '@/utils/request'
// 查询角色列表 // 查询角色列表
export function listRole(query) { export function listRole(data) {
return request({ return request({
url: '/system/role/list', url: '/user/api/sysRole/page',
method: 'get', method: 'post',
params: query data: data
}) })
} }
...@@ -117,3 +117,26 @@ export function deptTreeSelect(roleId) { ...@@ -117,3 +117,26 @@ export function deptTreeSelect(roleId) {
method: 'get' method: 'get'
}) })
} }
// 编辑角色状态
export function roleStatusChange(roleBizId, status) {
return request({
url: `/user/api/sysRole/edit/status?roleBizId=${roleBizId}&status=${status}`,
method: 'patch'
})
}
// 查询角色详情
export function getRoleDetail(roleBizId) {
return request({
url: `/user/api/sysRole/detail?roleBizId=${roleBizId}`,
method: 'get'
})
}
// 修改角色
export function roleUpdate(data) {
return request({
url: '/user/api/sysRole/edit',
method: 'put',
data: data
})
}
...@@ -289,7 +289,7 @@ ...@@ -289,7 +289,7 @@
</template> </template>
<script setup name="Menu"> <script setup name="Menu">
import { addMenu, delMenu, getMenu, listMenu, updateMenu } from "@/api/system/menu" import { addMenu, delMenu, getMenu, listMenu, updateMenu,getMenuList } from "@/api/system/menu"
import SvgIcon from "@/components/SvgIcon" import SvgIcon from "@/components/SvgIcon"
import IconSelect from "@/components/IconSelect" import IconSelect from "@/components/IconSelect"
......
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" :inline="true" label-width="68px"> <el-form
:model="queryParams"
ref="queryRef"
v-show="showSearch"
:inline="true"
label-width="68px"
>
<el-form-item label="角色名称" prop="roleName"> <el-form-item label="角色名称" prop="roleName">
<el-input <el-input
v-model="queryParams.roleName" v-model="queryParams.roleName"
...@@ -10,7 +16,7 @@ ...@@ -10,7 +16,7 @@
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="权限字符" prop="roleKey"> <!-- <el-form-item label="权限字符" prop="roleKey">
<el-input <el-input
v-model="queryParams.roleKey" v-model="queryParams.roleKey"
placeholder="请输入权限字符" placeholder="请输入权限字符"
...@@ -18,7 +24,7 @@ ...@@ -18,7 +24,7 @@
style="width: 240px" style="width: 240px"
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item> -->
<el-form-item label="状态" prop="status"> <el-form-item label="状态" prop="status">
<el-select <el-select
v-model="queryParams.status" v-model="queryParams.status"
...@@ -27,14 +33,14 @@ ...@@ -27,14 +33,14 @@
style="width: 240px" style="width: 240px"
> >
<el-option <el-option
v-for="dict in sys_normal_disable" v-for="dict in sys_status"
:key="dict.value" :key="dict.value"
:label="dict.label" :label="dict.label"
:value="dict.value" :value="Number(dict.value)"
/> />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="创建时间" style="width: 308px"> <!-- <el-form-item label="创建时间" style="width: 308px">
<el-date-picker <el-date-picker
v-model="dateRange" v-model="dateRange"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
...@@ -43,13 +49,13 @@ ...@@ -43,13 +49,13 @@
start-placeholder="开始日期" start-placeholder="开始日期"
end-placeholder="结束日期" end-placeholder="结束日期"
></el-date-picker> ></el-date-picker>
</el-form-item> </el-form-item> -->
<el-form-item> <el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button> <el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
<el-row :gutter="10" class="mb8"> <!-- <el-row :gutter="10" class="mb8">
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
type="primary" type="primary"
...@@ -57,7 +63,8 @@ ...@@ -57,7 +63,8 @@
icon="Plus" icon="Plus"
@click="handleAdd" @click="handleAdd"
v-hasPermi="['system:role:add']" v-hasPermi="['system:role:add']"
>新增</el-button> >新增</el-button
>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
...@@ -67,7 +74,8 @@ ...@@ -67,7 +74,8 @@
:disabled="single" :disabled="single"
@click="handleUpdate" @click="handleUpdate"
v-hasPermi="['system:role:edit']" v-hasPermi="['system:role:edit']"
>修改</el-button> >修改</el-button
>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
...@@ -77,7 +85,8 @@ ...@@ -77,7 +85,8 @@
:disabled="multiple" :disabled="multiple"
@click="handleDelete" @click="handleDelete"
v-hasPermi="['system:role:remove']" v-hasPermi="['system:role:remove']"
>删除</el-button> >删除</el-button
>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button <el-button
...@@ -86,25 +95,50 @@ ...@@ -86,25 +95,50 @@
icon="Download" icon="Download"
@click="handleExport" @click="handleExport"
v-hasPermi="['system:role:export']" v-hasPermi="['system:role:export']"
>导出</el-button> >导出</el-button
>
</el-col> </el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row> -->
<!-- 表格数据 --> <!-- 表格数据 -->
<el-table v-loading="loading" :data="roleList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="roleList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="角色编号" prop="roleId" width="120" />
<el-table-column label="角色名称" prop="roleName" :show-overflow-tooltip="true" width="150" /> <el-table-column label="角色名称" prop="roleName" :show-overflow-tooltip="true" width="150" />
<el-table-column label="权限字符" prop="roleKey" :show-overflow-tooltip="true" width="150" /> <el-table-column label="角色类型" prop="roleType" :show-overflow-tooltip="true" width="150">
<el-table-column label="显示顺序" prop="roleSort" width="100" /> <template #default="scope">
<dict-tag :options="sys_role_type" :value="scope.row.roleType" />
</template>
</el-table-column>
<el-table-column label="作用域" prop="scope" :show-overflow-tooltip="true" width="150">
<template #default="scope">
<dict-tag :options="sys_scope" :value="scope.row.scope" />
</template>
</el-table-column>
<el-table-column
label="租户名称"
prop="tenantName"
:show-overflow-tooltip="true"
width="150"
/>
<el-table-column
label="项目名称"
prop="projectName"
:show-overflow-tooltip="true"
width="150"
/>
<el-table-column label="状态" align="center" width="100"> <el-table-column label="状态" align="center" width="100">
<template #default="scope"> <template #default="scope">
<el-switch <el-switch
v-model="scope.row.status" v-model="scope.row.status"
active-value="0" :active-value="1"
inactive-value="1" :inactive-value="0"
@change="handleStatusChange(scope.row)" @click="
evt => {
evt.preventDefault()
handleStatusChange(scope.row)
}
"
></el-switch> ></el-switch>
</template> </template>
</el-table-column> </el-table-column>
...@@ -115,19 +149,49 @@ ...@@ -115,19 +149,49 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<el-tooltip content="修改" placement="top" v-if="scope.row.roleId !== 1"> <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:role:edit']"></el-button> >修改</el-button
>
<el-button link type="primary" icon="Delete">删除</el-button>
</template>
<!-- <template #default="scope">
<el-tooltip content="修改" placement="top">
<el-button
link
type="primary"
icon="Edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['system:role:edit']"
></el-button>
</el-tooltip> </el-tooltip>
<el-tooltip content="删除" placement="top" v-if="scope.row.roleId !== 1"> <el-tooltip content="删除" placement="top">
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:role:remove']"></el-button> <el-button
link
type="primary"
icon="Delete"
@click="handleDelete(scope.row)"
v-hasPermi="['system:role:remove']"
></el-button>
</el-tooltip> </el-tooltip>
<el-tooltip content="数据权限" placement="top" v-if="scope.row.roleId !== 1"> <el-tooltip content="数据权限" placement="top">
<el-button link type="primary" icon="CircleCheck" @click="handleDataScope(scope.row)" v-hasPermi="['system:role:edit']"></el-button> <el-button
link
type="primary"
icon="CircleCheck"
@click="handleDataScope(scope.row)"
v-hasPermi="['system:role:edit']"
></el-button>
</el-tooltip> </el-tooltip>
<el-tooltip content="分配用户" placement="top" v-if="scope.row.roleId !== 1"> <el-tooltip content="分配用户" placement="top">
<el-button link type="primary" icon="User" @click="handleAuthUser(scope.row)" v-hasPermi="['system:role:edit']"></el-button> <el-button
link
type="primary"
icon="User"
@click="handleAuthUser(scope.row)"
v-hasPermi="['system:role:edit']"
></el-button>
</el-tooltip> </el-tooltip>
</template> </template> -->
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -140,52 +204,90 @@ ...@@ -140,52 +204,90 @@
/> />
<!-- 添加或修改角色配置对话框 --> <!-- 添加或修改角色配置对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-dialog :title="title" v-model="open" width="800px" append-to-body>
<el-form ref="roleRef" :model="form" :rules="rules" label-width="100px"> <el-form ref="roleRef" :model="form" :rules="rules" label-width="100px">
<el-row>
<el-col :span="12">
<el-form-item label="角色名称" prop="roleName"> <el-form-item label="角色名称" prop="roleName">
<el-input v-model="form.roleName" placeholder="请输入角色名称" /> <el-input v-model="form.roleName" placeholder="请输入角色名称" maxlength="30" />
</el-form-item> </el-form-item>
<el-form-item prop="roleKey"> </el-col>
<template #label> <el-col :span="12">
<span> <el-form-item label="角色类型" prop="roleType">
<el-tooltip content="控制器中定义的权限字符,如:@PreAuthorize(`@ss.hasRole('admin')`)" placement="top"> <el-select v-model="form.roleType" placeholder="请选择角色类型">
<el-icon><question-filled /></el-icon> <el-option
</el-tooltip> v-for="dict in sys_role_type"
权限字符 :key="dict.value"
</span> :label="dict.label"
</template> :value="Number(dict.value)"
<el-input v-model="form.roleKey" placeholder="请输入权限字符" /> ></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="角色顺序" prop="roleSort"> </el-col>
<el-input-number v-model="form.roleSort" controls-position="right" :min="0" /> </el-row>
<el-row>
<el-col :span="12">
<el-form-item label="作用域" prop="scope">
<el-select v-model="form.scope" placeholder="请选择作用域">
<el-option
v-for="dict in sys_scope"
:key="dict.value"
:label="dict.label"
:value="Number(dict.value)"
></el-option>
</el-select>
</el-form-item> </el-form-item>
<el-form-item label="状态"> </el-col>
<el-col :span="12">
<el-form-item label="状态" prop="status">
<el-radio-group v-model="form.status"> <el-radio-group v-model="form.status">
<el-radio <el-radio
v-for="dict in sys_normal_disable" v-for="dict in sys_status"
:key="dict.value" :key="dict.value"
:value="dict.value" :value="Number(dict.value)"
>{{ dict.label }}</el-radio> >{{ dict.label }}</el-radio
>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
<el-form-item label="菜单权限"> </el-col>
<el-checkbox v-model="menuExpand" @change="handleCheckedTreeExpand($event, 'menu')">展开/折叠</el-checkbox> </el-row>
<el-checkbox v-model="menuNodeAll" @change="handleCheckedTreeNodeAll($event, 'menu')">全选/全不选</el-checkbox> <el-row>
<el-checkbox v-model="form.menuCheckStrictly" @change="handleCheckedTreeConnect($event, 'menu')">父子联动</el-checkbox> <el-col :span="12" v-if="form.scope == 3">
<el-tree <el-form-item label="所属项目" prop="projectBizId">
class="tree-border" <el-select v-model="form.projectBizId" placeholder="请选择项目">
:data="menuOptions" <el-option
show-checkbox v-for="dict in sys_scope"
ref="menuRef" :key="dict.value"
node-key="id" :label="dict.label"
:check-strictly="!form.menuCheckStrictly" :value="dict.value"
empty-text="加载中,请稍候" ></el-option>
:props="{ label: 'label', children: 'children' }" </el-select>
></el-tree>
</el-form-item> </el-form-item>
</el-col>
<el-col :span="12" v-if="form.scope == 2">
<el-form-item label="所属租户" prop="tenantBizId">
<el-select v-model="form.tenantBizId" placeholder="请选择租户">
<el-option
v-for="dict in sys_scope"
:key="dict.value"
:label="dict.label"
:value="dict.value"
></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="24">
<el-form-item label="备注"> <el-form-item label="备注">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容"></el-input> <el-input
v-model="form.description"
type="textarea"
placeholder="请输入内容"
></el-input>
</el-form-item> </el-form-item>
</el-col>
</el-row>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
...@@ -196,7 +298,7 @@ ...@@ -196,7 +298,7 @@
</el-dialog> </el-dialog>
<!-- 分配角色数据权限对话框 --> <!-- 分配角色数据权限对话框 -->
<el-dialog :title="title" v-model="openDataScope" width="500px" append-to-body> <el-dialog :title="title" v-model="openDataScope" width="800px" append-to-body>
<el-form :model="form" label-width="80px"> <el-form :model="form" label-width="80px">
<el-form-item label="角色名称"> <el-form-item label="角色名称">
<el-input v-model="form.roleName" :disabled="true" /> <el-input v-model="form.roleName" :disabled="true" />
...@@ -215,9 +317,17 @@ ...@@ -215,9 +317,17 @@
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="数据权限" v-show="form.dataScope == 2"> <el-form-item label="数据权限" v-show="form.dataScope == 2">
<el-checkbox v-model="deptExpand" @change="handleCheckedTreeExpand($event, 'dept')">展开/折叠</el-checkbox> <el-checkbox v-model="deptExpand" @change="handleCheckedTreeExpand($event, 'dept')"
<el-checkbox v-model="deptNodeAll" @change="handleCheckedTreeNodeAll($event, 'dept')">全选/全不选</el-checkbox> >展开/折叠</el-checkbox
<el-checkbox v-model="form.deptCheckStrictly" @change="handleCheckedTreeConnect($event, 'dept')">父子联动</el-checkbox> >
<el-checkbox v-model="deptNodeAll" @change="handleCheckedTreeNodeAll($event, 'dept')"
>全选/全不选</el-checkbox
>
<el-checkbox
v-model="form.deptCheckStrictly"
@change="handleCheckedTreeConnect($event, 'dept')"
>父子联动</el-checkbox
>
<el-tree <el-tree
class="tree-border" class="tree-border"
:data="deptOptions" :data="deptOptions"
...@@ -242,12 +352,29 @@ ...@@ -242,12 +352,29 @@
</template> </template>
<script setup name="Role"> <script setup name="Role">
import { addRole, changeRoleStatus, dataScope, delRole, getRole, listRole, updateRole, deptTreeSelect } from "@/api/system/role" import {
import { roleMenuTreeselect, treeselect as menuTreeselect } from "@/api/system/menu" addRole,
roleStatusChange,
dataScope,
delRole,
getRole,
listRole,
updateRole,
deptTreeSelect,
getRoleDetail,
roleUpdate
} from '@/api/system/role'
import { roleMenuTreeselect, treeselect as menuTreeselect } from '@/api/system/menu'
import useUserStore from '@/store/modules/user'
const userStore = useUserStore()
const router = useRouter() const router = useRouter()
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const { sys_normal_disable } = proxy.useDict("sys_normal_disable") const { sys_role_type, sys_scope, sys_status } = proxy.useDict(
'sys_role_type',
'sys_scope',
'sys_status'
)
const roleList = ref([]) const roleList = ref([])
const open = ref(false) const open = ref(false)
...@@ -257,7 +384,7 @@ const ids = ref([]) ...@@ -257,7 +384,7 @@ const ids = ref([])
const single = ref(true) const single = ref(true)
const multiple = ref(true) const multiple = ref(true)
const total = ref(0) const total = ref(0)
const title = ref("") const title = ref('')
const dateRange = ref([]) const dateRange = ref([])
const menuOptions = ref([]) const menuOptions = ref([])
const menuExpand = ref(false) const menuExpand = ref(false)
...@@ -271,11 +398,11 @@ const deptRef = ref(null) ...@@ -271,11 +398,11 @@ const deptRef = ref(null)
/** 数据范围选项*/ /** 数据范围选项*/
const dataScopeOptions = ref([ const dataScopeOptions = ref([
{ value: "1", label: "全部数据权限" }, { value: '1', label: '全部数据权限' },
{ value: "2", label: "自定数据权限" }, { value: '2', label: '自定数据权限' },
{ value: "3", label: "本部门数据权限" }, { value: '3', label: '本部门数据权限' },
{ value: "4", label: "本部门及以下数据权限" }, { value: '4', label: '本部门及以下数据权限' },
{ value: "5", label: "仅本人数据权限" } { value: '5', label: '仅本人数据权限' }
]) ])
const data = reactive({ const data = reactive({
...@@ -283,15 +410,19 @@ const data = reactive({ ...@@ -283,15 +410,19 @@ const data = reactive({
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
loginTenantBizId: userStore.currentTenant.apiLoginTenantInfoResponse.tenantBizId,
roleName: undefined, roleName: undefined,
roleKey: undefined, roleKey: undefined,
status: undefined status: undefined
}, },
rules: { rules: {
roleName: [{ required: true, message: "角色名称不能为空", trigger: "blur" }], roleName: [{ required: true, message: '角色名称不能为空', trigger: 'blur' }],
roleKey: [{ required: true, message: "权限字符不能为空", trigger: "blur" }], roleType: [{ required: true, message: '角色类型不能为空', trigger: 'blur' }],
roleSort: [{ required: true, message: "角色顺序不能为空", trigger: "blur" }] scope: [{ required: true, message: '作用域不能为空', trigger: 'blur' }],
}, status: [{ required: true, message: '状态不能为空', trigger: 'blur' }],
projectBizId: [{ required: true, message: '项目不能为空', trigger: 'blur' }],
tenantBizId: [{ required: true, message: '租户不能为空', trigger: 'blur' }]
}
}) })
const { queryParams, form, rules } = toRefs(data) const { queryParams, form, rules } = toRefs(data)
...@@ -299,10 +430,14 @@ const { queryParams, form, rules } = toRefs(data) ...@@ -299,10 +430,14 @@ const { queryParams, form, rules } = toRefs(data)
/** 查询角色列表 */ /** 查询角色列表 */
function getList() { function getList() {
loading.value = true loading.value = true
listRole(proxy.addDateRange(queryParams.value, dateRange.value)).then(response => { listRole(queryParams.value).then(response => {
roleList.value = response.rows if (response.code === 200) {
total.value = response.total roleList.value = response.data.records
total.value = response.data.total
loading.value = false loading.value = false
} else {
proxy.$modal.msgError(response.msg)
}
}) })
} }
...@@ -315,26 +450,34 @@ function handleQuery() { ...@@ -315,26 +450,34 @@ function handleQuery() {
/** 重置按钮操作 */ /** 重置按钮操作 */
function resetQuery() { function resetQuery() {
dateRange.value = [] dateRange.value = []
proxy.resetForm("queryRef") proxy.resetForm('queryRef')
handleQuery() handleQuery()
} }
/** 删除按钮操作 */ /** 删除按钮操作 */
function handleDelete(row) { function handleDelete(row) {
const roleIds = row.roleId || ids.value const roleIds = row.roleId || ids.value
proxy.$modal.confirm('是否确认删除角色编号为"' + roleIds + '"的数据项?').then(function () { proxy.$modal
.confirm('是否确认删除角色编号为"' + roleIds + '"的数据项?')
.then(function () {
return delRole(roleIds) return delRole(roleIds)
}).then(() => { })
.then(() => {
getList() getList()
proxy.$modal.msgSuccess("删除成功") proxy.$modal.msgSuccess('删除成功')
}).catch(() => {}) })
.catch(() => {})
} }
/** 导出按钮操作 */ /** 导出按钮操作 */
function handleExport() { function handleExport() {
proxy.download("system/role/export", { proxy.download(
...queryParams.value, 'system/role/export',
}, `role_${new Date().getTime()}.xlsx`) {
...queryParams.value
},
`role_${new Date().getTime()}.xlsx`
)
} }
/** 多选框选中数据 */ /** 多选框选中数据 */
...@@ -346,23 +489,36 @@ function handleSelectionChange(selection) { ...@@ -346,23 +489,36 @@ function handleSelectionChange(selection) {
/** 角色状态修改 */ /** 角色状态修改 */
function handleStatusChange(row) { function handleStatusChange(row) {
let text = row.status === "0" ? "启用" : "停用" console.log('row', row.status)
proxy.$modal.confirm('确认要"' + text + '""' + row.roleName + '"角色吗?').then(function () {
return changeRoleStatus(row.roleId, row.status) const newStatus = row.status === 0 ? 0 : 1 // 获取切换后的新状态
}).then(() => { const text = newStatus === 1 ? '停用' : '启用' // 根据新状态显示文本
proxy.$modal.msgSuccess(text + "成功") console.log('newStatus', newStatus)
}).catch(function () { proxy.$modal
row.status = row.status === "0" ? "1" : "0" .confirm(`确认要${text}"${row.roleName}"角色吗?`)
.then(function () {
return roleStatusChange(row.roleBizId, newStatus).then(() => {
proxy.$modal.msgSuccess(`${text}成功`)
// 请求成功后,更新状态
row.status = newStatus
getList()
})
})
.catch(() => {
// 操作取消时恢复原状态
row.status = row.status === 1 ? 0 : 1
// 用户取消操作,保持原状态不变
// 这里不需要做任何操作,因为switch会自动回滚
}) })
} }
/** 更多操作 */ /** 更多操作 */
function handleCommand(command, row) { function handleCommand(command, row) {
switch (command) { switch (command) {
case "handleDataScope": case 'handleDataScope':
handleDataScope(row) handleDataScope(row)
break break
case "handleAuthUser": case 'handleAuthUser':
handleAuthUser(row) handleAuthUser(row)
break break
default: default:
...@@ -372,7 +528,7 @@ function handleCommand(command, row) { ...@@ -372,7 +528,7 @@ function handleCommand(command, row) {
/** 分配用户 */ /** 分配用户 */
function handleAuthUser(row) { function handleAuthUser(row) {
router.push("/system/role-auth/user/" + row.roleId) router.push('/system/role-auth/user/' + row.roleId)
} }
/** 查询菜单树结构 */ /** 查询菜单树结构 */
...@@ -406,14 +562,14 @@ function reset() { ...@@ -406,14 +562,14 @@ function reset() {
roleName: undefined, roleName: undefined,
roleKey: undefined, roleKey: undefined,
roleSort: 0, roleSort: 0,
status: "0", status: '0',
menuIds: [], menuIds: [],
deptIds: [], deptIds: [],
menuCheckStrictly: true, menuCheckStrictly: true,
deptCheckStrictly: true, deptCheckStrictly: true,
remark: undefined remark: undefined
} }
proxy.resetForm("roleRef") proxy.resetForm('roleRef')
} }
/** 添加角色 */ /** 添加角色 */
...@@ -421,30 +577,22 @@ function handleAdd() { ...@@ -421,30 +577,22 @@ function handleAdd() {
reset() reset()
getMenuTreeselect() getMenuTreeselect()
open.value = true open.value = true
title.value = "添加角色" title.value = '添加角色'
} }
/** 修改角色 */ /** 修改角色 */
function handleUpdate(row) { function handleUpdate(row) {
reset() reset()
const roleId = row.roleId || ids.value const roleBizId = row.roleBizId
const roleMenu = getRoleMenuTreeselect(roleId) getRoleDetail(roleBizId).then(response => {
getRole(roleId).then(response => { if (response.code === 200) {
form.value = response.data form.value = response.data
form.value.roleSort = Number(form.value.roleSort)
open.value = true open.value = true
nextTick(() => { title.value = '修改角色'
roleMenu.then((res) => { } else {
let checkedKeys = res.checkedKeys proxy.$modal.msgError(response.msg)
checkedKeys.forEach((v) => { }
nextTick(() => {
menuRef.value.setChecked(v, true, false)
})
})
})
})
}) })
title.value = "修改角色"
} }
/** 根据角色ID查询菜单树结构 */ /** 根据角色ID查询菜单树结构 */
...@@ -465,12 +613,12 @@ function getDeptTree(roleId) { ...@@ -465,12 +613,12 @@ function getDeptTree(roleId) {
/** 树权限(展开/折叠)*/ /** 树权限(展开/折叠)*/
function handleCheckedTreeExpand(value, type) { function handleCheckedTreeExpand(value, type) {
if (type == "menu") { if (type == 'menu') {
let treeList = menuOptions.value let treeList = menuOptions.value
for (let i = 0; i < treeList.length; i++) { for (let i = 0; i < treeList.length; i++) {
menuRef.value.store.nodesMap[treeList[i].id].expanded = value menuRef.value.store.nodesMap[treeList[i].id].expanded = value
} }
} else if (type == "dept") { } else if (type == 'dept') {
let treeList = deptOptions.value let treeList = deptOptions.value
for (let i = 0; i < treeList.length; i++) { for (let i = 0; i < treeList.length; i++) {
deptRef.value.store.nodesMap[treeList[i].id].expanded = value deptRef.value.store.nodesMap[treeList[i].id].expanded = value
...@@ -480,18 +628,18 @@ function handleCheckedTreeExpand(value, type) { ...@@ -480,18 +628,18 @@ function handleCheckedTreeExpand(value, type) {
/** 树权限(全选/全不选) */ /** 树权限(全选/全不选) */
function handleCheckedTreeNodeAll(value, type) { function handleCheckedTreeNodeAll(value, type) {
if (type == "menu") { if (type == 'menu') {
menuRef.value.setCheckedNodes(value ? menuOptions.value : []) menuRef.value.setCheckedNodes(value ? menuOptions.value : [])
} else if (type == "dept") { } else if (type == 'dept') {
deptRef.value.setCheckedNodes(value ? deptOptions.value : []) deptRef.value.setCheckedNodes(value ? deptOptions.value : [])
} }
} }
/** 树权限(父子联动) */ /** 树权限(父子联动) */
function handleCheckedTreeConnect(value, type) { function handleCheckedTreeConnect(value, type) {
if (type == "menu") { if (type == 'menu') {
form.value.menuCheckStrictly = value ? true : false form.value.menuCheckStrictly = value ? true : false
} else if (type == "dept") { } else if (type == 'dept') {
form.value.deptCheckStrictly = value ? true : false form.value.deptCheckStrictly = value ? true : false
} }
} }
...@@ -508,22 +656,24 @@ function getMenuAllCheckedKeys() { ...@@ -508,22 +656,24 @@ function getMenuAllCheckedKeys() {
/** 提交按钮 */ /** 提交按钮 */
function submitForm() { function submitForm() {
proxy.$refs["roleRef"].validate(valid => { proxy.$refs['roleRef'].validate(valid => {
if (valid) { if (valid) {
if (form.value.roleId != undefined) { if (form.value.roleBizId != undefined) {
form.value.menuIds = getMenuAllCheckedKeys() roleUpdate(form.value).then(response => {
updateRole(form.value).then(response => { if (response.code === 200) {
proxy.$modal.msgSuccess("修改成功") proxy.$modal.msgSuccess('修改成功')
open.value = false open.value = false
getList() getList()
})
} else { } else {
form.value.menuIds = getMenuAllCheckedKeys() proxy.$modal.msgError(response.msg)
addRole(form.value).then(response => { }
proxy.$modal.msgSuccess("新增成功")
open.value = false
getList()
}) })
} else {
// addRole(form.value).then(response => {
// proxy.$modal.msgSuccess('新增成功')
// open.value = false
// getList()
// })
} }
} }
}) })
...@@ -537,7 +687,7 @@ function cancel() { ...@@ -537,7 +687,7 @@ function cancel() {
/** 选择角色权限范围触发 */ /** 选择角色权限范围触发 */
function dataScopeSelectChange(value) { function dataScopeSelectChange(value) {
if (value !== "2") { if (value !== '2') {
deptRef.value.setCheckedKeys([]) deptRef.value.setCheckedKeys([])
} }
} }
...@@ -559,7 +709,7 @@ function handleDataScope(row) { ...@@ -559,7 +709,7 @@ function handleDataScope(row) {
}) })
}) })
}) })
title.value = "分配数据权限" title.value = '分配数据权限'
} }
/** 提交按钮(数据权限) */ /** 提交按钮(数据权限) */
...@@ -567,7 +717,7 @@ function submitDataScope() { ...@@ -567,7 +717,7 @@ function submitDataScope() {
if (form.value.roleId != undefined) { if (form.value.roleId != undefined) {
form.value.deptIds = getDeptAllCheckedKeys() form.value.deptIds = getDeptAllCheckedKeys()
dataScope(form.value).then(response => { dataScope(form.value).then(response => {
proxy.$modal.msgSuccess("修改成功") proxy.$modal.msgSuccess('修改成功')
openDataScope.value = false openDataScope.value = false
getList() getList()
}) })
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment