Commit 1df60a86 authored by caimeng's avatar caimeng

6.7日上午提交

parent e0b54889
...@@ -23,6 +23,6 @@ const theme = { ...@@ -23,6 +23,6 @@ const theme = {
//是否显示通知组件 //是否显示通知组件
showNotice: false, showNotice: false,
//是否显示全屏组件 //是否显示全屏组件
showFullScreen: false, showFullScreen: true,
} }
module.exports = theme module.exports = theme
...@@ -81,7 +81,7 @@ export const asyncRoutes = [ ...@@ -81,7 +81,7 @@ export const asyncRoutes = [
meta: { meta: {
title: '授信管理', title: '授信管理',
remixIcon: 'home-4-line', remixIcon: 'home-4-line',
noKeepAlive:true noKeepAlive: true
}, },
children: [ children: [
{ {
...@@ -89,7 +89,7 @@ export const asyncRoutes = [ ...@@ -89,7 +89,7 @@ export const asyncRoutes = [
name: 'CreditPre', name: 'CreditPre',
component: () => import('@/views/credit/pre'), component: () => import('@/views/credit/pre'),
meta: { meta: {
noKeepAlive:true, noKeepAlive: true,
title: '预授信审核' title: '预授信审核'
} }
}, },
...@@ -98,7 +98,7 @@ export const asyncRoutes = [ ...@@ -98,7 +98,7 @@ export const asyncRoutes = [
name: 'CreditList', name: 'CreditList',
component: () => import('@/views/credit/list'), component: () => import('@/views/credit/list'),
meta: { meta: {
noKeepAlive:true, noKeepAlive: true,
title: '授信审核' title: '授信审核'
} }
}, },
...@@ -107,16 +107,17 @@ export const asyncRoutes = [ ...@@ -107,16 +107,17 @@ export const asyncRoutes = [
name: 'CreditOrder', name: 'CreditOrder',
component: () => import('@/views/credit/order'), component: () => import('@/views/credit/order'),
meta: { meta: {
noKeepAlive:true, noKeepAlive: true,
title: '我的审批' title: '我的审批'
} },
hidden: true
}, },
{ {
path: 'detail', path: 'detail',
name: 'CreditDetail', name: 'CreditDetail',
component: () => import('@/views/credit/detail'), component: () => import('@/views/credit/detail'),
meta: { meta: {
noKeepAlive:true, noKeepAlive: true,
title: '授信详情', title: '授信详情',
remixIcon: 'building-line', remixIcon: 'building-line',
tagHidden: true tagHidden: true
...@@ -129,7 +130,7 @@ export const asyncRoutes = [ ...@@ -129,7 +130,7 @@ export const asyncRoutes = [
name: 'CreditPreDetail', name: 'CreditPreDetail',
component: () => import('@/views/credit/pre-detail'), component: () => import('@/views/credit/pre-detail'),
meta: { meta: {
noKeepAlive:true, noKeepAlive: true,
title: '预授信详情', title: '预授信详情',
remixIcon: 'building-line', remixIcon: 'building-line',
tagHidden: true tagHidden: true
...@@ -145,7 +146,7 @@ export const asyncRoutes = [ ...@@ -145,7 +146,7 @@ export const asyncRoutes = [
redirect: '/approval/order', redirect: '/approval/order',
alwaysShow: true, alwaysShow: true,
meta: { meta: {
noKeepAlive:true, noKeepAlive: true,
title: '审批管理', title: '审批管理',
remixIcon: 'home-4-line' remixIcon: 'home-4-line'
}, },
...@@ -155,7 +156,7 @@ export const asyncRoutes = [ ...@@ -155,7 +156,7 @@ export const asyncRoutes = [
name: 'ApprovalList', name: 'ApprovalList',
component: () => import('@/views/approval/order'), component: () => import('@/views/approval/order'),
meta: { meta: {
noKeepAlive:true, noKeepAlive: true,
title: '我的订单', title: '我的订单',
remixIcon: 'product-hunt-line' remixIcon: 'product-hunt-line'
} }
...@@ -174,7 +175,7 @@ export const asyncRoutes = [ ...@@ -174,7 +175,7 @@ export const asyncRoutes = [
name: 'ApprovalDetail', name: 'ApprovalDetail',
component: () => import('@/views/approval/detail'), component: () => import('@/views/approval/detail'),
meta: { meta: {
noKeepAlive:true, noKeepAlive: true,
title: '详情', title: '详情',
remixIcon: 'product-hunt-line' remixIcon: 'product-hunt-line'
}, },
...@@ -188,38 +189,38 @@ export const asyncRoutes = [ ...@@ -188,38 +189,38 @@ export const asyncRoutes = [
component: Layout, component: Layout,
redirect: '/loan/list', redirect: '/loan/list',
meta: { meta: {
noKeepAlive:true, noKeepAlive: true,
title: '借款管理', title: '借款管理',
remixIcon: 'home-4-line' remixIcon: 'home-4-line'
}, },
children: [ children: [
{
path: 'list',
name: 'loanList',
component: () => import('@/views/loan/list'),
meta: {
noKeepAlive:true,
title: '稽核审批',
remixIcon: 'task-line'
}
},
{ {
path: 'detail', path: 'detail',
name: 'loanDetail', name: 'loanDetail',
component: () => import('@/views/loan/detail'), component: () => import('@/views/loan/detail'),
meta: { meta: {
noKeepAlive:true, noKeepAlive: true,
title: '详情', title: '详情',
remixIcon: 'task-line' remixIcon: 'task-line'
}, },
hidden: true hidden: true
}, },
{ {
path: 'order', path: 'audit',
name: 'loanOrder', name: 'loanOrder',
component: () => import('@/views/loan/order'), component: () => import('@/views/loan/audit'),
meta: {
noKeepAlive: true,
title: '稽核审批',
remixIcon: 'task-line'
}
},
{
path: 'list',
name: 'loanList',
component: () => import('@/views/loan/list'),
meta: { meta: {
noKeepAlive:true, noKeepAlive: true,
title: '放款确认', title: '放款确认',
remixIcon: 'task-line' remixIcon: 'task-line'
} }
......
...@@ -42,159 +42,6 @@ export default { ...@@ -42,159 +42,6 @@ export default {
params params
}) })
}, },
// 商户列表
merchant_list(data) {
return request({
url: '/macy/selectMacyList',
method: 'post',
data
})
},
// 商户新增
merchant_add(data) {
return request({
url: '/macy/createdMacy',
method: 'post',
data
})
},
// 商户更新
merchant_update(data) {
return request({
url: '/macy/editMacy',
method: 'post',
data
})
},
// 商户详情
merchant_view(params) {
return request({
url: '/macy/selectMacyByTenantNo',
method: 'get',
params
})
},
// 产品列表
merchant_select(params) {
return request({
url: '/macy/selectList',
method: 'get',
params
})
},
// 产品列表
prod_list(data) {
return request({
url: '/macy/selectProductPageList',
method: 'post',
data
})
},
// 产品新增
prod_add(data) {
return request({
url: '/macy/createdProductInfo',
method: 'post',
data
})
},
// 产品编辑
prod_update(data) {
return request({
url: '/macy/editProductInfo',
method: 'post',
data
})
},
// 产品上下架
prod_switch_upDown(params) {
return request({
url: '/macy/editProductInfoByStatus',
method: 'get',
params
})
},
// 产品查看
prod_view(params) {
return request({
url: '/macy/selectProductInfoByappNo',
method: 'get',
params
})
},
// 申请列表
apply_list(data) {
return request({
url: '/zeus/pageQueryApply',
method: 'post',
data
})
},
// 推送
apply_push(params) {
return request({
url: '/zeus/applyRetryPush',
method: 'get',
params
})
},
// 公告列表
notice_list(data) {
return request({
url: '/smgw/getBackPageList',
method: 'post',
data
})
},
// 公告发送
notice_add(data) {
return request({
url: '/smgw/sendZnx',
method: 'post',
data
})
},
// 公告编辑
notice_detail(data) {
return request({
url: '/smgw/getNotice',
method: 'post',
data
})
},
// 公告编辑
notice_edit(data) {
return request({
url: '/smgw/updateNotice',
method: 'post',
data
})
},
// 回现APP设置
app_setting(params) {
return request({
url: '/manage/getList',
method: 'get',
params
})
},
// 变更状态
app_setting_update(data) {
return request({
url: '/manage/update',
method: 'post',
data
})
},
// 变更状态
dict(params) {
return request({
url: '/dictData/selectBydictType',
method: 'get',
params
})
},
/** 授信管理接口 **/ /** 授信管理接口 **/
// 预授信列表 // 预授信列表
...@@ -295,6 +142,58 @@ export default { ...@@ -295,6 +142,58 @@ export default {
method: 'post', method: 'post',
data data
}) })
},
// 借款管理接口
// 借款审批列表
loanAuditList(data) {
return request({
url: '/loan/auditAllotList',
method: 'post',
data
})
},
// 借款详情
loanDetail(params) {
return request({
url: '/loan/auditDetail',
method: 'get',
params
})
},
// 借款审核提交
loanAuditSubmit(data) {
return request({
url: '/loan/auditAllot',
method: 'post',
data
})
},
// 放款确认列表
loanConfirmList(data) {
return request({
url: '/loan/loanConfirmList',
method: 'post',
data
})
},
// 确认放款
loanConfirm(data) {
return request({
url: '/loan/confirmLoan',
method: 'post',
data
})
},
// 取消放款
loanCancel(data) {
return request({
url: '/loan/cancelLoan',
method: 'post',
data
})
} }
} }
<template> <template>
<el-dropdown @command="handleCommand"> <el-dropdown @command="handleCommand">
<span class="avatar-dropdown"> <span class="avatar-dropdown">
<!--<img :src="avatar" alt="" class="user-avatar" />--> <img :src="avatar" alt="" class="user-avatar" />
<div class="user-name"> <div class="user-name">
{{ username }} {{ username }}
<vab-remix-icon icon-class="arrow-down-s-line" /> <vab-remix-icon icon-class="arrow-down-s-line" />
...@@ -72,8 +72,8 @@ ...@@ -72,8 +72,8 @@
justify-items: center; justify-items: center;
.user-avatar { .user-avatar {
width: 40px; width: 26px;
height: 40px; height: 26px;
margin-left: 15px; margin-left: 15px;
cursor: pointer; cursor: pointer;
border-radius: 50%; border-radius: 50%;
......
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
></el-tab-pane> ></el-tab-pane>
</el-tabs> </el-tabs>
<el-dropdown @command="handleCommand"> <el-dropdown v-if='false' @command="handleCommand">
<span class="more"> <span class="more">
{{ translateTitle('更多') }} {{ translateTitle('更多') }}
<vab-remix-icon icon-class="arrow-down-s-line"></vab-remix-icon> <vab-remix-icon icon-class="arrow-down-s-line"></vab-remix-icon>
......
...@@ -86,63 +86,19 @@ ...@@ -86,63 +86,19 @@
:show-overflow-tooltip='!!item.overflow' :show-overflow-tooltip='!!item.overflow'
> >
<template #default='{ row }'> <template #default='{ row }'>
<div v-if="item.label==='LOGO'"> <span>{{ row[item.prop] }}</span>
<el-image
style='width: 50px; height: 35px'
:src='row[item.prop]'
fit='fit'
/>
</div>
<div v-else-if="item.label==='产品状态'">
<el-tag
v-if="row[item.prop] === '1'"
type='success'
size='mini'
>
启用
</el-tag>
<el-tag
v-else
type='info'
size='mini'
>
禁用
</el-tag>
</div>
<span v-else>{{ row[item.prop] }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <template v-if='isOnLine'>
width='210' <el-table-column width='210' fixed='right' align='center' label='操作'>
fixed='right' <template #default='{ row }'>
align='center' <el-button size='mini' type='danger' @click='handleView(row)'>审批</el-button>
label='操作' <el-button size='mini' type='success' @click='handleView(row)'>详情</el-button>
> <el-button size='mini' type='primary' @click='handleClick(row)'>转派</el-button>
<template #default='{ row }'> </template>
<el-button </el-table-column>
size='mini' </template>
type='danger'
@click='handleView(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>
</template>
</el-table-column>
</el-table> </el-table>
<!--分页--> <!--分页-->
...@@ -308,13 +264,11 @@ ...@@ -308,13 +264,11 @@
const result = await API.approveOnOff({ const result = await API.approveOnOff({
userId, userId,
userDutyState userDutyState
}); })
if(result.success){ if (result.success) {
Vue.prototype.$baseMessage( const msg = userDutyState === 'ONLINE' ? '已上线' : '已下线'
'操作成功', Vue.prototype.$baseMessage(msg, 'success')
'success'
)
} }
} }
......
...@@ -2,22 +2,22 @@ ...@@ -2,22 +2,22 @@
<div class="index-container"> <div class="index-container">
<el-row :gutter="20"> <el-row :gutter="20">
<page-header></page-header> <page-header></page-header>
<el-col :lg="6" :md="12" :sm="24" :xl="6" :xs="24"> <!--<el-col :lg="6" :md="12" :sm="24" :xl="6" :xs="24">-->
<chart1></chart1> <!-- <chart1></chart1>-->
</el-col> <!--</el-col>-->
<el-col :lg="6" :md="12" :sm="24" :xl="6" :xs="24"> <!--<el-col :lg="6" :md="12" :sm="24" :xl="6" :xs="24">-->
<chart2></chart2> <!-- <chart2></chart2>-->
</el-col> <!--</el-col>-->
<el-col :lg="12" :md="24" :sm="24" :xl="12" :xs="24"> <!--<el-col :lg="12" :md="24" :sm="24" :xl="12" :xs="24">-->
<version-information></version-information> <!-- <version-information></version-information>-->
</el-col> <!--</el-col>-->
<icon-list></icon-list> <!--<icon-list></icon-list>-->
<el-col :lg="12" :md="12" :sm="24" :xl="12" :xs="24"> <!--<el-col :lg="12" :md="12" :sm="24" :xl="12" :xs="24">-->
<chart3></chart3> <!-- <chart3></chart3>-->
</el-col> <!--</el-col>-->
<el-col :lg="12" :md="12" :sm="24" :xl="12" :xs="24"> <!--<el-col :lg="12" :md="12" :sm="24" :xl="12" :xs="24">-->
<my-project></my-project> <!-- <my-project></my-project>-->
</el-col> <!--</el-col>-->
</el-row> </el-row>
</div> </div>
</template> </template>
......
<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='loanNo' label='借款编号'>
<el-input v-model='queryForm.loanNo' clearable placeholder='请输入借款编号' />
</el-form-item>
<el-form-item prop='clientName' label='客户姓名'>
<el-input v-model='queryForm.clientName' clearable placeholder='请输入客户姓名' />
</el-form-item>
<el-form-item prop='mobile' label='手机号码'>
<el-input v-model='queryForm.mobile' clearable placeholder='请输入客户手机号码' />
</el-form-item>
<el-form-item prop='loanName' label='项目名称'>
<el-input v-model='queryForm.loanName' clearable placeholder='请输入客户手机号码' />
</el-form-item>
<el-form-item 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 }'>
<span>{{ 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, prev, pager, next'
:page-size='queryForm.size'
:total='total'
background
@current-change='handleCurrentChange'
/>
</div>
</template>
<script>
import _ from 'lodash'
import { doDelete, getList } from '@/api/table'
import API from '@/server/api'
export default {
name: 'LoanAudit',
data() {
return {
checkList: ['借款编号', '项目名称', '客户姓名', '手机号码', '借款金额', '借款期数', 'BD姓名', '商户区域', '创建时间', '借款状态', '资金渠道'],
columns: [
{
order: 1,
label: '借款编号',
prop: 'loanNo'
},
{
order: 2,
label: '项目名称',
prop: 'loanName'
},
{
order: 3,
label: '客户姓名',
prop: 'realName'
},
{
order: 4,
label: '手机号码',
prop: 'mobile'
},
{
order: 5,
label: '借款金额',
prop: 'loanAmount'
},
{
order: 6,
label: '借款期数',
prop: 'loanNum'
},
{
order: 7,
label: 'BD姓名',
prop: 'bdName'
},
{
order: 8,
label: '商户区域',
prop: 'regionName'
},
{
order: 9,
label: '创建时间',
prop: 'gmtCreated'
},
{
order: 10,
label: '借款状态',
prop: 'loanStatus'
},
{
order: 11,
label: '资金渠道',
prop: 'loanSign'
}
],
list: [],
listLoading: true,
pickerConfig: this.datePickerOptions,
total: 1,
queryForm: {
current: 1,
size: 10,
mobile: '',
loanNo: '',
loanName: '',
clientName: '',
time: '',
startTime: '',
endTime: '',
userId: ''
}
}
},
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
}
},
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 { loanNo } = row
this.$router.push({
path: '/loan/detail',
query: { loanNo }
})
},
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
const result = await API.loanAuditList({ ...params })
const { records, total } = result.result
this.list = records
this.total = total
this.listLoading = false
}
}
}
</script>
<style lang='scss' scoped>
.page-fence {
::v-deep {
i {
cursor: pointer;
}
}
box-sizing: border-box;
padding: 20px;
}
</style>
<style lang='scss'>
.custom-table-checkbox {
.el-checkbox {
display: block !important;
margin: 0 0 $base-padding/4 0;
}
}
.action-bar {
margin-bottom: 15px;
}
</style>
<template> <template>
<div class="merchant-new"> <div v-if='detail!==null' class='page'>
<el-form
ref="h5form" <block-header title='项目信息' />
label-suffix=":" <el-descriptions style='margin-bottom: 20px;' border size='small' :column='3'>
:rules="rules" <el-descriptions-item label-class-name='labelCls' label='借款编号'>{{baseInfo.applyDate}}</el-descriptions-item>
:model="form" <el-descriptions-item label-class-name='labelCls' label='项目名称'>{{baseInfo.creditTypeStr}}</el-descriptions-item>
label-width="120px" <el-descriptions-item label-class-name='labelCls' label='借款申请时间'>{{baseInfo.creditStatusStr}}</el-descriptions-item>
> <el-descriptions-item label-class-name='labelCls' label='借款状态'>{{baseInfo.realName}}</el-descriptions-item>
<block-header title="对接信息" /> <el-descriptions-item label-class-name='labelCls' label='医院名称'>{{baseInfo.mobile}}</el-descriptions-item>
<el-form-item <el-descriptions-item label-class-name='labelCls' label='项目金额(元)'>{{baseInfo.idCard}}</el-descriptions-item>
class="form-item"
label="对接机构"
> <el-descriptions-item label-class-name='labelCls' label='借款金额(元)'>{{baseInfo.applyDate}}</el-descriptions-item>
<el-select <el-descriptions-item label-class-name='labelCls' label='申请期数'>{{baseInfo.applyDate}}</el-descriptions-item>
v-model="form.tenantNo" <el-descriptions-item label-class-name='labelCls' label='申请项目'>{{baseInfo.applyDate}}</el-descriptions-item>
:disabled="!!appNo" <el-descriptions-item label-class-name='labelCls' label='还款方式'>{{baseInfo.applyDate}}</el-descriptions-item>
placeholder="请选择" <el-descriptions-item label-class-name='labelCls' label='还款来源'>{{baseInfo.applyDate}}</el-descriptions-item>
> <el-descriptions-item label-class-name='labelCls' label='是否绿通'>{{baseInfo.companyName}}</el-descriptions-item>
<el-option <el-descriptions-item label-class-name='labelCls' label='手术时间'>{{baseInfo.liveAddress}}</el-descriptions-item>
v-for="(item,index) in merchant" </el-descriptions>
:key="index"
:label="item.tenantName" <block-header title='客户信息' />
:value="item.tenantNo" <block-header title='资方信息' />
/> <block-header title='收款账户信息' />
</el-select> <block-header title='还款账户信息' />
</el-form-item> <block-header title='客户经理信息(BD)' />
<el-form-item
class="form-item"
label="对接方式"
>
<el-select
v-model="form.abutmentWay"
:disabled="!!appNo"
placeholder="请选择"
>
<el-option
label="API"
value="API"
/>
<el-option
label="H5"
value="H5"
/>
</el-select>
</el-form-item>
</el-form>
</div> </div>
</template> </template>
<script> <script>
import BlockHeader from "@/components/blockHeader"; import API from '@/server/api'
import API from "@/server/api";
const $API = process.env.VUE_APP_API_PATH; export default {
name: 'LoanDetail',
export default { data() {
name: "MerchantNew", return {
components: { loanNo: '',
"block-header": BlockHeader detail: null
},
data() {
return {
uploadUrl:`${$API}/sysUser/upload`,
appNo:'',
form: {
tenantNo: "",
abutmentWay: "",
gradeSort: "3",
appLogo: "",
appName: "MC产品",
appInfo: "产品介绍",
abstratInfo: "产品摘要",
applyAmtMin: "300",
applyAmtMax: "500",
withdrawSpan: "1000",
incomeCount: "1000",
approvalTime: "1000",
raiseTimeMax: "7",
raiseTimeMin: "5",
memo: "1000",
customerNumbers: "400", // 客服电话
creditWay: 1 // 授信方式
},
rules: {
tenantNo: [{ required: true, message: "请选择机构名称", trigger: "change" }],
abutmentWay: [{ required: true, message: "请选择对接方式", trigger: "change" }],
appName: [{ required: true, message: "请输入产品名称", trigger: "blur" }],
appLogo: [{ required: true, message: "请上传产品LOGO图片", trigger: "blur" }],
appInfo: [{ required: true, message: "请输入产品描述", trigger: "blur" }],
abstratInfo: [{ required: true, message: "请输入产品摘要", trigger: "blur" }],
customerNumbers: [{ required: true, message: "请输入客服电话", trigger: "blur" }],
creditWay: [{ required: true, message: "请选择授信方式", trigger: "blur" }],
gradeSort: [
{
required: true,
message: "请输入产品等级",
trigger: "blur"
}
],
raiseTimeMin: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 >= this.form.raiseTimeMax * 1) {
callback(new Error("时间不大于最大时间"));
} else {
callback();
}
},
trigger: "change"
}
],
raiseTimeMax: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 <= this.form.raiseTimeMin * 1) {
callback(new Error("时间不小于最小时间"));
} else {
callback();
}
},
trigger: "change"
}
],
applyAmtMin: [
{ required: true, message: "请输入额度", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 >= this.form.applyAmtMax * 1) {
callback(new Error("额度必须小于最大额度"));
} else {
callback();
}
},
trigger: "change"
}
],
applyAmtMax: [
{ required: true, message: "请输入额度", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 <= this.form.applyAmtMin * 1) {
callback(new Error("额度必须大于最小额度"));
} else {
callback();
}
},
trigger: "change"
}
],
incomeTimeBefore: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 >= this.form.incomeTimeLate * 1) {
callback(new Error("时间须小于结束时间"));
} else {
callback();
}
},
trigger: "change"
}
],
incomeTimeLate: [
{ required: true, message: "请输入时间", trigger: "blur" },
{
validator: (rule, value, callback) => {
if (value * 1 <= this.form.incomeTimeBefore * 1) {
callback(new Error("时间须大于开始时间"));
} else {
callback();
}
},
trigger: "change"
}
],
withdrawSpan: [{ required: true, message: "请输入提现跨度", trigger: "blur" }],
approvalTime: [{ required: true, message: "请输入申请时间", trigger: "blur" }],
incomeCount: [{ required: true, message: "请输入每日进件上限", trigger: "blur" }]
},
merchant: []
};
},
async created() {
// 初始化机构列表
await this.initMerchant();
// 再请求表单
const { query } = this.$route;
if (query && query.appNo) {
this.appNo = query.appNo;
await this.initProd();
await this.initDict("SYS_USER_SEX");
await this.initDict("EDUCATIONAL");
await this.initDict("MONTHLY_INCOME");
await this.initDict("MARRIAGE");
await this.initDict("REGION");
}
},
methods: {
// 初始化机构列表
async initMerchant() {
const result = await API.merchant_select();
if (result.success) {
this.merchant = result.result;
}
},
// 初始化产品信息
async initProd() {
const appNo = this.appNo;
const { result, success } = await API.prod_view({ appNo });
if (success) {
//result.creditWay = result.creditWay+'';
this.form = result;
}
},
// 初始化字典
async initDict(dictType) {
const result = await API.dict({
dictType
});
if (result.success) {
const data = result.result;
switch (dictType) {
case "SYS_USER_SEX":
this.dict.sex = data;
break;
case "EDUCATIONAL":
this.dict.edu = data;
break;
case "MARRIAGE":
this.dict.marriage = data;
break;
case "REGION":
this.dict.region = data;
break;
case "MONTHLY_INCOME":
this.dict.money = data;
break;
}
} }
}, },
async created() {
const { query } = this.$route
if (query && query.loanNo) {
this.loanNo = query.loanNo
handleSuccessLogo(res) { await this.init()
this.form.appLogo = res.result;
},
beforeAvatarUpload(file) {
const isJPG = file.type === "image/jpeg";
const isPNG = file.type === "image/png";
const isLt2M = file.size / 1024 / 1024 < 2;
if (!isJPG && !isPNG) {
this.$message.error("上传图片只能是 JPG 或者 PNG 格式!");
return false;
}
if (!isLt2M) {
this.$message.error("上传图片大小不能超过 2MB!");
return false;
} }
return true;
}, },
onSubmit(formName) { methods: {
this.$refs[formName].validate(async (valid) => { async init() {
if (valid) { const loanNo = this.loanNo
const form = Object.assign({}, this.form); const result = await API.loanDetail({
//form.tenantNo = this.tenantNo; loanNo
//form.abutmentWay = 'API' })
let result; this.detail = result.result
if(this.appNo){ }
form.appNo = this.appNo;
result = await API.prod_update({ ...form });
}else{
result = await API.prod_add({ ...form });
}
if (result.success) {
this.$baseMessage("产品保存成功", "success");
setTimeout(() => {
this.$router.back();
}, 1500);
}
}
});
},
onReset(formName) {
this.$refs[formName].resetFields();
} }
} }
};
</script> </script>
<style lang="scss" src="./index.scss"></style> <style lang='scss' src='./index.scss'></style>
<template> <template>
<div class="page-fence"> <div class='page-fence'>
<!--搜索--> <!--搜索-->
<div class="search"> <block-header title='搜索' />
<el-form <div class='search'>
label-suffix=":" <el-form ref='form' label-suffix=':' :inline='true' :model='queryForm' class='form-inline'>
:inline="true" <el-form-item prop='loanNo' label='借款编号'>
:model="queryForm" <el-input v-model='queryForm.loanNo' clearable placeholder='请输入借款编号' />
class="form-inline"
>
<el-form-item label="订单编号">
<el-input
v-model="queryForm.orderNo"
clearable
placeholder="请输入机构编号"
/>
</el-form-item> </el-form-item>
<el-form-item label="用户姓名"> <el-form-item prop='clientName' label='客户姓名'>
<el-input <el-input v-model='queryForm.clientName' clearable placeholder='请输入客户姓名' />
v-model="queryForm.tenantNo"
clearable
placeholder="请输入机构名称"
/>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item prop='mobile' label='手机号码'>
<el-button <el-input v-model='queryForm.mobile' clearable placeholder='请输入客户手机号码' />
type="primary" </el-form-item>
@click="onSubmit" <el-form-item prop='loanName' label='项目名称'>
<el-input v-model='queryForm.loanName' clearable placeholder='请输入客户手机号码' />
</el-form-item>
<el-form-item 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-button> </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-item>
</el-form> </el-form>
</div> </div>
<!--表格--> <!--表格-->
<block-header title='借款列表' />
<el-table <el-table
ref="tableSort" ref='tableSort'
v-loading="listLoading" v-loading='listLoading'
border border
:data="list" :data='list'
style="width: 100%" style='width: 100%'
> >
<el-table-column <el-table-column
v-for="(item, index) in finallyColumns" v-for='(item, index) in finallyColumns'
:key="index" :key='index'
align="center" align='center'
:label="item.label" :label='item.label'
:sortable="item.sortable" :sortable='item.sortable'
:width="item.width" :width='item.width'
:fixed="!!item.fixed" :fixed='!!item.fixed'
:show-overflow-tooltip="!!item.overflow" :show-overflow-tooltip='!!item.overflow'
> >
<template #default="{ row }"> <template #default='{ row }'>
<div v-if="item.label==='LOGO'"> <div v-if="item.label==='LOGO'">
<el-image <el-image
style="width: 50px; height: 35px" style='width: 50px; height: 35px'
:src="row[item.prop]" :src='row[item.prop]'
fit="fit" fit='fit'
/> />
</div> </div>
<div v-else-if="item.label==='产品状态'"> <div v-else-if="item.label==='产品状态'">
<span>{{ row[item.prop]==="1"?'启用':'禁用' }}</span> <span>{{ row[item.prop] === '1' ? '启用' : '禁用' }}</span>
</div> </div>
<span v-else>{{ row[item.prop] }}</span> <span v-else>{{ row[item.prop] }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
fixed="right" fixed='right'
align="center" align='center'
label="操作" label='操作'
> >
<template #default="{ row }"> <template #default='{ row }'>
<el-button <el-button type='text' @click='handleDialog(row,"confirm")'>放款</el-button>
type="text" <el-button type='text' @click='handleDialog(row,"cancel")'>取消</el-button>
@click="handleView(row)"
>
推送
</el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination <el-pagination
:current-page="queryForm.pageNo" :current-page='queryForm.current'
:layout="layout" layout='total, prev, pager, next'
:page-size="queryForm.pageSize" :page-size='queryForm.size'
:total="total" :total='total'
background background
@current-change="handleCurrentChange" @current-change='handleCurrentChange'
@size-change="handleSizeChange"
/> />
<!--放款确认,放款取消-->
<el-dialog
:title='DialogTitle'
:visible.sync='DialogVisible'
width='30%'
center>
<el-form ref='dialogForm' :model='dialogForm' label-suffix=':'>
<el-form-item label='客户名称'>
<div>{{ dialogForm.clientName }}</div>
</el-form-item>
<el-form-item label='借款金额'>
<div>{{ dialogForm.loanAmount }}</div>
</el-form-item>
<el-form-item label='确认备注'>
<el-input type='textarea' :rows='2' v-model='dialogForm.memo' placeholder='请输入' />
</el-form-item>
</el-form>
<div slot='footer' class='dialog-footer'>
<el-button type='primary' @click='DialogVisible = false'>确 定</el-button>
<el-button @click='DialogVisible = false'>取 消</el-button>
</div>
</el-dialog>
</div> </div>
</template> </template>
<script> <script>
import _ from "lodash"; import _ from 'lodash'
import { doDelete, getList } from "@/api/table"; import API from '@/server/api'
import API from "@/server/api";
export default {
export default { name: 'LoanAudit',
name: "Fence", data() {
data() { return {
return { DialogTitle: '',
checkList: ["订单编号", "进件时间","姓名", "产品名称", "申请状态", "是否推送"], DialogVisible: false,
columns: [ dialogForm: {
{ loanAmount: '',
order: 1, clientName: '',
label: "订单编号", currentAction: '',
prop: "orderNo" loanNo: '',
}, memo: '',
{ stepsNo: '',
order: 2, userId: ''
label: "进件时间",
prop: "gmtCreatedStr"
},
{
order: 3,
label: "姓名",
prop: "userName"
},
{
order: 4,
label: "产品名称",
prop: "appName"
},
{
order: 5,
label: "申请状态",
prop: "applyStatusStr"
}, },
{
order: 6,
label: "是否推送", checkList: ['借款编号', '项目名称', '客户姓名', '手机号码', '借款金额', '借款期数', 'BD姓名', '商户区域', '创建时间', '借款状态', '资金渠道'],
prop: "applyStatusStr" columns: [
{
order: 1,
label: '借款编号',
prop: 'loanNo'
},
{
order: 2,
label: '项目名称',
prop: 'loanName'
},
{
order: 3,
label: '客户姓名',
prop: 'realName'
},
{
order: 4,
label: '手机号码',
prop: 'mobile'
},
{
order: 5,
label: '借款金额',
prop: 'loanAmount'
},
{
order: 6,
label: '借款期数',
prop: 'loanNum'
},
{
order: 7,
label: 'BD姓名',
prop: 'bdName'
},
{
order: 8,
label: '商户区域',
prop: 'regionName'
},
{
order: 9,
label: '创建时间',
prop: 'gmtCreated'
},
{
order: 10,
label: '借款状态',
prop: 'loanStatus'
},
{
order: 11,
label: '资金渠道',
prop: 'loanSign'
}
],
list: [],
listLoading: true,
pickerConfig: this.datePickerOptions,
total: 1,
queryForm: {
current: 1,
size: 10,
mobile: '',
loanNo: '',
loanName: '',
clientName: '',
time: '',
startTime: '',
endTime: '',
userId: ''
} }
],
list: [],
listLoading: true,
layout: "total, sizes, prev, pager, next, jumper",
total: 0,
queryForm: {
current: 1,
size: 10,
orderNo: ""
} }
};
},
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 {appNo} = row;
this.$router.push({
path: '/prod/edit',
query: { appNo }
})
},
handleSizeChange(val) {
this.queryForm.size = val;
this.fetchData();
}, },
handleCurrentChange(val) { computed: {
this.queryForm.current = val; finallyColumns() {
this.fetchData(); let finallyArray = []
this.checkList.forEach((checkItem) => {
finallyArray.push(
this.columns.filter((item) => item.label === checkItem)[0]
)
})
return _.sortBy(finallyArray, (item) => item.order)
//return finallyArray
}
}, },
handleQuery() { mounted() {
this.queryForm.current = 1; this.fetchData()
this.fetchData();
}, },
async fetchData() { methods: {
this.listLoading = true; onSearch() {
const result = await API.apply_list(this.queryForm); const { time } = this.queryForm
const { records, total } = result.result; this.queryForm.current = 1
this.list = records; if (time) {
this.total = total; this.queryForm.startTime = time[0]
this.listLoading = false; this.queryForm.endTime = time[1]
} else {
this.queryForm.startTime = ''
this.queryForm.endTime = ''
}
this.fetchData()
},
handleDialog(row) {
const { realName, loanAmount } = row;
console.log(row,'当前行信息');
this.DialogVisible = true;
},
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
const result = await API.loanConfirmList({ ...params })
const { records, total } = result.result
this.list = records
this.total = total
this.listLoading = false
}
} }
} }
};
</script> </script>
<style lang="scss" scoped> <style lang='scss' scoped>
.page-fence { .page-fence {
::v-deep { ::v-deep {
i { i {
cursor: pointer; cursor: pointer;
}
} }
}
box-sizing: border-box; box-sizing: border-box;
padding: 20px; padding: 20px;
} }
</style> </style>
<style lang="scss"> <style lang='scss'>
.custom-table-checkbox { .custom-table-checkbox {
.el-checkbox { .el-checkbox {
display: block !important; display: block !important;
margin: 0 0 $base-padding/4 0; margin: 0 0 $base-padding/4 0;
}
} }
}
.action-bar { .action-bar {
margin-bottom: 15px; margin-bottom: 15px;
} }
</style> </style>
<template>
<div class="page-fence">
<!--搜索-->
<div class="search">
<el-form
label-suffix=":"
:inline="true"
:model="queryForm"
class="form-inline"
>
<el-form-item label="订单编号">
<el-input
v-model="queryForm.orderNo"
clearable
placeholder="请输入机构编号"
/>
</el-form-item>
<el-form-item label="用户姓名">
<el-input
v-model="queryForm.tenantNo"
clearable
placeholder="请输入机构名称"
/>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@click="onSubmit"
>
查询
</el-button>
</el-form-item>
</el-form>
</div>
<!--表格-->
<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==='LOGO'">
<el-image
style="width: 50px; height: 35px"
:src="row[item.prop]"
fit="fit"
/>
</div>
<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
fixed="right"
align="center"
label="操作"
>
<template #default="{ row }">
<el-button
type="text"
@click="handleView(row)"
>
推送
</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:current-page="queryForm.pageNo"
:layout="layout"
:page-size="queryForm.pageSize"
: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";
export default {
name: "Fence",
data() {
return {
checkList: ["订单编号", "进件时间","姓名", "产品名称", "申请状态", "是否推送"],
columns: [
{
order: 1,
label: "订单编号",
prop: "orderNo"
},
{
order: 2,
label: "进件时间",
prop: "gmtCreatedStr"
},
{
order: 3,
label: "姓名",
prop: "userName"
},
{
order: 4,
label: "产品名称",
prop: "appName"
},
{
order: 5,
label: "申请状态",
prop: "applyStatusStr"
},
{
order: 6,
label: "是否推送",
prop: "applyStatusStr"
}
],
list: [],
listLoading: true,
layout: "total, sizes, prev, pager, next, jumper",
total: 0,
queryForm: {
current: 1,
size: 10,
orderNo: ""
}
};
},
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 {appNo} = row;
this.$router.push({
path: '/prod/edit',
query: { appNo }
})
},
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.apply_list(this.queryForm);
const { records, total } = result.result;
this.list = records;
this.total = total;
this.listLoading = false;
}
}
};
</script>
<style lang="scss" scoped>
.page-fence {
::v-deep {
i {
cursor: pointer;
}
}
box-sizing: border-box;
padding: 20px;
}
</style>
<style lang="scss">
.custom-table-checkbox {
.el-checkbox {
display: block !important;
margin: 0 0 $base-padding/4 0;
}
}
.action-bar {
margin-bottom: 15px;
}
</style>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment