Commit bd0ad21c authored by caimeng's avatar caimeng

删除不相关的接口

parent d5688ade
BASE_URL=''
VUE_APP_API_PATH=http://47.99.245.36:8785
VUE_APP_API_PATH=http://114.55.246.69:8785
NODE_ENV=development
BASE_URL=''
VUE_APP_API_PATH=http://47.99.245.36:8785
VUE_APP_API_PATH=http://114.55.246.69:8785
NODE_ENV=production
......@@ -11,6 +11,9 @@
<el-descriptions-item v-else label-class-name='labelCls' label='授信状态'>{{ baseInfo.creditStatusStr }}
</el-descriptions-item>
<el-descriptions-item v-if='page' label-class-name='labelCls' label='申请金额'>{{ baseInfo.applyAmount }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='客户姓名'>{{ baseInfo.realName }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='手机号码'>{{ baseInfo.mobile }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='身份证号'>{{ baseInfo.idCard }}</el-descriptions-item>
......
......@@ -16,7 +16,7 @@ const setting = {
baseURL:process.env.NODE_ENV === 'development' ? 'api' : '',
//baseURL:process.env.NODE_ENV === 'development' ? 'mock-server' : '',
//标题 (包括初次加载雪花屏的标题 页面的标题 浏览器的标题)
title: '百灵美选管理后台',
title: '飞逸管理后台',
//标题分隔符
titleSeparator: ' - ',
//标题是否反转 如果为false:"page - title",如果为ture:"title - page"
......
......@@ -5,7 +5,7 @@ const theme = {
//布局种类 horizontal vertical gallery comprehensive common
layout: 'vertical',
//主题名称 default ocean green glory white
themeName: 'white',
themeName: 'green',
//是否固定头部
fixedHeader: true,
//是否显示顶部进度条
......
......@@ -211,54 +211,6 @@ export const asyncRoutes = [
noKeepAlive: true,
title: '我的订单'
}
},
// 小商户
{
path: 'pre',
name: 'LocalPreList',
component: () => import('@/views/approval/localPreList'),
meta: {
noKeepAlive: true,
title: '预授信列表(小商户)'
}
},
{
path: 'first',
name: 'LocalFirstList',
component: () => import('@/views/approval/localFirstList'),
meta: {
noKeepAlive: true,
title: '初审授信(小商户)'
}
},
{
path: 'second',
name: 'LocalSecondList',
component: () => import('@/views/approval/localSecondList'),
meta: {
noKeepAlive: true,
title: '复审授信(小商户)'
}
},
{
path: 'localPreDetail',
name: 'LocalPreDetail',
component: () => import('@/views/approval/localPreDetail'),
hidden: true,
meta: {
noKeepAlive: true,
title: '预授信详情'
}
},
{
path: 'localDetail',
name: 'LocalDetail',
component: () => import('@/views/approval/localDetail'),
hidden: true,
meta: {
noKeepAlive: true,
title: '授信详情'
}
}
]
},
......@@ -301,35 +253,6 @@ export const asyncRoutes = [
noKeepAlive: true,
title: '放款确认'
}
},
// 小商户相关
{
path: 'localLoanDetail',
name: 'LocalLoanDetail',
component: () => import('@/views/loan/localDetail'),
meta: {
noKeepAlive: true,
title: '稽核详情(小商户)'
},
hidden: true
},
{
path: 'localLoanAudit',
name: 'LocalLoanAudit',
component: () => import('@/views/loan/localAudit'),
meta: {
noKeepAlive: true,
title: '稽核审批(小商户)'
}
},
{
path: 'localLoanList',
name: 'LocalLoanList',
component: () => import('@/views/loan/localList'),
meta: {
noKeepAlive: true,
title: '放款确认(小商户)'
}
}
]
},
......@@ -381,104 +304,7 @@ export const asyncRoutes = [
]
},
// 小商户相关
{
path: '/client',
name: 'client',
component: Layout,
redirect: '/client/list',
alwaysShow: true,
meta: {
noKeepAlive: true,
title: '客户管理',
remixIcon: 'home-4-line'
},
children: [
{
path: 'list',
name: 'ClientList',
component: () => import('@/views/customer/clientList'),
meta: {
noKeepAlive: true,
title: '客户列表(小商户)'
}
},
{
path: 'mine',
name: 'ClientMine',
component: () => import('@/views/customer/clientMine'),
meta: {
noKeepAlive: true,
title: '我的客户(小商户)'
}
},
{
path: 'detail',
name: 'ClientDetail',
component: () => import('@/views/customer/clientDetail'),
hidden: true,
meta: {
noKeepAlive: true,
title: '客户详情'
}
}
]
},
{
path: '/local',
name: 'local',
component: Layout,
redirect: '/local/list',
alwaysShow: true,
meta: {
noKeepAlive: true,
title: '本地小贷',
remixIcon: 'home-4-line'
},
children: [
{
path: 'list',
name: 'merchantList',
component: () => import('@/views/local/list'),
meta: {
noKeepAlive: true,
title: '人工审核'
}
},
{
path: 'detail',
name: 'merchantDetail',
component: () => import('@/views/local/detail'),
hidden: true,
meta: {
noKeepAlive: true,
title: '人审详情',
tagHidden: true
}
},
{
path: 'channel',
name: 'Channel',
component: () => import('@/views/customer/channel'),
meta: {
noKeepAlive: true,
title: '渠道流量'
}
},
{
path: 'credit_detail',
name: 'CreditDetailXinHu',
component: () => import('@/views/customer/detail'),
hidden: true,
meta: {
noKeepAlive: true,
title: '授信详情',
// tagHidden: true
}
}
]
},
{
path: '/customer',
name: 'customer',
......@@ -557,432 +383,6 @@ export const asyncRoutes = [
}
]
},
{
path: '/vab',
name: 'Vab',
component: Layout,
redirect: '/vab/icon/remixIcon',
alwaysShow: true,
hidden: true,
meta: {
title: '组件参考',
remixIcon: 'code-box-line'
},
children: [
{
path: 'roles',
name: 'Role',
component: () => import('@/views/vab/roles'),
meta: {
title: '角色权限控制',
remixIcon: 'user-3-line',
badge: 'New'
}
},
{
path: 'icon',
name: 'Icon',
component: () => import('@/views/vab/icon'),
redirect: '/vab/icon/remixIcon',
meta: {
title: '图标',
remixIcon: 'remixicon-line'
},
children: [
{
path: 'remixIcon',
name: 'RemixIcon',
component: () => import('@/views/vab/icon/remixIcon'),
meta: {
title: '小清新图标'
}
},
{
path: 'colorfulIcon',
name: 'ColorfulIcon',
component: () => import('@/views/vab/icon/colorfulIcon'),
meta: {
title: '多彩图标'
}
},
{
path: 'iconSelector',
name: 'IconSelector',
component: () => import('@/views/vab/icon/iconSelector'),
meta: {
title: '图标选择器'
}
}
]
},
{
path: 'table',
name: 'Table',
component: () => import('@/views/vab/table'),
redirect: '/vab/table/comprehensiveTable',
meta: {
title: '表格',
//非editor角色的用户可见
roles: {
role: ['editor'],
mode: 'except'
},
remixIcon: 'table-2'
},
children: [
{
path: 'comprehensiveTable',
name: 'ComprehensiveTable',
component: () => import('@/views/vab/table/comprehensiveTable'),
meta: {
title: '综合表格'
}
},
{
path: 'detail',
name: 'Detail',
component: () => import('@/views/vab/table/detail'),
hidden: true,
meta: {
title: '详情页',
activeMenu: '/vab/table/comprehensiveTable'
}
},
{
path: 'inlineEditTable',
name: 'InlineEditTable',
component: () => import('@/views/vab/table/inlineEditTable'),
meta: {
title: '行内编辑表格',
noKeepAlive: true
}
},
{
path: 'customTable',
name: 'CustomTable',
component: () => import('@/views/vab/table/customTable'),
meta: {
title: '自定义表格',
badge: 'New'
}
}
]
},
{
path: 'form',
component: () => import('@/views/vab/form'),
name: 'Form',
meta: {
title: '表单',
roles: ['admin'],
remixIcon: 'file-list-2-line'
},
children: [
{
path: 'comprehensiveForm',
name: 'ComprehensiveForm',
component: () => import('@/views/vab/form/comprehensiveForm'),
meta: {
title: '综合表单'
}
},
{
path: 'stepForm',
name: 'StepForm',
component: () => import('@/views/vab/form/stepForm'),
meta: {
title: '分步表单'
}
}
]
},
{
path: 'dynamicTitle',
component: () => import('@/views/vab/dynamicTitle'),
name: 'DynamicTitle',
meta: {
title: '动态标题',
roles: ['admin'],
remixIcon: 'function-line'
}
},
{
path: 'dynamicSegment',
component: () => import('@/views/vab/dynamicSegment'),
redirect: '/vab/dynamicSegment/test',
name: 'DynamicSegment',
meta: {
title: '动态路径参数',
roles: ['admin'],
remixIcon: 'arrow-left-right-line'
},
children: [
{
path: 'test',
name: 'Test',
component: () => import('@/views/vab/dynamicSegment/test'),
meta: {
title: '动态路径参数',
roles: ['admin'],
remixIcon: 'arrow-left-right-line'
}
},
{
path: 'test1/:id',
name: 'Test1',
component: () => import('@/views/vab/dynamicSegment/test1'),
meta: { title: '动态路径参数-test1' },
hidden: true
},
{
path: 'test2',
name: 'Test2',
component: () => import('@/views/vab/dynamicSegment/test2'),
meta: { title: '动态路径参数-test2' },
hidden: true
}
]
},
{
path: 'drag',
name: 'Drag',
component: () => import('@/views/vab/drag'),
redirect: '/vab/drag/dialogDrag',
meta: {
title: '拖拽',
roles: ['admin'],
remixIcon: 'drag-drop-line'
},
children: [
{
path: 'dialogDrag',
name: 'DialogDrag',
component: () => import('@/views/vab/drag/dialogDrag'),
meta: {
title: '弹窗拖拽'
}
},
{
path: 'cardDrag',
name: 'CardDrag',
component: () => import('@/views/vab/drag/cardDrag'),
meta: {
title: '卡片拖拽'
}
},
{
path: 'flowsheetDrag',
name: 'FlowsheetDrag',
component: () => import('@/views/vab/drag/flowsheetDrag'),
meta: {
title: '流程图拖拽'
}
}
]
},
{
path: 'contextmenu',
name: 'Contextmenu',
component: () => import('@/views/vab/contextmenu'),
meta: {
title: '右键菜单',
roles: ['admin'],
remixIcon: 'menu-2-fill',
badge: 'New'
}
},
{
path: 'card',
name: 'Card',
component: () => import('@/views/vab/card'),
meta: {
title: '卡片',
roles: ['admin'],
remixIcon: 'inbox-line',
badge: 'New'
}
},
{
path: 'editor',
name: 'Editor',
component: () => import('@/views/vab/editor'),
meta: {
title: '编辑器',
roles: ['admin'],
remixIcon: 'edit-2-line'
},
children: [
{
path: 'richTextEditor',
name: 'RichTextEditor',
component: () => import('@/views/vab/editor/richTextEditor'),
meta: {
title: '富文本编辑器',
roles: ['admin']
}
},
{
path: 'markdownEditor',
name: 'MarkdownEditor',
component: () => import('@/views/vab/editor/markdownEditor'),
meta: {
title: 'Markdown编辑器',
roles: ['admin']
}
}
]
},
{
path: 'menu1',
name: 'Menu1',
component: () => import('@/views/vab/nested/menu1'),
redirect: '/vab/menu1/menu1-1/menu1-1-1',
alwaysShow: true,
meta: {
title: '嵌套路由1',
roles: ['admin'],
remixIcon: 'route-line'
},
children: [
{
path: 'menu1-1',
name: 'Menu1-1',
alwaysShow: true,
component: () => import('@/views/vab/nested/menu1/menu1-1'),
redirect: '/vab/menu1/menu1-1/menu1-1-1',
meta: {
title: '嵌套路由1-1'
},
children: [
{
path: 'menu1-1-1',
name: 'Menu1-1-1',
meta: {
title: '嵌套路由1-1-1'
},
component: () =>
import('@/views/vab/nested/menu1/menu1-1/menu1-1-1')
}
]
}
]
},
{
path: 'loading',
name: 'Loading',
component: () => import('@/views/vab/loading'),
meta: {
title: '加载',
roles: ['admin'],
remixIcon: 'loader-line'
}
},
{
path: 'player',
name: 'Player',
component: () => import('@/views/vab/player'),
meta: {
title: '视频播放器',
roles: ['admin'],
remixIcon: 'video-line'
}
},
{
path: 'upload',
name: 'Upload',
component: () => import('@/views/vab/upload'),
meta: {
title: '上传',
roles: ['admin'],
remixIcon: 'chat-upload-line'
}
},
{
path: 'log',
name: 'Log',
component: () => import('@/views/vab/errorLog'),
meta: {
title: '错误日志模拟',
roles: ['admin'],
remixIcon: 'error-warning-line'
}
},
{
path: 'cssfx',
name: 'Cssfx',
component: () => import('@/views/vab/cssfx'),
meta: {
title: 'Css动画',
roles: ['admin'],
remixIcon: 'css3-line',
badge: 'New'
}
},
{
path: 'social',
name: 'Social',
component: () => import('@/views/vab/social'),
meta: {
title: '第三方登录',
roles: ['admin'],
remixIcon: 'github-fill',
badge: 'New'
}
},
{
path:
'https://github.com/chuzhixin/vue-admin-beautiful?utm_source=gold_browser_extension',
name: 'ExternalLink',
meta: {
title: '外链',
target: '_blank',
//等价roles: ["admin", "editor"],
roles: {
role: ['admin', 'editor'],
mode: 'oneOf'
},
remixIcon: 'external-link-line'
}
},
{
path: 'excel',
name: 'Excel',
component: () => import('@/views/vab/excel'),
redirect: '/vab/excel/exportExcel',
meta: {
title: 'Excel',
roles: ['admin'],
remixIcon: 'file-excel-2-line'
},
children: [
{
path: 'exportExcel',
name: 'ExportExcel',
component: () => import('@/views/vab/excel/exportExcel'),
meta: {
title: '导出Excel'
}
},
{
path: 'exportSelectedExcel',
name: 'SelectExcel',
component: () => import('@/views/vab/excel/exportSelectExcel'),
meta: {
title: '导出选中行Excel'
}
},
{
path: 'exportMergeHeaderExcel',
name: 'MergeHeaderExcel',
component: () => import('@/views/vab/excel/exportMergeHeaderExcel'),
meta: {
title: '导出合并Excel'
}
}
]
}
]
},
{
path: '*',
redirect: '/404',
......
<!-- 预授信申述 -->
<template>
<el-dialog
:visible.sync='dialogVisible'
:before-close='handleClose'
:destroy-on-close='true'
width='38%'
title='捞回'>
<div class='page'>
<!--搜索-->
<el-form ref='dForm' label-suffix=':' label-width='90px' :rules='rules' :model='form' class='form-inline'>
<el-form-item label='捞回结果'>
<el-radio v-model="form.radio" label="1">预授信通过</el-radio>
</el-form-item>
<el-form-item prop='memo' label='捞回备注'>
<el-input v-model='form.memo' type='textarea' clearable placeholder='请输入备注'/>
</el-form-item>
</el-form>
</div>
<span slot='footer' class='dialog-footer'>
<el-button type='primary' @click='onSubmit("dForm")'>确 定</el-button>
<el-button @click='handleClose'>取 消</el-button>
</span>
</el-dialog>
</template>
<script>
import API from '@/server/api'
import _ from 'lodash'
import {mapGetters} from 'vuex'
export default {
name: 'PrePlead',
props: {
dialogVisible: {
type: Boolean,
require: true
},
//eslint-disable-next-line vue/require-default-prop
item: {
type: Object,
require: true
}
},
data() {
return {
rules: {
memo: [
{
required: true,
trigger: 'blur',
message: '请输入捞回备注'
}
]
},
form: {
radio:'1',
memo: '',
preCreditNo: ''
}
}
},
created() {
console.log(this.item, 'nash ')
if (this.item !== null) {
this.form.preCreditNo = this.item.creditNo
console.log(this.form,'沃日')
}
},
methods: {
onSubmit(formName) {
console.log(this.item, this.form, '数据呢');
this.$refs[formName].validate(async (valid) => {
if (valid) {
this.$confirm('是否确认提交?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async (res) => {
const form = this.form;
const result = await API.LocalPreCreditRescue({...form})
if (result.success) {
this.$message({
type: 'success',
message: '捞回成功!'
})
this.$emit('handleClose')
this.$emit('callback')
}
}).catch((e) => {
console.log(e, '取消申述了')
})
}
})
},
handleClose() {
this.$emit('handleClose')
}
}
}
</script>
<style lang='scss' scoped>
.page-fence {
::v-deep {
i {
cursor: pointer;
}
}
box-sizing: border-box;
padding: 20px;
}
</style>
<style lang='scss'>
.custom-table-checkbox {
.el-checkbox {
display: block !important;
margin: 0 0 $base-padding/4 0;
}
}
.action-bar {
margin-bottom: 15px;
}
</style>
<!-- 预授信申述 -->
<template>
<div class='page'>
<!--搜索-->
<el-form ref='dForm' label-suffix=':' label-width='90px' :rules='rules' :model='form' class='form-inline'>
<el-row>
<el-col :span="12">
<el-form-item prop='state' label='审批意见'>
<template v-if='searchData!==null'>
<el-radio-group v-model='form.state'>
<el-radio v-for='(item,index) in searchData.approvalTypeResponses'
:key='index'
:label='item.approvalResult'>{{ item.approvalResultStr }}
</el-radio>
</el-radio-group>
</template>
</el-form-item>
<template v-if="form.state==='PASS'">
<el-form-item prop='limitList' label='期数(期)'>
<template v-if='searchData!==null'>
<el-select
v-model='form.limitList'
:popper-append-to-body='false'
style='width: 100%;'
clearable>
<el-option
v-for='(f,index) in searchData.loanLimitResponses'
:key='index'
:value='f.code'
:label='f.codeStr'>
</el-option>
</el-select>
</template>
</el-form-item>
<el-form-item prop='amount' label='额度(元)'>
<el-input v-model='form.amount' clearable placeholder='请输入'/>
</el-form-item>
<template v-if='searchData!==null'>
<el-form-item prop='capitalCode' label='选择资方'>
<el-select
v-model='form.capitalCode'
:popper-append-to-body='false'
style='width: 100%;'
clearable>
<el-option
v-for='(f,index) in searchData.loanSignResponses'
:key='index'
:value='f.code'
:label='f.codeStr'>
</el-option>
</el-select>
</el-form-item>
</template>
</template>
<el-form-item prop='memo' label='审批备注'>
<el-input v-model='form.memo' type='textarea' clearable placeholder='请输入'/>
</el-form-item>
<el-form-item>
<el-button type='primary' @click='onSubmit("dForm")'>确 定</el-button>
<el-button @click='handleClose'>取 消</el-button>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</template>
<script>
import API from '@/server/api'
import _ from 'lodash'
import {mapGetters} from 'vuex'
export default {
name: 'LocalPlead',
props: {
dialogVisible: {
type: Boolean,
require: true
},
//eslint-disable-next-line vue/require-default-prop
data: {
type: Object,
require: true
},
step: {
type: String,
require: false
}
},
data() {
return {
rules: {
amount: [
{
required: true,
trigger: 'blur',
message: '请输入审批额度'
}
],
limitList: [
{
required: true,
trigger: 'blur',
message: '请输入期数'
}
],
capitalCode: [
{
required: true,
trigger: 'change',
message: '请选择资方'
}
],
memo: [
{
required: true,
trigger: 'blur',
message: '请输入申述原因'
}
],
state: [
{
required: true,
trigger: 'change',
message: '请选择审批意见'
}
]
},
form: {
actionNo: '',
stepsNo: '',
amount: '',
capitalCode: '',
limitList: '',
memo: '',
state: '',
}
}
},
computed: {
...mapGetters(['searchData'])
},
created() {
if (this.data !== null) {
console.log(this.data, 'hh')
const {actionNo, stepsNo, manualAmount, manualNum, loanSign} = this.data;
this.form.actionNo = actionNo;
this.form.stepsNo = stepsNo;
this.form.amount = manualAmount
this.form.limitList = manualNum
this.form.capitalCode = loanSign
}
},
methods: {
onSubmit(formName) {
console.log(this.item, this.form, '数据呢');
this.$refs[formName].validate(async (valid) => {
if (valid) {
this.$confirm('是否确认提交?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async (res) => {
const form = this.form;
let result;
if (this.step === 'first') {
// 初审提交审批
result = await API.LocalFirstCreditSubmit({
...form
})
} else {
// 复审提交审批
result = await API.LocalSecondCreditSubmit({
...form
})
}
if (result.success) {
this.$message({
type: 'success',
message: '审批成功!'
})
this.$router.back();
// this.$emit('handleClose')
// this.$emit('callback')
}
}).catch((e) => {
console.log(e, '取消申述了')
})
}
})
},
handleClose() {
this.$router.back();
// this.$emit('handleClose')
}
}
}
</script>
<style lang='scss' scoped>
.page-fence {
::v-deep {
i {
cursor: pointer;
}
}
box-sizing: border-box;
padding: 20px;
}
</style>
<style lang='scss'>
.custom-table-checkbox {
.el-checkbox {
display: block !important;
margin: 0 0 $base-padding/4 0;
}
}
.action-bar {
margin-bottom: 15px;
}
</style>
<template>
<!-- v-if='detail!==null'-->
<div v-if="detail!==null " class='page'>
<template v-if="project">
<block-header title="基本信息"/>
<el-descriptions style='margin-bottom: 20px;' border size='small' :column='3'>
<el-descriptions-item label-class-name='labelCls' label='客户姓名'>{{ project.clientName }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='手机号码'>{{ project.mobile }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='身份证号'>{{ project.certNo }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='户籍地址'>{{ project.address }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='年龄'>{{ project.age }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='申请时间'>{{ project.loanTime }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='授信类型'>{{ project.type }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='授信状态'>
<span>{{ project.state }}</span>
<template v-if='project.back'>
<el-button @click='handlePlead' size='mini' style='margin-left: 10px' type='primary'>捞回</el-button>
</template>
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='学历'>{{ project.educationCode }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='婚姻状况'>{{ project.marriage }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='现居地址'>{{
project.liveDetailAddress
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='紧急联系人1'>
<span>{{ project.firstName }}</span>
<el-button @click='handleContact' size='mini' style='margin-left: 10px' type='text'>查看更多</el-button>
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='紧急联系人关系'>{{
project.firstRelation
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='紧急联系人电话'>{{
project.firstPhone
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='工作行业'>{{
project.workIndustry
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='公司全称'>{{
project.companyName
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='工作地址'>{{ project.companyAddressDetail }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='月收入'>{{
project.selfMonthIncome
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='申请金额'>{{ project.loanAmt }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='申请期数'>{{ project.loanLimit }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='贷款用途'>{{ project.loanUse }}</el-descriptions-item>
</el-descriptions>
</template>
<!--操作日志-->
<template v-if="clientNo">
<local-log :userId="userId" :clientNo="clientNo"/>
</template>
<template v-if="project">
<block-header title="项目情况"/>
<el-descriptions class="table" :column="3" size="small" border>
<el-descriptions-item label-class-name="labelCls" label="借款人">
<span>{{ project.clientName }}</span>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="申请金额">
<span>{{ project.loanAmt }}</span>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="借款期限">
<span>{{ project.loanLimit }}</span>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="借款利率">
<span>{{ project.loanRate }}</span>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="服务费率">
<span>{{ project.fuRate }}</span>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="还款方式">
<span>{{ project.backedWay }}</span>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="担保方式">
<span>{{ project.warrantWay }}</span>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="客户来源">
<span>{{ project.clientSource }}</span>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="是否续贷">
<span>{{ project.continuous }}</span>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="尽调人员">
<span>{{ project.personnel }}</span>
</el-descriptions-item>
</el-descriptions>
</template>
<!--家庭情况-->
<family :credit-no="creditNo" :client-no="clientNo" :view="true" :data="familyData"
@callback="handleCallback"></family>
<!--资产情况-->
<assets :credit-no="creditNo" :client-no="clientNo" :view="true" :data="assetsData"
@callback="handleCallback"></assets>
<!-- <block-header title="负债情况"/>-->
<!--银行借贷-->
<borrow :credit-no="creditNo" :client-no="clientNo" :view="true" :data="borrowData"
@callback="handleCallback"></borrow>
<!--信用卡-->
<credit-card :credit-no="creditNo" :client-no="clientNo" :view="true" :data="creditCardData"
@callback="handleCallback"></credit-card>
<!--担保-->
<warrant :credit-no="creditNo" :client-no="clientNo" :view="true" :data="warrantData"
@callback="handleCallback"></warrant>
<!--法律诉讼-->
<lawsuit :credit-no="creditNo" :client-no="clientNo" :view="true" :data="lawsuitData"
@callback="handleCallback"></lawsuit>
<!--负债表-->
<block-header title="资产负债表"/>
<el-form ref='form' label-suffix=':' label-width="160px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='yvFu' label='预付账款'>
<span>{{ debtData.yvFu }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='yingFu' label='应付账款'>
<span>{{ debtData.yingFu }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='yingShou' label='应收账款'>
<span>{{ debtData.yingShou }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='yvShou' label='预收账款'>
<span>{{ debtData.yvShou }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='amountCount' label='现金及银行存款合计'>
<span>{{ debtData.amountCount }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='shortLoan' label='短期贷款'>
<span>{{ debtData.shortLoan }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='cash' label='现金'>
<span>{{ debtData.cash }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='xinAmount' label='信用卡使用总额'>
<span>{{ debtData.xinAmount }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='yinAmount' label='银行存款'>
<span>{{ debtData.yinAmount }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='shangDi' label='商铺抵押'>
<span>{{ debtData.shangDi }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='cunHuo' label='存货'>
<span>{{ debtData.cunHuo }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='fangDi' label='住房抵押'>
<span>{{ debtData.fangDi }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='liuCount' label='流动资产合计'>
<span>{{ debtData.liuCount }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='cheDi' label='汽车抵押'>
<span>{{ debtData.cheDi }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='guCount' label='固定资产合计'>
<span>{{ debtData.guCount }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='shortCount' label='短期负债合计'>
<span>{{ debtData.shortCount }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='shangPu' label='商铺'>
<span>{{ debtData.shangPu }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='longLoan' label='长期贷款'>
<span>{{ debtData.longLoan }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='zhuFang' label='住房'>
<span>{{ debtData.zhuFang }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='longCount' label='长期负债合计'>
<span>{{ debtData.longCount }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='qiChe' label='汽车'>
<span>{{ debtData.qiChe }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='otherLoan' label='其他负债'>
<span>{{ debtData.otherLoan }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='guOther' label='其他'>
<span>{{ debtData.guOther }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='qiCount' label='其他经营资产合计'>
<span>{{ debtData.qiCount }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='jiQi' label='机器设备'>
<span>{{ debtData.jiQi }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='ziCount' label='总资产合计'>
<span>{{ debtData.ziCount }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='zaiCount' label='总负债合计'>
<span>{{ debtData.zaiCount }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
</el-col>
<el-col :span="12">
<el-form-item prop='quanCount' label='所有者权益合计'>
<span>{{ debtData.quanCount }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='liuRate' label='流动比率'>
<span>{{ debtData.liuRate }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='ziRate' label='资产负债比率'>
<span>{{ debtData.ziRate }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item prop='memo' label='资产负债表备注'>
<span>{{ debtData.memo }}</span>
</el-form-item>
</el-col>
</el-row>
</el-form>
<block-header title="总体情况文字说明"/>
<div style="margin-bottom: 20px;">
<span>{{ explain }}</span>
</div>
<template v-if="enterpriseResponse">
<block-header title="企业基本情况"/>
<el-descriptions class="table" :column="1" size="small" border>
<el-descriptions-item label-class-name="labelCls" label="企业历史沿革">
<span>{{ enterpriseResponse.history }}</span>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="具体经营情况">
<span>{{ enterpriseResponse.business }}</span>
</el-descriptions-item>
</el-descriptions>
</template>
<template v-if="riskConclusionResponse">
<block-header title="风险点以及最终审批结论"/>
<el-descriptions class="table" :column="1" size="small" border>
<el-descriptions-item label-class-name="labelClsLong" label="风险点以及贷后预防措施">
<span>{{ riskConclusionResponse.riskMeasures }}</span>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelClsLong" label="最终审批结果(时间利率还款方式)">
<span>{{ riskConclusionResponse.finalResult }}</span>
</el-descriptions-item>
</el-descriptions>
</template>
<block-header title="资料附件"/>
<el-row :gutter='20'>
<el-col v-for='(o, index) in temp' :key='index' :span='4'>
<el-card :body-style="{ padding: '10px' }">
<div @click="handleShow(o)" class='el-card-intro'>
<span>{{ o.title }}</span>
</div>
</el-card>
</el-col>
</el-row>
<!--上传-->
<template v-if="visible">
<data-upload
:view="true"
:credit-no="creditNo"
:visible="visible"
:item="item"
@handleClose='visible = false'></data-upload>
</template>
<!--第三方报告-->
<template v-if="project && project.preCreditNo">
<report :credit-no="project.preCreditNo"></report>
</template>
<template v-if="project && project.preCreditNo">
<local-pre-report :credit-no="project.preCreditNo"></local-pre-report>
</template>
<block-header title='审批'/>
<local-plead :data="project" :step="step" @callback="init"></local-plead>
<!--捞回-->
<template v-if='pleadVisible'>
<pre-plead
:dialog-visible='pleadVisible'
:item='pleadData'
:step="step==='first'?'first':'second'"
@handleClose='pleadVisible = false'
@callback='init'
/>
</template>
<!--通讯录-->
<template v-if='contactVisible'>
<contact
:CreditNo="creditNo"
:contact-visible='contactVisible'
@handleClose='contactVisible = false'
/>
</template>
</div>
</template>
<script>
import API from '@/server/api'
import {mapGetters} from 'vuex'
import Family from "@/views/customer/components/Family";
import Assets from "@/views/customer/components/Assets";
import Borrow from "@/views/customer/components/Borrow";
import CreditCard from "@/views/customer/components/CreditCard";
import Lawsuit from "@/views/customer/components/Lawsuit";
import Warrant from "@/views/customer/components/Warrant";
import DataUpload from "@/views/customer/components/DataUpload";
import LocalPlead from "./components/local-plead";
import Report from "@/components/report";
import PrePlead from './components/pre-plead'
import Contact from './components/contacts'
import LocalPreReport from '@/components/local-pre-report'
export default {
name: 'ClientDetail',
components: {
Family,
Assets,
Borrow,
CreditCard,
Lawsuit,
Warrant,
DataUpload,
LocalPlead,
Report,
PrePlead,
Contact,
LocalPreReport
},
data() {
return {
contactVisible: false,
preCreditNo: '',
clientNo: '',
creditNo: '',
step: '',
total: 1,
list: [],
params: {
clientNo: '',
userId: '',
current: 1,
size: 10
},
// 捞回数据
pleadVisible: false,
pleadData: null,
detail: null,
temp: [],
// 资料上传相关
item: null,
visible: false,
// 整体表单
form: null,
explain: '',
// 数据列表
familyData: [],
assetsData: [],
borrowData: [],
creditCardData: [],
warrantData: [],
lawsuitData: [],
enterprise: null,
riskConclusion: null,
debtData: {},
project: null,
userId: ''
}
},
async created() {
const {query} = this.$route
if (query && query.creditNo && query.step && query.clientNo && query.userId) {
this.creditNo = query.creditNo
this.clientNo = query.clientNo;
this.step = query.step;
this.userId = query.userId;
await this.init()
}
},
computed: {
...mapGetters(['searchData', 'user'])
},
methods: {
// 初始化详情信息
async init() {
try {
const creditNo = this.creditNo
const clientNo = this.clientNo
const result = await API.LocalClientDetail({
type: this.step === 'first' ? "TWO" : 'FOUR',
creditNo,
clientNo
})
this.detail = result.result;
const {
explain,
appendix,
debtUrlList,
riskConclusionResponse,
familyDackgroundResponse,
enterpriseResponse,
propertyCssResponse,
debtCssResponse,
creditCardResponse,
warrantResponse,
badInformationResponse,
projectSituationResponse
} = result.result;
// 家庭情况
this.familyData = familyDackgroundResponse;
// 资产情况
this.assetsData = propertyCssResponse;
this.project = projectSituationResponse;
this.borrowData = debtCssResponse; // 银行借贷
this.creditCardData = creditCardResponse; // 信用卡
this.warrantData = warrantResponse; // 担保
this.lawsuitData = badInformationResponse; // 诉讼
this.enterpriseResponse = enterpriseResponse; // 诉讼
this.riskConclusionResponse = riskConclusionResponse; // 诉讼
this.debtData = debtUrlList
this.explain = explain;
// 资料上传初始化
const temp = []
for (let [key, value] of Object.entries(appendix)) {
const o = {};
o.type = key;
o.data = value;
switch (key) {
case 'account':
o.title = '银行流水'
break;
case 'businessImgs':
o.title = '经营信息'
break;
case 'cardImgs':
o.title = '放款银行卡'
break;
case 'certImgs':
o.title = '身份信息'
break;
case 'investigations':
o.title = '征信报告'
break;
case 'otherImgs':
o.title = '其他资料凭证'
break;
case 'propertyImgs':
o.title = '资产凭证'
break;
}
temp.push(o)
}
this.temp = temp;
} catch (err) {
this.$message({
message: '初始化授信详情失败',
type: 'error'
})
}
},
// 家庭情况的回调喊上
async handleCallback() {
await this.init();
},
// 资料附件点击文件夹
handleShow(o) {
this.item = o;
this.visible = true;
},
// 捞回
handlePlead() {
this.pleadData = this.project
this.pleadData.creditNo = this.creditNo;
this.pleadVisible = true
},
// 保存信息
onSave(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
try {
const form = this.form;
console.log(form, '沃日')
const {projectSituationResponse, enterpriseResponse, riskConclusionResponse, explain} = form;
const data = {
creditNo: this.creditNo,
clientNo: this.clientNo,
projectSituationResponse,
enterpriseResponse,
riskConclusionResponse,
explain,
}
const res = await API.LocalClientProjectSave({...data})
console.log(res, '保存的结果')
if (res.success) {
this.$message({
type: 'success',
message: '保存成功'
})
await this.init()
}
} catch (err) {
}
}
})
}
,
// 提交信息
async onSubmit() {
try {
const {} = this.form;
const params = {actionNo, stepsNo}
const res = await API.LocalClientSubmit({...params})
if (res.success) {
this.$message({
type: 'success',
message: '提交成功'
})
const that = this;
setTimeout(function () {
that.$router.back()
}, 2000)
}
} catch (err) {
}
},
// 通讯录
async handleContact() {
this.contactVisible = true;
}
}
}
</script>
<style lang='scss' scoped>
.table {
margin-bottom: 20px;
}
.form-btn {
position: fixed;
bottom: 80px;
right: 0;
width: 100%;
height: 80px;
display: flex;
align-items: center;
justify-content: center;
}
</style>
<template>
<div class='page-fence'>
<!--搜索-->
<block-header title='搜索' />
<div class='search'>
<el-form label-suffix=':' :inline='true' ref='form' :model='queryForm' class='form-inline'>
<el-form-item prop='creditNo' label='授信编号'>
<el-input
v-model='queryForm.creditNo'
clearable
placeholder='请输入授信编号'
/>
</el-form-item>
<el-form-item prop='clientName' label='客户姓名'>
<el-input
v-model='queryForm.clientName'
clearable
placeholder='请输入客户姓名'
/>
</el-form-item>
<el-form-item prop='mobile' label='手机号码'>
<el-input
v-model='queryForm.mobile'
clearable
placeholder='请输入手机号码'
/>
</el-form-item>
<template v-if='searchData!==null'>
<el-form-item prop='creditType' label='初审授信结果'>
<el-select :popper-append-to-body='false' v-model='queryForm.creditType' clearable placeholder='请选择授信类型'>
<el-option
v-for='(item,index) in searchData.xshcreditStatusResponseList'
:key='index'
:label='item.creditStatusStr'
:value='item.creditStatus'></el-option>
</el-select>
</el-form-item>
</template>
<el-form-item v-if="false" prop='certNo' label='身份证号'>
<el-input v-model='queryForm.certNo' clearable placeholder='请输入' />
</el-form-item>
<el-form-item prop='time' label='申请时间'>
<el-date-picker
v-model='queryForm.time'
type='datetimerange'
:picker-options='pickerConfig'
:default-time="['00:00:00', '23:59:59']"
value-format='yyyy-MM-dd HH:mm:ss'
range-separator='至'
start-placeholder='开始时间'
end-placeholder='结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button icon='el-icon-search' type='primary' @click='onSearch'>搜 索</el-button>
<el-button icon='el-icon-delete' type='default' @click="onReset('form')">重置</el-button>
</el-form-item>
</el-form>
</div>
<!--操作菜单栏-->
<block-header title='初审授信列表' />
<!--表格-->
<el-table
ref='tableSort'
v-loading='listLoading'
border
size='small'
:data='list'
style='width: 100%'
>
<el-table-column
v-for='(item, index) in finallyColumns'
:key='index'
align='center'
:label='item.label'
:sortable='item.sortable'
:width='item.width'
:fixed='!!item.fixed'
:show-overflow-tooltip='!!item.overflow'
>
<template #default='{ row }'>
<span v-if='item.label==="授信额度"'>
{{ money(row[item.prop]) }}
</span>
<span v-else-if='item.label==="授信类型"'>
<el-tag v-if='row.creditTypeStr==="提额授信"' effect='plain' size='mini'>{{ row.creditTypeStr }}</el-tag>
<el-tag v-else size='mini'>{{ row.creditTypeStr }}</el-tag>
</span>
<span v-else-if='item.label==="授信状态"'>
<el-tag v-if='row.creditState==="CREATED"' size='mini'>{{ row.creditStatusStr }}</el-tag>
<el-tag v-if='row.creditState==="授信中"' type='warning' size='mini'>{{ row.creditStatusStr }}</el-tag>
<el-tag v-if='row.creditState==="授信通过"' type='success' size='mini'>{{ row.creditStatusStr }}</el-tag>
</span>
<span v-else>{{ row[item.prop] }}</span>
</template>
</el-table-column>
<template>
<el-table-column fixed='right' align='center' label='操作'>
<template #default='{ row }'>
<el-button size='mini' type='text' @click='handleView(row)'>详情</el-button>
</template>
</el-table-column>
</template>
</el-table>
<!--分页-->
<el-pagination
:current-page='queryForm.current'
layout='total,sizes, prev, pager, next'
:page-sizes='[10,20,30,40,50,100]'
:page-size='queryForm.size'
:total='total'
background
@size-change='handleSizeChange'
@current-change='handleCurrentChange'
/>
</div>
</template>
<script>
import _ from 'lodash'
import API from '@/server/api'
import Reassignment from './components/reassignment'
import { mapGetters } from 'vuex'
import Vue from 'vue'
export default {
name: 'LocalFirstList',
data() {
return {
checkList: ['授信编号', '客户姓名', '手机号码', '对应BD', '申请时间', '初审授信结果','授信额度' ],
columns: [
{
order: 1,
width:260,
label: '授信编号',
prop: 'creditNo'
},
{
order: 2,
label: '客户姓名',
prop: 'clientName'
},
{
order: 2,
label: '手机号码',
prop: 'mobile'
},
{
order: 3,
label: '对应BD',
prop: 'bd'
},
{
order: 4,
label: '申请时间',
prop: 'applyTime'
},
{
order: 5,
label: '初审授信结果',
prop: 'creditState'
},
{
order: 6,
label: '授信额度',
prop: 'creditLimit'
}
],
list: [],
listLoading: true,
total: 0,
pickerConfig: this.datePickerOptions,
queryForm: {
current: 1,
size: 10,
certNo:'',
creditNo: '',
clientName: '',
mobile: '',
state:'',
creditResult: '',
creditType: '',
time: '',
startTime: '',
endTime: ''
}
}
},
computed: {
finallyColumns() {
let finallyArray = []
this.checkList.forEach((checkItem) => {
finallyArray.push(
this.columns.filter((item) => item.label === checkItem)[0]
)
})
return _.sortBy(finallyArray, (item) => item.order)
},
...mapGetters(['searchData', 'user'])
},
async mounted() {
await this.fetchData()
},
methods: {
onSearch() {
const { time } = this.queryForm
this.queryForm.current = 1
if (time) {
this.queryForm.startTime = time[0]
this.queryForm.endTime = time[1]
} else {
this.queryForm.startTime = ''
this.queryForm.endTime = ''
}
this.fetchData()
},
handleView(row) {
const { creditNo,userId,clientNo, orderNo } = row
this.$router.push({
path: '/approval/localDetail',
query: {
step:"first",
creditNo,
clientNo,
userId
}
})
},
// 页码变更
handleSizeChange(val) {
this.queryForm.size = val
this.queryForm.current = 1
this.fetchData()
},
handleCurrentChange(val) {
this.queryForm.current = val
this.fetchData()
},
// 初始化列表数据
async fetchData() {
try{
this.listLoading = true
const form = this.queryForm
const params = Object.assign({}, form)
delete params.time
params.userId = this.user.userId
const result = await API.LocalFirstCreditList({ ...params })
const { records, total } = result.result
this.list = records
this.total = total
this.listLoading = false
}catch (err){
console.log('初始化初审列表')
}
},
// 修改上下线状态
async handleChangeOnLineStatus(e) {
const userId = this.user.userId
const userDutyState = e ? 'ONLINE' : 'OFFLINE'
const result = await API.approveOnOff({
userId,
userDutyState
})
if (result.success) {
const msg = userDutyState === 'ONLINE' ? '已上线' : '已下线'
Vue.prototype.$baseMessage(msg, 'success')
}
},
// 审批
handleApproval(row) {
const { creditNo } = row
let routeUrl = this.$router.resolve({
path: '/approvalDetail',
query: {
creditNo,
approval: 'approval'
}
})
window.open(routeUrl.href, '_blank')
},
// 转派
handleReassignment(row) {
this.visible = true
this.item = row
}
}
}
</script>
<style lang='scss' scoped>
.page-fence {
::v-deep {
i {
cursor: pointer;
}
}
box-sizing: border-box;
padding: 20px;
}
</style>
<style lang='scss'>
.action-bar {
margin-bottom: 15px;
}
</style>
<template>
<div v-if='detail!==null' class='page'>
<block-header title='基本信息'/>
<el-descriptions style='margin-bottom: 20px;' border size='small' :column='3'>
<el-descriptions-item label-class-name='labelCls' label='客户姓名'>{{ detail.clientName }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='手机号码'>{{ detail.mobile }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='身份证号'>{{ detail.certNo }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='户籍地址'>{{ detail.address }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='年龄'>{{ detail.age }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='申请时间'>{{ detail.loanTime }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='授信类型'>{{ detail.type }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='授信状态'>
<span>{{ detail.state }}</span>
<template v-if='detail.back'>
<el-button @click='handlePlead' size='mini' style='margin-left: 10px' type='primary'>捞回</el-button>
</template>
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='学历'>{{ detail.educationCode }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='婚姻状况'>{{ detail.marriage }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='现居地址'>{{
detail.liveDetailAddress
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='紧急联系人1'>
<span>{{ detail.firstName }}</span>
<el-button @click='handleContact' size='mini' style='margin-left: 10px' type='text'>查看更多</el-button>
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='紧急联系人关系'>{{
detail.firstRelation
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='紧急联系人电话'>{{ detail.firstPhone }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='工作行业'>{{ detail.workIndustry }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='公司全称'>{{ detail.companyName }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='工作地址'>{{ detail.companyAddressDetail }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='月收入'>{{ detail.selfMonthIncome }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='申请金额'>{{ detail.loanAmt }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='申请期数'>{{ detail.loanLimit }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='贷款用途'>{{ detail.loanUse }}</el-descriptions-item>
</el-descriptions>
<!--第三方报告-->
<template v-if="preCreditNo">
<report :credit-no="preCreditNo"></report>
</template>
<template v-if="preCreditNo">
<local-pre-report :credit-no="preCreditNo"></local-pre-report>
</template>
<!--捞回-->
<template v-if='visible'>
<pre-plead
:dialog-visible='visible'
:item='item'
step="pre"
@handleClose='visible = false'
@callback='init'
/>
</template>
<!--通讯录-->
<template v-if='contactVisible'>
<contact
:CreditNo="creditNo"
:contact-visible='contactVisible'
@handleClose='contactVisible = false'
/>
</template>
</div>
</template>
<script>
import API from '@/server/api'
import PrePlead from './components/pre-plead'
import LocalPreReport from '@/components/local-pre-report'
import Contact from './components/contacts'
export default {
name: 'PreDetail',
components: {
PrePlead,
LocalPreReport,
Contact
},
data() {
return {
visible: false,
item: null,
creditNo: '',
clientNo: '',
preCreditNo: '',
preCreditState: '',
detail: null,
reportResponse: [],
operationLogResponse: [],
contactVisible: false
}
},
async created() {
const {query} = this.$route
if (query && query.clientNo) {
if (query.creditNo) this.creditNo = query.creditNo
if (query.preCreditNo) this.preCreditNo = query.preCreditNo
this.clientNo = query.clientNo;
await this.init()
}
},
methods: {
async init() {
try {
const creditNo = this.creditNo
const preCreditNo = this.preCreditNo
const clientNo = this.clientNo
const result = await API.LocalClientDetail({type: "ONE", preCreditNo, creditNo, clientNo})
const data = result.result
const {projectSituationResponse} = data;
this.detail = projectSituationResponse
console.log(data, '返回数据')
} catch (err) {
console.log("初始化预授信详情异常")
}
},
// 捞回
handlePlead() {
this.item = this.detail
this.item.preCreditNo = this.preCreditState
this.item.creditNo = this.creditNo
this.visible = true
},
// 第三方数据报告
async initDataReport() {
try {
const creditNo = this.creditNo
const clientNo = this.clientNo
const result = await API.LocalPreDataReport({creditNo, clientNo})
const data = result.result
const {projectSituationResponse} = data;
this.detail = projectSituationResponse
console.log(data, '返回数据')
} catch (err) {
console.log("初始化预授信详情异常")
}
},
// 通讯录
async handleContact() {
this.contactVisible = true;
}
}
}
</script>
<style lang='scss' src='./index.scss'></style>
<template>
<div class='page-fence'>
<!--搜索-->
<block-header title='搜索' />
<div class='search'>
<el-form ref='form' label-suffix=':' :inline='true' :model='queryForm' class='form-inline'>
<el-form-item prop='mobile' label='手机号码'>
<el-input v-model='queryForm.mobile' clearable placeholder='请输入' />
</el-form-item>
<el-form-item prop='clientName' label='客户姓名'>
<el-input v-model='queryForm.clientName' clearable placeholder='请输入' />
</el-form-item>
<el-form-item prop='preCreditNo' label='授信编号'>
<el-input v-model='queryForm.preCreditNo' clearable placeholder='请输入' />
</el-form-item>
<el-form-item v-if='searchData!==null' prop='preStatus' label='授信状态'>
<el-select v-model='queryForm.preStatus' :popper-append-to-body='false' clearable placeholder='请选择授信状态'>
<el-option
v-for='(item,index) in searchData.xshPreStatusList'
:key='index'
:label='item.preStatusStr'
:value='item.preStatus'></el-option>
</el-select>
</el-form-item>
<!-- <el-form-item prop='certNo' label='身份证号'>-->
<!-- <el-input v-model='queryForm.certNo' clearable placeholder='请输入' />-->
<!-- </el-form-item>-->
<el-form-item prop='time' label='申请时间'>
<el-date-picker
v-model='queryForm.time'
type='datetimerange'
:picker-options='pickerConfig'
:default-time="['00:00:00', '23:59:59']"
value-format='yyyy-MM-dd HH:mm:ss'
range-separator='至'
start-placeholder='开始时间'
end-placeholder='结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button icon='el-icon-search' type='primary' @click='onSubmit'>搜 索</el-button>
<el-button icon='el-icon-delete' type='default' @click="onReset('form')">重置</el-button>
</el-form-item>
</el-form>
</div>
<block-header title='预授信列表' />
<!--表格-->
<el-table
ref='tableSort'
v-loading='listLoading'
border
:data='list'
style='width: 100%'
>
<el-table-column
v-for='(item, index) in finallyColumns'
:key='index'
align='center'
:label='item.label'
:sortable='item.sortable'
:width='item.width'
:fixed='!!item.fixed'
:show-overflow-tooltip='!!item.overflow'
>
<template #default='{ row }'>
<div v-if="item.prop==='preCreditState'">
<el-tag v-if='row[item.prop]==="审核中"' type='warning'>{{ row[item.prop] }}</el-tag>
<el-tag v-else-if='row[item.prop]==="审核通过"' type='success'>{{ row[item.prop] }}</el-tag>
<el-tag v-else-if='row[item.prop]==="审核拒绝"' type='danger'>{{ row[item.prop] }}</el-tag>
<el-tag v-else size='mini'>{{ row[item.prop] }}</el-tag>
</div>
<span v-else>{{ row[item.prop] }}</span>
</template>
</el-table-column>
<el-table-column
fixed='right'
align='center'
label='操作'
>
<template #default='{ row }'>
<el-button type='text' @click='handleDetail(row)'>详情</el-button>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
:current-page='queryForm.current'
layout='total,sizes, prev, pager, next'
:page-sizes='[10,20,30,40,50,100]'
background
:page-size='queryForm.size'
:total='total'
@size-change='handleSizeChange'
@current-change='handleCurrentChange'
/>
<!-- 申述 -->
<!--申述弹框-->
<template v-if='visible'>
<pre-plead
:dialog-visible='visible'
:item='item'
@handleClose='visible = false'
@callback='fetchData'
/>
</template>
</div>
</template>
<script>
import _ from 'lodash'
import API from '@/server/api'
import moment from 'moment'
import { mapGetters } from 'vuex'
export default {
name: 'CreditPre',
data() {
return {
visible: false,
item: null,
checkList: ['授信编号', '客户姓名', '手机号码', '对应BD', '申请时间', '授信状态'],
columns: [
{
order: 1,
width:250,
label: '授信编号',
prop: 'preCreditNo'
},
{
order: 2,
label: '客户姓名',
prop: 'clientName'
},
{
order: 3,
label: '手机号码',
prop: 'mobile'
},
{
order: 4,
label: '对应BD',
prop: 'bd'
},
{
order: 7,
label: '申请时间',
prop: 'applyTime'
},
{
order: 8,
label: '授信状态',
prop: 'preCreditState'
}
],
list: [],
listLoading: true,
pickerConfig: this.datePickerOptions,
total: 1,
queryForm: {
current: 1,
size: 10,
mobile: '',
clientName: '',
preCreditNo: '',
certNo: '', // 身份证号码
preStatus: '',
time: '',
startTime: '',
endTime: ''
}
}
},
computed: {
finallyColumns() {
let finallyArray = []
this.checkList.forEach((checkItem) => {
finallyArray.push(
this.columns.filter((item) => item.label === checkItem)[0]
)
})
return _.sortBy(finallyArray, (item) => item.order)
},
...mapGetters(['searchData'])
},
mounted() {
this.fetchData()
},
methods: {
// 申诉弹框
handlePlead(row) {
this.item = row
console.log(row, '当前行信息')
this.visible = true
},
// 搜索
onSubmit() {
const { time } = this.queryForm
this.queryForm.current = 1
if (time) {
this.queryForm.startTime = time[0]
this.queryForm.endTime = time[1]
} else {
this.queryForm.startTime = ''
this.queryForm.endTime = ''
}
this.fetchData()
},
// 预授信详情
handleDetail(row) {
const { preCreditNo,creditNo, clientNo } = row
this.$router.push({
path: '/approval/localPreDetail',
query: {
creditNo:creditNo,
preCreditNo:preCreditNo,
clientNo
}
})
},
handleCurrentChange(val) {
this.queryForm.current = val
this.fetchData()
},
// 页码变更
handleSizeChange(val) {
this.queryForm.size = val
this.queryForm.current = 1
this.fetchData()
},
async fetchData() {
try{
this.listLoading = true
const form = this.queryForm
const params = Object.assign({}, form)
delete params.time
const res = await API.LocalPreCreditList({ ...params })
console.log(res,'试试水')
const { records, total } = res.result
this.list = records
this.total = total
}catch (err){
console.log('初始化预授信列表报错',err);
}
this.listLoading = false
}
}
}
</script>
<style lang='scss' scoped>
.page-fence {
::v-deep {
i {
cursor: pointer;
}
}
box-sizing: border-box;
padding: 20px;
}
</style>
<style lang='scss'>
.custom-table-checkbox {
.el-checkbox {
display: block !important;
margin: 0 0 $base-padding/4 0;
}
}
.action-bar {
margin-bottom: 15px;
}
</style>
<template>
<div class='page-fence'>
<!--搜索-->
<block-header title='搜索' />
<div class='search'>
<el-form label-suffix=':' :inline='true' ref='form' :model='queryForm' class='form-inline'>
<el-form-item prop='creditNo' label='授信编号'>
<el-input
v-model='queryForm.creditNo'
clearable
placeholder='请输入授信编号'
/>
</el-form-item>
<el-form-item prop='clientName' label='客户姓名'>
<el-input
v-model='queryForm.clientName'
clearable
placeholder='请输入客户姓名'
/>
</el-form-item>
<el-form-item prop='mobile' label='手机号码'>
<el-input
v-model='queryForm.mobile'
clearable
placeholder='请输入手机号码'
/>
</el-form-item>
<template v-if='searchData!==null'>
<el-form-item prop='state' label='复审授信结果'>
<el-select :popper-append-to-body='false' v-model='queryForm.state' clearable placeholder='请选择授信类型'>
<el-option
v-for='(item,index) in searchData.xshcreditStatusResponseList'
:key='index'
:label='item.creditStatusStr'
:value='item.creditStatus'></el-option>
</el-select>
</el-form-item>
</template>
<el-form-item v-if="false" prop='certNo' label='身份证号'>
<el-input v-model='queryForm.certNo' clearable placeholder='请输入' />
</el-form-item>
<el-form-item prop='time' label='申请时间'>
<el-date-picker
v-model='queryForm.time'
type='datetimerange'
:picker-options='pickerConfig'
:default-time="['00:00:00', '23:59:59']"
value-format='yyyy-MM-dd HH:mm:ss'
range-separator='至'
start-placeholder='开始时间'
end-placeholder='结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button icon='el-icon-search' type='primary' @click='onSearch'>搜 索</el-button>
<el-button icon='el-icon-delete' type='default' @click="onReset('form')">重置</el-button>
</el-form-item>
</el-form>
</div>
<!--操作菜单栏-->
<block-header title='复审授信列表' />
<!--表格-->
<el-table
ref='tableSort'
v-loading='listLoading'
border
size='small'
:data='list'
style='width: 100%'
>
<el-table-column
v-for='(item, index) in finallyColumns'
:key='index'
align='center'
:label='item.label'
:sortable='item.sortable'
:width='item.width'
:fixed='!!item.fixed'
:show-overflow-tooltip='!!item.overflow'
>
<template #default='{ row }'>
<span v-if='item.label==="授信额度"'>
{{ money(row[item.prop]) }}
</span>
<span v-else-if='item.label==="客户信息"'>
{{ row.realName }} <br /> {{ row.mobile }}
</span>
<span v-else-if='item.label==="授信类型"'>
<el-tag v-if='row.creditTypeStr==="提额授信"' effect='plain' size='mini'>{{ row.creditTypeStr }}</el-tag>
<el-tag v-else size='mini'>{{ row.creditTypeStr }}</el-tag>
</span>
<span v-else-if='item.label==="授信状态"'>
<el-tag v-if='row.creditStatus==="CREATED"' size='mini'>{{ row.creditStatusStr }}</el-tag>
<el-tag v-if='row.creditStatus==="CREDIT_ING"' type='warning' size='mini'>{{ row.creditStatusStr }}</el-tag>
<el-tag v-if='row.creditStatus==="FINISHED"' type='success' size='mini'>{{ row.creditStatusStr }}</el-tag>
</span>
<span v-else>{{ row[item.prop] }}</span>
</template>
</el-table-column>
<template>
<el-table-column fixed='right' align='center' label='操作'>
<template #default='{ row }'>
<el-button size='mini' type='text' @click='handleView(row)'>详情</el-button>
</template>
</el-table-column>
</template>
</el-table>
<!--分页-->
<el-pagination
:current-page='queryForm.current'
layout='total,sizes, prev, pager, next'
:page-sizes='[10,20,30,40,50,100]'
:page-size='queryForm.size'
:total='total'
background
@size-change='handleSizeChange'
@current-change='handleCurrentChange'
/>
</div>
</template>
<script>
import _ from 'lodash'
import API from '@/server/api'
import Reassignment from './components/reassignment'
import { mapGetters } from 'vuex'
import Vue from 'vue'
export default {
name: 'LocalFirstList',
data() {
return {
checkList: ['授信编号', '客户姓名', '手机号码', '对应BD', '申请时间', '复审授信结果','授信额度' ],
columns: [
{
order: 1,
width:260,
label: '授信编号',
prop: 'creditNo'
},
{
order: 2,
label: '客户姓名',
prop: 'clientName'
},
{
order: 2,
label: '手机号码',
prop: 'mobile'
},
{
order: 3,
label: '对应BD',
prop: 'bd'
},
{
order: 4,
label: '申请时间',
prop: 'applyTime'
},
{
order: 5,
label: '复审授信结果',
prop: 'creditState'
},
{
order: 6,
label: '授信额度',
prop: 'creditLimit'
}
],
list: [],
listLoading: true,
total: 0,
pickerConfig: this.datePickerOptions,
queryForm: {
current: 1,
size: 10,
certNo:'',
creditNo: '',
clientName: '',
mobile: '',
state:'',
time: '',
startTime: '',
endTime: ''
}
}
},
computed: {
finallyColumns() {
let finallyArray = []
this.checkList.forEach((checkItem) => {
finallyArray.push(
this.columns.filter((item) => item.label === checkItem)[0]
)
})
return _.sortBy(finallyArray, (item) => item.order)
},
...mapGetters(['searchData', 'user'])
},
async mounted() {
await this.fetchData()
},
methods: {
onSearch() {
const { time } = this.queryForm
this.queryForm.current = 1
if (time) {
this.queryForm.startTime = time[0]
this.queryForm.endTime = time[1]
} else {
this.queryForm.startTime = ''
this.queryForm.endTime = ''
}
this.fetchData()
},
handleView(row) {
const { creditNo,userId,clientNo } = row
this.$router.push({
path: '/approval/localDetail',
query: {
step:"second",
creditNo,
clientNo,
userId
}
})
},
// 页码变更
handleSizeChange(val) {
this.queryForm.size = val
this.queryForm.current = 1
this.fetchData()
},
handleCurrentChange(val) {
this.queryForm.current = val
this.fetchData()
},
// 初始化列表数据
async fetchData() {
this.listLoading = true
const form = this.queryForm
const params = Object.assign({}, form)
delete params.time
params.userId = this.user.userId
const result = await API.LocalSecondCreditList({ ...params })
const { records, total } = result.result
this.list = records
this.total = total
this.listLoading = false
},
// 修改上下线状态
async handleChangeOnLineStatus(e) {
const userId = this.user.userId
const userDutyState = e ? 'ONLINE' : 'OFFLINE'
const result = await API.approveOnOff({
userId,
userDutyState
})
if (result.success) {
const msg = userDutyState === 'ONLINE' ? '已上线' : '已下线'
Vue.prototype.$baseMessage(msg, 'success')
}
},
// 审批
handleApproval(row) {
const { creditNo } = row
let routeUrl = this.$router.resolve({
path: '/approvalDetail',
query: {
creditNo,
approval: 'approval'
}
})
window.open(routeUrl.href, '_blank')
},
// 转派
handleReassignment(row) {
this.visible = true
this.item = row
}
}
}
</script>
<style lang='scss' scoped>
.page-fence {
::v-deep {
i {
cursor: pointer;
}
}
box-sizing: border-box;
padding: 20px;
}
</style>
<style lang='scss'>
.custom-table-checkbox {
.el-checkbox {
display: block !important;
margin: 0 0 $base-padding/4 0;
}
}
.action-bar {
margin-bottom: 15px;
}
</style>
<template>
<!-- v-if='detail!==null'-->
<div v-if="creditNo" class='page'>
<!--操作日志-->
<template v-if="clientNo">
<local-log :clientNo="clientNo"/>
</template>
<el-form ref='form' :show-message="false" label-width="0px" :model='form' class='form-inline'>
<template v-if="project">
<block-header title="基本信息"/>
<el-descriptions class="table" :column="3" size="small" border>
<el-descriptions-item label-class-name="labelCls" label="借款人">
<el-form-item prop="projectSituationResponse.clientName" >
<el-input v-model='form.projectSituationResponse.clientName' disabled clearable placeholder='请输入'/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="申请金额">
<el-form-item prop="projectSituationResponse.loanAmt" >
<el-input v-model='form.projectSituationResponse.loanAmt' disabled clearable placeholder='请输入'/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="借款期限">
<el-form-item prop="projectSituationResponse.loanLimit" >
<el-input v-model='form.projectSituationResponse.loanLimit' disabled clearable placeholder='请输入'/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="借款利率">
<el-form-item prop="projectSituationResponse.loanRate" >
<el-input v-model='form.projectSituationResponse.loanRate' clearable placeholder='请输入'/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="服务费率">
<el-form-item prop="projectSituationResponse.fuRate" >
<el-input v-model='form.projectSituationResponse.fuRate' clearable placeholder='请输入'/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="还款方式">
<el-form-item prop="projectSituationResponse.backedWay" >
<el-input v-model='form.projectSituationResponse.backedWay' clearable placeholder='请输入'/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="担保方式">
<el-form-item prop="projectSituationResponse.warrantWay" >
<el-input v-model='form.projectSituationResponse.warrantWay' clearable placeholder='请输入'/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="客户来源">
<el-form-item prop="projectSituationResponse.clientSource" >
<el-input v-model='form.projectSituationResponse.clientSource' clearable placeholder='请输入'/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="是否续贷">
<el-input disabled v-model='form.projectSituationResponse.continuous' clearable placeholder='请输入'/>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="尽调人员">
<el-form-item prop="projectSituationResponse.personnel" >
<el-input v-model='form.projectSituationResponse.personnel' clearable placeholder='请输入'/>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</template>
<!--家庭情况-->
<family :credit-no="creditNo" :client-no="clientNo" :data="familyData" @callback="handleCallback"></family>
<!--资产情况-->
<assets :credit-no="creditNo" :client-no="clientNo" :data="assetsData" @callback="handleCallback"></assets>
<!--银行借贷-->
<borrow :credit-no="creditNo" :client-no="clientNo" :data="borrowData" @callback="handleCallback"></borrow>
<!--信用卡-->
<credit-card :credit-no="creditNo" :client-no="clientNo" :data="creditCardData"
@callback="handleCallback"></credit-card>
<!--担保-->
<warrant :credit-no="creditNo" :client-no="clientNo" :data="warrantData" @callback="handleCallback"></warrant>
<!--法律诉讼-->
<lawsuit :credit-no="creditNo" :client-no="clientNo" :data="lawsuitData" @callback="handleCallback"></lawsuit>
<!--负债表-->
<block-header title="资产负债表"/>
<el-button style="margin-bottom: 20px" type="primary" @click="handleCreate">详情</el-button>
<template v-if="DebtVisible">
<debt :credit-no="creditNo"
:visible="DebtVisible"
@handleClose="DebtVisible=false"
:client-no="clientNo"
:data="debtData"
@callback="handleCallback"></debt>
</template>
<block-header title="总体情况文字说明"/>
<el-form-item prop="explain" style="margin-bottom: 20px">
<el-input v-model='form.explain' type="textarea" clearable placeholder='请输入'/>
</el-form-item>
<template v-if="enterprise">
<block-header title="企业基本情况"/>
<el-descriptions class="table" :column="1" size="small" border>
<el-descriptions-item label-class-name="labelCls" label="企业历史沿革">
<el-form-item prop="enterpriseResponse.history" >
<el-input v-model='form.enterpriseResponse.history' clearable placeholder='企业历史沿革'/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="具体经营情况">
<el-form-item prop="enterpriseResponse.business" >
<el-input v-model='form.enterpriseResponse.business' clearable placeholder='具体经营情况'/>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</template>
<template v-if="riskConclusion">
<block-header title="风险点以及最终审批结论"/>
<el-descriptions class="table" :column="1" size="small" border>
<el-descriptions-item label-class-name="labelClsLong" label="风险点以及贷后预防措施">
<el-form-item prop="riskConclusionResponse.riskMeasures" >
<el-input v-model='form.riskConclusionResponse.riskMeasures' clearable placeholder='风险点以及贷后预防措施'/>
</el-form-item>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelClsLong" label="最终审批结果(时间利率还款方式)">
<el-form-item prop="riskConclusionResponse.finalResult" >
<el-input v-model='form.riskConclusionResponse.finalResult' clearable placeholder='最终审批结果'/>
</el-form-item>
</el-descriptions-item>
</el-descriptions>
</template>
<block-header title="资料附件"/>
<el-row :gutter='20'>
<el-col v-for='(o, index) in temp' :key='index' :span='4'>
<el-card shadow="always" :body-style="{ padding: '10px' }">
<div @click="handleShow(o)" class='el-card-intro'>
<span>{{ o.title }}</span>
</div>
</el-card>
</el-col>
</el-row>
<div class="form-btn">
<el-button type='primary' @click='onSave("form")'>保存信息</el-button>
<el-button type='default' @click="onSubmit">提交授信人审</el-button>
</div>
</el-form>
<!--上传-->
<template v-if="visible">
<data-upload
:credit-no="creditNo"
:visible="visible"
:item="item"
@callback="init"
@handleClose='visible = false'></data-upload>
</template>
</div>
</template>
<script>
import API from '@/server/api'
import {mapGetters} from 'vuex'
import Family from "@/views/customer/components/Family";
import Assets from "@/views/customer/components/Assets";
import Borrow from "@/views/customer/components/Borrow";
import CreditCard from "@/views/customer/components/CreditCard";
import Lawsuit from "@/views/customer/components/Lawsuit";
import Warrant from "@/views/customer/components/Warrant";
import Debt from "@/views/customer/components/Debt";
import DataUpload from "@/views/customer/components/DataUpload";
import LocalLog from "@/components/local-log";
export default {
name: 'ClientDetail',
components: {
Family,
Assets,
Borrow,
CreditCard,
Lawsuit,
Warrant,
DataUpload,
Debt,
LocalLog
},
data() {
return {
DebtVisible: false,
clientNo: '',
creditNo: '',
preCreditNo: '',
total: 1,
list: [],
params: {
clientNo: '',
current: 1,
size: 10
},
detail: {
name: 1
},
temp: [
{
title: "身份信息",
type: "",
img: 'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg',
data: [
'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'
]
},
{
title: "放款银行卡",
type: "",
img: '',
data: []
},
{
title: "征信报告",
type: "",
img: '',
data: []
},
{
title: "经营信息",
type: "",
data: []
},
{
title: "资产凭证",
type: "",
img: '',
data: []
},
{
title: "银行流水(PDF)",
type: "",
img: '',
data: []
},
{
title: "其他资料凭证",
type: "",
img: '',
data: []
}
],
// 资料上传相关
item: null,
visible: false,
// 整体表单
form: {
projectSituationResponse: {},
enterpriseResponse: {},
riskConclusionResponse: {},
explain: ''// 总体情况文字说明
},
// 数据列表
familyData: [],
assetsData: [],
borrowData: [],
creditCardData: [],
warrantData: [],
lawsuitData: [],
enterprise: null,
riskConclusion: null,
debtData: {},
project: null
}
},
async created() {
const {query} = this.$route
if (query && query.clientNo) {
if (query.creditNo) this.creditNo = query.creditNo
if (query.preCreditNo) this.preCreditNo = query.preCreditNo
this.clientNo = query.clientNo;
this.params.clientNo = query.clientNo;
await this.init()
}
},
computed: {
...mapGetters(['searchData', 'user'])
},
methods: {
// 初始化详情信息
async init(type) {
try {
const creditNo = this.creditNo
const clientNo = this.clientNo
const preCreditNo = this.preCreditNo
const result = await API.LocalClientDetail({creditNo, clientNo, preCreditNo})
this.detail = result.result;
const {
appendix,
debtUrlList,
riskConclusionResponse,
familyDackgroundResponse,
enterpriseResponse,
propertyCssResponse,
debtCssResponse,
creditCardResponse,
warrantResponse,
badInformationResponse,
projectSituationResponse
} = result.result;
// 家庭情况
this.familyData = familyDackgroundResponse;
// 资产情况
this.assetsData = propertyCssResponse;
this.project = projectSituationResponse;
this.borrowData = debtCssResponse; // 银行借贷
this.creditCardData = creditCardResponse; // 信用卡
this.warrantData = warrantResponse; // 担保
this.lawsuitData = badInformationResponse; // 诉讼
this.enterprise = enterpriseResponse; // 诉讼
this.riskConclusion = riskConclusionResponse; // 诉讼
this.debtData = debtUrlList
const temp = []
const that = this;
for (let [key, value] of Object.entries(appendix)) {
const o = {};
o.type = key;
o.data = value;
switch (key) {
case 'account':
o.title = '银行流水'
break;
case 'businessImgs':
o.title = '经营信息'
break;
case 'cardImgs':
o.title = '放款银行卡'
break;
case 'certImgs':
o.title = '身份信息'
break;
case 'investigations':
o.title = '征信报告'
break;
case 'otherImgs':
o.title = '其他资料凭证'
break;
case 'propertyImgs':
o.title = '资产凭证'
break;
}
if (type && type === key) {
that.item = o
}
temp.push(o)
}
this.temp = temp;
this.form = result.result;
} catch (err) {
this.$message({
message: '初始化授信详情失败',
type: 'error'
})
}
},
// 家庭情况的回调喊上
async handleCallback() {
await this.init();
},
// 资料附件点击文件夹
handleShow(o) {
this.item = o;
this.visible = true;
},
// 保存信息
onSave(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
try {
const form = this.form;
const {projectSituationResponse, enterpriseResponse, riskConclusionResponse, explain} = form;
const data = {
creditNo: this.creditNo,
clientNo: this.clientNo,
projectSituationResponse,
enterpriseResponse,
riskConclusionResponse,
explain,
}
const res = await API.LocalClientProjectSave({...data})
if (res.success) {
this.$message({
type: 'success',
message: '保存成功'
})
await this.init()
}
} catch (err) {
}
} else {
this.$message.error('请完善表单信息');
}
})
},
// 资产负债表
handleCreate() {
this.DebtVisible = true;
},
// 提交信息
async onSubmit() {
try {
const {actionNo, stepsNo} = this.project;
const creditNo = this.creditNo;
const params = {actionNo, stepsNo, creditNo}
const res = await API.LocalClientSubmit({...params})
if (res.success) {
this.$message({
type: 'success',
message: '提交成功'
})
const that = this;
setTimeout(function () {
that.$router.back()
}, 2000)
}else{
// await this.init()
}
} catch (err) {
// console.log(err,'沃日')
this.$message.error(err.message)
}
}
}
}
</script>
<style lang='scss' scoped>
.table {
margin-bottom: 20px;
}
.form-btn {
position: fixed;
bottom: 80px;
right: 0;
width: 100%;
height: 40px;
display: flex;
align-items: center;
justify-content: center;
z-index: 200;
}
.el-form-item {
margin-bottom: 0;
}
</style>
<template>
<div class='page-list'>
<!--搜索-->
<block-header title='搜索' />
<div class='search'>
<el-form ref='form' label-suffix=':' :inline='true' :model='queryForm' class='form-inline'>
<el-form-item prop='mobile' label='手机号码'>
<el-input v-model='queryForm.mobile' clearable placeholder='请输入' />
</el-form-item>
<el-form-item prop='clientName' label='客户姓名'>
<el-input v-model='queryForm.clientName' clearable placeholder='请输入' />
</el-form-item>
<el-form-item prop='clientNo' label='客户编号'>
<el-input v-model='queryForm.clientNo' clearable placeholder='请输入' />
</el-form-item>
<el-form-item prop='time' label='申请时间'>
<el-date-picker
v-model='queryForm.time'
type='datetimerange'
:picker-options='pickerConfig'
:default-time="['00:00:00', '23:59:59']"
value-format='yyyy-MM-dd HH:mm:ss'
range-separator='至'
start-placeholder='开始时间'
end-placeholder='结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button icon='el-icon-search' type='primary' @click='onSubmit'>搜 索</el-button>
<el-button icon='el-icon-delete' type='default' @click="onReset('form')">重置</el-button>
</el-form-item>
</el-form>
</div>
<!--表格-->
<block-header title='授信列表' />
<el-table
ref='tableSort'
v-loading='listLoading'
border
:data='list'
style='width: 100%'
>
<el-table-column
v-for='(item, index) in finallyColumns'
:key='index'
align='center'
:label='item.label'
:sortable='item.sortable'
:width='item.width'
:fixed='!!item.fixed'
:show-overflow-tooltip='!!item.overflow'
>
<template #default='{ row }'>
<span>{{ row[item.prop] }}</span>
</template>
</el-table-column>
<el-table-column
fixed='right'
align='center'
label='操作'
v-if="false"
>
<template #default='{ row }'>
<el-button type='text' @click='handleDetail(row)'>详情</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page='queryForm.current'
layout='total,sizes, prev, pager, next'
:page-sizes='[10,20,30,40,50,100]'
:page-size='queryForm.size'
:total='total'
background
@size-change='handleSizeChange'
@current-change='handleCurrentChange'
/>
</div>
</template>
<script>
import _ from 'lodash'
import API from '@/server/api'
import { mapGetters } from 'vuex'
export default {
name: 'LocalClientList',
data() {
return {
checkList: ['客户编号', '客户姓名', '手机号码', '对应BD', '申请时间', '用户状态'],
columns: [
{
order: 1,
label: '客户编号',
width:120,
prop: 'clientNo'
},
{
order: 2,
label: '客户姓名',
prop: 'clientName'
},
{
order: 3,
label: '手机号码',
prop: 'mobile'
},
{
order: 4,
label: '对应BD',
prop: 'bd'
},
{
order: 5,
label: '申请时间',
prop: 'applyTime'
},
{
order: 6,
label: '用户状态',
prop: 'userState'
}
],
list: [],
listLoading: true,
total: 1,
pickerConfig: this.datePickerOptions,
queryForm: {
current: 1,
size: 10,
time:'',
startTime: '',
endTime: '',
certNo: '',
clientName: '',
clientNo: '',
mobile: ''
}
}
},
computed: {
finallyColumns() {
let finallyArray = []
this.checkList.forEach((checkItem) => {
finallyArray.push(
this.columns.filter((item) => item.label === checkItem)[0]
)
})
return _.sortBy(finallyArray, (item) => item.order)
},
...mapGetters(['searchData', 'user'])
},
mounted() {
this.fetchData()
},
methods: {
onSubmit() {
this.queryForm.current = 1
this.queryForm.startTime = ''
this.queryForm.endTime = ''
const { time } = this.queryForm
this.queryForm.current = 1
if (time) {
this.queryForm.startTime = time[0]
this.queryForm.endTime = time[1]
}
this.fetchData()
},
// 页码变更
handleCurrentChange(val) {
this.queryForm.current = val
this.fetchData()
},
// 页码变更
handleSizeChange(val) {
this.queryForm.current = 1
this.queryForm.size = val
this.fetchData()
},
async fetchData() {
this.listLoading = true
try{
const form = this.queryForm
const params = Object.assign({}, form)
delete params.time
const result = await API.LocalClientList({ ...params })
const { records, total } = result.result
this.list = records
this.total = total
}catch (err){
console.log('初始化客户列表失败',err)
}
this.listLoading = false
},
// 详情
handleDetail(row){
const { creditNo,clientNo,preCreditNo } = row
const route = {
path: '/client/detail',
query: { creditNo,clientNo,preCreditNo }
}
this.$router.push(route)
}
}
}
</script>
<style lang='scss' scoped>
.page-list{
box-sizing: border-box;
padding: 20px;
}
</style>
<template>
<div class='page-list'>
<!--搜索-->
<block-header title='搜索' />
<div class='search'>
<el-form ref='form' label-suffix=':' :inline='true' :model='queryForm' class='form-inline'>
<el-form-item prop='mobile' label='手机号码'>
<el-input v-model='queryForm.mobile' clearable placeholder='请输入' />
</el-form-item>
<el-form-item prop='clientName' label='客户姓名'>
<el-input v-model='queryForm.clientName' clearable placeholder='请输入' />
</el-form-item>
<el-form-item prop='clientNo' label='客户编号'>
<el-input v-model='queryForm.clientNo' clearable placeholder='请输入' />
</el-form-item>
<el-form-item prop='certNo' label='身份证号'>
<el-input v-model='queryForm.certNo' clearable placeholder='请输入' />
</el-form-item>
<el-form-item prop='time' label='申请时间'>
<el-date-picker
v-model='queryForm.time'
type='datetimerange'
:picker-options='pickerConfig'
:default-time="['00:00:00', '23:59:59']"
value-format='yyyy-MM-dd HH:mm:ss'
range-separator='至'
start-placeholder='开始时间'
end-placeholder='结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button icon='el-icon-search' type='primary' @click='onSubmit'>搜 索</el-button>
<el-button icon='el-icon-delete' type='default' @click="onReset('form')">重置</el-button>
</el-form-item>
</el-form>
</div>
<!--表格-->
<block-header title='授信列表' />
<el-table
ref='tableSort'
v-loading='listLoading'
border
:data='list'
style='width: 100%'
>
<el-table-column
v-for='(item, index) in finallyColumns'
:key='index'
align='center'
:label='item.label'
:sortable='item.sortable'
:width='item.width'
:fixed='!!item.fixed'
:show-overflow-tooltip='!!item.overflow'
>
<template #default='{ row }'>
<div v-if='item.label==="商户状态"'>
<el-tag v-if='row.isShelves!==0' type='danger'>{{ row.isShelvesStr }}</el-tag>
<el-tag v-else type='success'>{{ row.isShelvesStr }}</el-tag>
</div>
<span v-else>{{ row[item.prop] }}</span>
</template>
</el-table-column>
<el-table-column
fixed='right'
align='center'
label='操作'
>
<template #default='{ row }'>
<el-button type='text' @click='handleDetail(row)'>详情</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page='queryForm.current'
layout='total,sizes, prev, pager, next'
:page-sizes='[10,20,30,40,50,100]'
:page-size='queryForm.size'
:total='total'
background
@size-change='handleSizeChange'
@current-change='handleCurrentChange'
/>
</div>
</template>
<script>
import _ from 'lodash'
import API from '@/server/api'
import { mapGetters } from 'vuex'
export default {
name: 'MerchantList',
data() {
return {
checkList: ['客户编号', '客户姓名', '手机号码', '对应BD', '申请时间', '用户状态'],
columns: [
{
order: 1,
width:120,
label: '客户编号',
prop: 'clientNo'
},
{
order: 2,
label: '客户姓名',
prop: 'clientName'
},
{
order: 3,
label: '手机号码',
prop: 'mobile'
},
{
order: 4,
label: '对应BD',
prop: 'bd'
},
{
order: 5,
label: '申请时间',
prop: 'applyTime'
},
{
order: 6,
label: '用户状态',
prop: 'userState'
}
],
list: [],
listLoading: true,
total: 1,
pickerConfig: this.datePickerOptions,
queryForm: {
current: 1,
size: 10,
time:'',
startTime: '',
endTime: '',
certNo: '',
clientName: '',
clientNo: '',
mobile: ''
}
}
},
computed: {
finallyColumns() {
let finallyArray = []
this.checkList.forEach((checkItem) => {
finallyArray.push(
this.columns.filter((item) => item.label === checkItem)[0]
)
})
return _.sortBy(finallyArray, (item) => item.order)
},
...mapGetters(['searchData', 'user'])
},
mounted() {
this.fetchData()
},
methods: {
onSubmit() {
this.queryForm.current = 1
this.queryForm.startTime = ''
this.queryForm.endTime = ''
const { time } = this.queryForm
this.queryForm.current = 1
if (time) {
this.queryForm.startTime = time[0]
this.queryForm.endTime = time[1]
}
this.fetchData()
},
// 页码变更
handleCurrentChange(val) {
this.queryForm.current = val
this.fetchData()
},
// 页码变更
handleSizeChange(val) {
this.queryForm.current = 1
this.queryForm.size = val
this.fetchData()
},
async fetchData() {
this.listLoading = true
try{
const form = this.queryForm
const params = Object.assign({}, form)
delete params.time
const result = await API.LocalClientMine({ ...params })
const { records, total } = result.result
this.list = records
this.total = total
}catch (err){
console.log('初始化我的客户列表失败',err)
}
this.listLoading = false
},
// 详情
handleDetail(row){
const { creditNo,clientNo,preCreditNo } = row
const route = {
path: '/client/detail',
query: { creditNo,clientNo,preCreditNo }
}
this.$router.push(route)
}
}
}
</script>
<style lang='scss' scoped>
.page-list{
box-sizing: border-box;
padding: 20px;
}
</style>
<template>
<div class='page-fence'>
<!--搜索-->
<block-header title='搜索'/>
<div class='search'>
<el-form ref='form' label-suffix=':' :inline='true' :model='queryForm' class='form-inline'>
<el-form-item prop='orderNo' label='订单编号'>
<el-input v-model='queryForm.orderNo' clearable placeholder='请输入订单编号'/>
</el-form-item>
<el-form-item prop='clientName' label='客户姓名'>
<el-input v-model='queryForm.clientName' clearable placeholder='请输入客户姓名'/>
</el-form-item>
<el-form-item prop='mobile' label='手机号码'>
<el-input v-model='queryForm.mobile' clearable placeholder='请输入客户手机号码'/>
</el-form-item>
<template v-if='searchData!==null'>
<el-form-item prop='state' label='审批结果'>
<el-select v-model='queryForm.state' :popper-append-to-body='false' style='width: 100%;' clearable>
<el-option
v-for='(item,index) in searchData.xshApprovalResultResponseList'
:key='index'
:value='item.approvalResult'
:label='item.approvalResultStr'>
</el-option>
</el-select>
</el-form-item>
</template>
<el-form-item v-if="false" prop='certNo' label='身份证号'>
<el-input v-model='queryForm.certNo' clearable placeholder='请输入'/>
</el-form-item>
<el-form-item prop='time' label='申请时间'>
<el-date-picker
v-model='queryForm.time'
type='datetimerange'
:picker-options='pickerConfig'
:default-time="['00:00:00', '23:59:59']"
value-format='yyyy-MM-dd HH:mm:ss'
range-separator='至'
start-placeholder='开始时间'
end-placeholder='结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button icon='el-icon-search' type='primary' @click='onSearch'>搜 索</el-button>
<el-button icon='el-icon-delete' type='default' @click="onReset('form')">重 置</el-button>
</el-form-item>
</el-form>
</div>
<!--表格-->
<block-header title='借款列表'/>
<el-table
ref='tableSort'
v-loading='listLoading'
border
:data='list'
style='width: 100%'
>
<el-table-column
v-for='(item, index) in finallyColumns'
:key='index'
align='center'
:label='item.label'
:sortable='item.sortable'
:width='item.width'
:fixed='!!item.fixed'
:show-overflow-tooltip='!!item.overflow'
>
<template #default='{ row }'>
<div v-if='item.label==="客户信息"'>
{{ row.realName }} <br/>
{{ row.mobile }}
</div>
<div v-else-if='item.label==="借款金额"'>
{{ money(row[item.prop]) }}
</div>
<!-- <div v-else-if='item.label==="借款状态"'>-->
<!-- <el-tag v-if='row.loanStatus==="CANCELED"' type='info'>{{ row.loanStatusStr }}</el-tag>-->
<!-- <el-tag v-else-if='row.loanStatus==="SETTLED"'>{{ row.loanStatusStr }}</el-tag>-->
<!-- <el-tag v-else-if='row.loanStatus==="SUBMITED"' type='warning'>{{ row.loanStatusStr }}</el-tag>-->
<!-- <el-tag v-else type='success'>{{ row.loanStatusStr }}</el-tag>-->
<!-- </div>-->
<span v-else>{{ row[item.prop] }}</span>
</template>
</el-table-column>
<el-table-column
fixed='right'
align='center'
label='操作'
>
<template #default='{ row }'>
<template v-if='row.loanStatus==="SUBMITED" && row.stepsNo==="002"'>
<el-button size='mini' type='text' @click='handleAudit(row)'>稽核审批</el-button>
</template>
<el-button size='mini' type='text' @click='handleDetail(row)'>详情</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page='queryForm.current'
layout='total,sizes, prev, pager, next'
:page-sizes='[10,20,30,40,50,100]'
:page-size='queryForm.size'
:total='total'
background
@size-change='handleSizeChange'
@current-change='handleCurrentChange'
/>
<!--稽核弹框-->
<template v-if='visible'>
<loan-audit
:dialog-visible='visible'
:item='item'
@handleClose='visible = false'
@callback='fetchData'
/>
</template>
</div>
</template>
<script>
import _ from 'lodash'
import {doDelete, getList} from '@/api/table'
import API from '@/server/api'
import {mapGetters} from 'vuex'
export default {
name: 'Audit',
data() {
return {
visible: false,
item: null,
checkList: ['订单编号', '客户姓名', '手机号码', '借款金额', 'BD姓名', '借款时间', '借款状态', '资金渠道', '审批结果'],
columns: [
{
order: 1,
label: '订单编号',
prop: 'orderNo'
},
{
order: 3,
label: '客户姓名',
prop: 'clientName'
},
{
order: 3,
width:120,
label: '手机号码',
prop: 'mobile'
},
{
order: 5,
label: '借款金额',
prop: 'loanAmt'
},
{
order: 7,
label: 'BD姓名',
prop: 'bd'
},
{
order: 9,
label: '借款时间',
width: 110,
prop: 'applyTime'
},
{
order: 10,
label: '借款状态',
prop: 'loanState'
},
{
order: 11,
label: '资金渠道',
prop: 'capitalCode'
},
{
order: 12,
label: '审批结果',
prop: 'auditState'
}
],
list: [],
listLoading: true,
pickerConfig: this.datePickerOptions,
total: 1,
queryForm: {
current: 1,
size: 10,
certNo: '',
mobile: '',
orderNo: '',
clientName: '',
state: '',
clientNo: '',
time: '',
startTime: '',
endTime: ''
}
}
},
computed: {
finallyColumns() {
let finallyArray = []
this.checkList.forEach((checkItem) => {
finallyArray.push(
this.columns.filter((item) => item.label === checkItem)[0]
)
})
return _.sortBy(finallyArray, (item) => item.order)
//return finallyArray
},
...mapGetters(['searchData', 'user'])
},
mounted() {
this.fetchData()
},
methods: {
onSearch() {
const {time} = this.queryForm
this.queryForm.current = 1
if (time) {
this.queryForm.startTime = time[0]
this.queryForm.endTime = time[1]
} else {
this.queryForm.startTime = ''
this.queryForm.endTime = ''
}
this.fetchData()
},
handleDetail(row) {
const {creditNo,clientNo,orderNo} = row
this.$router.push({
path: '/loan/localLoanDetail',
query: {
orderNo,
creditNo,
clientNo
}
})
},
// 页码变更
handleSizeChange(val) {
this.queryForm.size = val
this.queryForm.current = 1
this.fetchData()
},
handleCurrentChange(val) {
this.queryForm.current = val
this.fetchData()
},
async fetchData() {
try {
this.listLoading = true
const form = this.queryForm
const params = Object.assign({}, form)
delete params.time
const result = await API.LocalLoanAuditList({...params})
const {records, total} = result.result
this.list = records
this.total = total
} catch (err) {
console.log(err, '初始化稽核审批列表失败')
}
this.listLoading = false
},
// 稽核审批
handleAudit(row) {
const {orderNo} = row
this.$router.push({
path: '/loan/detail',
query: {
orderNo,
type: "audit"
}
})
}
}
}
</script>
<style lang='scss' scoped>
.page-fence {
::v-deep {
i {
cursor: pointer;
}
}
box-sizing: border-box;
padding: 20px;
}
</style>
<style lang='scss'>
.custom-table-checkbox {
.el-checkbox {
display: block !important;
margin: 0 0 $base-padding/4 0;
}
}
.action-bar {
margin-bottom: 15px;
}
</style>
<template>
<!-- v-if='detail!==null'-->
<div v-if="creditNo" class='page'>
<!--操作日志-->
<template v-if="clientNo">
<local-log :clientNo="clientNo" />
</template>
<el-form ref='form' :rules="rules" label-width="0px" label-position="left" :model='form' class='form-inline'>
<template v-if="project">
<block-header title="项目情况"/>
<el-descriptions style='margin-bottom: 20px;' border size='small' :column='3'>
<el-descriptions-item label-class-name='labelCls' label='客户姓名'>{{ project.clientName }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='手机号码'>{{ project.mobile }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='身份证号'>{{ project.certNo }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='户籍地址'>{{ project.address }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='年龄'>{{ project.age }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='申请时间'>{{ project.loanTime }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='授信类型'>{{ project.type }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='授信状态'>
<span>{{ project.state }}</span>
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='学历'>{{
project.educationCode
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='婚姻状况'>{{ project.marriage }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='现居地址'>{{
project.liveDetailAddress
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='紧急联系人1'>
<span>{{ project.firstName }}</span>
<el-button @click='handleContact' size='mini' style='margin-left: 10px' type='text'>查看更多</el-button>
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='紧急联系人关系'>{{
project.firstRelation
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='紧急联系人电话'>{{
project.firstPhone
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='工作行业'>{{
project.workIndustry
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='公司全称'>{{
project.companyName
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='工作地址'>{{ project.companyAddressDetail }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='月收入'>{{
project.selfMonthIncome
}}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='申请金额'>{{ project.loanAmt }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='申请期数'>{{ project.loanLimit }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='贷款用途'>{{ project.loanUse }}</el-descriptions-item>
</el-descriptions>
</template>
<!--家庭情况-->
<family :credit-no="creditNo" :client-no="clientNo" :view="true" :data="familyData"
@callback="handleCallback"></family>
<!--资产情况-->
<assets :credit-no="creditNo" :client-no="clientNo" :view="true" :data="assetsData"
@callback="handleCallback"></assets>
<!--银行借贷-->
<borrow :credit-no="creditNo" :client-no="clientNo" :view="true" :data="borrowData"
@callback="handleCallback"></borrow>
<!--信用卡-->
<credit-card :credit-no="creditNo" :client-no="clientNo" :view="true" :data="creditCardData"
@callback="handleCallback"></credit-card>
<!--担保-->
<warrant :credit-no="creditNo" :client-no="clientNo" :view="true" :data="warrantData"
@callback="handleCallback"></warrant>
<!--法律诉讼-->
<lawsuit :credit-no="creditNo" :client-no="clientNo" :view="true" :data="lawsuitData"
@callback="handleCallback"></lawsuit>
<!--负债表-->
<block-header title="资产负债表"/>
<el-form ref='form' label-suffix=':' label-width="160px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='yvFu' label='预付账款'>
<span>{{ debtData.yvFu }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='yingFu' label='应付账款'>
<span>{{ debtData.yingFu }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='yingShou' label='应收账款'>
<span>{{ debtData.yingShou }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='yvShou' label='预收账款'>
<span>{{ debtData.yvShou }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='amountCount' label='现金及银行存款合计'>
<span>{{ debtData.amountCount }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='shortLoan' label='短期贷款'>
<span>{{ debtData.shortLoan }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='cash' label='现金'>
<span>{{ debtData.cash }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='xinAmount' label='信用卡使用总额'>
<span>{{ debtData.xinAmount }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='yinAmount' label='银行存款'>
<span>{{ debtData.yinAmount }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='shangDi' label='商铺抵押'>
<span>{{ debtData.shangDi }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='cunHuo' label='存货'>
<span>{{ debtData.cunHuo }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='fangDi' label='住房抵押'>
<span>{{ debtData.fangDi }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='liuCount' label='流动资产合计'>
<span>{{ debtData.liuCount }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='cheDi' label='汽车抵押'>
<span>{{ debtData.cheDi }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='guCount' label='固定资产合计'>
<span>{{ debtData.guCount }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='shortCount' label='短期负债合计'>
<span>{{ debtData.shortCount }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='shangPu' label='商铺'>
<span>{{ debtData.shangPu }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='longLoan' label='长期贷款'>
<span>{{ debtData.longLoan }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='zhuFang' label='住房'>
<span>{{ debtData.zhuFang }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='longCount' label='长期负债合计'>
<span>{{ debtData.longCount }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='qiChe' label='汽车'>
<span>{{ debtData.qiChe }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='otherLoan' label='其他负债'>
<span>{{ debtData.otherLoan }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='guOther' label='其他'>
<span>{{ debtData.guOther }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='qiCount' label='其他经营资产合计'>
<span>{{ debtData.qiCount }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='jiQi' label='机器设备'>
<span>{{ debtData.jiQi }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='ziCount' label='总资产合计'>
<span>{{ debtData.ziCount }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='zaiCount' label='总负债合计'>
<span>{{ debtData.zaiCount }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
</el-col>
<el-col :span="12">
<el-form-item prop='quanCount' label='所有者权益合计'>
<span>{{ debtData.quanCount }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='liuRate' label='流动比率'>
<span>{{ debtData.liuRate }}</span>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='ziRate' label='资产负债比率'>
<span>{{ debtData.ziRate }}</span>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item prop='memo' label='资产负债表备注'>
<span>{{ debtData.memo }}</span>
</el-form-item>
</el-col>
</el-row>
</el-form>
<block-header title="总体情况文字说明"/>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label-width="0px" prop='explain'>
<span>{{ form.explain }}</span>
</el-form-item>
</el-col>
</el-row>
<template v-if="enterprise">
<block-header title="企业基本情况"/>
<el-descriptions class="table" :column="1" size="small" border>
<el-descriptions-item label-class-name="labelCls" label="企业历史沿革">
<span>{{ form.enterpriseResponse.history }}</span>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="具体经营情况">
<span>{{ form.enterpriseResponse.business }}</span>
</el-descriptions-item>
</el-descriptions>
</template>
<template v-if="riskConclusion">
<block-header title="风险点以及最终审批结论"/>
<el-descriptions class="table" :column="1" size="small" border>
<el-descriptions-item label-class-name="labelClsLong" label="风险点以及贷后预防措施">
<span>{{ form.riskConclusionResponse.riskMeasures }}</span>
</el-descriptions-item>
<el-descriptions-item label-class-name="labelClsLong" label="最终审批结果(时间利率还款方式)">
<span>{{ form.riskConclusionResponse.finalResult }}</span>
</el-descriptions-item>
</el-descriptions>
</template>
<block-header title="资料附件"/>
<el-row :gutter='20'>
<el-col v-for='(o, index) in temp' :key='index' :span='4'>
<el-card :body-style="{ padding: '10px' }">
<div @click="handleShow(o)" class='el-card-intro'>
<span>{{ o.title }}</span>
</div>
</el-card>
</el-col>
</el-row>
</el-form>
<!--上传-->
<template v-if="item!==null">
<data-upload
:view="true"
:credit-no="creditNo"
:visible="visible"
:item="item"
@handleClose='visible = false'></data-upload>
</template>
<!--第三方报告-->
<template v-if="creditNo">
<report :credit-no="creditNo"></report>
</template>
<block-header title='借款信息'/>
<template v-if="detail.loanModel">
<el-descriptions style='margin-bottom: 20px;' border size='small' :column='3'>
<el-descriptions-item label-class-name='labelCls' label='借款编号'>{{ detail.loanModel.loanNo }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='借款日期'>{{ detail.loanModel.loanDate }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='借款利率'>{{ detail.loanModel.yearRate }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='借款金额'>{{ detail.loanModel.loanAmt }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='借款期数'>{{ detail.loanModel.loanLimit }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='借款银行卡(所属银行)'>{{ detail.loanModel.bankAccount }}
</el-descriptions-item>
</el-descriptions>
</template>
<no-data v-else></no-data>
<block-header title='账单信息'/>
<template v-if="detail.debtInfo">
<el-descriptions style='margin-bottom: 20px;' border size='small' :column='3'>
<el-descriptions-item label-class-name='labelCls' label='总应还金额'>{{ detail.debtInfo.debtAmt }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='总应还本金'>{{ detail.debtInfo.principleAmt }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='总应还利息'>{{ detail.debtInfo.interestAmt }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='总应还服务费'>{{ detail.debtInfo.serviceAmt }}
</el-descriptions-item>
</el-descriptions>
</template>
<no-data v-else></no-data>
<template v-if="detail.debtPlan && detail.debtPlan.length">
<el-table border :data='detail.debtPlan' style='width: 100%;margin-bottom: 20px'>
<el-table-column align='center' label='计划编号' prop="planNo"></el-table-column>
<el-table-column align='center' label='期数' prop="planIndex"></el-table-column>
<el-table-column align='center' label='应还总金额' prop="planAmt"></el-table-column>
<el-table-column align='center' label='本金' prop="planBen"></el-table-column>
<el-table-column align='center' label='利息' prop="planXi"></el-table-column>
<el-table-column align='center' label='服务费' prop="planFu"></el-table-column>
</el-table>
</template>
<template v-if="project">
<block-header title='审批'/>
<local-plead :data="project" @callback="init"></local-plead>
</template>
<!--通讯录-->
<template v-if='contactVisible'>
<contact
:CreditNo="creditNo"
:contact-visible='contactVisible'
@handleClose='contactVisible = false'
/>
</template>
</div>
</template>
<script>
import API from '@/server/api'
import {mapGetters} from 'vuex'
import Family from "@/views/customer/components/Family";
import Assets from "@/views/customer/components/Assets";
import Borrow from "@/views/customer/components/Borrow";
import CreditCard from "@/views/customer/components/CreditCard";
import Lawsuit from "@/views/customer/components/Lawsuit";
import Warrant from "@/views/customer/components/Warrant";
import DataUpload from "@/views/customer/components/DataUpload";
import Contact from "@/views/approval/components/contacts";
import LocalPlead from "@/components/local-plead";
import Report from "@/components/report";
export default {
name: 'ClientDetail',
components: {
Family,
Assets,
Borrow,
CreditCard,
Lawsuit,
Warrant,
DataUpload,
LocalPlead,
Report,
Contact
},
data() {
return {
contactVisible: false,
clientNo: '',
creditNo: '',
orderNo: '',
detail: {
name: 1
},
rules: {},
temp: [],
// 资料上传相关
item: null,
visible: false,
// 整体表单
form: {
projectSituationResponse: {},
enterpriseResponse: {},
riskConclusionResponse: {},
explain: ''// 总体情况文字说明
},
// 数据列表
familyData: [],
assetsData: [],
borrowData: [],
creditCardData: [],
warrantData: [],
lawsuitData: [],
enterprise: null,
riskConclusion: null,
debtData: {},
project: null
}
},
async created() {
const {query} = this.$route
if (query && query.creditNo && query.clientNo && query.orderNo) {
this.creditNo = query.creditNo
this.clientNo = query.clientNo;
this.orderNo = query.orderNo;
await this.init()
}
},
computed: {
...mapGetters(['searchData', 'user'])
},
methods: {
// 初始化详情信息
async init() {
try {
const creditNo = this.creditNo
const clientNo = this.clientNo
const orderNo = this.orderNo
const result = await API.LocalClientDetail({
type: "THREE",
orderNo,
creditNo, clientNo
})
this.detail = result.result;
const {
appendix,
debtUrlList,
riskConclusionResponse,
familyDackgroundResponse,
enterpriseResponse,
propertyCssResponse,
debtCssResponse,
creditCardResponse,
warrantResponse,
badInformationResponse,
projectSituationResponse
} = result.result;
// 家庭情况
this.familyData = familyDackgroundResponse;
// 资产情况
this.assetsData = propertyCssResponse;
this.project = projectSituationResponse;
this.borrowData = debtCssResponse; // 银行借贷
this.creditCardData = creditCardResponse; // 信用卡
this.warrantData = warrantResponse; // 担保
this.lawsuitData = badInformationResponse; // 诉讼
this.enterprise = enterpriseResponse; // 诉讼
this.riskConclusion = riskConclusionResponse; // 诉讼
this.debtData = debtUrlList
const temp = []
for (let [key, value] of Object.entries(appendix)) {
const o = {};
o.type = key;
o.data = value;
switch (key) {
case 'account':
o.title = '银行流水'
break;
case 'businessImgs':
o.title = '经营信息'
break;
case 'cardImgs':
o.title = '放款银行卡'
break;
case 'certImgs':
o.title = '身份信息'
break;
case 'investigations':
o.title = '征信报告'
break;
case 'otherImgs':
o.title = '其他资料凭证'
break;
case 'propertyImgs':
o.title = '资产凭证'
break;
}
temp.push(o)
}
this.temp = temp;
this.form = result.result;
} catch (err) {
this.$message({
message: '初始化授信详情失败',
type: 'error'
})
}
},
// 家庭情况的回调喊上
async handleCallback() {
await this.init();
},
// 资料附件点击文件夹
handleShow(o) {
this.item = o;
this.visible = true;
},
// 保存信息
onSave(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
try {
const form = this.form;
console.log(form, '沃日')
const {projectSituationResponse, enterpriseResponse, riskConclusionResponse, explain} = form;
const data = {
creditNo: this.creditNo,
clientNo: this.clientNo,
projectSituationResponse,
enterpriseResponse,
riskConclusionResponse,
explain,
}
const res = await API.LocalClientProjectSave({...data})
console.log(res, '保存的结果')
if (res.success) {
this.$message({
type: 'success',
message: '保存成功'
})
await this.init()
}
} catch (err) {
}
}
})
}
,
// 提交信息
async onSubmit() {
try {
const {} = this.form;
const params = {actionNo, stepsNo}
const res = await API.LocalClientSubmit({...params})
if (res.success) {
this.$message({
type: 'success',
message: '提交成功'
})
const that = this;
setTimeout(function () {
that.$router.back()
}, 2000)
}
} catch (err) {
}
},
// 通讯录
async handleContact() {
this.contactVisible = true;
}
}
}
</script>
<style lang='scss' scoped>
.table {
margin-bottom: 20px;
}
.form-btn {
position: fixed;
bottom: 80px;
right: 0;
width: 100%;
height: 80px;
display: flex;
align-items: center;
justify-content: center;
}
</style>
<template>
<div class='page-fence'>
<!--搜索-->
<block-header title='搜索' />
<div class='search'>
<el-form ref='form' label-suffix=':' :inline='true' :model='queryForm' class='form-inline'>
<el-form-item prop='orderNo' label='订单编号'>
<el-input v-model='queryForm.orderNo' clearable placeholder='请输入订单编号' />
</el-form-item>
<el-form-item prop='clientName' label='客户姓名'>
<el-input v-model='queryForm.clientName' clearable placeholder='请输入客户姓名' />
</el-form-item>
<el-form-item prop='mobile' label='手机号码'>
<el-input v-model='queryForm.mobile' clearable placeholder='请输入客户手机号码' />
</el-form-item>
<template v-if='searchData!==null'>
<el-form-item prop='loanSign' label='资金渠道'>
<el-select v-model='queryForm.loanSign' :popper-append-to-body='false' style='width: 100%;'
clearable>
<el-option
v-for='(item,index) in searchData.loanSignResponses'
:key='index'
:value='item.code'
:label='item.codeStr'>
</el-option>
</el-select>
</el-form-item>
</template>
<template v-if='searchData!==null'>
<el-form-item prop='state' label='审批结果'>
<el-select v-model='queryForm.state' :popper-append-to-body='false' style='width: 100%;'
clearable>
<el-option
v-for='(item,index) in searchData.xshLoanConfirmResultResponseList'
:key='index'
:value='item.loanConfirmResult'
:label='item.loanConfirmResultStr'>
</el-option>
</el-select>
</el-form-item>
</template>
<el-form-item prop='time' label='申请时间'>
<el-date-picker
v-model='queryForm.time'
type='datetimerange'
:picker-options='pickerConfig'
:default-time="['00:00:00', '23:59:59']"
value-format='yyyy-MM-dd HH:mm:ss'
range-separator='至'
start-placeholder='开始时间'
end-placeholder='结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button icon='el-icon-search' type='primary' @click='onSearch'>搜 索</el-button>
<el-button icon='el-icon-delete' type='default' @click="onReset('form')">重 置</el-button>
</el-form-item>
</el-form>
</div>
<!--表格-->
<block-header title='借款列表' />
<el-table
ref='tableSort'
v-loading='listLoading'
border
:data='list'
style='width: 100%'
>
<el-table-column
v-for='(item, index) in finallyColumns'
:key='index'
align='center'
:label='item.label'
:sortable='item.sortable'
:width='item.width'
:fixed='!!item.fixed'
:show-overflow-tooltip='!!item.overflow'
>
<template #default='{ row }'>
<div v-if='item.label==="借款金额"'>
{{ money(row.loanAmt) }}
</div>
<span v-else>{{ row[item.prop] }}</span>
</template>
</el-table-column>
<el-table-column
fixed='right'
align='center'
label='操作'
>
<template #default='{ row }'>
<template v-if="row.state" >
<el-button type='text' @click='handleDialog(row,"confirm")'>放款</el-button>
<el-button type='text' @click='handleDialog(row,"cancel")'>作废</el-button>
</template>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page='queryForm.current'
layout='total,sizes, prev, pager, next'
:page-sizes='[10,20,30,40,50,100]'
:page-size='queryForm.size'
:total='total'
background
@size-change='handleSizeChange'
@current-change='handleCurrentChange'
/>
<!--放款确认,放款取消-->
<template v-if='DialogVisible'>
<Confirm
:title='DialogTitle'
:visible='DialogVisible'
:item='item'
@handleClose='DialogVisible = false'
@callback='fetchData' />
</template>
</div>
</template>
<script>
import API from '@/server/api'
import { mapGetters } from 'vuex'
import Confirm from './components/confirm'
export default {
name: 'LoanAudit',
components: {
Confirm
},
data() {
return {
DialogTitle: '',
DialogVisible: false,
dialogForm: {
loanAmount: '',
clientName: '',
currentAction: '',
orderNo: '',
memo: '',
stepsNo: '',
userId: '',
payChannelApi: ''
},
payChannelApiResponses: [],
checkList: ['订单编号', '客户姓名', '手机号码', '借款金额', 'BD姓名', '创建时间', '借款状态', '资金渠道','放款确认'],
columns: [
{
order: 1,
width:160,
label: '订单编号',
prop: 'orderNo'
},
{
order: 2,
label: '客户姓名',
prop: 'clientName'
},
{
order: 3,
width: 120,
label: '手机号码',
prop: 'mobile'
},
{
order: 4,
label: '借款金额',
prop: 'loanAmt'
},
{
order: 5,
label: 'BD姓名',
prop: 'bd'
},
{
order: 6,
label: '创建时间',
width: 110,
prop: 'applyTime'
},
{
order: 7,
label: '借款状态',
prop: 'loanState'
},
{
order: 8,
label: '资金渠道',
prop: 'capitalCode'
},
{
order: 9,
label: '放款确认',
prop: 'raiseState'
}
],
list: [],
listLoading: true,
pickerConfig: this.datePickerOptions,
total: 1,
rules: {
memo: [
{
required: true,
trigger: 'blur',
message: '请输入备注'
}
]
},
queryForm: {
current: 1,
size: 10,
mobile: '',
orderNo: '',
clientNo: '',
clientName: '',
time: '',
startTime: '',
endTime: '',
loanSign: '',
state: ''
}
}
},
computed: {
finallyColumns() {
let finallyArray = []
this.checkList.forEach((checkItem) => {
finallyArray.push(
this.columns.filter((item) => item.label === checkItem)[0]
)
})
return _.sortBy(finallyArray, (item) => item.order)
},
...mapGetters(['searchData', 'user'])
},
mounted() {
this.fetchData()
},
methods: {
handleClose() {
this.DialogVisible = false
this.$refs['dialogForm'].resetFields()
},
onReset(formName) {
if (formName) {
this.queryForm.capitalCode = ''
this.queryForm.loanSign = ''
this.$refs[formName].resetFields()
}
},
onSearch() {
const { time } = this.queryForm
this.queryForm.current = 1
if (time) {
this.queryForm.startTime = time[0]
this.queryForm.endTime = time[1]
} else {
this.queryForm.startTime = ''
this.queryForm.endTime = ''
}
this.fetchData()
},
handleDialog(row, type) {
if (type) row.type = type
this.item = row
this.DialogVisible = true
this.DialogTitle = type === 'confirm' ? '确认放款' : '取消放款'
},
// 页码变更
handleCurrentChange(val) {
this.queryForm.current = val
this.fetchData()
},
// 页码变更
handleSizeChange(val) {
this.queryForm.current = 1
this.queryForm.size = val
this.fetchData()
},
async fetchData() {
this.listLoading = true
const form = this.queryForm
const params = Object.assign({}, form)
delete params.time
const result = await API.LocalLoanList({ ...params })
const { records, total } = result.result
this.list = records
this.total = total
this.listLoading = false
}
}
}
</script>
<style lang='scss' scoped>
.page-fence {
::v-deep {
i {
cursor: pointer;
}
}
box-sizing: border-box;
padding: 20px;
}
</style>
<style lang='scss'>
</style>
<template>
<div v-if='detail!==null' class='page'>
<!--用户基础信息-->
<template v-if='detail.clientDetail!==null'>
<user-base-info :contacts='detail.linkPhoneList' page='local' :base-info='detail.clientDetail'/>
</template>
<!--其它信息-->
<user-local-info :info='detail'/>
<!-- 审批操作 -->
<template v-if='visible'>
<LocalApproval :item='detail'/>
</template>
</div>
</template>
<script>
import API from '@/server/api'
export default {
name: 'ApprovalDetail',
data() {
return {
visible: false,
creditNo: '',
detail: null
}
},
async created() {
const {query} = this.$route
if (query && query.creditNo) {
this.creditNo = query.creditNo
await this.init()
await this.initSearchData()
}
},
async mounted() {
console.log('沃日')
await this.initSearchData()
},
methods: {
async initSearchData() {
await this.$store.dispatch('common/GetSearchData')
},
async init() {
const creditNo = this.creditNo
const result = await API.localCreditDetail({
creditNo
})
this.detail = result.result
const {clientDetail} = result.result
this.visible = !!(clientDetail.creditResult && clientDetail.creditResult === 'CREDIT_RETRIAL');
console.log('审批详情', this.detail)
}
}
}
</script>
<style lang='scss' src='./index.scss'></style>
.merchant-new{
box-sizing: border-box;
padding: 20px;
}
<template>
<div class='page-fence'>
<!--搜索-->
<block-header title='搜索' />
<div class='search'>
<el-form label-suffix=':' :inline='true' ref='form' :model='queryForm' class='form-inline'>
<el-form-item prop='creditNo' label='授信编号'>
<el-input
v-model='queryForm.creditNo'
clearable
placeholder='请输入授信编号'
/>
</el-form-item>
<el-form-item prop='realName' label='客户姓名'>
<el-input
v-model='queryForm.realName'
clearable
placeholder='请输入客户姓名'
/>
</el-form-item>
<el-form-item prop='mobile' label='手机号码'>
<el-input
v-model='queryForm.mobile'
clearable
placeholder='请输入手机号码'
/>
</el-form-item>
<template v-if='searchData!==null'>
<el-form-item prop='creditResult' label='人审结果'>
<el-select :popper-append-to-body='false' v-model='queryForm.creditResult' clearable placeholder='请选择授信类型'>
<el-option
v-for='(item,index) in searchData.xdCreditResult'
:key='index'
:label='item.creditResultStr'
:value='item.creditResult'></el-option>
</el-select>
</el-form-item>
</template>
<el-form-item prop='time' label='申请时间'>
<el-date-picker
v-model='queryForm.time'
type='datetimerange'
:picker-options='pickerConfig'
:default-time="['00:00:00', '23:59:59']"
value-format='yyyy-MM-dd HH:mm:ss'
range-separator='至'
start-placeholder='开始时间'
end-placeholder='结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button icon='el-icon-search' type='primary' @click='onSearch'>搜 索</el-button>
<el-button icon='el-icon-delete' type='default' @click="onReset('form')">重置</el-button>
</el-form-item>
</el-form>
</div>
<!--操作菜单栏-->
<block-header title='授信列表' />
<!--表格-->
<el-table
ref='tableSort'
v-loading='listLoading'
border
size='small'
:data='list'
style='width: 100%'
>
<el-table-column
v-for='(item, index) in finallyColumns'
:key='index'
align='center'
:label='item.label'
:sortable='item.sortable'
:width='item.width'
:fixed='!!item.fixed'
:show-overflow-tooltip='!!item.overflow'
>
<template #default='{ row }'>
<span v-if='item.label==="授信金额(元)"'>
{{ money(row[item.prop]) }}
</span>
<span v-else-if='item.label==="人审结果"'>
<el-tag v-if='row.creditResult==="CREDIT_RETRIAL"' size='mini'>{{ row.creditResultStr }}</el-tag>
<el-tag v-if='row.creditResult==="PERSON_REFUSE"' type='warning' size='mini'>{{ row.creditResultStr }}</el-tag>
<el-tag v-if='row.creditResult==="CREDIT_PASS"' type='success' size='mini'>{{ row.creditResultStr
}}</el-tag>
</span>
<span v-else>{{ row[item.prop] }}</span>
</template>
</el-table-column>
<template>
<el-table-column fixed='right' align='center' label='操作'>
<template #default='{ row }'>
<el-button size='mini' type='text' @click='handleView(row)'>详情</el-button>
</template>
</el-table-column>
</template>
</el-table>
<!--分页-->
<el-pagination
:current-page='queryForm.current'
layout='total,sizes, prev, pager, next'
:page-sizes='[10,20,30,40,50,100]'
:page-size='queryForm.size'
:total='total'
background
@size-change='handleSizeChange'
@current-change='handleCurrentChange'
/>
</div>
</template>
<script>
import _ from 'lodash'
import API from '@/server/api'
import { mapGetters } from 'vuex'
export default {
name: 'LocalCreditList',
data() {
return {
checkList: ['授信编号', '客户姓名', '手机号码', '授信金额(元)', '人审结果', '申请时间'],
columns: [
{
order: 1,
label: '授信编号',
prop: 'creditNo'
},
{
order: 2,
label: '客户姓名',
prop: 'realName'
},
{
order: 3,
label: '手机号码',
prop: 'mobile'
},
{
order: 4,
label: '授信金额(元)',
prop: 'creditAmount'
},
{
order: 5,
label: '人审结果',
prop: 'creditResultStr'
},
{
order: 6,
label: '申请时间',
prop: 'gmtCreated'
}
],
list: [],
listLoading: true,
total: 0,
pickerConfig: this.datePickerOptions,
queryForm: {
current: 1,
size: 10,
creditNo: '',
realName: '',
creditStatus: '',
creditResult: '',
time: '',
startTime: '',
endTime: ''
}
}
},
computed: {
finallyColumns() {
let finallyArray = []
this.checkList.forEach((checkItem) => {
finallyArray.push(
this.columns.filter((item) => item.label === checkItem)[0]
)
})
//return _.sortBy(finallyArray, (item) => item.creditNo)
return finallyArray
},
...mapGetters(['searchData', 'user'])
},
async mounted() {
await this.fetchData()
},
methods: {
onSearch() {
const { time } = this.queryForm
this.queryForm.current = 1
if (time) {
this.queryForm.startTime = time[0]
this.queryForm.endTime = time[1]
} else {
this.queryForm.startTime = ''
this.queryForm.endTime = ''
}
this.fetchData()
},
handleView(row) {
const { creditNo } = row
const route = {
path: '/local/detail',
query: { creditNo }
}
this.$router.push(route)
},
// 页码变更
handleSizeChange(val) {
this.queryForm.size = val
this.queryForm.current = 1
this.fetchData()
},
handleCurrentChange(val) {
this.queryForm.current = val
this.fetchData()
},
// 初始化列表数据
async fetchData() {
try {
this.listLoading = true
const form = this.queryForm
const params = Object.assign({}, form)
delete params.time
const res = await API.localCreditList({ ...params })
if(res.success){
const result = res.result
const { records, total } = result
this.list = records
this.total = total
this.listLoading = false
}
} catch (err) {
console.log('初始化人工审核授信列表报错')
}
}
}
}
</script>
<style lang='scss' scoped>
.page-fence {
::v-deep {
i {
cursor: pointer;
}
}
box-sizing: border-box;
padding: 20px;
}
</style>
<style lang='scss'>
.action-bar {
margin-bottom: 15px;
}
</style>
......@@ -305,7 +305,7 @@ export default {
<style lang="scss" scoped>
.login-container {
height: 100vh;
background: url('~@/assets/login_images/background.jpg') center center fixed no-repeat;
background: url('~@/assets/login_images/bg4.jpg') center center fixed no-repeat;
background-size: cover;
}
......
......@@ -64,7 +64,7 @@ module.exports = {
"/api": {
//target: "http://192.168.0.199:8221",
//target: "http://192.168.0.26:8785",
target: "http://47.99.245.36:8785",
target: "http://114.55.246.69:8785",
ws: true,
changeOrigin: true,
pathRewrite: {
......
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