<!-- 风控报告团队逾期汇总表 -->
|
<template>
|
<div>
|
<div class="form-content">
|
<FormList
|
:info="formInfo"
|
:isShowDetail="isShowDetail"
|
@handleClick="isShowDetail = !isShowDetail"
|
@updateValue="updateValue"
|
@onSubmit="onSubmit"
|
@setValueInfo="setValueInfo"
|
:isChangeArray="false"
|
@resetValue="resetValue"
|
></FormList>
|
</div>
|
<p class="export-excle">
|
<span>
|
<el-button
|
size="small"
|
type="primary"
|
:loading="excelLoading"
|
@click="batchEntrustExternal"
|
>导出excel</el-button
|
>
|
</span>
|
</p>
|
<div class="list-content">
|
<KeysTable
|
:list="teamOverdueNumInfoList"
|
:header="riskReportDepartmentOverdueNumHeader"
|
:isShowPages="false"
|
title="团队逾期概况表(笔数)"
|
v-loading="loading"
|
></KeysTable>
|
<KeysTable
|
:list="teamOverdueAmtInfoList"
|
:header="riskReportDepartmentOverdueAmtHeader"
|
:isShowPages="false"
|
title="团队逾期概况表(金额:万)"
|
v-loading="loading"
|
></KeysTable>
|
|
<KeysTable
|
:list="teamOverdueReturnNumInfoList"
|
:header="riskReportDepartmentOverdueReturnNumHeader"
|
:isShowPages="false"
|
title="团队逾期回款表(笔数)"
|
v-loading="loading"
|
></KeysTable>
|
<KeysTable
|
:list="teamOverdueReturnAmtInfoList"
|
:header="riskReportDepartmentOverdueReturnAmtHeader"
|
:isShowPages="false"
|
title="团队逾期回款表(金额:万)"
|
v-loading="loading"
|
></KeysTable>
|
</div>
|
</div>
|
</template>
|
|
<script>
|
import FormList from "./components/FormList";
|
import TableList from "./components/TableList";
|
import KeysTable from "./components/KeysTable";
|
import Dialog from "./components/Dialog.vue";
|
import { riskReportExistAssetsDepartmentOverdueSearch } from "@comprehensive/utils/formItems";
|
import {
|
riskReportDepartmentOverdueNumHeader,
|
riskReportDepartmentOverdueAmtHeader,
|
riskReportDepartmentOverdueReturnNumHeader,
|
riskReportDepartmentOverdueReturnAmtHeader,
|
} from "@comprehensive/utils/tableHeaders";
|
import {
|
qryCaseFlowList,
|
queryTeamOverdueInfo,
|
createExportTeamOverdueInfo,
|
qryCodeListByCode,
|
} from "@comprehensive/serve/public";
|
|
// 逾期入池
|
export default {
|
name: "RiskReportDepartmentOverdue",
|
components: {
|
FormList,
|
TableList,
|
KeysTable,
|
Dialog,
|
},
|
computed: {
|
activeIndex() {
|
const arr = [];
|
this.records.forEach((item, i) => {
|
this.checkInfoList.forEach((val) => {
|
if (item.applySerialNo == val.applySerialNo) {
|
arr.push(i);
|
}
|
});
|
});
|
return arr;
|
},
|
},
|
data() {
|
return {
|
formInfo: [],
|
formInfoFilter: [
|
"deadline",
|
"productId",
|
"applySerialNo",
|
"customerName",
|
"expectlenddate",
|
"loanStatusDesc",
|
"overduedays",
|
"businessTeams",
|
"managerName",
|
],
|
// 是否显示所有表单项
|
isShowDetail: false,
|
// 表单结果数据
|
valueInfo: {},
|
//批量委外loading
|
excelLoading: false,
|
//表单数据
|
records: [],
|
teamOverdueAmtInfoList: [], //团队逾期金额
|
teamOverdueNumInfoList: [], //团队逾期笔数
|
teamOverdueReturnAmtInfoList: [], //团队逾期回款金额
|
teamOverdueReturnNumInfoList: [], //团队逾期回款笔数
|
//页码
|
pageInfo: {
|
currentPage: 1,
|
pageSize: 10,
|
total: 0,
|
},
|
riskReportDepartmentOverdueNumHeader: [
|
...riskReportDepartmentOverdueNumHeader,
|
],
|
riskReportDepartmentOverdueAmtHeader: [
|
...riskReportDepartmentOverdueAmtHeader,
|
],
|
riskReportDepartmentOverdueReturnNumHeader: [
|
...riskReportDepartmentOverdueReturnNumHeader,
|
],
|
riskReportDepartmentOverdueReturnAmtHeader: [
|
...riskReportDepartmentOverdueReturnAmtHeader,
|
],
|
tableHeaderFilter: [],
|
tableHeight: "560px",
|
//数据列表loading
|
loading: false,
|
isShowDialog: false,
|
dialogMsg: "",
|
checkInfoList: [],
|
};
|
},
|
created() {
|
this.init();
|
},
|
destroyed() {
|
// window.removeEventListener("message")
|
},
|
methods: {
|
init() {
|
const { formInfoFilter, tableHeaderFilter } = this;
|
this.formInfo = riskReportExistAssetsDepartmentOverdueSearch.filter(
|
({ name }) => !formInfoFilter.includes(name)
|
);
|
this.getQryCodeListByCode();
|
this.getQueryTeamOverdueInfo();
|
},
|
// 获取当前数据列表
|
async getQryCaseFlowList() {
|
this.loading = true;
|
let { valueInfo, pageInfo } = this;
|
const res = await qryCaseFlowList({
|
...valueInfo,
|
...pageInfo,
|
phaseNo: "5040",
|
});
|
const { records = [], total, pages } = res.result;
|
this.loading = false;
|
this.records = records.reduce((pre, curr) => {
|
const {
|
termUnit,
|
repaymentTypeDesc,
|
businessTermMonth,
|
businessTermDay,
|
} = curr;
|
let sortButtons = [{ label: "详情" }, { label: "编辑" }];
|
|
pre.push({
|
...curr,
|
repaymentType: repaymentTypeDesc,
|
businessTermDay:
|
termUnit == "M"
|
? `${businessTermMonth}个月`
|
: `${businessTermDay}天`,
|
buttons: [...sortButtons],
|
});
|
return pre;
|
}, []);
|
|
this.pageInfo = {
|
...pageInfo,
|
total: total,
|
};
|
},
|
async getQueryTeamOverdueInfo() {
|
this.loading = true;
|
let { valueInfo } = this;
|
const res = await queryTeamOverdueInfo({
|
...valueInfo,
|
});
|
const {
|
teamOverdueAmtInfoList = [], //团队逾期金额
|
teamOverdueNumInfoList = [], //团队逾期笔数
|
teamOverdueReturnAmtInfoList = [], //团队逾期回款金额
|
teamOverdueReturnNumInfoList = [], //团队逾期回款笔数
|
total,
|
pages,
|
} = res.result;
|
this.loading = false;
|
this.teamOverdueAmtInfoList = teamOverdueAmtInfoList;
|
this.teamOverdueNumInfoList = teamOverdueNumInfoList;
|
this.teamOverdueReturnAmtInfoList = teamOverdueReturnAmtInfoList;
|
this.teamOverdueReturnNumInfoList = teamOverdueReturnNumInfoList;
|
},
|
// 更新表单数据或查找某项数据
|
setOrGetFormInfo(nameKey, newInfo) {
|
let { formInfo } = this;
|
let index = formInfo.findIndex(({ name }) => name === nameKey);
|
let result = {};
|
if (!isNaN(index)) {
|
this.$set(this.formInfo, index, { ...formInfo[index], ...newInfo });
|
result = this.formInfo[index];
|
}
|
if (typeof newInfo === "undefined") {
|
return result;
|
}
|
},
|
// 更新数据
|
updateValue(value, item) {
|
let { name } = item;
|
this.setOrGetFormInfo(name, { value });
|
},
|
// 查询操作
|
onSubmit(val) {
|
this.pageInfo.currentPage = 1;
|
if (val == "reset") {
|
this.formInfo = riskReportExistAssetsDepartmentOverdueSearch.filter(
|
({ name }) => !this.formInfoFilter.includes(name)
|
);
|
this.valueInfo = {};
|
this.getQryCodeListByCode();
|
}
|
this.getQueryTeamOverdueInfo();
|
},
|
// 设置表单结果数据
|
setValueInfo(info = {}) {
|
this.valueInfo = info;
|
},
|
// 重置表单
|
resetValue() {
|
// this.pageInfo.currentPage = 1;
|
},
|
//导出
|
async batchEntrustExternal() {
|
this.loading = true;
|
let { valueInfo } = this;
|
const resp = await createExportTeamOverdueInfo({
|
...valueInfo,
|
});
|
this.loading = false;
|
if (resp.code == "00") {
|
this.$message({
|
type: "success",
|
message: resp.msg,
|
});
|
}
|
},
|
// 产品名称下拉列表
|
async getQryCodeListByCode() {
|
const productRes = await qryCodeListByCode({
|
codeNos: ["ProductCodeType", "BussDepartName", "FundUnit"],
|
});
|
const { BussDepartName, FundUnit, ProductCodeType } = productRes.result.codeMap;
|
|
this.setOrGetFormInfo("loanMains", { options: FundUnit });
|
this.setOrGetFormInfo("productIds", { options: ProductCodeType });
|
this.setOrGetFormInfo("businessTeams", { options: BussDepartName });
|
},
|
},
|
watch: {},
|
};
|
</script>
|
|
<style lang="postcss" scoped>
|
.list-content {
|
font-size: 14px;
|
}
|
.export-excle {
|
margin: 0 0 20px 0;
|
}
|
.message {
|
font-size: 12px;
|
color: #666666;
|
padding: 10px 20px;
|
background-color: #fafafa;
|
}
|
>>> .el-table__header {
|
width: 100% !important;
|
}
|
>>> .el-table__body {
|
width: 100% !important;
|
}
|
</style>
|