This commit is contained in:
zlwu committed 2026-06-16 19:24:53 +08:00
1 parent c1832f9d03
commit e7d080c9d3
27 files changed
+5168 -4954

No files matched your search

@@ -237,10 +237,10 @@ const CARD_META_BY_TAB: Record<ProductionWorkOrderTabKey, ProductionWorkOrderCar
showProtocolFeeSummary: false,
showOutboundFeeSummary: false,
metaFields: temporaryFields,
allowDispatchQc: false,
allowDispatchQc: true,
allowSampleReception: false,
allowDispatchComplete: false,
allowEditRemark: false,
allowDispatchComplete: true,
allowEditRemark: true,
allowDelete: true
}
}
+8 -4
View File
@@ -1,7 +1,7 @@
import type { QcWorkOrder } from '@/api/qc-work-order'
import { fetchQcWorkOrderDetail } from '@/api/qc-work-order'
import { fetchMyQcTaskList, type QcTask } from '@/api/qc-task'
import { groupInboundQcWorkOrders } from '@/utils/qc-work-order-groups'
import { groupInboundQcWorkOrders, matchesTemporaryQcSourceFilter } from '@/utils/qc-work-order-groups'
import type { QcWorkOrderTabKey } from '@/utils/qc-work-order-tabs'
import {
resolveTabKeyFromWorkOrder,
@@ -51,7 +51,7 @@ function keywordMatchesWorkOrder(row: QcWorkOrder, keyword: string, tabKey: QcWo
const tab = getQcWorkOrderTab(tabKey)!
const fields =
tabKey === 'temporary'
? [row.workOrderNo]
? [row.workOrderNo, row.productionWorkOrderNo]
: tabKey === 'outbound_basic_experiment'
? [row.workOrderNo, row.applicationNo, row.projectTitle, row.customerName, row.applicationName]
: tab.group === 'outbound'
@@ -70,8 +70,12 @@ export function filterMineEntriesByWorkOrderSearch(
const row = entry.workOrder
if (resolveTabKeyFromWorkOrder(row) !== tabKey) return false
if (filters.workOrderStatus && row.workOrderStatus !== filters.workOrderStatus) return false
if (tab.listLayout !== 'standalone' && filters.triggerSource && row.triggerSource !== filters.triggerSource) {
return false
if (filters.triggerSource) {
if (tabKey === 'temporary') {
if (!matchesTemporaryQcSourceFilter(row, filters.triggerSource)) return false
} else if (tab.listLayout !== 'standalone' && row.triggerSource !== filters.triggerSource) {
return false
}
}
if (!keywordMatchesWorkOrder(row, filters.keyword || '', tabKey)) return false
if (tabUsesInfusionTimeFilter(tab)) {
@@ -1,16 +1,17 @@
import type { QcWorkOrder } from '@/api/qc-work-order'
import { qcBizTypeLabel } from '@/utils/qc-labels'
import {
donationStatusLabel,
donationStatusTagType,
protocolStatusLabel,
protocolStatusTagType,
qcBizTypeTagType
protocolStatusTagType
} from '@/utils/status-tag-registry'
import type { TagType } from '@/utils/status-tag-registry'
import type { QcWorkOrderTabKey } from '@/utils/qc-work-order-tabs'
import { getQcWorkOrderTab } from '@/utils/qc-work-order-tabs'
import { formatMoneyDisplay } from '@/utils/money-format'
import {
isTemporaryQcFromProduction
} from '@/utils/qc-work-order-groups'
export type CardMetaFieldKind = 'text' | 'tag'
@@ -130,10 +131,9 @@ const outboundBasicExperimentFields: CardMetaField[] = [
const temporaryFields: CardMetaField[] = [
{
label: '业务类型',
kind: 'tag',
getValue: (row) => row.qcBizTypeLabel || qcBizTypeLabel('temporary'),
getTagType: () => qcBizTypeTagType('temporary')
label: '关联生产工单',
getValue: (row) => row.productionWorkOrderNo || '—',
visible: (row) => isTemporaryQcFromProduction(row)
},
{
label: '产品编码',
@@ -266,7 +266,7 @@ const CARD_META_BY_TAB: Record<QcWorkOrderTabKey, QcWorkOrderCardMetaConfig> = {
temporary: {
tabKey: 'temporary',
listLayout: 'standalone',
showTriggerTag: false,
showTriggerTag: true,
showProtocolFeeSummary: false,
showOutboundFeeSummary: false,
metaFields: temporaryFields,
@@ -75,3 +75,23 @@ export function isGateTriggerSource(source?: string | null) {
const ts = (source || 'reception').trim()
return ts === 'reception' || ts === 'schedule'
}
/** 临时质检:是否由生产工单派发 */
export function isTemporaryQcFromProduction(row: QcWorkOrder) {
return (row.triggerSource || '') === 'production' || !!(row.productionWorkOrderId || '').trim()
}
export function temporaryQcSourceLabel(row: QcWorkOrder) {
return isTemporaryQcFromProduction(row) ? '生产派发' : '手动创建'
}
export function temporaryQcSourceTagType(row: QcWorkOrder): 'warning' | 'info' {
return isTemporaryQcFromProduction(row) ? 'warning' : 'info'
}
export function matchesTemporaryQcSourceFilter(row: QcWorkOrder, filterValue?: string) {
if (!filterValue) return true
if (filterValue === 'production') return isTemporaryQcFromProduction(row)
if (filterValue === 'manual') return !isTemporaryQcFromProduction(row)
return (row.triggerSource || '') === filterValue
}