Commit 61329c7d authored by caimeng's avatar caimeng

金银豆的人审提交测试

parent c7dd5573
......@@ -19,3 +19,6 @@
- bucket:oss://lrd-manage-prod
- 接口地址:https://aphrodite-admin.rockstect.net
- 访问地址:https://manage.rockstect.net/#/index
### 如果配置新菜单
<!-- 预授信申述 -->
<template>
<el-scrollbar class='com-approval'>
<block-header title='审批'></block-header>
<!--搜索-->
<el-form ref='dForm' label-suffix=':' label-width='120px' :rules='rules' :model='form' class='form-inline'>
<el-form-item prop='creditResult' label='审批意见'>
<template v-if='searchData!==null'>
<el-radio-group v-model='form.creditResult'>
<el-radio v-for='(a,index) in opinionEnum'
:key='index'
:label='a.creditResult'>{{ a.creditResultStr }}
</el-radio>
</el-radio-group>
</template>
</el-form-item>
<el-row v-if='form.creditResult==="CREDIT_PASS"'>
<el-col :span='10'>
<el-form-item prop='personAmount' label='人审额度'>
<el-input v-model='form.personAmount' style='width: 100%;' clearable placeholder='请输入人审额度' />
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span='10'>
<el-form-item label='审批备注'>
<el-input v-model='form.memo' type='textarea' clearable placeholder='请输入审批备注' />
</el-form-item>
</el-col>
</el-row>
<el-form-item>
<template>
<el-button type='primary' @click='onSubmit("dForm")'>确 定</el-button>
</template>
<el-button type='default' @click='onBack'>取 消</el-button>
</el-form-item>
</el-form>
</el-scrollbar>
</template>
<script>
import API from '@/server/api'
import { mapGetters } from 'vuex'
export default {
name: 'Approval',
props: {
item: {
type: Object,
require: true
}
},
data() {
return {
rules: {
creditResult: [
{
required: true,
trigger: 'change',
message: '请选择审批意见'
}
],
personAmount: [
{
required: true,
trigger: 'blur',
message: '请输入人审额度'
},
{
validator: (rule, value, callback) => {
const reg = /^\d+$/
if (!reg.test(value)) {
callback(new Error('请输入合法的额度'))
} else {
callback()
}
},
trigger: 'blur'
}
],
memo: [
{
required: true,
trigger: 'blur',
message: '请输入审批备注'
}
]
},
creditNo: '',
opinionEnum: [],
form: {
personAmount: '',
creditNo: '',
creditResult:''
}
}
},
computed: {
...mapGetters(['searchData', 'user'])
},
async mounted() {
console.log(this.item, 'nash ')
if (this.item !== null) {
const { clientDetail, projectInfoResponse } = this.item
const { creditNo} = clientDetail
if(projectInfoResponse){
const { creditAmt } = projectInfoResponse
this.form.personAmount = creditAmt
}
this.creditNo = creditNo
this.form.creditNo = creditNo
// 那啥
if (this.searchData !== null) {
this.opinionEnum = this.searchData.xdCredit
}
}
},
methods: {
onSubmit(formName) {
this.$refs[formName].validate(async (valid) => {
if (valid) {
this.$confirm('是否确认提交?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(async (res) => {
const form = this.form;
const result = await API.localCreditSubmit({
...form
})
if (result.success) {
this.$message({
type: 'success',
message: '审批成功'
})
this.onBack()
}
}).catch((e) => {
console.log(e, '取消申述了')
})
}
})
},
onBack() {
this.$router.back()
//window.close()
}
}
}
</script>
<style scoped lang='scss'>
.com-approval {
//position: relative;
margin-top: 15px;
}
</style>
......@@ -5,8 +5,12 @@
<el-descriptions style='margin-bottom: 20px;' border size='small' :column='3'>
<el-descriptions-item label-class-name='labelCls' label='申请时间'>{{ baseInfo.applyDate }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='授信类型'>{{ baseInfo.creditTypeStr }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='授信状态'>{{ baseInfo.creditStatusStr }}
<el-descriptions-item v-if='page' label-class-name='labelCls' label='人审结果'>{{ baseInfo.creditResultStr }}
</el-descriptions-item>
<el-descriptions-item v-else label-class-name='labelCls' label='授信状态'>{{ baseInfo.creditStatusStr }}
</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='客户姓名'>{{ baseInfo.realName }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='手机号码'>{{ baseInfo.mobile }}</el-descriptions-item>
<el-descriptions-item label-class-name='labelCls' label='身份证号'>{{ baseInfo.idCard }}</el-descriptions-item>
......@@ -69,6 +73,10 @@
type: Object,
require: true
},
page: {
type: String,
require: false
},
isLoan: {
type: Boolean,
require: false
......
......@@ -5,6 +5,7 @@ import PrePlead from '@/components/pre-plead'
import LoanAudit from '@/components/loan-audit'
import Plead from '@/components/plead'
import Approval from '@/components/approval'
import LocalApproval from '@/components/local-approval'
import UserOtherInfo from '@/components/user-other-info'
import ApprovalResult from '@/components/approval-result'
import MchReport from '@/components/mch-report'
......@@ -32,6 +33,7 @@ export default {
UserProjectInfo,
Approval,
LoanAudit,
LocalApproval,
NoData,
......
......@@ -299,6 +299,40 @@ export const asyncRoutes = [
}
]
},
{
path: '/local',
name: 'local',
component: Layout,
redirect: '/local/list',
alwaysShow: true,
meta: {
noKeepAlive: true,
title: '本地小贷',
remixIcon: 'home-4-line'
},
children: [
{
path: 'list',
name: 'merchantList',
component: () => import('@/views/local/list'),
meta: {
noKeepAlive: true,
title: '人工审核'
}
},
{
path: 'detail',
name: 'merchantDetail',
component: () => import('@/views/local/detail'),
hidden: true,
meta: {
noKeepAlive: true,
title: '人审详情',
tagHidden: true
}
}
]
},
{
path: '/admin',
name: 'admin',
......
......@@ -385,7 +385,7 @@ export default {
return request({
url: '/partner/selectPartnerDetail',
method: 'get',
params:data
params: data
})
},
// 上下架(修改状态)
......@@ -401,7 +401,7 @@ export default {
return request({
url: '/partner/selectAccountByPartnerNo',
method: 'get',
params:data
params: data
})
},
// 商户银行卡更新
......@@ -432,13 +432,12 @@ export default {
},
// 商户产品配置列表
merchantProductList(data) {
return request({
url: '/partner/getLrdConfigList',
method: 'get',
params:data
params: data
})
},
// 商户产品配置更新
......@@ -450,5 +449,28 @@ export default {
})
},
// 本地小贷授信列表
localCreditList(data) {
return request({
url: '/xdCredit/creditList',
method: 'post',
data
})
},
// 本地小贷授信详情
localCreditDetail(data) {
return request({
url: '/xdCredit/creditPersonDetail',
method: 'get',
params: data
})
},
// 本地小贷人审提交
localCreditSubmit(data) {
return request({
url: '/xdCredit/creditPassOrRefused',
method: 'post',
data
})
}
}
<!-- 用户基础信息 -->
<template>
<el-dialog
v-drag
title='转派'
:visible.sync='visible'
:destroy-on-close='true'
:close-on-click-modal='false'
:append-to-body='false'
width='30%'
:before-close='handleClose'
>
<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' :popper-append-to-body='false' 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("form")'>确 定</el-button>
</div>
</el-dialog>
</template>
<script>
import API from '@/server/api'
import _ from 'lodash'
import { mapGetters } from 'vuex'
export default {
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: {
user: ''
}
}
},
computed: {
...mapGetters(['user'])
},
async created() {
if (this.item !== null) {
this.data = this.item
await this.initUser()
}
},
methods: {
// 初始化用户列表
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')
}
}
}
</script>
<style lang='scss'>
.custom-table-checkbox {
.el-checkbox {
display: block !important;
margin: 0 0 $base-padding/4 0;
}
}
.action-bar {
margin-bottom: 15px;
}
</style>
<template>
<div v-if='detail!==null' class='page'>
<!--用户基础信息-->
<template v-if='detail.clientDetail!==null'>
<user-base-info :contacts='detail.linkPhoneList' page='local' :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'>
<block-header title='操作日志' />
<operation-log :log='detail.operationLogResponse' />
</template>
<!-- 审批操作 -->
<template v-if='visible'>
<LocalApproval :item='detail' />
</template>
</div>
</template>
<script>
import API from '@/server/api'
export default {
name: 'ApprovalDetail',
data() {
return {
visible:false,
creditNo: '',
detail: null
}
},
async created() {
const { query } = this.$route
if (query && query.creditNo) {
this.creditNo = query.creditNo
await this.init()
await this.initSearchData()
}
},
async mounted() {
console.log('沃日')
await this.initSearchData()
},
methods: {
async initSearchData() {
await this.$store.dispatch('common/GetSearchData')
},
async init() {
const creditNo = this.creditNo
const result = await API.localCreditDetail({
creditNo
})
this.detail = result.result
const {clientDetail} = result.result
this.visible = !!(clientDetail.creditResult && clientDetail.creditResult === 'CREDIT_RETRIAL');
console.log('审批详情', this.detail)
}
}
}
</script>
<style lang='scss' src='./index.scss'></style>
.merchant-new{
box-sizing: border-box;
padding: 20px;
}
<template>
<div class='page-fence'>
<!--搜索-->
<block-header title='搜索' />
<div class='search'>
<el-form label-suffix=':' :inline='true' ref='form' :model='queryForm' class='form-inline'>
<el-form-item prop='creditNo' label='授信编号'>
<el-input
v-model='queryForm.creditNo'
clearable
placeholder='请输入授信编号'
/>
</el-form-item>
<el-form-item prop='realName' label='客户姓名'>
<el-input
v-model='queryForm.clientName'
clearable
placeholder='请输入客户姓名'
/>
</el-form-item>
<el-form-item prop='mobile' label='手机号码'>
<el-input
v-model='queryForm.mobile'
clearable
placeholder='请输入手机号码'
/>
</el-form-item>
<template v-if='searchData!==null'>
<el-form-item prop='creditType' label='人审结果'>
<el-select :popper-append-to-body='false' v-model='queryForm.creditResult' clearable placeholder='请选择授信类型'>
<el-option
v-for='(item,index) in searchData.xdCreditResult'
:key='index'
:label='item.creditResultStr'
:value='item.creditResult'></el-option>
</el-select>
</el-form-item>
</template>
<el-form-item prop='time' label='申请时间'>
<el-date-picker
v-model='queryForm.time'
type='datetimerange'
:picker-options='pickerConfig'
:default-time="['00:00:00', '23:59:59']"
value-format='yyyy-MM-dd HH:mm:ss'
range-separator='至'
start-placeholder='开始时间'
end-placeholder='结束时间'
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button icon='el-icon-search' type='primary' @click='onSearch'>搜 索</el-button>
<el-button icon='el-icon-delete' type='default' @click="onReset('form')">重置</el-button>
</el-form-item>
</el-form>
</div>
<!--操作菜单栏-->
<block-header title='授信列表' />
<!--表格-->
<el-table
ref='tableSort'
v-loading='listLoading'
border
size='small'
:data='list'
style='width: 100%'
>
<el-table-column
v-for='(item, index) in finallyColumns'
:key='index'
align='center'
:label='item.label'
:sortable='item.sortable'
:width='item.width'
:fixed='!!item.fixed'
:show-overflow-tooltip='!!item.overflow'
>
<template #default='{ row }'>
<span v-if='item.label==="授信金额(元)"'>
{{ money(row[item.prop]) }}
</span>
<span v-else-if='item.label==="人审结果"'>
<el-tag v-if='row.creditResult==="CREDIT_RETRIAL"' size='mini'>{{ row.creditResultStr }}</el-tag>
<el-tag v-if='row.creditResult==="PERSON_REFUSE"' type='warning' size='mini'>{{ row.creditResultStr }}</el-tag>
<el-tag v-if='row.creditResult==="CREDIT_PASS"' type='success' size='mini'>{{ row.creditResultStr
}}</el-tag>
</span>
<span v-else>{{ row[item.prop] }}</span>
</template>
</el-table-column>
<template>
<el-table-column fixed='right' align='center' label='操作'>
<template #default='{ row }'>
<el-button size='mini' type='text' @click='handleView(row)'>详情</el-button>
</template>
</el-table-column>
</template>
</el-table>
<!--分页-->
<el-pagination
:current-page='queryForm.current'
layout='total,sizes, prev, pager, next'
:page-sizes='[10,20,30,40,50,100]'
:page-size='queryForm.size'
:total='total'
background
@size-change='handleSizeChange'
@current-change='handleCurrentChange'
/>
</div>
</template>
<script>
import _ from 'lodash'
import API from '@/server/api'
import { mapGetters } from 'vuex'
export default {
name: 'LocalCreditList',
data() {
return {
checkList: ['授信编号', '客户姓名', '手机号码', '授信金额(元)', '人审结果', '申请时间'],
columns: [
{
order: 1,
label: '授信编号',
prop: 'creditNo'
},
{
order: 2,
label: '客户姓名',
prop: 'realName'
},
{
order: 3,
label: '手机号码',
prop: 'mobile'
},
{
order: 4,
label: '授信金额(元)',
prop: 'creditAmount'
},
{
order: 5,
label: '人审结果',
prop: 'creditResultStr'
},
{
order: 6,
label: '申请时间',
prop: 'gmtCreated'
}
],
list: [],
listLoading: true,
total: 0,
pickerConfig: this.datePickerOptions,
queryForm: {
current: 1,
size: 10,
creditNo: '',
clientName: '',
creditStatus: '',
creditResult: '',
time: '',
startTime: '',
endTime: ''
}
}
},
computed: {
finallyColumns() {
let finallyArray = []
this.checkList.forEach((checkItem) => {
finallyArray.push(
this.columns.filter((item) => item.label === checkItem)[0]
)
})
//return _.sortBy(finallyArray, (item) => item.creditNo)
return finallyArray
},
...mapGetters(['searchData', 'user'])
},
async mounted() {
await this.fetchData()
},
methods: {
onSearch() {
const { time } = this.queryForm
this.queryForm.current = 1
if (time) {
this.queryForm.startTime = time[0]
this.queryForm.endTime = time[1]
} else {
this.queryForm.startTime = ''
this.queryForm.endTime = ''
}
this.fetchData()
},
handleView(row) {
const { creditNo } = row
const route = {
path: '/local/detail',
query: { creditNo }
}
this.$router.push(route)
},
// 页码变更
handleSizeChange(val) {
this.queryForm.size = val
this.queryForm.current = 1
this.fetchData()
},
handleCurrentChange(val) {
this.queryForm.current = val
this.fetchData()
},
// 初始化列表数据
async fetchData() {
try {
this.listLoading = true
const form = this.queryForm
const params = Object.assign({}, form)
delete params.time
const res = await API.localCreditList({ ...params })
if(res.success){
const result = res.result
const { records, total } = result
this.list = records
this.total = total
this.listLoading = false
}
} catch (err) {
console.log('初始化人工审核授信列表报错')
}
}
}
}
</script>
<style lang='scss' scoped>
.page-fence {
::v-deep {
i {
cursor: pointer;
}
}
box-sizing: border-box;
padding: 20px;
}
</style>
<style lang='scss'>
.custom-table-checkbox {
.el-checkbox {
display: block !important;
margin: 0 0 $base-padding/4 0;
}
}
.action-bar {
margin-bottom: 15px;
}
</style>
......@@ -4,3 +4,12 @@
- 新增商户产品配置
- 新增商户账户管理
- 2.修改approval.vue,根据当前用户所在地区获取statusList里面的放款资金渠道列表
## 2023年2月15日
需求文档 https://ermo.yuque.com/cxq03k/tl02zi/uadubyieupueyrla
需求列表:
1. 添加人工审核的列表
2. 详情页面修改字段
3. 去掉一些必填项
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