Commit 665339c5 authored by 沈翠玲's avatar 沈翠玲

下拉选择框

parent dd518a58
......@@ -155,8 +155,11 @@
enumMap.value.set(field, []);
// 当前 enum 为后台数据需要请求数据,则调用该请求接口,并存储到 enumMap
const { data } = await enumValue();
enumMap.value.set(field, data);
let { result } = await enumValue();
if (result?.content) {
result = result?.content
}
enumMap.value.set(field, result);
};
// 注入 enumMap
......
......@@ -323,7 +323,7 @@
title: '超时状态',
width: 100,
showOverflow: 'tooltip',
search: { el: 'select', props: { clearable: true } },
// search: { el: 'select', props: { clearable: true } },
slots: {
default: ({ row }) => {
return (
......
......@@ -291,7 +291,7 @@
return <>{Array.from(new Set(row.loans.map((v) => v.loanPlatform.name))).join(',')}</>;
},
},
search: { el: 'input', labelWidth: 80 },
// search: { el: 'input', labelWidth: 80 },
},
{
field: 'borrower.name',
......
......@@ -174,7 +174,7 @@
field: 'stages.loans.loanPlatform.name',
title: '借款机构',
showOverflow: 'tooltip',
search: { el: 'input', key: 'payOrg', labelWidth: 80 },
// search: { el: 'input', key: 'payOrg', labelWidth: 80 },
width: 100,
},
{
......
......@@ -329,7 +329,7 @@
title: '超时状态',
width: 100,
showOverflow: 'tooltip',
search: { el: 'select', props: { clearable: true }, labelWidth: 78 },
// search: { el: 'select', props: { clearable: true }, labelWidth: 78 },
slots: {
default: ({ row }) => {
return (
......
......@@ -223,7 +223,7 @@
const getTree = () => {
getTenantPage({
current: 1,
size: 999999999,
size: 999999999, status: 'enable'
}).then((res) => {
if (res.success) {
data.value = res.result.content;
......
......@@ -45,6 +45,10 @@
import citydata from '../../../assets/citydata';
import { onMounted } from 'vue';
import {VxeTextEllipsis, VxeTooltip} from 'vxe-pc-ui'
import { getPlatformPage } from '@/api/platform';
import { getManageOrgPage } from '@/api/manageOrg';
import { getTenantPage } from '@/api/tenant';
const allocationModalRef = ref();
const caseLRef = ref();
const selectdList = ref([]);
......@@ -147,17 +151,21 @@
},
{
field: 'loanPlatform.name',
title: '借款机构',
showOverflow: 'tooltip',
width: 100,
search: { el: 'input', props: { clearable: true }, key: 'payOrg', labelWidth: 78 },
enum: () => getPlatformPage({current: 1, size: 999999999, status: 'enable'}),
search: { el: 'select', props: { filterable: true }, key: 'loanPlatformId', labelWidth: 78 },
fieldNames: { label: 'name', value: 'id' },
title: '借款机构',
width: 100
},
{
field: 'manageOrg.orgName',
title: '资管公司',
enum: () => getManageOrgPage({current: 1, size: 999999999, status: 'enable'}),
fieldNames: { label: 'orgName', value: 'id' },
showOverflow: 'tooltip',
width: 100,
search: { el: 'input', props: { clearable: true }, key: 'manageOrg', labelWidth: 78 },
search: { el: 'select', props: { clearable: true }, key: 'manageOrgId', labelWidth: 78 },
},
{
field: 'batchCode',
......@@ -188,10 +196,12 @@
},
{
field: 'tenant.name',
title: '调解中心',
showOverflow: 'tooltip',
width: 80,
search: { el: 'input', props: { clearable: true }, labelWidth: 78 },
enum: () => getTenantPage({current: 1, size: 999999999, status: 'enable'}),
search: { el: 'select', props: { filterable: true }, key: 'tenantId', labelWidth: 78 },
fieldNames: { label: 'name', value: 'id' },
title: '调解中心',
width: 100
},
{
field: 'discount',
......
......@@ -223,7 +223,7 @@
const getTree = () => {
getTenantPage({
current: 1,
size: 999999999,
size: 999999999, status: 'enable'
}).then((res) => {
if (res.success) {
data.value = res.result.content;
......
......@@ -15,13 +15,15 @@
<vxe-modal
v-model="showModal"
title="提示"
height="282"
height="242"
width="450"
show-footer
esc-closable
>
<div class="w-full px-3 h-full overflow-auto flex-col flex mytable">
回收是只回收未留案的案件,强制回收就是所有状态案件都处理,请确认选择操作?
⚠️回收处理后可重新分派<br />
回收:只回收未留案的案件<br />
强制回收:所有案件都会回收,留案案件会被强制回收<br />
</div>
<template #footer>
<el-button type="default" @click="showModal = false">取消</el-button>
......@@ -39,6 +41,9 @@
import {VxeTextEllipsis, VxeTooltip} from 'vxe-pc-ui'
import citydata from '../../../assets/citydata';
import { onMounted } from 'vue';
import { getPlatformPage } from '@/api/platform';
import { getManageOrgPage } from '@/api/manageOrg';
import { getTenantPage } from '@/api/tenant';
const caseLRef = ref();
const selectdList = ref([]);
const curParam = ref({});
......@@ -173,17 +178,21 @@
},
{
field: 'loanPlatform.name',
title: '借款机构',
showOverflow: 'tooltip',
width: 100,
search: { el: 'input', props: { clearable: true }, key: 'payOrg', labelWidth: 78 },
enum: () => getPlatformPage({current: 1, size: 999999999, status: 'enable'}),
search: { el: 'select', props: { filterable: true }, key: 'loanPlatformId', labelWidth: 78 },
fieldNames: { label: 'name', value: 'id' },
title: '借款机构',
width: 100
},
{
field: 'manageOrg.orgName',
showOverflow: 'tooltip',
title: '资管公司',
enum: () => getManageOrgPage({current: 1, size: 999999999, status: 'enable'}),
fieldNames: { label: 'orgName', value: 'id' },
showOverflow: 'tooltip',
width: 100,
search: { el: 'input', props: { clearable: true }, key: 'manageOrg', labelWidth: 78 },
search: { el: 'select', props: { clearable: true }, key: 'manageOrgId', labelWidth: 78 },
},
{
field: 'batchCode',
......@@ -214,10 +223,12 @@
},
{
field: 'tenant.name',
title: '调解中心',
showOverflow: 'tooltip',
width: 80,
search: { el: 'input', props: { clearable: true }, labelWidth: 78 },
enum: () => getTenantPage({current: 1, size: 999999999, status: 'enable'}),
search: { el: 'select', props: { filterable: true }, key: 'tenantId', labelWidth: 78 },
fieldNames: { label: 'name', value: 'id' },
title: '调解中心',
width: 100
},
{
field: 'discount',
......
......@@ -66,115 +66,119 @@
</div>
</div>
</div>
<div id="casedetail">
<div class="box-title" style="line-height: 43px;"
>案件明细
<el-button type="primary" @click="foldCaseTree">展开/折叠 </el-button>
</div>
<div class="box-content">
<div class="flex mb-2">
<div class="mr-4"
>委案金额:<span class="text-blue-500">{{ sumCase.commissionAmount }}</span
></div
>
<div class="mr-4"
>累计减免金额:<span class="text-blue-500">{{ sumCase.sumReductionAmount }}</span
></div
>
<div class="mr-4"
>累计还款金额:<span class="text-blue-500">{{ sumCase.sumRepayAmount }}</span
></div
>
<div class="mr-4"
>剩余待还金额:<span class="text-blue-500">{{ sumCase.remainingAmount }}</span
></div
>
</div>
<vxe-grid
v-bind="caseDetailConfig"
ref="caseDetailRef"
@cell-click="onCellCase"
>
<template #expand_content="{ row }">
<div class="expand-box">
<div>案件明细</div>
<div class="expand-table">
<table
><tbody>
<tr>
<td class="label">案件ID</td>
<td>{{ row?.caseId }}</td>
<td class="label">借款机构</td>
<td>{{ row?.loanPlatform?.name }}</td>
<td class="label">资管公司</td>
<td>{{ row?.manageOrg.orgName }}</td>
</tr>
<tr>
<td class="label">身份证</td>
<td>{{ row?.borrower?.idCard }}</td>
<td class="label">手机号</td>
<td>{{ row?.borrower?.phone }}</td>
<td class="label">折扣</td>
<td>{{ row?.discount }}</td>
<td class="label">委案金额</td>
<td>{{ row?.commissionAmount }}</td>
</tr>
<tr>
<td class="label">累计还款金额</td>
<td>{{ row?.sumRepayAmount }}</td>
<td class="label">累计减免金额</td>
<td>{{ row?.sumReductionAmount }}</td>
<td class="label">剩余待还金额</td>
<td>{{ row?.remainingAmount }}</td>
<td class="label">折扣后金额</td>
<td>{{ (row?.remainingAmount && row?.discount) ? (Decimal(row?.remainingAmount).mul(Decimal(row?.discount))) : row?.remainingAmount }}</td>
</tr>
<tr>
<td class="label">CPE</td>
<td>{{ row?.cpe?.username }}</td>
<td class="label">分派CPE日期</td>
<td>{{ row?.cpeDate }}</td>
<td class="label">本金余额</td>
<td>{{ row?.principalBalance }}</td>
<td class="label">案件状态</td>
<td>
{{
row?.caseStatus
? caseStatusOpt.find((v) => v.value === row?.caseStatus).label
: ''
}}</td
>
</tr>
<tr>
<td class="label">欠息额</td>
<td>{{ row?.debitInterest }}</td>
<td class="label">手续费</td>
<td>{{ row?.commission }}</td>
<td class="label">跟进结果</td>
<td>{{
row?.followStatus
? followStatusOpt.find((v) => v.value === row?.followStatus).label
: ''
}}</td>
<td class="label">跟进状态</td>
<td>{{
row?.phoneResultStatus
? phoneResultStatusOpt.find((v) => v.value === row?.phoneResultStatus)
.label
: ''
}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</template>
</vxe-grid>
</div>
</div>
<vxe-tabs v-model="selectTab" type="border-card" :height="140" class="flex-1 mt-3">
<vxe-tab-pane title="案件明细" name="3">
<div id="casedetail">
<div class="box-title" style="line-height: 43px;"
>案件明细
<el-button type="primary" @click="foldCaseTree">展开/折叠 </el-button>
</div>
<div class="box-content">
<el-row class="mx-2 mb-2">
<el-col :span="6">
<el-statistic title="委案金额" :value="sumCase.commissionAmount" >
<template #suffix></template>
</el-statistic>
</el-col>
<el-col :span="6">
<el-statistic title="累计减免金额" :value="sumCase.sumReductionAmount" >
<template #suffix></template>
</el-statistic>
</el-col>
<el-col :span="6">
<el-statistic title="累计还款金额" :value="sumCase.sumRepayAmount" >
<template #suffix></template>
</el-statistic>
</el-col>
<el-col :span="6">
<el-statistic title="剩余待还金额" :value="sumCase.remainingAmount" >
<template #suffix></template>
</el-statistic>
</el-col>
</el-row>
<vxe-grid
v-bind="caseDetailConfig"
ref="caseDetailRef"
@cell-click="onCellCase"
>
<template #expand_content="{ row }">
<div class="expand-box">
<div>案件明细</div>
<div class="expand-table">
<table
><tbody>
<tr>
<td class="label">案件ID</td>
<td>{{ row?.caseId }}</td>
<td class="label">借款机构</td>
<td>{{ row?.loanPlatform?.name }}</td>
<td class="label">资管公司</td>
<td>{{ row?.manageOrg.orgName }}</td>
</tr>
<tr>
<td class="label">身份证</td>
<td>{{ row?.borrower?.idCard }}</td>
<td class="label">手机号</td>
<td>{{ row?.borrower?.phone }}</td>
<td class="label">折扣</td>
<td>{{ row?.discount }}</td>
<td class="label">委案金额</td>
<td>{{ row?.commissionAmount }}</td>
</tr>
<tr>
<td class="label">累计还款金额</td>
<td>{{ row?.sumRepayAmount }}</td>
<td class="label">累计减免金额</td>
<td>{{ row?.sumReductionAmount }}</td>
<td class="label">剩余待还金额</td>
<td>{{ row?.remainingAmount }}</td>
<td class="label">折扣后金额</td>
<td>{{ (row?.remainingAmount && row?.discount) ? (Decimal(row?.remainingAmount).mul(Decimal(row?.discount))) : row?.remainingAmount }}</td>
</tr>
<tr>
<td class="label">CPE</td>
<td>{{ row?.cpe?.username }}</td>
<td class="label">分派CPE日期</td>
<td>{{ row?.cpeDate }}</td>
<td class="label">本金余额</td>
<td>{{ row?.principalBalance }}</td>
<td class="label">案件状态</td>
<td>
{{
row?.caseStatus
? caseStatusOpt.find((v) => v.value === row?.caseStatus).label
: ''
}}</td
>
</tr>
<tr>
<td class="label">欠息额</td>
<td>{{ row?.debitInterest }}</td>
<td class="label">手续费</td>
<td>{{ row?.commission }}</td>
<td class="label">跟进结果</td>
<td>{{
row?.followStatus
? followStatusOpt.find((v) => v.value === row?.followStatus).label
: ''
}}</td>
<td class="label">跟进状态</td>
<td>{{
row?.phoneResultStatus
? phoneResultStatusOpt.find((v) => v.value === row?.phoneResultStatus)
.label
: ''
}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</template>
</vxe-grid>
</div>
</div>
</vxe-tab-pane>
<vxe-tab-pane title="跟进记录" name="4">
<div id="callrecord">
<div class="box-title"
......@@ -452,7 +456,7 @@
<script setup lang="jsx" name="caseDetail">
import { useRoute } from 'vue-router';
import { reactive, ref, onBeforeMount, onMounted } from 'vue';
import { ElButton } from 'element-plus';
import { ElButton, ElTag } from 'element-plus';
import repairModal from './components/repairModal.vue';
import returnModal from './components/returnModal.vue';
import reduceDrawer from './components/reduceDrawer.vue';
......@@ -468,7 +472,7 @@
getRepayRecords,
getGuarantors,
} from '@/api/property';
import { Download } from '@element-plus/icons-vue';
import { Download, Phone } from '@element-plus/icons-vue';
import { saveAudit } from '@/api/audit';
import Decimal from 'decimal.js';
......@@ -789,6 +793,7 @@
toolbarConfig: { enabled: false },
});
const relationConfig = reactive({
minHeight: 200,
columns: [
{ type: 'seq', width: 49 },
{
......@@ -809,15 +814,22 @@
showOverflow: 'tooltip',
slots: {
default: ({ row }) => {
return <>{row.phone + ' ' + (row.status === 'Y' ? '有效' : '无效')} <ElButton
return <>
<div className="flex items-center ">
<div className="mr-1">{row.phone}</div>
<ElTag type={row.status === 'Y' ? 'primary' : 'danger'}>
{row.status === 'Y' ? '有效' : '无效'}
</ElTag>
<ElButton
type="primary"
onClick={() => callTelephone(row)}
icon={Phone}
link
disabled={row.status !== 'Y'}
>
{/* <ElButton type="primary" onClick={() => callTelephone(row)}> */}
拨打跟进
</ElButton></>;
</ElButton>
</div>
</>;
},
},
}
......
......@@ -27,6 +27,8 @@
const caseModalRef = ref();
const caseLRef = ref();
import { onMounted } from 'vue';
import { getPlatformPage } from '@/api/platform';
import { getManageOrgPage } from '@/api/manageOrg';
const router = useRouter();
const onCellClick = (row) => {
......@@ -97,16 +99,20 @@
{
field: 'loanPlatform.name',
showOverflow: 'tooltip',
enum: () => getPlatformPage({current: 1, size: 999999999, status: 'enable'}),
search: { el: 'select', props: { filterable: true }, key: 'loanPlatform', labelWidth: 80 },
fieldNames: { label: 'name', value: 'id' },
title: '借款机构',
width: 100,
search: { el: 'input', props: { clearable: true }, key: 'payOrg', labelWidth: 80 },
width: 100
},
{
field: 'manageOrg.orgName',
title: '资管公司',
enum: () => getManageOrgPage({current: 1, size: 999999999, status: 'enable'}),
fieldNames: { label: 'orgName', value: 'id' },
showOverflow: 'tooltip',
width: 100,
search: { el: 'input', props: { clearable: true }, key: 'manageOrg', labelWidth: 80 },
search: { el: 'select', props: { clearable: true }, key: 'manageOrg', labelWidth: 80 },
},
{
field: 'borrower.name',
......
......@@ -223,7 +223,7 @@
const getTree = () => {
getTenantPage({
current: 1,
size: 999999999,
size: 999999999, status: 'enable'
}).then((res) => {
if (res.success) {
data.value = res.result.content;
......
......@@ -15,13 +15,15 @@
<vxe-modal
v-model="showModal"
title="提示"
height="282"
height="242"
width="450"
show-footer
esc-closable
>
<div class="w-full px-3 h-full overflow-auto flex-col flex mytable">
回收是只回收未留案的案件,强制回收就是所有状态案件都处理,请确认选择操作
<div class="w-full px-3 h-full overflow-auto flex-col flex mytable">
⚠️撤案处理后不可重新分派<br />
撤案:只撤案未留案的案件<br />
强制撤案:所有案件都会撤案,留案案件会被强制撤案<br />
</div>
<template #footer>
<el-button type="default" @click="showModal = false">取消</el-button>
......@@ -40,6 +42,9 @@
import citydata from '../../../assets/citydata';
import { onMounted } from 'vue';
import {VxeTextEllipsis, VxeTooltip} from 'vxe-pc-ui'
import { getPlatformPage } from '@/api/platform';
import { getManageOrgPage } from '@/api/manageOrg';
import { getTenantPage } from '@/api/tenant';
const caseLRef = ref();
const selectdList = ref([]);
const curParam = ref({});
......@@ -173,17 +178,21 @@
},
{
field: 'loanPlatform.name',
title: '借款机构',
showOverflow: 'tooltip',
width: 100,
search: { el: 'input', props: { clearable: true }, key: 'payOrg', labelWidth: 78 },
enum: () => getPlatformPage({current: 1, size: 999999999, status: 'enable'}),
search: { el: 'select', props: { filterable: true }, key: 'loanPlatformId', labelWidth: 78 },
fieldNames: { label: 'name', value: 'id' },
title: '借款机构',
width: 100
},
{
field: 'manageOrg.orgName',
showOverflow: 'tooltip',
title: '资管公司',
enum: () => getManageOrgPage({current: 1, size: 999999999, status: 'enable'}),
fieldNames: { label: 'orgName', value: 'id' },
showOverflow: 'tooltip',
width: 100,
search: { el: 'input', props: { clearable: true }, key: 'manageOrg', labelWidth: 78 },
search: { el: 'select', props: { clearable: true }, key: 'manageOrgId', labelWidth: 78 },
},
{
field: 'batchCode',
......@@ -214,10 +223,12 @@
},
{
field: 'tenant.name',
title: '调解中心',
showOverflow: 'tooltip',
width: 80,
search: { el: 'input', props: { clearable: true }, labelWidth: 78 },
enum: () => getTenantPage({current: 1, size: 999999999, status: 'enable'}),
search: { el: 'select', props: { filterable: true }, key: 'tenantId', labelWidth: 78 },
fieldNames: { label: 'name', value: 'id' },
title: '调解中心',
width: 100
},
{
field: 'discount',
......
......@@ -328,7 +328,7 @@
title: '超时状态',
width: 100,
showOverflow: 'tooltip',
search: { el: 'select', props: { clearable: true }, labelWidth: 78 },
// search: { el: 'select', props: { clearable: true }, labelWidth: 78 },
slots: {
default: ({ row }) => {
return (
......
......@@ -24,6 +24,9 @@
import { stayLoan } from '@/api/allcation';
import { onMounted } from 'vue';
import { useUserStore } from '@/stores/modules/user';
import { getPlatformPage } from '@/api/platform';
import { getManageOrgPage } from '@/api/manageOrg';
const { userInfo } = useUserStore();
const router = useRouter();
const selectdList = ref([]);
......@@ -138,17 +141,21 @@
},
{
field: 'loanPlatform.name',
title: '借款机构',
showOverflow: 'tooltip',
width: 100,
search: { el: 'input', props: { clearable: true }, key: 'payOrg', labelWidth: 80 },
enum: () => getPlatformPage({current: 1, size: 999999999, status: 'enable'}),
search: { el: 'select', props: { filterable: true }, key: 'loanPlatform', labelWidth: 80 },
fieldNames: { label: 'name', value: 'id' },
title: '借款机构',
width: 100
},
{
field: 'manageOrg.orgName',
title: '资管公司',
enum: () => getManageOrgPage({current: 1, size: 999999999, status: 'enable'}),
fieldNames: { label: 'orgName', value: 'id' },
showOverflow: 'tooltip',
width: 100,
search: { el: 'input', props: { clearable: true }, key: 'manageOrg', labelWidth: 80 },
search: { el: 'select', props: { clearable: true }, key: 'manageOrg', labelWidth: 80 },
},
{
field: 'borrower.name',
......
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