Commit d9f9e863 authored by caimeng's avatar caimeng

小商户相关的需求

parent 17ce7176
......@@ -5,7 +5,7 @@
- 密码:123456
- 手机:135 8832 2792
### 开发环境
### 开发环境w
- 接口地址:http://47.99.245.36:8785
- 访问地址:本机IP地址
......
......@@ -190,6 +190,7 @@ export const asyncRoutes = [
]
},
// 审批管理
{
path: '/approval',
name: 'approval',
......@@ -210,9 +211,58 @@ 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: '授信详情'
}
}
]
},
// 借款管理
{
path: '/loan',
name: 'loan',
......@@ -251,9 +301,40 @@ 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: '放款确认(小商户)'
}
}
]
},
// 商户管理
{
path: '/merchant',
name: 'merchant',
......@@ -299,6 +380,51 @@ 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',
......
......@@ -492,7 +492,6 @@ export default {
},
// 客户认证信息
CustomerAuthInfo(data) {
return request({
......@@ -533,7 +532,7 @@ export default {
return request({
url: '/xdCredit/xinHuCreditDetail',
method: 'get',
params:data
params: data
})
},
// 信狐授信跟进
......@@ -546,5 +545,198 @@ export default {
},
/**
* 小商户相关接口
* 客户管理
* 授信管理
* 借款管理
* **/
// 客户列表
LocalClientList(data) {
return request({
url: '/xshClient/list',
method: 'post',
data
})
},
// 我的客户
LocalClientMine(data) {
return request({
url: '/xshClient/listByBd',
method: 'post',
data
})
},
// 客户详情
LocalClientDetail(data) {
return request({
url: '/xshClient/detailed',
method: 'get',
params: data
})
},
// 客户操作日志
LocalClientLog(data) {
return request({
url: '/xshClient/listOperLog',
method: 'get',
params: data
})
},
// 客户信息保存
LocalClientSave(data) {
return request({
url: '/xshClient/saveUserDetailed',
method: 'post',
data
})
},
// 客户提交授信
LocalClientSubmit(data) {
return request({
url: '/xshClient/submit',
method: 'get',
params: data
})
},
// 小商户预授信列表
LocalPreCreditList(data) {
return request({
url: '/xshCredit/preList',
method: 'post',
data
})
},
// 小商户预授信详情
LocalPreCreditDetail(data) {
return request({
url: '/xshCredit/preDetail',
method: 'get',
params: data
})
},
// 小商户预授信捞回
LocalPreCreditRescue(data) {
return request({
url: '/xshCredit/getBack',
method: 'post',
data
})
},
// 小商户初审列表
LocalFirstCreditList(data) {
return request({
url: '/xshCredit/creditList',
method: 'post',
data
})
},
// 小商户初审详情
LocalFirstCreditDetail(data) {
return request({
url: '/xshCredit/creditDetail',
method: 'get',
params: data
})
},
// 小商户初审提交
LocalFirstCreditSubmit(data) {
return request({
url: '/xshCredit/ratify',
method: 'post',
data
})
},
// 小商户二审列表
LocalSecondCreditList(data) {
return request({
url: '/xshCredit/rpdCreditList',
method: 'post',
data
})
},
// 小商户二审详情
LocalSecondCreditDetail(data) {
return request({
url: '/xshCredit/rpdCreditDetail',
method: 'get',
params: data
})
},
// 小商户二审提交
LocalSecondCreditSubmit(data) {
return request({
url: '/xshCredit/rpdRatify',
method: 'post',
data
})
},
// 授信报告数据
LocalCreditReport(data) {
return request({
url: '/xshCredit/thirdPartyReport',
method: 'get',
params: data
})
},
// 稽核审批列表
LocalLoanAuditList(data) {
return request({
url: '/xshLoan/auditRaiseList',
method: 'post',
data
})
},
// 稽核审批详情
LocalLoanAuditDetail(data) {
return request({
url: '/xshLoan/auditRaiseDetail',
method: 'get',
params:data
})
},
// 稽核审批提交
LocalLoanAuditSubmit(data) {
return request({
url: '/xshLoan/auditAllot',
method: 'post',
data
})
},
// 放款确认列表
LocalLoanList(data) {
return request({
url: '/xshLoan/loanConfirmList',
method: 'post',
data
})
},
// 放款确认
LocalLoanConfirm(data) {
return request({
url: '/xshLoan/confirmLoan',
method: 'post',
data
})
},
// 放款取消
LocalLoanCancel(data) {
return request({
url: '/xshLoan/cancelLoan',
method: 'post',
data
})
},
}
......@@ -151,7 +151,6 @@ instance.interceptors.request.use(
*/
instance.interceptors.response.use(
(response) => {
console.log(response,'返回结果');
const token = response.headers['x-auth-token']
token && Cookies.set('x-token', token);
return handleData(response)
......
<template>
<div v-if='detail!==null' class='page'>
<!--用户基础信息-->
<template v-if='detail.clientDetail!==null'>
<user-base-info
:contacts='detail.linkPhoneList'
:base-info='detail.clientDetail' />
</template>
<!--用户项目信息-->
<template v-if='detail.projectInfoResponse!==null'>
<user-project-info :project-info='detail.projectInfoResponse' />
</template>
<!--其它信息-->
<user-other-info :info='detail' />
<!--操作日志-->
<block-header title='操作日志' />
<template v-if='detail.operationLogResponse!==null'>
<operation-log :log='detail.operationLogResponse' />
</template>
<no-data v-else />
<!--申述操作-->
<template v-if='false'>
<pre-plead />
</template>
</div>
</template>
<script>
import API from '@/server/api'
export default {
name: 'PreDetail',
data() {
return {
isIncrease:false,
creditNo: '',
creditType: '',
detail: null
}
},
async created() {
const { query } = this.$route
if (query && query.creditNo) {
this.creditNo = query.creditNo
this.creditType = query.creditType
await this.init()
}
},
methods: {
async init() {
const creditNo = this.creditNo
const creditType = this.creditType
const result = await API.creditDetail({
creditNo,
creditType
})
this.detail = result.result;
if(this.$route.query && this.$route.query.increase){
this.isIncrease = true;
}
}
}
}
</script>
<style lang='scss' src='./index.scss'></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 } = row
let routeUrl = this.$router.resolve({
path: '/approval/localDetail',
query: { creditNo }
})
window.open(routeUrl.href, '_blank')
},
// 页码变更
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.LocalFirstCreditList({ ...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>
<div v-if='detail!==null' class='page'>
<block-header title='基础信息' />
<el-descriptions v-if='detail.preBasisInfoResponse!==null' style='margin-bottom: 20px;' border size='small'
:column='3'>
<el-descriptions-item label-class-name='labelCls' label='客户姓名'>{{ detail.preBasisInfoResponse.realName }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='手机号码'>{{ detail.preBasisInfoResponse.mobile }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='身份证号'>{{ detail.preBasisInfoResponse.idCard }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='户籍地址'>{{ detail.preBasisInfoResponse.address }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='申请时间'>{{ detail.preBasisInfoResponse.applyDate }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='授信类型'>{{ detail.preBasisInfoResponse.creditTypeStr }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='授信状态'>
{{ detail.preBasisInfoResponse.preStateStr }}
<template v-if='detail.preBasisInfoResponse.preState === "PRE_CREDIT_REFUSE"'>
<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.preBasisInfoResponse.regionName }}
</el-descriptions-item>
<!--<el-descriptions-item label-class-name='labelCls' label='首次授信'></el-descriptions-item>-->
</el-descriptions>
<!--操作日志-->
<block-header title='第三方报告' />
<div v-if='operationLogResponse && operationLogResponse.length'>
<operation-log :log='operationLogResponse' />
</div>
<no-data v-else />
<!--申述弹框-->
<template v-if='visible'>
<pre-plead
:dialog-visible='visible'
:item='item'
@handleClose='visible = false'
@callback='init'
/>
</template>
</div>
</template>
<script>
import API from '@/server/api'
import PreOperationLog from '@/components/operation-log'
export default {
name: 'PreDetail',
components: { PreOperationLog },
data() {
return {
visible: false,
item: null,
preCreditNo: '',
detail: null,
reportResponse:[],
operationLogResponse:[]
}
},
async created() {
const { query } = this.$route
if (query && query.preCreditNo) {
this.preCreditNo = query.preCreditNo
await this.init()
}
},
methods: {
async init() {
const preCreditNo = this.preCreditNo
const result = await API.preCreditDetail({
preCreditNo
})
const data = result.result
const {reportResponse,operationLogResponse} = data;
console.log(data,'返回数据')
this.reportResponse = reportResponse;
this.operationLogResponse = operationLogResponse;
this.detail = data;
},
// 申述
handlePlead() {
this.item = this.detail
this.item.preCreditNo = this.preCreditNo
this.visible = 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 } = row
this.$router.push({
path: '/approval/localPreDetail',
query: { preCreditNo }
})
},
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 result = await API.LocalPreCreditList({ ...params })
const { records, total } = result.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 } = row
let routeUrl = this.$router.resolve({
path: '/approval/localDetail',
query: { creditNo }
})
window.open(routeUrl.href, '_blank')
},
// 页码变更
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 class='page'>
<block-header title="操作日志"/>
<el-table border :data='list' style='width: 100%;margin-bottom: 20px'>
<el-table-column align='center' label='操作类型' prop="operationType"></el-table-column>
<el-table-column align='center' label='操作结果' prop="operationResult"></el-table-column>
<el-table-column align='center' label='操作时间' prop="operationTime"></el-table-column>
<el-table-column align='center' label='操作人' prop="operationName"></el-table-column>
<el-table-column align='center' label='备注' prop="memo"></el-table-column>
</el-table>
<block-header title="项目情况"/>
<el-descriptions class="table" :column="3" size="small" border>
<el-descriptions-item label-class-name="labelCls" label="借款人">{{ detail.name }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="申请金额">{{ detail.name }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="借款期限">{{ detail.name }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="借款利率">{{ detail.name }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="服务费率">{{ detail.name }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="还款方式">{{ detail.name }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="担保方式">{{ detail.name }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="客户来源">{{ detail.name }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="是否续贷">{{ detail.name }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="尽调人员">{{ detail.name }}</el-descriptions-item>
</el-descriptions>
<!--家庭情况-->
<family :data="list" :visible="false"></family>
<!--资产情况-->
<assets></assets>
<block-header title="负债情况"/>
<!--银行借贷-->
<borrow></borrow>
<!--信用卡-->
<credit-card></credit-card>
<!--担保-->
<warrant></warrant>
<!--法律诉讼-->
<lawsuit></lawsuit>
<!--资产负债表-->
<block-header title="资产负债表"/>
<el-form ref='form' label-suffix=':' label-width="160px" label-position="left" :model='debtForm'
class='form-inline'>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='mobile' label='预付账款'>
<el-input v-model='debtForm.mobile' clearable placeholder='按照总计'/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='应付账款'>
<el-input v-model='debtForm.mobile' clearable placeholder='按照总计'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='mobile' label='应收账款'>
<el-input v-model='debtForm.mobile' clearable placeholder='按照总计'/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='预收账款'>
<el-input v-model='debtForm.mobile' clearable placeholder='按照总计'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='mobile' label='现金及银行存款合计'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='短期贷款'>
<el-input v-model='debtForm.mobile' clearable placeholder='1年以内贷款'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='mobile' label='现金'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='信用卡使用总额'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='mobile' label='银行存款'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='商铺抵押'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='mobile' label='存货'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='住房抵押'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='mobile' label='流动资产合计'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='汽车抵押'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='mobile' label='固定资产合计'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='短期负债合计'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='mobile' label='商铺'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='长期贷款'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='mobile' label='住房'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='长期负债合计'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='mobile' label='汽车'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='其他负债'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='mobile' label='其他'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</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='mobile' label='其他经营资产合计'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</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='mobile' label='机器设备'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</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='mobile' label='总资产合计'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='总负债合计'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</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='mobile' label='所有者权益合计'>
<el-input v-model='debtForm.mobile' clearable placeholder='请输入'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item prop='mobile' label='流动比率'>
<el-input v-model='debtForm.mobile' clearable placeholder='流动资产/总资产'/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='资产负债比率'>
<el-input v-model='debtForm.mobile' clearable placeholder='总负债/总资产'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item prop='mobile' label='资产负债表备注'>
<el-input v-model='debtForm.mobile' type="textarea" clearable placeholder='请输入'/>
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item prop='mobile' label='总体情况文字说明'>
<el-input v-model='debtForm.mobile' type="textarea" clearable placeholder='请输入'/>
</el-form-item>
</el-col>
</el-row>
<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>
<block-header title="企业基本情况"/>
<el-descriptions class="table" :column="1" size="small" border>
<el-descriptions-item label-class-name="labelCls" label="企业历史沿革">{{ detail.name }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="具体经营情况">{{ detail.name }}</el-descriptions-item>
</el-descriptions>
<block-header title="风险点以及最终审批结论"/>
<el-descriptions class="table" :column="1" size="small" border>
<el-descriptions-item label-class-name="labelCls" label="风险点以及贷后预防措施">{{ detail.name }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="最终审批结果(时间利率还款方式)">{{
detail.name
}}
</el-descriptions-item>
</el-descriptions>
<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' }">
<el-image class='el-card-image' :src='o.img' @click.native='handleShow(o)'></el-image>
<div class='el-card-intro'>
<span>{{ o.title }}</span>
</div>
</el-card>
</el-col>
</el-row>
<!--上传-->
<template v-if="item!==null">
<data-upload
:visible="visible"
:item="item"
@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 DataUpload from "@/views/customer/components/DataUpload";
export default {
name: 'ClientDetail',
components: {
Family,
Assets,
Borrow,
CreditCard,
Lawsuit,
Warrant,
DataUpload
},
data() {
return {
clientNo: '',
params: {
clientNo: '',
current: 1,
size: 10
},
detail: {
name: 1
},
list: [],
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,
// 负债
debtForm: {
mobile: ''
}
}
},
async created() {
const {query} = this.$route
if (query && query.clientNo) {
this.clientNo = query.clientNo
this.params.clientNo = query.clientNo
await this.initOperationLog();
await this.init()
}
},
computed: {
...mapGetters(['searchData', 'user'])
},
methods: {
// 初始化详情信息
async init() {
try {
const clientNo = this.clientNo
const result = await API.LocalClientDetail({clientNo})
console.log(result, '详情');
} catch (err) {
this.$message({
message: '初始化授信详情失败',
type: 'error'
})
}
},
// 初始化操作日志
async initOperationLog() {
try {
const params = this.params
const result = await API.LocalClientLog({...params})
console.log(result, '操作日志结果')
} catch (err) {
this.$message({
message: '初始化客户操作日志失败',
type: 'error'
})
}
},
handleResult() {
this.visible = true;
},
handleClose() {
this.visible = false;
},
async handleConfirm(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
// 提交变更
this.params.userId = this.user.userId;
this.params.followId = this.user.userId;
this.params.followUser = this.user.userName;
const params = this.params;
const res = await API.CreditFollowXinHu({...params});
if (res.code === '200' && res.success) {
this.$message({
type: 'success',
message: res.message
})
this.handleClose();
await this.init();
} else {
this.$message({
type: 'error',
message: res.message
})
}
} else {
console.log('error submit!!');
return false;
}
});
},
// 资料附件点击文件夹
handleShow(o) {
this.item = o;
this.visible = true;
}
}
}
</script>
<style lang='scss' scoped>
.table {
margin-bottom: 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 }'>
<span>{{ row[item.prop] }}</span>
</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: '客户编号',
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
}
}
}
</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,
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 { clientNo } = row
const route = {
path: '/client/detail',
query: { clientNo }
}
this.$router.push(route)
}
}
}
</script>
<style lang='scss' scoped>
.page-list{
box-sizing: border-box;
padding: 20px;
}
</style>
<!-- 用户基础信息 -->
<template>
<div class="com-family">
<block-header title="资产情况">
<el-button type="primary" size="small" @click="handleCreate">新增</el-button>
</block-header>
<el-table border :data='list' style='width: 100%;margin-bottom: 20px'>
<el-table-column align='center' label='资产' prop="property"></el-table-column>
<el-table-column align='center' label='购入时间' prop="purchaseTime"></el-table-column>
<el-table-column align='center' label='面积&牌子' prop="brand"></el-table-column>
<el-table-column align='center' label='购入金额' prop="purchaseAmt"></el-table-column>
<el-table-column align='center' label='地址' prop="address"></el-table-column>
<el-table-column align='center' label='市价' prop="marketAmt"></el-table-column>
<el-table-column align='center' label='备注' prop="memo"></el-table-column>
<el-table-column align='center' label='操作'>
<template #default='{ row }'>
<el-button type="default" @click="handleEdit(row)">编辑</el-button>
<el-button type="danger" @click="handleDelete">删除</el-button>
</template>
</el-table-column>
</el-table>
<!--新增弹框-->
<el-dialog
v-drag
title='新增家庭成员'
:visible.sync='visible'
:destroy-on-close='true'
:close-on-click-modal='false'
:append-to-body='false'
width='800px'
:before-close='handleClose'
>
<el-form ref='form' label-suffix=':' label-width="110px" :rules='rules' :model='form'>
<el-row>
<el-col :span="12">
<el-form-item prop='name' label='资产'>
<el-input v-model="form.name" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='workAddress' label='市价'>
<el-input v-model="form.workAddress" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='familyAddress' label='地址'>
<el-input v-model="form.familyAddress" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='certNo' label='面积&牌子'>
<el-input v-model="form.certNo" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='relation' label='购入时间'>
<el-input v-model="form.relation" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='购入金额'>
<el-input v-model="form.mobile" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='memo' label='备注'>
<el-input v-model="form.memo" type="textarea" :rows="3" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot='footer' class='dialog-footer'>
<el-button type='default' @click='handleClose'>取 消</el-button>
<el-button type='primary' @click='onSubmit("form")'>确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import API from '@/server/api'
import {mapGetters} from 'vuex'
export default {
name: 'ComFamily',
data() {
return {
data: null,
list: [],
visible: false,
rules: {
user: [
{
required: true,
trigger: 'change',
message: '请选择转派人员'
}
]
},
form: {
property: '',
address: '',
brand: '',
purchaseTime: '',
purchaseAmt: '',
marketAmt: '',
memo: ''
}
}
},
computed: {
...mapGetters(['user'])
},
async created() {
},
methods: {
// 新增
async handleCreate() {
this.visible = true;
},
// 编辑
async handleEdit(row) {
this.visible = true;
this.form = row;
},
// 删除
async handleDelete() {
this.$confirm('是否确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async (res) => {
// 删除的代码
}).catch((e) => {
console.log(e, '取消申述了')
})
},
async onSubmit(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
const form = this.form;
const result = await API.approveReassignment({...form});
if (result.success) {
this.$message({
type: 'success',
message: '转派成功'
})
this.$emit('callback')
this.$emit('handleClose')
}
}
})
},
handleClose() {
this.visible = false
}
}
}
</script>
<style lang='scss'>
</style>
<!-- 用户基础信息 -->
<template>
<div class="com-family">
<block-header title="银行借款">
<el-button type="primary" size="small" @click="handleCreate">新增</el-button>
</block-header>
<el-table border :data='list' style='width: 100%;margin-bottom: 20px'>
<el-table-column align='center' width="50px" type="index" label="编号"></el-table-column>
<el-table-column align='center' label='借款人' prop="clientName"></el-table-column>
<el-table-column align='center' label='银行' prop="bank"></el-table-column>
<el-table-column align='center' label='借款金额' prop="loanAmt"></el-table-column>
<el-table-column align='center' label='借款余额' prop="loanBalance"></el-table-column>
<el-table-column align='center' label='开始时间' prop="startTime"></el-table-column>
<el-table-column align='center' label='到期时间' prop="endTime"></el-table-column>
<el-table-column align='center' label='还款方式' prop="backedWay"></el-table-column>
<el-table-column align='center' label='逾期次数' prop="overduedNumber"></el-table-column>
<el-table-column align='center' label='月还金额' prop="moonAmt"></el-table-column>
<el-table-column align='center' label='备注' prop="memo"></el-table-column>
<el-table-column align='center' label='操作'>
<template #default='{ row }'>
<el-button type="default" @click="handleEdit(row)">编辑</el-button>
<el-button type="danger" @click="handleDelete">删除</el-button>
</template>
</el-table-column>
</el-table>
<!--新增弹框-->
<el-dialog
v-drag
title='新增银行借款记录'
:visible.sync='visible'
:destroy-on-close='true'
:close-on-click-modal='false'
:append-to-body='false'
width='800px'
:before-close='handleClose'
>
<el-form ref='form' label-suffix=':' label-width="110px" :rules='rules' :model='form'>
<el-row>
<el-col :span="12">
<el-form-item prop='clientName' label='借款人'>
<el-input v-model="form.clientName" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='bank' label='银行'>
<el-input v-model="form.bank" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='loanAmt' label='借款金额'>
<el-input v-model="form.loanAmt" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='loanBalance' label='借款余额'>
<el-input v-model="form.loanBalance" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='startTime' label='开始时间'>
<el-input v-model="form.startTime" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='endTime' label='到期时间'>
<el-input v-model="form.endTime" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='backedWay' label='还款方式'>
<el-input v-model="form.backedWay" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='overduedNumber' label='逾期次数'>
<el-input v-model="form.overduedNumber" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='moonAmt' label='月还金额'>
<el-input v-model="form.moonAmt" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='memo' label='备注'>
<el-input v-model="form.memo" type="textarea" :rows="3" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot='footer' class='dialog-footer'>
<el-button type='default' @click='handleClose'>取 消</el-button>
<el-button type='primary' @click='onSubmit("form")'>确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import API from '@/server/api'
import {mapGetters} from 'vuex'
export default {
name: 'ComFamily',
data() {
return {
data: null,
list: [],
visible: false,
rules: {
user: [
{
required: true,
trigger: 'change',
message: '请选择转派人员'
}
]
},
form: {
clientName: '',
bank: '',
loanAmt: '',
loanBalance: '',
startTime: '',
endTime: '',
moonAmt: '',
memo: '',
overduedNumber: '',
backedWay: ''
}
}
},
computed: {
...mapGetters(['user'])
},
async created() {
},
methods: {
// 新增
async handleCreate() {
this.visible = true;
},
// 编辑
async handleEdit(row) {
this.visible = true;
this.form = row;
},
// 删除
async handleDelete() {
this.$confirm('是否确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async (res) => {
// 删除的代码
}).catch((e) => {
console.log(e, '取消申述了')
})
},
async onSubmit(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
const form = this.form;
const result = await API.approveReassignment({...form});
if (result.success) {
this.$message({
type: 'success',
message: '转派成功'
})
this.$emit('callback')
this.$emit('handleClose')
}
}
})
},
handleClose() {
this.visible = false
}
}
}
</script>
<style lang='scss'>
</style>
<!-- 用户基础信息 -->
<template>
<div class="com-family">
<block-header title="信用卡">
<el-button type="primary" size="small" @click="handleCreate">新增</el-button>
</block-header>
<el-table border :data='list' style='width: 100%;margin-bottom: 20px'>
<el-table-column align='center' width="50px" type="index" label="编号"></el-table-column>
<el-table-column align='center' label='持卡人' prop="clientName"></el-table-column>
<el-table-column align='center' label='银行' prop="bank"></el-table-column>
<el-table-column align='center' label='信用卡额度' prop="totalAmt"></el-table-column>
<el-table-column align='center' label='已使用额度' prop="usedAmt"></el-table-column>
<el-table-column align='center' label='信用卡使用率' prop="usedrate"></el-table-column>
<el-table-column align='center' label='逾期次数' prop="overduedNumber"></el-table-column>
<el-table-column align='center' label='月还金额' prop="moonAmt"></el-table-column>
<el-table-column align='center' label='备注' prop="memo"></el-table-column>
<el-table-column align='center' label='操作'>
<template #default='{ row }'>
<el-button type="default" @click="handleEdit(row)">编辑</el-button>
<el-button type="danger" @click="handleDelete">删除</el-button>
</template>
</el-table-column>
</el-table>
<!--新增弹框-->
<el-dialog
v-drag
title='新增银行借款记录'
:visible.sync='visible'
:destroy-on-close='true'
:close-on-click-modal='false'
:append-to-body='false'
width='800px'
:before-close='handleClose'
>
<el-form ref='form' label-suffix=':' label-width="110px" :rules='rules' :model='form'>
<el-row>
<el-col :span="12">
<el-form-item prop='clientName' label='持卡人'>
<el-input v-model="form.clientName" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='bank' label='银行'>
<el-input v-model="form.bank" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='totalAmt' label='信用卡额度'>
<el-input v-model="form.totalAmt" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='usedAmt' label='已使用额度'>
<el-input v-model="form.usedAmt" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='usedrate' label='信用卡使用率'>
<el-input v-model="form.usedrate" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='overduedNumber' label='逾期次数'>
<el-input v-model="form.overduedNumber" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='moonAmt' label='月还金额'>
<el-input v-model="form.moonAmt" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='memo' label='备注'>
<el-input v-model="form.memo" type="textarea" :rows="3" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot='footer' class='dialog-footer'>
<el-button type='default' @click='handleClose'>取 消</el-button>
<el-button type='primary' @click='onSubmit("form")'>确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import API from '@/server/api'
import {mapGetters} from 'vuex'
export default {
name: 'ComFamily',
data() {
return {
data: null,
list: [],
visible: false,
rules: {
user: [
{
required: true,
trigger: 'change',
message: '请选择转派人员'
}
]
},
form: {
clientName: '',
bank: '',
totalAmt: '',
usedAmt: '',
usedrate: '',
overduedNumber: '',
moonAmt: '',
memo: '',
}
}
},
computed: {
...mapGetters(['user'])
},
async created() {
},
methods: {
// 新增
async handleCreate() {
this.visible = true;
},
// 编辑
async handleEdit(row) {
this.visible = true;
this.form = row;
},
// 删除
async handleDelete() {
this.$confirm('是否确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async (res) => {
// 删除的代码
}).catch((e) => {
console.log(e, '取消申述了')
})
},
async onSubmit(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
const form = this.form;
const result = await API.approveReassignment({...form});
if (result.success) {
this.$message({
type: 'success',
message: '转派成功'
})
this.$emit('callback')
this.$emit('handleClose')
}
}
})
},
handleClose() {
this.visible = false
}
}
}
</script>
<style lang='scss'>
</style>
<!-- 用户基础信息 -->
<template>
<el-dialog
v-drag
:title='item.title'
:visible.sync='visible'
:destroy-on-close='true'
:close-on-click-modal='false'
:append-to-body='false'
width='60%'
:before-close='handleClose'
>
<!-- 原来如果有图片-->
<div class="data-upload-box">
<div>
<el-row :gutter='20'>
<template v-if="item.data.length">
<el-col v-for='(o, index) in item.data' :key='index' :span='4'>
<el-image class='local-card-image' :src='o' :preview-src-list="preview">
<div slot="error" class="image-slot">
<i class="el-icon-picture-outline"></i>
</div>
</el-image>
</el-col>
</template>
<el-col :span='4'>
<el-upload
class='auditUpload'
:action='UploadUrl'
:data='uploadParams'
:multiple='true'
:headers='headers'
list-type="picture-card"
:with-credentials='true'
:disabled='false'
:http-request='handleUpload'>
<i class="el-icon-plus"></i>
</el-upload>
</el-col>
</el-row>
</div>
</div>
<div slot='footer' class='dialog-footer'>
<el-button type='default' @click='handleClose'>取 消</el-button>
<el-button type='primary' @click='onSubmit("form")'>确 定</el-button>
</div>
</el-dialog>
</template>
<script>
import API from '@/server/api'
import _ from 'lodash'
import Axios from 'axios'
import {mapGetters} from 'vuex'
export default {
name: 'DataUpload',
props: {
visible: {
type: Boolean,
required: true
},
//eslint-disable-next-line vue/require-default-prop
item: {
type: Object,
require: true
}
},
data() {
return {
// 图片上传相关
headers: {},
uploadParams: {},
UploadUrl: process.env.VUE_APP_API_PATH,
type: '',
preview: [],
list: [],
rules: {
user: [
{
required: true,
trigger: 'change',
message: '请选择转派人员'
}
]
},
form: {
user: ''
}
}
},
computed: {
...mapGetters(['user'])
},
async created() {
if (this.item !== null) {
const {type, data} = this.item;
this.preview = data;
this.type = type
}
},
methods: {
// 上传
async handleUpload(obj) {
const {file} = obj
let fileName = 'jpg'
let fileType = 'LRD-ADMIN/local'
const resOssSign = await API.initOssSign({fileName, fileType})
console.log(resOssSign, 'oss返回信息')
if (resOssSign.success) {
const {accessId, dir, expire, host, policy, signature} = resOssSign.result
const data = new FormData()
data.append('key', dir)
data.append('OSSAccessKeyId', accessId)
data.append('policy', policy)
data.append('Signature', signature)
data.append('success_action_status', '200')
data.append('file', file)
try {
Axios({
url: host,
method: 'post',
data: data,
headers: {'Content-Type': 'multipart/form-data'}
}).then(async (res) => {
console.log(res, 'w')
this.form.natureUrl = host + dir;
this.result.natureUrl = host + dir;
this.$message.success('上传成功')
}).catch(e => {
throw new Error(e)
})
} catch (e) {
this.$message.error('上传报错')
}
}
},
async onSubmit(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
console.log(this.data, '数据')
const {creditNo} = this.data
const oldAllotId = this.user.userId;
const curAllotId = this.form.user;
const result = await API.approveReassignment({
creditNo,
curAllotId,
oldAllotId
});
if (result.success) {
this.$message({
type: 'success',
message: '转派成功'
})
this.$emit('callback')
this.$emit('handleClose')
}
}
})
},
handleClose() {
this.$emit('handleClose')
}
}
}
</script>
<style lang='scss'>
.local-card-image{
width: 148px;
height: 148px;
img{
width: 100%;
height: 100%;
}
}
</style>
<!-- 用户基础信息 -->
<template>
<div class="com-family">
<block-header title="家庭情况">
<el-button type="primary" size="small" @click="handleCreate">新增</el-button>
</block-header>
<el-table border :data='list' style='width: 100%;margin-bottom: 20px'>
<el-table-column align='center' label='姓名' prop="name"></el-table-column>
<el-table-column align='center' label='关系' prop="relation"></el-table-column>
<el-table-column align='center' label='身份证号码' prop="certNo"></el-table-column>
<el-table-column align='center' label='家庭地址' prop="familyAddress"></el-table-column>
<el-table-column align='center' label='联系电话' prop="mobile"></el-table-column>
<el-table-column align='center' label='单位/经营地址' prop="workAddress"></el-table-column>
<el-table-column align='center' label='主要资产' prop="property"></el-table-column>
<el-table-column align='center' label='月收入' prop="income"></el-table-column>
<el-table-column align='center' label='备注' prop="memo"></el-table-column>
<el-table-column align='center' label='操作'>
<template #default='{ row }'>
<el-button type="default" @click="handleEdit(row)">编辑</el-button>
<el-button type="danger" @click="handleDelete">删除</el-button>
</template>
</el-table-column>
</el-table>
<!--新增弹框-->
<el-dialog
v-drag
title='新增家庭成员'
:visible.sync='visible'
:destroy-on-close='true'
:close-on-click-modal='false'
:append-to-body='false'
width='800px'
:before-close='handleClose'
>
<el-form ref='form' label-suffix=':' label-width="110px" :rules='rules' :model='form'>
<el-row>
<el-col :span="12">
<el-form-item prop='name' label='姓名'>
<el-input v-model="form.name" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='relation' label='关系'>
<el-input v-model="form.relation" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='certNo' label='身份证号'>
<el-input v-model="form.certNo" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='mobile' label='联系电话'>
<el-input v-model="form.mobile" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='familyAddress' label='家庭地址'>
<el-input v-model="form.familyAddress" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='workAddress' label='单位/经营地址'>
<el-input v-model="form.workAddress" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='property' label='主要资产'>
<el-input v-model="form.property" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='income' label='月收入'>
<el-input v-model="form.income" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-form-item prop='memo' label='备注'>
<el-input v-model="form.memo" type="textarea" :rows="3" placeholder="请输入"/>
</el-form-item>
</el-form>
<div slot='footer' class='dialog-footer'>
<el-button type='default' @click='handleClose'>取 消</el-button>
<el-button type='primary' @click='onSubmit("form")'>确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import API from '@/server/api'
import {mapGetters} from 'vuex'
export default {
name: 'ComFamily',
data() {
return {
data: null,
list: [],
visible:false,
rules: {
user: [
{
required: true,
trigger: 'change',
message: '请选择转派人员'
}
]
},
form: {
name: '',
certNo: '',
familyAddress: '',
income: '',
memo: '',
mobile: '',
property: '',
relation: '',
workAddress: '',
}
}
},
computed: {
...mapGetters(['user'])
},
async created() {
},
methods: {
// 新增
async handleCreate() {
this.visible = true;
},
// 编辑
async handleEdit(row) {
this.visible = true;
this.form = row;
},
// 删除
async handleDelete() {
this.$confirm('是否确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async (res) => {
// 删除的代码
}).catch((e) => {
console.log(e, '取消申述了')
})
},
async onSubmit(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
const form = this.form;
const result = await API.approveReassignment({...form});
if (result.success) {
this.$message({
type: 'success',
message: '转派成功'
})
this.$emit('callback')
this.$emit('handleClose')
}
}
})
},
handleClose() {
this.visible = false
}
}
}
</script>
<style lang='scss'>
</style>
<!-- 用户基础信息 -->
<template>
<div class="com-family">
<block-header title="诉讼以及其他不良信息(被执行网,中国裁判文书网,百度查询)">
<el-button type="primary" size="small" @click="handleCreate">新增</el-button>
</block-header>
<el-table border :data='list' style='width: 100%;margin-bottom: 20px'>
<el-table-column align='center' width="50px" type="index" label="编号"></el-table-column>
<el-table-column align='center' label='涉诉人' prop="involvePeople"></el-table-column>
<el-table-column align='center' label='原/被告' prop="defendantOrPlaintiff"></el-table-column>
<el-table-column align='center' label='涉诉文件名称及编号' prop="document"></el-table-column>
<el-table-column align='center' label='涉诉事项' prop=""></el-table-column>
<el-table-column align='center' label='涉诉进展' prop="evolve"></el-table-column>
<el-table-column align='center' label='涉诉金额' prop="involveamt"></el-table-column>
<el-table-column align='center' label='涉诉结论' prop=""></el-table-column>
<el-table-column align='center' label='备注' prop="memo"></el-table-column>
<el-table-column align='center' label='操作'>
<template #default='{ row }'>
<el-button type="default" @click="handleEdit(row)">编辑</el-button>
<el-button type="danger" @click="handleDelete">删除</el-button>
</template>
</el-table-column>
</el-table>
<!--新增弹框-->
<el-dialog
v-drag
title='新增银行借款记录'
:visible.sync='visible'
:destroy-on-close='true'
:close-on-click-modal='false'
:append-to-body='false'
width='800px'
:before-close='handleClose'
>
<el-form ref='form' label-suffix=':' label-width="110px" :rules='rules' :model='form'>
<el-row>
<el-col :span="12">
<el-form-item prop='clientName' label='持卡人'>
<el-input v-model="form.clientName" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='bank' label='银行'>
<el-input v-model="form.bank" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='totalAmt' label='信用卡额度'>
<el-input v-model="form.totalAmt" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='usedAmt' label='已使用额度'>
<el-input v-model="form.usedAmt" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='usedrate' label='信用卡使用率'>
<el-input v-model="form.usedrate" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='overduedNumber' label='逾期次数'>
<el-input v-model="form.overduedNumber" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='moonAmt' label='月还金额'>
<el-input v-model="form.moonAmt" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='memo' label='备注'>
<el-input v-model="form.memo" type="textarea" :rows="3" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot='footer' class='dialog-footer'>
<el-button type='default' @click='handleClose'>取 消</el-button>
<el-button type='primary' @click='onSubmit("form")'>确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import API from '@/server/api'
import {mapGetters} from 'vuex'
export default {
name: 'ComFamily',
data() {
return {
data: null,
list: [],
visible: false,
rules: {
user: [
{
required: true,
trigger: 'change',
message: '请选择转派人员'
}
]
},
form: {
clientName: '',
bank: '',
totalAmt: '',
usedAmt: '',
usedrate: '',
overduedNumber: '',
moonAmt: '',
memo: '',
}
}
},
computed: {
...mapGetters(['user'])
},
async created() {
},
methods: {
// 新增
async handleCreate() {
this.visible = true;
},
// 编辑
async handleEdit(row) {
this.visible = true;
this.form = row;
},
// 删除
async handleDelete() {
this.$confirm('是否确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async (res) => {
// 删除的代码
}).catch((e) => {
console.log(e, '取消申述了')
})
},
async onSubmit(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
const form = this.form;
const result = await API.approveReassignment({...form});
if (result.success) {
this.$message({
type: 'success',
message: '转派成功'
})
this.$emit('callback')
this.$emit('handleClose')
}
}
})
},
handleClose() {
this.visible = false
}
}
}
</script>
<style lang='scss'>
</style>
<!-- 用户基础信息 -->
<template>
<div class="com-family">
<block-header title="信用卡">
<el-button type="primary" size="small" @click="handleCreate">新增</el-button>
</block-header>
<el-table border :data='list' style='width: 100%;margin-bottom: 20px'>
<el-table-column align='center' width="50px" type="index" label="编号"></el-table-column>
<el-table-column align='center' label='担保人' prop="security"></el-table-column>
<el-table-column align='center' label='被担保人' prop="vouchee"></el-table-column>
<el-table-column align='center' label='银行' prop="bank"></el-table-column>
<el-table-column align='center' label='借款金额' prop="loanAmt"></el-table-column>
<el-table-column align='center' label='借款余额' prop="loanBalance"></el-table-column>
<el-table-column align='center' label='开始日' prop="startTime"></el-table-column>
<el-table-column align='center' label='到期日' prop="endTime"></el-table-column>
<el-table-column align='center' label='还款方式' prop="backedWay"></el-table-column>
<el-table-column align='center' label='备注' prop="memo"></el-table-column>
<el-table-column align='center' label='操作'>
<template #default='{ row }'>
<el-button type="default" @click="handleEdit(row)">编辑</el-button>
<el-button type="danger" @click="handleDelete">删除</el-button>
</template>
</el-table-column>
</el-table>
<!--新增弹框-->
<el-dialog
v-drag
title='新增银行借款记录'
:visible.sync='visible'
:destroy-on-close='true'
:close-on-click-modal='false'
:append-to-body='false'
width='800px'
:before-close='handleClose'
>
<el-form ref='form' label-suffix=':' label-width="110px" :rules='rules' :model='form'>
<el-row>
<el-col :span="12">
<el-form-item prop='clientName' label='持卡人'>
<el-input v-model="form.clientName" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='bank' label='银行'>
<el-input v-model="form.bank" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='totalAmt' label='信用卡额度'>
<el-input v-model="form.totalAmt" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='usedAmt' label='已使用额度'>
<el-input v-model="form.usedAmt" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='usedrate' label='信用卡使用率'>
<el-input v-model="form.usedrate" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='overduedNumber' label='逾期次数'>
<el-input v-model="form.overduedNumber" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="12">
<el-form-item prop='moonAmt' label='月还金额'>
<el-input v-model="form.moonAmt" placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item prop='memo' label='备注'>
<el-input v-model="form.memo" type="textarea" :rows="3" placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot='footer' class='dialog-footer'>
<el-button type='default' @click='handleClose'>取 消</el-button>
<el-button type='primary' @click='onSubmit("form")'>确 定</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import API from '@/server/api'
import {mapGetters} from 'vuex'
export default {
name: 'ComFamily',
data() {
return {
data: null,
list: [],
visible: false,
rules: {
user: [
{
required: true,
trigger: 'change',
message: '请选择转派人员'
}
]
},
form: {
clientName: '',
bank: '',
totalAmt: '',
usedAmt: '',
usedrate: '',
overduedNumber: '',
moonAmt: '',
memo: '',
}
}
},
computed: {
...mapGetters(['user'])
},
async created() {
},
methods: {
// 新增
async handleCreate() {
this.visible = true;
},
// 编辑
async handleEdit(row) {
this.visible = true;
this.form = row;
},
// 删除
async handleDelete() {
this.$confirm('是否确认删除?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async (res) => {
// 删除的代码
}).catch((e) => {
console.log(e, '取消申述了')
})
},
async onSubmit(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
const form = this.form;
const result = await API.approveReassignment({...form});
if (result.success) {
this.$message({
type: 'success',
message: '转派成功'
})
this.$emit('callback')
this.$emit('handleClose')
}
}
})
},
handleClose() {
this.visible = false
}
}
}
</script>
<style lang='scss'>
</style>
......@@ -15,7 +15,7 @@
<el-descriptions-item label-class-name="labelCls" label="公积金">{{ detail.gjj }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="社保">{{ detail.shebao }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="职业">{{ detail.occupation }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="车产信息">{{ detail.carValue }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="车产信息">{{ detail.vehicle }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="房产信息">{{ detail.house }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" :span="2" label="投保信息">{{ detail.insurance }}
</el-descriptions-item>
......@@ -43,7 +43,7 @@
<el-descriptions-item label-class-name="labelCls" label="姓名">{{ detail.name }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" :span="2" label="手机号">{{ detail.phone }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="车辆类型">{{ detail.carTypeStr }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="车辆品牌与型号">{{ detail.carValue }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="车辆品牌与型号">{{ detail.carName }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="人员所在城市">{{ detail.carCity }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="贷款额度">{{ detail.loanAmount }}</el-descriptions-item>
<el-descriptions-item label-class-name="labelCls" label="贷款期限">{{ detail.loanPeriod }}</el-descriptions-item>
......
<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,
label: '手机号码',
prop: 'mobile'
},
{
order: 5,
label: '借款金额',
prop: 'loanAmt'
},
{
order: 7,
label: 'BD姓名',
prop: 'bd'
},
{
order: 9,
label: '借款时间',
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 { orderNo } = row
this.$router.push({
path: '/loan/detail',
query: {
orderNo
}
})
},
// 页码变更
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>
<div v-if='detail!==null' class='page'>
<!--用户项目信息-->
<template v-if='project!==null'>
<block-header title='项目信息'/>
<el-descriptions style='margin-bottom: 20px;' :content-style='CS' :label-style='LS' border size='small'
:column='3'>
<el-descriptions-item project label='订单编号'>{{ orderNo }}</el-descriptions-item>
<el-descriptions-item project label='项目名称'>{{ project.loanName }}</el-descriptions-item>
<el-descriptions-item project label='申请时间'>{{ project.loanApplyDate }}</el-descriptions-item>
<el-descriptions-item project label='借款状态'>
<span>{{ project.loanStatusStr }}</span>
</el-descriptions-item>
<el-descriptions-item project label='医院名称'>{{ project.regName }}</el-descriptions-item>
<el-descriptions-item project label='项目金额(元)'>{{ money(project.projectAmount) }}</el-descriptions-item>
<el-descriptions-item project label='借款金额(元)'>{{ money(project.loanIntentionAmount) }}</el-descriptions-item>
<el-descriptions-item project label='申请期数'>{{ project.loanIntentionNum }}</el-descriptions-item>
<el-descriptions-item project label='申请项目'>{{ project.projectName }}</el-descriptions-item>
<el-descriptions-item project label='还款方式'>{{ project.repaymentMode }}</el-descriptions-item>
<el-descriptions-item project label='手术时间'>{{ project.projectTime }}</el-descriptions-item>
</el-descriptions>
</template>
<!--用户基础信息-->
<template v-if='client!==null'>
<block-header title='客户信息'>
<el-button type="primary" @click="handleEditUserInfo" size="small">编辑</el-button>
</block-header>
<el-descriptions style='margin-bottom: 20px;' :content-style='CS' :label-style='LS' border size='small'
:column='3'>
<el-descriptions-item project label='客户姓名'>{{ client.realName }}</el-descriptions-item>
<el-descriptions-item project label='身份证号'>{{ client.idCard }}</el-descriptions-item>
<el-descriptions-item project label='手机号码'>{{ client.mobile }}</el-descriptions-item>
<el-descriptions-item project label='学历'>{{ client.educationCodeStr }}</el-descriptions-item>
<el-descriptions-item project label='婚姻状况'>{{ client.marriageStr }}</el-descriptions-item>
<el-descriptions-item project label='工作行业'>{{ client.workIndustryStr }}</el-descriptions-item>
<el-descriptions-item project label='工作城市'>{{ client.companyAddress }}</el-descriptions-item>
<el-descriptions-item project label='公司全称'>{{ client.companyName }}</el-descriptions-item>
<el-descriptions-item project label='QQ/微信'>{{ client.qqWechar }}</el-descriptions-item>
<el-descriptions-item project label='合同展示地址'>{{ client.address }}</el-descriptions-item>
<el-descriptions-item project label='月收入'>{{ client.selfMonthIncomeStr }}</el-descriptions-item>
<el-descriptions-item project label='紧急联系人姓名'>{{ client.firstName }}</el-descriptions-item>
<el-descriptions-item project label='紧急联系人关系'>{{ client.firstRelationStr }}</el-descriptions-item>
<el-descriptions-item project label='紧急联系人电话'>{{ client.firstPhone }}</el-descriptions-item>
</el-descriptions>
</template>
<!--客户身份证-->
<block-header title='客户身份证信息'/>
<template v-if='clientIdCardInfoResponse.length'>
<el-row :gutter='20'>
<el-col v-for='(o, index) in clientIdCardInfoResponse' :key='index' :span='4'>
<el-card :body-style="{ padding: '10px' }">
<el-image class='el-card-image' :src='o[1]'
@click.native='showImgViewer(o[1])'></el-image>
<div class='el-card-intro'>
<span v-if='o[0]==="frontImgPath"'>身份证正面</span>
<span v-else>身份证反面</span>
</div>
</el-card>
</el-col>
</el-row>
</template>
<no-data v-else/>
<!--补充附件信息-->
<block-header title='补充附件信息'/>
<template v-if='xcxSupplAttachInfo!==null && xcxSupplAttachInfo.length'>
<el-row :gutter='20'>
<el-col v-for='(o, index) in xcxSupplAttachInfo' :key='index' :span='4'>
<el-card :body-style="{ padding: '10px' }">
<el-image class='el-card-image' :src='o.screenList[0]'
@click.native='showImgViewer(o.screenList[0])'>
<div slot='error' class='image-slot'>
<span>未上传</span>
</div>
</el-image>
<div class='el-card-intro'>
<span>{{ o.attachTypeStr }}</span>
</div>
</el-card>
</el-col>
</el-row>
</template>
<no-data v-else/>
<!--资金方-->
<template v-if='capitalName!==null'>
<block-header title='资方信息'/>
<el-descriptions style='margin-bottom: 20px;' :content-style='CS' :label-style='LS' border size='small'
:column='3'>
<el-descriptions-item project label='资金方'>{{ capitalName }}</el-descriptions-item>
</el-descriptions>
</template>
<!--BD信息-->
<template v-if='bdInfoResponse!==null'>
<block-header title='BD信息'/>
<el-descriptions style='margin-bottom: 20px;' direction='vertical' :content-style='CS' :label-style='LS' border
size='small'
:column='4'>
<el-descriptions-item project label='BD编号'>{{ bdInfoResponse.bdNo }}</el-descriptions-item>
<el-descriptions-item project label='BD名称'>{{ bdInfoResponse.bdName }}</el-descriptions-item>
<el-descriptions-item project label='部门信息'>{{ bdInfoResponse.regionName }}</el-descriptions-item>
<el-descriptions-item project label='BD用户名'>{{ bdInfoResponse.loginName }}</el-descriptions-item>
</el-descriptions>
</template>
<el-collapse v-model='activeNames' style='margin: 15px 0' @change='handleChange'>
<el-collapse-item title='人脸信息' name='1'>
<!--人脸 默认折叠-->
<template>
<block-header title='人脸信息'/>
<template v-if='faceInfoResponse.length'>
<el-row :gutter='20'>
<el-col v-for='(o, index) in faceInfoResponse' :key='index' :span='4'>
<el-card :body-style="{ padding: '10px' }">
<el-image class='el-card-image' :src='o[1]'
@click.native='showImgViewer(o[1])'></el-image>
<div class='el-card-intro'>
<span v-if='o[0]==="panoramaImgPath"'>全景照</span>
<span v-else-if='o[0]==="randomImgPath"'>随机照</span>
<span v-else>最佳人脸照</span>
</div>
</el-card>
</el-col>
</el-row>
</template>
<no-data v-else/>
</template>
</el-collapse-item>
<el-collapse-item title='授信附件信息' name='2'>
<!--授信附件 默认折叠 -->
<template>
<block-header title='授信附件信息'/>
<template v-if='creditAttachInfo.length'>
<el-row :gutter='20'>
<el-col v-for='(o, index) in creditAttachInfo' :key='index' :span='4'>
<el-card :body-style="{ padding: '10px' }">
<el-image class='el-card-image' :src='o.screenList[0]'
@click.native='showImgViewer(o.screenList[0])'>
<div slot='error' class='image-slot'>
<span>未上传</span>
</div>
</el-image>
<div class='el-card-intro'>
<span>{{ o.attachTypeStr }}</span>
</div>
</el-card>
</el-col>
</el-row>
</template>
<no-data v-else/>
</template>
</el-collapse-item>
<el-collapse-item title='客户附件信息' name='3'>
<!--客户附件 默认折叠 -->
<template>
<block-header title='客户附件信息'/>
<template v-if='supplAttachInfo && supplAttachInfo.length'>
<el-row :gutter='20'>
<el-col v-for='(o, index) in supplAttachInfo' :key='index' :span='4'>
<el-card :body-style="{ padding: '10px' }">
<el-image class='el-card-image' :src='o.screenList[0]'
@click.native='showImgViewer(o.screenList[0])'>
<div slot='error' class='image-slot'>
<span>未上传</span>
</div>
</el-image>
<div class='el-card-intro'>
<span>{{ o.attachTypeStr }}</span>
</div>
</el-card>
</el-col>
</el-row>
</template>
<no-data v-else/>
</template>
</el-collapse-item>
</el-collapse>
<!--操作日志-->
<block-header title='操作日志'/>
<template v-if='detail.operationLogResponse!==null'>
<operation-log :log='detail.operationLogResponse'/>
</template>
<!--稽核弹框-->
<template v-if='visible'>
<div style='margin-top: 15px'>
<block-header title='稽核审批'/>
<!--搜索-->
<el-form ref='dForm' label-suffix=':' label-width='90px' :rules='dRules' :model='dForm' class='form-inline'>
<el-form-item prop='approveOpinion' label='审批意见'>
<template v-if='searchData!==null'>
<el-radio-group v-model='dForm.approveOpinion'>
<el-radio v-for='(item,index) in searchData.opinionEnumResponses'
:key='index'
:label='item.code'>{{ item.desc }}
</el-radio>
</el-radio-group>
</template>
</el-form-item>
<el-form-item prop='memo' label='备注'>
<el-input v-model='dForm.memo' type='textarea' clearable placeholder='请输入备注'/>
</el-form-item>
<el-form-item>
<el-button type='primary' @click='onSubmit("dForm")'>确 定</el-button>
<el-button type='default' @click='onBack'>取 消</el-button>
</el-form-item>
</el-form>
</div>
</template>
<!--额外附件-->
<block-header title='额外附件资料'/>
<template v-if='addAttachInfo!==null && addAttachInfo.length'>
<el-row :gutter='20'>
<el-col v-for='(o, index) in addAttachInfo' :key='index' :span='4'>
<el-card :body-style="{ padding: '10px' }">
<el-image class='el-card-image' :src='o'
@click.native='showImgViewer(o)'>
<div slot='error' class='image-slot'>
<span>未上传</span>
</div>
</el-image>
</el-card>
</el-col>
</el-row>
</template>
<no-data v-else/>
<el-form label-suffix=':' label-width='80px' label-position='left'>
<el-form-item label='附件图片'>
<el-upload
class='auditUpload'
:action='UploadUrl'
:data='uploadParams'
:multiple='true'
:headers='headers'
:show-file-list='false'
:with-credentials='true'
:disabled='false'
:http-request='handleUpload'>
<el-button size='mini' type='primary'>点击上传</el-button>
</el-upload>
</el-form-item>
</el-form>
<!-- 图片预览-->
<el-image-viewer v-if='imgViewerVisible' :on-close='closeImgViewer' :url-list='imgList'/>
<!--编辑用户信息-->
<el-dialog title="编辑用户信息" :destroy-on-close="true" :visible.sync="dialogVisible" width="50%"
:before-close="handleDialogClose">
<el-form ref="userForm" :model='userForm' label-suffix=':' label-width='120px' label-position='left'>
<el-form-item prop="address" label='合同展示地址'>
<el-input v-model="userForm.address"></el-input>
</el-form-item>
<el-form-item>
<el-button type='primary' @click='onUpdate'>更 新</el-button>
<el-button type='default' @click="handleDialogClose">取 消</el-button>
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<script>
import API from '@/server/api'
import {mapGetters} from 'vuex'
import Cookies from 'js-cookie'
import Axios from 'axios'
export default {
name: 'LoanDetail',
data() {
return {
// 编辑信息
dialogVisible: false,
// 图片上传相关
headers: {},
uploadParams: {},
UploadUrl: process.env.VUE_APP_API_PATH,
dRules: {
memo: [
{
required: true,
trigger: 'blur',
message: '请输入备注'
}
],
approveOpinion: [
{
required: true,
trigger: 'blur',
message: '请选择审批意见'
}
]
},
dForm: {
memo: '',
approveOpinion: '',
currentAction: '',
orderNo: '',
stepsNo: '',
userId: ''
},
activeNames: '',
// 稽核审批
visible: false,
isLoan: true,
orderNo: '',
detail: null,
project: null,
client: null,
bdInfoResponse: null,
collectionAccountResponse: null,// 收款方
capitalName: null,// 资金方
userForm: {
address: '',
userId: '',
},
approvalResultResponse: null,
faceInfoResponse: [],
creditAttachInfo: [],
clientIdCardInfoResponse: [],
reportResponse: null,
thirdPartyReport: null,
supplAttachInfo: [],
imgViewerVisible: false,
imgList: [],
xcxSupplAttachInfo: null,
addAttachInfo: null,
}
},
computed: {
...mapGetters(['searchData', 'user'])
},
async created() {
const {query} = this.$route
if (query && query.orderNo) {
this.orderNo = query.orderNo
await this.init()
}
},
methods: {
// 上传
async handleUpload(obj) {
const {clientDetail, addAttachInfo} = this.detail
const {file} = obj
let fileName = 'jpg'
let fileType = 'LRD-ADMIN/audit'
const resOssSign = await API.initOssSign({fileName, fileType})
console.log(resOssSign, 'oss返回信息')
if (resOssSign.success) {
const {accessId, dir, expire, host, policy, signature} = resOssSign.result
const data = new FormData()
data.append('key', dir)
data.append('OSSAccessKeyId', accessId)
data.append('policy', policy)
data.append('Signature', signature)
data.append('success_action_status', '200')
data.append('file', file)
try {
Axios({
url: host,
method: 'post',
data: data,
headers: {'Content-Type': 'multipart/form-data'}
}).then(async (res) => {
console.log(res, 'w')
const uploadFileUrl = host + dir
const annexList = [uploadFileUrl]
const result = await API.saveExtraImg({
annexList,
creditNo: clientDetail.creditNo
})
if (result.success) {
this.$message.success('上传成功')
addAttachInfo.push(uploadFileUrl)
this.detail.addAttachInfo = addAttachInfo
}
}).catch(e => {
throw new Error(e)
})
} catch (e) {
this.$message.error('上传报错')
}
}
},
// 初始化详情
async init() {
const orderNo = this.orderNo
const result = await API.loanDetail({
orderNo
})
const data = result.result
const {
bdInfoResponse,
clientDetail,
capitalName,
clientIdCardInfoResponse,
collectionAccountResponse,
creditAttachInfo,
faceInfoResponse,
approvalResultResponse,
projectInfoResponse,
repayAccountResponse,
reportResponse,
supplAttachInfo,
thirdPartyReport,
xcxSupplAttachInfo,
addAttachInfo
} = data
this.project = projectInfoResponse
this.client = clientDetail
this.capitalName = capitalName // 资金方
this.collectionAccountResponse = collectionAccountResponse // 收款方信息
this.repayAccountResponse = repayAccountResponse // 还款方信息
this.bdInfoResponse = bdInfoResponse // 还款方信息
this.userForm.address = clientDetail.address;
this.userForm.userId = clientDetail.userId;
this.approvalResultResponse = approvalResultResponse
this.clientIdCardInfoResponse = Object.entries(clientIdCardInfoResponse)
this.faceInfoResponse = Object.entries(faceInfoResponse)
this.creditAttachInfo = creditAttachInfo // 授信图片信息
this.reportResponse = reportResponse
this.thirdPartyReport = JSON.parse(thirdPartyReport)
this.supplAttachInfo = supplAttachInfo // 附件信息
this.addAttachInfo = addAttachInfo
if (xcxSupplAttachInfo && xcxSupplAttachInfo.length > 0) {
this.xcxSupplAttachInfo = xcxSupplAttachInfo
}
this.detail = data
if (this.$route.query && this.$route.query.type) {
this.visible = true
this.dForm.orderNo = this.orderNo
this.dForm.stepsNo = projectInfoResponse.stepsNo
this.dForm.currentAction = projectInfoResponse.currentAction
}
},
// 手风琴折叠那啥
handleChange(val) {
this.activeNames = val
},
// 稽核审批提交
onSubmit(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
this.$confirm('是否确认提交?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async (res) => {
console.log(res, '是啥')
const form = this.dForm
form.userId = this.user.userId
console.log(form, '表单数据')
const result = await API.loanAuditSubmit({
...form
})
if (result.success) {
this.$message({
type: 'success',
message: '操作成功!'
})
}
this.onBack()
}).catch((e) => {
console.log(e, '取消申述了')
})
}
})
},
// 返回
onBack() {
this.$router.back()
},
// 图片上传
arraySplice(obj, result) {
if (Array.isArray(obj)) {
obj.forEach(item => {
result = result.concat(item.screenList)
})
} else {
const {values} = Object
for (let val of values(obj)) {
if (val) result.push(val)
}
}
return result
},
showImgViewer(firstImg) {
const {
clientIdCardInfoResponse,
creditAttachInfo,
faceInfoResponse,
supplAttachInfo,
xcxSupplAttachInfo,
addAttachInfo
} = this.detail
let imgArray = []
// 客户身份证
if (clientIdCardInfoResponse) {
imgArray = this.arraySplice(clientIdCardInfoResponse, imgArray)
}
// 补充图片
if (xcxSupplAttachInfo && xcxSupplAttachInfo.length) {
imgArray = this.arraySplice(xcxSupplAttachInfo, imgArray)
}
// 活体
if (faceInfoResponse) {
imgArray = this.arraySplice(faceInfoResponse, imgArray)
}
// 授信图片
if (creditAttachInfo && creditAttachInfo.length) {
imgArray = this.arraySplice(creditAttachInfo, imgArray)
}
// 附件图片
if (supplAttachInfo && supplAttachInfo.length) {
imgArray = this.arraySplice(supplAttachInfo, imgArray)
}
// 额外的图片
if (addAttachInfo && addAttachInfo.length) {
addAttachInfo.forEach(item => {
imgArray.push(item)
})
}
// 获取当前点击图片的索引
const curIndex = imgArray.findIndex((item) => item === firstImg)
// 把索引之前的内容copy一份
const ArrayHeader = imgArray.slice(0, curIndex)
// 删除索引之前的内容
imgArray.splice(0, curIndex)
console.log(ArrayHeader, imgArray)
imgArray = imgArray.concat(ArrayHeader)
console.log(imgArray)
this.imgList = imgArray
this.imgList = imgArray
this.imgViewerVisible = true
const m = (e) => {
e.preventDefault()
}
document.body.style.overflow = 'hidden'
document.addEventListener('touchmove', m, false) // 禁止页面滑动
},
closeImgViewer() {
this.imgViewerVisible = false
const m = (e) => {
e.preventDefault()
}
document.body.style.overflow = 'auto'
document.removeEventListener('touchmove', m, true)
},
// 编辑用户信息
handleEditUserInfo() {
this.dialogVisible = true;
},
// 关闭弹框
handleDialogClose() {
this.dialogVisible = false;
},
// 更新用户信息
onUpdate() {
this.$refs['userForm'].validate(async (valid) => {
if (valid) {
this.$confirm('是否确认更新?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async (res) => {
const form = this.userForm;
const result = await API.CustomerClientInfoUpdate({
...form
})
if (result.success) {
this.$message({
type: 'success',
message: '操作成功!'
})
await this.init();
}
this.dialogVisible = false;
}).catch((e) => {
console.log(e, '取消更新了')
})
}
})
}
}
}
</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='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>
<el-form-item prop='loanName' label='项目名称'>
<el-input v-model='queryForm.loanName' clearable placeholder='请输入客户手机号码' />
</el-form-item>
<template v-if='searchData!==null'>
<el-form-item prop='capitalCodeLoanSign' label='资金渠道'>
<el-select v-model='queryForm.capitalCodeLoanSign' :popper-append-to-body='false' style='width: 100%;'
clearable>
<el-option
v-for='(item,index) in searchData.financierResponseList'
:key='index'
:value='item.capitalCodeLoanSign'
:label='item.message'
@click.native='handleCapitalChange(item)'>
</el-option>
</el-select>
</el-form-item>
</template>
<template v-if='searchData!==null'>
<el-form-item prop='loanResult' label='放款确认结果'>
<el-select v-model='queryForm.loanResult' :popper-append-to-body='false' style='width: 100%;'
clearable>
<el-option
v-for='(item,index) in searchData.loanConfirmResultResponseList'
:key='index'
:value='item.loanConfirmResult'
:label='item.loanConfirmResultStr'>
</el-option>
</el-select>
</el-form-item>
</template>
<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='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.loanAmount) }}
</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==="004"'>
<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'>
<check
:title='DialogTitle'
:visible='DialogVisible'
:item='item'
@handleClose='DialogVisible = false'
@callback='fetchData' />
</template>
</div>
</template>
<script>
import _ from 'lodash'
import API from '@/server/api'
import { mapGetters } from 'vuex'
import Check from './components/check'
export default {
name: 'LoanAudit',
components: {
'Check': Check
},
data() {
return {
DialogTitle: '',
DialogVisible: false,
dialogForm: {
loanAmount: '',
clientName: '',
currentAction: '',
orderNo: '',
memo: '',
stepsNo: '',
userId: '',
payChannelApi: ''
},
payChannelApiResponses: [],
checkList: ['订单编号', '项目名称', '客户姓名', '手机号码', '借款金额', '借款期数', 'BD姓名', '商户区域', '创建时间', '放款状态', '放款确认结果', '资金渠道'],
columns: [
{
order: 1,
label: '订单编号',
prop: 'orderNo'
},
{
order: 2,
label: '项目名称',
prop: 'loanName'
},
{
order: 3,
label: '客户姓名',
prop: 'realName'
},
{
order: 3,
label: '手机号码',
prop: 'mobile'
},
{
order: 5,
label: '借款金额',
prop: 'loanAmount'
},
{
order: 6,
label: '借款期数',
prop: 'loanNum'
},
{
order: 7,
label: 'BD姓名',
prop: 'bdName'
},
{
order: 8,
label: '商户区域',
prop: 'regionName'
},
{
order: 9,
label: '创建时间',
width: 110,
prop: 'gmtCreated'
},
{
order: 10,
label: '放款状态',
prop: 'loanStatusStr'
},
{
order: 11,
label: '资金渠道',
prop: 'loanSignStr'
},
{
order: 12,
label: '放款确认结果',
prop: 'loanResultStr'
}
],
list: [],
listLoading: true,
pickerConfig: this.datePickerOptions,
total: 1,
rules: {
memo: [
{
required: true,
trigger: 'blur',
message: '请输入备注'
}
]
//payChannelApi: [
// {
// required: true,
// trigger: 'blur',
// message: '请选择放款渠道'
// }
//]
},
queryForm: {
current: 1,
size: 10,
certNo:'',
loanResult: 'TO_BE_CONFIRMED',
mobile: '',
orderNo: '',
loanName: '',
clientName: '',
time: '',
startTime: '',
endTime: '',
userId: '',
capitalCode: '',
loanSign: '',
capitalCodeLoanSign: ''
}
}
},
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: {
handleClose() {
this.DialogVisible = false
this.$refs['dialogForm'].resetFields()
},
onReset(formName) {
if (formName) {
this.queryForm.capitalCode = ''
this.queryForm.loanSign = ''
this.$refs[formName].resetFields()
}
},
// 资金方选择下拉
handleCapitalChange(item) {
if (item) {
const { capitalCode, loanSign } = item
this.queryForm.capitalCode = capitalCode
this.queryForm.loanSign = loanSign
}
},
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' ? '确认放款' : '取消放款'
console.log(row, type)
},
// 页码变更
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'>
.custom-table-checkbox {
.el-checkbox {
display: block !important;
margin: 0 0 $base-padding/4 0;
}
}
.action-bar {
margin-bottom: 15px;
}
</style>
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