费用结算

This commit is contained in:
hongchao 2025-02-19 13:40:38 +08:00
parent be9ee7a8c9
commit e861dd69d8
3 changed files with 201 additions and 37 deletions

View File

@ -10,10 +10,10 @@
>报废明细导出</el-button>
<el-button type="primary" size="mini" @click="handleExport2"
>丢失明细导出</el-button>
<el-button type="primary" size="mini" @click="handleExport5"
>减免明细导出</el-button>
<el-button type="warning" size="mini" @click="handleExportAll"
>全部明细导出</el-button>
<el-button type="success" size="mini" @click="handleAdd"
>提交</el-button>
</el-col>
<!-- <el-col :span="4">
<el-button type="danger" size="mini" style="float: right" @click="handleBack"
@ -31,16 +31,52 @@
<div class="tabelAllTop">
<div class="costTop">结算费用</div>
</div>
<div class="tabelAllTop">
<div class="costTopTwo">本工程清算项目及金额</div>
</div>
<div class="tabelAllTopUnit">
<div class="costTopUnit">结算单位</div>
<div class="costTopUnit">施工机具有偿使用费</div>
<div class="costRightUnit">
{{ unitName }}
{{ '¥924427.53' }}
</div>
</div>
<div class="tabelAllTopUnit">
<div class="costTopUnit">结算工程</div>
<div class="costTopUnit">施工机具维修费</div>
<div class="costRightUnit">
{{ projectName }}
{{ '¥924427.53' }}
</div>
</div>
<div class="tabelAllTopUnit">
<div class="costTopUnit">施工机具丢失费</div>
<div class="costRightUnit">
{{ '¥924427.53' }}
</div>
</div>
<div class="tabelAllTopUnit">
<div class="costTopUnit">施工机具损坏赔偿费</div>
<div class="costRightUnit">
{{ '¥924427.53' }}
</div>
</div>
<div class="tabelAllTopThree">
<div class="costLeft">
<div class="costOne">费用合计金额(大写) :</div>
<div class="costTwo">{{finishCostName}}</div>
</div>
<div class="costRight">
{{ finishCost }}
</div>
</div>
<div class="tabelAllTopFour">
<div class="costTopOne">说明</div>
<div class="costRightTwo">
{{ '本协议一式三份,甲方一份,乙方一份,经双方签字后生效。' }}
</div>
</div>
<div class="tabelAllTopFour">
<div class="costTopOne">备注</div>
<div class="costRightTwo">
{{ '此费用仅为在机具设备分公司发生费用,未计从项目部领用机具费用。' }}
</div>
</div>
<el-table :data="leaseList">
@ -174,6 +210,39 @@
</div>
</div>
<div>
<el-table :data="loseList">
<el-table-column label="减免费用明细" align="center">
<el-table-column label="序号" align="center" type="index" width="60"/>
<el-table-column label="设备名称" align="center" prop="typeName" :show-overflow-tooltip="true"/>
<el-table-column label="规格型号" align="center" prop="modelName" :show-overflow-tooltip="true"/>
<el-table-column label="计量单位" align="center" prop="mtUnitName" :show-overflow-tooltip="true"/>
<el-table-column label="租赁单价" align="center" prop="num" :show-overflow-tooltip="true"/>
<el-table-column label="减免数量" align="center" prop="num" :show-overflow-tooltip="true"/>
<el-table-column label="减免开始日期" align="center" prop="num" :show-overflow-tooltip="true"/>
<el-table-column label="减免结束日期" align="center" prop="num" :show-overflow-tooltip="true"/>
<el-table-column label="减免天数" align="center" prop="num" :show-overflow-tooltip="true"/>
<el-table-column label="减免原因" align="center" prop="num" :show-overflow-tooltip="true"/>
<el-table-column label="减免费用(元)" align="center" prop="costs" :show-overflow-tooltip="true">
<template slot-scope="scope" v-if="scope.row.costs">
{{ scope.row.costs.toFixed(2) }}
</template>
</el-table-column>
</el-table-column>
</el-table>
<div class="tabelAllBottom">
<div class="columnAllNum">费用小计</div>
<div class="columnAll">
{{ loseCost }}
</div>
</div>
<div class="tabelAllBottom">
<div class="columnAllNum">合计</div>
<div class="columnAll">
{{ costAll.toFixed(2) }}
</div>
</div>
</div>
</div>
</template>
@ -203,11 +272,16 @@ export default {
scrapCost: 0,
loseList: [], //
loseCost: 0,
discountList: [], //
discountCost: 0,
costAll: 0,
deptName: undefined,
applyList: [],
projectName: undefined, //
unitName: undefined, //
finishCost: 343242.23,
finishCostName: '',
}
},
mounted() {
@ -286,26 +360,6 @@ export default {
return arrCost.toFixed(2)
},
//
handleAdd() {
this.$modal
.confirm('是否确认提交?')
.then(() => {
let params = {
'agreementId': this.rowData.agreementId, 'agreementCode': this.rowData.agreementCode,'totalCostAll': this.costAll,
'leaseList': this.leaseList, 'repairList': this.repairList, 'scrapList': this.scrapList,'loseList': this.loseList,
}
console.log('2222222222222',params)
submitCosts(params).then((response) => {
this.$message({
type: 'success',
message: '提交成功',
})
this.$emit('goBackPage')
})
})
.catch(() => {})
},
//el-table-
getSummaries(param) {
const { columns, data } = param
@ -397,6 +451,15 @@ export default {
// `_${new Date().getTime()}.xlsx`,
// )
},
//
handleExport2() {
const params = this.rowData
this.download(
'material/slt_agreement_info/exportLose',
{...params,},
`减免费用明细_${new Date().getTime()}.xlsx`,
)
},
handleExportAll() {
const params = this.rowData
@ -432,6 +495,16 @@ export default {
width:100%;
font-weight: bold; /* 添加字体加粗样式 */
}
.costTopTwo {
display: flex;
padding: 5px;
border-left: 1px solid #dfe6ec;
align-items: center;
text-align: center;
justify-content: center; /* 将内容对齐到中间 */
width:100%;
}
}
.tabelAllTopUnit {
display: flex;
@ -443,7 +516,7 @@ export default {
.costTopUnit {
display: flex;
padding: 5px;
width:21.4%;
width:60%;
border-left: none;
align-items: center;
text-align: center;
@ -455,11 +528,87 @@ export default {
border-left: 1px solid #dfe6ec;
text-align: center;
align-items: center;
width:100%;
width:40%;
justify-content: center; /* 将内容对齐到中间 */
// padding-left: 20px; /* */
}
}
.tabelAllTopThree {
display: flex;
border: 1px solid #dfe6ec;
width:100%;
height:50px;
background-color: #f8f8f9;
border-bottom: none;
.costLeft {
display: flex;
padding: 5px;
width:60%;
border-left: none;
align-items: center;
text-align: center;
justify-content: center; /* 将内容对齐到中间 */
.costOne {
display: flex;
padding: 5px;
width:50%;
border-left: none;
align-items: center;
text-align: center;
justify-content: center; /* 将内容对齐到中间 */
}
.costTwo {
display: flex;
padding: 5px;
width:50%;
border-left: 1px solid #dfe6ec;
align-items: center;
text-align: center;
justify-content: center; /* 将内容对齐到中间 */
}
}
.costRight {
display: flex;
padding: 5px;
border-left: 1px solid #dfe6ec;
text-align: center;
align-items: center;
width:40%;
justify-content: center; /* 将内容对齐到中间 */
// padding-left: 20px; /* */
}
}
.tabelAllTopFour {
display: flex;
border: 1px solid #dfe6ec;
width:100%;
height:50px;
background-color: #f8f8f9;
border-bottom: none;
.costTopOne {
display: flex;
padding: 5px;
width:30%;
border-left: none;
align-items: center;
text-align: center;
justify-content: center; /* 将内容对齐到中间 */
}
.costRightTwo {
display: flex;
padding: 5px;
border-left: 1px solid #dfe6ec;
text-align: center;
align-items: center;
width:70%;
justify-content: center; /* 将内容对齐到中间 */
// padding-left: 20px; /* */
}
}
.tabelAll {
display: flex;
border: 1px solid #dfe6ec;

View File

@ -1,6 +1,17 @@
<template>
<div class="app-container" id="costApplyList">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="80px">
<el-form-item prop="time">
<el-date-picker
v-model="queryParams.time"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
type="daterange"
value-format="yyyy-MM-dd"
style="width: 240px"
></el-date-picker>
</el-form-item>
<el-form-item prop="unitIds">
<treeselect
v-model="queryParams.unitId"
@ -261,6 +272,7 @@ export default {
projectId: null,
agreementId: '',
agreementCode: '',
time: null,
},
openPrint:false
}
@ -351,6 +363,7 @@ export default {
/** 查询列表 */
getList() {
this.loading = true
getSltAgreementInfo(this.queryParams).then((response) => {
this.tableList = response.rows
this.total = response.total
@ -366,6 +379,7 @@ export default {
resetQuery() {
this.unitIds=[]
this.projectIds=[]
this.queryParams.time=[]
this.queryParams={
pageNum: 1,
pageSize: 10,

View File

@ -839,8 +839,8 @@ export default {
const oneDay = 24 * 60 * 60 * 1000; //
if(pickStartTime<=new Date(item.startTime) && pickEndTime>=new Date(item.endTime)){
this.$set(item, 'reduceStartTime', item.startTime);
this.$set(item,'reduceEndTime', item.endTime);
this.$set(item, 'reduceStartTime', new Date(item.startTime));
this.$set(item,'reduceEndTime', new Date(item.endTime));
const diffDays = Math.ceil(Math.abs((item.reduceEndTime - item.reduceStartTime) / oneDay)) + (item.reduceEndTime - item.reduceStartTime === 0 ? 1 : 1);
this.$set(item, 'reduceDays', diffDays);
if(item.reduceNum && item.reduceDays && item.leasePrice){
@ -856,14 +856,14 @@ export default {
}
}else if(pickStartTime>=new Date(item.startTime) && pickEndTime>=new Date(item.endTime) && pickStartTime<=new Date(item.endTime)){
this.$set(item,'reduceStartTime', pickStartTime);
this.$set(item,'reduceEndTime', item.endTime);
this.$set(item,'reduceEndTime', new Date(item.endTime));
const diffDays = Math.ceil(Math.abs((item.reduceEndTime - item.reduceStartTime) / oneDay)) + (item.reduceEndTime - item.reduceStartTime === 0 ? 1 : 1);
this.$set(item, 'reduceDays', diffDays);
if(item.reduceNum && item.reduceDays && item.leasePrice){
this.$set(item, 'reduceLeaseMoney', item.reduceDays*item.leasePrice*item.reduceNum);
}
}else if(pickStartTime<=new Date(item.startTime) && pickEndTime<=new Date(item.endTime) && pickEndTime>=new Date(item.startTime)){
this.$set(item,'reduceStartTime', item.startTime);
this.$set(item,'reduceStartTime', new Date(item.startTime));
this.$set(item,'reduceEndTime', pickEndTime);
const diffDays = Math.ceil(Math.abs((item.reduceEndTime - item.reduceStartTime) / oneDay)) + (item.reduceEndTime - item.reduceStartTime === 0 ? 1 : 1);
this.$set(item, 'reduceDays', diffDays);
@ -940,8 +940,8 @@ export default {
const oneDay = 24 * 60 * 60 * 1000; //
if(pickStartTime<=new Date(item.startTime) && pickEndTime>=new Date(item.endTime)){
this.$set(item, 'reduceStartTime', item.startTime);
this.$set(item,'reduceEndTime', item.endTime);
this.$set(item, 'reduceStartTime', new Date(item.startTime));
this.$set(item,'reduceEndTime', new Date(item.endTime));
const diffDays = Math.ceil(Math.abs((item.reduceEndTime - item.reduceStartTime) / oneDay)) + (item.reduceEndTime - item.reduceStartTime === 0 ? 1 : 1);
this.$set(item, 'reduceDays', diffDays);
if(item.reduceNum && item.reduceDays && item.leasePrice){
@ -957,15 +957,16 @@ export default {
}
}else if(pickStartTime>=new Date(item.startTime) && pickEndTime>=new Date(item.endTime) && pickStartTime<=new Date(item.endTime)){
this.$set(item,'reduceStartTime', pickStartTime);
this.$set(item,'reduceEndTime', item.endTime);
this.$set(item,'reduceEndTime', new Date(item.endTime));
const diffDays = Math.ceil(Math.abs((item.reduceEndTime - item.reduceStartTime) / oneDay)) + (item.reduceEndTime - item.reduceStartTime === 0 ? 1 : 1);
this.$set(item, 'reduceDays', diffDays);
if(item.reduceNum && item.reduceDays && item.leasePrice){
this.$set(item, 'reduceLeaseMoney', item.reduceDays*item.leasePrice*item.reduceNum);
}
}else if(pickStartTime<=new Date(item.startTime) && pickEndTime<=new Date(item.endTime) && pickEndTime>=new Date(item.startTime)){
this.$set(item,'reduceStartTime', item.startTime);
this.$set(item,'reduceStartTime', new Date(item.startTime));
this.$set(item,'reduceEndTime', pickEndTime);
console.log('xxxxxxsadadadsa',item.reduceEndTime,item.reduceStartTime)
const diffDays = Math.ceil(Math.abs((item.reduceEndTime - item.reduceStartTime) / oneDay)) + (item.reduceEndTime - item.reduceStartTime === 0 ? 1 : 1);
this.$set(item, 'reduceDays', diffDays);
if(item.reduceNum && item.reduceDays && item.leasePrice){