Commit 9dc6b9f9 authored by 沈翠玲's avatar 沈翠玲

调整布局

parent fc669198
...@@ -8,7 +8,6 @@ import { setupDirectives } from '@/plugins/directives'; ...@@ -8,7 +8,6 @@ import { setupDirectives } from '@/plugins/directives';
import { setupVxeTabele } from './plugins/vxe-table'; import { setupVxeTabele } from './plugins/vxe-table';
import ProTable from '@/components/ProTable/index.vue'; import ProTable from '@/components/ProTable/index.vue';
import { download } from '@/utils/http/index'; import { download } from '@/utils/http/index';
import './styles/element-variables.scss';
export async function bootstrapInstall() { export async function bootstrapInstall() {
const app = createApp(App); const app = createApp(App);
......
...@@ -13,6 +13,8 @@ import { ...@@ -13,6 +13,8 @@ import {
VxePrint, VxePrint,
VxeTooltip, VxeTooltip,
VxeUpload, VxeUpload,
VxeTabPane,
VxeTabs,
VxeCheckbox, VxeCheckbox,
VxeNumberInput, VxeNumberInput,
VxeRadioGroup, VxeRadioGroup,
...@@ -48,6 +50,8 @@ function lazyVxeUI(app) { ...@@ -48,6 +50,8 @@ function lazyVxeUI(app) {
app.use(VxeTooltip); app.use(VxeTooltip);
app.use(VxeUpload); app.use(VxeUpload);
app.use(VxeCheckbox); app.use(VxeCheckbox);
app.use(VxeTabPane);
app.use(VxeTabs);
app.use(VxeNumberInput); app.use(VxeNumberInput);
app.use(VxeRadioGroup); app.use(VxeRadioGroup);
} }
......
// element-variables.scss
@import 'element-plus/theme-chalk/src/index.scss';
$--font-size: 13px;
...@@ -103,7 +103,7 @@ ...@@ -103,7 +103,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: flex-end; justify-content: flex-end;
margin-bottom: 18px; // margin-bottom: 10px;
} }
} }
......
...@@ -243,7 +243,8 @@ ...@@ -243,7 +243,8 @@
{ {
field: 'caseId', field: 'caseId',
title: '案件ID', title: '案件ID',
search: { el: 'input' }, showOverflow: 'tooltip',
search: { el: 'input', labelWidth: 80 },
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
return <>{row.loans.map((v) => v.caseId).join(',')}</>; return <>{row.loans.map((v) => v.caseId).join(',')}</>;
...@@ -253,71 +254,85 @@ ...@@ -253,71 +254,85 @@
}, },
{ {
field: 'loanPlatform.name', field: 'loanPlatform.name',
showOverflow: 'tooltip',
title: '借款机构', title: '借款机构',
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
return <>{row.loans.map((v) => v.loanPlatform.name).join(',')}</>; return <>{row.loans.map((v) => v.loanPlatform.name).join(',')}</>;
}, },
}, },
search: { el: 'input' }, search: { el: 'input', labelWidth: 80 },
}, },
{ {
field: 'borrower.name', field: 'borrower.name',
showOverflow: 'tooltip',
title: '借款人名字', title: '借款人名字',
search: { el: 'input', key: 'borrower' }, search: { el: 'input', key: 'borrower', labelWidth: 80 },
width: 90, width: 90,
}, },
{ {
field: 'totalRepayAmount', field: 'totalRepayAmount',
showOverflow: 'tooltip',
title: '还款总额', title: '还款总额',
search: { el: 'input' }, search: { el: 'input', labelWidth: 80 },
width: 80, width: 80,
}, },
{ {
field: 'applyDate', field: 'applyDate',
title: '分期申请时间', title: '分期申请时间',
showOverflow: 'tooltip',
search: { search: {
el: 'date-picker', el: 'date-picker',
labelWidth: 80,
props: { type: 'datetime', valueFormat: 'YYYY-MM-DD HH:mm:ss' }, props: { type: 'datetime', valueFormat: 'YYYY-MM-DD HH:mm:ss' },
}, },
width: 115, width: 115,
}, },
{ {
field: 'effectiveTime', field: 'effectiveTime',
showOverflow: 'tooltip',
title: '分期生效时间', title: '分期生效时间',
search: { search: {
el: 'date-picker', el: 'date-picker',
labelWidth: 80,
props: { type: 'datetime', valueFormat: 'YYYY-MM-DD HH:mm:ss' }, props: { type: 'datetime', valueFormat: 'YYYY-MM-DD HH:mm:ss' },
}, },
width: 115, width: 115,
}, },
{ {
field: 'totalPeriod', field: 'totalPeriod',
showOverflow: 'tooltip',
title: '还款期数', title: '还款期数',
enum: options, enum: options,
search: { el: 'select', props: { filterable: true }, span: 1 }, search: { el: 'select', props: { filterable: true }, span: 1, labelWidth: 80 },
fieldNames: { label: 'label', value: 'value' }, fieldNames: { label: 'label', value: 'value' },
width: 80, width: 80,
}, },
{ {
field: 'firstApplyDate', field: 'firstApplyDate',
showOverflow: 'tooltip',
title: '首期还款日', title: '首期还款日',
search: { el: 'input' }, search: {
search: { el: 'date-picker', props: { type: 'date', valueFormat: 'YYYY-MM-DD' } }, el: 'date-picker',
props: { type: 'date', valueFormat: 'YYYY-MM-DD' },
labelWidth: 80,
},
width: 100, width: 100,
}, },
{ {
field: 'remainingAmount', field: 'remainingAmount',
showOverflow: 'tooltip',
title: '剩余待还金额', title: '剩余待还金额',
search: { el: 'input' }, search: { el: 'input', labelWidth: 80 },
width: 110, width: 110,
}, },
{ {
field: 'flowStatus', field: 'flowStatus',
title: '审核状态', title: '审核状态',
showOverflow: 'tooltip',
width: 80, width: 80,
enum: flowStatusOpt, enum: flowStatusOpt,
search: { el: 'select', props: { filterable: true }, span: 1 }, search: { el: 'select', props: { filterable: true }, span: 1, labelWidth: 80 },
fieldNames: { label: 'label', value: 'value' }, fieldNames: { label: 'label', value: 'value' },
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
......
...@@ -190,7 +190,8 @@ ...@@ -190,7 +190,8 @@
{ {
field: 'caseId', field: 'caseId',
title: '案件ID', title: '案件ID',
search: { el: 'input' }, showOverflow: 'tooltip',
search: { el: 'input', labelWidth: 80 },
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
return <>{row.reduceRecords.map((v) => v.loan.caseId).join(',')}</>; return <>{row.reduceRecords.map((v) => v.loan.caseId).join(',')}</>;
...@@ -201,39 +202,45 @@ ...@@ -201,39 +202,45 @@
{ {
field: 'borrower.name', field: 'borrower.name',
title: '借款人名字', title: '借款人名字',
search: { el: 'input', key: 'borrower' }, showOverflow: 'tooltip',
search: { el: 'input', key: 'borrower', labelWidth: 80 },
width: 90, width: 90,
}, },
{ {
field: 'totalReduceAmount', field: 'totalReduceAmount',
showOverflow: 'tooltip',
title: '减免金额', title: '减免金额',
search: { el: 'input' }, search: { el: 'input', labelWidth: 80 },
width: 120, width: 120,
}, },
{ {
field: 'totalNumber', field: 'totalNumber',
showOverflow: 'tooltip',
title: '减免案件数', title: '减免案件数',
search: { el: 'input' }, search: { el: 'input', labelWidth: 80 },
width: 120, width: 120,
}, },
{ {
field: 'remainingAmount', field: 'remainingAmount',
showOverflow: 'tooltip',
title: '剩余待还金额', title: '剩余待还金额',
search: { el: 'input' }, search: { el: 'input', labelWidth: 80 },
width: 120, width: 120,
}, },
{ {
field: 'totalPayAmount', field: 'totalPayAmount',
showOverflow: 'tooltip',
title: '累计还款金额', title: '累计还款金额',
search: { el: 'input' }, search: { el: 'input', labelWidth: 80 },
width: 120, width: 120,
}, },
{ {
field: 'reduceType', field: 'reduceType',
title: '减免类型', title: '减免类型',
showOverflow: 'tooltip',
width: 80, width: 80,
enum: reduceTypeOpt, enum: reduceTypeOpt,
search: { el: 'select', props: { filterable: true }, span: 1 }, search: { el: 'select', props: { filterable: true }, span: 1, labelWidth: 80 },
fieldNames: { label: 'label', value: 'value' }, fieldNames: { label: 'label', value: 'value' },
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
...@@ -250,9 +257,10 @@ ...@@ -250,9 +257,10 @@
{ {
field: 'flowStatus', field: 'flowStatus',
title: '审核状态', title: '审核状态',
showOverflow: 'tooltip',
width: 80, width: 80,
enum: flowStatusOpt, enum: flowStatusOpt,
search: { el: 'select', props: { filterable: true }, span: 1 }, search: { el: 'select', props: { filterable: true }, span: 1, labelWidth: 80 },
fieldNames: { label: 'label', value: 'value' }, fieldNames: { label: 'label', value: 'value' },
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
...@@ -269,16 +277,20 @@ ...@@ -269,16 +277,20 @@
{ {
field: 'applyDate', field: 'applyDate',
title: '减免截止时间', title: '减免截止时间',
showOverflow: 'tooltip',
search: { search: {
el: 'date-picker', el: 'date-picker',
labelWidth: 80,
props: { type: 'datetime', valueFormat: 'YYYY-MM-DD HH:mm:ss' }, props: { type: 'datetime', valueFormat: 'YYYY-MM-DD HH:mm:ss' },
}, },
}, },
{ {
field: 'inEffectDate', field: 'inEffectDate',
title: '减免生效时间', title: '减免生效时间',
showOverflow: 'tooltip',
search: { search: {
el: 'date-picker', el: 'date-picker',
labelWidth: 80,
props: { type: 'datetime', valueFormat: 'YYYY-MM-DD HH:mm:ss' }, props: { type: 'datetime', valueFormat: 'YYYY-MM-DD HH:mm:ss' },
}, },
}, },
......
...@@ -90,61 +90,71 @@ ...@@ -90,61 +90,71 @@
{ type: 'checkbox', width: 50 }, { type: 'checkbox', width: 50 },
{ {
field: 'caseId', field: 'caseId',
showOverflow: 'tooltip',
title: '案件ID', title: '案件ID',
search: { el: 'input' }, search: { el: 'input', labelWidth: 80 },
width: 80, width: 80,
}, },
{ {
field: 'borrower.name', field: 'borrower.name',
title: '借款人名字', title: '借款人名字',
search: { el: 'input', key: 'borrower' }, showOverflow: 'tooltip',
search: { el: 'input', key: 'borrower', labelWidth: 80 },
width: 90, width: 90,
}, },
{ {
field: 'id', field: 'id',
title: '还款记录ID', title: '还款记录ID',
search: { el: 'input' }, showOverflow: 'tooltip',
search: { el: 'input', labelWidth: 80 },
}, },
{ {
field: 'realRepayAmount', field: 'realRepayAmount',
title: '实际还款金额', title: '实际还款金额',
search: { el: 'input' }, showOverflow: 'tooltip',
search: { el: 'input', labelWidth: 80 },
}, },
{ {
field: 'realRepayTime', field: 'realRepayTime',
showOverflow: 'tooltip',
title: '实际还款时间', title: '实际还款时间',
search: { search: {
el: 'date-picker', el: 'date-picker',
labelWidth: 80,
props: { type: 'datetime', valueFormat: 'YYYY-MM-DD HH:mm:ss' }, props: { type: 'datetime', valueFormat: 'YYYY-MM-DD HH:mm:ss' },
}, },
width: 115, width: 115,
}, },
{ {
field: 'reduce.totalPayAmount', field: 'reduce.totalPayAmount',
showOverflow: 'tooltip',
title: '应还金额', title: '应还金额',
search: { el: 'input', key: 'reduce.totalPayAmount' }, search: { el: 'input', key: 'reduce.totalPayAmount', labelWidth: 80 },
width: 115, width: 115,
}, },
{ {
field: 'repayType', field: 'repayType',
showOverflow: 'tooltip',
title: '还款方式', title: '还款方式',
enum: options, enum: options,
search: { el: 'select', props: { filterable: true }, span: 1 }, search: { el: 'select', props: { filterable: true }, span: 1, labelWidth: 80 },
fieldNames: { label: 'label', value: 'value' }, fieldNames: { label: 'label', value: 'value' },
width: 80, width: 80,
}, },
{ {
field: 'stages.loans.loanPlatform.name', field: 'stages.loans.loanPlatform.name',
title: '借款机构', title: '借款机构',
search: { el: 'input', key: 'payOrg' }, showOverflow: 'tooltip',
search: { el: 'input', key: 'payOrg', labelWidth: 80 },
width: 100, width: 100,
}, },
{ {
field: 'flowStatus', field: 'flowStatus',
title: '审核状态', title: '审核状态',
showOverflow: 'tooltip',
width: 80, width: 80,
enum: flowStatusOpt, enum: flowStatusOpt,
search: { el: 'select', props: { filterable: true }, span: 1 }, search: { el: 'select', props: { filterable: true }, span: 1, labelWidth: 80 },
fieldNames: { label: 'label', value: 'value' }, fieldNames: { label: 'label', value: 'value' },
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
......
...@@ -131,10 +131,11 @@ ...@@ -131,10 +131,11 @@
return { return {
columns: [ columns: [
{ type: 'checkbox', title: '', width: 40 }, { type: 'checkbox', title: '', width: 40 },
{ field: 'id', title: '跟进记录ID', width: 90 }, { field: 'id', title: '跟进记录ID', showOverflow: 'tooltip', width: 90 },
{ {
field: 'caseId', field: 'caseId',
title: '案件ID', title: '案件ID',
showOverflow: 'tooltip',
width: 80, width: 80,
search: { el: 'input', props: { clearable: true }, labelWidth: 80 }, search: { el: 'input', props: { clearable: true }, labelWidth: 80 },
slots: { slots: {
...@@ -146,6 +147,7 @@ ...@@ -146,6 +147,7 @@
{ {
field: 'trackTime', field: 'trackTime',
title: '跟进日期', title: '跟进日期',
showOverflow: 'tooltip',
width: 100, width: 100,
search: { search: {
el: 'date-picker', el: 'date-picker',
...@@ -156,6 +158,7 @@ ...@@ -156,6 +158,7 @@
{ {
field: 'nextTime', field: 'nextTime',
title: '下次跟进时间', title: '下次跟进时间',
showOverflow: 'tooltip',
width: 110, width: 110,
search: { search: {
el: 'date-picker', el: 'date-picker',
...@@ -166,12 +169,14 @@ ...@@ -166,12 +169,14 @@
{ {
field: 'guarantor.name', field: 'guarantor.name',
title: '联系人姓名', title: '联系人姓名',
showOverflow: 'tooltip',
width: 110, width: 110,
search: { el: 'input', props: { clearable: true }, key: 'guarantorName', labelWidth: 80 }, search: { el: 'input', props: { clearable: true }, key: 'guarantorName', labelWidth: 80 },
}, },
{ {
field: 'guarantor.phone', field: 'guarantor.phone',
title: '联系人号码', title: '联系人号码',
showOverflow: 'tooltip',
width: 110, width: 110,
search: { search: {
el: 'input', el: 'input',
...@@ -184,6 +189,7 @@ ...@@ -184,6 +189,7 @@
{ {
field: 'followStatus', field: 'followStatus',
title: '拨打跟进结果', title: '拨打跟进结果',
showOverflow: 'tooltip',
width: 120, width: 120,
enum: followStatusOpt, enum: followStatusOpt,
search: { search: {
...@@ -214,6 +220,7 @@ ...@@ -214,6 +220,7 @@
{ {
field: 'phoneResultStatus', field: 'phoneResultStatus',
title: '拨打处置状态', title: '拨打处置状态',
showOverflow: 'tooltip',
width: 120, width: 120,
enum: phoneResultStatusOpt, enum: phoneResultStatusOpt,
search: { el: 'select', props: { filterable: true }, labelWidth: 80 }, search: { el: 'select', props: { filterable: true }, labelWidth: 80 },
...@@ -233,6 +240,7 @@ ...@@ -233,6 +240,7 @@
{ {
field: 'trackRecord.auditStatus', field: 'trackRecord.auditStatus',
title: '稽核状态', title: '稽核状态',
showOverflow: 'tooltip',
width: 80, width: 80,
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
...@@ -249,12 +257,14 @@ ...@@ -249,12 +257,14 @@
{ {
field: 'remark', field: 'remark',
title: '备注', title: '备注',
showOverflow: 'tooltip',
width: 80, width: 80,
search: { el: 'input', props: { clearable: true }, labelWidth: 80 }, search: { el: 'input', props: { clearable: true }, labelWidth: 80 },
}, },
{ {
field: 'voices', field: 'voices',
title: '通话录音', title: '通话录音',
showOverflow: 'tooltip',
width: 80, width: 80,
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
...@@ -275,7 +285,8 @@ ...@@ -275,7 +285,8 @@
{ {
field: 'code', field: 'code',
title: '微信图片附件', title: '微信图片附件',
width: 80, showOverflow: 'tooltip',
width: 100,
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
if (row.images && row.images.length > 0) { if (row.images && row.images.length > 0) {
...@@ -295,7 +306,8 @@ ...@@ -295,7 +306,8 @@
{ {
field: 'code', field: 'code',
title: '短信图片附件', title: '短信图片附件',
width: 80, showOverflow: 'tooltip',
width: 100,
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
if (row.notes && row.notes.length > 0) { if (row.notes && row.notes.length > 0) {
...@@ -315,7 +327,8 @@ ...@@ -315,7 +327,8 @@
{ {
field: 'code', field: 'code',
title: '其他图片附件', title: '其他图片附件',
width: 80, showOverflow: 'tooltip',
width: 100,
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
if (row.others && row.others.length > 0) { if (row.others && row.others.length > 0) {
......
...@@ -107,12 +107,19 @@ ...@@ -107,12 +107,19 @@
const config = reactive({ const config = reactive({
columns: [ columns: [
{ type: 'checkbox', title: '', width: 40 }, { type: 'checkbox', title: '', width: 40 },
{ field: 'caseId', title: '案件ID', search: { el: 'input', labelWidth: 78 }, width: 80 }, {
field: 'caseId',
title: '案件ID',
showOverflow: 'tooltip',
search: { el: 'input', labelWidth: 78 },
width: 100,
},
{ {
field: 'arealist', field: 'arealist',
enum: citydata, enum: citydata,
title: '所属区域', title: '所属区域',
width: 80, showOverflow: 'tooltip',
width: 100,
fieldNames: { label: 'label', value: 'value' }, fieldNames: { label: 'label', value: 'value' },
search: { el: 'cascader', props: { clearable: true, checkStrictly: true }, labelWidth: 78 }, search: { el: 'cascader', props: { clearable: true, checkStrictly: true }, labelWidth: 78 },
slots: { slots: {
...@@ -178,7 +185,7 @@ ...@@ -178,7 +185,7 @@
{ {
field: 'tenantTime', field: 'tenantTime',
title: '分配中心日期', title: '分配中心日期',
width: 100, width: 130,
search: { search: {
el: 'date-picker', el: 'date-picker',
props: { type: 'daterange', valueFormat: 'YYYY-MM-DD' }, props: { type: 'daterange', valueFormat: 'YYYY-MM-DD' },
...@@ -194,7 +201,7 @@ ...@@ -194,7 +201,7 @@
{ {
field: 'cpeDate', field: 'cpeDate',
title: '分配CPE日期', title: '分配CPE日期',
width: 100, width: 130,
search: { search: {
el: 'date-picker', el: 'date-picker',
props: { type: 'daterange', valueFormat: 'YYYY-MM-DD' }, props: { type: 'daterange', valueFormat: 'YYYY-MM-DD' },
...@@ -216,7 +223,7 @@ ...@@ -216,7 +223,7 @@
{ {
field: 'borrower.idCard', field: 'borrower.idCard',
title: '身份证', title: '身份证',
width: 120, width: 140,
search: { el: 'input', props: { clearable: true }, key: 'idCard', labelWidth: 78 }, search: { el: 'input', props: { clearable: true }, key: 'idCard', labelWidth: 78 },
}, },
{ {
......
<template> <template>
<div class="card table-box"> <div class="card table-box">
<div class="navigation-box absolute z-10 right-8 w-32 rounded-md pl-10 bg-white text-xs"> <div class="h-full w-full flex flex-col">
<el-affix :offset="80" style="width: 100% !important"> <div class="mt-2">
<div @click="anchor('baseinfo')" class="anchor-item">案人基本信息</div>
<div @click="anchor('caserelation')" class="anchor-item">案件联系人</div>
<div @click="anchor('casedetail')" class="anchor-item">案件明细</div>
<div @click="anchor('callrecord')" class="anchor-item">跟进记录</div>
<div @click="anchor('reducerecord')" class="anchor-item">减免记录</div>
<div @click="anchor('splitrecord')" class="anchor-item">分期记录</div>
<div @click="anchor('returnrecord')" class="anchor-item">还款记录</div>
</el-affix>
</div>
<div class="h-full w-full">
<div class="pl-8">
<el-button type="primary" @click="repair">修复申请</el-button> <el-button type="primary" @click="repair">修复申请</el-button>
<el-button type="primary" @click="reduce">减免申请</el-button> <el-button type="primary" @click="reduce">减免申请</el-button>
<el-button type="primary" @click="split">分期申请</el-button> <el-button type="primary" @click="split">分期申请</el-button>
...@@ -28,6 +17,8 @@ ...@@ -28,6 +17,8 @@
/> />
</el-steps> </el-steps>
</div> </div>
<vxe-tabs v-model="selectTab" type="round-card" :height="140" class="flex-1 mt-3">
<vxe-tab-pane title="案人基本信息" name="1">
<div id="baseinfo"> <div id="baseinfo">
<div class="box-title">案人基本信息</div> <div class="box-title">案人基本信息</div>
<div class="box-content"> <div class="box-content">
...@@ -54,6 +45,8 @@ ...@@ -54,6 +45,8 @@
</table> </table>
</div> </div>
</div> </div>
</vxe-tab-pane>
<vxe-tab-pane title="案件联系人" name="2">
<div id="caserelation"> <div id="caserelation">
<div class="box-title">案件联系人</div> <div class="box-title">案件联系人</div>
<div class="box-content"> <div class="box-content">
...@@ -65,6 +58,8 @@ ...@@ -65,6 +58,8 @@
/> />
</div> </div>
</div> </div>
</vxe-tab-pane>
<vxe-tab-pane title="案件明细" name="3">
<div id="casedetail"> <div id="casedetail">
<div class="box-title" <div class="box-title"
>案件明细 >案件明细
...@@ -118,6 +113,8 @@ ...@@ -118,6 +113,8 @@
</vxe-grid> </vxe-grid>
</div> </div>
</div> </div>
</vxe-tab-pane>
<vxe-tab-pane title="跟进记录" name="4">
<div id="callrecord"> <div id="callrecord">
<div class="box-title" <div class="box-title"
>跟进记录 >跟进记录
...@@ -139,6 +136,8 @@ ...@@ -139,6 +136,8 @@
/> />
</div> </div>
</div> </div>
</vxe-tab-pane>
<vxe-tab-pane title="减免记录" name="5">
<div id="reducerecord"> <div id="reducerecord">
<div class="box-title">减免记录</div> <div class="box-title">减免记录</div>
<div class="box-content"> <div class="box-content">
...@@ -150,6 +149,8 @@ ...@@ -150,6 +149,8 @@
/> />
</div> </div>
</div> </div>
</vxe-tab-pane>
<vxe-tab-pane title="分期记录" name="6">
<div id="splitrecord"> <div id="splitrecord">
<div class="box-title">分期记录</div> <div class="box-title">分期记录</div>
<div class="box-content flex"> <div class="box-content flex">
...@@ -192,6 +193,8 @@ ...@@ -192,6 +193,8 @@
</div> </div>
</div> </div>
</div> </div>
</vxe-tab-pane>
<vxe-tab-pane title="还款记录" name="7">
<div id="returnrecord"> <div id="returnrecord">
<div class="box-title">还款记录</div> <div class="box-title">还款记录</div>
<div class="box-content"> <div class="box-content">
...@@ -203,6 +206,8 @@ ...@@ -203,6 +206,8 @@
/> />
</div> </div>
</div> </div>
</vxe-tab-pane>
</vxe-tabs>
</div> </div>
<repairModal ref="repairModalRef"></repairModal> <repairModal ref="repairModalRef"></repairModal>
<returnModal ref="returnModalRef" @success="query('还款')"></returnModal> <returnModal ref="returnModalRef" @success="query('还款')"></returnModal>
...@@ -236,6 +241,7 @@ ...@@ -236,6 +241,7 @@
import { saveAudit } from '@/api/audit'; import { saveAudit } from '@/api/audit';
import { inject } from 'vue'; import { inject } from 'vue';
const envs = getAppEnvConfig(); const envs = getAppEnvConfig();
const selectTab = ref('1');
const returnData = ref([]); const returnData = ref([]);
const recordData = ref([]); const recordData = ref([]);
const guarantorData = ref([]); const guarantorData = ref([]);
...@@ -323,34 +329,42 @@ ...@@ -323,34 +329,42 @@
{ {
field: 'id', field: 'id',
title: '还款记录ID', title: '还款记录ID',
showOverflow: 'tooltip',
}, },
{ {
field: 'realRepayAmount', field: 'realRepayAmount',
title: '实际还款金额', title: '实际还款金额',
showOverflow: 'tooltip',
}, },
{ {
field: 'realRepayTime', field: 'realRepayTime',
title: '实际还款时间', title: '实际还款时间',
showOverflow: 'tooltip',
}, },
{ {
field: 'reduce.id', field: 'reduce.id',
title: '关联减免ID', title: '关联减免ID',
showOverflow: 'tooltip',
}, },
{ {
field: 'stages.id', field: 'stages.id',
title: '关联分期ID', title: '关联分期ID',
showOverflow: 'tooltip',
}, },
{ {
field: 'stages.totalPeriod', field: 'stages.totalPeriod',
title: '关联分期期次', title: '关联分期期次',
showOverflow: 'tooltip',
}, },
{ {
field: 'reduce.totalPayAmount', field: 'reduce.totalPayAmount',
title: '应还金额', title: '应还金额',
showOverflow: 'tooltip',
}, },
{ {
field: 'stages.loans.loanPlatform.name', field: 'stages.loans.loanPlatform.name',
title: '借款机构', title: '借款机构',
showOverflow: 'tooltip',
}, },
], ],
toolbarConfig: { enabled: false }, toolbarConfig: { enabled: false },
...@@ -361,26 +375,32 @@ ...@@ -361,26 +375,32 @@
{ {
field: 'id', field: 'id',
title: '跟进记录ID', title: '跟进记录ID',
showOverflow: 'tooltip',
}, },
{ {
field: 'trackTime', field: 'trackTime',
title: '跟进日期', title: '跟进日期',
showOverflow: 'tooltip',
}, },
{ {
field: 'nextTime', field: 'nextTime',
title: '下次跟进时间', title: '下次跟进时间',
showOverflow: 'tooltip',
}, },
{ {
field: 'guarantor.name', field: 'guarantor.name',
title: '联系人姓名', title: '联系人姓名',
showOverflow: 'tooltip',
}, },
{ {
field: 'guarantor.phone', field: 'guarantor.phone',
title: '联系人号码', title: '联系人号码',
showOverflow: 'tooltip',
}, },
{ {
field: 'followStatus', field: 'followStatus',
title: '拨打跟进结果', title: '拨打跟进结果',
showOverflow: 'tooltip',
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
return ( return (
...@@ -396,6 +416,7 @@ ...@@ -396,6 +416,7 @@
{ {
field: 'phoneResultStatus', field: 'phoneResultStatus',
title: '拨打处置状态', title: '拨打处置状态',
showOverflow: 'tooltip',
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
return ( return (
...@@ -411,10 +432,12 @@ ...@@ -411,10 +432,12 @@
{ {
field: 'remark', field: 'remark',
title: '备注', title: '备注',
showOverflow: 'tooltip',
}, },
{ {
field: 'voices', field: 'voices',
title: '通话录音', title: '通话录音',
showOverflow: 'tooltip',
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
if (row.voices && row.voices.length > 0) { if (row.voices && row.voices.length > 0) {
...@@ -497,18 +520,17 @@ ...@@ -497,18 +520,17 @@
{ {
field: 'name', field: 'name',
title: '联系人姓名', title: '联系人姓名',
showOverflow: 'tooltip',
}, },
{ {
field: 'kinship', field: 'kinship',
title: '与债权人关系', title: '与债权人关系',
}, showOverflow: 'tooltip',
{
field: 'code',
title: '号码类型',
}, },
{ {
field: 'phone', field: 'phone',
title: '号码', title: '号码',
showOverflow: 'tooltip',
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
return <>{row.phone + ' ' + (row.status === 'Y' ? '有效' : '无效')}</>; return <>{row.phone + ' ' + (row.status === 'Y' ? '有效' : '无效')}</>;
...@@ -518,6 +540,7 @@ ...@@ -518,6 +540,7 @@
{ {
field: 'code', field: 'code',
title: '', title: '',
fixed: 'right',
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
return ( return (
...@@ -576,33 +599,41 @@ ...@@ -576,33 +599,41 @@
{ {
field: 'caseId', field: 'caseId',
title: '案件ID', title: '案件ID',
showOverflow: 'tooltip',
}, },
{ {
field: 'product', field: 'product',
title: '产品', title: '产品',
showOverflow: 'tooltip',
}, },
{ {
field: 'loanPlatform.name', field: 'loanPlatform.name',
title: '借款机构', title: '借款机构',
showOverflow: 'tooltip',
}, },
{ {
field: 'commissionAmount', field: 'commissionAmount',
title: '委案金额', title: '委案金额',
showOverflow: 'tooltip',
}, },
{ {
field: 'sumReductionAmount', field: 'sumReductionAmount',
title: '累计减免金额', title: '累计减免金额',
showOverflow: 'tooltip',
}, },
{ {
field: 'sumRepayAmount', field: 'sumRepayAmount',
title: '累计还款金额', title: '累计还款金额',
showOverflow: 'tooltip',
}, },
{ {
field: 'remainingAmount', field: 'remainingAmount',
title: '剩余待还金额', title: '剩余待还金额',
showOverflow: 'tooltip',
}, },
{ {
field: 'code', field: 'code',
fixed: 'right',
title: '', title: '',
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
...@@ -657,40 +688,48 @@ ...@@ -657,40 +688,48 @@
{ {
field: 'caseId', field: 'caseId',
title: '案件ID', title: '案件ID',
showOverflow: 'tooltip',
width: 80, width: 80,
}, },
{ {
field: 'loans.loanPlatform.name', field: 'loans.loanPlatform.name',
showOverflow: 'tooltip',
title: '借款机构', title: '借款机构',
}, },
{ {
field: 'totalRepayAmount', field: 'totalRepayAmount',
showOverflow: 'tooltip',
title: '还款总额', title: '还款总额',
width: 80, width: 80,
}, },
{ {
field: 'applyDate', field: 'applyDate',
title: '分期申请时间', title: '分期申请时间',
showOverflow: 'tooltip',
width: 115, width: 115,
}, },
{ {
field: 'effectiveTime', field: 'effectiveTime',
title: '分期生效时间', title: '分期生效时间',
showOverflow: 'tooltip',
width: 115, width: 115,
}, },
{ {
field: 'totalPeriod', field: 'totalPeriod',
showOverflow: 'tooltip',
title: '还款期数', title: '还款期数',
width: 80, width: 80,
}, },
{ {
field: 'firstApplyDate', field: 'firstApplyDate',
title: '首期还款日', title: '首期还款日',
showOverflow: 'tooltip',
width: 100, width: 100,
}, },
{ {
field: 'remainingAmount', field: 'remainingAmount',
title: '剩余待还金额', title: '剩余待还金额',
showOverflow: 'tooltip',
width: 110, width: 110,
}, },
], ],
...@@ -702,14 +741,17 @@ ...@@ -702,14 +741,17 @@
{ {
field: 'period', field: 'period',
title: '期次', title: '期次',
showOverflow: 'tooltip',
}, },
{ {
field: 'playApplyDate', field: 'playApplyDate',
title: '到期日', title: '到期日',
showOverflow: 'tooltip',
}, },
{ {
field: 'repayStatus', field: 'repayStatus',
title: '状态', title: '状态',
showOverflow: 'tooltip',
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
return <>{row.repayStatus ? (row.repayStatus === 'over' ? '已还款' : '待还款') : ''}</>; return <>{row.repayStatus ? (row.repayStatus === 'over' ? '已还款' : '待还款') : ''}</>;
...@@ -719,10 +761,12 @@ ...@@ -719,10 +761,12 @@
{ {
field: 'applyAmount', field: 'applyAmount',
title: '金额', title: '金额',
showOverflow: 'tooltip',
}, },
{ {
field: 'code', field: 'code',
title: '操作', title: '操作',
fixed: 'right',
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
return ( return (
...@@ -783,30 +827,37 @@ ...@@ -783,30 +827,37 @@
{ {
field: 'caseId', field: 'caseId',
title: '案件ID', title: '案件ID',
showOverflow: 'tooltip',
}, },
{ {
field: 'reduceAmount', field: 'reduceAmount',
title: '减免金额', title: '减免金额',
showOverflow: 'tooltip',
}, },
{ {
field: 'totalReduceAmount', field: 'totalReduceAmount',
title: '减免金额(总计)', title: '减免金额(总计)',
showOverflow: 'tooltip',
}, },
{ {
field: 'totalNumber', field: 'totalNumber',
title: '减免案件数', title: '减免案件数',
showOverflow: 'tooltip',
}, },
{ {
field: 'remainingAmount', field: 'remainingAmount',
title: '剩余待还金额', title: '剩余待还金额',
showOverflow: 'tooltip',
}, },
{ {
field: 'totalPayAmount', field: 'totalPayAmount',
title: '累计还款金额', title: '累计还款金额',
showOverflow: 'tooltip',
}, },
{ {
field: 'reduceType', field: 'reduceType',
title: '减免类型', title: '减免类型',
showOverflow: 'tooltip',
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
return ( return (
...@@ -817,19 +868,23 @@ ...@@ -817,19 +868,23 @@
}, },
{ {
field: 'id', field: 'id',
showOverflow: 'tooltip',
title: '减免申请ID', title: '减免申请ID',
}, },
{ {
field: 'applyDate', field: 'applyDate',
showOverflow: 'tooltip',
title: '减免截止时间', title: '减免截止时间',
}, },
{ {
field: 'inEffectDate', field: 'inEffectDate',
showOverflow: 'tooltip',
title: '减免生效时间', title: '减免生效时间',
}, },
{ {
field: 'code', field: 'code',
title: '操作', title: '操作',
fixed: 'right',
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
return ( return (
...@@ -1016,7 +1071,7 @@ ...@@ -1016,7 +1071,7 @@
line-height: 43px; line-height: 43px;
border-bottom: 1px solid rgba(0, 0, 0, 0.06); border-bottom: 1px solid rgba(0, 0, 0, 0.06);
margin-bottom: 10px; margin-bottom: 10px;
margin-top: 10px; margin-left: 10px;
} }
.box-content { .box-content {
padding-right: 40px; padding-right: 40px;
......
...@@ -31,9 +31,9 @@ ...@@ -31,9 +31,9 @@
<div> <div>
<div class="flex items-center"> <div class="flex items-center">
<el-button type="danger" @click="checkData" :disabled="!form.path">检查</el-button> <el-button type="danger" @click="checkData" :disabled="!form.path">检查</el-button>
<span class="ml-2" v-if="checkObj.check"> <span class="ml-2">
<span class="mr-2 text-gray-400">通过{{ checkObj.result.success }}</span> <span class="mr-2 text-gray-400">通过{{ checkObj?.result?.success || 0 }}</span>
<span class="text-gray-400">失败{{ checkObj.result.error }}</span> <span class="text-gray-400">失败{{ checkObj?.result?.error || 0 }}</span>
</span> </span>
</div> </div>
<!-- 进度条 --> <!-- 进度条 -->
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
@click="openError" @click="openError"
>下载检查结果</div >下载检查结果</div
> >
<div v-else class="mt-2 text-xs text-red-500"> *检查文件后才可以提交 </div>
</div> </div>
</div> </div>
<div class="flex-1 importwrapper"> <div class="flex-1 importwrapper">
...@@ -136,40 +137,48 @@ ...@@ -136,40 +137,48 @@
{ {
field: 'code', field: 'code',
title: '导入编号', title: '导入编号',
showOverflow: 'tooltip',
search: { el: 'input', props: { clearable: true } }, search: { el: 'input', props: { clearable: true } },
}, },
{ {
field: 'contractNo', field: 'contractNo',
title: '委案合同', title: '委案合同',
showOverflow: 'tooltip',
search: { el: 'input', props: { clearable: true } }, search: { el: 'input', props: { clearable: true } },
}, },
{ {
field: 'code', field: 'code',
title: '资产类型', title: '资产类型',
enum: options, enum: options,
showOverflow: 'tooltip',
search: { el: 'select', props: { filterable: true } }, search: { el: 'select', props: { filterable: true } },
fieldNames: { label: 'genderLabel', value: 'genderValue' }, fieldNames: { label: 'genderLabel', value: 'genderValue' },
}, },
{ {
field: 'totalCaseNum', field: 'totalCaseNum',
showOverflow: 'tooltip',
title: '案件总数', title: '案件总数',
}, },
{ {
field: 'totalAmount', field: 'totalAmount',
showOverflow: 'tooltip',
title: '案件总金额', title: '案件总金额',
}, },
{ {
field: 'totalBorrowerNum', field: 'totalBorrowerNum',
showOverflow: 'tooltip',
title: '客户总数', title: '客户总数',
}, },
{ {
field: 'discount', field: 'discount',
title: '折扣', title: '折扣',
showOverflow: 'tooltip',
width: 80, width: 80,
}, },
{ {
field: 'totalPengNum', field: 'totalPengNum',
title: '撞库次数', title: '撞库次数',
showOverflow: 'tooltip',
width: 100, width: 100,
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
...@@ -186,6 +195,7 @@ ...@@ -186,6 +195,7 @@
{ {
field: 'action', field: 'action',
title: '文件地址', title: '文件地址',
showOverflow: 'tooltip',
width: 200, width: 200,
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
...@@ -201,6 +211,8 @@ ...@@ -201,6 +211,8 @@
}, },
{ {
field: 'createTime', field: 'createTime',
width: 140,
showOverflow: 'tooltip',
title: '创建日期', title: '创建日期',
search: { search: {
el: 'date-picker', el: 'date-picker',
......
...@@ -34,13 +34,16 @@ ...@@ -34,13 +34,16 @@
const config = reactive({ const config = reactive({
columns: [ columns: [
{ type: 'checkbox', width: 50 }, { type: 'checkbox', width: 50 },
{ field: 'id', title: '资管公司ID' }, { field: 'id', title: '资管公司ID', showOverflow: 'tooltip' },
{ field: 'orgName', title: '公司名称', search: { el: 'input' } }, { field: 'orgName', title: '公司名称', showOverflow: 'tooltip', search: { el: 'input' } },
{ {
field: 'arealist', field: 'arealist',
enum: citydata, enum: citydata,
showOverflow: 'tooltip',
title: '所属区域', title: '所属区域',
fieldNames: { label: 'label', value: 'value' }, fieldNames: { label: 'label', value: 'value' },
showOverflow: 'tooltip',
search: { el: 'cascader', props: { clearable: true, checkStrictly: true } }, search: { el: 'cascader', props: { clearable: true, checkStrictly: true } },
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
...@@ -57,17 +60,24 @@ ...@@ -57,17 +60,24 @@
{ {
field: 'maxStagesNum', field: 'maxStagesNum',
title: '是否共案处理', title: '是否共案处理',
showOverflow: 'tooltip',
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
return <ElTag>{row.mergerCase == 'Y' ? '是' : '否'}</ElTag>; return <ElTag>{row.mergerCase == 'Y' ? '是' : '否'}</ElTag>;
}, },
}, },
}, },
{ field: 'offender', title: '负责人', search: { el: 'input' } }, { field: 'offender', showOverflow: 'tooltip', title: '负责人', search: { el: 'input' } },
{ field: 'offenderPhone', title: '负责人手机', search: { el: 'input' } }, {
field: 'offenderPhone',
showOverflow: 'tooltip',
title: '负责人手机',
search: { el: 'input' },
},
{ {
field: 'status', field: 'status',
title: '状态', title: '状态',
showOverflow: 'tooltip',
width: 80, width: 80,
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
...@@ -79,11 +89,12 @@ ...@@ -79,11 +89,12 @@
}, },
}, },
}, },
{ field: 'createBy', title: '创建人' }, { field: 'createBy', showOverflow: 'tooltip', title: '创建人' },
{ field: 'createTime', title: '创建时间' }, { field: 'createTime', showOverflow: 'tooltip', title: '创建时间', width: 140 },
{ {
width: 200, width: 200,
title: '操作', title: '操作',
fixed: 'right',
slots: { slots: {
default: ({ row }) => ( default: ({ row }) => (
<> <>
......
...@@ -75,6 +75,7 @@ ...@@ -75,6 +75,7 @@
field: 'action', field: 'action',
title: '操作', title: '操作',
width: 200, width: 200,
fixed: 'right',
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
return ( return (
......
...@@ -49,6 +49,7 @@ ...@@ -49,6 +49,7 @@
{ {
width: 200, width: 200,
title: '操作', title: '操作',
fixed: 'right',
slots: { slots: {
default: ({ row }) => ( default: ({ row }) => (
<> <>
......
...@@ -35,6 +35,7 @@ ...@@ -35,6 +35,7 @@
{ {
width: 280, width: 280,
title: '操作', title: '操作',
fixed: 'right',
slots: { slots: {
default: ({ row }) => ( default: ({ row }) => (
<> <>
......
...@@ -57,6 +57,7 @@ ...@@ -57,6 +57,7 @@
{ {
width: 200, width: 200,
title: '操作', title: '操作',
fixed: 'right',
slots: { slots: {
default: ({ row }) => ( default: ({ row }) => (
<> <>
......
...@@ -32,25 +32,34 @@ ...@@ -32,25 +32,34 @@
const socketStore = useSocketStore(); const socketStore = useSocketStore();
const config = reactive({ const config = reactive({
columns: [ columns: [
{ field: 'title', minWidth: 200, title: '消息标题', search: { el: 'input' } }, {
field: 'title',
minWidth: 200,
showOverflow: 'tooltip',
title: '消息标题',
search: { el: 'input', labelWidth: 65 },
},
{ {
field: 'content', field: 'content',
title: '消息内容', title: '消息内容',
showOverflow: 'tooltip',
width: 160, width: 160,
search: { el: 'input', props: { clearable: true } }, search: { el: 'input', props: { clearable: true }, labelWidth: 65 },
}, },
{ {
field: 'sender.username', field: 'sender.username',
title: '发送人名称', title: '发送人名称',
showOverflow: 'tooltip',
width: 160, width: 160,
search: { el: 'input', props: { clearable: true }, key: 'senderName' }, search: { el: 'input', props: { clearable: true }, key: 'senderName', labelWidth: 65 },
}, },
{ {
field: 'status', field: 'status',
title: '状态', title: '状态',
showOverflow: 'tooltip',
width: 100, width: 100,
enum: statusOpt, enum: statusOpt,
search: { el: 'select', props: { filterable: true }, span: 1 }, search: { el: 'select', props: { filterable: true }, span: 1, labelWidth: 65 },
fieldNames: { label: 'label', value: 'value' }, fieldNames: { label: 'label', value: 'value' },
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
...@@ -64,15 +73,17 @@ ...@@ -64,15 +73,17 @@
}, },
{ {
field: 'sendTime', field: 'sendTime',
showOverflow: 'tooltip',
title: '发送时间', title: '发送时间',
width: 170, width: 170,
}, },
{ {
field: 'messageType', field: 'messageType',
width: 100, width: 100,
showOverflow: 'tooltip',
title: '消息类型', title: '消息类型',
enum: messageTypeOpt, enum: messageTypeOpt,
search: { el: 'select', props: { filterable: true }, span: 1 }, search: { el: 'select', props: { filterable: true }, span: 1, labelWidth: 65 },
fieldNames: { label: 'label', value: 'value' }, fieldNames: { label: 'label', value: 'value' },
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
...@@ -90,8 +101,9 @@ ...@@ -90,8 +101,9 @@
field: 'sendType', field: 'sendType',
width: 100, width: 100,
title: '发送方式', title: '发送方式',
showOverflow: 'tooltip',
enum: sendTypeOpt, enum: sendTypeOpt,
search: { el: 'select', props: { filterable: true }, span: 1 }, search: { el: 'select', props: { filterable: true }, span: 1, labelWidth: 65 },
fieldNames: { label: 'label', value: 'value' }, fieldNames: { label: 'label', value: 'value' },
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
...@@ -105,8 +117,9 @@ ...@@ -105,8 +117,9 @@
field: 'serviceType', field: 'serviceType',
width: 100, width: 100,
title: '业务类型', title: '业务类型',
showOverflow: 'tooltip',
enum: serviceTypeOpt, enum: serviceTypeOpt,
search: { el: 'select', props: { filterable: true }, span: 1 }, search: { el: 'select', props: { filterable: true }, span: 1, labelWidth: 65 },
fieldNames: { label: 'label', value: 'value' }, fieldNames: { label: 'label', value: 'value' },
slots: { slots: {
default: ({ row }) => { default: ({ row }) => {
......
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