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>
This diff is collapsed.
<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>
This diff is collapsed.
This diff is collapsed.
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