Commit 2647b21f authored by 沈翠玲's avatar 沈翠玲

风控审核

parent 524a0269
......@@ -46,4 +46,8 @@ export const getcustomerReportPage = (params) => {
// 客户报告风控审核列表
export const getlegalPage = (params) => {
return request.get('/customerReport/legalPage', params);
};
// 审核风控
export const savecustomerReport = (data) => {
return request.post('/customerReport/save', data);
};
\ No newline at end of file
This diff is collapsed.
......@@ -11,7 +11,7 @@ import echarts, { ECOption } from "@/components/ECharts/config";
import ECharts from "@/components/ECharts/index.vue";
import mapJson from "../assets/china.json";
// echarts.registerMap("china", mapJson as Parameters<typeof echarts.registerMap>[1]);
echarts.registerMap("china", mapJson as Parameters<typeof echarts.registerMap>[1]);
// var geoCoordMap = {
// 台湾: [121.5135, 25.0308],
......@@ -352,12 +352,15 @@ const option: ECOption = {
bottom: 40,
showLabel: !0,
text: ["高", "低"],
textStyle: {
color: '#fff'
},
pieces: [{
gt: 200,
label: "1 - 9 人",
color: "#8616fe"
}, {
gt: 100,
gt: 0,
lt: 200,
label: "疑似",
color: "#6b1dfd"
......@@ -369,7 +372,7 @@ const option: ECOption = {
},
geo: {
map: 'china',
show: true,
show: false,
roam: false,
label: {
emphasis: {
......@@ -391,41 +394,32 @@ const option: ECOption = {
type: "map",
map: 'china',
aspectScale: 0.75,
top: 100,
zoom:1.3,
label: {
normal: {
formatter: function(para) {
return '{name|' + para.name + '}'
},
rich: {
cnNum: {
fontSize: 11,
color: '#333333',
align: 'center',
},
name: {
fontSize: 11,
color: '#333333',
align: 'center',
lineHeight: 20,
},
},
//formatter: '{b}',
color: '#333333',
show: true
show: false,
fontSize: "14",
color: "rgba(0,0,0,0.7)"
},
emphasis: {
show: true,
fontSize: "14",
color: "rgba(0,0,0,0.7)"
}
},
itemStyle: {
normal: {
areaColor: '#D9EEFF',
borderColor: '#fff',
borderWidth: 1,
areaColor: 'rgba(255,255,255,0.1)',
borderWidth: 2,
//shadowColor: 'rgba(0, 0, 0, 0.2)',
borderColor: "rgba(255,255,255,0.3)"
},
emphasis: {
areaColor: '#FFAE00',
areaColor: "#29f5fa",
// shadowOffsetX: 0,
// shadowOffsetY: 0,
// borderWidth: 0
}
},
data: mapData
......
......@@ -161,7 +161,7 @@
import { useDict } from '@/hooks/useDict';
import { useRoute } from 'vue-router';
import { useRouter } from 'vue-router';
import { getByIdcustomerReport } from '@/api/customer';
import { getByIdcustomerReport, savecustomerReport } from '@/api/customer';
import { ref, reactive, onBeforeMount, computed } from 'vue';
const { LoanStatus, Marriage, RiskType } = useDict("LoanStatus", "Marriage", "RiskType");
const form = ref({
......@@ -184,15 +184,7 @@ const roleType = computed(() => {
return 'legal'
}
});
const submit = (type) => {
tabStore.removeTabs(route.fullPath).then(res => {
router.push({
path: '/infoGather/dangerReport'
});
});
}
const cancel = () => {
console.log('roleType', roleType)
if (roleType.value === 'view') {
tabStore.removeTabs(route.fullPath).then(res => {
router.push({
......@@ -213,6 +205,20 @@ const cancel = () => {
});
}
}
const submit = (type) => {
const param = JSON.parse(JSON.stringify({...form.value}))
if (roleType.value === 'risk') {
param['riskControlStatus'] = type
} else {
param['legalAffairStatus'] = type
}
savecustomerReport(param).then(res => {
if(res.success) {
cancel()
}
})
}
const query = async (type) => {
getByIdcustomerReport(route.query.id).then(res => {
if(res.success) {
......
......@@ -36,18 +36,20 @@
const route = useRoute();
const proTable = ref(null);
const paramObj = ref();
const selectdList = ref([]);
const onCheckboxChange = (row) => {
selectdList.value = row.records;
};
const router = useRouter();
const func = () => {
if (route.fullPath.includes('infoGather/dangerReport')) {
return getcustomerReportPage
return getcustomerReportPage(paramObj.value)
} else if (route.fullPath.includes('/business-approval/riskManager')) {
return getriskPage
return getriskPage(paramObj.value)
} else if (route.fullPath.includes('/business-approval/legalManager')) {
return getlegalPage
return getlegalPage(paramObj.value)
}
}
const activeName = ref('pending');
......@@ -58,6 +60,7 @@
if (obj['createTime'][1]) obj['createTimeEnd'] = obj['createTime'][1];
delete obj['createTime'];
}
paramObj.value = obj
return obj;
};
const onCheckboxAll = (flag) => {
......@@ -74,7 +77,6 @@
});
};
const onCellClick = ({ row, rowIndex }) => {
if (route.fullPath.includes('infoGather/dangerReport')) {
router.push({
name: 'dangerReportDetail',
......@@ -97,8 +99,9 @@
onCheckboxAll: onCheckboxAll,
onCellClick: onCellClick,
columns: [
{ field: 'customer.name', title: '客户名称', search: { labelWidth: 85, el: 'input' } },
{
field: 'createTime',
field: 'customer.createTime',
title: '创建日期',
search: {
el: 'date-picker',
......@@ -107,19 +110,63 @@
},
},
{
field: 'createBy',
field: 'customer.inputUserName',
title: '创建人',
search: { el: 'input',labelWidth: 85, props: { clearable: true } },
},
{ field: 'name', title: '客户名称', search: { labelWidth: 85, el: 'input' } },
{ field: 'name', title: '身份证号', search: { labelWidth: 85, el: 'input' } },
{ field: 'name', title: '手机', search: { labelWidth: 85, el: 'input' } },
{ field: 'name', title: '电子邮箱', search: { labelWidth: 85, el: 'input' } },
{ field: 'maxStagesNum', title: '信用卡数量', search: { labelWidth: 85, el: 'input' } },
{ field: 'maxStagesNum', title: '网贷&信用贷数量', search: { labelWidth: 85, el: 'input' } },
{ field: 'remark', title: '欠款总额', search: { labelWidth: 85, el: 'input' } },
{ field: 'remark', title: '备注', search: { labelWidth: 85, el: 'input' } },
{ field: 'remark', title: '风控审核状态'},
{ field: 'customer.idCard', title: '身份证号', search: { labelWidth: 85, el: 'input' } },
{ field: 'customer.phone', title: '手机', search: { labelWidth: 85, el: 'input' } },
{ field: 'customer.email', title: '电子邮箱', search: { labelWidth: 85, el: 'input' } },
{ field: 'maxStagesNum', title: '信用卡数量', slots: {
default: ({ row, rowIndex }) => {
return (
<>
{row.customer?.creditCard.length}
</>
);
},
}, },
{ field: 'maxStagesNum', title: '网贷&信用贷数量', slots: {
default: ({ row, rowIndex }) => {
return (
<>
{row.customer?.lending.length}
</>
);
},
}, },
{ field: 'remark', title: '欠款总额', slots: {
default: ({ row, rowIndex }) => {
return (
<>
{[...row.customer?.creditCard, ...row.customer?.lending].reduce((pre, cur) => pre + Number(cur.debt),0)}
</>
);
},
}, },
{ field: 'legalAffairRemark', title: '备注', search: { labelWidth: 85, el: 'input' } },
{ field: 'riskControlStatus', slots: {
default: ({ row }) => {
return (
<>
{row.riskControlStatus
? FlowStatus.value?.find((v) => v.value === row.riskControlStatus)?.label
: ''}
</>
);
},
},title: '风控审核状态'},
{ field: 'legalAffairStatus', slots: {
default: ({ row }) => {
return (
<>
{row.legalAffairStatus
? FlowStatus.value?.find((v) => v.value === row.legalAffairStatus)?.label
: ''}
</>
);
},
},title: '法务审核状态'},
],
});
......
......@@ -11,6 +11,7 @@
>
<el-form ref="formRef" :model="form" :rules="rules" inline label-width="110px">
<el-row :gutter="10">
<el-col :span="24">
<el-form-item class="w-full" label="调解中心名称" prop="name">
<el-input v-model="form.name" placeholder="请输入调解中心名称" />
......@@ -21,6 +22,18 @@
<el-input v-model="form.code" placeholder="调解中心编码" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="省份" prop="name">
<el-select v-model="form.province" placeholder="请选择">
<el-option
v-for="item in citydata"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="负责人" prop="adminUser">
<el-input v-model="form.adminUser" placeholder="负责人" />
......@@ -53,6 +66,7 @@
import { ref, computed } from 'vue';
import { saveTenant } from '@/api/tenant';
import { ElMessage } from 'element-plus';
import citydata from '../../../../assets/citydata';
const emits = defineEmits(['success']);
const currentTenant = ref(null);
......@@ -66,6 +80,7 @@
name: '',
code: '',
adminUser: '',
province: '',
phone: '',
status: 'enable',
});
......@@ -109,6 +124,7 @@
const onHide = () => {
form.value = {
name: '',
province: '',
code: '',
adminUser: '',
phone: '',
......
......@@ -19,6 +19,7 @@
import TenantFormModal from './components/TenantFormModal.vue';
import AllocationUserModal from './components/AllocationUserModal.vue';
import { ElMessageBox, ElMessage, ElButton, ElTag } from 'element-plus';
import citydata from '../../../assets/citydata';
const proTable = ref(null);
const tenatModalRef = ref(null);
......@@ -28,6 +29,15 @@
{ type: 'checkbox', width: 60, fixed: 'left' },
{ field: 'name', title: '调解中心名称', search: { el: 'input' } },
{ field: 'code', title: '调解中心编码', search: { el: 'input' } },
{
field: 'province',
enum: citydata,
showOverflow: 'tooltip',
title: '省份',
fieldNames: { label: 'label', value: 'value' },
showOverflow: 'tooltip',
// search: { el: 'select', props: { clearable: true } },
},
{ field: 'adminUser', title: '负责人' },
{ field: 'phone', title: '负责人手机' },
{
......
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