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

分期审批和减免审批

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