feat: 完成前端业务闭环与后端联调

This commit is contained in:
2026-08-24 23:37:56 +08:00
parent c59e36f933
commit 9ad572907b
175 changed files with 10711 additions and 1740 deletions
+12 -27
View File
@@ -1,4 +1,3 @@
import { hasRemoteConfig } from '@/utils/runtime-config.js'
import { normalizeGenealogyPathId } from './genealogy-contract.js'
import {
normalizeGenealogyMemberOptions,
@@ -6,18 +5,9 @@ import {
normalizeMemberUpdatePayload
} from './genealogy-member-contract.js'
import { normalizeResourcePathId } from './request-normalizers.js'
import { createRequestError, requestStrict } from './request-client.js'
import { requestStrict } from './request-client.js'
const requireRemoteMembership = (label, operation) => {
if (hasRemoteConfig()) return
throw createRequestError(
`${label}${operation}需要真实服务,当前本地预览不会伪造结果`,
operation === '读取' ? 'REMOTE_READ_REQUIRED' : 'REMOTE_WRITE_REQUIRED'
)
}
const writeMembership = (url, method, data, label, requestOptions) => {
requireRemoteMembership(label, '写入')
const writeMembership = (url, method, data, requestOptions) => {
return requestStrict({
url,
method,
@@ -27,8 +17,7 @@ const writeMembership = (url, method, data, label, requestOptions) => {
})
}
const deleteMembership = async (url, label, requestOptions) => {
requireRemoteMembership(label, '写入')
const deleteMembership = async (url, requestOptions) => {
await requestStrict({ url, method: 'DELETE' }, {
requireData: false,
requestController: requestOptions.requestController ?? null
@@ -39,7 +28,6 @@ const deleteMembership = async (url, label, requestOptions) => {
export const genealogyMemberApi = {
async getMembers(genealogyId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
requireRemoteMembership('家谱成员', '读取')
const members = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/members`,
method: 'GET'
@@ -51,7 +39,6 @@ export const genealogyMemberApi = {
async getMemberOptions(genealogyId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
requireRemoteMembership('成员选项', '读取')
const memberOptions = await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/members/options`,
method: 'GET'
@@ -68,7 +55,6 @@ export const genealogyMemberApi = {
`/genealogy/app/genealogies/${normalizedGenealogyId}/members/${normalizedMemberId}`,
'PUT',
normalizeMemberUpdatePayload(payload),
'家谱成员',
requestOptions
)
return normalizeGenealogyMembers([member], normalizedGenealogyId)[0]
@@ -79,7 +65,6 @@ export const genealogyMemberApi = {
const normalizedMemberId = normalizeResourcePathId(memberId, '成员标识')
return deleteMembership(
`/genealogy/app/genealogies/${normalizedGenealogyId}/members/${normalizedMemberId}/lineage-person`,
'成员世系绑定',
requestOptions
)
},
@@ -89,7 +74,6 @@ export const genealogyMemberApi = {
const normalizedMemberId = normalizeResourcePathId(memberId, '成员标识')
return deleteMembership(
`/genealogy/app/genealogies/${normalizedGenealogyId}/members/${normalizedMemberId}`,
'家谱成员',
requestOptions
)
},
@@ -98,19 +82,20 @@ export const genealogyMemberApi = {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
return deleteMembership(
`/genealogy/app/genealogies/${normalizedGenealogyId}/members/me`,
'退出家谱',
requestOptions
)
},
async transferGenealogyOwner(genealogyId, targetMemberId, requestOptions = {}) {
const normalizedGenealogyId = normalizeGenealogyPathId(genealogyId)
return writeMembership(
`/genealogy/app/genealogies/${normalizedGenealogyId}/members/owner-transfer`,
'PUT',
{ targetMemberId: normalizeResourcePathId(targetMemberId, '目标成员标识') },
'家谱所有者转让',
requestOptions
)
await requestStrict({
url: `/genealogy/app/genealogies/${normalizedGenealogyId}/members/owner-transfer`,
method: 'PUT',
data: { targetMemberId: normalizeResourcePathId(targetMemberId, '目标成员标识') }
}, {
requireData: false,
requestController: requestOptions.requestController ?? null
})
return null
}
}