Files
zkxw/web-admin/src/api/oaApproval.ts
T
2026-07-21 15:23:59 +08:00

297 lines
6.8 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import request from '@/utils/http'
const BASE = '/web/admin/oa-approval'
// ---------------------------------------------------------------------------
// 工作流角色
// ---------------------------------------------------------------------------
export function fetchOaRoleList(params?: { keyword?: string; status?: string }) {
return request.get<{ list: any[] }>({
url: `${BASE}/roles`,
params
})
}
export function fetchEnsureOaRolePresets() {
return request.post<{ createdCount: number }>({
url: `${BASE}/roles/ensure-presets`,
showSuccessMessage: true
})
}
export function fetchCreateOaRole(data: {
roleName: string
roleCode: string
status?: string
orderNum?: number
remark?: string
}) {
return request.post({
url: `${BASE}/roles`,
data,
showSuccessMessage: true
})
}
export function fetchUpdateOaRole(
id: string,
data: Partial<{
roleName: string
status: string
orderNum: number
remark: string
}>
) {
return request.put({
url: `${BASE}/roles/${id}`,
data,
showSuccessMessage: true
})
}
export function fetchDeleteOaRole(id: string) {
return request.del({
url: `${BASE}/roles/${id}`,
showSuccessMessage: true
})
}
export function fetchOaRoleUsers(roleId: string) {
return request.get<{ list: any[] }>({
url: `${BASE}/roles/${roleId}/users`
})
}
export function fetchReplaceOaRoleUsers(roleId: string, userIds: string[]) {
return request.put<{ list: any[] }>({
url: `${BASE}/roles/${roleId}/users`,
data: { userIds },
showSuccessMessage: true
})
}
// ---------------------------------------------------------------------------
// 分组 / 应用 / 草稿 / 发布
// ---------------------------------------------------------------------------
export function fetchOaGroupList() {
return request.get<{ list: any[] }>({ url: `${BASE}/groups` })
}
export function fetchCreateOaGroup(data: {
groupName: string
orderNum?: number
remark?: string
}) {
return request.post({
url: `${BASE}/groups`,
data,
showSuccessMessage: true
})
}
export function fetchUpdateOaGroup(
id: string,
data: Partial<{ groupName: string; orderNum: number; remark: string }>
) {
return request.put({
url: `${BASE}/groups/${id}`,
data,
showSuccessMessage: true
})
}
export function fetchDeleteOaGroup(id: string) {
return request.del({
url: `${BASE}/groups/${id}`,
showSuccessMessage: true
})
}
export function fetchOaAppList(params?: {
groupId?: string
keyword?: string
status?: string
}) {
return request.get<{ list: any[] }>({
url: `${BASE}/apps`,
params
})
}
export function fetchCreateOaApp(data: Record<string, any>) {
return request.post({
url: `${BASE}/apps`,
data,
showSuccessMessage: true
})
}
export function fetchUpdateOaApp(id: string, data: Record<string, any>) {
return request.put({
url: `${BASE}/apps/${id}`,
data,
showSuccessMessage: true
})
}
export function fetchDeleteOaApp(id: string) {
return request.del({
url: `${BASE}/apps/${id}`,
showSuccessMessage: true
})
}
export function fetchOaAppDraft(appId: string) {
return request.get<any>({ url: `${BASE}/apps/${appId}/draft` })
}
export function fetchSaveOaAppDraft(
appId: string,
data: {
basic?: Record<string, any>
formSchemaJson?: any
flowTreeJson?: any
advancedSettingsJson?: any
}
) {
return request.put({
url: `${BASE}/apps/${appId}/draft`,
data,
showSuccessMessage: true
})
}
export function fetchPublishOaApp(appId: string) {
return request.post({
url: `${BASE}/apps/${appId}/publish`,
showSuccessMessage: true
})
}
// ---------------------------------------------------------------------------
// 运行时
// ---------------------------------------------------------------------------
export function fetchOaTemplates() {
return request.get<{ list: any[] }>({ url: `${BASE}/templates` })
}
export function fetchOaTemplateDetail(appId: string) {
return request.get<any>({ url: `${BASE}/templates/${appId}` })
}
/** 发起前审批流预览(条件齐后返回最终路径) */
export function fetchOaFlowPreview(
appId: string,
opts?: { formData?: Record<string, any>; initiatorSelectUserIds?: string[] }
) {
return request.post<{
resolved: boolean
message?: string
steps: OaFlowPreviewStep[]
}>({
url: `${BASE}/templates/${appId}/flow-preview`,
data: {
formData: opts?.formData || {},
initiatorSelectUserIds: opts?.initiatorSelectUserIds || undefined
},
showSuccessMessage: false
})
}
export type OaFlowPreviewStep = {
id: string
type: 'start' | 'approval' | 'cc' | 'branch' | 'end' | string
name: string
signMode?: string
assigneeType?: string
meta?: string
people?: Array<{ id: string; nickName: string }>
resolveError?: string
}
export function fetchStartOaInstance(data: {
appId: string
formData?: Record<string, any>
title?: string
initiatorDeptId?: string
initiatorSelectUserIds?: string[]
relatedInstanceIds?: string[]
}) {
return request.post({
url: `${BASE}/instances`,
data,
showSuccessMessage: true
})
}
/** 详情审批进度投影项(后端 build_progress_items) */
export interface OaProgressItem {
kind: 'submit' | 'task' | 'pending_node' | 'terminal' | string
roundNo?: number
title?: string
status?: string
assigneeUserId?: string
assigneeUserName?: string
timestamp?: string
commentText?: string
nodeKey?: string
taskType?: string
resolveSource?: string
taskId?: string
}
export function fetchOaInstanceDetail(id: string) {
return request.get<{ progress?: OaProgressItem[]; tasks?: any[] } & Record<string, any>>({
url: `${BASE}/instances/${id}`
})
}
export function fetchOaTasks(kind: 'pending' | 'done' | 'mine' | 'cc') {
return request.get<{ list: any[] }>({ url: `${BASE}/tasks/${kind}` })
}
export function fetchApproveOaTask(taskId: string, comment?: string) {
return request.post({
url: `${BASE}/tasks/${taskId}/approve`,
data: { comment },
showSuccessMessage: true
})
}
export function fetchRejectOaTask(taskId: string, comment?: string) {
return request.post({
url: `${BASE}/tasks/${taskId}/reject`,
data: { comment },
showSuccessMessage: true
})
}
export function fetchReturnOaTask(taskId: string, comment: string) {
return request.post({
url: `${BASE}/tasks/${taskId}/return`,
data: { comment },
showSuccessMessage: true
})
}
export function fetchAddSignOaTask(
taskId: string,
data: { userIds: string[]; comment?: string }
) {
return request.post({
url: `${BASE}/tasks/${taskId}/add-sign`,
data,
showSuccessMessage: true
})
}
export function fetchWithdrawOaInstance(instanceId: string) {
return request.post({
url: `${BASE}/instances/${instanceId}/withdraw`,
showSuccessMessage: true
})
}