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

修复管理

parent ea82dbc6
......@@ -7,6 +7,7 @@ import { setupElementPlus } from '@/plugins/element-plus';
import { setupDirectives } from '@/plugins/directives';
import { setupVxeTabele } from './plugins/vxe-table';
import ProTable from '@/components/ProTable/index.vue';
import Tag from '@/components/Tag/index.vue';
import { download } from '@/utils/http/index';
export async function bootstrapInstall() {
const app = createApp(App);
......@@ -26,6 +27,7 @@ export async function bootstrapInstall() {
// 挂载路由
setupRouter(app);
app.component('ProTable', ProTable);
app.component('Tag', Tag);
app.provide('download', download);
// 路由准备就绪后挂载 APP 实例
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 @@
{
field: 'caseId',
title: '案件ID',
width: 230,
showOverflow: 'tooltip',
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
},
{
field: 'product',
......
......@@ -474,7 +474,21 @@
{
field: 'caseId',
title: '案件ID',
width: 120,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
width: 230,
showOverflow: 'tooltip',
},
{
......
......@@ -318,9 +318,23 @@
{ type: 'checkbox', title: '', width: '40px',fixed: 'left' },
{
field: 'loan.caseId',
width: 100,
width: 230,
showOverflow: 'tooltip',
title: '案件ID',
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.loan.caseId}
</div>
<Tag row={row.loan} />
</>
);
},
}
},
{
field: 'loan.product',
......
......@@ -409,6 +409,21 @@
{
field: 'caseId',
title: '案件ID',
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
showOverflow: 'tooltip',
},
{
......
......@@ -169,11 +169,11 @@
title: '案件ID',
showOverflow: 'tooltip',
search: { el: 'input', labelWidth: 105 },
width: 190,
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div className="flex">
<VxeTooltip
content={row.caseId}
>
......@@ -184,7 +184,8 @@
onClick={() => onCellClick(row)}
></VxeTextEllipsis>
</VxeTooltip>
</>
<Tag row={row} />
</div>
);
},
},
......
......@@ -265,11 +265,11 @@
title: '案件ID',
showOverflow: 'tooltip',
search: { el: 'input', labelWidth: 105 },
width: 190,
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div className="flex">
<VxeTooltip
content={row.caseId}
>
......@@ -280,7 +280,8 @@
onClick={() => onCellClick(row)}
></VxeTextEllipsis>
</VxeTooltip>
</>
<Tag row={row} />
</div>
);
},
},
......
......@@ -406,6 +406,21 @@
{
field: 'caseId',
title: '案件ID',
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
showOverflow: 'tooltip',
},
{
......
......@@ -242,8 +242,22 @@
{ type: 'checkbox', title: '', width: '40px',fixed: 'left' },
{
field: 'loan.caseId',
width: 100,
showOverflow: 'tooltip',
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.loan.caseId}
</div>
<Tag row={row.loan} />
</>
);
},
},
title: '案件ID',
},
{
......
......@@ -329,6 +329,21 @@
columns: [
{
field: 'caseId',
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
title: '案件ID',
showOverflow: 'tooltip',
},
......
......@@ -383,6 +383,21 @@
{
field: 'caseId',
title: '案件ID',
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
showOverflow: 'tooltip',
},
{
......@@ -396,6 +411,17 @@
},
},
},
{
field: 'canStages',
title: '分期是否可修改',
showOverflow: 'tooltip',
width: 100,
slots: {
default: ({ row }) => {
return <ElTag>{row.canStages == 'Y' ? '是' : '否'}</ElTag>;
},
},
},
{
field: 'product',
title: '产品',
......
<template>
<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 }}
<Tag :row="detail" />
</div>
<div class="h-full w-full flex flex-col">
<div class="mt-2">
......@@ -928,6 +929,21 @@
{ type: 'expand', width: 80, slots: { content: 'expand_content' } },
{
field: 'caseId',
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
title: '案件ID',
showOverflow: 'tooltip',
},
......
......@@ -107,17 +107,18 @@
title: '案件ID',
showOverflow: 'tooltip',
search: { el: 'input', labelWidth: 90 },
width: 190,
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
onClick={() => onCellClick(row)}
className=" text-blue-400 cursor-pointer"
className=" text-blue-400 cursor-pointer inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
......
......@@ -264,13 +264,14 @@
title: '案件ID',
showOverflow: 'tooltip',
search: { el: 'input', labelWidth: 105 },
width: 190,
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div className="flex">
<VxeTooltip
content={row.caseId}
className="inline-block"
>
<VxeTextEllipsis
content={row.caseId}
......@@ -279,7 +280,8 @@
onClick={() => onCellClick(row)}
></VxeTextEllipsis>
</VxeTooltip>
</>
<Tag row={row} />
</div>
);
},
},
......
<template>
<div class="table-box">
<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="xuhao">1</div>
上传文件
......@@ -35,7 +35,7 @@
</div>
</div>
</div>
<div style="width: 30%">
<div style="width: 29%">
<div class="mb-1 text-center step">
<div class="xuhao">2</div>
检查数据
......@@ -73,11 +73,19 @@
<div>
<el-form ref="formRef" inline :model="form" :rules="rules" label-width="120px">
<el-row :gutter="10">
<el-col :span="24">
<el-col :span="11">
<el-form-item class="w-full" label="导入批次:" prop="code" >
<el-input v-model="form.code" placeholder="请输入" style="width: 100%" />
</el-form-item>
</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-form-item class="w-full" label="分期最大期数:" prop="maxStagesNum" >
<el-input v-model.number="form.maxStagesNum" placeholder="请输入" style="width: 100%" />
......@@ -240,6 +248,17 @@
},
},
},
{
field: 'canStages',
title: '分期是否可修改',
showOverflow: 'tooltip',
width: 110,
slots: {
default: ({ row }) => {
return <ElTag>{row.canStages == 'Y' ? '是' : '否'}</ElTag>;
},
},
},
{
field: 'code',
title: '资产类型',
......@@ -323,6 +342,7 @@
path: '',
code: '',
maxStagesNum: '',
canStages: 'Y',
minAmount: '',
mergerCase: 'Y',
discount: '',
......@@ -407,6 +427,7 @@
file: form.path,
code: form.code,
maxStagesNum: form.maxStagesNum,
canStages: form.canStages,
minAmount: form.minAmount,
mergerCase: form.mergerCase,
discount: form.discount,
......@@ -422,7 +443,8 @@
form['code'] = '';
form['maxStagesNum'] = '';
form['minAmount'] = '';
form['mergerCase'] = 'N';
form['mergerCase'] = 'Y';
form['canStages'] = 'Y';
form['discount'] = '';
checkObj.submitloading = false
});
......
<template>
<div class="table-box">
<div class="table-inner">
<ProTable :config="config" ref="caseLRef" :api="getRepairRecord">
<ProTable :config="config" ref="caseLRef" :paramCallback="paramCallback" :api="getRepairRecord">
<template #left_buttons>
<div class="flex items-center justify-center h-8">
<el-button
......@@ -48,6 +48,8 @@
import { Upload } from '@element-plus/icons-vue';
import { ElMessage } from 'element-plus';
import { getTenantPage } from '@/api/tenant';
import citydata from '../../../assets/citydata';
import { getPlatformPage } from '@/api/platform';
const uploadRef = ref();
......@@ -65,6 +67,34 @@
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({
// 是否禁用上传
isUploading: false,
......@@ -127,6 +157,86 @@
// 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',
title: '借款人身份证',
......
......@@ -416,6 +416,21 @@
{
field: 'caseId',
title: '案件ID',
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
className="inline-block"
>
{row.caseId}
</div>
<Tag row={row} />
</>
);
},
},
showOverflow: 'tooltip',
},
{
......
......@@ -177,17 +177,18 @@
title: '案件ID',
search: { el: 'input', labelWidth: 90 },
showOverflow: 'tooltip',
width: 190,
width: 230,
slots: {
default: ({ row, rowIndex }) => {
return (
<>
<div
onClick={() => onCellClick(row)}
className=" text-blue-400 underline cursor-pointer"
className=" text-blue-400 underline cursor-pointer inline-block"
>
{row.caseId}
</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