This commit is contained in:
zlwu committed 2026-05-24 09:34:01 +08:00
1 parent 07ed8c7a60
commit 2f350e7d73
15 files changed
+1693 -1654

No files matched your search

@@ -11,7 +11,12 @@
@update:model-value="emit('update:modelValue', $event)"
@closed="handleClosed"
>
<div class="protocol-view-body" :class="{ 'is-detail-loading': detailLoading && !bundle }">
<div
class="protocol-view-body"
:class="{ 'is-detail-loading': detailLoading && !bundle }"
v-loading="detailLoading && !bundle"
element-loading-text="加载中…"
>
<div class="detail-tabs">
<div
v-for="tab in formTabs"
@@ -25,7 +30,7 @@
</div>
<template v-if="bundle">
<div v-loading="detailLoading && !bundle">
<div>
<!-- KPI 摘要条 -->
<div class="kpi-strip">
<div class="kpi-card">
@@ -891,19 +896,32 @@
</div>
</template>
<template v-else-if="step.key === 'receipt-finance'">
<!-- 财务确认 -->
<!-- 财务确认:jfqrz 为待财务确认,updateTime 为提交财务时间非确认时间 -->
<div class="flow-detail-card__kv">
<span class="flow-detail-card__label">确认状态</span>
<span class="flow-detail-card__value"
><el-tag type="success" size="small">已确认</el-tag></span
>
<span class="flow-detail-card__value">
<el-tag
v-if="isReceiptFinanceConfirmed(detail)"
type="success"
size="small"
>已确认</el-tag
>
<el-tag v-else type="warning" size="small">待确认</el-tag>
</span>
</div>
<div v-if="detail.updateTime" class="flow-detail-card__kv">
<div
v-if="isReceiptFinanceConfirmed(detail) && detail.updateTime"
class="flow-detail-card__kv"
>
<span class="flow-detail-card__label">确认时间</span>
<span class="flow-detail-card__value">{{ detail.updateTime }}</span>
</div>
<div
v-if="detail.financeRemark && String(detail.financeRemark).trim()"
v-if="
isReceiptFinanceConfirmed(detail) &&
detail.financeRemark &&
String(detail.financeRemark).trim()
"
class="flow-detail-card__kv"
>
<span class="flow-detail-card__label">财务备注</span>
@@ -912,7 +930,10 @@
}}</span>
</div>
<div
v-if="financeConfirmAttachmentFiles(detail).length"
v-if="
isReceiptFinanceConfirmed(detail) &&
financeConfirmAttachmentFiles(detail).length
"
class="flow-detail-card__kv"
>
<span class="flow-detail-card__label">财务附件</span>
@@ -1437,6 +1458,12 @@
return 'green'
}
/** 缴费明细是否已完成财务收款确认(jfqrz 仅已提交待财务处理) */
function isReceiptFinanceConfirmed(detail: Record<string, any>) {
const s = String(detail.payStatus || '')
return s !== 'jfqrz' && s !== 'dfj'
}
interface MiniFlowStep {
key: string
label: string
@@ -313,61 +313,48 @@
</div>
</div>
</template>
<template #append>
<div
v-if="viewDetail?.taskType !== 'dsfjc'"
class="view-section qc-task-view-material-usages"
>
<h3>物料使用</h3>
<el-table
v-if="viewMaterialUsages.length"
:data="viewMaterialUsages"
stripe
class="list-table inner-table qc-task-view-material-table"
>
<el-table-column
type="index"
label="序号"
min-width="56"
align="center"
header-align="center"
:index="(index) => index + 1"
/>
<el-table-column
prop="materialName"
label="物料名称"
min-width="160"
align="center"
header-align="center"
/>
<el-table-column label="规格型号" min-width="120" align="center" header-align="center">
<template #default="{ row }">{{ row.specModel || '—' }}</template>
</el-table-column>
<el-table-column label="用量" min-width="100" align="center" header-align="center">
<template #default="{ row }">
{{ row.qty != null && row.qty !== '' ? row.qty : '—' }}
</template>
</el-table-column>
<el-table-column label="单位" min-width="72" align="center" header-align="center">
<template #default="{ row }">{{ row.unit || '—' }}</template>
</el-table-column>
<el-table-column label="备注" min-width="140" align="center" header-align="center">
<template #default="{ row }">{{ row.remark || '—' }}</template>
</el-table-column>
</el-table>
<p v-else class="view-material-empty">暂无物料使用记录</p>
</div>
<div
v-if="viewDetail?.attachmentFiles?.length"
class="view-section qc-task-view-attachments"
>
<h3>{{ viewDetail?.taskType === 'dsfjc' ? '检测材料' : '检测附件' }}</h3>
<ProtocolAttachmentReadonly
:files="viewDetail.attachmentFiles"
@preview="handleViewAttachmentPreview"
@download="handleViewAttachmentDownload"
<template #material-usages>
<div v-if="viewMaterialUsages.length" class="view-subtable-wrap">
<el-table :data="viewMaterialUsages" stripe class="list-table view-subtable">
<el-table-column
type="index"
label="序号"
min-width="56"
align="center"
header-align="center"
:index="(index) => index + 1"
/>
<el-table-column
prop="materialName"
label="物料名称"
min-width="160"
align="center"
header-align="center"
/>
<el-table-column label="规格型号" min-width="120" align="center" header-align="center">
<template #default="{ row }">{{ row.specModel || '—' }}</template>
</el-table-column>
<el-table-column label="用量" min-width="100" align="center" header-align="center">
<template #default="{ row }">
{{ row.qty != null && row.qty !== '' ? row.qty : '—' }}
</template>
</el-table-column>
<el-table-column label="单位" min-width="72" align="center" header-align="center">
<template #default="{ row }">{{ row.unit || '—' }}</template>
</el-table-column>
<el-table-column label="备注" min-width="140" align="center" header-align="center">
<template #default="{ row }">{{ row.remark || '—' }}</template>
</el-table-column>
</el-table>
</div>
<p v-else class="view-empty-hint">暂无物料使用记录</p>
</template>
<template #task-attachments>
<ProtocolAttachmentReadonly
:files="viewDetail?.attachmentFiles || []"
@preview="handleViewAttachmentPreview"
@download="handleViewAttachmentDownload"
/>
</template>
</SystemViewDialog>
</section>
@@ -718,6 +705,17 @@
}
]
: []
const tailSections: ViewSection[] = []
if (d.taskType !== 'dsfjc') {
tailSections.push({ title: '物料使用', fields: [], slot: 'material-usages' })
}
if (d.attachmentFiles?.length) {
tailSections.push({
title: d.taskType === 'dsfjc' ? '检测材料' : '检测附件',
fields: [],
slot: 'task-attachments'
})
}
return [
{
title: '任务信息',
@@ -789,7 +787,8 @@
{ label: '备注', value: r.remark || '—', span: true }
]
},
...resultSection
...resultSection,
...tailSections
]
})
@@ -1086,32 +1085,6 @@
}
}
.qc-task-view-material-usages,
.qc-task-view-attachments {
padding: 18px 22px;
border-bottom: none;
h3 {
margin: 0 0 14px;
padding-left: 10px;
font-size: 14px;
font-weight: 600;
color: #1e293b;
border-left: 3px solid #10b981;
line-height: 1;
}
}
.qc-task-view-material-table {
width: 100%;
}
.view-material-empty {
margin: 0;
font-size: 13px;
color: #64748b;
}
.view-reception-attachments {
margin-top: 4px;
@@ -11,7 +11,12 @@
@update:model-value="emit('update:modelValue', $event)"
@closed="handleClosed"
>
<div class="donation-view-body" :class="{ 'is-detail-loading': loading && !bundle }">
<div
class="donation-view-body"
:class="{ 'is-detail-loading': loading && !bundle }"
v-loading="loading && !bundle"
element-loading-text="加载中…"
>
<div class="detail-tabs">
<div
v-for="tab in formTabs"
@@ -25,7 +30,7 @@
</div>
<template v-if="bundle">
<div v-loading="loading && !bundle">
<div>
<!-- KPI 摘要条 -->
<div class="kpi-strip">
<div class="kpi-card">
@@ -964,6 +969,8 @@
bundle.value = null
auditRecords.value = []
activeTab.value = 'basic'
loading.value = false
auditLoading.value = false
}
watch(