This commit is contained in:
zlwu committed 2026-06-30 09:19:06 +08:00
1 parent 1ca2668112
commit 5b3edb1700
278 files changed
+53761 -36931

No files matched your search

@@ -336,106 +336,28 @@
</div>
</div>
<div class="sample-card__section sample-card__section--reception">
<div class="sample-card__section-label">样本接收信息</div>
<template v-if="row.sampleReception">
<div class="data-grid data-grid--4">
<div class="data-item">
<div class="data-label">接收时间</div>
<div class="data-value">{{
dash(row.sampleReception.receptionTime)
}}</div>
</div>
<div class="data-item">
<div class="data-label">经手人</div>
<div class="data-value">{{ dash(row.sampleReception.handlerName) }}</div>
</div>
<div class="data-item">
<div class="data-label">接收温度(℃)</div>
<div class="data-value">
{{
row.sampleReception.receiveTemperature
? row.sampleReception.receiveTemperature + '℃'
: '—'
}}
</div>
</div>
<div class="data-item">
<div class="data-label">体积(ml)</div>
<div class="data-value">{{
formatMetric(row.sampleReception.volumeMl)
}}</div>
</div>
<div class="data-item">
<div class="data-label">净重(g)</div>
<div class="data-value">{{
formatMetric(row.sampleReception.netWeightG)
}}</div>
</div>
<div
v-if="String(row.sampleReception.acceptConclusion || '') === 'js'"
class="data-item"
>
<div class="data-label">实验室入库编码</div>
<div class="data-value">{{
dash(row.sampleReception.labStorageCode)
}}</div>
</div>
<div class="data-item">
<div class="data-label">结论</div>
<div class="data-value">
<el-tag
:type="
acceptConclusionTagType(
String(row.sampleReception.acceptConclusion || '')
)
"
size="small"
>
{{
acceptConclusionLabel(
String(row.sampleReception.acceptConclusion || '')
)
}}
</el-tag>
</div>
</div>
<div class="data-item data-item--full">
<div class="data-label">检查项</div>
<div
v-if="sampleReceptionCheckList(row.sampleReception).length"
class="check-list check-list-view"
>
<el-checkbox
v-for="chk in sampleReceptionCheckList(row.sampleReception)"
:key="chk.itemCode + String(chk.checkItemId)"
:model-value="chk.checked"
disabled
>
{{ chk.itemName }}
</el-checkbox>
</div>
<div v-else class="data-value">—</div>
</div>
<div v-if="row.sampleReception.remark" class="data-item data-item--full">
<div class="data-label">备注</div>
<div class="data-value data-value--muted">{{
dash(row.sampleReception.remark)
}}</div>
</div>
</div>
<div
v-if="sampleReceptionAttachmentFiles(row.sampleReception).length"
class="attachment-row sample-card__attachments"
>
<div class="data-label">接收附件</div>
<ProtocolAttachmentReadonly
:files="sampleReceptionAttachmentFiles(row.sampleReception)"
@preview="openPreview"
@download="downloadFile"
/>
</div>
</template>
<div v-else class="sample-reception-empty">暂未接收</div>
<SampleReceptionDualReadonlyPanel
:qc-reception="row.sampleReception"
:production-reception="
row.productionReception || row.sampleReception?.productionReception
"
source-type="cell_storage"
:sample-type-name="row.sampleTypeName"
/>
<div
v-if="
row.sampleReception &&
sampleReceptionAttachmentFiles(row.sampleReception).length
"
class="attachment-row sample-card__attachments"
>
<div class="data-label">接收附件</div>
<ProtocolAttachmentReadonly
:files="sampleReceptionAttachmentFiles(row.sampleReception)"
@preview="openPreview"
@download="downloadFile"
/>
</div>
</div>
<SampleQcInfoGroupedPanel
:gate-qc-info="row.qcInfo"
@@ -1134,6 +1056,7 @@
import { Close } from '@element-plus/icons-vue'
import ProtocolAttachmentReadonly from './ProtocolAttachmentReadonly.vue'
import SampleQcInfoGroupedPanel from '@/components/business/sample-qc-info-grouped-panel/index.vue'
import SampleReceptionDualReadonlyPanel from '@/components/business/sample-reception-dual-readonly-panel/index.vue'
import SampleProductionInfoCards from '@/components/business/sample-production-info-cards/index.vue'
import SampleStorageReleaseInfo from '@/components/business/sample-storage-release-info/index.vue'
import {
@@ -1162,12 +1085,12 @@
sampleStatusLabel,
sampleStatusTagType,
transportTypeLabel,
transferTypeLabel,
payStatusLabel,
payStatusTagType,
acceptConclusionLabel,
acceptConclusionTagType
} from '@/utils/status-tag-registry'
import { loadTransferTypeDict, transferTypeLabel } from '@/utils/protocol-payment-labels'
import { formatProtocolDocSubject } from '@/utils/protocol-doc-label'
const props = withDefaults(
@@ -1903,6 +1826,7 @@
watch(
() => [props.modelValue, props.protocolId] as const,
([visible, id]) => {
if (visible) void loadTransferTypeDict()
if (visible && id) loadDetail()
}
)