提交
This commit is contained in:
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()
|
||||
}
|
||||
)
|
||||
|
||||
Reference in new issue
Block a user