feat: 细胞存储缴费催缴、统一样本信息与协议支付能力增强

汇总近期业务改动:催缴菜单与后端、样本信息快捷登记与进度、运费关联、客户档案扩展、协议优惠/期次与押金划转,并同步 SQL 迁移与管理端页面收敛。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
zlwuandCursor committed 2026-10-10 21:20:37 +08:00
1 parent 2d3472f5c4
commit db31990ebe
235 files changed
+14898 -10196

No files matched your search

+5
View File
@@ -1049,6 +1049,11 @@ export function fetchRegionStaffList(
params
})
}
export function fetchRegionsByStaffUser(userId: string) {
return request.get<{ list: { id: string; regionName: string }[] }>({
url: `/web/admin/collection-regions/by-staff-user/${userId}`
})
}
export function fetchCreateRegionStaff(
regionId: string,
data: { userId: string; isLeader?: boolean; orderNum?: number; remark?: string }
@@ -13,8 +13,13 @@ export function fetchProtocolSampleCollectionList(params?: {
page?: number
pageSize?: number
keyword?: string
/** uncollected | ycj | jcz | yrk | yzf | all */
sampleStatus?: string
collectionFlag?: string
receptionFlag?: string
qcFlag?: string
storageFlag?: string
storageCertHandled?: string
insuranceHandled?: string
}) {
return request.get<PageList<Record<string, unknown>>>({
url: '/web/admin/protocol-sample-collections/list',
+2
View File
@@ -46,6 +46,8 @@ export type QcProtocolPaymentSummary = {
overallPayStatusTagType?: string
installmentCount?: number | null
paymentDetails?: QcProtocolPaymentDetailSummary[]
/** 第 1 期多笔转账中最后一笔的转账时间(协议列表「首期缴费时间」优先用) */
firstPayTransferTime?: string
}
export type QcBasicExperimentFeeSummary = {
@@ -13,8 +13,11 @@ export function fetchResearchDonationSampleCollectionList(params?: {
page?: number
pageSize?: number
keyword?: string
/** uncollected | ycj | jcz | yrk | yzf | all */
sampleStatus?: string
collectionFlag?: string
receptionFlag?: string
qcFlag?: string
storageFlag?: string
}) {
return request.get<PageList<Record<string, unknown>>>({
url: '/web/admin/research-donation-sample-collections/list',
+6
View File
@@ -7,15 +7,21 @@ export type SampleFreightItem = {
sampleCode?: string
protocolNo?: string
sampleTypeName?: string
motherName?: string
newbornName?: string
freightId?: string
}
export type SampleFreight = {
id: string
/** 运费批次号,格式 YF+YYYYMMDD+001~999 */
freightNo?: string
transportMode: string
transportModeLabel?: string
freightAmount: number
linkedSampleCount?: number
createBy?: string
createByName?: string
createTime?: string
items?: SampleFreightItem[]
deleted?: boolean
+37
View File
@@ -0,0 +1,37 @@
import request from '@/utils/http'
export function fetchUpdateStorageCertHandle(
protocolId: string,
data: {
handleTime?: string | null
handlerUserId?: string | null
certImageUrls?: string
remark?: string
}
) {
return request.put({ url: `/web/admin/storage-certs/${protocolId}`, data })
}
export function fetchSampleInfoQuickRegister(data: {
kind: 'storage' | 'storage_cert' | 'insurance'
receptionSource: 'cell_storage' | 'research_donation'
items: Array<{ sampleCode: string; protocolId: string }>
handleTime: string
handlerUserId: string
attachments?: string
remark?: string
}) {
return request.post({ url: '/web/admin/sample-info/quick-register', data })
}
export function fetchUpdateFullmoonHandle(
protocolId: string,
data: {
handleTime?: string | null
handlerUserId?: string | null
insuranceAttachments?: string
handleRemark?: string
}
) {
return request.put({ url: `/web/admin/fullmoon-todos/${protocolId}/handle`, data })
}