import { computed, type ComputedRef } from "vue"; import { GROUP_LABELS, GROUP_PROTECT_UNIT, GROUP_TO_REVIEW_PROGRESS, SUBMITED_PROGRESS, GROUP_PROVINCE, GROUP_DISTRICT_CENTER, GROUP_DISTRICT, GROUP_DISTRICT_ST, GROUP_DISTRICT_ND, GROUP_DISTRICT_RD, GROUP_DISTRICT_TH, GROUP_DISTRICT_FI } from "./GroupData"; import { useAuthStore } from "@/stores/auth"; export function useReview(sourceProgress?: ComputedRef) { const authStore = useAuthStore(); const currentUserGroup = computed(() => (authStore.userInfo?.adminGroup || []).find((group) => GROUP_TO_REVIEW_PROGRESS[group.id]) ); const reviewProgressInfo = computed(() => { return GROUP_TO_REVIEW_PROGRESS[currentUserGroup.value?.id ?? 0]; }); /** * 是否是最终级别 */ const isEndLevel = computed(() => { return currentUserGroup.value?.id === GROUP_PROVINCE; }); /** * 是否是区级审核级别 */ const isDistrict = computed(() => { return ( currentUserGroup.value?.id === GROUP_DISTRICT_FI || currentUserGroup.value?.id === GROUP_DISTRICT_FI || currentUserGroup.value?.id === GROUP_DISTRICT_ND || currentUserGroup.value?.id === GROUP_DISTRICT_RD || currentUserGroup.value?.id === GROUP_DISTRICT_TH || currentUserGroup.value?.id === GROUP_DISTRICT_FI ); }); /** * 是否是项目保护单位 */ const isProtectUnit = computed(() => { return currentUserGroup.value?.id === GROUP_PROTECT_UNIT; }); /** * 是否可以提交审核 */ const canSubmitReview = computed(() => { const info = reviewProgressInfo.value; if (!info || !sourceProgress) return false; if (info.noProgressChange) { return sourceProgress.value >= info.minSource; } return sourceProgress.value >= info.minSource //上一阶段已完成 && sourceProgress.value < info.target;// 当前审核阶段未完成 }); /** * 是否可以审核 * @param sourceProgress * @returns */ const canReview = (sourceProgress: number) => { const info = reviewProgressInfo.value; if (!info) return false; if (info.noProgressChange) { return sourceProgress >= info.minSource; } return sourceProgress >= info.minSource //上一阶段已完成 && sourceProgress < info.target;// 当前审核阶段未完成 }; /** * 是否当前级别已经审核完成 * @param sourceProgress * @returns */ const isCurrentLevelReviewed = (sourceProgress: number) => { const info = reviewProgressInfo.value; if (!info) return false; return sourceProgress >= info.target; }; /** * 是否可以审核,但上一阶段未完成 * @param sourceProgress * @returns */ const canReviewButPrevNotCompleted = (sourceProgress: number) => { const info = reviewProgressInfo.value; if (!info) return false; return sourceProgress >= SUBMITED_PROGRESS //已提交 && sourceProgress < info.minSource //上一阶段未完成 }; const reviewLevelLabel = computed(() => { return GROUP_LABELS[currentUserGroup.value?.id ?? 0]; }); const progressHint = computed(() => { const roleText = reviewLevelLabel.value ? `当前账号审核环节:${reviewLevelLabel.value}` : `当前用户组无权限审核`; return `${roleText}。`; }); /** * 当前角色是否不修改进度(子角色审核) */ const isNoProgressChange = computed(() => { return !!reviewProgressInfo.value?.noProgressChange; }); /** * 当前角色是否仅可退回(不可通过审核) */ const canRejectOnly = computed(() => { const info = reviewProgressInfo.value; return !!info?.noProgressChange && !info?.canReject; }); return { reviewProgressInfo, currentUserGroup, canReview, canReviewButPrevNotCompleted, isCurrentLevelReviewed, canSubmitReview, reviewLevelLabel, progressHint, isDistrict, isEndLevel, isProtectUnit, isNoProgressChange, canRejectOnly, }; }