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

资产导入撞库弹窗

parent 8ad5356f
......@@ -11,3 +11,7 @@ export const importLoanPage = (params) => {
export const checkLoanExcel = (params) => {
return request.get('/LoanExcel/check', params);
};
// 获取撞库的资产列表
export const pengLoanExcel = (params) => {
return request.get('/LoanExcel/peng', params);
};
......@@ -8,51 +8,256 @@
show-footer
esc-closable
>
<ProTable :config="config" :data="data"> </ProTable>
<vxe-button @click="exportEvent">直接导出 CSV 文件</vxe-button>
<ProTable :config="config" :data="data" :showPagination="false" ref="ProTableRef"
:showToolBar="false"> </ProTable>
<template #footer> </template>
</vxe-modal>
</template>
<script setup>
<script setup lang="jsx">
import { computed } from 'vue';
import { reactive, ref } from 'vue';
import { pengLoanExcel } from '@/api/import';
const ProTableRef = ref();
const showModal = ref(false);
const data = ref([]);
const currentAccount = ref(undefined);
const followStatusOpt = [
{ label: '接通后挂断', value: 'hang_up' },
{ label: '接通有实质进展', value: 'progress' },
{ label: '接通有效转告', value: 'pass_on' },
{ label: '接通拒绝转告', value: 'no_pass' },
{ label: '接听后挂断', value: 'Hang_up_after_answering' },
{ label: '接通无应答', value: 'No_response_when_connected' },
{ label: '称与债人无关', value: 'Claims_unrelated_to_creditors' },
{ label: '称非本人', value: 'Claiming_not_to_be_myself' },
{ label: '无人接听', value: 'no_answer' },
{ label: '关机', value: 'Shutdown' },
{ label: '空号', value: 'dead_number' },
{ label: '占线/忙音/正在通话中', value: 'Busy' },
{ label: '停机', value: 'closing_down' },
{ label: '机器人回复', value: 'Robot_reply' },
{ label: '微信', value: 'WeChat' },
{ label: '短信', value: 'short_message' },
{ label: 'QQ', value: 'QQ' },
{ label: '飞书', value: 'fly' },
{ label: '钉钉', value: 'DING' },
];
const phoneResultStatusOpt = [
{ label: '后续再跟进', value: 'later' },
{ label: '承诺还款', value: 'Promise_Repayment' },
{ label: '暂无还款意愿', value: 'No_Repay' },
{ label: '要求停催', value: 'Stop_Urging' },
{ label: '情绪激动抗拒', value: 'resistance' },
{ label: '拒绝还款', value: 'Refuse_Repayment' },
{ label: '已还款', value: 'Repaired' },
{ label: '代履行还款', value: 'repayment_others' },
];
const caseStatusOpt = [
{ label: '正常', value: 'normal' },
{ label: '撤案', value: 'withdraw' },
{ label: '留案', value: 'stay' },
];
const exportEvent = () => {
if (ProTableRef.value && ProTableRef.value.element) {
ProTableRef.value.element.exportData({
type: 'csv',
});
}
};
const config = reactive({
exportConfig: {},
toolbarConfig: { enabled: false },
columns: [
{ field: 'name', title: '名称', search: { el: 'input' } },
{
field: 'code',
title: '账号',
search: { el: 'input', props: { clearable: true } },
field: 'caseId',
title: '案件ID',
// search: { el: 'input', labelWidth: 80 },
width: 190
},
{
field: 'loanPlatform.name',
title: '借款机构',
width: 100,
// search: { el: 'input', props: { clearable: true }, key: 'payOrg', labelWidth: 80 },
},
{
field: 'manageOrg.orgName',
title: '资管公司',
width: 100,
// search: { el: 'input', props: { clearable: true }, key: 'manageOrg', labelWidth: 80 },
},
{
field: 'borrower.name',
title: '借款人姓名',
width: 120,
// search: {
// el: 'input',
// key: 'borrowerName',
// props: { clearable: true },
// labelWidth: 80,
// },
},
{
field: 'borrower.idCard',
title: '身份证',
width: 140,
// search: {
// el: 'input',
// props: { clearable: true },
// key: 'borrowerIdCard',
// labelWidth: 80,
// },
},
{
field: 'borrower.phone',
title: '手机号',
width: 140,
// search: {
// el: 'input',
// props: { clearable: true },
// key: 'borrowerPhone',
// labelWidth: 80,
// },
},
{
field: 'discount',
title: '折扣',
width: 80,
},
{
field: 'commissionAmount',
title: '委案金额',
width: 80,
// search: { el: 'input', props: { clearable: true }, labelWidth: 80 },
},
{
field: 'sumRepayAmount',
title: '累计还款金额',
width: 100,
// search: { el: 'input', props: { clearable: true }, labelWidth: 80 },
},
{
field: 'sumReductionAmount',
title: '累计减免金额',
width: 100,
// search: { el: 'input', props: { clearable: true }, labelWidth: 80 },
},
{
field: 'remainingAmount',
title: '剩余待还金额',
width: 100,
// search: { el: 'input', props: { clearable: true }, labelWidth: 80 },
},
{
field: 'cpe.username',
title: 'CPE',
width: 80,
// search: { el: 'input', props: { clearable: true }, key: 'cpeName', labelWidth: 80 },
},
{
field: 'cpeDate',
title: '分派CPE日期',
width: 130,
// search: {
// el: 'date-picker',
// props: { type: 'date', valueFormat: 'YYYY-MM-DD' },
// labelWidth: 80,
// },
},
{
field: 'principalBalance',
title: '本金余额',
width: 80,
// search: { el: 'input', props: { clearable: true }, labelWidth: 80 },
},
{
field: 'debitInterest',
title: '欠息额',
width: 80,
// search: { el: 'input', props: { clearable: true }, labelWidth: 80 },
},
{
field: 'code',
title: '账号',
search: { el: 'input', props: { clearable: true } },
field: 'commission',
title: '手续费',
width: 80,
// search: { el: 'input', props: { clearable: true }, labelWidth: 80 },
},
{
field: 'role',
title: '角色',
search: { el: 'input', props: { clearable: true } },
field: 'followStatus',
title: '跟进结果',
width: 80,
enum: followStatusOpt,
// search: { el: 'select', props: { filterable: true }, labelWidth: 80 },
fieldNames: { label: 'label', value: 'value' },
slots: {
default: ({ row }) => {
return (
<>
{row.followStatus
? followStatusOpt.find((v) => v.value === row.followStatus).label
: ''}
</>
);
},
},
},
{
field: 'phoneResultStatus',
title: '跟进状态',
width: 80,
enum: phoneResultStatusOpt,
// search: { el: 'select', props: { filterable: true }, labelWidth: 80 },
fieldNames: { label: 'label', value: 'value' },
slots: {
default: ({ row }) => {
return (
<>
{row.phoneResultStatus
? phoneResultStatusOpt.find((v) => v.value === row.phoneResultStatus).label
: ''}
</>
);
},
},
},
{
field: 'caseStatus',
title: '案件状态',
width: 80,
enum: caseStatusOpt,
// search: { el: 'select', props: { filterable: true }, labelWidth: 80 },
fieldNames: { label: 'label', value: 'value' },
slots: {
default: ({ row }) => {
return (
<>
{row.caseStatus ? caseStatusOpt.find((v) => v.value === row.caseStatus).label : ''}
</>
);
},
},
},
],
});
const data = [
{ name: 'admin', code: 'admin', role: 'superadmin' },
{ name: 'account1', code: 'account1', role: 'user' },
{ name: 'account2', code: 'account2', role: 'user' },
{ name: 'account3', code: 'account3', role: 'user' },
];
const onHide = () => {
currentAccount.value = null;
};
const openModal = (account) => {
showModal.value = true;
currentAccount.value = account;
Object.assign(form, account);
pengLoanExcel({
batchCode: account.code,
current: 1,
size: 9999999
}).then(res => {
if (res.result){
data.value = res.result.content
}
})
};
defineExpose({
......
......@@ -57,7 +57,6 @@
const openModal = (account) => {
showModal.value = true;
table.value = account;
Object.assign(form, account);
};
defineExpose({
......
......@@ -98,7 +98,7 @@
import { ElButton, ElMessage } from 'element-plus';
import { Upload } from '@element-plus/icons-vue';
import { inject } from 'vue';
import { LoanSubmit, importLoanPage, checkLoanExcel } from '@/api/import';
import { LoanSubmit, importLoanPage, checkLoanExcel} from '@/api/import';
const downloadfile = inject('download');
const envs = getAppEnvConfig();
......
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