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 { PageContainer } from '@/components/layout';
|
||||||
import { toast } from '@/components/common';
|
import { toast } from '@/components/common';
|
||||||
import { cn } from '@/utils/helpers';
|
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 type { RoleType, Authorization } from '@/types/authorization.types';
|
||||||
import { ROLE_TYPE_LABELS } from '@/types/authorization.types';
|
import { ROLE_TYPE_LABELS } from '@/types/authorization.types';
|
||||||
import styles from './authorization.module.scss';
|
import styles from './authorization.module.scss';
|
||||||
|
|
@ -50,6 +58,13 @@ export default function AuthorizationPage() {
|
||||||
// 撤销授权 mutation
|
// 撤销授权 mutation
|
||||||
const revokeMutation = useRevokeAuthorization();
|
const revokeMutation = useRevokeAuthorization();
|
||||||
|
|
||||||
|
// 创建授权 mutations
|
||||||
|
const grantCommunityMutation = useGrantCommunity();
|
||||||
|
const grantProvinceCompanyMutation = useGrantProvinceCompany();
|
||||||
|
const grantCityCompanyMutation = useGrantCityCompany();
|
||||||
|
const grantAuthProvinceCompanyMutation = useGrantAuthProvinceCompany();
|
||||||
|
const grantAuthCityCompanyMutation = useGrantAuthCityCompany();
|
||||||
|
|
||||||
// 根据状态筛选数据
|
// 根据状态筛选数据
|
||||||
const filteredData = useMemo(() => {
|
const filteredData = useMemo(() => {
|
||||||
if (!data?.items) return [];
|
if (!data?.items) return [];
|
||||||
|
|
@ -57,18 +72,85 @@ export default function AuthorizationPage() {
|
||||||
return data.items.filter(item => item.status === filterStatus);
|
return data.items.filter(item => item.status === filterStatus);
|
||||||
}, [data?.items, 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 = () => {
|
const handleCreate = async () => {
|
||||||
// TODO: 调用API创建授权
|
const { accountSequence, type, region, skipAssessment } = createForm;
|
||||||
console.log('创建授权:', createForm);
|
const userId = extractUserId(accountSequence);
|
||||||
toast.info('创建授权功能开发中');
|
|
||||||
setShowCreateModal(false);
|
try {
|
||||||
setCreateForm({
|
switch (type) {
|
||||||
accountSequence: '',
|
case 'COMMUNITY':
|
||||||
type: 'COMMUNITY',
|
await grantCommunityMutation.mutateAsync({
|
||||||
region: '',
|
userId,
|
||||||
skipAssessment: false,
|
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
|
<button
|
||||||
className={styles.modal__confirmBtn}
|
className={styles.modal__confirmBtn}
|
||||||
onClick={handleCreate}
|
onClick={handleCreate}
|
||||||
disabled={!createForm.accountSequence || !createForm.region}
|
disabled={!createForm.accountSequence || !createForm.region || isCreating}
|
||||||
>
|
>
|
||||||
确认创建
|
{isCreating ? '创建中...' : '确认创建'}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue