fix: 1. 全局axios添加formData文件上传的检测,删除Content-Type让axios自动检测。

2. 完善入口模块管理的接口的对接。
3. 完善角色权限管理的接口对接和测试。
4. 完善主页的入口模块的图标的显示和图片的显示。
This commit is contained in:
2025-11-29 19:37:29 +08:00
parent 5600de413f
commit fb67f138dc
11 changed files with 290 additions and 164 deletions
+41 -24
View File
@@ -50,7 +50,7 @@ export const meta = () => {
function getDataScopeLabel(scope: string): string {
const map: Record<string, string> = {
'ALL': '全部数据',
'DEPT': '部门数据',
'DEPT': '地市级数据',
'SELF': '仅本人数据'
};
return map[scope] || scope;
@@ -314,13 +314,13 @@ function CreateRoleModal({ isOpen, onClose, onSuccess }: CreateRoleModalProps) {
disabled={loading}
>
<option value="SELF"></option>
<option value="DEPT"></option>
<option value="DEPT"></option>
<option value="ALL"></option>
</select>
<span className="form-hint">访</span>
</div>
<div className="form-group">
{/* <div className="form-group">
<label>优先级</label>
<input
type="number"
@@ -333,7 +333,7 @@ function CreateRoleModal({ isOpen, onClose, onSuccess }: CreateRoleModalProps) {
disabled={loading}
/>
<span className="form-hint">数字越小优先级越高,范围 1-100</span>
</div>
</div> */}
</form>
</Modal>
);
@@ -495,7 +495,7 @@ function EditRoleModal({ isOpen, onClose, onSuccess, role }: EditRoleModalProps)
disabled={loading || (role.is_system_role && role.role_key === 'provincial_admin')}
>
<option value="SELF"></option>
<option value="DEPT"></option>
<option value="DEPT"></option>
<option value="ALL"></option>
</select>
{role.is_system_role && role.role_key === 'provincial_admin' && (
@@ -503,7 +503,7 @@ function EditRoleModal({ isOpen, onClose, onSuccess, role }: EditRoleModalProps)
)}
</div>
<div className="form-group">
{/* <div className="form-group">
<label>优先级</label>
<input
type="number"
@@ -516,7 +516,7 @@ function EditRoleModal({ isOpen, onClose, onSuccess, role }: EditRoleModalProps)
disabled={loading}
/>
<span className="form-hint">数字越小优先级越高,范围 1-100</span>
</div>
</div> */}
</form>
</Modal>
);
@@ -632,8 +632,19 @@ function AssignUserModal({ isOpen, onClose, onSuccess, role, isCityAdmin, curren
assignUserRoles(userId, [role.id])
);
await Promise.all(promises);
const results = await Promise.all(promises);
// v3.4: 检查是否有失败的
const failedResults = results.filter(r => !r.success);
if (failedResults.length > 0) {
// 如果有失败的,显示第一个错误消息
const firstError = failedResults[0];
toastService.error(firstError.message);
setLoading(false);
return;
}
// 全部成功
toastService.success(`成功为 ${selectedUserIds.length} 个用户分配角色`);
resetState();
onSuccess();
@@ -733,7 +744,7 @@ function AssignUserModal({ isOpen, onClose, onSuccess, role, isCityAdmin, curren
<span>...</span>
</div>
) : (
<div className="users-checkbox-list">
<div className="users-checkbox-list" style={{ maxHeight: '400px', minHeight: '400px', overflow: 'auto' }}>
{filteredUsers.length > 0 ? (
filteredUsers.map(user => {
const userRoles = userRolesMap.get(user.id) || [];
@@ -778,6 +789,7 @@ function AssignUserModal({ isOpen, onClose, onSuccess, role, isCityAdmin, curren
</div>
<div className="user-meta">
@{user.username} {user.ou_name}
{user.area && `${user.area}`}
{user.phone_number && `${user.phone_number}`}
</div>
</div>
@@ -900,18 +912,19 @@ export default function RolePermissions() {
const filteredRoles = rolesData;
// v3.3: 根据用户地区过滤可见的用户列表
let filteredUsers = usersData;
if (isCityAdmin && currentUserArea) {
// 市级管理员只能看到同地区的用户(使用 area 字段)
filteredUsers = usersData.filter(user =>
user.area === currentUserArea
);
console.log('🔒 [RolePermissions v3.3] 市级管理员用户过滤:', {
当前地区: currentUserArea,
原始用户数: usersData.length,
过滤后用户数: filteredUsers.length
});
}
const filteredUsers = usersData;
// let filteredUsers = usersData;
// if (isCityAdmin && currentUserArea) {
// // 市级管理员只能看到同地区的用户(使用 area 字段)
// filteredUsers = usersData.filter(user =>
// user.area === currentUserArea
// );
// console.log('🔒 [RolePermissions v3.3] 市级管理员用户过滤:', {
// 当前地区: currentUserArea,
// 原始用户数: usersData.length,
// 过滤后用户数: filteredUsers.length
// });
// }
setRoles(filteredRoles);
setRoutes(routesData);
@@ -1507,10 +1520,10 @@ export default function RolePermissions() {
<i className="ri-database-line"></i>
{getDataScopeLabel(role.data_scope)}
</span>
<span className="priority">
{/* <span className="priority">
<i className="ri-sort-asc"></i>
优先级: {role.priority}
</span>
</span> */}
</div>
</div>
{!role.is_system_role && (
@@ -1635,7 +1648,11 @@ export default function RolePermissions() {
)}
</div>
<div className="user-username">@{user.username}</div>
<div className="user-org">{user.ou_name}</div>
<div className="user-org">
{/* {JSON.stringify(user)} */}
{user.ou_name}
{user.area && <span style={{ marginLeft: '8px', color: '#666' }}> {user.area}</span>}
</div>
<div className="user-contact">
{user.phone_number && (
<span>