feat(authorization): implement grant authorization functionality
在授权管理页面实现创建授权功能: - 导入所有授权创建 hooks (社区/省公司/市公司/省团队/市团队) - 添加 extractUserId 函数从 accountSequence 提取 userId (去掉首字母) - 实现 handleCreate 函数根据授权类型调用对应 API - 添加创建过程中的加载状态显示 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
9c17140b33
commit
1345b97303
|
|
@ -4,7 +4,15 @@ import { useState, useMemo } from 'react';
|
|||
import { PageContainer } from '@/components/layout';
|
||||
import { toast } from '@/components/common';
|
||||
import { cn } from '@/utils/helpers';
|
||||
import { useAuthorizations, useRevokeAuthorization } from '@/hooks/useAuthorizations';
|
||||
import {
|
||||
useAuthorizations,
|
||||
useRevokeAuthorization,
|
||||
useGrantCommunity,
|
||||
useGrantProvinceCompany,
|
||||
useGrantCityCompany,
|
||||
useGrantAuthProvinceCompany,
|
||||
useGrantAuthCityCompany,
|
||||
} from '@/hooks/useAuthorizations';
|
||||
import type { RoleType, Authorization } from '@/types/authorization.types';
|
||||
import { ROLE_TYPE_LABELS } from '@/types/authorization.types';
|
||||
import styles from './authorization.module.scss';
|
||||
|
|
@ -50,6 +58,13 @@ export default function AuthorizationPage() {
|
|||
// 撤销授权 mutation
|
||||
const revokeMutation = useRevokeAuthorization();
|
||||
|
||||
// 创建授权 mutations
|
||||
const grantCommunityMutation = useGrantCommunity();
|
||||
const grantProvinceCompanyMutation = useGrantProvinceCompany();
|
||||
const grantCityCompanyMutation = useGrantCityCompany();
|
||||
const grantAuthProvinceCompanyMutation = useGrantAuthProvinceCompany();
|
||||
const grantAuthCityCompanyMutation = useGrantAuthCityCompany();
|
||||
|
||||
// 根据状态筛选数据
|
||||
const filteredData = useMemo(() => {
|
||||
if (!data?.items) return [];
|
||||
|
|
@ -57,18 +72,85 @@ export default function AuthorizationPage() {
|
|||
return data.items.filter(item => item.status === filterStatus);
|
||||
}, [data?.items, filterStatus]);
|
||||
|
||||
// 从 accountSequence 提取 userId(去掉首字母)
|
||||
const extractUserId = (accountSequence: string): string => {
|
||||
return accountSequence.slice(1);
|
||||
};
|
||||
|
||||
// 判断是否有正在处理的创建请求
|
||||
const isCreating =
|
||||
grantCommunityMutation.isPending ||
|
||||
grantProvinceCompanyMutation.isPending ||
|
||||
grantCityCompanyMutation.isPending ||
|
||||
grantAuthProvinceCompanyMutation.isPending ||
|
||||
grantAuthCityCompanyMutation.isPending;
|
||||
|
||||
// 处理创建授权
|
||||
const handleCreate = () => {
|
||||
// TODO: 调用API创建授权
|
||||
console.log('创建授权:', createForm);
|
||||
toast.info('创建授权功能开发中');
|
||||
setShowCreateModal(false);
|
||||
setCreateForm({
|
||||
accountSequence: '',
|
||||
type: 'COMMUNITY',
|
||||
region: '',
|
||||
skipAssessment: false,
|
||||
});
|
||||
const handleCreate = async () => {
|
||||
const { accountSequence, type, region, skipAssessment } = createForm;
|
||||
const userId = extractUserId(accountSequence);
|
||||
|
||||
try {
|
||||
switch (type) {
|
||||
case 'COMMUNITY':
|
||||
await grantCommunityMutation.mutateAsync({
|
||||
userId,
|
||||
accountSequence,
|
||||
communityName: region,
|
||||
skipAssessment,
|
||||
});
|
||||
break;
|
||||
case 'PROVINCE_COMPANY':
|
||||
await grantProvinceCompanyMutation.mutateAsync({
|
||||
userId,
|
||||
accountSequence,
|
||||
provinceCode: region,
|
||||
provinceName: region,
|
||||
skipAssessment,
|
||||
});
|
||||
break;
|
||||
case 'CITY_COMPANY':
|
||||
await grantCityCompanyMutation.mutateAsync({
|
||||
userId,
|
||||
accountSequence,
|
||||
cityCode: region,
|
||||
cityName: region,
|
||||
skipAssessment,
|
||||
});
|
||||
break;
|
||||
case 'AUTH_PROVINCE_COMPANY':
|
||||
await grantAuthProvinceCompanyMutation.mutateAsync({
|
||||
userId,
|
||||
accountSequence,
|
||||
provinceCode: region,
|
||||
provinceName: region,
|
||||
skipAssessment,
|
||||
});
|
||||
break;
|
||||
case 'AUTH_CITY_COMPANY':
|
||||
await grantAuthCityCompanyMutation.mutateAsync({
|
||||
userId,
|
||||
accountSequence,
|
||||
cityCode: region,
|
||||
cityName: region,
|
||||
skipAssessment,
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
toast.success('授权创建成功');
|
||||
setShowCreateModal(false);
|
||||
setCreateForm({
|
||||
accountSequence: '',
|
||||
type: 'COMMUNITY',
|
||||
region: '',
|
||||
skipAssessment: false,
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('创建授权失败:', err);
|
||||
const errorMessage = err instanceof Error ? err.message : '创建授权失败';
|
||||
toast.error(errorMessage);
|
||||
}
|
||||
};
|
||||
|
||||
// 处理取消授权
|
||||
|
|
@ -509,9 +591,9 @@ export default function AuthorizationPage() {
|
|||
<button
|
||||
className={styles.modal__confirmBtn}
|
||||
onClick={handleCreate}
|
||||
disabled={!createForm.accountSequence || !createForm.region}
|
||||
disabled={!createForm.accountSequence || !createForm.region || isCreating}
|
||||
>
|
||||
确认创建
|
||||
{isCreating ? '创建中...' : '确认创建'}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Reference in New Issue