Files
front/src/api/kb/review.ts

71 lines
2.2 KiB
TypeScript
Raw Normal View History

2026-05-02 09:59:06 +08:00
import { request } from '@/api/request'
2026-07-22 03:26:22 +08:00
import type { Document } from './document'
import type { Faq, KbReply } from './faq'
2026-03-21 10:47:59 +08:00
2026-07-22 03:26:22 +08:00
export type ReviewResourceType = 'all' | 'document' | 'faq'
2026-03-21 10:47:59 +08:00
2026-07-22 03:26:22 +08:00
/** 统一审核列表项。 */
2026-03-21 22:37:48 +08:00
export interface ReviewListItem {
2026-05-02 09:59:06 +08:00
type: 'document' | 'faq'
2026-07-22 03:26:22 +08:00
resource: Document | Faq
2026-03-21 22:37:48 +08:00
}
2026-07-22 03:26:22 +08:00
/** 审核分页结果。 */
export interface ReviewPage {
2026-05-02 09:59:06 +08:00
total: number
page: number
page_size: number
2026-07-22 03:26:22 +08:00
data: ReviewListItem[]
2026-03-21 22:37:48 +08:00
}
2026-07-22 03:26:22 +08:00
/** 当前审核人的待审数量。 */
export interface ReviewStats {
need_my_review_document: number
need_my_review_faq: number
need_my_review_total: number
need_my_review_unreviewed_document: number
need_my_review_unreviewed_faq: number
need_my_review_unreviewed_total: number
2026-03-21 22:37:48 +08:00
}
2026-07-22 03:26:22 +08:00
/** 审核列表参数。 */
2026-03-21 22:37:48 +08:00
export interface FetchReviewListParams {
2026-05-02 09:59:06 +08:00
page?: number
page_size?: number
2026-07-22 03:26:22 +08:00
resource_type?: ReviewResourceType
2026-03-21 22:37:48 +08:00
}
export interface ApproveParams {
2026-05-02 09:59:06 +08:00
resource_type: 'document' | 'faq'
id: number
2026-03-21 22:37:48 +08:00
}
2026-07-22 03:26:22 +08:00
export interface RejectParams extends ApproveParams {
reason: string
2026-03-21 22:37:48 +08:00
}
2026-07-22 03:26:22 +08:00
/** 获取当前用户可审核的待审资源。 */
export const fetchReviewList = (params: FetchReviewListParams) => request.get<KbReply<ReviewPage>>('/Kb/v1/review/list', { params })
2026-03-21 22:37:48 +08:00
2026-07-22 03:26:22 +08:00
/** 获取当前审核人的待审统计。 */
export const fetchReviewStats = (params: { resource_type?: ReviewResourceType } = {}) =>
request.get<KbReply<ReviewStats>>('/Kb/v1/review/stats', { params })
2026-03-21 22:37:48 +08:00
2026-07-22 03:26:22 +08:00
/** 审核通过。 */
export const approveReview = (data: ApproveParams) => request.post<KbReply<string>>('/Kb/v1/review/approve', data)
2026-03-21 22:37:48 +08:00
2026-07-22 03:26:22 +08:00
/** 审核拒绝。 */
export const rejectReview = (data: RejectParams) => request.post<KbReply<string>>('/Kb/v1/review/reject', data)
2026-03-21 22:37:48 +08:00
2026-07-22 03:26:22 +08:00
export const resourceTypeOptions: Array<{ label: string; value: ReviewResourceType }> = [
2026-03-21 22:37:48 +08:00
{ label: '全部', value: 'all' },
{ label: '文档', value: 'document' },
{ label: 'FAQ', value: 'faq' },
2026-05-02 09:59:06 +08:00
]
2026-03-21 22:37:48 +08:00
2026-07-22 03:26:22 +08:00
/** 获取审核资源类型文案。 */
export const getResourceTypeText = (type: string) => ({ document: '文档', faq: 'FAQ' })[type] || type
2026-03-21 22:37:48 +08:00
2026-07-22 03:26:22 +08:00
/** 获取审核资源类型颜色。 */
export const getResourceTypeColor = (type: string) => ({ document: 'arcoblue', faq: 'green' })[type] || 'gray'