bonus-ui/src/views/material/costPush/pushReview/index.vue

1030 lines
37 KiB
Vue
Raw Normal View History

2025-01-22 16:13:23 +08:00
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" v-show="showSearch" :inline="true" label-width="80px">
2025-09-14 11:55:54 +08:00
<!-- <el-form-item label="选择单位" prop="unitId">-->
<!-- <treeselect-->
<!-- v-model="queryParams.unitId"-->
<!-- :options="unitList" :normalizer="normalizer"-->
<!-- :show-count="true" style="width: 215px" :disable-branch-nodes="true"-->
<!-- noChildrenText="没有数据了" noOptionsText="没有数据" noResultsText="没有搜索结果"-->
<!-- placeholder="请选择单位" @select="unitChange"-->
<!-- />-->
<!-- </el-form-item>-->
<!-- <el-form-item label="选择工程" prop="projectId">-->
<!-- <treeselect-->
<!-- v-model="queryParams.projectId"-->
<!-- :options="proList" :normalizer="normalizer"-->
<!-- :show-count="true" style="width: 215px" :disable-branch-nodes="true"-->
<!-- noChildrenText="没有数据了" noOptionsText="没有数据" noResultsText="没有搜索结果"-->
<!-- placeholder="请选择工程" @select="proChange"-->
<!-- />-->
<!-- </el-form-item>-->
2025-01-22 16:13:23 +08:00
<el-form-item label="协议号" prop="agreementCode">
2025-09-14 11:55:54 +08:00
<el-input v-model="queryParams.agreementCode" placeholder="协议号" clearable/>
2025-01-22 16:13:23 +08:00
</el-form-item>
<el-form-item label="推送月份" prop="month">
<el-date-picker
v-model="queryParams.month"
type="month"
2025-01-24 16:39:38 +08:00
placeholder="请选择月份"
2025-02-06 16:15:03 +08:00
value-format="yyyy-MM"
:clearable="false"
@input="handleMonthInput">
2025-01-22 16:13:23 +08:00
</el-date-picker>
</el-form-item>
2025-09-14 11:55:54 +08:00
<!-- <el-form-item label="是否过滤" prop="isFilter">-->
<!-- <el-select v-model="queryParams.isFilter" placeholder="请选择" clearable>-->
<!-- <el-option label="已过滤" value="0"></el-option>-->
<!-- <el-option label="未过滤" value="1"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
<el-form-item label="是否结算" prop="isSettlement">
<el-select v-model="queryParams.isSettlement" placeholder="请选择" clearable>
2025-09-25 12:01:34 +08:00
<el-option label="已结算" value="1"></el-option>
<el-option label="未结算" value="0"></el-option>
2025-01-22 16:13:23 +08:00
</el-select>
</el-form-item>
2025-09-14 11:55:54 +08:00
2025-09-25 12:01:34 +08:00
<!-- <el-form-item label="费用归属" prop="settlementType">
2025-09-14 11:55:54 +08:00
<el-select v-model="queryParams.settlementType" placeholder="请选择" clearable>
<el-option label="工器具" value="1"></el-option>
<el-option label="安全用品" value="2"></el-option>
</el-select>
2025-09-25 12:01:34 +08:00
</el-form-item> -->
2025-09-14 11:55:54 +08:00
<!-- <el-form-item label="是否审核" prop="isReview">-->
<!-- <el-select v-model="queryParams.isReview" placeholder="请选择" clearable>-->
<!-- <el-option label="已审核" value="0"></el-option>-->
<!-- <el-option label="未审核" value="1"></el-option>-->
<!-- </el-select>-->
<!-- </el-form-item>-->
2025-01-22 16:13:23 +08:00
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
>导出</el-button
>
<el-button
type="success"
plain
size="mini"
@click="handleSubmit"
>提交</el-button
>
</el-form-item>
</el-form>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
<el-table
v-loading="loading"
:data="pushReviewList"
ref="multipleTable"
row-key="id"
@selection-change="handleSelectionChange"
2025-02-10 09:19:20 +08:00
:span-method="objectSpanMethod"
2025-01-24 16:39:38 +08:00
border
2025-08-21 11:24:07 +08:00
:max-height="650"
2025-01-22 16:13:23 +08:00
>
2025-07-24 14:23:57 +08:00
<el-table-column type="selection" align="center" :selectable="selectable"/>
<el-table-column label="序号" align="center" type="index">
2025-02-10 09:19:20 +08:00
<template scope="scope">
<span style="background-color: #f8f8f9;text-align: center;" v-if="scope.$index==pushReviewList.length-1">合计费用</span>
<span v-else>{{ scope.$index+1 }} </span>
</template>
</el-table-column>
2025-01-24 16:39:38 +08:00
<el-table-column label="协议号" align="center" prop="agreementCode" show-overflow-tooltip />
2025-07-24 14:23:57 +08:00
<el-table-column label="单位名称" align="center" prop="unitName" width="180" />
<el-table-column label="工程名称" align="center" prop="projectName" width="180" />
<el-table-column label="推送月份" align="center" prop="month" width="100" >
2025-02-06 16:15:03 +08:00
<template slot-scope="scope" >
<span>
{{originalMonthTrue}}
</span>
</template>
</el-table-column>
2025-08-30 22:17:52 +08:00
<el-table-column label="费用所属" align="center" prop="settlementType" width="100" >
<template slot-scope="scope" >
<el-tag v-if="scope.row.settlementType == 1" type="primary" size="small">工器具</el-tag>
<el-tag v-if="scope.row.settlementType == 2" type="warning" size="small">安全用品</el-tag>
</template>
</el-table-column>
2025-07-24 14:23:57 +08:00
<el-table-column label="租赁费用" align="center" prop="leaseMoney" >
2025-01-22 16:13:23 +08:00
<template slot-scope="scope" >
2025-02-10 09:19:20 +08:00
<span class="clickText" v-if="scope.row.leaseMoney!=null && scope.$index!=pushReviewList.length-1" @click="openLease(scope.row)">
{{scope.row.leaseMoney}}
</span>
<span v-if="scope.row.leaseMoney!=null && scope.$index==pushReviewList.length-1" >
2025-08-30 22:17:52 +08:00
{{Number(scope.row.leaseMoney).toFixed(3)}}
2025-01-22 16:13:23 +08:00
</span>
</template>
</el-table-column>
2025-01-24 16:39:38 +08:00
<el-table-column label="维修费用" align="center" prop="repairMoney" show-overflow-tooltip >
2025-01-22 16:13:23 +08:00
<template slot-scope="scope" >
2025-02-10 09:19:20 +08:00
<span class="clickText" v-if="scope.row.repairMoney!=null && scope.$index!=pushReviewList.length-1" @click="openRepair(scope.row)">
{{scope.row.repairMoney}}
</span>
<span v-if="scope.row.repairMoney!=null && scope.$index==pushReviewList.length-1" >
2025-08-30 22:17:52 +08:00
{{Number(scope.row.repairMoney).toFixed(3)}}
2025-01-22 16:13:23 +08:00
</span>
</template>
</el-table-column>
2025-01-24 16:39:38 +08:00
<el-table-column label="报废费用" align="center" prop="scrapMoney" show-overflow-tooltip >
2025-01-22 16:13:23 +08:00
<template slot-scope="scope" >
2025-02-10 09:19:20 +08:00
<span class="clickText" v-if="scope.row.scrapMoney!=null && scope.$index!=pushReviewList.length-1" @click="openScrap(scope.row)">
{{scope.row.scrapMoney}}
</span>
<span v-if="scope.row.scrapMoney!=null && scope.$index==pushReviewList.length-1" >
2025-08-30 22:17:52 +08:00
{{Number(scope.row.scrapMoney).toFixed(3)}}
2025-01-22 16:13:23 +08:00
</span>
</template>
</el-table-column>
2025-02-06 16:15:03 +08:00
<el-table-column label="丢失费用" align="center" prop="lostMoney" show-overflow-tooltip >
2025-01-22 16:13:23 +08:00
<template slot-scope="scope" >
2025-02-10 09:19:20 +08:00
<span class="clickText" v-if="scope.row.lostMoney!=null && scope.$index!=pushReviewList.length-1" @click="openLose(scope.row)">
{{scope.row.lostMoney}}
</span>
<span v-if="scope.row.lostMoney!=null && scope.$index==pushReviewList.length-1" >
2025-08-30 22:17:52 +08:00
{{Number(scope.row.lostMoney).toFixed(3)}}
2025-01-22 16:13:23 +08:00
</span>
</template>
</el-table-column>
2025-01-24 16:39:38 +08:00
<el-table-column label="合计费用" align="center" prop="money" show-overflow-tooltip >
2025-01-22 16:13:23 +08:00
<template slot-scope="scope" >
2025-08-30 22:17:52 +08:00
<span v-if="scope.row.money!=null && scope.$index==pushReviewList.length-1" >
{{Number(scope.row.money).toFixed(3)}}
</span>
<span v-if="scope.row.money!=null && scope.$index!=pushReviewList.length-1" >
2025-01-24 16:39:38 +08:00
{{scope.row.money}}
2025-01-22 16:13:23 +08:00
</span>
</template>
</el-table-column>
2025-07-24 14:23:57 +08:00
<el-table-column label="是否结算" align="center" prop="isSettlement" width="100" >
2025-01-22 16:13:23 +08:00
<template slot-scope="scope" >
2025-01-24 16:39:38 +08:00
<span v-if="scope.row.isSettlement==1" style="color: #67c23a">已结算</span>
<span v-if="scope.row.isSettlement==0" style="color: #f56c6c">未结算</span>
2025-01-22 16:13:23 +08:00
</template>
</el-table-column>
2025-07-24 14:23:57 +08:00
<el-table-column label="是否审核" align="center" prop="checkStatus" width="100" >
2025-01-22 16:13:23 +08:00
<template slot-scope="scope" >
2025-02-10 09:19:20 +08:00
<span v-if="scope.row.checkStatus==1" style="color: #67c23a">已审核</span>
<span v-if="scope.row.checkStatus==0" style="color: #f56c6c">未审核</span>
2025-01-22 16:13:23 +08:00
</template>
2025-09-14 11:55:54 +08:00
</el-table-column>
2025-01-22 16:13:23 +08:00
</el-table>
2025-02-10 09:19:20 +08:00
<!-- <div class="tabelFirstBottom">
2025-01-24 16:39:38 +08:00
<div class="columnFirstNum">合计费用</div>
<div style="display: flex;width:58%">
2025-02-06 16:15:03 +08:00
<div class="columnFirst">{{ leaseAll.toFixed(2) }}</div>
<div class="columnFirst">{{ repairAll.toFixed(2) }}</div>
<div class="columnFirst">{{ scrapAll.toFixed(2) }}</div>
<div class="columnFirst">{{ loseAll.toFixed(2) }}</div>
<div class="columnFirst">{{ moneyAll.toFixed(2) }}</div>
2025-01-24 16:39:38 +08:00
<div class="columnFirstRight"></div>
</div>
2025-02-10 09:19:20 +08:00
</div> -->
2025-01-22 16:13:23 +08:00
<!-- 租赁费用弹窗-->
2025-08-30 22:17:52 +08:00
<el-dialog :title="title" :visible.sync="showLease" width="1300px" append-to-body>
2025-01-22 16:13:23 +08:00
<el-form :model="dialogLease" ref="dialogLease" size="small" :inline="true" label-width="80px">
<el-form-item label="物资名称" prop="typeName">
<el-input
v-model="dialogLease.typeName"
placeholder="请输入物资名称"
clearable :maxlength="30"
style="width: 240px"/>
</el-form-item>
<el-form-item label="规格型号" prop="modelName">
<el-input
v-model="dialogLease.modelName"
placeholder="请输入规格型号"
clearable :maxlength="30"
style="width: 240px"/>
</el-form-item>
<el-form-item>
<el-button type="primary"
icon="el-icon-search" size="mini"
@click="handleQueryLease"
>查询</el-button>
</el-form-item>
<el-form-item>
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExportLease"
>导出</el-button>
</el-form-item>
</el-form>
2025-01-24 17:50:01 +08:00
<el-table v-loading="loading" :data="dialogLeaseList" height="500px" border>
<el-table-column label="序号" align="center" width="80" type="index" />
2025-01-22 16:13:23 +08:00
<el-table-column label="物资名称" align="center" prop="typeName" :show-overflow-tooltip="true"/>
<el-table-column label="规格型号" align="center" prop="modelName" :show-overflow-tooltip="true"/>
2025-08-30 22:17:52 +08:00
<el-table-column label="计量单位" align="center" prop="mtUnitName" :show-overflow-tooltip="true"/>
2025-01-22 16:13:23 +08:00
<el-table-column label="租赁单价" align="center" prop="leasePrice" :show-overflow-tooltip="true"/>
2025-08-30 22:17:52 +08:00
<el-table-column label="租赁数量" align="center" prop="num" :show-overflow-tooltip="true"/>
<el-table-column label="计算开始时间" align="center" prop="calcStartTime" width="120px"/>
<el-table-column label="计算结束时间" align="center" prop="calcEndTime" width="120px"/>
<el-table-column label="实际开始时间" align="center" prop="startTime" width="120px"/>
<el-table-column label="实际结束时间" align="center" prop="endTime" width="120px">
<template slot-scope="scope">
<span v-if="scope.row.endTime">{{ scope.row.endTime }}</span>
<span v-else style="color: #909399;">未归还</span>
</template>
</el-table-column>
2025-01-22 16:13:23 +08:00
<el-table-column label="租赁天数" align="center" prop="leaseDays" :show-overflow-tooltip="true"/>
2025-08-30 22:17:52 +08:00
<el-table-column label="租赁费用" align="center" width="126px" prop="leaseCost" :show-overflow-tooltip="true">
2025-01-22 16:13:23 +08:00
<template slot-scope="scope">
2025-08-30 22:17:52 +08:00
{{ scope.row.leaseCost.toFixed(2) }}
2025-01-22 16:13:23 +08:00
</template>
2025-09-14 11:55:54 +08:00
</el-table-column>
2025-01-22 16:13:23 +08:00
</el-table>
<div class="tabelAllBottom">
<div class="columnAllNum">合计费用</div>
<div class="columnAll">
2025-01-24 17:50:01 +08:00
{{ leaseAllMoney.toFixed(2) }}
2025-01-22 16:13:23 +08:00
</div>
</div>
</el-dialog>
<!-- 维修费用弹窗-->
<el-dialog :title="title" :visible.sync="showRepair" width="1200px" append-to-body>
<el-form :model="dialogRepair" ref="dialogRepair" size="small" :inline="true" label-width="80px">
<el-form-item label="物资名称" prop="typeName">
<el-input
v-model="dialogRepair.typeName"
placeholder="请输入物资名称"
clearable :maxlength="30"
style="width: 240px"/>
</el-form-item>
<el-form-item label="规格型号" prop="modelName">
<el-input
v-model="dialogRepair.modelName"
placeholder="请输入规格型号"
clearable :maxlength="30"
style="width: 240px"/>
</el-form-item>
<el-form-item>
<el-button type="primary"
icon="el-icon-search" size="mini"
@click="handleQueryRepair"
>查询</el-button>
</el-form-item>
<el-form-item>
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExportRepair"
>导出</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="dialogRepairList" border>
<el-table-column label="序号" align="center" width="80" type="index" >
<template slot-scope="scope">
<span>{{
(dialogRepair.pageNum - 1) * dialogRepair.pageSize + scope.$index + 1
}}</span>
</template>
</el-table-column>
<el-table-column label="物资名称" align="center" prop="typeName" :show-overflow-tooltip="true"/>
<el-table-column label="规格型号" align="center" prop="modelName" :show-overflow-tooltip="true"/>
2025-02-06 16:15:03 +08:00
<el-table-column label="计量单位" align="center" prop="unitName" :show-overflow-tooltip="true"/>
2025-01-22 16:13:23 +08:00
<el-table-column label="维修数量" align="center" prop="num" :show-overflow-tooltip="true"/>
<el-table-column label="是否收费" align="center" prop="partType" :show-overflow-tooltip="true"/>
2025-02-06 16:15:03 +08:00
<el-table-column label="维修费用" align="center" width="130px" prop="repairMoney" :show-overflow-tooltip="true">
2025-01-22 16:13:23 +08:00
<template slot-scope="scope">
{{ scope.row.costs.toFixed(2) }}
</template>
</el-table-column>
</el-table>
<div class="tabelAllBottom">
<div class="columnAllNum">合计费用</div>
<div class="columnAll">
{{ 2530.55 }}
</div>
</div>
</el-dialog>
<!-- 报废费用弹窗-->
<el-dialog :title="title" :visible.sync="showScrap" width="1200px" append-to-body>
<el-form :model="dialogScrap" ref="dialogScrap" size="small" :inline="true" label-width="80px">
<el-form-item label="物资名称" prop="typeName">
<el-input
v-model="dialogScrap.typeName"
placeholder="请输入物资名称"
clearable :maxlength="30"
style="width: 240px"/>
</el-form-item>
<el-form-item label="规格型号" prop="modelName">
<el-input
v-model="dialogScrap.modelName"
placeholder="请输入规格型号"
clearable :maxlength="30"
style="width: 240px"/>
</el-form-item>
<el-form-item>
<el-button type="primary"
icon="el-icon-search" size="mini"
@click="handleQueryScrap"
>查询</el-button>
</el-form-item>
<el-form-item>
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExportScrap"
>导出</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="dialogScrapList" border>
<el-table-column label="序号" align="center" width="80" type="index" >
<template slot-scope="scope">
<span>{{
(dialogScrap.pageNum - 1) * dialogScrap.pageSize + scope.$index + 1
}}</span>
</template>
</el-table-column>
<el-table-column label="物资名称" align="center" prop="typeName" :show-overflow-tooltip="true"/>
<el-table-column label="规格型号" align="center" prop="modelName" :show-overflow-tooltip="true"/>
2025-02-06 16:15:03 +08:00
<el-table-column label="计量单位" align="center" prop="unitName" :show-overflow-tooltip="true"/>
2025-01-22 16:13:23 +08:00
<el-table-column label="报废数量" align="center" prop="num" :show-overflow-tooltip="true"/>
<el-table-column label="是否收费" align="center" prop="partType" :show-overflow-tooltip="true"/>
2025-02-06 16:15:03 +08:00
<el-table-column label="报废费用" align="center" width="130px" prop="scrapMoney" :show-overflow-tooltip="true">
2025-01-22 16:13:23 +08:00
<template slot-scope="scope">
{{ scope.row.costs.toFixed(2) }}
</template>
</el-table-column>
</el-table>
<div class="tabelAllBottom">
<div class="columnAllNum">合计费用</div>
<div class="columnAll">
{{ 2530.55 }}
</div>
</div>
</el-dialog>
<!-- 丢失费用弹窗-->
<el-dialog :title="title" :visible.sync="showLose" width="1200px" append-to-body>
<el-form :model="dialogLose" ref="dialogLose" size="small" :inline="true" label-width="80px">
<el-form-item label="物资名称" prop="typeName">
<el-input
v-model="dialogLose.typeName"
placeholder="请输入物资名称"
clearable :maxlength="30"
style="width: 240px"/>
</el-form-item>
<el-form-item label="规格型号" prop="modelName">
<el-input
v-model="dialogLose.modelName"
placeholder="请输入规格型号"
clearable :maxlength="30"
style="width: 240px"/>
</el-form-item>
<el-form-item>
<el-button type="primary"
icon="el-icon-search" size="mini"
@click="handleQueryLose"
>查询</el-button>
</el-form-item>
<el-form-item>
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExportLose"
>导出</el-button>
</el-form-item>
</el-form>
<el-table v-loading="loading" :data="dialogLoseList" border>
<el-table-column label="序号" align="center" width="80" type="index" >
<template slot-scope="scope">
<span>{{
(dialogLose.pageNum - 1) * dialogLose.pageSize + scope.$index + 1
}}</span>
</template>
</el-table-column>
<el-table-column label="物资名称" align="center" prop="typeName" :show-overflow-tooltip="true"/>
<el-table-column label="规格型号" align="center" prop="modelName" :show-overflow-tooltip="true"/>
2025-02-06 16:15:03 +08:00
<el-table-column label="计量单位" align="center" prop="unitName" :show-overflow-tooltip="true"/>
2025-01-22 16:13:23 +08:00
<el-table-column label="丢失数量" align="center" prop="num" :show-overflow-tooltip="true"/>
2025-02-06 16:15:03 +08:00
<el-table-column label="丢失费用" align="center" width="130px" prop="loseMoney" :show-overflow-tooltip="true">
2025-01-22 16:13:23 +08:00
<template slot-scope="scope">
{{ scope.row.costs.toFixed(2) }}
</template>
</el-table-column>
</el-table>
<div class="tabelAllBottom">
<div class="columnAllNum">合计费用</div>
<div class="columnAll">
{{ 2530.55 }}
</div>
</div>
</el-dialog>
</div>
2025-09-14 11:55:54 +08:00
</template>
2025-01-22 16:13:23 +08:00
<script>
import {
getProjectList,
getUnitList,
2025-09-14 11:55:54 +08:00
getAgreementInfoById,
} from '@/api/back/index.js'
2025-09-25 12:01:34 +08:00
import {getPushReviewList,getLeaseList,getRepairList,getLoseList,getScrapList,submitPushCosts } from "@/api/costPush/costPush";
2025-01-22 16:13:23 +08:00
import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default {
2025-05-14 09:31:18 +08:00
name: "PushReview",
2025-01-22 16:13:23 +08:00
data() {
return {
// 遮罩层
loading: false,
// 显示搜索条件
showSearch: true,
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
// 总条数
total: 0,
// 费用推送审核表格数据
pushReviewList: [],
// 弹出层标题
title: "",
// 是否显示弹出层
open: false,
// 单位数据
unitList: [],
// 工程数据
proList: [],
2025-02-06 16:15:03 +08:00
//合计
moneyAll: 0,
//租赁合计
leaseAll: 0,
//维修合计
repairAll: 0,
//报废合计
scrapAll: 0,
//丢失合计
loseAll: 0,
2025-01-22 16:13:23 +08:00
// 查询参数
queryParams: {
unitId: null,
projectId: null,
agreementId: '',
agreementCode: '',
month: null,
isReview: null,
2025-09-14 11:55:54 +08:00
isSettlement: null,
2025-09-25 12:01:34 +08:00
settlementType: 1,
2025-01-22 16:13:23 +08:00
isFilter: null,
},
// 多选框选中数据
ids: [],
//租赁费用弹窗
showLease: false,
dialogLeaseList: [], //租赁费用列表
dialogLease: {
typeName: undefined,
modelName: undefined,
},
dialogLeaseTotal: 0,
2025-01-24 17:50:01 +08:00
leaseAllMoney: 0,
2025-08-30 22:17:52 +08:00
currentLeaseRow: null, // 当前租赁费用行数据
2025-01-22 16:13:23 +08:00
//维修费用弹窗
showRepair: false,
dialogRepairList: [], //维修费用列表
dialogRepair: {
typeName: undefined,
modelName: undefined,
},
dialogRepairTotal: 0,
//报废费用弹窗
showScrap: false,
dialogScrapList: [], //报废费用列表
dialogScrap: {
typeName: undefined,
modelName: undefined,
},
dialogScrapTotal: 0,
//丢失费用弹窗
showLose: false,
dialogLoseList: [], //丢失费用列表
dialogLose: {
typeName: undefined,
modelName: undefined,
},
dialogLoseTotal: 0,
2025-02-06 16:15:03 +08:00
originalMonth: null, // 用于存储原始的月份值,防止键盘按键删除
originalMonthTrue: null,
2025-01-22 16:13:23 +08:00
};
},
created() {
this.getMonth();
this.GetUnitData()
this.GetProData()
this.getList();
},
components: { Treeselect },
methods: {
getMonth() {
// 默认当月
var nowDate = new Date();
var date = {
year: nowDate.getFullYear(),
month: nowDate.getMonth() + 1,
day: nowDate.getDate()
};
const dayDate = date.year + "-" + (date.month >= 10 ? date.month : "0" + date.month);
this.$set(this.queryParams, "month", dayDate.toString());
2025-02-06 16:15:03 +08:00
this.originalMonth = dayDate.toString();
this.originalMonthTrue = dayDate.toString();
},
//键盘按键删除触发返回效果
handleMonthInput() {
// 当用户输入时,检查是否为空
if (!this.queryParams.month) {
this.queryParams.month = this.originalMonth;
}
},
//多选框选中数据
handleSelectionChange(val) {
2025-09-25 12:01:34 +08:00
this.ids = val.map(item => item.agreementId);
2025-01-22 16:13:23 +08:00
},
/** 转换菜单数据结构 */
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children;
}
return {
id: node.id,
label: node.name,
children: node.children,
};
},
// 获取 单位 列表数据
async GetUnitData() {
const params = {
// projectId: this.queryParams.projectId /* */,
}
const res = await getUnitList(params)
this.unitList = res.data;
this.getAgreementInfo()
},
unitChange(val) {
setTimeout(() => {
this.queryParams.projectId = null
this.queryParams.agreementId = null
this.queryParams.agreementCode = null
this.GetProData()
}, 500)
},
// 获取 工程名称 列表数据
async GetProData() {
const params = {
unitId: this.queryParams.unitId,
}
const res = await getProjectList(params)
this.proList = res.data;
this.getAgreementInfo()
},
proChange(val) {
setTimeout(() => {
this.GetUnitData()
}, 500)
},
// 获取 协议id
async getAgreementInfo() {
if (this.queryParams.unitId && this.queryParams.projectId) {
const params = {
unitId: this.queryParams.unitId,
projectId: this.queryParams.projectId,
}
const res = await getAgreementInfoById(params)
console.log(res)
if (!(res.data && res.data.agreementId)) {
this.$message.error('当前单位和工程无协议!')
this.queryParams.unitId = null
this.queryParams.projectId = null
this.GetUnitData()
this.GetProData()
} else {
this.queryParams.agreementId = res.data.agreementId
this.queryParams.agreementCode = res.data.agreementCode
}
}
},
2025-02-10 09:19:20 +08:00
/** 查询列表 */
2025-01-22 16:13:23 +08:00
getList() {
this.loading = true;
2025-08-30 22:17:52 +08:00
// 重置合计变量,避免重复累加
this.leaseAll = 0;
this.repairAll = 0;
this.scrapAll = 0;
this.loseAll = 0;
this.moneyAll = 0;
2025-09-14 11:55:54 +08:00
2025-01-24 16:39:38 +08:00
console.log(this.queryParams.month)
getPushReviewList(this.queryParams).then((response) => {
this.pushReviewList = response.rows;
2025-02-06 16:15:03 +08:00
this.originalMonthTrue = this.queryParams.month;
if(response.rows){
response.rows.forEach(item => {
this.leaseAll += (Number(item.leaseMoney) || 0);
this.repairAll += (Number(item.repairMoney) || 0) ;
this.scrapAll += (Number(item.scrapMoney) || 0);
this.loseAll += (Number(item.loseMoney) || 0);
})
this.moneyAll = this.leaseAll + this.repairAll + this.scrapAll + this.loseAll;
}
2025-02-10 09:19:20 +08:00
let obj = {
leaseMoney: this.leaseAll,
repairMoney: this.repairAll,
scrapMoney: this.scrapAll,
loseMoney: this.loseAll,
money: this.moneyAll,
}
this.pushReviewList.push(obj)
2025-01-24 16:39:38 +08:00
this.loading = false;
});
2025-01-22 16:13:23 +08:00
},
/** 重置按钮操作 */
resetQuery() {
2025-08-30 22:17:52 +08:00
// 重置合计变量
this.leaseAll = 0;
this.repairAll = 0;
this.scrapAll = 0;
this.loseAll = 0;
this.moneyAll = 0;
2025-09-14 11:55:54 +08:00
2025-01-22 16:13:23 +08:00
this.queryParams = {
pageNum: 1,
pageSize: 10,
isReview: null,
isPay: null,
isFilter: null,
unitId: null,
projectId: null,
agreementId: '',
agreementCode: '',
2025-02-06 16:15:03 +08:00
month: this.originalMonth,
2025-09-25 12:01:34 +08:00
settlementType: 1,
2025-01-22 16:13:23 +08:00
}
this.resetForm('queryForm')
this.handleQuery()
},
/** 搜索按钮操作 */
handleQuery() {
this.getList();
},
// 多选框选中数据
handleSelectionChange(selection) {
2025-09-25 12:01:34 +08:00
this.ids = selection.map((item) => item.agreementId)
2025-01-22 16:13:23 +08:00
this.single = selection.length != 1
this.multiple = !selection.length
},
//是否可用勾选框
selectable(row) {
if (row.isReview == "0") {
return false;
} else {
return true;
}
},
//打开租赁费用弹窗
openLease(row) {
this.showLease = true
this.dialogLease.typeName = ""
this.dialogLease.modelName = ""
this.dialogLease.id = row.id;
2025-08-30 22:17:52 +08:00
this.currentLeaseRow = row; // 保存当前行数据
2025-01-24 17:50:01 +08:00
this.getLeaseList(row)
2025-01-22 16:13:23 +08:00
},
//查询租赁费用
2025-01-24 17:50:01 +08:00
getLeaseList(row) {
2025-01-22 16:13:23 +08:00
this.loading = true;
2025-09-14 11:55:54 +08:00
2025-08-30 22:17:52 +08:00
// 根据选择的月份计算开始日期和结束日期
const selectedMonth = this.queryParams.month; // 格式: "2024-08"
const startDate = selectedMonth + '-01'; // 月份第一天
2025-09-14 11:55:54 +08:00
2025-08-30 22:17:52 +08:00
// 计算月份最后一天
const year = parseInt(selectedMonth.split('-')[0]);
const month = parseInt(selectedMonth.split('-')[1]);
const endDate = new Date(year, month, 0).toISOString().split('T')[0]; // 当月最后一天
2025-09-14 11:55:54 +08:00
2025-01-24 17:50:01 +08:00
let params = {
month: this.queryParams.month,
2025-08-30 22:17:52 +08:00
startDate: startDate,
endDate: endDate,
2025-01-24 17:50:01 +08:00
agreementId: row.agreementId,
typeName: this.dialogLease.typeName,
modelName: this.dialogLease.modelName,
}
getLeaseList(params).then((response) => {
this.dialogLeaseList = response.rows;
this.leaseAllMoney = 0;
this.dialogLeaseList.forEach(item => {
2025-08-30 22:17:52 +08:00
this.leaseAllMoney += Number(item.leaseCost);
2025-01-24 17:50:01 +08:00
})
this.dialogLeaseTotal = response.total;
this.loading = false;
});
2025-01-22 16:13:23 +08:00
},
handleQueryLease() {
2025-08-30 22:17:52 +08:00
this.getLeaseList(this.currentLeaseRow)
2025-01-22 16:13:23 +08:00
},
//导出租赁费用
handleExportLease() {
// this.download(
// 'material/complex_query/exportOutRecord',
// {
// ...this.queryParams,
// },
// `租赁费用记录_${new Date().getTime()}.xlsx`,
// )
2025-01-22 16:13:23 +08:00
},
//打开维修费用弹窗
openRepair(row) {
this.showRepair = true
this.dialogRepair.typeName = ""
this.dialogRepair.modelName = ""
this.dialogRepair.id = row.id;
2025-02-10 09:19:20 +08:00
this.getRepairList()
2025-01-22 16:13:23 +08:00
},
//查询维修费用
getRepairList() {
this.loading = true;
2025-02-10 09:19:20 +08:00
getRepairList(this.dialogRepaire).then((response) => {
this.dialogRepairList = response.rows;
this.dialogRepairTotal = response.total;
this.loading = false;
});
2025-01-22 16:13:23 +08:00
},
handleQueryRepair() {
this.getRepairList()
},
//导出维修费用
handleExportRepair() {
// this.download(
// 'material/complex_query/exportOutRecord',
// {
// ...this.queryParams,
// },
// `维修费用记录_${new Date().getTime()}.xlsx`,
// )
2025-01-22 16:13:23 +08:00
},
//打开报废费用弹窗
openScrap(row) {
this.showScrap = true
this.dialogScrap.typeName = ""
this.dialogScrap.modelName = ""
this.dialogScrap.id = row.id;
2025-02-10 09:19:20 +08:00
this.getScrapList()
2025-01-22 16:13:23 +08:00
},
//查询报废费用
getScrapList() {
this.loading = true;
2025-02-10 09:19:20 +08:00
getScrapList(this.dialogScrap).then((response) => {
this.dialogScrapList = response.rows;
this.dialogScrapTotal = response.total;
this.loading = false;
});
2025-01-22 16:13:23 +08:00
},
handleQueryScrap() {
this.getScrapList()
},
//导出报废费用
2025-01-22 16:13:23 +08:00
handleExportScrap() {
// this.download(
// 'material/complex_query/exportOutRecord',
// {
// ...this.queryParams,
// },
// `报废费用记录_${new Date().getTime()}.xlsx`,
// )
2025-01-22 16:13:23 +08:00
},
//打开丢失费用弹窗
openLose(row) {
this.showLose = true
this.dialogLose.typeName = ""
this.dialogLose.modelName = ""
this.dialogLose.id = row.id;
2025-02-10 09:19:20 +08:00
this.getLoseList()
2025-01-22 16:13:23 +08:00
},
//查询丢失费用
getLoseList() {
this.loading = true;
2025-02-10 09:19:20 +08:00
getLoseList(this.dialogLose).then((response) => {
this.dialogLoseList = response.rows;
this.dialogLoseTotal = response.total;
this.loading = false;
});
2025-01-22 16:13:23 +08:00
},
handleQueryLose() {
this.getLoseList()
},
handleExportLose() {
// this.download(
// 'material/complex_query/exportOutRecord',
// {
// ...this.queryParams,
// },
// `丢失费用记录_${new Date().getTime()}.xlsx`,
// )
},
/** 外层导出 */
2025-01-22 16:13:23 +08:00
handleExport() {
2025-02-10 09:19:20 +08:00
this.download(
'material/iws_cost_push/exportCostPushExamList',
{
...this.queryParams,
},
`费用推送审核记录_${new Date().getTime()}.xlsx`,
)
2025-01-22 16:13:23 +08:00
},
/** 提交 */
handleSubmit() {
if (this.ids.length == 0) {
this.$message({
type: 'warning',
message: '请选择数据',
})
return;
}
2025-01-22 16:13:23 +08:00
this.$modal
.confirm('是否确认提交?')
2025-01-24 16:39:38 +08:00
.then(() => {
2025-01-22 16:13:23 +08:00
// let params = {
2025-09-25 12:01:34 +08:00
// agreementIds:this.ids
2025-01-22 16:13:23 +08:00
// }
2025-09-25 12:01:34 +08:00
// console.log("xxxxxxxxxxxx",params)
// submitPushCosts(params).then((response) => {
2025-01-22 16:13:23 +08:00
// this.$message({
// type: 'success',
// message: '提交成功',
// })
2025-09-25 12:01:34 +08:00
// // 清空勾选框选择状态
// if (this.$refs.multipleTable) {
// this.$refs.multipleTable.clearSelection()
// }
// // 清空ids数组
// this.ids = []
2025-01-22 16:13:23 +08:00
// this.getList()
// })
})
.catch(() => {})
2025-02-10 09:19:20 +08:00
},
// 合并单元格 rowIndex=行数 columnIndex=列数
// 这里是合并table的除表头外的第一行的第二列 + 除表头外的第二行的第二列
// 注意列数和行数从 0 开始
objectSpanMethod ({ row, column, rowIndex, columnIndex }) {
if (rowIndex === this.pushReviewList.length-1 && columnIndex == 1) {
let rowspan = 2
2025-08-30 22:17:52 +08:00
let colspan = 7 // 增加了结算类型列所以从6改为7
2025-02-10 09:19:20 +08:00
return { rowspan, colspan }
}
// 解决偏移的重要代码
// 重点在 else if 判断必须加因为合并单元格数据会出现偏移、
// 否则如果是 第二行 的 第二列 那么隐藏原有第二行 的 第二列的数据使他隐藏
2025-08-30 22:17:52 +08:00
else if (rowIndex === this.pushReviewList.length-1 && columnIndex < 7) { // 从6改为7
2025-02-10 09:19:20 +08:00
return {
rowspan: 0,
colspan: 0
}
}
},
2025-01-22 16:13:23 +08:00
},
};
</script>
<style lang="scss" scoped>
.uploadImg {
padding-top: 20px;
display: flex;
align-items: center;
justify-content: center;
}
.deviceCode {
margin-top: 10px;
padding-bottom: 20px;
font-size: 18px;
}
::v-deep.el-table .fixed-width .el-button--mini {
width: 60px !important;
margin-bottom: 10px;
}
.clickText {
color: #02a7f0;
cursor: pointer;
}
.tabelAllBottom {
display: flex;
border: 1px solid #dfe6ec;
width:100%;
border-bottom: 1px solid #dfe6ec;
border-top: none;
}
.columnAll {
flex: 1;
2025-01-24 17:50:01 +08:00
display: flex;
2025-01-22 16:13:23 +08:00
padding: 5px;
border-left: 1px solid #dfe6ec;
width:100%;
align-items: center;
text-align: center;
justify-content: center; /* 将内容对齐到中间 */
}
.columnAllNum {
padding: 5px;
text-align: center;
width:88.6%;
border-left: none;
}
2025-01-24 16:39:38 +08:00
.tabelFirstBottom {
display: flex;
border: 1px solid #dfe6ec;
width:100%;
border-bottom: 1px solid #dfe6ec;
border-top: none;
}
.columnFirst {
display: flex ;
background-color: #f8f8f9;
padding: 5px;
border-left: 1px solid #dfe6ec;
2025-02-06 16:15:03 +08:00
width:14.5%;
2025-01-24 16:39:38 +08:00
align-items: center;
text-align: center;
justify-content: center; /* 将内容对齐到中间 */
}
.columnFirstRight {
padding: 5px;
2025-02-06 16:15:03 +08:00
background-color: #f8f8f9;
2025-01-24 16:39:38 +08:00
border-left: 1px solid #dfe6ec;
2025-02-06 16:15:03 +08:00
width:28.5%;
2025-01-24 16:39:38 +08:00
align-items: center;
text-align: center;
justify-content: center; /* 将内容对齐到中间 */
}
.columnFirstNum {
background-color: #f8f8f9;
padding: 5px;
text-align: center;
2025-02-06 16:15:03 +08:00
width:41.7%;
2025-01-24 16:39:38 +08:00
border-left: none;
}
2025-09-14 11:55:54 +08:00
</style>