Commit 647a7c43 authored by 沈翠玲's avatar 沈翠玲

分期审批和减免审批

parent 8a5f2628
...@@ -57,13 +57,20 @@ ...@@ -57,13 +57,20 @@
</VxeTooltip> </VxeTooltip>
</td> </td>
<td class="label">调解中心</td> <td class="label">调解中心</td>
<td><VxeTooltip <td v-if="currentDetail?.tenant?.name"><VxeTooltip
:content="currentDetail?.tenant?.name" :content="currentDetail?.tenant?.name"
> >
<VxeTextEllipsis <VxeTextEllipsis
:content="currentDetail?.tenant?.name" :content="currentDetail?.tenant?.name"
></VxeTextEllipsis> ></VxeTextEllipsis>
</VxeTooltip></td> </VxeTooltip></td>
<td v-else><VxeTooltip
:content="Array.from(new Set(currentDetail.loans.map((v) => v?.tenant?.name))).join(',')"
>
<VxeTextEllipsis
:content="Array.from(new Set(currentDetail.loans.map((v) => v?.tenant?.name))).join(',')"
></VxeTextEllipsis>
</VxeTooltip></td>
</tr> </tr>
<tr> <tr>
<td class="label">申请CPE</td> <td class="label">申请CPE</td>
...@@ -617,17 +624,14 @@ ...@@ -617,17 +624,14 @@
caselistBy = res1.result caselistBy = res1.result
} }
const caselist = detail.loans || [] const caselist = detail.loans || []
caselistBy.forEach(case1 => {
if (caselist.length !== caselistBy.length) { const item = caselist.find(aa => aa.id === case1.id)
caselistBy.forEach(case1 => { if (item) {
const item = caselist.find(aa => aa.id === case1.id) item['checked'] = true
if (item) { } else {
item['checked'] = true caselist.push(case1)
} else { }
caselist.push(case1) })
}
})
}
const selectArr = caselist.filter(v => v.checked) const selectArr = caselist.filter(v => v.checked)
console.log('selectArr', selectArr) console.log('selectArr', selectArr)
showModal.value = true; showModal.value = true;
......
...@@ -21,18 +21,18 @@ ...@@ -21,18 +21,18 @@
<div :class="{nopending: currentDetail.flowStatus !== 'pending'}"> <div :class="{nopending: currentDetail.flowStatus !== 'pending'}">
<el-timeline style="max-width: 600px"> <el-timeline style="max-width: 600px">
<el-timeline-item <el-timeline-item
:timestamp="currentDetail?.createTime" :timestamp="currentDetail?.applyTime"
color="#234ca3" color="#234ca3"
> >
<p class=" font-bold text-sm">发起人</p> <p class=" font-bold text-sm">发起人</p>
<span class="text-xs bg-gray-200 rounded-sm text-slate-900 px-2">{{currentDetail?.cpe?.username}}</span> <span class="text-xs bg-gray-200 rounded-sm text-slate-900 px-2">{{currentDetail?.applyUser?.username}}</span>
</el-timeline-item> </el-timeline-item>
<el-timeline-item <el-timeline-item
:timestamp="currentDetail?.createTime" :timestamp="currentDetail?.repairTime"
:color="currentDetail.flowStatus !== 'pending' ? '#234ca3' : null" :color="currentDetail.flowStatus !== 'pending' ? '#234ca3' : null"
> >
<p class=" font-bold text-sm">平台审批环节</p> <p class=" font-bold text-sm">平台审批环节</p>
<span class="text-xs bg-gray-200 rounded-sm text-slate-900 px-2">{{currentDetail?.createBy}}</span> <span class="text-xs bg-gray-200 rounded-sm text-slate-900 px-2" v-if="currentDetail.flowStatus !== 'pending'">{{currentDetail?.repairUser?.username}}</span>
</el-timeline-item> </el-timeline-item>
</el-timeline> </el-timeline>
</div> </div>
...@@ -202,12 +202,19 @@ ...@@ -202,12 +202,19 @@
import { saveReduce } from '@/api/property'; import { saveReduce } from '@/api/property';
import { ElMessage, ElTag } from 'element-plus'; import { ElMessage, ElTag } from 'element-plus';
import { Download, ZoomIn } from '@element-plus/icons-vue'; import { Download, ZoomIn } from '@element-plus/icons-vue';
import {
listByBorrower
} from '@/api/property';
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';
import { getAppEnvConfig } from '@/utils/env'; import { getAppEnvConfig } from '@/utils/env';
import { useDict } from '@/hooks/useDict'; import { useDict } from '@/hooks/useDict';
import { inject } from 'vue'; import { inject } from 'vue';
import { useUserStore } from '@/stores/modules/user';
const userStore = useUserStore();
const envs = getAppEnvConfig(); const envs = getAppEnvConfig();
const { PhoneResultStatus, ReduceType, FlowStatus, FollowStatus, AuditStatus, CaseStatus } = useDict("PhoneResultStatus","ReduceType", "FlowStatus", "FollowStatus","AuditStatus", "CaseStatus"); const { PhoneResultStatus, ReduceType, FlowStatus, FollowStatus, AuditStatus, CaseStatus } = useDict("PhoneResultStatus","ReduceType", "FlowStatus", "FollowStatus","AuditStatus", "CaseStatus");
const emits = defineEmits(['success']); const emits = defineEmits(['success']);
...@@ -424,8 +431,22 @@ ...@@ -424,8 +431,22 @@
); );
}); });
}; };
const openModal = (detail) => { const openModal = async (detail) => {
let caselistBy = []
const res1 = await listByBorrower(detail?.borrower?.id)
if (res1.success && res1.result) {
caselistBy = res1.result.map(v => ({loan: v, caseId: v.caseId, reduceAmount: 0}))
}
const caselist = detail.reduceRecords const caselist = detail.reduceRecords
caselistBy.forEach(case1 => {
const item = caselist.find(aa => aa.loan.id === case1.loan.id)
if (item) {
item['checked'] = true
} else {
caselist.push(case1)
}
})
const selectArr = caselist.filter(v => v.checked)
showModal.value = true; showModal.value = true;
currentDetail.value = detail; currentDetail.value = detail;
form.totalReduceAmount = detail.totalReduceAmount; form.totalReduceAmount = detail.totalReduceAmount;
...@@ -441,16 +462,18 @@ ...@@ -441,16 +462,18 @@
url: envs.VITE_GLOB_API_URL_PREFIX + '/sys/static/' + v, url: envs.VITE_GLOB_API_URL_PREFIX + '/sys/static/' + v,
})) }))
: []; : [];
selectArr.forEach((item) => {
form['commissionAmount'] = Decimal(form['commissionAmount']).add(Decimal(item.loan.commissionAmount))
});
caselist.forEach((item) => { caselist.forEach((item) => {
item['payAmount'] = Decimal(item.loan.remainingAmount).sub(Decimal(item.reduceAmount)); item['payAmount'] = Decimal(item.loan.remainingAmount).sub(Decimal(item.reduceAmount));
form['commissionAmount'] = Decimal(form['commissionAmount']).add(Decimal(item.loan.commissionAmount))
}); });
tabledata.value = caselist; tabledata.value = caselist;
form.totalNumber = detail.totalNumber; form.totalNumber = detail.totalNumber;
setTimeout(() => { setTimeout(() => {
if (ProTableRef.value.element) { if (ProTableRef.value.element) {
ProTableRef.value.element.setAllCheckboxRow(true); ProTableRef.value.element.setCheckboxRow(selectArr, true);
selectdList.value = caselist; selectdList.value = selectArr;
} }
}, 500); }, 500);
}; };
...@@ -468,6 +491,11 @@ ...@@ -468,6 +491,11 @@
const params = { const params = {
...currentDetail.value, ...currentDetail.value,
askForStatus: 'Pending', askForStatus: 'Pending',
repairTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
repairUser: {
username:userStore.userInfo?.username,
id:userStore.userInfo?.id,
},
flowStatus: type, flowStatus: type,
...form, ...form,
images: images.length > 0 ? images : null, images: images.length > 0 ? images : null,
......
...@@ -158,8 +158,10 @@ ...@@ -158,8 +158,10 @@
import Decimal from 'decimal.js'; import Decimal from 'decimal.js';
import { getAppEnvConfig } from '@/utils/env'; import { getAppEnvConfig } from '@/utils/env';
import { useDict } from '@/hooks/useDict'; import { useDict } from '@/hooks/useDict';
import { useUserStore } from '@/stores/modules/user';
import { inject } from 'vue'; import { inject } from 'vue';
const envs = getAppEnvConfig(); const envs = getAppEnvConfig();
const userStore = useUserStore();
const { PhoneResultStatus, ReduceType, FlowStatus, FollowStatus, AuditStatus, CaseStatus } = useDict("PhoneResultStatus","ReduceType", "FlowStatus", "FollowStatus","AuditStatus", "CaseStatus"); const { PhoneResultStatus, ReduceType, FlowStatus, FollowStatus, AuditStatus, CaseStatus } = useDict("PhoneResultStatus","ReduceType", "FlowStatus", "FollowStatus","AuditStatus", "CaseStatus");
const emits = defineEmits(['success']); const emits = defineEmits(['success']);
const url = envs.VITE_GLOB_API_URL_PREFIX + '/sys/upload'; const url = envs.VITE_GLOB_API_URL_PREFIX + '/sys/upload';
...@@ -423,6 +425,11 @@ ...@@ -423,6 +425,11 @@
askForStatus: 'Pending', askForStatus: 'Pending',
flowStatus: 'pending', flowStatus: 'pending',
...form, ...form,
applyTime: dayjs().format('YYYY-MM-DD HH:mm:ss'),
applyUser: {
username:userStore.userInfo?.username,
id:userStore.userInfo?.id,
},
images: images.length > 0 ? images : null, images: images.length > 0 ? images : null,
reduceRecords: list, reduceRecords: list,
}; };
......
...@@ -190,7 +190,6 @@ ...@@ -190,7 +190,6 @@
const userStore = useUserStore(); const userStore = useUserStore();
const { PhoneResultStatus, RepayStatus, FlowStatus, FollowStatus, AuditStatus, CaseStatus } = useDict("PhoneResultStatus","RepayStatus", "FlowStatus", "FollowStatus","AuditStatus", "CaseStatus"); const { PhoneResultStatus, RepayStatus, FlowStatus, FollowStatus, AuditStatus, CaseStatus } = useDict("PhoneResultStatus","RepayStatus", "FlowStatus", "FollowStatus","AuditStatus", "CaseStatus");
const envs = getAppEnvConfig(); const envs = getAppEnvConfig();
const username = computed(() => userStore.userInfo?.username);
const url = envs.VITE_GLOB_API_URL_PREFIX + '/sys/upload'; const url = envs.VITE_GLOB_API_URL_PREFIX + '/sys/upload';
const ProTableRef = ref(); const ProTableRef = ref();
......
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