Commit 73545cd7 authored by caimeng's avatar caimeng

6月9号提交一下

parent 1128f67c
......@@ -22,3 +22,6 @@
.el-dialog__header{
border-bottom: 1px solid #ebeef5;
}
.el-descriptions-row .el-descriptions-item__cell{
text-align: center !important;
}
......@@ -2,28 +2,45 @@
<template>
<div class='com'>
<block-header title='审批结果' />
<el-descriptions style='margin-bottom: 20px;' border size='small' :column='3'>
<el-descriptions-item label-class-name='labelCls' label='用户申请金额'>{{result.applyAmount}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='剩余未还本金'>{{result.creditAmount}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='机审建议额度'>{{result.manualAmount}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='人审额度'>{{result.partnerGrade}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='合作商等级'>{{result.surplusNoPrincipal}}</el-descriptions-item>
<el-descriptions style='margin-bottom: 20px;' border size='small' direction="vertical" :column='5'>
<el-descriptions-item label-class-name='labelCls' label='用户申请金额'>{{ applyAmount }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='剩余未还本金'>{{ creditAmount }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='机审建议额度'>{{ manualAmount }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='人审额度'>{{ partnerGrade }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='合作商等级'>{{ surplusNoPrincipal }}</el-descriptions-item>
</el-descriptions>
</div>
</template>
<script>
import _ from 'lodash'
import API from '@/server/api'
import { money } from '@/utils/index'
export default {
name: 'ApprovalResult',
props:{
props: {
//eslint-disable-next-line vue/require-default-prop
result:{
type:Object,
require:true
result: {
type: Object,
require: true
}
},
data() {
return {
applyAmount: '',
creditAmount: '',
manualAmount: '',
partnerGrade: '',
surplusNoPrincipal: ''
}
},
created() {
if (this.result) {
const { applyAmount, creditAmount, manualAmount, partnerGrade } = this.result
this.applyAmount = money(applyAmount)
this.creditAmount = money(creditAmount)
this.manualAmount = money(manualAmount)
this.partnerGrade = money(partnerGrade)
}
}
}
......
<!-- 预授信申述 -->
<template>
<el-dialog
:visible.sync='dialogVisible'
:before-close='handleClose'
:destroy-on-close='true'
width='45%'
title='审批'>
<div class='page'>
<!--搜索-->
<el-form ref='dForm' label-suffix=':' label-width='120px' :rules='rules' :model='form' class='form-inline'>
<el-form-item prop='perAllotAmount' label='人审额度(元)'>
<el-input v-model='form.perAllotAmount' clearable placeholder='请输入人审额度' />
</el-form-item>
<template v-if='searchData!==null'>
<el-form-item prop='capitalCode' label='选择资方'>
<el-row>
<el-col :span='14'>
<el-select v-model='form.capitalCode' style='width: 100%;' clearable>
<el-option
v-for='(item,index) in searchData.financierResponseList'
:key='index'
:value='item.capitalCode'
:label='item.message'>
</el-option>
</el-select>
</el-col>
<template v-if='form.capitalCode==="FENGSHENGBUSINESS"'>
<el-col :span='8'>
<el-button style='margin-left: 10px' type='primary' @click='handleRisk'>风审查询</el-button>
</el-col>
</template>
</el-row>
</el-form-item>
</template>
<el-form-item prop='perAllotAmount' label='风审查询结果'>
</el-form-item>
<el-form-item prop='memo' label='备注'>
<el-input v-model='form.memo' type='textarea' clearable placeholder='请输入备注' />
</el-form-item>
<el-form-item prop='approveStatus' label='审批意见'>
<template v-if='searchData!==null'>
<el-radio-group v-model='form.approveOpinion'>
<el-radio v-for='(item,index) in searchData.allotOpinionEnumResponseList'
:key='index'
:label='item.code'>{{ item.desc }}
</el-radio>
</el-radio-group>
</template>
</el-form-item>
</el-form>
</div>
<span slot='footer' class='dialog-footer'>
<el-button type='primary' @click='onSubmit("dForm")'>确 定</el-button>
<el-button @click='handleClose'>取 消</el-button>
</span>
</el-dialog>
</template>
<script>
import API from '@/server/api'
import _ from 'lodash'
import { mapGetters } from 'vuex'
export default {
name: 'Approval',
props: {
dialogVisible: {
type: Boolean,
require: true
},
item: {
type: Object,
require: true
}
},
data() {
return {
financeList: [],
rules: {
capitalCode: [
{
required: true,
trigger: 'blur',
message: '请选择放款资方'
}
],
perAllotAmount: [
{
required: true,
trigger: 'blur',
message: '请输入人审额度'
}
]
},
hasRisk: false,
form: {
approveStatus: '',
capitalCode: '',
creditNo: '',
memo: '',
perAllotAmount: '',
userId: ''
}
}
},
computed: {
...mapGetters(['searchData', 'user'])
},
async created() {
console.log(this.item, 'nash ')
if (this.item !== null) {
this.form.preCreditNo = this.item.preCreditNo
// 初始化丰盛查询结果
await this.initRiskResult()
}
},
methods: {
// 风审查询
async handleRisk() {
if (!this.hasRisk) {
const { creditNo, loanIntentionNum } = this.item
console.log(loanIntentionNum, '那啥')
const creditAmount = this.form.perAllotAmount
if (!creditAmount && /^[0-9]*$/.test(creditAmount)) {
this.$message({
type: 'error',
message: '请输入正确的审批金额!'
})
return
}
const result = await API.capitalSubmit({
loanIntentionNum,
creditNo,
creditAmount
})
if (result.success) {
this.hasRisk = true
await this.initRiskResult()
}
} else {
await this.initRiskResult()
}
},
// 风审查询结果
async initRiskResult() {
const { creditNo } = this.item
const result = await API.initCapitalResult({
creditNo
})
if (result.success) {
console.log(result, '结果')
}
},
onSubmit(formName) {
console.log(this.item, this.form, '数据呢')
this.$refs[formName].validate(async (valid) => {
if (valid) {
this.$confirm('是否确认提交?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async (res) => {
console.log(res, '是啥')
const form = this.form
form.userId = this.user.userId
console.log(form, '表单数据')
const result = await API.preCreditPlead({
...form
})
if (result.success) {
this.$message({
type: 'success',
message: '申述成功!'
})
this.$emit('handleClose')
this.$emit('callback')
}
}).catch((e) => {
console.log(e, '取消申述了')
})
}
})
},
handleClose() {
this.$emit('handleClose')
}
}
}
</script>
<style lang='scss' scoped>
.page-fence {
::v-deep {
i {
cursor: pointer;
}
}
box-sizing: border-box;
padding: 20px;
}
</style>
<style lang='scss'>
.custom-table-checkbox {
.el-checkbox {
display: block !important;
margin: 0 0 $base-padding/4 0;
}
}
.action-bar {
margin-bottom: 15px;
}
</style>
......@@ -5,7 +5,6 @@
<!--表格-->
<el-table
ref="tableSort"
v-loading="listLoading"
border
:data="list"
style="width: 100%"
......@@ -73,8 +72,7 @@
prop: "appealMemo"
}
],
list: [],
listLoading: true,
list: []
}
},
computed: {
......@@ -91,7 +89,6 @@
created() {
if(this.logData){
this.list = this.logData;
this.listLoading = false;
}
}
}
......
......@@ -12,10 +12,10 @@
<el-descriptions-item label-class-name='labelCls' label='学历'>{{baseInfo.applyDate}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='婚姻状况'>{{baseInfo.applyDate}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='婚姻状况'>{{baseInfo.marriageStr}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='年龄(周岁)'>{{baseInfo.applyDate}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='工作行业'>{{baseInfo.applyDate}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='工作城市'>{{baseInfo.applyDate}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='工作行业'>{{baseInfo.workIndustryStr}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='工作城市'>{{baseInfo.companyAddress}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='公司全称'>{{baseInfo.companyName}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='居中城市'>{{baseInfo.liveAddress}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='居中地址'>{{baseInfo.liveDetailAddress}}</el-descriptions-item>
......@@ -24,10 +24,13 @@
<el-descriptions-item label-class-name='labelCls' label='BD经理'>{{baseInfo.bdName}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='商户区域'>{{baseInfo.regionName}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='紧急联系人姓名'>{{baseInfo.firstName}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='紧急联系人关系'>{{baseInfo.firstRelationStr}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='紧急联系人电话'>{{baseInfo.firstPhone}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='工作地址'>{{baseInfo.companyAddress}}{{baseInfo.companyAddressDetail}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='是否需要补交资料'>{{baseInfo.applyDate}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='合同展示地址'>{{baseInfo.contractAddress}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='收入'>{{baseInfo.selfMonthIncome}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='合同展示地址'>{{baseInfo.address}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='月收入'>{{baseInfo.selfMonthIncomeStr}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='客户GPS'>{{baseInfo.clientGps}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='首次授信'>{{baseInfo.isFirstCredit}}</el-descriptions-item>
......
......@@ -3,8 +3,8 @@
<div>
<template v-if='clientIdCardInfoResponse.length'>
<block-header title='客户身份证信息' />
<el-row>
<el-col v-for='(o, index) in clientIdCardInfoResponse' :key='index' :span='4' :offset='index > 0 ? 1 : 0'>
<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(clientIdCardInfoResponse,"idCard")'></el-image>
......@@ -19,8 +19,8 @@
<template v-if='faceInfoResponse.length'>
<block-header title='人脸信息' />
<el-row>
<el-col v-for='(o, index) in faceInfoResponse' :key='index' :span='4' :offset='index > 0 ? 1 : 0'>
<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(faceInfoResponse,"face")'></el-image>
......@@ -37,8 +37,8 @@
<template v-if='creditAttachInfo.length'>
<block-header title='授信附件信息' />
<el-row>
<el-col v-for='(o, index) in creditAttachInfo' :key='index' :span='4' :offset='index > 0 ? 1 : 0'>
<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,"annex")'></el-image>
......@@ -53,8 +53,8 @@
<template v-if='supplAttachInfo.length'>
<block-header title='客户附件信息' />
<el-row>
<el-col v-for='(o, index) in supplAttachInfo' :key='index' :span='4' :offset='index > 0 ? 1 : 0'>
<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,"annex")'></el-image>
......@@ -203,9 +203,11 @@
.el-card-intro {
box-sizing: border-box;
height: 56px;
display: flex;
align-items: center;
justify-content: center;
padding: 20px;
padding: 20px 5px;
overflow: hidden;
}
</style>
......@@ -4,9 +4,9 @@
<block-header title='项目信息' />
<el-descriptions style='margin-bottom: 20px;' border size='small' :column='3'>
<el-descriptions-item label-class-name='labelCls' label='医院名称'>{{projectInfo.regName}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='项目金额'>{{projectInfo.projectAmount}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='申请金额'>{{projectInfo.loanIntentionAmount}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='借款期限'>{{projectInfo.loanIntentionNum}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='项目金额'>{{money(projectInfo.projectAmount)}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='申请金额'>{{loanIntentionAmount}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='借款期限'>{{projectInfo.loanIntentionNum}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='申请项目'>{{projectInfo.projectName}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='商家等级'>{{projectInfo.applyDate}}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='商户GPS'>{{projectInfo.projectId}}</el-descriptions-item>
......@@ -16,6 +16,8 @@
</template>
<script>
import { money } from '@/utils'
export default {
name: "UserProjectInfo",
props:{
......@@ -23,6 +25,15 @@
type:Object,
require:true
}
},
data(){
return {
loanIntentionAmount:''
}
},
created() {
const {loanIntentionAmount} = this.projectInfo;
this.loanIntentionAmount = money(loanIntentionAmount);
}
};
</script>
......
......@@ -2,6 +2,7 @@ import BlockHeader from '@/components/blockHeader'
import OperationLog from '@/components/pre-operation-log'
import PrePlead from '@/components/pre-plead'
import Plead from '@/components/plead'
import Approval from '@/components/approval'
import UserOtherInfo from '@/components/user-other-info'
import ApprovalResult from '@/components/approval-result'
import AuditResult from '@/components/audit-result'
......@@ -21,6 +22,7 @@ export default {
AuditResult,
UserBaseInfo,
UserProjectInfo,
Approval,
'el-image-viewer': () => import('element-ui/packages/image/src/image-viewer')
},
data(){
......@@ -75,6 +77,20 @@ export default {
if (formName) {
this.$refs[formName].resetFields()
}
},
money (s, n) {
if (!s) s = 0
if (!n) n = 2
n = n > 0 && n <= 20 ? n : 2
const ns = (s + '').replace(/[^\d.-]/g, '')
s = parseFloat(ns).toFixed(n) + ''
const l = s.split('.')[0].split('').reverse(),
r = s.split('.')[1]
let t = ''
for (let i = 0; i < l.length; i++) {
t += l[i] + ((i + 1) % 3 === 0 && (i + 1) !== l.length ? ',' : '')
}
return t.split('').reverse().join('') + '.' + r
}
}
}
......@@ -103,12 +103,21 @@ export const asyncRoutes = [
}
},
{
path: 'order',
name: 'CreditOrder',
component: () => import('@/views/credit/order'),
path: 'approval',
name: 'CreditApproval',
component: () => import('@/views/credit/approval'),
meta: {
noKeepAlive: true,
title: '我的审批'
}
},
{
path: 'approvalDetail',
name: 'ApprovalDetail',
component: () => import('@/views/credit/approval-detail'),
meta: {
noKeepAlive: true,
title: '审批详情'
},
hidden: true
},
......@@ -118,9 +127,7 @@ export const asyncRoutes = [
component: () => import('@/views/credit/detail'),
meta: {
noKeepAlive: true,
title: '授信详情',
remixIcon: 'building-line',
tagHidden: true
title: '授信详情'
},
hidden: true
......@@ -152,32 +159,21 @@ export const asyncRoutes = [
},
children: [
{
path: 'order',
path: 'list',
name: 'ApprovalList',
component: () => import('@/views/approval/order'),
component: () => import('@/views/approval/list'),
meta: {
noKeepAlive: true,
title: '我的订单',
remixIcon: 'product-hunt-line'
title: '我的订单'
}
},
//{
// path: 'order1',
// name: 'ApprovalList',
// component: () => import('@/views/approval/order1'),
// meta: {
// title: '我的订单2',
// remixIcon: 'product-hunt-line',
// },
//},
{
path: 'detail',
name: 'ApprovalDetail',
component: () => import('@/views/approval/detail'),
meta: {
noKeepAlive: true,
title: '详情',
remixIcon: 'product-hunt-line'
title: '审批订单详情'
},
hidden: true
}
......@@ -200,8 +196,7 @@ export const asyncRoutes = [
component: () => import('@/views/loan/detail'),
meta: {
noKeepAlive: true,
title: '详情',
remixIcon: 'task-line'
title: '借款详情'
},
hidden: true
},
......@@ -211,8 +206,7 @@ export const asyncRoutes = [
component: () => import('@/views/loan/audit'),
meta: {
noKeepAlive: true,
title: '稽核审批',
remixIcon: 'task-line'
title: '稽核审批'
}
},
{
......@@ -221,8 +215,7 @@ export const asyncRoutes = [
component: () => import('@/views/loan/list'),
meta: {
noKeepAlive: true,
title: '放款确认',
remixIcon: 'task-line'
title: '放款确认'
}
}
]
......@@ -243,8 +236,8 @@ export const asyncRoutes = [
name: 'AdminUser',
component: () => import('@/views/admin/user'),
meta: {
title: '用户管理',
remixIcon: 'notification-3-line'
noKeepAlive: true,
title: '用户管理'
}
}
]
......
......@@ -92,6 +92,25 @@ export default {
data
})
},
// 我的审批列表
auditList(data) {
return request({
url: '/credit/myApproveList',
method: 'post',
data
})
},
// 我的审批详情
auditDetail(params) {
return request({
url: '/credit/myApproveDetail',
method: 'get',
params
})
},
// 初始化过滤条件的基础数据
initSearchData(data) {
return request({
......@@ -112,11 +131,19 @@ export default {
})
},
// 初始化审批订单详情
initApproveDetail(data) {
initApproveDetail(params) {
return request({
url: '/approve/myOrderDetail',
method: 'post',
data
method: 'get',
params
})
},
// 审批人员上下线
initApproveOnOff(params) {
return request({
url: '/approve/getManState',
method: 'get',
params
})
},
// 审批人员上下线
......@@ -135,6 +162,17 @@ export default {
data
})
},
// 初始化转派在线人员列表
initReassignmentUser(params) {
return request({
url: '/approve/getOnLinePerson',
method: 'get',
params
})
},
// 审批订单审批提交
approveSubmit(data) {
return request({
......@@ -143,6 +181,30 @@ export default {
data
})
},
// 订单审批 选择资金方
initFinanceList(params) {
return request({
url: '/approve/financierList',
method: 'get',
params
})
},
// 风审查询
capitalSubmit(data) {
return request({
url: '/approve/fengshengCredit',
method: 'post',
data
})
},
// 查询结果
initCapitalResult(params) {
return request({
url: '/approve/capitalResult',
method: 'get',
params
})
},
// 借款管理接口
......@@ -194,6 +256,57 @@ export default {
method: 'post',
data
})
}
},
// 用户管理
// 用户列表
userList(params){
return request({
url: '/user/searchAll',
method: 'get',
params
})
},
// 用户详情
userDetail(params){
return request({
url: '/user/searchAll',
method: 'get',
params
})
},
// 用户新增
userNew(data){
return request({
url: '/user/insert',
method: 'post',
data
})
},
// 用户编辑
userUpdate(data){
return request({
url: '/user/update',
method: 'post',
data
})
},
// 用户重置密码
userResetPwd(data){
return request({
url: '/user/resetPassword',
method: 'post',
data
})
},
// 用户修改密码
userUpdatePwd(data){
return request({
url: '/user/updatePassword',
method: 'post',
data
})
},
}
// 格式化两位小数
export const money = function (s, n) {
if (!s) s = 0
if (!n) n = 2
n = n > 0 && n <= 20 ? n : 2
const ns = (s + '').replace(/[^\d.-]/g, '')
s = parseFloat(ns).toFixed(n) + ''
const l = s.split('.')[0].split('').reverse(),
r = s.split('.')[1]
let t = ''
for (let i = 0; i < l.length; i++) {
t += l[i] + ((i + 1) % 3 === 0 && (i + 1) !== l.length ? ',' : '')
}
return t.split('').reverse().join('') + '.' + r
}
/**
* @description 格式化时间
* @param time
......
<template>
<div class="page-fence">
<!--操作菜单栏-->
<block-header title="公告列表" />
<div
v-if="true"
class="action-bar"
>
<div class="action-bar-left">
<router-link to="/notice/new">
<el-button
icon="el-icon-plus"
type="primary"
size="mini"
<div class='page'>
<!--搜索-->
<block-header title='搜索' />
<div class='search'>
<el-form label-suffix=':' :inline='true' ref='form' :model='queryForm' class='form-inline'>
<el-form-item prop='creditNo' label='授信编号'>
<el-input
v-model='queryForm.creditNo'
clearable
placeholder='请输入授信编号'
/>
</el-form-item>
<el-form-item prop='realName' label='客户姓名'>
<el-input
v-model='queryForm.realName'
clearable
placeholder='请输入客户姓名'
/>
</el-form-item>
<el-form-item prop='mobile' label='手机号码'>
<el-input
v-model='queryForm.mobile'
clearable
placeholder='请输入客户手机号码'
/>
</el-form-item>
<template v-if='searchData!==null'>
<el-form-item prop='creditType' label='授信类型'>
<el-select clearable v-model='queryForm.creditType' placeholder='请选择授信类型'>
<el-option
v-for='(item,index) in searchData.creditTypeResponseList'
:label='item.creditTypeStr'
:key='index'
:value='item.creditType'></el-option>
</el-select>
</el-form-item>
<el-form-item prop='creditStatus' label='授信状态'>
<el-select clearable v-model='queryForm.creditStatus' placeholder='请选择授信状态'>
<el-option
v-for='(item,index) in searchData.creditStatusResponseList'
:label='item.creditStatusStr'
:key='index'
:value='item.creditStatus'></el-option>
</el-select>
</el-form-item>
</template>
<el-form-item prop='time' label='申请时间'>
<el-date-picker
v-model='queryForm.time'
type='datetimerange'
:picker-options='pickerConfig'
range-separator='至'
start-placeholder='开始时间'
end-placeholder='结束时间'
>
新增公告
</el-button>
</router-link>
</div>
</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"
ref='tableSort'
v-loading='listLoading'
border
:data="list"
style="width: 100%"
: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"
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==='H5链接'">
<el-link
type="primary"
:href="row[item.prop]"
target="_blank"
>
{{ row[item.prop] }}
</el-link>
</div>
<div v-else-if="item.label==='标题ICON'">
<template #default='{ row }'>
<div v-if="item.label==='营业执照' || item.label==='小贷拍照' || item.label==='金融办批文'">
<el-image
style="width: 50px; height: 35px"
:src="row[item.prop]"
fit="fit"
style='width: 100px; height: 75px'
:src='row[item.prop]'
fit='fit'
/>
</div>
<div v-else-if="item.label==='公告状态'">
<el-tag
v-if="row[item.prop]===0"
type="success"
>
已上架
</el-tag>
<el-tag
v-else
type="info"
>
已下架
</el-tag>
<div v-else-if="item.label==='机构状态'">
<span>{{ row[item.prop] === '1' ? '启用' : '禁用' }}</span>
</div>
<span v-else>{{ row[item.prop] }}</span>
</template>
</el-table-column>
<el-table-column
width="150"
fixed="right"
align="center"
label="操作"
fixed='right'
align='center'
label='操作'
>
<template #default="{ row }">
<el-button
v-if="row.isDelete===0"
size="mini"
type="danger"
@click="handleChangeStatus(row)"
>
下架
</el-button>
<el-button
v-else
size="mini"
type="success"
@click="handleChangeStatus(row)"
>
上架
</el-button>
<el-button
size="mini"
type="primary"
@click="handleView(row)"
>
<span>详情</span>
</el-button>
<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="layout"
:page-size="queryForm.size"
:total="total"
:current-page='queryForm.current'
layout='total, prev, pager, next'
:page-size='queryForm.size'
:total='total'
background
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
@current-change='handleCurrentChange'
/>
</div>
</template>
<script>
import _ from "lodash";
import { doDelete, getList } from "@/api/table";
import API from "@/server/api";
import _ from 'lodash'
import { doDelete, getList } from '@/api/table'
import API from '@/server/api'
import moment from 'moment'
import { mapGetters } from 'vuex'
export default {
name: 'CreditList',
data() {
return {
checkList: ['用户ID', '登录名', '用户名', '手机号', '账号状态', '是否在线'],
columns: [
{
order: 1,
label: '用户ID',
prop: 'userId'
},
{
order: 2,
label: '登录名',
prop: 'loginName'
},
{
order: 4,
label: '用户名',
prop: 'userName'
},
{
order: 5,
label: '手机号',
prop: 'userCell'
},
{
order: 6,
label: '账号状态',
prop: 'status'
},
{
order: 7,
label: '是否在线',
prop: 'userDutyState'
}
],
list: [],
listLoading: true,
total: 1,
pickerConfig: this.datePickerOptions,
queryForm: {
current: 1,
size: 10,
export default {
name: "Fence",
data() {
return {
checkList: ["标题", "标题ICON", "公告内容", "公告状态",'发布人', "创建时间"],
columns: [
{
order: 1,
label: "标题",
prop: "znxTitle"
},
{
order: 2,
label: "标题ICON",
prop: "znxTitleUrl"
},
{
order: 3,
label: "公告内容",
overflow: true,
prop: "znxContent"
},
{
order: 5,
label: "公告状态",
prop: "isDelete"
},
{
order: 6,
label: "发布人",
prop: "znxCreateby"
},
{
order: 7,
label: "创建时间",
prop: "gmtCreate"
mobile: '',
bdNo: '',
creditNo: '',
creditStatus: '',
creditType: '',
realName: '',
time: '',
startTime: '',
endTime: '',
userId: ''
}
],
list: [],
listLoading: true,
layout: "total, sizes, prev, pager, next, jumper",
total: 0,
queryForm: {
current: 1,
size: 10
}
};
},
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;
}
},
created() {
//防止三级以上路由时多次走created
if (this.$route.name === this.$options.name) this.fetchData();
},
mounted() {
this.fetchData();
},
methods: {
onSubmit() {
this.fetchData();
},
handleView(row){
const {id} = row;
this.$router.push({
path: '/notice/new',
query: { id }
})
},
async handleChangeStatus(row) {
const { id, isDelete } = row;
console.log(row, "是");
const result = await API.notice_edit({
id,
isDelete: !isDelete ? 1 :0
});
if (result.success) {
this.$baseMessage("修改成功", "success");
setTimeout(() => {
this.fetchData();
}, 1500);
}
},
handleSizeChange(val) {
this.queryForm.size = val;
this.fetchData();
},
handleCurrentChange(val) {
this.queryForm.current = val;
this.fetchData();
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'])
},
handleQuery() {
this.queryForm.current = 1;
this.fetchData();
mounted() {
this.fetchData()
},
async fetchData() {
this.listLoading = true;
const result = await API.notice_list(this.queryForm);
const { records, total } = result.result;
this.list = records;
this.total = total;
this.listLoading = false;
methods: {
onSearch() {
const { time } = this.queryForm
this.queryForm.current = 1
if (time) {
this.queryForm.startTime = time[0]
this.queryForm.endTime = time[1]
} else {
this.queryForm.startTime = ''
this.queryForm.endTime = ''
}
this.fetchData()
},
// 预授信详情
handleDetail(row) {
const { creditNo } = row
this.$router.push({
path: '/credit/detail',
query: { creditNo }
})
},
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.userList({ ...params })
const { data, total } = result.result
console.log(data, 's')
this.list = data
this.total = total
this.listLoading = false
}
}
}
};
</script>
<style lang="scss" scoped>
.page-fence {
::v-deep {
i {
cursor: pointer;
<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;
box-sizing: border-box;
padding: 20px;
}
}
.action-bar {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 15px;
.action-bar-left, .action-bar-right {
flex: 1;
</style>
<style lang='scss'>
.custom-table-checkbox {
.el-checkbox {
display: block !important;
margin: 0 0 $base-padding/4 0;
}
}
.action-bar-right {
text-align: right;
.action-bar {
margin-bottom: 15px;
}
}
</style>
......@@ -2,59 +2,124 @@
<template>
<el-dialog
v-drag
title="转派"
:visible.sync="visible"
:close-on-click-modal="false"
:append-to-body="true"
width="30%"
:before-close="handleClose"
title='转派'
:visible.sync='visible'
:close-on-click-modal='false'
:append-to-body='true'
width='30%'
:before-close='handleClose'
>
<el-form :model='form'>
<el-form-item label='选择转派人员'>
<el-select v-model='form.status' clearable placeholder='请选择'>
<el-option label='启用' value='1' />
<el-option label='禁用' value='0' />
</el-select>
<el-form ref='form' label-suffix=':' label-width='120' :rules='rules' :model='form'>
<el-form-item prop='user' label='转派人员'>
<template v-if='list.length'>
<el-select v-model='form.user' clearable placeholder='请选择'>
<el-option
v-for='(u,index) in list'
:key='index'
:label='u.userName'
:value='u.userId'></el-option>
</el-select>
</template>
</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">确 定</el-button>
<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 API from '@/server/api'
import _ from 'lodash'
import { mapGetters } from 'vuex'
export default {
name: "Reassignment",
props:{
visible:{
type:Boolean,
required:true
name: 'Reassignment',
props: {
visible: {
type: Boolean,
required: true
},
//eslint-disable-next-line vue/require-default-prop
item: {
type: Object,
require: true
}
},
data() {
return {
data: null,
list: [],
rules: {
user: [
{
required: true,
trigger: 'change',
message: '请选择转派人员'
}
]
},
form: {
status: ''
user: ''
}
};
}
},
computed: {
...mapGetters(['user'])
},
async created() {
if (this.item !== null) {
this.data = this.item
await this.initUser()
}
},
methods: {
onSubmit(){
// 初始化用户列表
async initUser() {
const result = await API.initReassignmentUser({})
console.log(result, '返回结果')
if (result.success) {
this.list = result.result
}
},
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");
handleClose() {
this.$emit('handleClose')
}
}
};
}
</script>
<style lang="scss" scoped>
<style lang='scss' scoped>
.page-fence {
::v-deep {
i {
......@@ -66,7 +131,7 @@
padding: 20px;
}
</style>
<style lang="scss">
<style lang='scss'>
.custom-table-checkbox {
.el-checkbox {
display: block !important;
......
<template>
<div class='page'>
<div v-if='detail!==null' class='page'>
<user-base-info />
<user-project-info />
<!--用户基础信息-->
<template v-if='detail.clientDetail!==null'>
<user-base-info :base-info='detail.clientDetail' />
</template>
<user-other-info />
<!--用户项目信息-->
<template v-if='detail.projectInfoResponse!==null'>
<user-project-info :project-info='detail.projectInfoResponse' />
</template>
<operation-log />
<plead />
<!--其它信息-->
<user-other-info :info='detail' />
<!--第三方报告-->
<template v-if='detail.thirdPartyReport!==null'></template>
<!--路由结果报告-->
<template></template>
<!--操作日志-->
<template v-if='detail.operationLogResponse!==null'>
<operation-log :log-data='detail.operationLogResponse' />
</template>
<!--申述操作-->
<template v-if='false'>
<pre-plead />
</template>
</div>
</template>
<script>
import API from '@/server/api'
export default {
name: 'PreDetail',
name: 'ApprovalDetail',
data() {
return {
tenantNo: ''
creditNo: '',
detail: null
}
},
created() {
async created() {
const { query } = this.$route
if (query && query.tenantNo) {
this.tenantNo = query.tenantNo
if (query && query.creditNo) {
this.creditNo = query.creditNo
await this.init()
}
},
methods: {}
methods: {
async init() {
const creditNo = this.creditNo
const result = await API.initApproveDetail({
creditNo
})
this.detail = result.result
}
}
}
</script>
......
......@@ -19,30 +19,21 @@
placeholder='请输入客户姓名'
/>
</el-form-item>
<el-form-item label='授信类型'>
<el-select clearable v-model='queryForm.creditType' placeholder='请选择授信类型'>
<el-option
v-for='(item,index) in searchData.creditTypeResponseList'
:label='item.creditTypeStr'
:key='index'
:value='item.creditType'></el-option>
</el-select>
</el-form-item>
<el-form-item label='审批状态'>
<el-select clearable v-model='queryForm.creditStatus' placeholder='请选择授信类型'>
<el-option
v-for='(item,index) in searchData.creditStatusResponseList'
:label='item.creditStatusStr'
:key='index'
:value='item.creditStatus'></el-option>
</el-select>
<el-form-item prop='mobile' label='手机号码'>
<el-input
v-model='queryForm.mobile'
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='结束时间'
......@@ -86,16 +77,27 @@
:show-overflow-tooltip='!!item.overflow'
>
<template #default='{ row }'>
<span>{{ row[item.prop] }}</span>
<span v-if='item.label==="申请金额(元)" || item.label==="审核金额(元)"'>
{{ money(row[item.prop]) }}
</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==="MANUAL_CREDIT_ING"' type='warning' size='mini'>{{ row.creditStatusStr
}}</el-tag>
<el-tag v-if='row.creditStatus==="MANUAL_BACK"' type='danger' 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 v-if='isOnLine'>
<el-table-column width='210' fixed='right' align='center' label='操作'>
<template #default='{ row }'>
<el-button size='mini' type='danger' @click='handleView(row)'>审批</el-button>
<el-button size='mini' type='danger' @click.native='handleApproval(row)'>审批</el-button>
<el-button size='mini' type='success' @click='handleView(row)'>详情</el-button>
<el-button size='mini' type='primary' @click='handleClick(row)'>转派</el-button>
<el-button size='mini' type='primary' @click='handleReassignment(row)'>转派</el-button>
</template>
</el-table-column>
</template>
......@@ -112,9 +114,23 @@
/>
<!--转派弹框-->
<Reassignment
:visible='visible'
@handleClose='visible = false' />
<template v-if='visible'>
<Reassignment
:visible='visible'
:item='item'
@handleClose='visible = false'
@callback='fetchData'
/>
</template>
<!--审批-->
<template v-if='ApprovalVisible'>
<Approval
:dialog-visible='ApprovalVisible'
:item='ApprovalItem'
@handleClose='ApprovalVisible = false'
@callback='fetchData' />
</template>
</div>
</template>
......@@ -134,52 +150,58 @@
data() {
return {
isOnLine: false,
// 转派相关
visible: false,
item: null,
// 审批相关
ApprovalVisible: false,
ApprovalItem: null,
checkList: ['授信编号', '客户姓名', '对应BD', '商户区域', '审核金额', '审核结果', '审批状态', '创建时间'],
checkList: ['授信编号', '客户姓名', '手机号码', '对应BD', '商户区域', '申请金额(元)', '授信状态', '创建时间'],
columns: [
{
order: 1,
label: '授信编号',
prop: 'gradeSort'
prop: 'creditNo'
},
{
order: 2,
label: '客户姓名',
prop: 'appNo'
prop: 'realName'
},
{
order: 3,
label: '手机号码',
prop: 'mobile'
},
{
order: 3,
label: '对应BD',
prop: 'appName'
prop: 'bdName'
},
{
order: 4,
label: '商户区域',
prop: 'appLogo',
overflow: true
prop: 'regionName'
},
{
order: 5,
label: '审核金额',
prop: 'tenantNo',
overflow: true
},
{
order: 6,
label: '审核结果',
prop: 'status'
label: '申请金额(元)',
prop: 'creditAmount'
},
{
order: 7,
label: '审批状态',
prop: 'abutmentWay'
label: '授信状态',
prop: 'creditStatusStr'
},
{
order: 8,
width: 170,
width: 110,
label: '创建时间',
prop: 'gmtCreated'
prop: 'applyDate'
}
],
list: [],
......@@ -214,10 +236,22 @@
},
...mapGetters(['searchData', 'user'])
},
mounted() {
this.fetchData()
async mounted() {
await this.fetchData()
await this.initOnOffStatus()
},
methods: {
// 初始化用户上下线状态
async initOnOffStatus() {
const userId = this.user.userId
const result = await API.initApproveOnOff({ userId })
if (result.success) {
console.log(result, '当前的用户状态')
const { userDutyState } = result.result
this.isOnLine = userDutyState === 'ONLINE';
}
},
onSearch() {
const { time } = this.queryForm
this.queryForm.current = 1
......@@ -231,16 +265,17 @@
this.fetchData()
},
handleView(row) {
const { appNo } = row
const { creditNo } = row
this.$router.push({
path: '/approval/detail',
query: { appNo }
query: { creditNo }
})
},
handleCurrentChange(val) {
this.queryForm.current = val
this.fetchData()
},
// 初始化列表数据
async fetchData() {
this.listLoading = true
const form = this.queryForm
......@@ -253,10 +288,6 @@
this.total = total
this.listLoading = false
},
// 转派弹框
async handleClick(row) {
this.visible = true
},
// 修改上下线状态
async handleChangeOnLineStatus(e) {
const userId = this.user.userId
......@@ -271,6 +302,16 @@
Vue.prototype.$baseMessage(msg, 'success')
}
},
// 申述
handleApproval(row) {
this.ApprovalItem = row
this.ApprovalVisible = true
},
// 转派
handleReassignment(row) {
this.visible = true
this.item = row
}
}
}
......
<template>
<div v-if='detail!==null' class='page'>
<!--用户基础信息-->
<template v-if='detail.clientDetail!==null'>
<user-base-info :base-info='detail.clientDetail' />
</template>
<!--用户项目信息-->
<template v-if='detail.projectInfoResponse!==null'>
<user-project-info :project-info='detail.projectInfoResponse' />
</template>
<!--其它信息-->
<user-other-info :info='detail' />
<!--操作日志-->
<template v-if='detail.operationLogResponse!==null'>
<operation-log :log-data='detail.operationLogResponse' />
</template>
<!--申述操作-->
<template v-if='false'>
<pre-plead />
</template>
</div>
</template>
<script>
import API from '@/server/api'
export default {
name: 'PreDetail',
data() {
return {
creditNo: '',
detail: null
}
},
async created() {
const { query } = this.$route
if (query && query.creditNo) {
this.creditNo = query.creditNo
await this.init()
}
},
methods: {
async init() {
const creditNo = this.creditNo
const result = await API.creditDetail({
creditNo
})
this.detail = result.result
}
}
}
</script>
<style lang='scss' src='./index.scss'></style>
......@@ -3,59 +3,73 @@
<!--搜索-->
<block-header title='搜索' />
<div class='search'>
<el-form label-suffix=':' :inline='true' :model='queryForm' class='form-inline'>
<el-form-item label='姓名'>
<el-form ref='form' label-suffix=':' :inline='true' :model='queryForm' class='form-inline'>
<el-form-item prop='creditNo' label='授信编号'>
<el-input
v-model='queryForm.tenantName'
v-model='queryForm.creditNo'
clearable
placeholder='请输入客户姓名'
placeholder='请输入授信编号'
/>
</el-form-item>
<el-form-item label='手机号码'>
<el-form-item prop='realName' label='客户姓名'>
<el-input
v-model='queryForm.tenantName'
v-model='queryForm.realName'
clearable
placeholder='请输入客户手机号码'
placeholder='请输入客户姓名'
/>
</el-form-item>
<el-form-item label='授信状态'>
<el-form-item prop='mobile' label='手机号码'>
<el-input
v-model='queryForm.tenantNo'
v-model='queryForm.mobile'
clearable
placeholder='请输入机构编号'
placeholder='请输入客户手机号码'
/>
</el-form-item>
<template v-if='searchData!==null'>
<el-form-item prop='creditStatus' label='审批状态'>
<el-select v-model='queryForm.creditStatus' clearable placeholder='请选择审批状态'>
<el-option
v-for='(item,index) in searchData.creditStatusResponseList'
:key='index'
:label='item.creditStatusStr'
:value='item.creditStatus'></el-option>
<el-form-item label='申请时间'>
<el-select
v-model='queryForm.status'
clearable
placeholder='请选择'
</el-select>
</el-form-item>
<el-form-item prop='creditType' label='授信类型'>
<el-select v-model='queryForm.creditType' clearable placeholder='请选择审批状态'>
<el-option
v-for='(item,index) in searchData.creditTypeResponseList'
:key='index'
:label='item.creditTypeStr'
:value='item.creditType'></el-option>
</el-select>
</el-form-item>
</template>
<el-form-item prop='time' label='申请时间'>
<el-date-picker
v-model='queryForm.time'
type='datetimerange'
:picker-options='pickerConfig'
:default-time="['00:00:00', '23:59:59']"
value-format='yyyy-MM-dd HH:mm:ss'
range-separator='至'
start-placeholder='开始时间'
end-placeholder='结束时间'
>
<el-option
label='启用'
value='1'
/>
<el-option
label='禁用'
value='0'
/>
</el-select>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
icon='el-icon-search'
type='primary'
@click='onSubmit'
>
搜 索
</el-button>
<!--<el-button type="default" @click="onReset">重置</el-button>-->
<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='授信列表' />
<block-header title='授信列表' />
<!--表格-->
<el-table
ref='tableSort'
......@@ -75,16 +89,30 @@
:show-overflow-tooltip='!!item.overflow'
>
<template #default='{ row }'>
<div v-if="item.label==='营业执照' || item.label==='小贷拍照' || item.label==='金融办批文'">
<el-image
style='width: 100px; height: 75px'
:src='row[item.prop]'
fit='fit'
/>
</div>
<div v-else-if="item.label==='机构状态'">
<span>{{ row[item.prop] === '1' ? '启用' : '禁用' }}</span>
</div>
<span v-if='item.label==="申请金额(元)" || item.label==="审核结果(元)"'>
{{ money(row.availableAmount) }}
</span>
<span v-if='item.label==="客户信息"'>
{{ row.realName }}({{ row.mobile }})
</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==="MANUAL_CREDIT_ING"' type='warning' size='mini'>{{ row.creditStatusStr
}}</el-tag>
<el-tag v-if='row.creditStatus==="MANUAL_BACK"' type='danger' 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-if='item.label==="审批结果"'>
<el-tag v-if='row.creditResult==="PASS"' type='success' size='mini'>{{ row.creditResultStr }}</el-tag>
<el-tag v-if='row.creditResult==="BACK"' type='info' size='mini'>{{ row.creditResultStr }}</el-tag>
<el-tag v-if='row.creditResult==="REJECT"' type='danger' size='mini'>{{ row.creditResultStr }}</el-tag>
<el-tag v-if='row.creditResult==="MANUAL_REJECT"' type='danger' size='mini'>{{ row.creditResultStr
}}</el-tag>
<el-tag v-if='row.creditResult==="RETRIAL"' type='warning' size='mini'>{{ row.creditResultStr }}</el-tag>
<el-tag v-if='!row.creditResult' type='info' size='mini'>结果未出</el-tag>
</span>
<span v-else>{{ row[item.prop] }}</span>
</template>
</el-table-column>
......@@ -95,102 +123,110 @@
label='操作'
>
<template #default='{ row }'>
<el-button
type='text'
@click='handleEdit(row)'
>
编辑
</el-button>
<el-button
type='text'
@click='handleDetail(row)'
>
详情
</el-button>
<el-button type='text' @click='handleDetail(row)'>详情</el-button>
<template v-if='row.creditResult==="MANUAL_REJECT"'>
<el-button type='text' @click='handleDetail(row)'>申述</el-button>
</template>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page='queryForm.current'
:layout='layout'
layout='total, prev, pager, next'
:page-size='queryForm.size'
:total='total'
background
@current-change='handleCurrentChange'
@size-change='handleSizeChange'
/>
</div>
</template>
<script>
import _ from 'lodash'
import { doDelete, getList } from '@/api/table'
import API from '@/server/api'
import { mapGetters } from 'vuex'
export default {
name: 'CreditList',
data() {
return {
checkList: ['业务编号', '产品名称', '客户姓名', '对应BD', '商户区域', '审核金额', '审核结果', '审批状态', '创建时间'],
checkList: ['授信编号', '授信类型', '客户信息', '对应BD', '商户区域', '申请金额(元)', '审核结果(元)', '审批状态', '审批结果', '创建时间'],
columns: [
{
order: 1,
label: '业务编号',
prop: 'tenantNo'
label: '授信编号',
prop: 'creditNo'
},
{
order: 2,
label: '产品名称',
prop: 'tenantFullName'
label: '授信类型',
width: 85,
prop: 'creditTypeStr'
},
{
order: 3,
label: '客户姓名',
prop: 'tenantName'
label: '客户信息',
prop: 'realName'
},
{
order: 5,
order: 4,
width: 80,
label: '对应BD',
prop: 'businessLicenseUrl',
overflow: true
prop: 'bdName'
},
{
order: 6,
order: 5,
label: '商户区域',
prop: 'status'
prop: 'regionName'
},
{
order: 7,
label: '审核金额',
prop: 'status'
order: 6,
label: '申请金额(元)',
prop: 'applyAmount'
},
{
order: 8,
label: '审核结果',
prop: 'status'
order: 7,
label: '审核结果(元)',
prop: 'manualAmount'
},
{
order: 8,
label: '审批状态',
prop: 'status'
prop: 'creditStatusStr',
width: 95
},
{
order: 8,
order: 9,
label: '审批结果',
prop: 'creditResultStr',
width: 95
},
{
order: 10,
label: '创建时间',
prop: 'status'
prop: 'applyDate',
width: 110
}
],
list: [],
listLoading: true,
layout: 'total, sizes, prev, pager, next, jumper',
total: 1,
pickerConfig: this.datePickerOptions,
queryForm: {
current: 1,
size: 9,
status: '',
tenantName: '',
tenantNo: ''
size: 10,
mobile: '',
bdNo: '',
creditNo: '',
creditStatus: '',
realName: '',
time: '',
startTime: '',
endTime: '',
userId: ''
}
}
},
......@@ -203,55 +239,64 @@
)
})
return _.sortBy(finallyArray, (item) => item.order)
//return finallyArray;
}
},
created() {
//防止三级以上路由时多次走created
if (this.$route.name === this.$options.name) this.fetchData()
},
...mapGetters(['searchData', 'user'])
},
mounted() {
this.fetchData()
async mounted() {
await this.fetchData()
},
methods: {
onSubmit() {
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()
},
// 预授信编辑
handleEdit(row) {
const { tenantNo } = row
this.$router.push({
path: '/merchant/new',
query: { tenantNo }
})
},
// 预授信详情
handleDetail(row) {
const { tenantNo } = row
const { creditNo } = row
this.$router.push({
path: '/credit/detail',
query: { tenantNo }
path: '/credit/approvalDetail',
query: { creditNo }
})
},
handleSizeChange(val) {
this.queryForm.size = val
this.fetchData()
},
handleCurrentChange(val) {
this.queryForm.current = val
this.fetchData()
},
handleQuery() {
this.queryForm.current = 1
this.fetchData()
},
async fetchData() {
this.listLoading = true
const result = await API.merchant_list(this.queryForm)
const { records, total } = result.result
this.list = records
this.total = total
this.listLoading = false
const form = this.queryForm
const params = Object.assign({}, form)
delete params.time
params.userId = this.user.userId
try {
const result = await API.auditList({ ...params })
console.log(result, '结果')
if (result.success) {
const { records, total } = result.result
this.list = records
this.total = total
}
this.listLoading = false
} catch (e) {
console.log(e, 'h')
this.listLoading = false
}
},
// 授信申述
handlePlead() {
}
}
}
......
......@@ -17,7 +17,7 @@
<!--操作日志-->
<template v-if='detail.operationLogResponse!==null'>
<operation-log :data='detail.operationLogResponse' />
<operation-log :log-data='detail.operationLogResponse' />
</template>
<!--申述操作-->
......
<template>
<div class="page-fence">
<div class='page-fence'>
<!--搜索-->
<block-header title="搜索" />
<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='授信编号'>
......@@ -25,241 +25,246 @@
placeholder='请输入客户手机号码'
/>
</el-form-item>
<el-form-item prop='creditType' label='授信类型'>
<el-select clearable v-model="queryForm.creditType" placeholder="请选择授信类型">
<el-option
v-for='(item,index) in searchData.creditTypeResponseList'
:label='item.creditTypeStr'
:key='index'
:value='item.creditType'></el-option>
</el-select>
</el-form-item>
<el-form-item prop='creditStatus' label='授信状态'>
<el-select clearable v-model="queryForm.creditStatus" placeholder="请选择授信状态">
<el-option
v-for='(item,index) in searchData.creditStatusResponseList'
:label='item.creditStatusStr'
:key='index'
:value='item.creditStatus'></el-option>
</el-select>
</el-form-item>
<template v-if='searchData!==null'>
<el-form-item prop='creditStatus' label='授信状态'>
<el-select clearable v-model='queryForm.creditStatus' placeholder='请选择授信状态'>
<el-option
v-for='(item,index) in searchData.creditStatusResponseList'
:label='item.creditStatusStr'
:key='index'
:value='item.creditStatus'></el-option>
</el-select>
</el-form-item>
</template>
<el-form-item prop='time' label="申请时间">
<el-form-item prop='time' label='申请时间'>
<el-date-picker
v-model="queryForm.time"
type="datetimerange"
:picker-options="pickerConfig"
range-separator="至"
start-placeholder="开始时间"
end-placeholder="结束时间"
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-button icon='el-icon-delete' type='default' @click="onReset('form')">重置</el-button>
</el-form-item>
</el-form>
</div>
<block-header title="授信列表" />
<block-header title='授信列表' />
<!--表格-->
<el-table
ref="tableSort"
v-loading="listLoading"
ref='tableSort'
v-loading='listLoading'
border
:data="list"
style="width: 100%"
: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"
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==='营业执照' || item.label==='小贷拍照' || item.label==='金融办批文'">
<el-image
style="width: 100px; height: 75px"
:src="row[item.prop]"
fit="fit"
/>
</div>
<div v-else-if="item.label==='机构状态'">
<span>{{ row[item.prop]==="1"?'启用':'禁用' }}</span>
</div>
<template #default='{ row }'>
<span v-if='item.label==="授信额度(元)"'>
{{ money(row.availableAmount) }}
</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==="MANUAL_CREDIT_ING"' type='warning' size='mini'>{{ row.creditStatusStr
}}</el-tag>
<el-tag v-if='row.creditStatus==="MANUAL_BACK"' type='danger' 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-if='item.label==="审批结果"'>
<el-tag v-if='row.creditResult==="PASS"' type='success' size='mini'>{{ row.creditResultStr }}</el-tag>
<el-tag v-if='row.creditResult==="BACK"' type='info' size='mini'>{{ row.creditResultStr }}</el-tag>
<el-tag v-if='row.creditResult==="REJECT"' type='danger' size='mini'>{{ row.creditResultStr }}</el-tag>
<el-tag v-if='row.creditResult==="MANUAL_REJECT"' type='danger' size='mini'>{{ row.creditResultStr
}}</el-tag>
<el-tag v-if='row.creditResult==="RETRIAL"' type='warning' size='mini'>{{ row.creditResultStr }}</el-tag>
</span>
<span v-else>{{ row[item.prop] }}</span>
</template>
</el-table-column>
<el-table-column
fixed="right"
align="center"
label="操作"
fixed='right'
align='center'
label='操作'
>
<template #default="{ row }">
<el-button type="text" @click="handleDetail(row)">详情</el-button>
<template #default='{ row }'>
<el-button type='text' @click='handleDetail(row)'>详情</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="queryForm.current"
:current-page='queryForm.current'
layout='total, prev, pager, next'
:page-size="queryForm.size"
:total="total"
:page-size='queryForm.size'
:total='total'
background
@current-change="handleCurrentChange"
@current-change='handleCurrentChange'
/>
</div>
</template>
<script>
import _ from "lodash";
import { doDelete, getList } from "@/api/table";
import API from "@/server/api";
import moment from 'moment'
import _ from 'lodash'
import API from '@/server/api'
import { mapGetters } from 'vuex'
export default {
name: "CreditList",
name: 'CreditList',
data() {
return {
checkList: ["授信编号", "客户姓名", "手机号码", "对应BD", "商户区域", "授信额度", "申请时间", "授信类型","授信状态"],
checkList: ['授信编号', '客户姓名', '手机号码', '对应BD', '商户区域', '授信额度(元)', '申请时间', '授信状态', '审批结果'],
columns: [
{
order: 1,
label: "授信编号",
prop: "creditNo"
label: '授信编号',
prop: 'creditNo'
},
{
order: 2,
label: "客户姓名",
prop: "realName"
label: '客户姓名',
prop: 'realName'
},
{
order: 3,
label: '手机号码',
width: 115,
prop: 'mobile'
},
{
order: 4,
label: "手机号码",
width:110,
prop: "mobile"
label: '对应BD',
prop: 'bdName',
overflow: true
},
{
order: 5,
label: "对应BD",
prop: "bdName",
overflow: true
label: '商户区域',
prop: 'regionName'
},
{
order: 6,
label: "商户区域",
prop: "regionName"
label: '授信额度(元)',
prop: 'availableAmount'
},
{
order: 7,
label: "授信额度",
prop: "availableAmount"
label: '申请时间',
prop: 'applyDate',
width: 110
},
{
order: 8,
label: "申请时间",
prop: "applyDate"
order: 9,
label: '授信状态',
prop: 'creditStatusStr'
},
{
order: 8,
label: "授信类型",
prop: "creditTypeStr"
},
{
order: 8,
label: "授信状态",
prop: "creditStatusStr"
order: 10,
label: '审批结果',
prop: 'creditResultStr'
}
],
list: [],
listLoading: true,
total: 1,
pickerConfig:this.datePickerOptions,
pickerConfig: this.datePickerOptions,
queryForm: {
current: 1,
size: 9,
size: 10,
mobile: '',
bdNo:'',
bdNo: '',
creditNo: '',
creditStatus: '',
creditType:'',
realName: '',
time:'',
time: '',
startTime: '',
endTime: '',
userId: ''
}
};
}
},
computed: {
finallyColumns() {
let finallyArray = [];
let finallyArray = []
this.checkList.forEach((checkItem) => {
finallyArray.push(
this.columns.filter((item) => item.label === checkItem)[0]
);
});
return _.sortBy(finallyArray, (item) => item.order);
//return finallyArray;
)
})
return _.sortBy(finallyArray, (item) => item.order)
},
...mapGetters(['searchData'])
...mapGetters(['searchData', 'user'])
},
mounted() {
this.fetchData();
this.fetchData()
},
methods: {
onSearch() {
const { time } = this.queryForm;
this.queryForm.current = 1;
const { time } = this.queryForm
this.queryForm.current = 1
if (time) {
this.queryForm.startTime = time[0];
this.queryForm.endTime = time[1];
this.queryForm.startTime = time[0]
this.queryForm.endTime = time[1]
} else {
this.queryForm.startTime = "";
this.queryForm.endTime = "";
this.queryForm.startTime = ''
this.queryForm.endTime = ''
}
this.fetchData();
this.fetchData()
},
// 预授信详情
handleDetail(row){
const {creditNo} = row;
handleDetail(row) {
const { creditNo } = row
this.$router.push({
path: '/credit/detail',
query: { creditNo }
})
},
handleCurrentChange(val) {
this.queryForm.current = val;
this.fetchData();
this.queryForm.current = val
this.fetchData()
},
async fetchData() {
this.listLoading = true;
const form = this.queryForm;
const params = Object.assign({}, form);
delete params.time;
const result = await API.creditList({...params});
const { records, total } = result.result;
this.list = records;
this.total = total;
this.listLoading = false;
this.listLoading = true
const form = this.queryForm
const params = Object.assign({}, form)
delete params.time
//params.userId = this.user.userId;
const result = await API.creditList({ ...params })
const { records, total } = result.result
this.list = records
this.total = total
this.listLoading = false
},
// 授信申述
handlePlead() {
}
}
};
}
</script>
<style lang="scss" scoped>
<style lang='scss' scoped>
.page-fence {
::v-deep {
i {
......@@ -271,7 +276,7 @@
padding: 20px;
}
</style>
<style lang="scss">
<style lang='scss'>
.custom-table-checkbox {
.el-checkbox {
display: block !important;
......
......@@ -17,7 +17,19 @@
<el-descriptions-item label-class-name='labelCls' label='授信类型'>{{ detail.preBasisInfoResponse.creditTypeStr }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='授信状态'>
<span style='margin-right: 10px'>{{ detail.preBasisInfoResponse.preStateStr }}</span>
<el-tag v-if='detail.preBasisInfoResponse.preStateStr==="授信中"' type='warning'>
{{ detail.preBasisInfoResponse.preStateStr }}
</el-tag>
<el-tag v-else-if='detail.preBasisInfoResponse.preStateStr==="授信通过"' type='success'>
{{ detail.preBasisInfoResponse.preStateStr }}
</el-tag>
<el-tag v-else-if='detail.preBasisInfoResponse.preStateStr==="授信拒绝"' type='danger'>
{{ detail.preBasisInfoResponse.preStateStr }}
</el-tag>
<template v-if='detail.preBasisInfoResponse.preState === "PRE_CREDIT_REFUSE"'>
<el-button @click='handlePlead' size='mini' type='primary'>申述</el-button>
</template>
......
......@@ -13,7 +13,7 @@
<el-form-item prop='mobile' label='手机号码'>
<el-input v-model='queryForm.mobile' clearable placeholder='请输入客户手机号码' />
</el-form-item>
<el-form-item prop='preStatus' v-if='searchData!==null' label='授信状态'>
<el-form-item v-if='searchData!==null' prop='preStatus' label='授信状态'>
<el-select v-model='queryForm.preStatus' clearable placeholder='请选择授信状态'>
<el-option
v-for='(item,index) in searchData.preStatusList'
......
......@@ -17,6 +17,19 @@
<el-input v-model='queryForm.loanName' clearable placeholder='请输入客户手机号码' />
</el-form-item>
<template v-if='searchData!==null'>
<el-form-item prop='capitalCode' label='资金渠道'>
<el-select v-model='queryForm.capitalCode' style='width: 100%;' clearable>
<el-option
v-for='(item,index) in searchData.financierResponseList'
:key='index'
:value='item.capitalCode'
:label='item.message'>
</el-option>
</el-select>
</el-form-item>
</template>
<el-form-item label='申请时间'>
<el-date-picker
......@@ -125,6 +138,7 @@
<script>
import _ from 'lodash'
import API from '@/server/api'
import { mapGetters } from 'vuex'
export default {
name: 'LoanAudit',
......@@ -217,7 +231,8 @@
time: '',
startTime: '',
endTime: '',
userId: ''
userId: '',
capitalCode:''
}
}
},
......@@ -231,7 +246,8 @@
})
return _.sortBy(finallyArray, (item) => item.order)
//return finallyArray
}
},
...mapGetters(['searchData', 'user'])
},
mounted() {
this.fetchData()
......@@ -250,9 +266,9 @@
this.fetchData()
},
handleDialog(row) {
const { realName, loanAmount } = row;
console.log(row,'当前行信息');
this.DialogVisible = true;
const { realName, loanAmount } = row
console.log(row, '当前行信息')
this.DialogVisible = true
},
handleCurrentChange(val) {
......
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