feat(oa): render instance detail progress from API projection
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
98beade090
commit
265d790ea6
2 files changed
+747
No files matched your search
@@ -0,0 +1,279 @@
|
||||
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, initiatorSelectUserIds?: string[]) {
|
||||
return request.get<{ steps: OaFlowPreviewStep[] }>({
|
||||
url: `${BASE}/templates/${appId}/flow-preview`,
|
||||
params: initiatorSelectUserIds?.length
|
||||
? { initiatorSelectUserIds: initiatorSelectUserIds.join(',') }
|
||||
: undefined
|
||||
})
|
||||
}
|
||||
|
||||
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 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
|
||||
})
|
||||
}
|
||||
Reference in new issue
Block a user