This commit is contained in:
2025-09-02 11:36:10 +08:00
parent 57b0cc2244
commit d4f1795f22
95 changed files with 10034 additions and 6213 deletions
@@ -0,0 +1,184 @@
<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>
@@ -1,29 +1,8 @@
/**
*Desc:
*Create by: jug
*Create time:2023/7/28/9:55
*/
<template>
<div>
<template v-for="(item, index) in options">
<template v-if="values.includes(item.value)">
<span
v-if="item.raw.listClass == 'default' || item.raw.listClass == ''"
:key="item.value"
:index="index"
:class="item.raw.cssClass"
>{{ item.label }}</span
>
<van-tag
v-else
:disable-transitions="true"
:key="item.value"
:index="index"
:type="item.raw.listClass == 'primary' ? '' : item.raw.listClass"
:class="item.raw.cssClass"
>
{{ item.label }}
</van-tag>
<template v-if="values.includes(item[option_value])">
<span :key="item.value">{{ item[option_label] }}</span>
</template>
</template>
</div>
@@ -35,19 +14,27 @@ module.exports = {
props: {
options: {
type: Array,
default: null,
default: null
},
value: [Number, String, Array],
option_value: {
type: String,
default: "code"
},
option_label: {
type: String,
default: "name"
},
value: [Number, String, Array]
},
computed: {
values() {
if (this.value !== null && typeof this.value !== 'undefined') {
return Array.isArray(this.value) ? this.value : [String(this.value)];
if (this.value !== null && typeof this.value !== "undefined") {
return Array.isArray(this.value) ? this.value : [String(this.value)]
} else {
return [];
return []
}
},
},
}
}
}
</script>
@@ -55,4 +42,4 @@ module.exports = {
.el-tag + .el-tag {
margin-left: 10px;
}
</style>
</style>
@@ -3,7 +3,8 @@
<div>
<el-tabs tab-position="top" v-model="activeName" v-loading="loading" class="ml25">
<el-tab-pane label="申请信息" name="1">
<el-form label-suffix="" label-position="left" style="padding: 20px 0" class="ml25">
<el-form label-suffix="" label-position="left" style="padding: 20px 0" class="ml25"
label-width="140px">
<el-row gutter="60">
<el-col :span="12">
@@ -17,47 +18,73 @@
{{ viewData.mobile }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="报销类别">
{{ viewData.reimbursementItemSort === 'fy' ? '费用报销' : '支付凭证' }}
<el-form-item label="活动类型">
<dict-tag :options="budgetTypeOption"
:value="viewData.jf_source"></dict-tag>
</el-form-item>
</el-col>
<!--
<el-col :span="12">
<el-form-item label="报销类别">
{{ viewData.reimbursementItemSort === 'fy' ? '费用报销' : '支付凭证' }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="报销项目">
{{ viewData.reimbursementItemName }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="支付方式">
{{ viewData.paymentMethodName }}
</el-form-item>
</el-col>
-->
<!--
<el-col :span="12">
<el-form-item label="户名">
{{ viewData.bankUserName }}
</el-form-item>
</el-col>
-->
<el-col :span="12">
<el-form-item label="报销项目">
{{ viewData.reimbursementItemName }}
<el-form-item label="申报单位">
<span v-if="['ACTIVITY_BUDGET_TYPE_ONE','ACTIVITY_BUDGET_TYPE_FOUR'].includes(viewData.jf_source)">校工会</span>
<span v-if="['ACTIVITY_BUDGET_TYPE_TWO'].includes(viewData.jf_source)&&['4270', '4330', '4450'].includes(viewData.unitId)">{{viewData.unitName}}</span>
<span v-if="['ACTIVITY_BUDGET_TYPE_TWO'].includes(viewData.jf_source)&&!['4270', '4330', '4450'].includes(viewData.unitId)">{{viewData.unionName}}</span>
<span v-if="['ACTIVITY_BUDGET_TYPE_THREE'].includes(viewData.jf_source)">{{viewData.clubName}}</span>
</el-form-item>
</el-col>
<!-- <el-col :span="12" v-if="viewData.jf_source==='ACTIVITY_BUDGET_TYPE_TWO'">
<el-form-item label="所属工会">
{{ viewData.newUnionName }}
</el-form-item>
</el-col>-->
<!--
<el-col :span="12">
<el-form-item label="银行账号">
{{ viewData.bankCardNumber }}
</el-form-item>
</el-col>-->
<el-col :span="12">
<el-form-item label="支付方式">
{{ viewData.paymentMethodName }}
</el-form-item>
</el-col>
<!--
<el-col :span="12">
<el-form-item label="开户行">
{{ viewData.bankOfDeposit }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="户名">
{{ viewData.bankUserName }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="银行账号">
{{ viewData.bankCardNumber }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="开户行">
{{ viewData.bankOfDeposit }}
</el-form-item>
</el-col>
-->
</el-row>
<el-row gutter="60" v-if="viewData.reimbursementItemId==='fyww'||viewData.reimbursementItemId==='zfww'">
<el-row gutter="60"
v-if="viewData.reimbursementItemId==='fyww'||viewData.reimbursementItemId==='zfww'">
<el-col :span="12">
<el-form-item label="慰问对象">
{{ viewData.be_username }}({{ viewData.be_loginname }})
@@ -185,11 +212,11 @@
</el-form-item>
</el-col>
<el-col v-if="viewData.reimbursementItemId=='fyhd'" :span="12">
<el-form-item label="活动类型">
{{ viewData.activity_type === '1' ? '分工会活动' : viewData.activity_type === '2' ? '校工会活动' : '协会活动' }}
</el-form-item>
</el-col>
<!-- <el-col v-if="viewData.reimbursementItemId=='fyhd'" :span="12">
<el-form-item label="活动类型">
{{ viewData.activity_type === '1' ? '分工会活动' : viewData.activity_type === '2' ? '校工会活动' : '协会(社团)活动' }}
</el-form-item>
</el-col>-->
<el-col :span="12" v-if="viewData.activity_number">
@@ -199,11 +226,11 @@
</el-col>
<el-col :span="12">
<el-form-item label="活动地点">
{{ viewData.venue }}
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="活动地点">
{{ viewData.venue }}
</el-form-item>
</el-col>-->
<el-col :span="12">
<el-form-item label="报销金额">
@@ -217,17 +244,17 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="发票张数">
{{ viewData.files_num }}
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="发票张数">
{{ viewData.files_num }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="发票号码">
{{ viewData.billNumber }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="发票号码">
{{ viewData.billNumber }}
</el-form-item>
</el-col>-->
</el-row>
@@ -239,11 +266,11 @@
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="备注">
{{ viewData.remark }}
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="备注">
{{ viewData.remark }}
</el-form-item>
</el-col>-->
<el-col :span="24">
@@ -253,30 +280,191 @@
<span v-else>暂无</span>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="签字">
<el-image style="width: 200px;height:auto"
:src="'/signature/getSignData?path=' +viewData.signUrl"></el-image>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-tab-pane>
<el-tab-pane label="审核信息" name="2" v-if="viewData.accountingAuditId">
<el-tab-pane label="协会审核信息" name="2" v-if="viewData.clubAuditId">
<el-form label-suffix="" label-position="left" style="padding: 20px 0" class="ml25">
<el-col :span="12">
<el-form-item label="审核人">
{{ viewData.accounting.username }}({{ viewData.accounting.loginname }})
{{ viewData.clubAudit.username }}({{ viewData.clubAudit.loginname }})
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
{{ viewData.accounting.auditTime }}
{{ viewData.clubAudit.auditTime }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="24">
<el-form-item label="审核意见">
{{ viewData.accounting.auditOpinion ? viewData.accounting.auditOpinion : '暂无' }}
{{ viewData.clubAudit.auditOpinion ? viewData.clubAudit.auditOpinion : '暂无' }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="签字">
<el-image style="width: 200px;height:auto"
:src="'/signature/getSignData?path=' +viewData.clubAudit.auditSign"></el-image>
</el-form-item>
</el-col>
</el-form>
</el-tab-pane>
<el-tab-pane label="分工会主席审核信息" name="3" v-if="viewData.unionAuditId">
<el-form label-suffix="" label-position="left" style="padding: 20px 0" class="ml25">
<el-col :span="12">
<el-form-item label="审核人">
{{ viewData.unionAudit.username }}({{ viewData.unionAudit.loginname }})
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
{{ viewData.unionAudit.auditTime }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="审核意见">
{{ viewData.unionAudit.auditOpinion ? viewData.unionAudit.auditOpinion : '暂无' }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="签字">
<el-image style="width: 200px;height:auto"
:src="'/signature/getSignData?path=' +viewData.unionAudit.auditSign"></el-image>
</el-form-item>
</el-col>
</el-form>
</el-tab-pane>
<el-tab-pane label="工会办公室主管审核信息" name="4" v-if="viewData.unionManageAuditId">
<el-form label-suffix="" label-position="left" style="padding: 20px 0" class="ml25">
<el-col :span="12">
<el-form-item label="审核人">
{{ viewData.unionManageAudit.username }}({{ viewData.unionManageAudit.loginname }})
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
{{ viewData.unionManageAudit.auditTime }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="审核意见">
{{ viewData.unionManageAudit.auditOpinion ? viewData.unionManageAudit.auditOpinion : '暂无' }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="签字">
<el-image style="width: 200px;height:auto"
:src="'/signature/getSignData?path=' +viewData.unionManageAudit.auditSign"></el-image>
</el-form-item>
</el-col>
</el-form>
</el-tab-pane>
<el-tab-pane label="工会副主席审核信息" name="5" v-if="viewData.viceChairmanAuditId">
<el-form label-suffix="" label-position="left" style="padding: 20px 0" class="ml25">
<el-col :span="12">
<el-form-item label="审核人">
{{ viewData.viceChairmanAudit.username }}({{ viewData.viceChairmanAudit.loginname }})
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
{{ viewData.viceChairmanAudit.auditTime }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="审核意见">
{{ viewData.viceChairmanAudit.auditOpinion ? viewData.viceChairmanAudit.auditOpinion : '暂无' }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="签字">
<el-image style="width: 200px;height:auto"
:src="'/signature/getSignData?path=' +viewData.viceChairmanAudit.auditSign"></el-image>
</el-form-item>
</el-col>
</el-form>
</el-tab-pane>
<el-tab-pane label="工会主席信息" name="6" v-if="viewData.standingViceChairmanAuditId">
<el-form label-suffix="" label-position="left" style="padding: 20px 0" class="ml25">
<el-col :span="12">
<el-form-item label="审核人">
{{ viewData.standingViceChairmanAudit.username }}({{ viewData.standingViceChairmanAudit.loginname }})
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
{{ viewData.standingViceChairmanAudit.auditTime }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="审核意见">
{{ viewData.standingViceChairmanAudit.auditOpinion ? viewData.standingViceChairmanAudit.auditOpinion : '暂无' }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="签字">
<el-image style="width: 200px;height:auto"
:src="'/signature/getSignData?path=' +viewData.standingViceChairmanAudit.auditSign"></el-image>
</el-form-item>
</el-col>
</el-form>
</el-tab-pane>
<el-tab-pane label="会计审核信息" name="7" v-if="viewData.financeAuditId">
<el-form label-suffix="" label-position="left" style="padding: 20px 0" class="ml25">
<el-col :span="12">
<el-form-item label="审核人">
{{ viewData.financeAudit.username }}({{ viewData.financeAudit.loginname }})
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="审核时间">
{{ viewData.financeAudit.auditTime }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="明细类">
<dict-tag :options="detailsTypeOption"
:value="viewData.detailsTypeId"></dict-tag>
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item label="上账明细">
{{viewData.accountViewName}}
</el-form-item>
</el-col>-->
<!-- <el-col :span="12">
<el-form-item label="会计核对扣款分类">
<dict-tag :options="budgetTypeOption"
:value="viewData.new_jf_source"></dict-tag>
</el-form-item>
</el-col>-->
<!--
<el-col :span="12" v-if="viewData.newClubId">
<el-form-item label="会计核对扣款协会">
{{ viewData.nweClubName }}
</el-form-item>
</el-col>-->
<el-col :span="24">
<el-form-item label="审核意见">
{{ viewData.financeAudit.auditOpinion ? viewData.financeAudit.auditOpinion : '暂无' }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="签字">
<el-image style="width: 200px;height:auto"
:src="'/signature/getSignData?path=' +viewData.financeAudit.auditSign"></el-image>
</el-form-item>
</el-col>
</el-form>
</el-tab-pane>
<el-tab-pane v-if="handle" :label="label" name="999">
@@ -304,6 +492,8 @@ module.exports = {
},
data() {
return {
budgetTypeOption: [],
detailsTypeOption: [],
activeName: "1",
viewData: {},
loading: true,
@@ -321,14 +511,14 @@ module.exports = {
},
async getInfo(id) {
this.loading = true
this.budgetTypeOption = await getDictByCode("ACTIVITY_BUDGET_TYPE");
this.detailsTypeOption = await getDictByCode("ACTIVITY_BUDGET_DETAILS_TYPE");
const {data, code, msg} = await $.get("/activity/reimbursement/list/findOne", {id})
this.loading = false
if (data) {
this.activeName = this.handle ? "999" : "1"
condolence.toFormData(data)
this.viewData = data
console.log(this.viewData)
} else {
this.viewData = {}
this.$message({