nw-cqdevicemgt-ui/src/views/cost/csotSettlement/costApplyList.vue

441 lines
16 KiB
Vue

<template>
<!-- 费用结算页面 -->
<div class="app-container" id="costApplyList">
<template v-if="isHome">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="80px"
>
<el-form-item label="结算单位" prop="unitId">
<el-select
v-model="queryParams.unitId"
placeholder="请选择往来单位"
clearable
filterable
@change="unitChange"
>
<el-option
v-for="item in unitList"
:key="item.unitId"
:label="item.unitName"
:value="item.unitId"
/>
</el-select>
</el-form-item>
<el-form-item label="结算工程" prop="projectIds">
<el-select
v-model="projectIds"
placeholder="请选择工程名称"
clearable
filterable
multiple
collapse-tags
@change="proChange"
>
<el-option
v-for="item in projectList"
:key="item.projectId"
:label="item.projectName"
:value="item.projectId"
/>
</el-select>
</el-form-item>
<el-form-item label="结算状态" prop="sltStatus">
<el-select v-model="queryParams.sltStatus" placeholder="请选择结算状态" clearable filterable>
<el-option v-for="item in statusList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<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="primary" plain size="mini" @click="handleBatchExport"
>批量导出月结明细表</el-button
>
<el-button
icon="el-icon-refresh"
size="mini"
@click="handleBatchSlt"
:disabled="
ids.length == 0 "
>批量结算</el-button
>
</el-form-item>
</el-form>
<el-table
v-loading="loading"
:data="agreementList"
border
@selection-change="handleSelectionChange"
ref="tableRef"
>
<el-table-column type="selection" width="55" align="center" :selectable="selectAble"/>
<el-table-column
align="center"
label="序号"
type="index"
:index="indexContinuation(queryParams.pageNum, queryParams.pageSize)"
/>
<el-table-column label="协议编号" align="center" prop="agreementCode" show-overflow-tooltipp />
<el-table-column label="结算单位" align="center" prop="unitName" show-overflow-tooltip />
<el-table-column label="结算工程" align="center" prop="projectName" show-overflow-tooltip />
<el-table-column label="累计结算费用" align="center" prop="cost" show-overflow-tooltip />
<el-table-column label="结算状态" align="center">
<template slot-scope="{ row }">
<!-- <span v-if="scope.row.sltStatus == '1'">未结算</span>
<span v-if="scope.row.sltStatus == '2'">已结算</span>
<span v-if="scope.row.sltStatus == '3'">待审核</span> -->
<el-tag type="warning" size="mini" v-if="row.isSlt == 0">结算中</el-tag>
<el-tag type="success" size="mini" v-if="row.isSlt == 1">已结算</el-tag>
<el-tag type="primary" size="mini" v-if="row.isSlt == 2">租赁费已结算</el-tag>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="{ row }">
<el-button
size="mini"
type="primary"
style="padding: 5px 10px"
@click="handleMonthRecord(row)"
v-hasPermi="['month:record:query']"
>月结记录</el-button
>
<el-button
size="mini"
:type="row.isSlt == 1 ? 'success' : 'primary'"
style="padding: 5px 10px"
@click="handleFinishCostAndDetails(row, row.isSlt)"
v-hasPermi="['finis:record:details']"
>{{ row.isSlt == 1 ? '结算明细' : '完工结算' }}</el-button
>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
<!-- 批量导出月结明细 -->
<ExportDialog
:exportDialogVisible="exportDialogVisible"
:exportParams="exportParams"
@handleCloseDialog="handleCloseDialog"
@handleSubmit="handleSubmit"
/>
<!-- 月结记录弹框 -->
<MonthRecord
v-if="monthRecordDialogVisible"
:monthRecordDialogVisible="monthRecordDialogVisible"
:agreementId="agreementId"
@handleCloseMonthRecordDialog="handleCloseMonthRecordDialog"
/>
</template>
<template v-else>
<FinishAndDetails :currRowInfo="currRowInfo" :pageContent="pageContent" @closeCurrPage="closeCurrPage" />
</template>
</div>
</template>
<script>
import { getUnitList, getProjectList } from '@/api/claimAndRefund/receive'
import { getSltAgreementInfo,getProjectListByUnitIds,getUnitListByProjetctIds } from '@/api/cost/cost'
import ExportDialog from './component/exportDialog.vue'
import MonthRecord from './component/monthRecord.vue'
import FinishAndDetails from './component/finishAndDetails.vue'
export default {
name: 'CostApplyList',
components: {
ExportDialog,
MonthRecord,
FinishAndDetails,
},
data() {
return {
// 遮罩层
loading: false,
// 选中数组
ids: [],
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 往来单位数据
unitList: [],
// 工程数据
projectList: [],
statusList: [
{ id: '', name: '全部' },
{ id: '0', name: '结算中' },
{ id: '1', name: '已结算' },
{ id: '2', name: '租赁费已结算' },
], //集合
// 表格数据
agreementList: [
{
agreementCode: '测试',
},
],
// 弹出层标题
title: '',
// 是否显示弹出层
open: false,
// 日期范围
dateRange: [],
// 查询参数
queryParams: {
pageNum: 1,
pageSize: 10,
keyWord: undefined,
sltStatus: '',
unitId: '',
projectId: '',
},
// 结算单位ids
unitIds: [],
// 结算工程ids
projectIds: [],
//判断结算工程是否是数组样式
isArray:false,
// 批量导出月结明细弹框
exportDialogVisible: false,
// 月结记录弹框
monthRecordDialogVisible: false,
// 是否显示主页
isHome: true,
// 当前行信息
currRowInfo: [],
// 页面标题
pageContent: '',
// 查询月结记录的参数
agreementId: '',
// 批量导出的参数
exportParams: [],
}
},
created() {
this.getList()
this.getUnitList()
this.getProjectList()
},
methods: {
//获取结算单位下的结算工程
unitChange(val){
console.log("xxxxxxxxxx",val)
if(!val){
console.log("yyyyyyyy")
this.projectIds = [];
this.queryParams.unitId=null
this.getUnitList()
this.getProjectList()
// this.GetProData()
return
}
setTimeout(()=>{
this.GetProData()
},500)
},
//获取结算工程下的结算单位
proChange(val){
console.log("xxxxxxxxxx",val)
if(val.length==0){
setTimeout(()=>{
this.getUnitList()
},500)
return
}
setTimeout(()=>{
this.GetUnitData()
},500)
},
// 获取 工程名称 列表数据
async GetProData() {
const params = {
unitId: this.queryParams.unitId,
}
const res = await getProjectListByUnitIds(params)
this.projectList = res.data;
},
// 获取 单位名称 列表数据
async GetUnitData() {
const params = {
projectIds: this.projectIds,
}
const res = await getUnitListByProjetctIds(params)
this.unitList = res.data;
},
selectAble(row) {
if (row.isSlt != 1 && row.isSlt!= 2) {
return true
}else{
return false
}
},
//获取单位类型 ,getUnitList, getProjectList
getUnitList() {
getUnitList().then((response) => {
this.unitList = response.data
})
},
getProjectList() {
getProjectList().then((response) => {
this.projectList = response.data
})
console.log("uuuuuuuuuu",this.projectList)
},
/** 查询字典类型列表 */
getList() {
console.log('🚀 ~ getList ~ :', this.queryParams)
this.loading = true
const params = {
projectIds: this.projectIds,
unitId: this.queryParams.unitId,
sltStatus: this.queryParams.sltStatus,
pageNum: this.queryParams.pageNum,
pageSize: this.queryParams.pageSize,
}
getSltAgreementInfo(params).then((response) => {
this.agreementList = response.rows
this.total = response.total
this.loading = false
}).catch((error) => {
console.log('🚀 ~ getList ~ error:', error)
this.loading = false
})
},
/** 搜索按钮操作 */
handleQuery() {
this.queryParams.pageNum = 1
this.getList()
},
/** 重置按钮操作 */
resetQuery() {
this.dateRange = []
this.projectIds = []
this.resetForm('queryForm')
this.getUnitList()
this.getProjectList()
this.handleQuery()
},
//结算申请
handleApply(row) {
let arr = [row]
console.log(arr)
console.log(this.ids)
console.log(JSON.stringify(arr))
this.$tab.closeOpenPage({
path: '/cost/cost/costApplyAdd',
query: {
rowData: JSON.stringify(arr),
},
})
},
handleApplyList() {
if (this.ids.length > 0) {
let arr = this.ids
this.$tab.closeOpenPage({
path: '/cost/cost/costApplyAdd',
query: {
rowData: JSON.stringify(arr),
},
})
}
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map((item) => item)
},
// 批量结算
handleBatchSlt() {
this.currRowInfo = this.ids
this.pageContent = '完工结算'
this.isHome = false
},
/** 批量导出月结明细表 */
handleBatchExport() {
console.log('批量导出月结明细表')
this.exportParams = []
if (this.ids.length < 1) {
this.$message.error('请勾选需要导出的数据!')
return
}
// 获取选中导出的协议 id 并组装参数
this.ids.forEach((e) => {
this.exportParams.push({
agreementId: e.agreementId,
costBearingParty: '',
})
})
this.exportDialogVisible = true
},
/** 关闭弹框 */
handleCloseDialog() {
this.exportDialogVisible = false
},
/** 确定按钮 */
handleSubmit(form) {
if (form.length === 1) {
this.exportParams.forEach((e) => {
e.costBearingParty = form[0]
})
}
this.downloadJson(
'material/sltAgreementInfo/exportSltInfoMonth',
JSON.stringify(this.exportParams),
`月结明细${new Date().getTime()}.xlsx`,
)
this.exportDialogVisible = false
this.$refs.tableRef.clearSelection()
},
/** 月结记录 */
handleMonthRecord(row) {
this.agreementId = row.agreementId
this.monthRecordDialogVisible = true
},
/** 完工结算 结算明细*/
handleFinishCostAndDetails(row, isSlt) {
this.currRowInfo = [row]
// this.pageContent = '结算明细'
isSlt == 1 ? (this.pageContent = '结算明细') : (this.pageContent = '完工结算')
this.isHome = false
},
/** 关闭月结记录弹框 */
handleCloseMonthRecordDialog() {
this.monthRecordDialogVisible = false
},
/** 关闭完工结算或结算明细页面 */
closeCurrPage(isRefresh) {
this.isHome = true
if (isRefresh) {
this.getList()
}
},
},
}
</script>