feat: ship OA drafts/badges, role dual-track, and test-env deploy tooling.

Add approval instance drafts with menu badges, dual-track user/role read model and role bound names, form-designer outline docs, and bare-metal test deploy scripts. Ignore local test-server credential file.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-08-06 13:58:47 +08:00
1 parent 7af53fc344
commit de22678c87
56 files changed
+11861 -6082

No files matched your search

+91
View File
@@ -210,6 +210,93 @@ export function fetchStartOaInstance(data: {
})
}
// ---------------------------------------------------------------------------
// 发起审批草稿箱
// ---------------------------------------------------------------------------
export function fetchOaInstanceDraftList(params?: {
keyword?: string
groupId?: string
updateTimeFrom?: string
updateTimeTo?: string
page?: number
pageSize?: number
}) {
return request.get<{ list: any[]; total: number }>({
url: `${BASE}/drafts`,
params
})
}
export function fetchOaInstanceDraftCount() {
return request.get<{ count: number }>({ url: `${BASE}/drafts/count` })
}
export function fetchOaInstanceDraftDetail(id: string) {
return request.get<any>({ url: `${BASE}/drafts/${id}` })
}
export function fetchCreateOaInstanceDraft(data: {
appId: string
formData?: Record<string, any>
title?: string
initiatorDeptId?: string
initiatorSelectByNode?: Record<string, string[]>
}) {
return request.post({
url: `${BASE}/drafts`,
data,
showSuccessMessage: true
})
}
export function fetchUpdateOaInstanceDraft(
id: string,
data: {
formData?: Record<string, any>
title?: string
initiatorDeptId?: string
initiatorSelectByNode?: Record<string, string[]>
}
) {
return request.put({
url: `${BASE}/drafts/${id}`,
data,
showSuccessMessage: true
})
}
export function fetchDeleteOaInstanceDraft(id: string) {
return request.del({
url: `${BASE}/drafts/${id}`,
showSuccessMessage: true
})
}
export function fetchBatchDeleteOaInstanceDrafts(ids: string[]) {
return request.post({
url: `${BASE}/drafts/batch-delete`,
data: { ids },
showSuccessMessage: true
})
}
export function fetchSubmitOaInstanceDraft(
id: string,
data?: {
formData?: Record<string, any>
title?: string
initiatorDeptId?: string
initiatorSelectByNode?: Record<string, string[]>
}
) {
return request.post({
url: `${BASE}/drafts/${id}/submit`,
data: data || {},
showSuccessMessage: true
})
}
/** 详情审批进度投影项(后端 build_progress_items) */
export interface OaProgressPerson {
id?: string
@@ -254,6 +341,10 @@ export function fetchOaTasks(
})
}
export function fetchOaPendingTaskCount() {
return request.get<{ count: number }>({ url: `${BASE}/tasks/pending/count` })
}
export function fetchOaCcUnreadCount() {
return request.get<{ count: number }>({ url: `${BASE}/tasks/cc/unread-count` })
}