完善卷宗和合同的数据隔离的效果
This commit is contained in:
@@ -34,6 +34,7 @@ export interface RulesQueryParams {
|
||||
keyword?: string;
|
||||
orderBy?: string;
|
||||
orderDirection?: 'asc' | 'desc';
|
||||
reviewType?: string; // 添加 reviewType 参数,值为 contract 或 record
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -162,7 +163,8 @@ export async function getRulesList(params: RulesQueryParams): Promise<{data: Rul
|
||||
isActive,
|
||||
keyword,
|
||||
orderBy = 'created_at',
|
||||
orderDirection = 'desc'
|
||||
orderDirection = 'desc',
|
||||
reviewType
|
||||
} = params;
|
||||
|
||||
// 构建PostgrestParams参数
|
||||
@@ -204,6 +206,46 @@ export async function getRulesList(params: RulesQueryParams): Promise<{data: Rul
|
||||
postgrestParams.filter!['is_enabled'] = `eq.${isActive}`;
|
||||
}
|
||||
|
||||
// 根据reviewType添加过滤条件
|
||||
if (reviewType) {
|
||||
try {
|
||||
// 先获取所有评查点组数据,用于找到对应的pid
|
||||
const groupsAllResponse = await postgrestGet<{code: number; msg: string; data: Array<{id: number; pid: number}>}>('evaluation_point_groups', {
|
||||
select: 'id,pid'
|
||||
});
|
||||
|
||||
let groups: Array<{id: number; pid: number}> = [];
|
||||
|
||||
if (!groupsAllResponse.error) {
|
||||
if (groupsAllResponse.data && 'code' in groupsAllResponse.data && groupsAllResponse.data.data) {
|
||||
groups = groupsAllResponse.data.data;
|
||||
} else if (Array.isArray(groupsAllResponse.data)) {
|
||||
groups = groupsAllResponse.data;
|
||||
}
|
||||
}
|
||||
|
||||
// 根据reviewType过滤pid
|
||||
let pidList: number[] = [];
|
||||
|
||||
if (reviewType === 'contract') {
|
||||
// 合同类型,找到所有pid=3的评查点组
|
||||
const contractGroups = groups.filter(g => g.pid === 3).map(g => g.id);
|
||||
pidList = contractGroups;
|
||||
} else if (reviewType === 'record') {
|
||||
// 卷宗类型,找到所有pid=1或pid=2的评查点组
|
||||
const recordGroups = groups.filter(g => g.pid === 1 || g.pid === 2).map(g => g.id);
|
||||
pidList = recordGroups;
|
||||
}
|
||||
|
||||
// 如果有过滤的组id,则添加到查询条件中
|
||||
if (pidList.length > 0) {
|
||||
postgrestParams.filter!['evaluation_point_groups_id'] = `in.(${pidList.join(',')})`;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取评查点组数据出错:', error);
|
||||
}
|
||||
}
|
||||
|
||||
// 如果指定了评查点类型ID,需要先查询该类型下的所有规则组ID
|
||||
if (ruleType) {
|
||||
try {
|
||||
@@ -790,9 +832,10 @@ export interface RuleGroup {
|
||||
|
||||
/**
|
||||
* 获取评查点类型列表
|
||||
* @param reviewType 评查类型,contract表示合同,record表示卷宗
|
||||
* @returns 评查点类型列表
|
||||
*/
|
||||
export async function getRuleTypes(): Promise<{data: RuleType[]; error?: never} | {data?: never; error: string; status?: number}> {
|
||||
export async function getRuleTypes(reviewType?: string): Promise<{data: RuleType[]; error?: never} | {data?: never; error: string; status?: number}> {
|
||||
try {
|
||||
// 构建PostgrestParams参数
|
||||
const postgrestParams: PostgrestParams = {
|
||||
@@ -810,6 +853,15 @@ export async function getRuleTypes(): Promise<{data: RuleType[]; error?: never}
|
||||
}
|
||||
};
|
||||
|
||||
// 根据 reviewType 添加过滤条件
|
||||
if (reviewType === 'contract') {
|
||||
// 如果是合同类型,只加载id=3的评查点类型
|
||||
postgrestParams.filter!['id'] = 'eq.3';
|
||||
} else if (reviewType === 'record') {
|
||||
// 如果是卷宗类型,只加载id=1和id=2的评查点类型
|
||||
postgrestParams.filter!['id'] = 'in.(1,2)';
|
||||
}
|
||||
|
||||
// 发送请求获取评查点类型列表
|
||||
const response = await postgrestGet<{code: number; msg: string; data: Array<{
|
||||
id: number;
|
||||
|
||||
Reference in New Issue
Block a user