This commit is contained in:
mmc
2026-05-06 14:04:01 +08:00
parent c3facf7f7e
commit 897c8dc497
3 changed files with 59 additions and 44 deletions

4
env.js
View File

@@ -9,8 +9,8 @@ const currentEnv = import.meta.env?.MODE || process.env.NODE_ENV;
// 环境配置映射
const envConfig = {
[ENV.DEV]: {
//baseURL: 'http://192.168.2.56:8081',//http://192.168.2.56:8081
baseURL: 'http://1.95.137.212:59015',//http://192.168.2.56:8081
baseURL: 'http://192.168.2.59:8081',//http://192.168.2.56:8081
//baseURL: 'http://1.95.137.212:59015',//http://192.168.2.56:8081
WS_URL: 'ws://192.168.2.56:9002/ws/',
},
[ENV.PROD]: {

View File

@@ -65,9 +65,11 @@ export default function StationManage() {
// ====================== 获取场站列表(分页) ======================
const getStationData = () => {
const params = {
pageNum: pagination.pageNum,
pageSize: pagination.pageSize
pageSize: pagination.pageSize,
orgId: userInfo?.orgId, // 根据用户所属组织过滤场站
};
getStationList(params).then(res => {

View File

@@ -46,6 +46,8 @@ export default function UserRolePage() {
const [roleDetail, setRoleDetail] = useState(null);
const [orgList, setOrgList] = useState([]);
const [siteList, setSiteList] = useState([]);
// ✅ 控制是否显示所属场站
const [showSite, setShowSite] = useState(true);
// ====================== 统一分页 ======================
const [rolePagination, setRolePagination] = useState({
@@ -107,6 +109,8 @@ export default function UserRolePage() {
const params = {
pageNum: userPagination.pageNum,
pageSize: userPagination.pageSize,
orgId: userInfo?.orgId,
siteId: userInfo?.siteId,
//userId: userInfo?.userId
};
getUser(params).then(res => {
@@ -126,7 +130,6 @@ export default function UserRolePage() {
pageNum: 1, pageSize: 1000,
}).then(res => {
if (res.code === 200) {
let sortedRoles = (res.data || []).sort((a, b) => (a.roleSort || 999) - (b.roleSort || 999));
setRolesOption(sortedRoles);
}
@@ -144,9 +147,7 @@ export default function UserRolePage() {
// ====================== 初始化加载 ======================
useEffect(() => {
getMenuData();
//getRoleById();
getOrgData();
}, []);
useEffect(() => {
@@ -250,7 +251,7 @@ export default function UserRolePage() {
menuIds: allMenuIds,
status: 1,
roleSort: values.roleSort || 1,
roleLevel: values.roleLevel // ✅ 提交用下划线
roleLevel: values.roleLevel
};
if (editRole) params.roleId = editRole.roleId;
@@ -259,7 +260,6 @@ export default function UserRolePage() {
if (res.code == 200) {
messageApi.success(editRole ? '编辑成功' : '新增成功');
setRoleModalVisible(false);
//getRoleById();
getRoleData();
getRoleForSelect();
} else messageApi.error(res.msg || '保存失败');
@@ -271,18 +271,27 @@ export default function UserRolePage() {
const handleAddUser = () => {
setCurrentUser(null);
setSiteList([]);
setShowSite(true); // ✅ 默认显示
form.resetFields();
setModalVisible(true);
};
const handleEditUser = (record) => {
setCurrentUser(record);
// ✅ 1. 先拿到当前用户的角色ID(优先取roles里的,兼容roleId字段)
const userRoleId = record.roles?.[0]?.roleId ?? record.roleId;
// ✅ 2. 从角色下拉选项里,找到匹配ID的「中文名称」
const targetRole = rolesOption.find(item => item.roleId == userRoleId);
// ✅ 3. 回填表单:roleIds 赋值「角色ID」,确保下拉框显示中文
form.setFieldsValue({
...record,
roleIds: record.roleId || (record.roles?.[0]?.roleId),
password: undefined, // 编辑不显示密码
roleIds: targetRole?.roleId ?? userRoleId, // 用找到的角色ID(确保匹配)
});
const isOrgAdmin = targetRole?.roleKey == 'manager';
setShowSite(!isOrgAdmin);
setSiteList([]);
if (record.orgId) {
getSiteByOrg(record.orgId);
@@ -351,7 +360,7 @@ export default function UserRolePage() {
if (currentUser) {
params.userId = currentUser.userId;
delete params.password; // 编辑不提交密码
delete params.password;
}
const api = currentUser ? editUser : addUser;
@@ -417,7 +426,6 @@ export default function UserRolePage() {
{
title: '操作', render: (_, r) => (
<Space>
{/* 编辑 - 蓝色主色 */}
<Button
type="text"
icon={<EditOutlined style={{ color: '#1890ff' }} />}
@@ -425,8 +433,6 @@ export default function UserRolePage() {
>
编辑
</Button>
{/* 删除 - 红色危险色 */}
<Popconfirm
onConfirm={() => handleDeleteUser(r.userId)}
title="确定删除该用户吗?"
@@ -439,8 +445,6 @@ export default function UserRolePage() {
删除
</Button>
</Popconfirm>
{/* 重置密码 - 橙色醒目色 */}
<Button
type="text"
icon={<UserOutlined style={{ color: '#faad14' }} />}
@@ -512,8 +516,6 @@ export default function UserRolePage() {
<Space direction="vertical" size={2}>
<Text type="secondary">权限:{r.roleKey}</Text>
<Text type="secondary">等级:{r.roleLevel || '-'}</Text>
{/*<Text type="secondary">排序:{r.roleSort || '-'}</Text>
<Text type="secondary">状态:{r.status == 1 ? '正常' : '停用'}</Text>*/}
{r.roleKey == "admin1" && <Tag color="red">超级管理员</Tag>}
</Space>
}
@@ -633,7 +635,19 @@ export default function UserRolePage() {
<Row gutter={16}>
<Col span={12}>
<Form.Item name="roleIds" label="分配角色" rules={[{ required: true }]}>
<Select placeholder="选择角色">
<Select
placeholder="选择角色"
onChange={(val) => {
// ✅ 选择角色时判断是否为机构管理员
const role = rolesOption.find(item => item.roleId == val);
if (role?.roleKey == 'manager') {
setShowSite(false);
form.setFieldsValue({ siteId: null });
} else {
setShowSite(true);
}
}}
>
{rolesOption.map(i => <Select.Option key={i.roleId} value={i.roleId}>{i.roleName}</Select.Option>)}
</Select>
</Form.Item>
@@ -659,36 +673,35 @@ export default function UserRolePage() {
</Form.Item>
</Col>
<>
<Col span={12}>
<Form.Item name="orgId" label="所属组织">
<Select
placeholder="请选择组织"
allowClear
onChange={(val) => {
getSiteByOrg(val);
form.setFieldsValue({ siteId: null });
}}
>
{orgList.map(item => (
<Select.Option key={item.id} value={item.id}>{item.orgName}</Select.Option>
))}
</Select>
</Form.Item>
</Col>
{/* ✅ 机构管理员不显示所属场站 */}
{showSite && siteList.length > 0 && (
<Col span={12}>
<Form.Item name="orgId" label="所属组织">
<Select
placeholder="请选择组织"
allowClear
onChange={(val) => {
getSiteByOrg(val);
form.setFieldsValue({ siteId: null });
}}
>
{orgList.map(item => (
<Select.Option key={item.id} value={item.id}>{item.orgName}</Select.Option>
<Form.Item name="siteId" label="所属场站">
<Select placeholder="请选择场站" allowClear>
{siteList.map(item => (
<Select.Option key={item.id} value={item.id}>{item.siteName}</Select.Option>
))}
</Select>
</Form.Item>
</Col>
{siteList.length > 0 && (
<Col span={12}>
<Form.Item name="siteId" label="所属场站">
<Select placeholder="请选择场站" allowClear>
{siteList.map(item => (
<Select.Option key={item.id} value={item.id}>{item.siteName}</Select.Option>
))}
</Select>
</Form.Item>
</Col>
)}
</>
)}
</Row>
</Form>
</Modal>