Commit fc669198 authored by 沈翠玲's avatar 沈翠玲

业务审批添加折叠

parent 51aa3762
...@@ -14,4 +14,4 @@ export const deletePlatforms = (ids) => { ...@@ -14,4 +14,4 @@ export const deletePlatforms = (ids) => {
export const getByIdPlatforms = (id) => { export const getByIdPlatforms = (id) => {
return request.get('/LoanPlatform/getById', { id }); return request.get('/LoanPlatform/getById', { id });
}; };
\ No newline at end of file
...@@ -22,6 +22,9 @@ ...@@ -22,6 +22,9 @@
<template #toolbar_tools> <template #toolbar_tools>
<slot name="right_tools"></slot> <slot name="right_tools"></slot>
</template> </template>
<template #expand_content="{ row }">
<slot name="expand_content" :row="row"></slot>
</template>
</vxe-grid> </vxe-grid>
</div> </div>
<!-- 分页组件 --> <!-- 分页组件 -->
......
...@@ -30,4 +30,4 @@ td { ...@@ -30,4 +30,4 @@ td {
} }
.el-tabs__item { .el-tabs__item {
font-size: 13px !important; font-size: 13px !important;
} }
\ No newline at end of file
...@@ -12,6 +12,113 @@ ...@@ -12,6 +12,113 @@
<!-- <el-button type="primary">下载 </el-button> <!-- <el-button type="primary">下载 </el-button>
<el-button type="primary">批量修复上传 </el-button> --> <el-button type="primary">批量修复上传 </el-button> -->
</template> </template>
<template #expand_content="{ row }">
<div class="expand-box">
<div class="flex">
<div class="w-2/3 pr-2">
<div>案件明细</div>
<div class="expand-table">
<table v-for="(item, index) in row.loans" :key="index"
><tbody>
<tr>
<td class="label">案件ID:</td>
<td>{{ item?.caseId }}</td>
<td class="label">借款机构:</td>
<td>{{ item?.loanPlatform?.name }}</td>
</tr>
<tr>
<td class="label">资管公司:</td>
<td>{{ item?.manageOrg.orgName }}</td>
<td class="label">身份证:</td>
<td>{{ item?.borrower?.idCard }}</td>
</tr>
<tr>
<td class="label">手机号:</td>
<td>{{ item?.borrower?.phone }}</td>
<td class="label">折扣:</td>
<td>{{ item?.discount }}</td>
</tr>
<tr>
<td class="label">累计还款金额:</td>
<td>{{ item?.sumRepayAmount }}</td>
<td class="label">累计减免金额:</td>
<td>{{ item?.sumReductionAmount }}</td>
</tr>
<tr>
<td class="label">剩余待还金额:</td>
<td>{{ item?.remainingAmount }}</td>
<td class="label">CPE:</td>
<td>{{ item?.cpe.username }}</td>
</tr>
<tr>
<td class="label">分配CPE日期:</td>
<td>{{ item?.cpeDate }}</td>
<td class="label">本金余额:</td>
<td>{{ item?.principalBalance }}</td>
</tr>
<tr>
<td class="label">欠息额:</td>
<td>{{ item?.debitInterest }}</td>
<td class="label">手续费:</td>
<td>{{ item?.commission }}</td>
</tr>
<tr>
<td class="label">委案金额:</td>
<td>{{ item?.commissionAmount }}</td>
<td class="label">案件状态:</td>
<td>
{{
item?.caseStatus
? caseStatusOpt.find((v) => v.value === item?.caseStatus).label
: ''
}}</td
>
</tr>
<tr>
<td class="label">跟进结果:</td>
<td>{{
item?.followStatus
? followStatusOpt.find((v) => v.value === item?.followStatus).label
: ''
}}</td>
<td class="label">跟进状态:</td>
<td>{{
item?.phoneResultStatus
? phoneResultStatusOpt.find((v) => v.value === item?.phoneResultStatus)
.label
: ''
}}</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="flex-1">
<div>分期明细</div>
<div class="expand-table">
<table v-for="(item, index) in row.byStagesRecords" :key="index"
><tbody>
<tr>
<td class="label">期次:</td>
<td>{{ item?.period }}</td>
<td class="label">期次还款到期日:</td>
<td>{{ item?.playApplyDate }}</td>
</tr>
<tr>
<td class="label">期次还款状态:</td>
<td>{{
item.repayStatus ? (item.repayStatus === 'over' ? '已还款' : '待还款') : ''
}}</td>
<td class="label">期次应还金额:</td>
<td>{{ item.applyAmount }}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</template>
</ProTable> </ProTable>
<vxe-modal <vxe-modal
v-model="showModal" v-model="showModal"
...@@ -92,10 +199,47 @@ ...@@ -92,10 +199,47 @@
query(); query();
}; };
const followStatusOpt = [
{ label: '接通后挂断', value: 'hang_up' },
{ label: '接通有实质进展', value: 'progress' },
{ label: '接通有效转告', value: 'pass_on' },
{ label: '接通拒绝转告', value: 'no_pass' },
{ label: '接听后挂断', value: 'Hang_up_after_answering' },
{ label: '接通无应答', value: 'No_response_when_connected' },
{ label: '称与债人无关', value: 'Claims_unrelated_to_creditors' },
{ label: '称非本人', value: 'Claiming_not_to_be_myself' },
{ label: '无人接听', value: 'no_answer' },
{ label: '关机', value: 'Shutdown' },
{ label: '空号', value: 'dead_number' },
{ label: '占线/忙音/正在通话中', value: 'Busy' },
{ label: '停机', value: 'closing_down' },
{ label: '机器人回复', value: 'Robot_reply' },
{ label: '微信', value: 'WeChat' },
{ label: '短信', value: 'short_message' },
{ label: 'QQ', value: 'QQ' },
{ label: '飞书', value: 'fly' },
{ label: '钉钉', value: 'DING' },
];
const phoneResultStatusOpt = [
{ label: '后续再跟进', value: 'later' },
{ label: '承诺还款', value: 'Promise_Repayment' },
{ label: '暂无还款意愿', value: 'No_Repay' },
{ label: '要求停催', value: 'Stop_Urging' },
{ label: '情绪激动抗拒', value: 'resistance' },
{ label: '拒绝还款', value: 'Refuse_Repayment' },
{ label: '已还款', value: 'Repaired' },
{ label: '代履行还款', value: 'repayment_others' },
];
const caseStatusOpt = [
{ label: '正常', value: 'normal' },
{ label: '撤案', value: 'withdraw' },
{ label: '留案', value: 'stay' },
];
const config = computed(() => { const config = computed(() => {
return { return {
columns: [ columns: [
{ type: 'checkbox', width: 50 }, { type: 'checkbox', width: 50 },
{ type: 'expand', width: 80, slots: { content: 'expand_content' } },
{ {
field: 'caseId', field: 'caseId',
title: '案件ID', title: '案件ID',
...@@ -197,3 +341,26 @@ ...@@ -197,3 +341,26 @@
query(); query();
}); });
</script> </script>
<style lang="scss" scoped>
.expand-box {
background: #fff;
padding: 10px;
.expand-table {
color: #000;
table {
width: 100%;
margin-top: 10px;
border-collapse: collapse;
}
td {
border: 1px solid rgba(5, 5, 5, 0.06);
background: #fff;
padding: 8px;
width: 240px;
&.label {
background: #f5f7f9;
}
}
}
}
</style>
...@@ -12,6 +12,78 @@ ...@@ -12,6 +12,78 @@
<!-- <el-button type="primary">下载 </el-button> <!-- <el-button type="primary">下载 </el-button>
<el-button type="primary">批量修复上传 </el-button> --> <el-button type="primary">批量修复上传 </el-button> -->
</template> </template>
<template #expand_content="{ row }">
<div class="expand-box">
<div>案件明细</div>
<div class="expand-table">
<table v-for="(item, index) in row.reduceRecords" :key="index"
><tbody>
<tr>
<td class="label">案件ID:</td>
<td>{{ item?.loan?.caseId }}</td>
<td class="label">借款机构:</td>
<td>{{ item?.loan?.loanPlatform?.name }}</td>
<td class="label">资管公司:</td>
<td>{{ item?.loan?.manageOrg.orgName }}</td>
</tr>
<tr>
<td class="label">身份证:</td>
<td>{{ item?.loan?.borrower?.idCard }}</td>
<td class="label">手机号:</td>
<td>{{ item?.loan?.borrower?.phone }}</td>
<td class="label">折扣:</td>
<td>{{ item?.loan?.discount }}</td>
<td class="label">委案金额:</td>
<td>{{ item?.loan?.commissionAmount }}</td>
</tr>
<tr>
<td class="label">累计还款金额:</td>
<td>{{ item?.loan?.sumRepayAmount }}</td>
<td class="label">累计减免金额:</td>
<td>{{ item?.loan?.sumReductionAmount }}</td>
<td class="label">剩余待还金额:</td>
<td>{{ item?.loan?.remainingAmount }}</td>
</tr>
<tr>
<td class="label">CPE:</td>
<td>{{ item?.loan?.cpe.username }}</td>
<td class="label">分配CPE日期:</td>
<td>{{ item?.loan?.cpeDate }}</td>
<td class="label">本金余额:</td>
<td>{{ item?.loan?.principalBalance }}</td>
<td class="label">案件状态:</td>
<td>
{{
item?.loan?.caseStatus
? caseStatusOpt.find((v) => v.value === item?.loan?.caseStatus).label
: ''
}}</td
>
</tr>
<tr>
<td class="label">欠息额:</td>
<td>{{ item?.loan?.debitInterest }}</td>
<td class="label">手续费:</td>
<td>{{ item?.loan?.commission }}</td>
<td class="label">跟进结果:</td>
<td>{{
item?.loan?.followStatus
? followStatusOpt.find((v) => v.value === item?.loan?.followStatus).label
: ''
}}</td>
<td class="label">跟进状态:</td>
<td>{{
item?.loan?.phoneResultStatus
? phoneResultStatusOpt.find((v) => v.value === item?.loan?.phoneResultStatus)
.label
: ''
}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</template>
</ProTable> </ProTable>
<vxe-modal <vxe-modal
v-model="showModal" v-model="showModal"
...@@ -74,10 +146,47 @@ ...@@ -74,10 +146,47 @@
query(); query();
}; };
const followStatusOpt = [
{ label: '接通后挂断', value: 'hang_up' },
{ label: '接通有实质进展', value: 'progress' },
{ label: '接通有效转告', value: 'pass_on' },
{ label: '接通拒绝转告', value: 'no_pass' },
{ label: '接听后挂断', value: 'Hang_up_after_answering' },
{ label: '接通无应答', value: 'No_response_when_connected' },
{ label: '称与债人无关', value: 'Claims_unrelated_to_creditors' },
{ label: '称非本人', value: 'Claiming_not_to_be_myself' },
{ label: '无人接听', value: 'no_answer' },
{ label: '关机', value: 'Shutdown' },
{ label: '空号', value: 'dead_number' },
{ label: '占线/忙音/正在通话中', value: 'Busy' },
{ label: '停机', value: 'closing_down' },
{ label: '机器人回复', value: 'Robot_reply' },
{ label: '微信', value: 'WeChat' },
{ label: '短信', value: 'short_message' },
{ label: 'QQ', value: 'QQ' },
{ label: '飞书', value: 'fly' },
{ label: '钉钉', value: 'DING' },
];
const phoneResultStatusOpt = [
{ label: '后续再跟进', value: 'later' },
{ label: '承诺还款', value: 'Promise_Repayment' },
{ label: '暂无还款意愿', value: 'No_Repay' },
{ label: '要求停催', value: 'Stop_Urging' },
{ label: '情绪激动抗拒', value: 'resistance' },
{ label: '拒绝还款', value: 'Refuse_Repayment' },
{ label: '已还款', value: 'Repaired' },
{ label: '代履行还款', value: 'repayment_others' },
];
const caseStatusOpt = [
{ label: '正常', value: 'normal' },
{ label: '撤案', value: 'withdraw' },
{ label: '留案', value: 'stay' },
];
const config = computed(() => { const config = computed(() => {
return { return {
columns: [ columns: [
{ type: 'checkbox', width: 50 }, { type: 'checkbox', width: 50 },
{ type: 'expand', width: 80, slots: { content: 'expand_content' } },
{ {
field: 'caseId', field: 'caseId',
title: '案件ID', title: '案件ID',
...@@ -183,3 +292,26 @@ ...@@ -183,3 +292,26 @@
query(); query();
}); });
</script> </script>
<style lang="scss" scoped>
.expand-box {
background: #fff;
padding: 10px;
.expand-table {
color: #000;
table {
width: 100%;
margin-top: 10px;
border-collapse: collapse;
}
td {
border: 1px solid rgba(5, 5, 5, 0.06);
background: #fff;
padding: 8px;
width: 240px;
&.label {
background: #f5f7f9;
}
}
}
}
</style>
...@@ -282,7 +282,9 @@ ...@@ -282,7 +282,9 @@
return ( return (
<> <>
<div className="flex justify-center"> <div className="flex justify-center">
<ElButton onClick={() => preview(row, 'images')} link type="primary">查看</ElButton> <ElButton onClick={() => preview(row, 'images')} link type="primary">
查看
</ElButton>
</div> </div>
</> </>
); );
...@@ -300,7 +302,9 @@ ...@@ -300,7 +302,9 @@
return ( return (
<> <>
<div className="flex justify-center"> <div className="flex justify-center">
<ElButton onClick={() => preview(row, 'notes')} link type="primary">查看</ElButton> <ElButton onClick={() => preview(row, 'notes')} link type="primary">
查看
</ElButton>
</div> </div>
</> </>
); );
...@@ -318,7 +322,9 @@ ...@@ -318,7 +322,9 @@
return ( return (
<> <>
<div className="flex justify-center"> <div className="flex justify-center">
<ElButton onClick={() => preview(row, 'others')} link type="primary">查看</ElButton> <ElButton onClick={() => preview(row, 'others')} link type="primary">
查看
</ElButton>
</div> </div>
</> </>
); );
......
...@@ -35,7 +35,13 @@ ...@@ -35,7 +35,13 @@
</div> </div>
</div> </div>
<div> <div>
<ProTable :config="config" :data="tabledata" ref="ProTableRef" :showPagination="false" :showToolBar="false"> <ProTable
:config="config"
:data="tabledata"
ref="ProTableRef"
:showPagination="false"
:showToolBar="false"
>
<template #table_top> <template #table_top>
<p class="font-bold">关联案件:</p> <p class="font-bold">关联案件:</p>
</template> </template>
...@@ -394,12 +400,12 @@ ...@@ -394,12 +400,12 @@
form.others.splice(index, 1); form.others.splice(index, 1);
}; };
const onCheckboxAll = (flag) => { const onCheckboxAll = (flag) => {
if(flag.checked){ if (flag.checked) {
selectdList.value = flag.records selectdList.value = flag.records;
} else { } else {
selectdList.value = [] selectdList.value = [];
} }
} };
const config = reactive({ const config = reactive({
minHeight: 200, minHeight: 200,
columns: [ columns: [
...@@ -454,12 +460,12 @@ ...@@ -454,12 +460,12 @@
resuleObj.label = '本人可联'; resuleObj.label = '本人可联';
resuleObj.childrenlabel = null; resuleObj.childrenlabel = null;
tabledata.value = caselist; tabledata.value = caselist;
setTimeout(()=>{ setTimeout(() => {
if (ProTableRef.value.element) { if (ProTableRef.value.element) {
ProTableRef.value.element.setAllCheckboxRow(true) ProTableRef.value.element.setAllCheckboxRow(true);
selectdList.value = caselist selectdList.value = caselist;
} }
}, 500) }, 500);
}; };
const submitForm = () => { const submitForm = () => {
if (!form.phoneResultStatus) if (!form.phoneResultStatus)
......
...@@ -61,7 +61,14 @@ ...@@ -61,7 +61,14 @@
</el-form> </el-form>
<div> <div>
<ProTable :config="config" ref="ProTableRef" :data="tabledata" :showPagination="false" :dataCallback="dataCallback" :showToolBar="false"> <ProTable
:config="config"
ref="ProTableRef"
:data="tabledata"
:showPagination="false"
:dataCallback="dataCallback"
:showToolBar="false"
>
<template #table_top> <template #table_top>
<p class="font-bold">关联案件:</p> <p class="font-bold">关联案件:</p>
</template> </template>
...@@ -84,7 +91,7 @@ ...@@ -84,7 +91,7 @@
import { ElMessage } from 'element-plus'; import { ElMessage } from 'element-plus';
import { onMounted } from 'vue'; import { onMounted } from 'vue';
import { watch } from 'vue'; import { watch } from 'vue';
import Decimal from "decimal.js" import Decimal from 'decimal.js';
const emits = defineEmits(['success']); const emits = defineEmits(['success']);
const showModal = ref(false); const showModal = ref(false);
const tabledata = ref([]); const tabledata = ref([]);
...@@ -103,25 +110,33 @@ ...@@ -103,25 +110,33 @@
form.totalReduceAmount = 0; form.totalReduceAmount = 0;
form.remainingAmount = 0; form.remainingAmount = 0;
selectdList.value.forEach((item) => { selectdList.value.forEach((item) => {
form.totalReduceAmount = Decimal(form.totalReduceAmount).add(Decimal(Number(item.reduceAmount) || 0)) form.totalReduceAmount = Decimal(form.totalReduceAmount).add(
form.remainingAmount = Decimal(form.remainingAmount).add(Decimal(Number(item.payAmount) || 0)) Decimal(Number(item.reduceAmount) || 0)
);
form.remainingAmount = Decimal(form.remainingAmount).add(
Decimal(Number(item.payAmount) || 0)
);
}); });
}; };
const onCheckboxAll = (flag) => { const onCheckboxAll = (flag) => {
if(flag.checked){ if (flag.checked) {
selectdList.value = flag.records selectdList.value = flag.records;
form.totalNumber = flag.records.length form.totalNumber = flag.records.length;
} else { } else {
selectdList.value = [] selectdList.value = [];
form.totalNumber = 0 form.totalNumber = 0;
} }
form.totalReduceAmount = 0; form.totalReduceAmount = 0;
form.remainingAmount = 0; form.remainingAmount = 0;
selectdList.value.forEach((item) => { selectdList.value.forEach((item) => {
form.totalReduceAmount = Decimal(form.totalReduceAmount).add(Decimal(Number(item.reduceAmount) || 0)) form.totalReduceAmount = Decimal(form.totalReduceAmount).add(
form.remainingAmount = Decimal(form.remainingAmount).add(Decimal(Number(item.payAmount) || 0)) Decimal(Number(item.reduceAmount) || 0)
);
form.remainingAmount = Decimal(form.remainingAmount).add(
Decimal(Number(item.payAmount) || 0)
);
}); });
} };
const currentDetail = ref({}); const currentDetail = ref({});
const onHide = (done) => { const onHide = (done) => {
done(); done();
...@@ -192,12 +207,16 @@ ...@@ -192,12 +207,16 @@
toolbarConfig: { enabled: false }, toolbarConfig: { enabled: false },
}); });
const changeNum = (row) => { const changeNum = (row) => {
row.payAmount = Decimal(row.loan.remainingAmount).sub(Decimal(row.reduceAmount)) row.payAmount = Decimal(row.loan.remainingAmount).sub(Decimal(row.reduceAmount));
form.totalReduceAmount = 0; form.totalReduceAmount = 0;
form.remainingAmount = 0; form.remainingAmount = 0;
selectdList.value.forEach((item) => { selectdList.value.forEach((item) => {
form.totalReduceAmount = Decimal(form.totalReduceAmount).add(Decimal(Number(item.reduceAmount) || 0)) form.totalReduceAmount = Decimal(form.totalReduceAmount).add(
form.remainingAmount = Decimal(form.remainingAmount).add(Decimal(Number(item.payAmount) || 0)) Decimal(Number(item.reduceAmount) || 0)
);
form.remainingAmount = Decimal(form.remainingAmount).add(
Decimal(Number(item.payAmount) || 0)
);
}); });
}; };
const openModal = (detail, caselist) => { const openModal = (detail, caselist) => {
...@@ -210,17 +229,19 @@ ...@@ -210,17 +229,19 @@
caselist.forEach((item) => { caselist.forEach((item) => {
const payAmount = Number(item.remainingAmount) || 0; const payAmount = Number(item.remainingAmount) || 0;
list.push({ reduceAmount: Number(item.reduceAmount) || 0, payAmount: payAmount, loan: item }); list.push({ reduceAmount: Number(item.reduceAmount) || 0, payAmount: payAmount, loan: item });
form.totalReduceAmount = Decimal(form.totalReduceAmount).add(Decimal(Number(item.reduceAmount) || 0)) form.totalReduceAmount = Decimal(form.totalReduceAmount).add(
form.remainingAmount = Decimal(form.remainingAmount).add(Decimal(payAmount)) Decimal(Number(item.reduceAmount) || 0)
);
form.remainingAmount = Decimal(form.remainingAmount).add(Decimal(payAmount));
}); });
tabledata.value = list; tabledata.value = list;
form.totalNumber = caselist.length; form.totalNumber = caselist.length;
setTimeout(()=>{ setTimeout(() => {
if (ProTableRef.value.element) { if (ProTableRef.value.element) {
ProTableRef.value.element.setAllCheckboxRow(true) ProTableRef.value.element.setAllCheckboxRow(true);
selectdList.value = list selectdList.value = list;
} }
}, 500) }, 500);
}; };
const submitForm = () => { const submitForm = () => {
const list = JSON.parse(JSON.stringify(selectdList.value)); const list = JSON.parse(JSON.stringify(selectdList.value));
......
...@@ -9,7 +9,13 @@ ...@@ -9,7 +9,13 @@
> >
<div class="h-full flex-col flex mydrawer pb-2"> <div class="h-full flex-col flex mydrawer pb-2">
<div> <div>
<ProTable :config="config" ref="ProTableRef" :data="tabledata" :showPagination="false" :showToolBar="false"> <ProTable
:config="config"
ref="ProTableRef"
:data="tabledata"
:showPagination="false"
:showToolBar="false"
>
<template #table_top> <template #table_top>
<p class="font-bold">关联案件:</p> <p class="font-bold">关联案件:</p>
</template> </template>
...@@ -135,10 +141,9 @@ ...@@ -135,10 +141,9 @@
import { computed } from 'vue'; import { computed } from 'vue';
import { reactive, ref } from 'vue'; import { reactive, ref } from 'vue';
import { ElInputNumber, ElMessage } from 'element-plus'; import { ElInputNumber, ElMessage } from 'element-plus';
import { savebyStages } from '@/api/property' import { savebyStages } from '@/api/property';
import { getByIdPlatforms } from '@/api/platform' import { getByIdPlatforms } from '@/api/platform';
; import Decimal from 'decimal.js';
import Decimal from "decimal.js"
const ProTableRef = ref(); const ProTableRef = ref();
const showModal = ref(false); const showModal = ref(false);
...@@ -154,7 +159,7 @@ ...@@ -154,7 +159,7 @@
firstApplyDate: dayjs().format('YYYY-MM-DD'), firstApplyDate: dayjs().format('YYYY-MM-DD'),
effectiveTime: dayjs().format('YYYY-MM-DD HH:mm:ss'), effectiveTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
}); });
const minAmount = ref(0) const minAmount = ref(0);
const currentDetail = ref({}); const currentDetail = ref({});
const onHide = (done) => { const onHide = (done) => {
done(); done();
...@@ -169,8 +174,10 @@ ...@@ -169,8 +174,10 @@
}); });
const otherNum = form.totalRepayAmount - Number(splitdata.value[0].applyAmount); const otherNum = form.totalRepayAmount - Number(splitdata.value[0].applyAmount);
const list = [splitdata.value[0]]; const list = [splitdata.value[0]];
const crash = Decimal(Decimal(otherNum).div(Decimal(form.totalPeriod - 1))).toSignificantDigits(2) const crash = Decimal(
Decimal(otherNum).div(Decimal(form.totalPeriod - 1))
).toSignificantDigits(2);
for (let i = 0; i < form.totalPeriod - 1; i++) { for (let i = 0; i < form.totalPeriod - 1; i++) {
console.log('i', i); console.log('i', i);
const playApplyDate = dayjs(form.firstApplyDate) const playApplyDate = dayjs(form.firstApplyDate)
...@@ -178,7 +185,7 @@ ...@@ -178,7 +185,7 @@
.format('YYYY-MM-DD'); .format('YYYY-MM-DD');
if (i === form.totalPeriod - 2) { if (i === form.totalPeriod - 2) {
const other = list.reduce((pre, cur) => { const other = list.reduce((pre, cur) => {
return Decimal(pre).add(Decimal(cur.applyAmount)) return Decimal(pre).add(Decimal(cur.applyAmount));
}, 0); }, 0);
list.push({ list.push({
period: i + 1, period: i + 1,
...@@ -202,7 +209,9 @@ ...@@ -202,7 +209,9 @@
const changePeriod = () => { const changePeriod = () => {
const list = []; const list = [];
const crash = Decimal(Decimal(form.totalRepayAmount).div(Decimal(form.totalPeriod))).toSignificantDigits(2) const crash = Decimal(
Decimal(form.totalRepayAmount).div(Decimal(form.totalPeriod))
).toSignificantDigits(2);
for (let i = 0; i < form.totalPeriod; i++) { for (let i = 0; i < form.totalPeriod; i++) {
console.log('i', i); console.log('i', i);
const playApplyDate = dayjs(form.firstApplyDate) const playApplyDate = dayjs(form.firstApplyDate)
...@@ -216,7 +225,7 @@ ...@@ -216,7 +225,7 @@
period: i + 1, period: i + 1,
playApplyDate: playApplyDate, playApplyDate: playApplyDate,
repayStatus: 'pending', repayStatus: 'pending',
applyAmount: Decimal(form.totalRepayAmount).sub(Decimal(other)) applyAmount: Decimal(form.totalRepayAmount).sub(Decimal(other)),
}); });
} else { } else {
list.push({ list.push({
...@@ -273,23 +282,23 @@ ...@@ -273,23 +282,23 @@
value: 6, value: 6,
label: '6', label: '6',
}, },
] ];
getByIdPlatforms(id).then(res => { getByIdPlatforms(id).then((res) => {
console.log('resres', res) console.log('resres', res);
if (res.success) { if (res.success) {
if (res.result.maxStagesNum){ if (res.result.maxStagesNum) {
const list = options.value.filter(v => v.value > res.result.maxStagesNum) const list = options.value.filter((v) => v.value > res.result.maxStagesNum);
list.forEach(e => { list.forEach((e) => {
e['disabled'] = true e['disabled'] = true;
}) });
} }
if (res.result.minAmount){ if (res.result.minAmount) {
minAmount.value = res.result.minAmount minAmount.value = res.result.minAmount;
} }
} }
// //
}) });
} };
const repayStatusOpt = [ const repayStatusOpt = [
{ {
value: 'pending', value: 'pending',
...@@ -306,31 +315,39 @@ ...@@ -306,31 +315,39 @@
form.totalRepayAmount = 0; form.totalRepayAmount = 0;
form.remainingAmount = 0; form.remainingAmount = 0;
selectdList.value.forEach((item) => { selectdList.value.forEach((item) => {
form.totalRepayAmount = Decimal(form.totalRepayAmount).add(Decimal(Number(item.remainingAmount) || 0)); form.totalRepayAmount = Decimal(form.totalRepayAmount).add(
form.remainingAmount = Decimal(form.remainingAmount).add(Decimal(Number(item.remainingAmount) || 0)); Decimal(Number(item.remainingAmount) || 0)
);
form.remainingAmount = Decimal(form.remainingAmount).add(
Decimal(Number(item.remainingAmount) || 0)
);
}); });
if(selectdList.value.length > 0) { if (selectdList.value.length > 0) {
getPlatforms(selectdList.value[0].loanPlatform.id) getPlatforms(selectdList.value[0].loanPlatform.id);
} }
changePeriod() changePeriod();
}; };
const onCheckboxAll = (flag) => { const onCheckboxAll = (flag) => {
if(flag.checked){ if (flag.checked) {
selectdList.value = flag.records selectdList.value = flag.records;
} else { } else {
selectdList.value = [] selectdList.value = [];
} }
form.totalRepayAmount = 0; form.totalRepayAmount = 0;
form.remainingAmount = 0; form.remainingAmount = 0;
selectdList.value.forEach((item) => { selectdList.value.forEach((item) => {
form.totalRepayAmount = Decimal(form.totalRepayAmount).add(Decimal(Number(item.remainingAmount) || 0)); form.totalRepayAmount = Decimal(form.totalRepayAmount).add(
form.remainingAmount = Decimal(form.remainingAmount).add(Decimal(Number(item.remainingAmount) || 0)); Decimal(Number(item.remainingAmount) || 0)
);
form.remainingAmount = Decimal(form.remainingAmount).add(
Decimal(Number(item.remainingAmount) || 0)
);
}); });
if(selectdList.value.length > 0) { if (selectdList.value.length > 0) {
getPlatforms(selectdList.value[0].loanPlatform.id) getPlatforms(selectdList.value[0].loanPlatform.id);
} }
changePeriod() changePeriod();
} };
const config = reactive({ const config = reactive({
minHeight: 200, minHeight: 200,
columns: [ columns: [
...@@ -423,20 +440,24 @@ ...@@ -423,20 +440,24 @@
form.totalRepayAmount = 0; form.totalRepayAmount = 0;
form.remainingAmount = 0; form.remainingAmount = 0;
caselist.forEach((item) => { caselist.forEach((item) => {
form.totalRepayAmount = Decimal(form.totalRepayAmount).add(Decimal(Number(item.remainingAmount) || 0)); form.totalRepayAmount = Decimal(form.totalRepayAmount).add(
form.remainingAmount = Decimal(form.remainingAmount).add(Decimal(Number(item.remainingAmount) || 0)); Decimal(Number(item.remainingAmount) || 0)
);
form.remainingAmount = Decimal(form.remainingAmount).add(
Decimal(Number(item.remainingAmount) || 0)
);
}); });
tabledata.value = caselist; tabledata.value = caselist;
setTimeout(()=>{ setTimeout(() => {
if (ProTableRef.value.element) { if (ProTableRef.value.element) {
ProTableRef.value.element.setAllCheckboxRow(true) ProTableRef.value.element.setAllCheckboxRow(true);
selectdList.value = caselist selectdList.value = caselist;
// 获取最大分期数 // 获取最大分期数
if(selectdList.value.length > 0) { if (selectdList.value.length > 0) {
getPlatforms(selectdList.value[0].loanPlatform.id) getPlatforms(selectdList.value[0].loanPlatform.id);
} }
} }
}, 500) }, 500);
changePeriod(); changePeriod();
}; };
const emits = defineEmits(['success']); const emits = defineEmits(['success']);
...@@ -446,8 +467,9 @@ ...@@ -446,8 +467,9 @@
message: '修改分期数值后要确认', message: '修改分期数值后要确认',
plain: true, plain: true,
}); });
const arr = splitdata.value.filter(v => v.applyAmount<minAmount.value) const arr = splitdata.value.filter((v) => v.applyAmount < minAmount.value);
if (arr.length > 0) return ElMessage.warning({ if (arr.length > 0)
return ElMessage.warning({
message: '分期金额要大于借款平台的分期最低金额', message: '分期金额要大于借款平台的分期最低金额',
plain: true, plain: true,
}); });
......
...@@ -440,7 +440,9 @@ ...@@ -440,7 +440,9 @@
return ( return (
<> <>
<div className="flex justify-center"> <div className="flex justify-center">
<ElButton onClick={() => preview(row, 'images')} link type="primary">查看</ElButton> <ElButton onClick={() => preview(row, 'images')} link type="primary">
查看
</ElButton>
</div> </div>
</> </>
); );
...@@ -457,7 +459,9 @@ ...@@ -457,7 +459,9 @@
return ( return (
<> <>
<div className="flex justify-center"> <div className="flex justify-center">
<ElButton onClick={() => preview(row, 'notes')} link type="primary">查看</ElButton> <ElButton onClick={() => preview(row, 'notes')} link type="primary">
查看
</ElButton>
</div> </div>
</> </>
); );
...@@ -472,9 +476,11 @@ ...@@ -472,9 +476,11 @@
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
if (row.others && row.others.length > 0) { if (row.others && row.others.length > 0) {
return ( return (
<> <>
<div className="flex justify-center"> <div className="flex justify-center">
<ElButton onClick={() => preview(row, 'others')} link type="primary">查看</ElButton> <ElButton onClick={() => preview(row, 'others')} link type="primary">
查看
</ElButton>
</div> </div>
</> </>
); );
......
...@@ -73,12 +73,19 @@ ...@@ -73,12 +73,19 @@
]; ];
const config = reactive({ const config = reactive({
columns: [ columns: [
{ field: 'caseId', title: '案件ID', search: { el: 'input', labelWidth: 80 }, width: 190, {
field: 'caseId',
title: '案件ID',
search: { el: 'input', labelWidth: 80 },
width: 190,
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
return ( return (
<> <>
<div onClick={() => onCellClick(row)} className=" text-blue-400 underline cursor-pointer"> <div
onClick={() => onCellClick(row)}
className=" text-blue-400 underline cursor-pointer"
>
{row.caseId} {row.caseId}
</div> </div>
</> </>
...@@ -250,7 +257,7 @@ ...@@ -250,7 +257,7 @@
}, },
}, },
}, },
] ],
}); });
const query = () => caseLRef.value?.search(); const query = () => caseLRef.value?.search();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment