Commit 3097f94b by zhangxingmin

角色管理、菜单管理

parent d44aa23a
import request from '@/utils/request' import request from '@/utils/request'
// 查询菜单列表 // 查询菜单列表
export function listMenu(query) { export function listMenu(data) {
return request({ return request({
url: '/system/menu/list', url: '/user/api/sysMenu/page',
method: 'get', method: 'post',
params: query data: data
}) })
} }
// 查询菜单详细 // 查询菜单详细
export function getMenu(menuId) { export function getMenu(menuId) {
return request({ return request({
url: '/system/menu/' + menuId, url: '/user/api/sysMenu/detail?menuBizId=' + menuId,
method: 'get' method: 'get'
}) })
} }
...@@ -36,7 +36,7 @@ export function roleMenuTreeselect(roleId) { ...@@ -36,7 +36,7 @@ export function roleMenuTreeselect(roleId) {
// 新增菜单 // 新增菜单
export function addMenu(data) { export function addMenu(data) {
return request({ return request({
url: '/system/menu', url: '/user/api/sysMenu/add',
method: 'post', method: 'post',
data: data data: data
}) })
...@@ -45,7 +45,7 @@ export function addMenu(data) { ...@@ -45,7 +45,7 @@ export function addMenu(data) {
// 修改菜单 // 修改菜单
export function updateMenu(data) { export function updateMenu(data) {
return request({ return request({
url: '/system/menu', url: '/user/api/sysMenu/edit',
method: 'put', method: 'put',
data: data data: data
}) })
...@@ -58,3 +58,11 @@ export function delMenu(menuId) { ...@@ -58,3 +58,11 @@ export function delMenu(menuId) {
method: 'delete' method: 'delete'
}) })
} }
//作用域切换搜索
export function searchScopeList(data) {
return request({
url: '/user/api/sysUser/scope/page',
method: 'post',
data: data
})
}
...@@ -120,7 +120,6 @@ export function deptTreeSelect(roleId) { ...@@ -120,7 +120,6 @@ export function deptTreeSelect(roleId) {
//作用域切换搜索 //作用域切换搜索
export function searchScopeList(data) { export function searchScopeList(data) {
debugger
return request({ return request({
url: '/user/api/sysUser/scope/page', url: '/user/api/sysUser/scope/page',
method: 'post', method: 'post',
...@@ -129,7 +128,6 @@ export function searchScopeList(data) { ...@@ -129,7 +128,6 @@ export function searchScopeList(data) {
} }
// 修改项目状态 // 修改项目状态
export function changeProjectStatus(data) { export function changeProjectStatus(data) {
debugger
return request({ return request({
url: '/user/api/sysProject/edit/status', url: '/user/api/sysProject/edit/status',
method: 'patch', method: 'patch',
......
...@@ -113,7 +113,6 @@ export function addImportProjectMenuList(data) { ...@@ -113,7 +113,6 @@ export function addImportProjectMenuList(data) {
//分配角色-左侧待选列表 //分配角色-左侧待选列表
export function listLeftRole(data) { export function listLeftRole(data) {
debugger
return request({ return request({
url: '/user/api/relUserRole/candidate/project/userRolePage', url: '/user/api/relUserRole/candidate/project/userRolePage',
method: 'post', method: 'post',
......
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
})
}
// 查询角色详细
export function getRole(roleId) {
return request({
url: '/system/role/' + roleId,
method: 'get'
}) })
} }
// 新增角色 // 新增角色
export function addRole(data) { export function addRole(data) {
return request({ return request({
url: '/system/role', url: '/user/api/sysRole/add',
method: 'post', method: 'post',
data: data data: data
}) })
} }
// 修改角色 // 修改角色
export function updateRole(data) { export function roleUpdate(data) {
return request({
url: '/system/role',
method: 'put',
data: data
})
}
// 角色数据权限
export function dataScope(data) {
return request({
url: '/system/role/dataScope',
method: 'put',
data: data
})
}
// 角色状态修改
export function changeRoleStatus(roleId, status) {
const data = {
roleId,
status
}
return request({ return request({
url: '/system/role/changeStatus', url: '/user/api/sysRole/edit',
method: 'put', method: 'put',
data: data data: data
}) })
...@@ -65,55 +35,27 @@ export function delRole(roleId) { ...@@ -65,55 +35,27 @@ export function delRole(roleId) {
}) })
} }
// 查询角色已授权用户列表 // 编辑角色状态
export function allocatedUserList(query) { export function roleStatusChange(roleBizId, status) {
return request({ return request({
url: '/system/role/authUser/allocatedList', url: `/user/api/sysRole/edit/status?roleBizId=${roleBizId}&status=${status}`,
method: 'get', method: 'patch'
params: query
}) })
} }
// 查询角色未授权用户列表 // 查询角色详情
export function unallocatedUserList(query) { export function getRoleDetail(roleBizId) {
return request({ return request({
url: '/system/role/authUser/unallocatedList', url: `/user/api/sysRole/detail?roleBizId=${roleBizId}`,
method: 'get', method: 'get'
params: query
}) })
} }
// 取消用户授权角色 //作用域切换搜索
export function authUserCancel(data) { export function searchScopeList(data) {
return request({ return request({
url: '/system/role/authUser/cancel', url: '/user/api/sysUser/scope/page',
method: 'put', method: 'post',
data: data data: data
}) })
} }
// 批量取消用户授权角色
export function authUserCancelAll(data) {
return request({
url: '/system/role/authUser/cancelAll',
method: 'put',
params: data
})
}
// 授权用户选择
export function authUserSelectAll(data) {
return request({
url: '/system/role/authUser/selectAll',
method: 'put',
params: data
})
}
// 根据角色ID查询部门树结构
export function deptTreeSelect(roleId) {
return request({
url: '/system/role/deptTree/' + roleId,
method: 'get'
})
}
...@@ -149,7 +149,6 @@ export function addImportTenantMenuList(data) { ...@@ -149,7 +149,6 @@ export function addImportTenantMenuList(data) {
//分配角色-左侧待选列表 //分配角色-左侧待选列表
export function listLeftRole(data) { export function listLeftRole(data) {
debugger
return request({ return request({
url: '/user/api/relUserRole/candidate/tenant/userRolePage', url: '/user/api/relUserRole/candidate/tenant/userRolePage',
method: 'post', method: 'post',
......
...@@ -38,7 +38,6 @@ export function updateUser(data) { ...@@ -38,7 +38,6 @@ export function updateUser(data) {
// 用户状态修改 // 用户状态修改
export function changeUserStatus(data) { export function changeUserStatus(data) {
debugger
return request({ return request({
url: '/user/api/sysUser/edit/status', url: '/user/api/sysUser/edit/status',
method: 'patch', method: 'patch',
......
...@@ -55,7 +55,6 @@ const isCurrentTenant = (tenant) => { ...@@ -55,7 +55,6 @@ const isCurrentTenant = (tenant) => {
// 切换租户 // 切换租户
const handleTenantChange = async (tenant) => { const handleTenantChange = async (tenant) => {
if (!isCurrentTenant(tenant)) { if (!isCurrentTenant(tenant)) {
debugger
// 切换租户 // 切换租户
await userStore.switchTenant(tenant) await userStore.switchTenant(tenant)
......
...@@ -84,6 +84,12 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) { ...@@ -84,6 +84,12 @@ function filterAsyncRouter(asyncRouterMap, lastRouter = false, type = false) {
route.meta.title = route.menuName; route.meta.title = route.menuName;
route.meta.icon = route.icon; route.meta.icon = route.icon;
route.meta.isCache = route.isCache === 1; route.meta.isCache = route.isCache === 1;
//确保单子菜单的父菜单也显示
if (route.menuType === 1) {
route.alwaysShow = true; // 强制显示父菜单
}
// 新增:添加标签页显示属性(关键修改) // 新增:添加标签页显示属性(关键修改)
route.tagsView = true route.tagsView = true
route.hidden = route.isVisible === 0 route.hidden = route.isVisible === 0
......
...@@ -15,6 +15,7 @@ const useUserStore = defineStore( ...@@ -15,6 +15,7 @@ const useUserStore = defineStore(
name: '', name: '',
nickName: '', nickName: '',
avatar: '', avatar: '',
isSuperAdmin: 0,
roles: [], roles: [],
permissions: [], permissions: [],
tenants: [], // 新增租户列表 tenants: [], // 新增租户列表
...@@ -72,6 +73,7 @@ const useUserStore = defineStore( ...@@ -72,6 +73,7 @@ const useUserStore = defineStore(
this.name = user.userName this.name = user.userName
this.nickName = user.nickName this.nickName = user.nickName
this.avatar = avatar this.avatar = avatar
this.isSuperAdmin = user.isSuperAdmin
/* 初始密码提示 */ /* 初始密码提示 */
if(res.data.isDefaultModifyPwd) { if(res.data.isDefaultModifyPwd) {
......
...@@ -68,11 +68,14 @@ ...@@ -68,11 +68,14 @@
<el-table-column label="状态" align="center"> <el-table-column label="状态" align="center">
<template #default="scope"> <template #default="scope">
<el-switch <el-switch
v-if="(userStore.isSuperAdmin === 0 && scope.row.scope !== 1) || userStore.isSuperAdmin === 1"
v-model="scope.row.status" v-model="scope.row.status"
:active-value="1" :active-value="1"
:inactive-value="0" :inactive-value="0"
@change="(val) => handleStatusChange(scope.row, $event)" @change="(val) => handleStatusChange(scope.row, $event)"
></el-switch> ></el-switch>
<dict-tag :options="sys_status" :value="scope.row.status"
v-if="userStore.isSuperAdmin === 0 && scope.row.scope === 1"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="项目开始时间" align="center" prop="startTime"> <el-table-column label="项目开始时间" align="center" prop="startTime">
...@@ -87,10 +90,13 @@ ...@@ -87,10 +90,13 @@
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200px"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="200px">
<template #default="scope"> <template #default="scope">
<el-button link type="primary" icon="Edit" @click="handlePermission(scope.row)" >分配权限</el-button> <el-button link type="primary" icon="Edit" @click="handlePermission(scope.row)"
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" >修改</el-button> v-if="(userStore.isSuperAdmin === 0 && scope.row.scope !== 1) || userStore.isSuperAdmin === 1">分配权限</el-button>
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
v-if="(userStore.isSuperAdmin === 0 && scope.row.scope !== 1) || userStore.isSuperAdmin === 1">修改</el-button>
<!-- <el-button link type="primary" icon="View" @click="handleUpdate(scope.row)" >详情</el-button>--> <!-- <el-button link type="primary" icon="View" @click="handleUpdate(scope.row)" >详情</el-button>-->
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" >删除</el-button> <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
v-if="(userStore.isSuperAdmin === 0 && scope.row.scope !== 1) || userStore.isSuperAdmin === 1">删除</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
......
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" v-show="showSearch" :inline="true">
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input
v-model="queryParams.phonenumber"
placeholder="请输入手机号码"
clearable
style="width: 240px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Plus"
@click="openSelectUser"
v-hasPermi="['system:role:add']"
>添加用户</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="CircleClose"
:disabled="multiple"
@click="cancelAuthUserAll"
v-hasPermi="['system:role:remove']"
>批量取消授权</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="Close"
@click="handleClose"
>关闭</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
<el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
<el-table-column label="状态" align="center" prop="status">
<template #default="scope">
<dict-tag :options="sys_normal_disable" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="CircleClose" @click="cancelAuthUser(scope.row)" v-hasPermi="['system:role:remove']">取消授权</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<select-user ref="selectRef" :roleId="queryParams.roleId" @ok="handleQuery" />
</div>
</template>
<script setup name="AuthUser">
import selectUser from "./selectUser"
import { allocatedUserList, authUserCancel, authUserCancelAll } from "@/api/system/role"
const route = useRoute()
const { proxy } = getCurrentInstance()
const { sys_normal_disable } = proxy.useDict("sys_normal_disable")
const userList = ref([])
const loading = ref(true)
const showSearch = ref(true)
const multiple = ref(true)
const total = ref(0)
const userIds = ref([])
const queryParams = reactive({
pageNum: 1,
pageSize: 10,
roleId: route.params.roleId,
userName: undefined,
phonenumber: undefined,
})
/** 查询授权用户列表 */
function getList() {
loading.value = true
allocatedUserList(queryParams).then(response => {
userList.value = response.rows
total.value = response.total
loading.value = false
})
}
/** 返回按钮 */
function handleClose() {
const obj = { path: "/system/role" }
proxy.$tab.closeOpenPage(obj)
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.pageNum = 1
getList()
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef")
handleQuery()
}
/** 多选框选中数据 */
function handleSelectionChange(selection) {
userIds.value = selection.map(item => item.userId)
multiple.value = !selection.length
}
/** 打开授权用户表弹窗 */
function openSelectUser() {
proxy.$refs["selectRef"].show()
}
/** 取消授权按钮操作 */
function cancelAuthUser(row) {
proxy.$modal.confirm('确认要取消该用户"' + row.userName + '"角色吗?').then(function () {
return authUserCancel({ userId: row.userId, roleId: queryParams.roleId })
}).then(() => {
getList()
proxy.$modal.msgSuccess("取消授权成功")
}).catch(() => {})
}
/** 批量取消授权按钮操作 */
function cancelAuthUserAll(row) {
const roleId = queryParams.roleId
const uIds = userIds.value.join(",")
proxy.$modal.confirm("是否取消选中用户授权数据项?").then(function () {
return authUserCancelAll({ roleId: roleId, userIds: uIds })
}).then(() => {
getList()
proxy.$modal.msgSuccess("取消授权成功")
}).catch(() => {})
}
getList()
</script>
<template>
<!-- 授权用户 -->
<el-dialog title="选择用户" v-model="visible" width="800px" top="5vh" append-to-body>
<el-form :model="queryParams" ref="queryRef" :inline="true">
<el-form-item label="用户名称" prop="userName">
<el-input
v-model="queryParams.userName"
placeholder="请输入用户名称"
clearable
style="width: 180px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="手机号码" prop="phonenumber">
<el-input
v-model="queryParams.phonenumber"
placeholder="请输入手机号码"
clearable
style="width: 180px"
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row>
<el-table @row-click="clickRow" ref="refTable" :data="userList" @selection-change="handleSelectionChange" height="260px">
<el-table-column type="selection" width="55"></el-table-column>
<el-table-column label="用户名称" prop="userName" :show-overflow-tooltip="true" />
<el-table-column label="用户昵称" prop="nickName" :show-overflow-tooltip="true" />
<el-table-column label="邮箱" prop="email" :show-overflow-tooltip="true" />
<el-table-column label="手机" prop="phonenumber" :show-overflow-tooltip="true" />
<el-table-column label="状态" align="center" prop="status">
<template #default="scope">
<dict-tag :options="sys_normal_disable" :value="scope.row.status" />
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</el-row>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="handleSelectUser">确 定</el-button>
<el-button @click="visible = false">取 消</el-button>
</div>
</template>
</el-dialog>
</template>
<script setup name="SelectUser">
import { authUserSelectAll, unallocatedUserList } from "@/api/system/role"
const props = defineProps({
roleId: {
type: [Number, String]
}
})
const { proxy } = getCurrentInstance()
const { sys_normal_disable } = proxy.useDict("sys_normal_disable")
const userList = ref([])
const visible = ref(false)
const total = ref(0)
const userIds = ref([])
const queryParams = reactive({
pageNum: 1,
pageSize: 10,
roleId: undefined,
userName: undefined,
phonenumber: undefined
})
// 显示弹框
function show() {
queryParams.roleId = props.roleId
getList()
visible.value = true
}
/**选择行 */
function clickRow(row) {
proxy.$refs["refTable"].toggleRowSelection(row)
}
// 多选框选中数据
function handleSelectionChange(selection) {
userIds.value = selection.map(item => item.userId)
}
// 查询表数据
function getList() {
unallocatedUserList(queryParams).then(res => {
userList.value = res.rows
total.value = res.total
})
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.pageNum = 1
getList()
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef")
handleQuery()
}
const emit = defineEmits(["ok"])
/** 选择授权用户操作 */
function handleSelectUser() {
const roleId = queryParams.roleId
const uIds = userIds.value.join(",")
if (uIds == "") {
proxy.$modal.msgError("请选择要分配的用户")
return
}
authUserSelectAll({ roleId: roleId, userIds: uIds }).then(res => {
proxy.$modal.msgSuccess(res.msg)
visible.value = false
emit("ok")
})
}
defineExpose({
show,
})
</script>
...@@ -167,7 +167,9 @@ ...@@ -167,7 +167,9 @@
import { getToken } from "@/utils/auth" import { getToken } from "@/utils/auth"
import useAppStore from '@/store/modules/app' import useAppStore from '@/store/modules/app'
import { changeUserStatus, listTenant, resetUserPwd, delUser, getTenant, updateTenant, addTenant,changeTenantStatus } from "@/api/system/tenant" import { changeUserStatus, listTenant, resetUserPwd, delUser, getTenant, updateTenant, addTenant,changeTenantStatus } from "@/api/system/tenant"
import useUserStore from '@/store/modules/user'
const userStore = useUserStore()
const router = useRouter() const router = useRouter()
const appStore = useAppStore() const appStore = useAppStore()
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
...@@ -195,7 +197,7 @@ const data = reactive({ ...@@ -195,7 +197,7 @@ const data = reactive({
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
loginTenantBizId: "tenant_1001", loginTenantBizId: userStore.currentTenant.apiLoginTenantInfoResponse.tenantBizId,
tenantName: undefined, tenantName: undefined,
contactName: undefined, contactName: undefined,
contactPhone: undefined, contactPhone: undefined,
......
...@@ -75,7 +75,11 @@ ...@@ -75,7 +75,11 @@
<el-table v-loading="importTenantProjectListLoading" :data="importTenantProjectList" @selection-change="importTenantProjectListHandleSelectionChange"> <el-table v-loading="importTenantProjectListLoading" :data="importTenantProjectList" @selection-change="importTenantProjectListHandleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="项目名称" prop="projectName" /> <el-table-column label="项目名称" prop="projectName" />
<el-table-column label="作用域" prop="scope" /> <el-table-column prop="scope" label="作用域">
<template #default="scope">
<dict-tag :options="sys_scope" :value="scope.row.scope" />
</template>
</el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="importTenantProjectListTotal > 0" v-show="importTenantProjectListTotal > 0"
...@@ -1017,7 +1021,7 @@ const loadMenuTree = async () => { ...@@ -1017,7 +1021,7 @@ const loadMenuTree = async () => {
loadImportSelectedMenuList() // 加载选中的菜单列表,更新树勾选 loadImportSelectedMenuList() // 加载选中的菜单列表,更新树勾选
} catch (error) { } catch (error) {
console.error('加载菜单树失败:', error) console.error('加载菜单树失败:', error)
ElMessage.error('菜单加载失败') proxy.$modal.msgError('菜单加载失败')
} }
} }
// 修改加载选中菜单列表的逻辑 // 修改加载选中菜单列表的逻辑
...@@ -1046,7 +1050,7 @@ const loadImportSelectedMenuList = async () => { ...@@ -1046,7 +1050,7 @@ const loadImportSelectedMenuList = async () => {
} catch (error) { } catch (error) {
console.error('加载选中的菜单列表失败:', error); console.error('加载选中的菜单列表失败:', error);
ElMessage.error('加载选中的菜单列表失败'); proxy.$modal.msgError('加载选中的菜单列表失败');
// 异常时也要恢复严格模式状态 // 异常时也要恢复严格模式状态
isCheckStrictly.value = false; isCheckStrictly.value = false;
} }
...@@ -1068,11 +1072,11 @@ const saveImportSelectedMenuList = async () => { ...@@ -1068,11 +1072,11 @@ const saveImportSelectedMenuList = async () => {
}) })
getMenuList() getMenuList()
importTenantMenuListOpen.value = false importTenantMenuListOpen.value = false
ElMessage.success('更新成功') proxy.$modal.msgSuccess('更新成功')
} catch (error) { } catch (error) {
console.error('更新失败:', error) console.error('更新失败:', error)
ElMessage.error('更新失败') proxy.$modal.msgError('更新失败')
} }
} }
//========菜单-导入逻辑结束========= //========菜单-导入逻辑结束=========
...@@ -1324,7 +1328,7 @@ const loadFpMenuTree = async () => { ...@@ -1324,7 +1328,7 @@ const loadFpMenuTree = async () => {
loadSelectedFpMenuList() // 加载选中的菜单列表,更新树勾选 loadSelectedFpMenuList() // 加载选中的菜单列表,更新树勾选
} catch (error) { } catch (error) {
console.error('加载菜单树失败:', error) console.error('加载菜单树失败:', error)
ElMessage.error('菜单加载失败') proxy.$modal.msgError('菜单加载失败')
} }
} }
// 修改加载选中菜单列表的逻辑 // 修改加载选中菜单列表的逻辑
...@@ -1353,7 +1357,7 @@ const loadSelectedFpMenuList = async () => { ...@@ -1353,7 +1357,7 @@ const loadSelectedFpMenuList = async () => {
} catch (error) { } catch (error) {
console.error('加载选中的菜单列表失败:', error); console.error('加载选中的菜单列表失败:', error);
ElMessage.error('加载选中的菜单列表失败'); proxy.$modal.msgError('加载选中的菜单列表失败');
// 异常时也要恢复严格模式状态 // 异常时也要恢复严格模式状态
fpMenuIsCheckStrictly.value = false; fpMenuIsCheckStrictly.value = false;
} }
...@@ -1377,11 +1381,11 @@ const saveFpMenuList = async () => { ...@@ -1377,11 +1381,11 @@ const saveFpMenuList = async () => {
getRoleList() getRoleList()
fpMenuOpen.value = false fpMenuOpen.value = false
ElMessage.success('更新成功') proxy.$modal.msgSuccess('更新成功')
} catch (error) { } catch (error) {
console.error('更新失败:', error) console.error('更新失败:', error)
ElMessage.error('更新失败') proxy.$modal.msgError('更新失败')
} }
} }
//========分配菜单-导入逻辑结束========= //========分配菜单-导入逻辑结束=========
......
...@@ -132,9 +132,9 @@ ...@@ -132,9 +132,9 @@
<el-form-item label="账号" prop="userName"> <el-form-item label="账号" prop="userName">
<el-input v-model="form.userName" placeholder="请输入账号" /> <el-input v-model="form.userName" placeholder="请输入账号" />
</el-form-item> </el-form-item>
<!-- <el-form-item label="密码" prop="password">--> <el-form-item label="密码" prop="password" v-show="!form.userBizId">
<!-- <el-input v-model="form.password" placeholder="请输入密码" />--> <el-input v-model="form.password" placeholder="请输入密码" />
<!-- </el-form-item>--> </el-form-item>
<el-form-item label="姓名" prop="realName"> <el-form-item label="姓名" prop="realName">
<el-input v-model="form.realName" placeholder="请输入姓名" /> <el-input v-model="form.realName" placeholder="请输入姓名" />
</el-form-item> </el-form-item>
...@@ -318,9 +318,10 @@ function handleUpdatePwd(row) { ...@@ -318,9 +318,10 @@ function handleUpdatePwd(row) {
/** 添加和修改用户提交按钮 */ /** 添加和修改用户提交按钮 */
function submitForm() { function submitForm() {
debugger
proxy.$refs["userRef"].validate(valid => { proxy.$refs["userRef"].validate(valid => {
if (valid) { if (valid) {
if (form.value.userBizId != undefined) { if (form.value.userBizId) {
updateUser(form.value).then(response => { updateUser(form.value).then(response => {
proxy.$modal.msgSuccess("修改成功") proxy.$modal.msgSuccess("修改成功")
open.value = false open.value = false
......
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