Commit 106c74b0 authored by 沈翠玲's avatar 沈翠玲

修复管理

parent ea82dbc6
...@@ -7,6 +7,7 @@ import { setupElementPlus } from '@/plugins/element-plus'; ...@@ -7,6 +7,7 @@ import { setupElementPlus } from '@/plugins/element-plus';
import { setupDirectives } from '@/plugins/directives'; 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 Tag from '@/components/Tag/index.vue';
import { download } from '@/utils/http/index'; import { download } from '@/utils/http/index';
export async function bootstrapInstall() { export async function bootstrapInstall() {
const app = createApp(App); const app = createApp(App);
...@@ -26,6 +27,7 @@ export async function bootstrapInstall() { ...@@ -26,6 +27,7 @@ export async function bootstrapInstall() {
// 挂载路由 // 挂载路由
setupRouter(app); setupRouter(app);
app.component('ProTable', ProTable); app.component('ProTable', ProTable);
app.component('Tag', Tag);
app.provide('download', download); app.provide('download', download);
// 路由准备就绪后挂载 APP 实例 // 路由准备就绪后挂载 APP 实例
await router.isReady(); await router.isReady();
......
<template>
<span class="stay" v-if="stay">
</span>
<span class="over" v-if="over">
</span>
<span class="need" v-if="need">
</span>
</template>
<script setup name="Tag">
import { computed } from 'vue';
const props = defineProps({
row: Object,
});
const stay = computed(() => {
if (props.row && props.row.caseStatus && props.row.caseStatus === 'stay') {
return true
}
return false
})
const over = computed(() => {
if (props.row && props.row.repayStatus && props.row.repayStatus === 'over') {
return true
}
return false
})
const need = computed(() => {
if (props.row && props.row.borrower && props.row.borrower.phoneNull === "Y") {
return true
}
return false
})
</script>
<style lang="scss" scoped>
.stay {
padding: 0 3px;
line-height: 18px;
display: inline-block;
background: #0267ff;
color: #fff;
margin-left: 2px;
}
.over {
padding: 0 3px;
line-height: 18px;
display: inline-block;
background: #f12d2d;
color: #fff;
margin-left: 2px;
}
.need {
padding: 0 3px;
line-height: 18px;
display: inline-block;
color: rgb(0, 0, 0);
margin-left: 2px;
background: #cbec10;
}
</style>
\ No newline at end of file
...@@ -409,7 +409,22 @@ ...@@ -409,7 +409,22 @@
{ {
field: 'caseId', field: 'caseId',
title: '案件ID', title: '案件ID',
width: 230,
showOverflow: 'tooltip', showOverflow: 'tooltip',
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
}, },
{ {
field: 'product', field: 'product',
......
...@@ -474,7 +474,21 @@ ...@@ -474,7 +474,21 @@
{ {
field: 'caseId', field: 'caseId',
title: '案件ID', title: '案件ID',
width: 120, slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
width: 230,
showOverflow: 'tooltip', showOverflow: 'tooltip',
}, },
{ {
......
...@@ -318,9 +318,23 @@ ...@@ -318,9 +318,23 @@
{ type: 'checkbox', title: '', width: '40px',fixed: 'left' }, { type: 'checkbox', title: '', width: '40px',fixed: 'left' },
{ {
field: 'loan.caseId', field: 'loan.caseId',
width: 100, width: 230,
showOverflow: 'tooltip', showOverflow: 'tooltip',
title: '案件ID', title: '案件ID',
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.loan.caseId}
</div>
<Tag row={row.loan} />
</>
);
},
}
}, },
{ {
field: 'loan.product', field: 'loan.product',
......
...@@ -409,6 +409,21 @@ ...@@ -409,6 +409,21 @@
{ {
field: 'caseId', field: 'caseId',
title: '案件ID', title: '案件ID',
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
showOverflow: 'tooltip', showOverflow: 'tooltip',
}, },
{ {
......
...@@ -169,11 +169,11 @@ ...@@ -169,11 +169,11 @@
title: '案件ID', title: '案件ID',
showOverflow: 'tooltip', showOverflow: 'tooltip',
search: { el: 'input', labelWidth: 105 }, search: { el: 'input', labelWidth: 105 },
width: 190, width: 230,
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
return ( return (
<> <div className="flex">
<VxeTooltip <VxeTooltip
content={row.caseId} content={row.caseId}
> >
...@@ -184,7 +184,8 @@ ...@@ -184,7 +184,8 @@
onClick={() => onCellClick(row)} onClick={() => onCellClick(row)}
></VxeTextEllipsis> ></VxeTextEllipsis>
</VxeTooltip> </VxeTooltip>
</> <Tag row={row} />
</div>
); );
}, },
}, },
......
...@@ -265,11 +265,11 @@ ...@@ -265,11 +265,11 @@
title: '案件ID', title: '案件ID',
showOverflow: 'tooltip', showOverflow: 'tooltip',
search: { el: 'input', labelWidth: 105 }, search: { el: 'input', labelWidth: 105 },
width: 190, width: 230,
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
return ( return (
<> <div className="flex">
<VxeTooltip <VxeTooltip
content={row.caseId} content={row.caseId}
> >
...@@ -280,7 +280,8 @@ ...@@ -280,7 +280,8 @@
onClick={() => onCellClick(row)} onClick={() => onCellClick(row)}
></VxeTextEllipsis> ></VxeTextEllipsis>
</VxeTooltip> </VxeTooltip>
</> <Tag row={row} />
</div>
); );
}, },
}, },
......
...@@ -406,6 +406,21 @@ ...@@ -406,6 +406,21 @@
{ {
field: 'caseId', field: 'caseId',
title: '案件ID', title: '案件ID',
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
showOverflow: 'tooltip', showOverflow: 'tooltip',
}, },
{ {
......
...@@ -242,8 +242,22 @@ ...@@ -242,8 +242,22 @@
{ type: 'checkbox', title: '', width: '40px',fixed: 'left' }, { type: 'checkbox', title: '', width: '40px',fixed: 'left' },
{ {
field: 'loan.caseId', field: 'loan.caseId',
width: 100,
showOverflow: 'tooltip', showOverflow: 'tooltip',
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.loan.caseId}
</div>
<Tag row={row.loan} />
</>
);
},
},
title: '案件ID', title: '案件ID',
}, },
{ {
......
...@@ -329,6 +329,21 @@ ...@@ -329,6 +329,21 @@
columns: [ columns: [
{ {
field: 'caseId', field: 'caseId',
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
title: '案件ID', title: '案件ID',
showOverflow: 'tooltip', showOverflow: 'tooltip',
}, },
......
...@@ -383,6 +383,21 @@ ...@@ -383,6 +383,21 @@
{ {
field: 'caseId', field: 'caseId',
title: '案件ID', title: '案件ID',
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
showOverflow: 'tooltip', showOverflow: 'tooltip',
}, },
{ {
...@@ -396,6 +411,17 @@ ...@@ -396,6 +411,17 @@
}, },
}, },
}, },
{
field: 'canStages',
title: '分期是否可修改',
showOverflow: 'tooltip',
width: 100,
slots: {
default: ({ row }) => {
return <ElTag>{row.canStages == 'Y' ? '是' : '否'}</ElTag>;
},
},
},
{ {
field: 'product', field: 'product',
title: '产品', title: '产品',
......
<template> <template>
<div class="card table-box"> <div class="card table-box">
<div class="public-header font-bold mb-1" style="font-size: 15px; line-height: 20px"> <div class="public-header font-bold mb-1 flex" style="font-size: 15px; line-height: 20px">
{{ detail?.caseId }} {{ detail?.caseId }}
<Tag :row="detail" />
</div> </div>
<div class="h-full w-full flex flex-col"> <div class="h-full w-full flex flex-col">
<div class="mt-2"> <div class="mt-2">
...@@ -928,6 +929,21 @@ ...@@ -928,6 +929,21 @@
{ type: 'expand', width: 80, slots: { content: 'expand_content' } }, { type: 'expand', width: 80, slots: { content: 'expand_content' } },
{ {
field: 'caseId', field: 'caseId',
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
title: '案件ID', title: '案件ID',
showOverflow: 'tooltip', showOverflow: 'tooltip',
}, },
......
...@@ -107,17 +107,18 @@ ...@@ -107,17 +107,18 @@
title: '案件ID', title: '案件ID',
showOverflow: 'tooltip', showOverflow: 'tooltip',
search: { el: 'input', labelWidth: 90 }, search: { el: 'input', labelWidth: 90 },
width: 190, width: 230,
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
return ( return (
<> <>
<div <div
onClick={() => onCellClick(row)} onClick={() => onCellClick(row)}
className=" text-blue-400 cursor-pointer" className=" text-blue-400 cursor-pointer inline-block"
> >
{row.caseId} {row.caseId}
</div> </div>
<Tag row={row} />
</> </>
); );
}, },
......
...@@ -264,13 +264,14 @@ ...@@ -264,13 +264,14 @@
title: '案件ID', title: '案件ID',
showOverflow: 'tooltip', showOverflow: 'tooltip',
search: { el: 'input', labelWidth: 105 }, search: { el: 'input', labelWidth: 105 },
width: 190, width: 230,
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
return ( return (
<> <div className="flex">
<VxeTooltip <VxeTooltip
content={row.caseId} content={row.caseId}
className="inline-block"
> >
<VxeTextEllipsis <VxeTextEllipsis
content={row.caseId} content={row.caseId}
...@@ -279,7 +280,8 @@ ...@@ -279,7 +280,8 @@
onClick={() => onCellClick(row)} onClick={() => onCellClick(row)}
></VxeTextEllipsis> ></VxeTextEllipsis>
</VxeTooltip> </VxeTooltip>
</> <Tag row={row} />
</div>
); );
}, },
}, },
......
<template> <template>
<div class="table-box"> <div class="table-box">
<div class="card flex mb-2" style="padding-top: 0"> <div class="card flex mb-2" style="padding-top: 0">
<div style="width: 30%"> <div style="width: 29%">
<div class="mb-1 text-center step"> <div class="mb-1 text-center step">
<div class="xuhao">1</div> <div class="xuhao">1</div>
上传文件 上传文件
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
</div> </div>
</div> </div>
</div> </div>
<div style="width: 30%"> <div style="width: 29%">
<div class="mb-1 text-center step"> <div class="mb-1 text-center step">
<div class="xuhao">2</div> <div class="xuhao">2</div>
检查数据 检查数据
...@@ -73,11 +73,19 @@ ...@@ -73,11 +73,19 @@
<div> <div>
<el-form ref="formRef" inline :model="form" :rules="rules" label-width="120px"> <el-form ref="formRef" inline :model="form" :rules="rules" label-width="120px">
<el-row :gutter="10"> <el-row :gutter="10">
<el-col :span="24"> <el-col :span="11">
<el-form-item class="w-full" label="导入批次:" prop="code" > <el-form-item class="w-full" label="导入批次:" prop="code" >
<el-input v-model="form.code" placeholder="请输入" style="width: 100%" /> <el-input v-model="form.code" placeholder="请输入" style="width: 100%" />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="13">
<el-form-item class="w-full" label="分期是否可修改:" prop="canStages">
<el-radio-group v-model="form.canStages">
<el-radio value="Y"></el-radio>
<el-radio value="N"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="11"> <el-col :span="11">
<el-form-item class="w-full" label="分期最大期数:" prop="maxStagesNum" > <el-form-item class="w-full" label="分期最大期数:" prop="maxStagesNum" >
<el-input v-model.number="form.maxStagesNum" placeholder="请输入" style="width: 100%" /> <el-input v-model.number="form.maxStagesNum" placeholder="请输入" style="width: 100%" />
...@@ -240,6 +248,17 @@ ...@@ -240,6 +248,17 @@
}, },
}, },
}, },
{
field: 'canStages',
title: '分期是否可修改',
showOverflow: 'tooltip',
width: 110,
slots: {
default: ({ row }) => {
return <ElTag>{row.canStages == 'Y' ? '是' : '否'}</ElTag>;
},
},
},
{ {
field: 'code', field: 'code',
title: '资产类型', title: '资产类型',
...@@ -323,6 +342,7 @@ ...@@ -323,6 +342,7 @@
path: '', path: '',
code: '', code: '',
maxStagesNum: '', maxStagesNum: '',
canStages: 'Y',
minAmount: '', minAmount: '',
mergerCase: 'Y', mergerCase: 'Y',
discount: '', discount: '',
...@@ -407,6 +427,7 @@ ...@@ -407,6 +427,7 @@
file: form.path, file: form.path,
code: form.code, code: form.code,
maxStagesNum: form.maxStagesNum, maxStagesNum: form.maxStagesNum,
canStages: form.canStages,
minAmount: form.minAmount, minAmount: form.minAmount,
mergerCase: form.mergerCase, mergerCase: form.mergerCase,
discount: form.discount, discount: form.discount,
...@@ -422,7 +443,8 @@ ...@@ -422,7 +443,8 @@
form['code'] = ''; form['code'] = '';
form['maxStagesNum'] = ''; form['maxStagesNum'] = '';
form['minAmount'] = ''; form['minAmount'] = '';
form['mergerCase'] = 'N'; form['mergerCase'] = 'Y';
form['canStages'] = 'Y';
form['discount'] = ''; form['discount'] = '';
checkObj.submitloading = false checkObj.submitloading = false
}); });
......
<template> <template>
<div class="table-box"> <div class="table-box">
<div class="table-inner"> <div class="table-inner">
<ProTable :config="config" ref="caseLRef" :api="getRepairRecord"> <ProTable :config="config" ref="caseLRef" :paramCallback="paramCallback" :api="getRepairRecord">
<template #left_buttons> <template #left_buttons>
<div class="flex items-center justify-center h-8"> <div class="flex items-center justify-center h-8">
<el-button <el-button
...@@ -48,6 +48,8 @@ ...@@ -48,6 +48,8 @@
import { Upload } from '@element-plus/icons-vue'; import { Upload } from '@element-plus/icons-vue';
import { ElMessage } from 'element-plus'; import { ElMessage } from 'element-plus';
import { getTenantPage } from '@/api/tenant'; import { getTenantPage } from '@/api/tenant';
import citydata from '../../../assets/citydata';
import { getPlatformPage } from '@/api/platform';
const uploadRef = ref(); const uploadRef = ref();
...@@ -65,6 +67,34 @@ ...@@ -65,6 +67,34 @@
query: { id: row.id }, //这里不能直接写成 query: JSON.stringify(item) query: { id: row.id }, //这里不能直接写成 query: JSON.stringify(item)
}); });
}; };
const paramCallback = (param) => {
console.log('objobj', param)
const obj = JSON.parse(JSON.stringify(param));
if (obj.arealist && obj.arealist.length > 0) {
const domicileProvince = []
const domicileCity = []
const area = []
obj.arealist.forEach(item => {
domicileProvince.push(item[0])
if (item.length > 1) {
domicileCity.push(item[1])
}
if (item.length > 2) {
area.push(item[2])
}
})
obj['domicileProvince'] = domicileProvince
obj['domicileCity'] = domicileCity
obj['area'] = area
delete obj['arealist'];
}
if (obj['importTime']) {
if (obj['importTime'][0]) obj['importTimeBegin'] = obj['importTime'][0];
if (obj['importTime'][1]) obj['importTimeEnd'] = obj['importTime'][1];
delete obj['importTime'];
}
return obj;
};
const upload = reactive({ const upload = reactive({
// 是否禁用上传 // 是否禁用上传
isUploading: false, isUploading: false,
...@@ -127,6 +157,86 @@ ...@@ -127,6 +157,86 @@
// labelWidth: 105, // labelWidth: 105,
// }, // },
}, },
{
field: 'loanPlatform.name',
showOverflow: 'tooltip',
enum: () => getPlatformPage({ current: 1, size: 999999999, status: 'enable' }),
search: { el: 'select', props: { filterable: true }, key: 'loanPlatform', labelWidth: 105 },
fieldNames: { label: 'name', value: 'id' },
title: '借款平台',
width: 100,
},
{
field: 'commissionAmount',
title: '委案金额',
showOverflow: 'tooltip',
width: 80,
search: { render: ({ searchParam }) => {
return (
<div class="flex">
<el-input vModel_trim={searchParam.commissionAmountBegin} placeholder="" />
<span class="mr-1 ml-1">-</span>
<el-input vModel_trim={searchParam.commissionAmountEnd} placeholder="" />
</div>
);
}, props: { clearable: true }, labelWidth: 105 },
},
{
field: 'age',
title: '年龄',
showOverflow: 'tooltip',
width: 80,
search: { render: ({ searchParam }) => {
return (
<div class="flex">
<el-input vModel_trim={searchParam.ageBegin} placeholder="" />
<span class="mr-1 ml-1">-</span>
<el-input vModel_trim={searchParam.ageEnd} placeholder="" />
</div>
);
}, props: { clearable: true }, labelWidth: 105 },
},
{
field: 'arealist',
enum: citydata,
title: '所属区域',
showOverflow: 'tooltip',
width: 160,
fieldNames: { label: 'label', value: 'value' },
search: { el: 'cascader', props: { clearable: true, checkStrictly: true, multiple: true, 'collapse-tags': true }, labelWidth: 105 },
slots: {
default: ({ row }) => {
return (
<VxeTooltip
content={
row.borrower.domicileProvince +
(row.borrower.domicileCity ? '-' + row.borrower.domicileCity : '') +
(row.borrower.area ? '-' + row.borrower.area : '')
}
>
<VxeTextEllipsis
content={
row.borrower.domicileProvince +
(row.borrower.domicileCity ? '-' + row.borrower.domicileCity : '') +
(row.borrower.area ? '-' + row.borrower.area : '')
}
></VxeTextEllipsis>
</VxeTooltip>
);
},
},
},
{
field: 'importTime',
title: '时间',
showOverflow: 'tooltip',
width: 130,
search: {
el: 'date-picker',
props: { type: 'daterange', valueFormat: 'YYYY-MM-DD' },
labelWidth: 105,
},
},
{ {
field: 'borrower.idCard', field: 'borrower.idCard',
title: '借款人身份证', title: '借款人身份证',
......
...@@ -416,6 +416,21 @@ ...@@ -416,6 +416,21 @@
{ {
field: 'caseId', field: 'caseId',
title: '案件ID', title: '案件ID',
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
showOverflow: 'tooltip', showOverflow: 'tooltip',
}, },
{ {
......
...@@ -177,17 +177,18 @@ ...@@ -177,17 +177,18 @@
title: '案件ID', title: '案件ID',
search: { el: 'input', labelWidth: 90 }, search: { el: 'input', labelWidth: 90 },
showOverflow: 'tooltip', showOverflow: 'tooltip',
width: 190, width: 230,
slots: { slots: {
default: ({ row, rowIndex }) => { default: ({ row, rowIndex }) => {
return ( return (
<> <>
<div <div
onClick={() => onCellClick(row)} onClick={() => onCellClick(row)}
className=" text-blue-400 underline cursor-pointer" className=" text-blue-400 underline cursor-pointer inline-block"
> >
{row.caseId} {row.caseId}
</div> </div>
<Tag row={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