weizong song 2 weeks ago
parent ec9367e980
commit 46618c6053

@ -401,7 +401,24 @@
<!-- 合同基本信息 -->
<el-descriptions v-if="contractDetail" :column="2" border size="small" style="margin-bottom: 12px;">
<el-descriptions-item label="合同编号">
{{ contractDetail.contract_no || '-' }}
<template v-if="contractDetail.id">
<el-link
type="primary"
:underline="false"
@click="openContractDrawer(contractDetail.id, contractDetail.title || contractDetail.contract_no)"
>
{{ contractDetail.contract_no || '-' }}
</el-link>
<el-link
type="primary"
:underline="false"
style="margin-left: 8px;"
@click="openContractDrawer(contractDetail.id, contractDetail.title || contractDetail.contract_no)"
>
查看详情
</el-link>
</template>
<span v-else>{{ contractDetail.contract_no || '-' }}</span>
</el-descriptions-item>
<el-descriptions-item label="合同名称">
{{ contractDetail.title || '-' }}
@ -844,6 +861,80 @@
</div>
<div v-else style="color:#909399;">未获取到会议纪要数据</div>
</div>
<!-- 合同详情请求数据展示 -->
<div v-else-if="rightDrawerType === 'contract'" v-loading="loadingContractDrawer">
<div v-if="contractDrawerDetail">
<el-descriptions :column="2" border>
<el-descriptions-item label="合同编号">
{{ contractDrawerDetail.contract_no || '-' }}
</el-descriptions-item>
<el-descriptions-item label="合同名称">
{{ contractDrawerDetail.title || '-' }}
</el-descriptions-item>
<el-descriptions-item label="甲方">
{{ contractDrawerDetail.party_a || '-' }}
</el-descriptions-item>
<el-descriptions-item label="乙方">
{{ contractDrawerDetail.party_b || '-' }}
</el-descriptions-item>
<el-descriptions-item label="合同总额">
<span style="color: #F56C6C; font-weight: bold;">¥{{ formatAmount(contractDrawerDetail.amount_total) }}</span>
</el-descriptions-item>
<el-descriptions-item label="金额类型">
{{ contractDrawerDetail.amount_type === 'open' ? '开口' : (contractDrawerDetail.amount_type === 'fixed' ? '闭口' : '-') }}
</el-descriptions-item>
<el-descriptions-item label="合同主要内容" :span="2">
{{ contractDrawerDetail.main_content || '-' }}
</el-descriptions-item>
<el-descriptions-item label="签订日期">
{{ contractDrawerDetail.sign_date || '-' }}
</el-descriptions-item>
<el-descriptions-item label="申请日期">
{{ contractDrawerDetail.apply_date || '-' }}
</el-descriptions-item>
<el-descriptions-item label="履行期限">
{{ contractDrawerDetail.perform_period || '-' }}
</el-descriptions-item>
<el-descriptions-item label="付款方式">
{{ contractDrawerDetail.pay_method || '-' }}
</el-descriptions-item>
<el-descriptions-item label="资金来源">
{{ contractDrawerDetail.fund_source || '-' }}
</el-descriptions-item>
<el-descriptions-item label="采购方式">
{{ contractDrawerDetail.purchase_method || '-' }}
</el-descriptions-item>
<el-descriptions-item label="合同附件" :span="2">
<template v-if="contractDrawerDetail.attachment && contractDrawerDetail.attachment.url">
<el-link
type="primary"
:underline="false"
:href="contractDrawerDetail.attachment.url"
target="_blank"
>
{{ contractDrawerDetail.attachment.original_name || contractDrawerDetail.attachment.name || '查看附件' }}
</el-link>
</template>
<span v-else>-</span>
</el-descriptions-item>
</el-descriptions>
<div v-if="contractDrawerDetail.pay_plans && contractDrawerDetail.pay_plans.length" style="margin-top: 16px;">
<div style="font-weight: 600; margin-bottom: 10px;">付款计划</div>
<el-table :data="contractDrawerDetail.pay_plans" border size="small" style="width: 100%;">
<el-table-column prop="phase_no" label="期次" width="100" />
<el-table-column prop="due_date" label="计划日期" width="140" />
<el-table-column label="计划金额" min-width="160" align="right">
<template slot-scope="scope">
<span style="color: #F56C6C; font-weight: bold;">¥{{ formatAmount(scope.row.amount_plan) }}</span>
</template>
</el-table-column>
</el-table>
</div>
</div>
<div v-else style="color:#909399;">未获取到合同详情</div>
</div>
</el-drawer>
</div>
</template>
@ -963,6 +1054,8 @@ export default {
rightDrawerUrl: '',
meetingMinutesDetail: null,
loadingMeetingMinutes: false,
contractDrawerDetail: null,
loadingContractDrawer: false,
// fill_flow_title watcher deep watcher oldVal/newVal
_unwatchFillFlowTitle: null,
};
@ -1992,6 +2085,7 @@ export default {
this.rightDrawerTitle = '查看会议纪要';
this.rightDrawerUrl = '';
this.meetingMinutesDetail = null;
this.contractDrawerDetail = null;
this.rightDrawerVisible = true;
this.loadingMeetingMinutes = true;
try {
@ -2007,6 +2101,29 @@ export default {
}
},
async openContractDrawer(contractId, title = '') {
const cid = Number(contractId);
if (!cid || Number.isNaN(cid)) return;
this.rightDrawerType = 'contract';
this.rightDrawerTitle = title || '查看合同详情';
this.rightDrawerUrl = '';
this.meetingMinutesDetail = null;
this.contractDrawerDetail = null;
this.rightDrawerVisible = true;
this.loadingContractDrawer = true;
try {
const detail = await getBudgetContractDetail(cid);
this.contractDrawerDetail = detail || null;
this.rightDrawerTitle = detail?.title || detail?.contract_no || title || '查看合同详情';
} catch (e) {
console.error('加载合同详情失败:', e);
this.contractDrawerDetail = null;
} finally {
this.loadingContractDrawer = false;
}
},
//
formatReadonlyValue(val) {
if (val === undefined || val === null || val === '') return '-';

Loading…
Cancel
Save