|
|
@@ -3,7 +3,7 @@ import { Search, Plus, RefreshCw, Edit2, Trash2, Download, Settings, Shield } fr
|
|
|
import { roleApi, RoleVO, PageParam } from '../api/Role';
|
|
|
import { toast } from 'sonner';
|
|
|
import { formatDateTimeFull } from '../utils/formatTime';
|
|
|
-import { getIntDictOptions, DICT_TYPE, getDictLabel, setDictOptions, DictDataType } from '../utils/dict';
|
|
|
+import { getIntDictOptions, DICT_TYPE, getDictLabel, getDictOptions, setDictOptions, DictDataType } from '../utils/dict';
|
|
|
import { dictDataApi } from '../api/DictData';
|
|
|
import { Modal, Button, Input, Space, Tooltip } from 'antd';
|
|
|
import { ExclamationCircleOutlined } from '@ant-design/icons';
|
|
|
@@ -35,26 +35,51 @@ export default function RoleManagement() {
|
|
|
// 加载字典数据
|
|
|
const loadDictData = async () => {
|
|
|
try {
|
|
|
- const response = await dictDataApi.getDictDataPage({
|
|
|
- pageNo: 1,
|
|
|
- pageSize: -1,
|
|
|
- dictType: DICT_TYPE.SYSTEM_ROLE_TYPE,
|
|
|
- });
|
|
|
- const data = (response as any)?.data || response;
|
|
|
- const dictList = data?.list || [];
|
|
|
- if (Array.isArray(dictList) && dictList.length > 0) {
|
|
|
- const dictOptions: DictDataType[] = dictList.map((item: any) => ({
|
|
|
- dictType: item.dictType,
|
|
|
- label: item.label,
|
|
|
- value: item.value,
|
|
|
- colorType: item.colorType || '',
|
|
|
- cssClass: item.cssClass || '',
|
|
|
- }));
|
|
|
- setDictOptions(DICT_TYPE.SYSTEM_ROLE_TYPE, dictOptions);
|
|
|
- console.log('RoleManagement: 获取角色类型字典成功', dictOptions);
|
|
|
+ // 并行加载角色类型和通用状态字典
|
|
|
+ const [roleTypeResponse, commonStatusResponse] = await Promise.all([
|
|
|
+ dictDataApi.getDictDataPage({
|
|
|
+ pageNo: 1,
|
|
|
+ pageSize: -1,
|
|
|
+ dictType: DICT_TYPE.SYSTEM_ROLE_TYPE,
|
|
|
+ }),
|
|
|
+ dictDataApi.getDictDataPage({
|
|
|
+ pageNo: 1,
|
|
|
+ pageSize: -1,
|
|
|
+ dictType: DICT_TYPE.COMMON_STATUS,
|
|
|
+ }),
|
|
|
+ ]);
|
|
|
+
|
|
|
+ // 处理角色类型字典
|
|
|
+ const roleTypeData = (roleTypeResponse as any)?.data || roleTypeResponse;
|
|
|
+ const roleTypeList = roleTypeData?.list || [];
|
|
|
+ if (Array.isArray(roleTypeList) && roleTypeList.length > 0) {
|
|
|
+ const roleTypeOptions: DictDataType[] = roleTypeList.map((item: any) => ({
|
|
|
+ dictType: item.dictType,
|
|
|
+ label: item.label,
|
|
|
+ value: item.value,
|
|
|
+ colorType: item.colorType || '',
|
|
|
+ cssClass: item.cssClass || '',
|
|
|
+ }));
|
|
|
+ setDictOptions(DICT_TYPE.SYSTEM_ROLE_TYPE, roleTypeOptions);
|
|
|
+ console.log('RoleManagement: 获取角色类型字典成功', roleTypeOptions);
|
|
|
+ }
|
|
|
+
|
|
|
+ // 处理通用状态字典
|
|
|
+ const commonStatusData = (commonStatusResponse as any)?.data || commonStatusResponse;
|
|
|
+ const commonStatusList = commonStatusData?.list || [];
|
|
|
+ if (Array.isArray(commonStatusList) && commonStatusList.length > 0) {
|
|
|
+ const commonStatusOptions: DictDataType[] = commonStatusList.map((item: any) => ({
|
|
|
+ dictType: item.dictType,
|
|
|
+ label: item.label,
|
|
|
+ value: item.value,
|
|
|
+ colorType: item.colorType || '',
|
|
|
+ cssClass: item.cssClass || '',
|
|
|
+ }));
|
|
|
+ setDictOptions(DICT_TYPE.COMMON_STATUS, commonStatusOptions);
|
|
|
+ console.log('RoleManagement: 获取通用状态字典成功', commonStatusOptions);
|
|
|
}
|
|
|
} catch (error) {
|
|
|
- console.error('加载角色类型字典数据失败:', error);
|
|
|
+ console.error('加载字典数据失败:', error);
|
|
|
}
|
|
|
};
|
|
|
|
|
|
@@ -196,16 +221,18 @@ export default function RoleManagement() {
|
|
|
};
|
|
|
|
|
|
|
|
|
- // 获取状态标签
|
|
|
+ // 获取状态标签(使用字典值)
|
|
|
const getStatusLabel = (status: number) => {
|
|
|
- // 角色管理:0=开启,1=关闭(与通用字典定义相反)
|
|
|
- return status === 0 ? t('role.enabled') : t('role.disabled');
|
|
|
+ return getDictLabel(DICT_TYPE.COMMON_STATUS, status) || '-';
|
|
|
};
|
|
|
|
|
|
- // 获取状态样式
|
|
|
+ // 获取状态样式(使用字典值)
|
|
|
const getStatusStyle = (status: number) => {
|
|
|
- return status === 0
|
|
|
- ? 'bg-green-100 text-green-700'
|
|
|
+ const statusLabel = getDictLabel(DICT_TYPE.COMMON_STATUS, status) || '-';
|
|
|
+ // 根据字典的 label 来判断颜色:开启/启用显示绿色,禁用/关闭显示灰色
|
|
|
+ const isEnabled = statusLabel === '开启' || statusLabel === '启用' || statusLabel === '正常';
|
|
|
+ return isEnabled
|
|
|
+ ? 'bg-green-100 text-green-700'
|
|
|
: 'bg-gray-100 text-gray-700';
|
|
|
};
|
|
|
|