Files
zhgh_hmc/src/main/resources/static/components/activityBudget/info.vue
T
2025-09-02 11:36:10 +08:00

185 lines
6.0 KiB
Vue

<template>
<div class="activityBudget">
<vi-title title="申报信息"></vi-title>
<el-descriptions :column="3" border class="table_fixed">
<el-descriptions-item label="申报人">
{{ viewData.userName }}
</el-descriptions-item>
<el-descriptions-item label="工号">
{{ viewData.loginName }}
</el-descriptions-item>
<el-descriptions-item label="联系方式">
{{ viewData.mobile }}
</el-descriptions-item>
<el-descriptions-item label="预算类型">
<dict-tag :options="budgetTypeOption"
:value="viewData.budgetTypeCode"></dict-tag>
</el-descriptions-item>
<el-descriptions-item label="申报(承办)单位">
{{ viewData.helpUnitName }}
</el-descriptions-item>
<el-descriptions-item label="活动项目">
{{ viewData.activityMatter }}
</el-descriptions-item>
<el-descriptions-item label="活动时间">
{{ viewData.activityDate }}
</el-descriptions-item>
<el-descriptions-item label="申报预算金额(元)">
{{ viewData.declareTotalBudgetMoney }}
</el-descriptions-item>
<el-descriptions-item label="最终预算金额(元)">
{{ viewData.totalBudgetMoney }}
</el-descriptions-item>
<el-descriptions-item label="申报时间">
{{ viewData.applyDate }}
</el-descriptions-item>
<el-descriptions-item span="2"></el-descriptions-item>
<el-descriptions-item label="活动内容(如训练、装备等)" :span="3">
<div v-html="viewData.activityContent"></div>
</el-descriptions-item>
<el-descriptions-item label="项目明细" span="3"
v-if="viewData.budgetDetails&&viewData.budgetDetails.length>0">
<el-table :data="viewData.budgetDetails"
:summary-method="getSummaries"
border
show-summary
size="mini"
style="width: 100%">
<el-table-column label="序号" sortable type="index"
width="100"></el-table-column>
<el-table-column label="类别" prop="detailName"></el-table-column>
<el-table-column label="预算金额(元)" prop="budgetMoney"></el-table-column>
</el-table>
</el-descriptions-item>
</el-descriptions>
<div v-if="viewData.auditState>1&&viewData.schoolAuditId" class="mt20">
<vi-title title="校工会审核信息"></vi-title>
<el-descriptions :column="3" border class="table_fixed">
<el-descriptions-item label="审核人">
{{ viewData.schoolAudit.username }}
</el-descriptions-item>
<el-descriptions-item label="工号">
{{ viewData.schoolAudit.loginname }}
</el-descriptions-item>
<el-descriptions-item label="审核时间">
{{ viewData.schoolAudit.auditTime }}
</el-descriptions-item>
<el-descriptions-item label="审核意见">
{{ viewData.schoolAudit.auditOpinion }}
</el-descriptions-item>
</el-descriptions>
</div>
<div v-if="viewData.allocationEditAuditList&&viewData.allocationEditAuditList.length>0" class="mt20">
<vi-title title="管理员编辑信息"></vi-title>
<div v-for="(item,index) in viewData.allocationEditAuditList" :key="index">
<el-descriptions :column="3" border class="table_fixed">
<el-descriptions-item label="审核人">
{{ item.username }}
</el-descriptions-item>
<el-descriptions-item label="工号">
{{ item.loginname }}
</el-descriptions-item>
<el-descriptions-item label="审核时间">
{{ item.auditTime }}
</el-descriptions-item>
<el-descriptions-item label="编辑前金额">
{{ item.ext.money }}
</el-descriptions-item>
<el-descriptions-item span="2"></el-descriptions-item>
<el-descriptions-item label="审核意见" span="3">
{{ item.auditOpinion }}
</el-descriptions-item>
<el-descriptions-item label="审核附件" span="3">
<file-upload :files.sync="item.ext.files" view></file-upload>
</el-descriptions-item>
</el-descriptions>
</div>
</div>
<div v-if="handle">
<slot name="handle"></slot>
</div>
</div>
</template>
<script>
module.exports = {
props: {
handle: {
type: Boolean,
default: false,
},
label: {
type: String,
default: '审核'
},
panes: {
type: Array,
default: []
},
},
data() {
return {
activeName: "1",
viewData: {},
budgetTypeOption: [],
loading: true,
}
},
methods: {
hasPane(name) {
if (!this.handle) {
return true
}
return this.panes.includes(name)
},
async getInfo(id) {
this.loading = true
this.budgetTypeOption = await getDictByCode("ACTIVITY_BUDGET_TYPE");
const {data, code, msg} = await $.get("/platform/activity/budget/applyList/findOne", {id})
this.loading = false
if (data) {
this.activeName = this.handle ? "999" : "1"
this.viewData = data
} else {
this.viewData = {}
this.$message({
message: "获取信息失败",
type: 'error'
});
}
},
getSummaries(param) {
const {columns, data} = param;
const sums = [];
columns.forEach((column, index) => {
if (index === 0) {
sums[index] = '合计';
return;
}
const values = data.map(item => Number(item[column.property]));
if (index === 2 || index === 3) {
sums[index] = values.reduce((prev, curr) => {
const value = Number(curr);
if (!isNaN(value)) {
return prev + curr;
} else {
return prev;
}
}, 0).toFixed(2);
sums[index] += ' 元';
} else {
sums[index] = '';
}
});
return sums;
}
}
}
</script>