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

业务审批

parent dcf0ca7f
<template>
<el-drawer
v-model="showModal"
title="分期申请"
:size="850"
:size="950"
direction="rtl"
@close="showModal = false"
:before-close="onHide"
>
<div class="h-full flex-col flex mydrawer pb-2">
<div>
<ProTable
:config="config"
ref="ProTableRef"
:data="tabledata"
:showPagination="false"
:showToolBar="false"
>
<template #table_top>
<p class="font-bold">关联案件:</p>
</template>
</ProTable>
<template #header="{ titleId, titleClass }">
<h4 :id="titleId" :class="titleClass">分期审批
<el-tag :type="currentDetail.flowStatus === 'pass' ? 'success' : currentDetail.flowStatus === 'fail' ? 'danger' : 'warning'">{{currentDetail.flowStatus
? FlowStatus?.find((v) => v.value === currentDetail.flowStatus)?.label
: ''}}</el-tag>
</h4>
</template>
<div class="flex">
<div class=" w-1/4 flex-shrink-0">
<p class=" font-bold mb-3">审批进程</p>
<div :class="{nopending: currentDetail.flowStatus !== 'pending'}">
<el-timeline style="max-width: 600px">
<el-timeline-item
:timestamp="currentDetail?.applyDate"
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>
</el-timeline-item>
<el-timeline-item
:timestamp="currentDetail?.createTime"
: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>
</el-timeline-item>
</el-timeline>
</div>
</div>
<div class="flex">
<div class="mt-3 pr-8 w-2/5">
<el-form
ref="formRef"
inline
:model="form"
:rules="rules"
label-width="110px"
label-position="left"
>
<el-row>
<el-col :span="24">
<el-form-item class="w-full" label="剩余待还总额:" prop="name">
{{ form.remainingAmount }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="还款总额:" prop="code">
<el-input
v-model="form.totalRepayAmount"
placeholder="请输入"
@change="changePeriod"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="分期申请时间:" prop="code">
<el-date-picker
v-model="form.applyDate"
disabled
class="w-full"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
type="datetime"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="还款期数:" prop="name">
<el-select v-model="form.totalPeriod" disabled placeholder="请选择" @change="changePeriod">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
:disabled="item.disabled"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="首期还款日:" prop="code">
<el-date-picker
@change="changePeriod"
disabled
class="w-full"
v-model="form.firstApplyDate"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
type="date"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="分期生效时间:" prop="code">
<el-date-picker
v-model="form.effectiveTime"
disabled
class="w-full"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
type="datetime"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="附件" prop="code">
<el-upload
:action="url"
:headers="{timeout:180000}"
v-model:file-list="form.images"
disabled
list-type="picture-card"
ref="mypictureRef"
class="mypicture"
:on-preview="handlePictureCardPreview"
:on-success="handleFileSuccess1"
:on-remove="handleRemove1"
>
<div class="text-center">
<el-icon><Plus /></el-icon>
<div>附件</div>
</div>
<template #file="{ file }">
<img
class="el-upload-list__item-thumbnail"
:src="updataIf(file) ? getImageUrl() :file.url"
alt=""
<div class="h-full w-3/4 flex-shrink-0 flex-col flex mydrawer pb-2">
<div class="w-full">
<table>
<tbody>
<tr>
<td class="label">债务人</td>
<td>{{ currentDetail?.borrower?.name }}</td>
<td class="label">身份证号</td>
<td>{{ currentDetail?.borrower?.idCard }}</td>
</tr>
<tr>
<td class="label">产品</td>
<td>
<VxeTooltip
:content="Array.from(new Set(currentDetail?.loans.map((v) => v.loanPlatform.name))).join(',')"
>
<span class="el-upload-list__item-actions">
<!-- <span
class="el-upload-list__item-delete"
>
<el-icon @click="handleRemove1(file)">
<Delete />
</el-icon>
</span> -->
<span
class="el-upload-list__item-preview"
>
<el-icon v-if="updataIf(file)" @click="download(file.url)">
<Download />
</el-icon>
<el-icon v-else @click="handlePictureCardPreview(file)">
<ZoomIn />
</el-icon>
</span>
</span>
</template>
</el-upload>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="w-3/5">
<VxeTextEllipsis
:content="Array.from(new Set(currentDetail?.loans.map((v) => v.loanPlatform.name))).join(',')"
></VxeTextEllipsis>
</VxeTooltip>
</td>
<td class="label">调解中心</td>
<td><VxeTooltip
:content="currentDetail?.tenant?.name"
>
<VxeTextEllipsis
:content="currentDetail?.tenant?.name"
></VxeTextEllipsis>
</VxeTooltip></td>
</tr>
<tr>
<td class="label">申请CPE</td>
<td>{{ currentDetail?.cpe?.username }}</td>
<td class="label">剩余待还金额</td>
<td>{{ currentDetail?.remainingAmount }}</td>
</tr>
</tbody>
<!-- Add more rows as needed -->
</table>
<ProTable
:config="splitconfig"
:data="splitdata"
:config="config"
ref="ProTableRef"
:data="tabledata"
:showPagination="false"
:showToolBar="false"
>
<template #table_top>
<div class="flex justify-end">
<el-button type="primary" @click="editOrConfirm" class="mr-1 my-2">{{
editFirst ? '确定' : '修改'
}}</el-button>
</div>
<p class="font-bold my-2">关联案件:</p>
</template>
</ProTable>
<div class="flex">
<div class="ml-auto text-gray-400">总计: {{ form.totalRepayAmount }}</div>
</div>
</div>
</div>
</div>
<div class="flex">
<div class="mt-3 pr-8 w-2/5">
<el-form
ref="formRef"
inline
:model="form"
:rules="rules"
label-width="110px"
label-position="left"
>
<el-row>
<el-col :span="24">
<el-form-item class="w-full" label="剩余待还总额:" prop="name">
{{ form.remainingAmount }}
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="还款总额:" prop="code">
<el-input
v-model="form.totalRepayAmount"
:disabled="currentDetail.flowStatus !== 'pending'"
placeholder="请输入"
@change="changePeriod"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="分期申请时间:" prop="code">
<el-date-picker
v-model="form.applyDate"
disabled
class="w-full"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
type="datetime"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="还款期数:" prop="name">
<el-select v-model="form.totalPeriod" disabled placeholder="请选择" @change="changePeriod">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
:disabled="item.disabled"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="首期还款日:" prop="code">
<el-date-picker
@change="changePeriod"
disabled
class="w-full"
v-model="form.firstApplyDate"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
type="date"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="分期生效时间:" prop="code">
<el-date-picker
v-model="form.effectiveTime"
disabled
class="w-full"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
type="datetime"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="附件" prop="code">
<el-upload
:action="url"
:headers="{timeout:180000}"
v-if="showModal"
v-model:file-list="form.images"
disabled
list-type="picture-card"
ref="mypictureRef"
class="mypicture"
:on-preview="handlePictureCardPreview"
:on-success="handleFileSuccess1"
:on-remove="handleRemove1"
>
<div class="text-center">
<el-icon><Plus /></el-icon>
<div>附件</div>
</div>
<template #file="{ file }">
<img
class="el-upload-list__item-thumbnail"
:src="updataIf(file) ? getImageUrl() :file.url"
alt=""
>
<span class="el-upload-list__item-actions">
<!-- <span
class="el-upload-list__item-delete"
>
<el-icon @click="handleRemove1(file)">
<Delete />
</el-icon>
</span> -->
<span
class="el-upload-list__item-preview"
>
<el-icon v-if="updataIf(file)" @click="download(file.url)">
<Download />
</el-icon>
<el-icon v-else @click="handlePictureCardPreview(file)">
<ZoomIn />
</el-icon>
</span>
</span>
</template>
</el-upload>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="w-3/5">
<ProTable
:config="splitconfig"
:data="splitdata"
:showPagination="false"
:showToolBar="false"
>
<template #table_top>
<div class="flex justify-end">
<el-button type="primary" @click="editOrConfirm" class="mr-1 my-2" v-if="currentDetail.flowStatus === 'pending'">{{
editFirst ? '确定' : '修改'
}}</el-button>
</div>
</template>
</ProTable>
<div class="flex">
<div class="ml-auto text-gray-400">总计: {{ form.totalRepayAmount }}</div>
</div>
</div>
</div>
<template #footer>
<div style="flex: auto">
<el-button @click="showModal = false">取消</el-button>
<el-button type="primary" @click="submitForm('fail')">不通过</el-button>
<el-button type="primary" @click="submitForm('pass')">通过</el-button>
<el-button type="primary" @click="submitForm('fail')" v-if="currentDetail.flowStatus === 'pending'">不通过</el-button>
<el-button type="primary" @click="submitForm('pass')" v-if="currentDetail.flowStatus === 'pending'">通过</el-button>
</div>
</template>
<el-dialog v-model="dialogVisible">
......@@ -183,6 +252,10 @@
import dayjs from 'dayjs';
import { computed } from 'vue';
import { reactive, ref } from 'vue';
import { Close } from '@element-plus/icons-vue';
import { VxeTextEllipsis, VxeTooltip } from 'vxe-pc-ui';
import { ElInputNumber, ElMessage } from 'element-plus';
import { changeAmount } from '@/api/property';
import { getByIdPlatforms } from '@/api/platform';
......@@ -401,36 +474,43 @@
{
field: 'caseId',
title: '案件ID',
width: 120,
showOverflow: 'tooltip',
},
{
field: 'product',
title: '产品',
width: 120,
showOverflow: 'tooltip',
},
{
field: 'loanPlatform.name',
title: '借款平台',
width: 120,
showOverflow: 'tooltip',
},
{
field: 'commissionAmount',
title: '委案金额',
width: 120,
showOverflow: 'tooltip',
},
{
field: 'sumReductionAmount',
title: '累计减免金额',
width: 120,
showOverflow: 'tooltip',
},
{
field: 'sumRepayAmount',
title: '累计还款金额',
width: 120,
showOverflow: 'tooltip',
},
{
field: 'remainingAmount',
title: '剩余待还金额',
width: 120,
showOverflow: 'tooltip',
},
],
......@@ -496,7 +576,6 @@
currentDetail.value = detail;
console.log('currentDetail', currentDetail.value, caselist);
form.totalRepayAmount = 0;
form.images = [];
form.totalPeriod = detail.totalPeriod
form.applyDate = detail.applyDate
form.firstApplyDate = detail.firstApplyDate
......@@ -592,4 +671,42 @@
font-size: 12px;
}
}
.nopending {
:deep(.el-timeline-item__tail) {
border-color: #234ca3;
}
}
table {
width: 100%;
margin-top: 10px;
border-collapse: collapse;
}
td {
border: 1px solid rgba(5, 5, 5, 0.06);
background: #fff;
color: #606268;
width: 240px;
line-height: 11px;
height: 40px;
font-size: 14px;
padding-left: 5px;
&.label {
text-align: center;
background: #f6f8ff;
font-weight: bold;
color: #909399;
}
}
</style>
<style lang="scss">
.el-drawer .el-drawer__header .el-tag--warning .el-tag__content {
color: var(--el-color-warning) !important;
}
.el-drawer .el-drawer__header .el-tag--success .el-tag__content {
color: var(--el-color-success) !important;
}
.el-drawer .el-drawer__header .el-tag--danger .el-tag__content {
color: var(--el-color-danger) !important;
}
</style>
......@@ -17,116 +17,7 @@
</el-tab-pane>
</el-tabs>
</div>
<ProTable :config="config" ref="ProTableRef" :api="getByStagesPage" :selectdList="selectdList" :paramCallback="paramCallback">
<template #left_buttons>
<!-- <el-button type="primary">下载申请 </el-button> -->
<el-button
type="primary"
@click="changeStatus"
:disabled="!selectdList || !selectdList.length"
>审批
</el-button>
<!-- <el-button type="primary">下载 </el-button>
<el-button type="primary">批量修复上传 </el-button> -->
</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">
<div v-for="(item, index) in row.loans" :key="index">
<div class="public-header">
{{ item?.caseId }}
</div>
<table
><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?.commission }}</td>
</tr>
<tr>
<td class="label">委案金额</td>
<td>{{ item?.commissionAmount }}</td>
<td class="label">案件状态</td>
<td>
{{
item?.caseStatus
? CaseStatus.find((v) => v.value === item?.caseStatus)?.label
: ''
}}</td
>
</tr>
<tr>
<td class="label">跟进结果</td>
<td>{{
item?.followStatus
? FollowStatus.find((v) => v.value === item?.followStatus)?.label
: ''
}}</td>
<td class="label">跟进状态</td>
<td>{{
item?.phoneResultStatus
? PhoneResultStatus.find((v) => v.value === item?.phoneResultStatus)
.label
: ''
}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="flex-1">
<div>分期明细</div>
<div class="expand-table">
<ProTable
:config="splitDeConfig"
:data="row.byStagesRecords"
:showPagination="false"
:showToolBar="false"
/>
</div>
</div>
</div>
</div>
</template>
<ProTable :config="config" ref="ProTableRef" :api="getByStagesPage" :paramCallback="paramCallback">
</ProTable>
<vxe-modal
resize
......@@ -263,15 +154,10 @@
],
toolbarConfig: { enabled: false },
});
const changeStatus = async () => {
if (selectdList.value.length > 1) {
showModal.value = true;
} else {
splitDrawerRef.value.openModal(
JSON.parse(JSON.stringify(selectdList.value[0]))
);
}
const changeStatus = async (row) => {
splitDrawerRef.value.openModal(
JSON.parse(JSON.stringify(row))
);
};
const submitForm = async (type) => {
const ids = selectdList.value.map((v) => v.id).join(',');
......@@ -299,8 +185,8 @@
const config = computed(() => {
return {
columns: [
{ type: 'checkbox', width: 60, fixed: 'left' },
{ type: 'expand', width: 80, slots: { content: 'expand_content' } },
// { type: 'checkbox', width: 60, fixed: 'left' },
// { type: 'expand', width: 80, slots: { content: 'expand_content' } },
{
field: 'caseId',
title: '案件ID',
......@@ -334,7 +220,7 @@
width: 90,
},
{
title: 'CPE',
title: '发起人',
showOverflow: 'tooltip',
width: 60,
slots: {
......@@ -469,6 +355,22 @@
},
},
},
{
field: 'code',
title: '操作',
width: 120,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<ElButton type="primary" onClick={() => changeStatus(row)}>
{row.flowStatus === 'pending' ? '查看并审核' : '查看'}
</ElButton>
</>
);
},
},
}
],
onCheckboxChange: onCheckboxChange,
onCheckboxAll: onCheckboxAll,
......
<template>
<el-drawer
v-model="showModal"
:size="950"
class="overflow-hidden1"
@close="showModal = false"
direction="rtl"
:before-close="onHide"
>
<template #header="{ titleId, titleClass }">
<h4 :id="titleId" :class="titleClass">减免审批
<el-tag :type="currentDetail.flowStatus === 'pass' ? 'success' : currentDetail.flowStatus === 'fail' ? 'danger' : 'warning'">{{currentDetail.flowStatus
? FlowStatus?.find((v) => v.value === currentDetail.flowStatus)?.label
: ''}}</el-tag>
</h4>
</template>
<div class="h-full flex-col flex mydrawer">
<div class="flex">
<div class=" w-1/4 pl-1 flex-shrink-0 after-border">
<p class=" font-bold mb-3">审批进程</p>
<div :class="{nopending: currentDetail.flowStatus !== 'pending'}">
<el-timeline style="max-width: 600px">
<el-timeline-item
:timestamp="currentDetail?.createTime"
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>
</el-timeline-item>
<el-timeline-item
:timestamp="currentDetail?.createTime"
: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>
</el-timeline-item>
</el-timeline>
</div>
</div>
<el-form
class="pl-3"
ref="formRef"
inline
:model="form"
:rules="rules"
label-width="110px"
label-position="left"
>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item class="w-full" label="姓名:" prop="name" label-width="120px">
{{ currentDetail?.borrower?.name }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="w-full" label="证件号:" prop="name" label-width="120px">
{{ currentDetail?.borrower?.idCard }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="w-full" label="产品:" prop="name" label-width="120px">
{{Array.from(new Set(currentDetail?.reduceRecords.map((v) => v?.loan?.loanPlatform.name))).join(',')}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="w-full" label="调解中心:" prop="name" label-width="120px">
{{Array.from(new Set(currentDetail?.reduceRecords.map((v) => v.loan?.tenant?.name))).join(',')}}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="w-full" label="申请CPE:" prop="name" label-width="120px">
{{ currentDetail?.cpe?.username }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="w-full" label="申请时间:" prop="name" label-width="120px">
{{ currentDetail?.createTime }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="w-full" label="减免截止时间:" prop="code">
<el-date-picker v-model="form.applyDate" type="datetime" disabled />
</el-form-item>
</el-col>
<!-- <el-col :span="12">
<el-form-item class="w-full" label="减免到期时间:" prop="code">
<el-date-picker v-model="form.datetime" type="datetime" />
</el-form-item>
</el-col> -->
<el-col :span="12">
<el-form-item class="w-full" label="减免金额(总计):" prop="name" label-width="120px">
{{ form.totalReduceAmount }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="w-full" label="减免案件数:" prop="role">{{
form.totalNumber
}}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="w-full" label="应还金额:" prop="relation">
{{ form.remainingAmount }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="w-full" label="减免原因:" prop="code">
<el-input v-model="form.applyDate" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="w-full" label="委案金额:" prop="relation">
{{ form.commissionAmount }}
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="w-full" label="备注:" prop="code">
<el-input v-model="form.applyDate" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item class="w-full" label="附件" prop="code">
<el-upload
:action="url"
:headers="{timeout:180000}"
list-type="picture-card"
v-if="showModal"
v-model:file-list="form.images"
ref="mypictureRef"
disabled
class="mypicture"
:on-preview="handlePictureCardPreview"
:on-success="handleFileSuccess1"
:on-remove="handleRemove1"
>
<div class="text-center">
<el-icon><Plus /></el-icon>
<div>附件</div>
</div>
<template #file="{ file }">
<img
class="el-upload-list__item-thumbnail"
:src="updataIf(file) ? getImageUrl() :file.url"
alt=""
>
<span class="el-upload-list__item-actions">
<!-- <span
class="el-upload-list__item-delete"
>
<el-icon @click="handleRemove1(file)">
<Delete />
</el-icon>
</span> -->
<span
class="el-upload-list__item-preview"
>
<el-icon v-if="updataIf(file)" @click="download(file.response.message)">
<Download />
</el-icon>
<el-icon v-else @click="handlePictureCardPreview(file)">
<ZoomIn />
</el-icon>
</span>
</span>
</template>
</el-upload>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div>
<ProTable
:config="config"
ref="ProTableRef"
:data="tabledata"
:showPagination="false"
:dataCallback="dataCallback"
:showToolBar="false"
>
<template #table_top>
<p class="font-bold">关联案件:</p>
</template>
</ProTable>
</div>
</div>
<template #footer>
<div style="flex: auto">
<el-button @click="showModal = false">取消</el-button>
<el-button type="primary" @click="submitForm('fail')">不通过</el-button>
<el-button type="primary" @click="submitForm('pass')">通过</el-button>
</div>
</template>
<el-dialog v-model="dialogVisible">
<img w-full :src="dialogImageUrl" alt="Preview Image" />
</el-dialog>
</el-drawer>
</template>
<script setup lang="jsx" name="reduceDrawer">
import dayjs from 'dayjs';
import { computed } from 'vue';
import { reactive, ref } from 'vue';
import { saveReduce } from '@/api/property';
import { ElMessage } from 'element-plus';
import { Download, ZoomIn } from '@element-plus/icons-vue';
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';
const envs = getAppEnvConfig();
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';
const showModal = ref(false);
const tabledata = ref([]);
const ProTableRef = ref();
const mypictureRef = ref();
const dialogImageUrl = ref('');
const dialogVisible = ref(false);
const downloadfile = inject('download');
const form = reactive({
totalReduceAmount: 0,
totalNumber: '',
images: [],
reduceType: 'settle',
commissionAmount: 0,
remainingAmount: 0,
applyDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
});
const props = defineProps({
mergerCase: String,
});
const selectdList = ref([]);
const onCheckboxChange = (row) => {
selectdList.value = row.records;
form.totalNumber = row.records.length;
form.totalReduceAmount = 0;
form.remainingAmount = 0;
selectdList.value.forEach((item) => {
form.totalReduceAmount = Decimal(form.totalReduceAmount).add(
Decimal(Number(item.reduceAmount) || 0)
);
form.remainingAmount = Decimal(form.remainingAmount).add(
Decimal(Number(item.payAmount) || 0)
);
});
};
const handlePictureCardPreview = (uploadFile) => {
dialogImageUrl.value = uploadFile.url;
dialogVisible.value = true;
};
// 判断文件类型,图片预览,文件下载
const updataIf = (e) => {
console.log('eeee', e)
if (e.fileName) {
if (e.fileName.split('.')[1] === 'png' || e.fileName.split('.')[1] === 'jpeg' || e.fileName.split('.')[1] === 'jpg') {
return false
} else {
return true
}
} else {
if (e.name.split('.')[1] === 'png' || e.name.split('.')[1] === 'jpeg' || e.name.split('.')[1] === 'jpg') {
return false
} else {
return true
}
}
}
const handleRemove1 = (uploadFile) => {
const index = form.images.findIndex((v) => v.name === uploadFile.name);
form.images.splice(index, 1);
};
const download = (item) => {
const name = item.slice(item.lastIndexOf('/') + 1, item.length);
downloadfile('/sys/static/' + item, {}, name);
};
const handleFileSuccess1 = (response, file, fileList) => {
if (file.uid) {
const item = form.images.find((v) => v.uid === file.uid);
item.url = envs.VITE_GLOB_API_URL_PREFIX + '/sys/static/' + response.message;
}
};
const getImageUrl = () => {
return new URL(`@/assets/images/file.svg`, import.meta.url).href;
}
const onCheckboxAll = (flag) => {
if (flag.checked) {
selectdList.value = flag.records;
form.totalNumber = flag.records.length;
} else {
selectdList.value = [];
form.totalNumber = 0;
}
form.totalReduceAmount = 0;
form.remainingAmount = 0;
selectdList.value.forEach((item) => {
form.totalReduceAmount = Decimal(form.totalReduceAmount).add(
Decimal(Number(item.reduceAmount) || 0)
);
form.remainingAmount = Decimal(form.remainingAmount).add(
Decimal(Number(item.payAmount) || 0)
);
});
};
const currentDetail = ref({});
const onHide = (done) => {
done();
};
const config = reactive({
checkboxConfig: {
checkMethod: ({ row }) => {
return false;
},
},
minHeight: 200,
columns: [
{ type: 'checkbox', title: '', width: '40px',fixed: 'left' },
{
field: 'loan.caseId',
width: 100,
showOverflow: 'tooltip',
title: '案件ID',
},
{
field: 'loan.product',
width: 100,
showOverflow: 'tooltip',
title: '产品',
},
{
field: 'loan.loanPlatform.name',
showOverflow: 'tooltip',
title: '借款平台',
width: 90,
},
{
field: 'loan.commissionAmount',
showOverflow: 'tooltip',
width: 90,
title: '委案金额',
},
{
field: 'loan.sumReductionAmount',
showOverflow: 'tooltip',
width: 100,
title: '累计减免金额',
},
{
field: 'loan.sumRepayAmount',
showOverflow: 'tooltip',
width: 100,
title: '累计还款金额',
},
{
field: 'reduceAmount',
showOverflow: 'tooltip',
width: 100,
title: '减免金额',
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<ElInput v-model={row.reduceAmount} disabled onChange={() => changeNum(row, rowIndex)} />
</>
);
},
},
},
{
field: 'loan.remainingAmount',
showOverflow: 'tooltip',
width: 166,
title: '剩余待还金额(减免前)',
},
{
field: 'payAmount',
showOverflow: 'tooltip',
width: 140,
title: '应还金额(减免后)',
},
],
onCheckboxChange: onCheckboxChange,
onCheckboxAll: onCheckboxAll,
toolbarConfig: { enabled: false },
});
const changeNum = (row) => {
row.payAmount = Decimal(row.loan.remainingAmount).sub(Decimal(row.reduceAmount));
form.totalReduceAmount = 0;
form.remainingAmount = 0;
selectdList.value.forEach((item) => {
form.totalReduceAmount = Decimal(form.totalReduceAmount).add(
Decimal(Number(item.reduceAmount) || 0)
);
form.remainingAmount = Decimal(form.remainingAmount).add(
Decimal(Number(item.payAmount) || 0)
);
});
};
const openModal = (detail) => {
const caselist = detail.reduceRecords
showModal.value = true;
currentDetail.value = detail;
form.totalReduceAmount = detail.totalReduceAmount;
form.remainingAmount = Decimal(detail.remainingAmount).sub(Decimal(detail.totalReduceAmount));
form.applyDate = detail.applyDate
const list = [];
form.images = detail.images
? detail.images.map((v) => ({
name: v.slice(v.lastIndexOf('/') + 1, v.length),
url: envs.VITE_GLOB_API_URL_PREFIX + '/sys/static/' + v,
}))
: [];
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 = list;
}
}, 500);
};
const submitForm = (type) => {
const list = JSON.parse(JSON.stringify(selectdList.value));
list.forEach((item) => {
delete item.payAmount;
});
let images = JSON.parse(JSON.stringify(form.images.map((v) => v.url)));
images = images.map((v) => {
return v.replace(envs.VITE_GLOB_API_URL_PREFIX + '/sys/static/', '');
});
const params = {
borrower: currentDetail.value.borrower,
askForStatus: 'Pending',
flowStatus: type,
...form,
images: images.length > 0 ? images : null,
reduceRecords: list,
};
delete params.id;
delete params.cpe;
saveReduce(params).then((res) => {
if (res.success) {
ElMessage.success({
message: '保存成功',
plain: true,
});
showModal.value = false;
emits('success');
}
});
};
defineExpose({
openModal,
});
</script>
<style lang="scss" scoped>
.mydrawer {
:deep(.card) {
padding: 0;
border: none;
}
}
.mypicture {
:deep(.el-upload--picture-card) {
width: 70px;
height: 70px;
}
:deep(.el-upload-list__item) {
width: 70px;
height: 70px;
}
:deep(.el-upload--picture-card) {
font-size: 12px;
}
}
.after-border {
position: relative;
::after {
position: absolute;
top: -20px;
right: 0;
bottom: 0;
width: 1px;
background: #e5e7eb;
content: '';
display: block;
}
}
.overflow-hidden1 {
.el-form-item {
margin-bottom: 5px !important;
}
}
</style>
<style lang="scss">
.el-drawer .el-drawer__header .el-tag--warning .el-tag__content {
color: var(--el-color-warning) !important;
}
.el-drawer .el-drawer__header .el-tag--success .el-tag__content {
color: var(--el-color-success) !important;
}
.el-drawer .el-drawer__header .el-tag--danger .el-tag__content {
color: var(--el-color-danger) !important;
}
.overflow-hidden1 {
.el-drawer__body{
overflow: hidden;
}
}
</style>
......@@ -17,96 +17,7 @@
</el-tab-pane>
</el-tabs>
</div>
<ProTable :config="config" ref="ProTableRef" :api="getReducePage" :selectdList="selectdList" :paramCallback="paramCallback">
<template #left_buttons>
<!-- <el-button type="primary">下载申请 </el-button> -->
<el-button
type="primary"
@click="changeStatus"
:disabled="!selectdList || !selectdList.length"
>审批
</el-button>
<!-- <el-button type="primary">下载 </el-button>
<el-button type="primary">批量修复上传 </el-button> -->
</template>
<template #expand_content="{ row }">
<div class="expand-box">
<div>案件明细</div>
<div class="expand-table">
<div v-for="(item, index) in row.reduceRecords" :key="index">
<div class="public-header">
{{ item?.loan?.caseId }}
</div>
<table
><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?.reduceAmount }}</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
? CaseStatus?.find((v) => v.value === item?.loan?.caseStatus)?.label
: ''
}}</td
>
</tr>
<tr>
<td class="label">手续费</td>
<td>{{ item?.loan?.commission }}</td>
<td class="label">跟进结果</td>
<td>{{
item?.loan?.followStatus
? FollowStatus?.find((v) => v.value === item?.loan?.followStatus)?.label
: ''
}}</td>
<td class="label">跟进状态</td>
<td>{{
item?.loan?.phoneResultStatus
? PhoneResultStatus?.find(
(v) => v.value === item?.loan?.phoneResultStatus
)?.label
: ''
}}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</template>
<ProTable :config="config" ref="ProTableRef" :api="getReducePage" :paramCallback="paramCallback">
</ProTable>
<vxe-modal
resize
......@@ -126,12 +37,17 @@
<el-button type="primary" @click="submitForm('pass')">通过</el-button>
</template>
</vxe-modal>
<reduceDrawer
ref="reduceDrawerRef"
@success="query"
></reduceDrawer>
<el-image-viewer :url-list="srcList" v-if="RefImage" @close="RefImage = false" />
</div>
</template>
<script setup name="systemLog" lang="jsx">
import { computed } from 'vue';
import reduceDrawer from './components/reduceDrawer.vue';
import { reactive, ref } from 'vue';
import { getReducePage,getReduceTotal, flowStatusByIds } from '@/api/property';
import { onMounted } from 'vue';
......@@ -142,6 +58,7 @@
import { Download } from '@element-plus/icons-vue';
import { getAppEnvConfig } from '@/utils/env';
const envs = getAppEnvConfig();
const reduceDrawerRef = ref();
const { PhoneResultStatus, ReduceType, FlowStatus, FollowStatus, CaseStatus } = useDict("PhoneResultStatus","ReduceType", "FlowStatus", "FollowStatus", "CaseStatus");
const downloadfile = inject('download');
......@@ -159,6 +76,11 @@
const name = item.slice(item.lastIndexOf('/') + 1, item.length);
downloadfile('/sys/static/' + item, {}, name);
};
const changeStatus = async (row) => {
reduceDrawerRef.value.openModal(
JSON.parse(JSON.stringify(row))
);
};
const paramCallback = (param) => {
const obj = JSON.parse(JSON.stringify(param));
obj['flowStatus'] = activeName.value;
......@@ -201,9 +123,6 @@
selectdList.value = [];
}
};
const changeStatus = async () => {
showModal.value = true;
};
const handleClick = () => {
setTimeout(() => {
query();
......@@ -235,8 +154,8 @@
const config = computed(() => {
return {
columns: [
{ type: 'checkbox', width: 60, fixed: 'left' },
{ type: 'expand', width: 40, slots: { content: 'expand_content' } },
// { type: 'checkbox', width: 60, fixed: 'left' },
// { type: 'expand', width: 40, slots: { content: 'expand_content' } },
{
field: 'caseId',
title: '案件ID',
......@@ -287,9 +206,9 @@
width: 120,
},
{
title: 'CPE',
title: '发起人',
showOverflow: 'tooltip',
width: 60,
width: 70,
slots: {
default: ({ row }) => {
if (row.cpe?.username) {
......@@ -372,6 +291,7 @@
field: 'applyDate',
title: '减免截止时间',
showOverflow: 'tooltip',
width: 120,
search: {
el: 'date-picker',
labelWidth: 90,
......@@ -381,6 +301,7 @@
{
field: 'inEffectDate',
title: '减免生效时间',
width: 120,
showOverflow: 'tooltip',
search: {
el: 'date-picker',
......@@ -388,6 +309,22 @@
props: { type: 'datetime', valueFormat: 'YYYY-MM-DD HH:mm:ss' },
},
},
{
field: 'code',
title: '操作',
width: 120,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<ElButton type="primary" onClick={() => changeStatus(row)}>
{row.flowStatus === 'pending' ? '查看并审核' : '查看'}
</ElButton>
</>
);
},
},
}
],
onCheckboxChange: onCheckboxChange,
onCheckboxAll: onCheckboxAll,
......
......@@ -40,7 +40,7 @@
esc-closable
>
<div class="w-full px-3 h-full overflow-auto flex-col flex mytable">
是否审批通过选中的数据?
是否审批通过{{currentRow ? `借款人${currentRow?.borrower?.name}, 还款金额${currentRow?.realRepayAmount}`: '选中'}}的数据?
</div>
<template #footer>
<el-button type="default" @click="showModal = false">取消</el-button>
......@@ -62,6 +62,7 @@
const { RepayType, FlowStatus } = useDict("RepayType", "FlowStatus");
const ProTableRef = ref();
const showModal = ref(false);
const currentRow = ref(null);
const activeName = ref('pending');
const tabs = ref([]);
const selectdList = ref([]);
......@@ -116,7 +117,12 @@
}, 500)
return obj;
};
const changeStatus = async () => {
const changeStatus = async (row) => {
if (row.id) {
currentRow.value = row
} else {
currentRow.value = null
}
showModal.value = true;
};
const submitForm = async (type) => {
......@@ -160,7 +166,7 @@
}
},
},
width: 80,
width: 180,
},
{
field: 'borrower.name',
......@@ -172,7 +178,7 @@
{
title: 'CPE',
showOverflow: 'tooltip',
width: 60,
width: 80,
slots: {
default: ({ row }) => {
if (row.reduce && row.reduce.reduceRecords) {
......@@ -220,6 +226,7 @@
{
field: 'realRepayAmount',
title: '实际还款金额',
width: 140,
showOverflow: 'tooltip',
search: { el: 'input', labelWidth: 90 },
},
......@@ -232,7 +239,7 @@
labelWidth: 90,
props: { type: 'datetime', valueFormat: 'YYYY-MM-DD HH:mm:ss' },
},
width: 115,
width: 140,
},
{
field: 'reduce.totalPayAmount',
......@@ -255,7 +262,7 @@
);
},
},
width: 80,
width: 100,
},
{
field: 'loanPlatform',
......@@ -284,6 +291,23 @@
},
},
},
{
field: 'code',
title: '操作',
width: 120,
visible: activeName.value === 'pending' ? true : false,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<ElButton type="primary" onClick={() => changeStatus(row)}>
审批
</ElButton>
</>
);
},
},
}
],
onCheckboxChange: onCheckboxChange,
onCheckboxAll: onCheckboxAll,
......
......@@ -29,6 +29,7 @@
<template #left_buttons>
<el-button
type="primary"
v-if="activeName === 'un_audit'"
@click="audit"
v-permission="'send_audio'"
:disabled="!selectdList || selectdList.length === 0"
......
......@@ -238,7 +238,7 @@
import dayjs from 'dayjs';
import { computed } from 'vue';
import { reactive, ref } from 'vue';
import { ElInputNumber, ElMessage } from 'element-plus';
import { ElInputNumber, ElMessage, ElTag } from 'element-plus';
import { Upload } from '@element-plus/icons-vue';
import { getAppEnvConfig } from '@/utils/env';
import { saveTrackRecord } from '@/api/property';
......@@ -397,9 +397,9 @@
const config = reactive({
minHeight: 200,
checkboxConfig: {
checkMethod: ({ row }) => {
return props.mergerCase !== 'Y';
},
// checkMethod: ({ row }) => {
// return props.mergerCase !== 'Y';
// },
},
columns: [
{ type: 'checkbox', width: 60, fixed: 'left' },
......@@ -408,6 +408,17 @@
title: '案件ID',
showOverflow: 'tooltip',
},
{
field: 'mergerCase',
title: '是否共案处理',
showOverflow: 'tooltip',
width: 100,
slots: {
default: ({ row }) => {
return <ElTag>{row.mergerCase == 'Y' ? '是' : '否'}</ElTag>;
},
},
},
{
field: 'product',
title: '产品',
......
......@@ -125,7 +125,7 @@
import { computed } from 'vue';
import { reactive, ref } from 'vue';
import { saveReduce } from '@/api/property';
import { ElMessage } from 'element-plus';
import { ElMessage, ElTag } from 'element-plus';
import { Download, ZoomIn } from '@element-plus/icons-vue';
import { onMounted } from 'vue';
import { watch } from 'vue';
......@@ -233,9 +233,9 @@
};
const config = reactive({
checkboxConfig: {
checkMethod: ({ row }) => {
return props.mergerCase !== 'Y';
},
// checkMethod: ({ row }) => {
// return props.mergerCase !== 'Y';
// },
},
minHeight: 200,
columns: [
......@@ -246,6 +246,17 @@
showOverflow: 'tooltip',
title: '案件ID',
},
{
field: 'mergerCase',
title: '是否共案处理',
showOverflow: 'tooltip',
width: 100,
slots: {
default: ({ row }) => {
return <ElTag>{row.loan.mergerCase == 'Y' ? '是' : '否'}</ElTag>;
},
},
},
{
field: 'loan.product',
width: 100,
......
......@@ -26,7 +26,7 @@
<td class="label">减免生效时间</td>
<td>{{ currentInfo.inEffectDate }}</td>
<td class="label">应还金额</td>
<td colspan="5">{{ currentInfo.totalPayAmount }}</td>
<td colspan="5">{{ Decimal(currentInfo.remainingAmount).sub(currentInfo.totalReduceAmount) }}</td>
</tr>
<!-- Add more rows as needed -->
</table>
......@@ -188,9 +188,10 @@
<script setup lang="jsx" name="allocationModal">
import { computed } from 'vue';
import dayjs from 'dayjs';
import Decimal from 'decimal.js';
import { reactive, ref } from 'vue';
import { getAppEnvConfig } from '@/utils/env';
import { ElMessage } from 'element-plus';
import { ElMessage,ElTag } from 'element-plus';
import { useDict } from '@/hooks/useDict';
const { PhoneResultStatus, RepayType, FlowStatus, FollowStatus, AuditStatus, CaseStatus } = useDict("PhoneResultStatus","RepayType", "FlowStatus", "FollowStatus","AuditStatus", "CaseStatus");
import { saveRepayRecord } from '@/api/property';
......@@ -216,7 +217,7 @@
const radio = ref(0);
const validaterealRepayAmount = (rule, value, callback) => {
if (
Number(value) !== Number(currentInfo.value.totalPayAmount) &&
Number(value) !== Number(Decimal(currentInfo.value.remainingAmount).sub(currentInfo.value.totalReduceAmount)) &&
currentType.value === '结清减免还款'
) {
callback(new Error('*金额必须等于应还金额'));
......
......@@ -178,7 +178,7 @@
import dayjs from 'dayjs';
import { computed } from 'vue';
import { reactive, ref } from 'vue';
import { ElInputNumber, ElMessage } from 'element-plus';
import { ElInputNumber, ElMessage, ElTag } from 'element-plus';
import { savebyStages } from '@/api/property';
import { getByIdPlatforms } from '@/api/platform';
import { getAppEnvConfig } from '@/utils/env';
......@@ -373,9 +373,9 @@
};
const config = reactive({
checkboxConfig: {
checkMethod: ({ row }) => {
return props.mergerCase !== 'Y';
},
// checkMethod: ({ row }) => {
// return props.mergerCase !== 'Y';
// },
},
minHeight: 200,
columns: [
......@@ -385,6 +385,17 @@
title: '案件ID',
showOverflow: 'tooltip',
},
{
field: 'mergerCase',
title: '是否共案处理',
showOverflow: 'tooltip',
width: 100,
slots: {
default: ({ row }) => {
return <ElTag>{row.mergerCase == 'Y' ? '是' : '否'}</ElTag>;
},
},
},
{
field: 'product',
title: '产品',
......
......@@ -378,7 +378,7 @@
},
},
enum: () => getTenantPage({ current: 1, size: 999999999, status: 'enable' }),
search: authButtonListGet.includes('allcation_for_tenant') ? { el: 'select', props: { filterable: true }, key: 'tenant', labelWidth: 105 } : null,
search: authButtonListGet.includes('allcation_for_tenant') ? { el: 'select', props: { filterable: true }, key: 'tenant', labelWidth: 90 } : null,
fieldNames: { label: 'name', value: 'id' },
title: '调解中心',
width: 100,
......
......@@ -211,18 +211,21 @@
{
field: 'code',
title: '导入批次',
width: 100,
showOverflow: 'tooltip',
search: { el: 'input', props: { clearable: true } },
},
{
field: 'maxStagesNum',
title: '分期最大期数',
width: 120,
showOverflow: 'tooltip',
search: { el: 'input', props: { clearable: true } },
},
{
field: 'minAmount',
title: '最低分期金额',
width: 120,
showOverflow: 'tooltip',
search: { el: 'input', props: { clearable: true } },
},
......@@ -230,7 +233,7 @@
field: 'mergerCase',
title: '是否共案处理',
showOverflow: 'tooltip',
width: 100,
width: 110,
slots: {
default: ({ row }) => {
return <ElTag>{row.mergerCase == 'Y' ? '是' : '否'}</ElTag>;
......@@ -241,6 +244,7 @@
field: 'code',
title: '资产类型',
enum: options,
width: 100,
showOverflow: 'tooltip',
search: { el: 'select', props: { filterable: true } },
fieldNames: { label: 'genderLabel', value: 'genderValue' },
......@@ -248,16 +252,19 @@
{
field: 'totalCaseNum',
showOverflow: 'tooltip',
width: 100,
title: '案件总数',
},
{
field: 'totalAmount',
showOverflow: 'tooltip',
width: 120,
title: '案件总金额',
},
{
field: 'totalBorrowerNum',
showOverflow: 'tooltip',
width: 100,
title: '客户总数',
},
{
......@@ -287,7 +294,7 @@
field: 'action',
title: '文件地址',
showOverflow: 'tooltip',
width: 200,
width: 80,
slots: {
default: ({ row }) => {
return (
......@@ -317,7 +324,7 @@
code: '',
maxStagesNum: '',
minAmount: '',
mergerCase: 'N',
mergerCase: 'Y',
discount: '',
});
const upload = reactive({
......
......@@ -29,6 +29,7 @@
<template #left_buttons>
<el-button
type="primary"
v-if="activeName === 'un_audit'"
@click="audit"
v-permission="'send_audio'"
:disabled="!selectdList || selectdList.length === 0"
......
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