Commit 9e668103 authored by 刘雅文's avatar 刘雅文

需求

parent 06527d13
NODE_ENV=production NODE_ENV=production
VUE_APP_ENV=production VUE_APP_ENV=production
VUE_APP_API=https://water.jqtianxia.com VUE_APP_API=https://water.jqtianxia.com
\ No newline at end of file
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
- 访问域名:https://customer.dingrongxd.com/ - 访问域名:https://customer.dingrongxd.com/
- API接口地址:https://drwater.dingrongxd.com - API接口地址:https://drwater.dingrongxd.com
**测试部署** **测试部署(放到金钱下面)**
- bucket:customer-vue-test - bucket:customer-vue-test
- 访问域名:http://customertest.jqtianxia.cn/ - 访问域名:http://customertest.jqtianxia.cn/
- API接口地址:http://47.99.245.36:8202 - API接口地址:http://47.99.245.36:8202
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -313,8 +313,6 @@ export default { ...@@ -313,8 +313,6 @@ export default {
if (this.searchInfo.productName != '') { if (this.searchInfo.productName != '') {
return_hash['productName'] = this.searchInfo.productName return_hash['productName'] = this.searchInfo.productName
} }
return return_hash; return return_hash;
}, },
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
<el-tab-pane name="FeedList" label="反馈记录"></el-tab-pane> <el-tab-pane name="FeedList" label="反馈记录"></el-tab-pane>
<el-tab-pane name="UrgeList" label="催收记录"></el-tab-pane> <el-tab-pane name="UrgeList" label="催收记录"></el-tab-pane>
<el-tab-pane name="OperateLog" label="操作日志"></el-tab-pane> <el-tab-pane name="OperateLog" label="操作日志"></el-tab-pane>
<el-tab-pane name="Messages" label="短信信息"></el-tab-pane>
</el-tabs> </el-tabs>
<div class="box-right"> <div class="box-right">
...@@ -65,6 +66,7 @@ import OperateLog from "./componments/OperateLog"; ...@@ -65,6 +66,7 @@ import OperateLog from "./componments/OperateLog";
import AddQuestion from "./componments/AddQuestion"; import AddQuestion from "./componments/AddQuestion";
import updateQueDialog from "./componments/UpdateQueDialog"; import updateQueDialog from "./componments/UpdateQueDialog";
import Messages from "./componments/Messages";
export default { export default {
...@@ -76,7 +78,7 @@ export default { ...@@ -76,7 +78,7 @@ export default {
FeedList, FeedList,
UrgeList, UrgeList,
OperateLog, OperateLog,
Messages,
AddQuestion, AddQuestion,
updateQueDialog updateQueDialog
}, },
...@@ -89,7 +91,6 @@ export default { ...@@ -89,7 +91,6 @@ export default {
firstLoanNo: '', firstLoanNo: '',
loan: {}, loan: {},
query: {}, query: {},
basicInfo: {}, basicInfo: {},
clientNos: "", clientNos: "",
clientProducts: "", clientProducts: "",
......
<template>
<div class="box">
<h3>创建退款单:</h3>
<el-form
:inline="false"
:model="loanInfo"
:rules="rules"
ref="loanInfo"
label-width="200px"
>
<el-form-item label="借款编号:" prop="loanNo">
<el-input
placeholder="请输入客户编号"
v-model="loanInfo.loanNo"
></el-input>
</el-form-item>
<el-form-item label="退款金额:" prop="refundAmt">
<el-input
placeholder="请输入退款金额"
v-model="loanInfo.refundAmt"
></el-input>
</el-form-item>
<el-form-item label="备注信息:" prop="memo">
<el-input
placeholder="请输入备注信息"
v-model="loanInfo.memo"
></el-input>
</el-form-item>
</el-form>
<el-button class="btn" type="primary" @click="trueSet('loanInfo')"
>确定创建</el-button
>
</div>
</template>
<script>
export default {
name: "CreateRefund",
data() {
return {
loanInfo: {
loanNo: "", //借款编号
refundAmt: "", //退款金额
memo: "", //备注
creator: "", //创建人
},
creators: "", //创建人
rules: {
loanNo: [
{ required: true, message: "请输入借款编号", trigger: "blur" },
],
refundAmt: [
{ required: true, message: "请输入退款金额", trigger: "blur" },
],
memo: [
{ required: true, message: "填输入备注信息", trigger: "blur" },
],
},
};
},
mounted() {
//获取登录名
this.creators = localStorage.getItem("loginName");
// console.log(this.creators,'445')
},
methods: {
open() {
this.$confirm("此操作将为您创建退款单,是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
// console.log(this.creators,this.loanInfo,'zhegeshi canshu')
if(this.creators){
this.loanInfo.creator=this.creators
}
this.$$post(`/refund/createRefund`, this.loanInfo).then((res) => {
if (res.data.code != 200) {
this.$message.error(res.data.message);
return;
}
else {
this.loanInfo = {};
this.$message({
type: "success",
message: "创建成功!",
});
}
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消创建",
});
this.loanInfo = {};
});
},
//点击确定提交信息
trueSet(loanInfo) {
this.$refs[loanInfo].validate((valid) => {
if (valid) {
this.open();
} else {
console.log("提交失败!!!");
return false;
}
});
},
},
};
</script>
<style >
.box {
padding: 30px;
}
h3 {
margin-left: 50px;
margin-bottom: 30px;
}
.el-input__inner {
width: 250px;
}
.btn {
margin-left: 120px;
}
</style>
\ No newline at end of file
...@@ -83,6 +83,10 @@ export default { ...@@ -83,6 +83,10 @@ export default {
data() { data() {
return { return {
options: [ options: [
{
value: 'R0',
label: 'R0'
},
{ {
value: 'R1', value: 'R1',
label: 'R1' label: 'R1'
......
...@@ -77,8 +77,9 @@ ...@@ -77,8 +77,9 @@
<el-table-column align="center" prop="clientCell" label="手机号"></el-table-column> <el-table-column align="center" prop="clientCell" label="手机号"></el-table-column>
<el-table-column align="center" prop="gmtCreated" label="反馈时间" :formatter="dateFormat"></el-table-column> <el-table-column align="center" prop="gmtCreated" label="反馈时间" :formatter="dateFormat"></el-table-column>
<el-table-column align="center" prop="feedType" label="反馈类型"></el-table-column> <el-table-column align="center" prop="feedType" label="反馈类型"></el-table-column>
<!--<el-table-column prop="feedProduct" label="产品名称" :formatter="productNameFormat" ></el-table-column>--> <!-- <el-table-column align="center" prop="feedProduct" label="产品名称" :formatter="productNameFormat" ></el-table-column> -->
<el-table-column align="center" prop="feedSource" label="来源" :formatter="feedSourceFormat"></el-table-column> <el-table-column align="center" prop="feedSource" label="来源" :formatter="feedSourceFormat"></el-table-column>
<el-table-column align="center" prop="feedProductStr" label="渠道来源" ></el-table-column>
<el-table-column align="center" prop="feedStatus" label="解决状态"></el-table-column> <el-table-column align="center" prop="feedStatus" label="解决状态"></el-table-column>
<el-table-column align="center" label="操作"> <el-table-column align="center" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
...@@ -175,8 +176,10 @@ export default { ...@@ -175,8 +176,10 @@ export default {
this.$message.error(res.data.message); this.$message.error(res.data.message);
return return
} }
// console.log(res.data.result);
listsData = res.data.result.records; listsData = res.data.result.records;
this.tablePlanRemindData = listsData; this.tablePlanRemindData = listsData;
// console.log(this.tablePlanRemindData);
this.page.total = res.data.result.total; this.page.total = res.data.result.total;
}).catch(error => { }).catch(error => {
......
...@@ -101,6 +101,7 @@ export default { ...@@ -101,6 +101,7 @@ export default {
feedContent: '', feedContent: '',
clientNo: '', clientNo: '',
creater: '', creater: '',
loanNo:'',
productName: '', productName: '',
feedVoucher: [] feedVoucher: []
}, },
...@@ -158,7 +159,8 @@ export default { ...@@ -158,7 +159,8 @@ export default {
} }
}, },
created() { created() {
const {clientNo, feedNo, feedType,feedStatus,feedContent,feedVoucher, feedProduct} = this.params; console.log(this.params,'888888888888');
const {clientNo, feedNo, feedType,feedStatus,feedContent,feedVoucher, feedProduct,loanNo} = this.params;
const list = []; const list = [];
feedVoucher.forEach(item=>{ feedVoucher.forEach(item=>{
const o = {}; const o = {};
...@@ -168,7 +170,7 @@ export default { ...@@ -168,7 +170,7 @@ export default {
}); });
this.fileList = list; this.fileList = list;
console.log(this.params,'内容'); // console.log(this.params,'内容');
this.ruleForm = { this.ruleForm = {
feedNo, feedNo,
...@@ -176,6 +178,7 @@ export default { ...@@ -176,6 +178,7 @@ export default {
feedStatus, feedStatus,
feedContent, feedContent,
feedVoucher, feedVoucher,
loanNo,
clientNo, clientNo,
productName: feedProduct, productName: feedProduct,
creater: localStorage.getItem("userName"), creater: localStorage.getItem("userName"),
...@@ -249,6 +252,7 @@ export default { ...@@ -249,6 +252,7 @@ export default {
feedType: this.ruleForm.feedType, feedType: this.ruleForm.feedType,
feedSource: 'CUSTOMER', feedSource: 'CUSTOMER',
feedStatus: this.ruleForm.feedStatus, feedStatus: this.ruleForm.feedStatus,
loanNo: this.ruleForm.loanNo,
feedContent: this.ruleForm.feedContent, feedContent: this.ruleForm.feedContent,
clientNo: this.ruleForm.clientNo, clientNo: this.ruleForm.clientNo,
productName: this.ruleForm.productName, productName: this.ruleForm.productName,
...@@ -276,6 +280,7 @@ export default { ...@@ -276,6 +280,7 @@ export default {
feedStatus: this.ruleForm.feedStatus, feedStatus: this.ruleForm.feedStatus,
feedContent: this.ruleForm.feedContent, feedContent: this.ruleForm.feedContent,
clientNo: this.ruleForm.clientNo, clientNo: this.ruleForm.clientNo,
loanNo: this.ruleForm.loanNo,
productName: this.ruleForm.productName, productName: this.ruleForm.productName,
feedVoucher: feedVoucher feedVoucher: feedVoucher
}) })
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<div style="margin-left:50px"> <div style="margin-left:50px">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="8"> <el-col :span="8">
<div class="grid-content bg-purple">本金:{{ this.ruleForm.principleAmt }}</div> <div class="grid-content bg-purple">本金:{{ this.ruleForm.raiseAmt }}</div>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="grid-content bg-purple">起息日:{{ this.ruleForm.startDate | dateFilter }}</div> <div class="grid-content bg-purple">起息日:{{ this.ruleForm.startDate | dateFilter }}</div>
...@@ -76,7 +76,7 @@ ...@@ -76,7 +76,7 @@
</el-form-item> </el-form-item>
<el-form-item label="减免金额" prop="derateAmt"> <el-form-item label="减免金额" prop="derateAmt">
<el-col :span="20"> <el-col :span="20">
<el-input v-model="ruleForm.derateAmt" placeholder="请输入转账金额" disabled></el-input> <el-input v-model="ruleForm.derateAmt" placeholder="请输入减免金额" disabled></el-input>
</el-col> </el-col>
</el-form-item> </el-form-item>
<el-form-item label="还款凭证" prop="attach"> <el-form-item label="还款凭证" prop="attach">
...@@ -109,7 +109,6 @@ ...@@ -109,7 +109,6 @@
<script> <script>
import * as moment from "moment"; import * as moment from "moment";
export default { export default {
name: "advanceLoanAmt", name: "advanceLoanAmt",
props: { props: {
...@@ -152,6 +151,7 @@ export default { ...@@ -152,6 +151,7 @@ export default {
attach: '', attach: '',
bankAccount: '', bankAccount: '',
bankOwner: '', bankOwner: '',
raiseAmt:''
}, },
rules: { rules: {
bankAccount: [{required: true, message: '请输入还款银行账号', trigger: 'blur'}], bankAccount: [{required: true, message: '请输入还款银行账号', trigger: 'blur'}],
......
...@@ -74,7 +74,6 @@ export default { ...@@ -74,7 +74,6 @@ export default {
}, },
async created() { async created() {
if(this.params){ if(this.params){
console.log(this.params,'哈哈');
const {applyVo} = this.params; const {applyVo} = this.params;
this.loanModel = applyVo; this.loanModel = applyVo;
this.productNameFormat(this.loanModel.productName); this.productNameFormat(this.loanModel.productName);
......
<template> <template>
<div class="tabs-content"> <div class="tabs-content">
<block-header title="基本信息"> <block-header title="基本信息"> </block-header>
</block-header>
<div class="block-box"> <div class="block-box">
<table class="table"> <table class="table">
<tr> <tr>
...@@ -16,18 +14,42 @@ ...@@ -16,18 +14,42 @@
<tr> <tr>
<td>实名认证:</td> <td>实名认证:</td>
<td> <td>
<el-tag size="mini" type="danger" v-if="basicInfo.isIdentity==='未认证'"> {{ basicInfo.isIdentity }}</el-tag> <el-tag
<el-tag size="mini" type="success" v-else> {{ basicInfo.isIdentity }}</el-tag> size="mini"
type="danger"
v-if="basicInfo.isIdentity === '未认证'"
>
{{ basicInfo.isIdentity }}</el-tag
>
<el-tag size="mini" type="success" v-else>
{{ basicInfo.isIdentity }}</el-tag
>
</td> </td>
<td>基础信息认证:</td> <td>基础信息认证:</td>
<td> <td>
<el-tag size="mini" type="danger" v-if="basicInfo.isIdentity==='未认证'"> {{ basicInfo.isBasicInfo }}</el-tag> <el-tag
<el-tag size="mini" type="success" v-else> {{ basicInfo.isBasicInfo }}</el-tag> size="mini"
type="danger"
v-if="basicInfo.isIdentity === '未认证'"
>
{{ basicInfo.isBasicInfo }}</el-tag
>
<el-tag size="mini" type="success" v-else>
{{ basicInfo.isBasicInfo }}</el-tag
>
</td> </td>
<td>活体认证:</td> <td>活体认证:</td>
<td> <td>
<el-tag size="mini" type="danger" v-if="basicInfo.isIdentity==='未认证'"> {{ basicInfo.isFace }}</el-tag> <el-tag
<el-tag size="mini" type="success" v-else> {{ basicInfo.isFace }}</el-tag> size="mini"
type="danger"
v-if="basicInfo.isIdentity === '未认证'"
>
{{ basicInfo.isFace }}</el-tag
>
<el-tag size="mini" type="success" v-else>
{{ basicInfo.isFace }}</el-tag
>
</td> </td>
</tr> </tr>
<tr> <tr>
...@@ -46,23 +68,54 @@ ...@@ -46,23 +68,54 @@
</tr> </tr>
</table> </table>
</div> </div>
<block-header title="银行卡列表"/> <block-header title="银行卡列表" />
<div class="block-box"> <div class="block-box">
<el-table <el-table
:header-row-class-name="headerStyle" :header-row-class-name="headerStyle"
:highlight-current-row="true" :highlight-current-row="true"
border border
size="small" size="small"
:data="ownerBank" :data="ownerBank"
stripe style="width: 100%;"> stripe
<el-table-column align="center" prop="bankAccount" label="银行卡号"></el-table-column> style="width: 100%"
<el-table-column align="center" prop="openBankName" label="银行名称"></el-table-column> >
<el-table-column align="center" prop="ownerName" label="姓名"></el-table-column> <el-table-column
<el-table-column align="center" prop="payChannelApi" label="渠道名称"></el-table-column> align="center"
<el-table-column align="center" prop="gmtCreated" label="绑定时间" :formatter="dateFormat"></el-table-column> prop="bankAccount"
label="银行卡号"
></el-table-column>
<el-table-column
align="center"
prop="openBankName"
label="银行名称"
></el-table-column>
<el-table-column
align="center"
prop="ownerName"
label="姓名"
></el-table-column>
<el-table-column
align="center"
prop="payChannelApi"
label="渠道名称"
></el-table-column>
<el-table-column
align="center"
prop="gmtCreated"
label="绑定时间"
:formatter="dateFormat"
></el-table-column>
<el-table-column align="center" label="操作"> <el-table-column align="center" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" size="small" @click="ownerBankBind(scope.row,'BindCardRecord','绑卡记录')">绑卡记录</el-button> <el-button
type="text"
size="small"
@click="ownerBankBind(scope.row, 'BindCardRecord', '绑卡记录')"
>绑卡记录</el-button
>
<el-button type="text" size="small" @click="unSign(scope.row)"
>解绑</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
...@@ -71,25 +124,48 @@ ...@@ -71,25 +124,48 @@
<!--绑卡记录--> <!--绑卡记录-->
<template v-if="visible"> <template v-if="visible">
<component <component
@handleClose="visible = false" @handleClose="visible = false"
:is="activeComponents" :is="activeComponents"
:dialogVisible="visible" :dialogVisible="visible"
:params="dParams" :params="dParams"
:title="dTitle"/> :title="dTitle"
/>
</template>
<!-- 解绑 -->
<template v-if="dialogTableVisible">
<el-dialog
title="请输入手机号"
center
width="30%"
:visible.sync="dialogTableVisible"
>
<el-form :model="tellphone">
<el-form-item label="旧手机号:" label-width="100">
<el-input v-model="tellphone.ownerMobile"></el-input>
</el-form-item>
<el-form-item label="新手机号:" label-width="100">
<el-input v-model="tellphone.newOwnerMobile"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="cancel">取 消</el-button>
<el-button type="primary" @click="submittel">确 定</el-button>
</div>
</el-dialog>
</template> </template>
</div> </div>
</template> </template>
<script> <script>
import BlockHeader from "@/components/byh/componments/blockHeader"; import BlockHeader from "@/components/byh/componments/blockHeader";
import BindCardRecord from './OwnerBankBind' import BindCardRecord from "./OwnerBankBind";
import * as moment from "moment"; import * as moment from "moment";
export default { export default {
name: 'AddUserServiceDialog', name: "AddUserServiceDialog",
components: { components: {
BlockHeader, BlockHeader,
BindCardRecord BindCardRecord,
}, },
props: { props: {
dialogVisible: { dialogVisible: {
...@@ -102,7 +178,7 @@ export default { ...@@ -102,7 +178,7 @@ export default {
}, },
params: { params: {
type: Object, type: Object,
required: true required: true,
}, },
}, },
data() { data() {
...@@ -111,29 +187,43 @@ export default { ...@@ -111,29 +187,43 @@ export default {
activeComponents: "", activeComponents: "",
dTitle: "", dTitle: "",
dParams: {}, dParams: {},
dialogTableVisible: false,
basicInfo: {}, basicInfo: {},
ownerBank: [] ownerBank: [],
} // 手机号
tellphone: {
newOwnerMobile: "",
ownerMobile: "",
},
dataInfo: {
bankAccount: "",
bizType: "",
clientNo: "",
productName: "",
},
};
}, },
filters: { filters: {
dateFilter: function (row) { dateFilter: function (row) {
const exp = row; const exp = row;
if (!exp || typeof (exp) === undefined || typeof (exp) === null) { if (!exp || typeof exp === undefined || typeof exp === null) {
return '' return "";
} }
return moment(exp).format("YYYY-MM-DD") return moment(exp).format("YYYY-MM-DD");
}, },
}, },
async created() { async created() {
if (this.params) { if (this.params) {
const params = this.params; const params = this.params;
console.log(params, '是什么'); // console.log(params, "是什么");
const {basicInfo} = params; const { basicInfo } = params;
this.basicInfo = basicInfo; this.basicInfo = basicInfo;
if (basicInfo.cardList) this.ownerBank = basicInfo.cardList; if (basicInfo.cardList) this.ownerBank = basicInfo.cardList;
} }
// console.log(this.$route.query.clientProductName)
this.dataInfo.productName=this.$route.query.clientProductName
this.dataInfo.clientNo=this.$route.query.clientNo
}, },
methods: { methods: {
headerStyle() { headerStyle() {
...@@ -141,23 +231,90 @@ export default { ...@@ -141,23 +231,90 @@ export default {
}, },
/*日期*/ /*日期*/
dateFormat: function (row, column) { dateFormat: function (row, column) {
let date = row[column.property] let date = row[column.property];
if (date === undefined) { if (date === undefined) {
return '' return "";
} }
return moment(date).format("YYYY-MM-DD HH:mm:ss") return moment(date).format("YYYY-MM-DD HH:mm:ss");
}, },
// 查看绑卡记录 // 查看绑卡记录
ownerBankBind(row,com,title) { ownerBankBind(row, com, title) {
this.activeComponents = com; this.activeComponents = com;
this.visible = true; this.visible = true;
this.dTitle = title; this.dTitle = title;
this.dParams = row; this.dParams = row;
} },
} //解绑
} unSign(n) {
console.log(n);
// console.log(this.params);
this.$confirm("确定要解绑吗?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
this.dialogTableVisible = true;
// this.dataInfo.clientNo = n.clientNo;
this.dataInfo.bizType = n.bizType;
this.dataInfo.bankAccount = n.bankAccount;
})
.catch(() => {
this.$message({
type: "info",
message: "已取消解绑",
});
});
},
//点击取消
cancel() {
this.dialogTableVisible = false;
this.tellphone = "";
this.$message({
type: "info",
message: "已取消解绑",
});
},
//点击确定提交数据
submittel() {
//验证电话号码
if (!/^1[3-9][0-9]\d{8}$/.test(this.tellphone.newOwnerMobile)) {
this.$message({
message: "新号码填写有误",
type: "error",
});
this.tellphone.newOwnerMobile = "";
}
if (!/^1[3-9][0-9]\d{8}$/.test(this.tellphone.ownerMobile)) {
this.$message({
message: "旧号码填写有误",
type: "error",
});
this.tellphone.ownerMobile = "";
} else {
let postData = { ...this.dataInfo, ...this.tellphone };
console.log(postData);
//调接口
this.$$post(`/detail/unSign`,postData).then((res)=>{
if (res.data.code != 200) {
this.dialogTableVisible = false;
this.$message.error(res.data.message);
this.tellphone={};
return
}
this.$message({
type: 'success',
message: '解绑成功!'
});
this.dialogTableVisible = false;
this.tellphone={};
window.location.reload();
})
}
},
},
};
</script> </script>
<style> <style>
</style> </style>
...@@ -10,10 +10,12 @@ ...@@ -10,10 +10,12 @@
<td>{{ loanVo.surAmt }}</td> <td>{{ loanVo.surAmt }}</td>
</tr> </tr>
<tr> <tr>
<td>退款金额:</td> <td>退款金额:</td>
<td> <td>
<span v-if="loanVo.refundAmt !== null ">{{ loanVo.refundAmt }} ({{ loanVo.refundStatusDesc }})</span> <span v-if="loanVo.refundAmt !== 0"
<span v-else>¥0</span> >{{ loanVo.refundAmt }} ({{ loanVo.refundStatusDesc }})</span
>
<span v-else>{{ loanVo.refundAmt }}</span>
</td> </td>
<td>账单已还款:</td> <td>账单已还款:</td>
<td>{{ loanVo.alrAmt }}</td> <td>{{ loanVo.alrAmt }}</td>
...@@ -21,13 +23,26 @@ ...@@ -21,13 +23,26 @@
<tr> <tr>
<td>操作:</td> <td>操作:</td>
<td> <td>
<el-button type="primary" size="mini" @click="handleAdvanceLoanAmt" v-if="isNeedAudit">线下结清</el-button> <el-button
<el-button type="primary" size="mini" @click="protocolSettleAll">代扣结清</el-button> type="primary"
size="mini"
@click="handleAdvanceLoanAmt"
v-if="isNeedAudit"
>线下结清</el-button
>
<el-button type="primary" size="mini" @click="protocolSettleAll"
>代扣结清</el-button
>
<el-button
type="primary"
size="mini"
v-if="params.capitalCodeStr === '自营'"
@click="handleDevicePayment"
>分笔代扣</el-button
>
</td> </td>
<td>减免金额:</td> <td>减免金额:</td>
<td> <td>{{ loanVo.derateAmt }}</td>
{{loanVo.derateAmt}}
</td>
</tr> </tr>
</table> </table>
</div> </div>
...@@ -35,129 +50,230 @@ ...@@ -35,129 +50,230 @@
<div class="tables"> <div class="tables">
<!-- <block-header :title="title"></block-header> --> <!-- <block-header :title="title"></block-header> -->
<el-table <el-table
@filter-change="handleFilterChange" @filter-change="handleFilterChange"
border border
size="mini" size="mini"
:highlight-current-row="true" :highlight-current-row="true"
:header-row-class-name="headerStyle" :header-row-class-name="headerStyle"
:data="data" :data="data"
stripe stripe
style="width: 100%;"> style="width: 100%"
>
<el-table-column align="center" prop="planNo" label="计划编号" width="135px"></el-table-column> <el-table-column
<el-table-column align="center" prop="planIndex" label="期数"></el-table-column> align="center"
<el-table-column align="center" prop="planAmt" width="85" label="应还总金额"></el-table-column> prop="planNo"
<el-table-column align="center" prop="planBen" label="本金"></el-table-column> label="计划编号"
<el-table-column align="center" prop="planFu" label="服务费"></el-table-column> width="135px"
<el-table-column align="center" prop="planXi" label="利息"></el-table-column> ></el-table-column>
<el-table-column align="center" prop="planFa" label="计划罚息"></el-table-column> <el-table-column
<el-table-column align="center" prop="accountAmt" label="手续费"></el-table-column> align="center"
<el-table-column align="center" prop="planDate" width="120" label="计划还款时间" prop="planIndex"
:formatter="dateFormats"></el-table-column> label="期数"
<el-table-column align="center" prop="backedAmt" label="已还金额" :formatter="planMoneyFormat"></el-table-column> ></el-table-column>
<el-table-column align="center" prop="derateAmt" label="减免金额"></el-table-column> <el-table-column
<el-table-column align="center" prop="remainAmt" label="待还金额"></el-table-column> align="center"
<el-table-column align="center" prop="statusStr" label="还款状态"></el-table-column> prop="planAmt"
<el-table-column align="center" prop="gmtModified" width="120" label="结清时间" width="85"
:formatter="dateFormats"></el-table-column> label="应还总金额"
></el-table-column>
<el-table-column
align="center"
prop="planBen"
label="本金"
></el-table-column>
<el-table-column
align="center"
prop="planFu"
label="服务费"
></el-table-column>
<el-table-column
align="center"
prop="planXi"
label="利息"
></el-table-column>
<el-table-column
align="center"
prop="planFa"
label="计划罚息"
></el-table-column>
<el-table-column
align="center"
prop="accountAmt"
label="手续费"
></el-table-column>
<el-table-column
align="center"
prop="planDate"
width="120"
label="计划还款时间"
:formatter="dateFormats"
></el-table-column>
<el-table-column
align="center"
prop="backedAmt"
label="已还金额"
:formatter="planMoneyFormat"
></el-table-column>
<el-table-column
align="center"
prop="derateAmt"
label="减免金额"
></el-table-column>
<el-table-column
align="center"
prop="remainAmt"
label="待还金额"
></el-table-column>
<el-table-column
align="center"
prop="statusStr"
label="还款状态"
></el-table-column>
<el-table-column
align="center"
prop="gmtModified"
width="120"
label="结清时间"
:formatter="dateFormats"
></el-table-column>
<el-table-column fixed="right" align="center" width="120" label="操作"> <el-table-column fixed="right" align="center" width="120" label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button
<el-button type="text" size="small" type="text"
v-if=" scope.row.status !='SETTLED' && scope.row.backedSign == 'YES' " size="small"
@click="protocolOne(scope.row)">代扣 v-if="
scope.row.status != 'SETTLED' && scope.row.backedSign == 'YES'
"
@click="protocolOne(scope.row)"
>代扣
</el-button> </el-button>
<el-button type="text" size="small" v-else disabled @click="protocolOne(scope.row)">代扣</el-button> <el-button
type="text"
size="small"
v-else
disabled
@click="protocolOne(scope.row)"
>代扣</el-button
>
<el-button type="text" size="small" <el-button
v-if=" scope.row.status != 'SETTLED' && scope.row.backedSign == 'YES' " type="text"
@click="offlineTransfer(scope.row)">线下转账 size="small"
v-if="
scope.row.status != 'SETTLED' && scope.row.backedSign == 'YES'
"
@click="offlineTransfer(scope.row)"
>线下转账
</el-button> </el-button>
<el-button type="text" size="small" v-else disabled @click="offlineTransfer(scope.row)">线下转账</el-button> <el-button
type="text"
size="small"
v-else
disabled
@click="offlineTransfer(scope.row)"
>线下转账</el-button
>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<div class="pages"> <div class="pages">
<el-pagination <el-pagination
background background
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
@size-change="handleSizeChange" @size-change="handleSizeChange"
:current-page.sync="form.current" :current-page.sync="form.current"
:page-sizes="[10, 20, 50, 100]" :page-sizes="[10, 20, 50, 100]"
:page-size="form.size" :page-size="form.size"
layout="total, sizes, prev, pager, next, jumper" layout="total, sizes, prev, pager, next, jumper"
:total="form.total"> :total="form.total"
>
</el-pagination> </el-pagination>
</div> </div>
<!--线下提前结清--> <!--线下提前结清-->
<advance-loan-amt <advance-loan-amt
v-if="ui.advanceLoanAmt.visible" v-if="ui.advanceLoanAmt.visible"
:loanNo="ui.advanceLoanAmt.loanNo" :loanNo="ui.advanceLoanAmt.loanNo"
:orderNo="ui.advanceLoanAmt.orderNo" :orderNo="ui.advanceLoanAmt.orderNo"
@callback="init" @callback="init"
:dialogVisible.sync="ui.advanceLoanAmt.visible"> :dialogVisible.sync="ui.advanceLoanAmt.visible"
>
</advance-loan-amt> </advance-loan-amt>
<!--代扣提前结清--> <!--代扣提前结清-->
<protocol-settled <protocol-settled
v-if="ui.protocolSettled.visible" v-if="ui.protocolSettled.visible"
:loanNo="ui.protocolSettled.loanNo" :loanNo="ui.protocolSettled.loanNo"
:clientNo="ui.protocolSettled.clientNo" :clientNo="ui.protocolSettled.clientNo"
:bizType="ui.protocolSettled.bizType" :bizType="ui.protocolSettled.bizType"
@callback="init" @callback="init"
:dialogVisible.sync="ui.protocolSettled.visible"> :dialogVisible.sync="ui.protocolSettled.visible"
>
</protocol-settled> </protocol-settled>
<!--分笔代扣-->
<device-payment
v-if="ui.devicePayment.visible"
:loanNo="ui.devicePayment.loanNo"
:orderNo="ui.devicePayment.orderNo"
:clientNo="ui.devicePayment.clientNo"
:bizType="ui.devicePayment.bizType"
@callback="init"
:dialogVisible.sync="ui.devicePayment.visible"
>
</device-payment>
<protocol-settled-one <protocol-settled-one
v-if="ui.protocolSettledOne.visible" v-if="ui.protocolSettledOne.visible"
:loanNo="ui.protocolSettledOne.loanNo" :loanNo="ui.protocolSettledOne.loanNo"
:periodNo="ui.protocolSettledOne.periodNo" :periodNo="ui.protocolSettledOne.periodNo"
:remainAmt="ui.protocolSettledOne.remainAmt" :remainAmt="ui.protocolSettledOne.remainAmt"
:planAmt="ui.protocolSettledOne.planAmt" :planAmt="ui.protocolSettledOne.planAmt"
:bizType="ui.protocolSettledOne.bizType" :bizType="ui.protocolSettledOne.bizType"
:clientNo="ui.protocolSettledOne.clientNo" :clientNo="ui.protocolSettledOne.clientNo"
@callback="init" :loanSign="ui.protocolSettledOne.loanSign"
:dialogVisible.sync="ui.protocolSettledOne.visible"> @callback="init"
:dialogVisible.sync="ui.protocolSettledOne.visible"
>
</protocol-settled-one> </protocol-settled-one>
<!-- 线下转账 --> <!-- 线下转账 -->
<offline-transfer <offline-transfer
v-if="ui.offineTransfer.visible" v-if="ui.offineTransfer.visible"
:orderNo="ui.offineTransfer.orderNo" :orderNo="ui.offineTransfer.orderNo"
:loanNo="ui.offineTransfer.loanNo" :loanNo="ui.offineTransfer.loanNo"
:periodNo="ui.offineTransfer.periodNo" :periodNo="ui.offineTransfer.periodNo"
:planNo="ui.offineTransfer.planNo" :planNo="ui.offineTransfer.planNo"
:planAmt="ui.offineTransfer.planAmt" :planAmt="ui.offineTransfer.planAmt"
:planFu="ui.offineTransfer.planFu" :planFu="ui.offineTransfer.planFu"
:planBen="ui.offineTransfer.planBen" :planBen="ui.offineTransfer.planBen"
:planXi="ui.offineTransfer.planXi" :planXi="ui.offineTransfer.planXi"
:remainAmt="ui.offineTransfer.remainAmt" :remainAmt="ui.offineTransfer.remainAmt"
:accountAmt="ui.offineTransfer.accountAmt" :accountAmt="ui.offineTransfer.accountAmt"
@callback="init" @callback="init"
:dialogVisible.sync="ui.offineTransfer.visible"> :dialogVisible.sync="ui.offineTransfer.visible"
>
</offline-transfer> </offline-transfer>
</div> </div>
</template> </template>
<script> <script>
import * as moment from "moment"; import * as moment from "moment";
import AdvanceLoanAmt from './AdvanceLoanAmt' import AdvanceLoanAmt from "./AdvanceLoanAmt";
import ProtocolSettled from './ProtocolSettled' import ProtocolSettled from "./ProtocolSettled";
import ProtocolSettledOne from './ProtocolSettledOne' import ProtocolSettledOne from "./ProtocolSettledOne";
import OfflineTransfer from './OffineTransfer' import OfflineTransfer from "./OffineTransfer";
import DevicePayment from "./DevicePayment";
export default { export default {
name: 'RiskInfo', name: "RiskInfo",
components: { components: {
AdvanceLoanAmt, AdvanceLoanAmt,
ProtocolSettled, ProtocolSettled,
ProtocolSettledOne, ProtocolSettledOne,
OfflineTransfer OfflineTransfer,
DevicePayment,
}, },
props: { props: {
title: { title: {
...@@ -166,12 +282,15 @@ export default { ...@@ -166,12 +282,15 @@ export default {
}, },
params: { params: {
type: Object, type: Object,
required: true required: true,
}, },
}, },
data() { data() {
return { return {
tableStatus: [{text: '成功', value: "SUCCESS"}, {text: '失败', value: "FAIL"}], tableStatus: [
{ text: "成功", value: "SUCCESS" },
{ text: "失败", value: "FAIL" },
],
form: { form: {
total: 1, total: 1,
current: 1, current: 1,
...@@ -181,128 +300,139 @@ export default { ...@@ -181,128 +300,139 @@ export default {
loanVo: {}, loanVo: {},
isNeedAudit: true, isNeedAudit: true,
data: [], data: [],
ui: { ui: {
offineTransfer: { offineTransfer: {
visible: false, visible: false,
orderNo: '', orderNo: "",
loanNo: '', loanNo: "",
periodNo: '', periodNo: "",
planAmt: '', planAmt: "",
planFu: '', planFu: "",
planBen: '', planBen: "",
planXi: '', planXi: "",
planNo: '', planNo: "",
accountAmt: '', accountAmt: "",
}, },
advanceLoanAmt: { advanceLoanAmt: {
visible: false, visible: false,
orderNo: '', orderNo: "",
loanNo: '', loanNo: "",
planAmt: '', planAmt: "",
planFu: '', planFu: "",
planBen: '', planBen: "",
planXi: '', planXi: "",
planNo: '', planNo: "",
},
//分笔代扣
devicePayment: {
visible: false,
orderNo: "",
loanNo: "",
planAmt: "",
planFu: "",
planBen: "",
planXi: "",
planNo: "",
}, },
protocolSettled: { protocolSettled: {
visible: false, visible: false,
loanNo: '', loanNo: "",
bizType: '', bizType: "",
clientNo: '', clientNo: "",
}, },
protocolSettledOne: { protocolSettledOne: {
visible: false, visible: false,
loanNo: '', loanNo: "",
bizType: '', bizType: "",
clientNo: '', clientNo: "",
periodNo: '', periodNo: "",
remainAmt: '', remainAmt: "",
planAmt: '', planAmt: "",
}, },
}, },
} };
}, },
async created() { async created() {
if (this.params) { if (this.params) {
const params = this.params; // console.log(this.params,'hhhhhh');
const {loanVo, applyVo, planVo} = params; const { loanNo } = this.params;
this.advanceLoanAmt.loanNo = applyVo.loanNo; this.advanceLoanAmt.loanNo = loanNo;
this.advanceLoanAmt.bizType = applyVo.bizType; await this.init();
this.advanceLoanAmt.clientNo = applyVo.clientNo;
this.data = planVo
if (planVo == null) {
this.data = [];
this.isNeedAudit = false;
}
this.loanVo = loanVo;
} }
}, },
methods: { methods: {
headerStyle() { headerStyle() {
return "tableHeaderStyle"; return "tableHeaderStyle";
}, },
async init() { async init() {
const res = await this.$$get('/detail/customer/' + this.advanceLoanAmt.loanNo); const res = await this.$$get(
const {success, result} = res.data; "/detail/customer/" + this.advanceLoanAmt.loanNo
);
const { success, result } = res.data;
// console.log(res.data.result,'888');
if (success && result != null) { if (success && result != null) {
const { loanVo, applyVo, planVo } = result;
const {loanVo, applyVo, planVo} = result;
this.advanceLoanAmt.loanNo = applyVo.loanNo; this.advanceLoanAmt.loanNo = applyVo.loanNo;
this.advanceLoanAmt.bizType = applyVo.bizType; this.advanceLoanAmt.bizType = applyVo.bizType;
this.advanceLoanAmt.clientNo = applyVo.clientNo; this.advanceLoanAmt.clientNo = applyVo.clientNo;
this.data = planVo this.data = planVo;
if (planVo == null) { if (planVo == null) {
this.data = []; this.data = [];
this.isNeedAudit = false; this.isNeedAudit = false;
} }
this.loanVo = loanVo; this.loanVo = loanVo;
} }
}, },
// 计算小数 // 计算小数
accAdd(arg1, arg2) { accAdd(arg1, arg2) {
let r1, r2, m; let r1, r2, m;
try { try {
r1 = arg1.toString().split(".")[1].length r1 = arg1.toString().split(".")[1].length;
} catch (e) { } catch (e) {
r1 = 0 r1 = 0;
} }
try { try {
r2 = arg2.toString().split(".")[1].length r2 = arg2.toString().split(".")[1].length;
} catch (e) { } catch (e) {
r2 = 0 r2 = 0;
} }
m = Math.pow(10, Math.max(r1, r2)) m = Math.pow(10, Math.max(r1, r2));
return (arg1 * m + arg2 * m) / m return (arg1 * m + arg2 * m) / m;
}, },
// 线下提前结清 // 线下提前结清
handleAdvanceLoanAmt() { handleAdvanceLoanAmt() {
const {applyVo} = this.params;
this.ui.advanceLoanAmt = { this.ui.advanceLoanAmt = {
visible: true, visible: true,
loanNo: applyVo.loanNo, loanNo: this.advanceLoanAmt.loanNo,
orderNo: applyVo.orderNo, orderNo: this.params.orderNo,
}; };
}, },
// 计算已还金额 // 计算已还金额
planMoneyFormat: function (row, column) { planMoneyFormat: function (row, column) {
return this.accAdd(this.accAdd(this.accAdd(this.accAdd(this.accAdd(row.backedBen, row.backedFu), row.backedXi), row.backedFa), row.backedBurden), row.backedSpeaccount).toFixed(2) return this.accAdd(
this.accAdd(
this.accAdd(
this.accAdd(this.accAdd(row.backedBen, row.backedFu), row.backedXi),
row.backedFa
),
row.backedBurden
),
row.backedSpeaccount
).toFixed(2);
}, },
offlineTransfer(record) { offlineTransfer(record) {
const {applyVo} = this.params; const { applyVo, orderNo, loanNo } = this.params;
// console.log(this.params, "代扣");
// 取当前用户的信息 // 取当前用户的信息
this.ui.offineTransfer = { this.ui.offineTransfer = {
visible: true, visible: true,
orderNo: applyVo.orderNo, orderNo: orderNo,
loanNo: applyVo.loanNo, loanNo: loanNo,
planNo: record.planNo, planNo: record.planNo,
periodNo: record.planIndex, periodNo: record.planIndex,
planAmt: record.planAmt, planAmt: record.planAmt,
...@@ -315,34 +445,48 @@ export default { ...@@ -315,34 +445,48 @@ export default {
}, },
//代扣提前结清 //代扣提前结清
protocolSettleAll() { protocolSettleAll() {
const {applyVo} = this.params;
this.ui.protocolSettled = { this.ui.protocolSettled = {
visible: true, visible: true,
loanNo: applyVo.loanNo, loanNo: this.advanceLoanAmt.loanNo,
bizType: this.advanceLoanAmt.bizType, bizType: this.advanceLoanAmt.bizType,
clientNo: this.advanceLoanAmt.clientNo, clientNo: this.advanceLoanAmt.clientNo,
}; };
}, },
//代扣当期 //代扣当期
protocolOne(record) { protocolOne(record) {
const {applyVo} = this.params; console.log(record,'record');
const { applyVo, loanNo,loanSign } = this.params;
this.ui.protocolSettledOne = { this.ui.protocolSettledOne = {
visible: true, visible: true,
loanNo: applyVo.loanNo, loanNo: loanNo,
loanSign:loanSign,
bizType: this.advanceLoanAmt.bizType, bizType: this.advanceLoanAmt.bizType,
clientNo: this.advanceLoanAmt.clientNo, clientNo: this.advanceLoanAmt.clientNo,
periodNo: record.planIndex, periodNo: record.planIndex,
remainAmt: record.remainAmt, remainAmt: record.remainAmt,
planAmt: record.planAmt, planAmt: record.planAmt,
}; };
console.log(this.ui.protocolSettledOne,'数据');
},
//分笔代扣
handleDevicePayment() {
const { applyVo, loanNo, orderNo, clientNo } = this.params;
// console.log(this.params,'params');
this.ui.devicePayment = {
visible: true,
loanNo: loanNo,
bizType: this.advanceLoanAmt.bizType,
clientNo: clientNo,
orderNo: orderNo,
};
}, },
// 合并日期 // 合并日期
dateCompare: function (row, column) { dateCompare: function (row, column) {
let date = row[column.property] let date = row[column.property];
if (date === undefined) { if (date === undefined) {
return '' return "";
} }
return moment(date).format("YYYY-MM-DD ") + row.backedTime return moment(date).format("YYYY-MM-DD ") + row.backedTime;
}, },
// 银行信息拼接 // 银行信息拼接
cardBankFormat: function (row, column) { cardBankFormat: function (row, column) {
...@@ -350,47 +494,47 @@ export default { ...@@ -350,47 +494,47 @@ export default {
}, },
/*日期*/ /*日期*/
dateFormat: function (row, column) { dateFormat: function (row, column) {
let date = row[column.property] let date = row[column.property];
if (date === undefined) { if (date === undefined) {
return '' return "";
} }
return moment(date).format("YYYY-MM-DD HH:mm:ss") return moment(date).format("YYYY-MM-DD HH:mm:ss");
}, },
/*日期*/ /*日期*/
dateFormats: function (row, column) { dateFormats: function (row, column) {
let date = row[column.property] let date = row[column.property];
if (date === undefined) { if (date === undefined) {
return '' return "";
} }
return moment(date).format("YYYY-MM-DD") return moment(date).format("YYYY-MM-DD");
}, },
handleClose() { handleClose() {
this.$emit("handleClose"); this.$emit("handleClose");
}, },
//客服状态 //客服状态
serviceFormat: function (row, column) { serviceFormat: function (row, column) {
let status = row['feedStatus']; let status = row["feedStatus"];
return this.$enumUtils.toMsg('FeedStatus', status); return this.$enumUtils.toMsg("FeedStatus", status);
}, },
handleCurrentChange(e) { handleCurrentChange(e) {
this.form.current = e; this.form.current = e;
this.init(); this.init();
}, },
handleSizeChange(e) { handleSizeChange(e) {
this.form.size = e this.form.size = e;
this.form.current = 1; this.form.current = 1;
this.init(); this.init();
}, },
//还款添加查询功能 //还款添加查询功能
handleFilterChange: function (filters, value) { handleFilterChange: function (filters, value) {
if (filters.status.length === 2) { if (filters.status.length === 2) {
this.backValue = null this.backValue = null;
} else { } else {
this.backValue = filters.status[0] this.backValue = filters.status[0];
} }
}, },
} },
} };
</script> </script>
<style> <style>
......
<template>
<el-dialog
:append-to-body="true"
class="client-data-dialog"
title="分笔结清扣款"
width="40%"
:visible.sync="visible"
:before-close="handleClose"
>
<div>
<div style="margin-left: 50px">
<el-row :gutter="20">
<el-col :span="8">
<div class="grid-content bg-purple">
本金:{{ this.ruleForm.raiseAmt }}
</div>
</el-col>
<el-col :span="8">
<div class="grid-content bg-purple">
起息日:{{ this.ruleForm.startDate | dateFilter }}
</div>
</el-col>
<!-- <el-col :span="6">
<div class="grid-content bg-purple">还款日:{{ this.ruleForm.planAmt }}</div>
</el-col> -->
</el-row>
<br />
<el-row :gutter="20" :center="true">
<el-col :span="8">
<div class="grid-content bg-purple">
占用天数:{{ this.ruleForm.userDay }}
</div>
</el-col>
<el-col :span="8">
<div class="grid-content bg-purple">
占用期数:{{ this.ruleForm.userMonth }}
</div>
</el-col>
</el-row>
<br />
<el-row :gutter="20">
<el-col :span="8">
<div class="grid-content bg-purple">
还款本金:{{ this.ruleForm.principleAmt }}
</div>
</el-col>
<el-col :span="8">
<div class="grid-content bg-purple">
利息:{{ this.ruleForm.interestAmt }}
</div>
</el-col>
<el-col :span="8">
<div class="grid-content bg-purple">
服务费:{{ this.ruleForm.serviceAmt }}
</div>
</el-col>
</el-row>
<br />
<el-row :gutter="20">
<el-col :span="8">
<div class="grid-content bg-purple">
违约金:{{ this.ruleForm.breakAmt }}
</div>
</el-col>
<el-col :span="8">
<div class="grid-content bg-purple">
退款金额:{{ this.ruleForm.refundAmt }}
</div>
</el-col>
<el-col :span="8">
<div class="grid-content bg-purple">
罚息:{{ this.ruleForm.overdueAmt }}
</div>
</el-col>
</el-row>
<br />
<el-row :gutter="20">
<el-col :span="16">
<div class="grid-content bg-purple">
总应还金额:{{ this.ruleForm.settleAmt }}
</div>
</el-col>
</el-row>
</div>
<br />
<el-form
:model="ruleForm"
:rules="rules"
ref="ruleForm"
label-width="140px"
class="demo-ruleForm"
>
<el-form-item label="选择银行卡" prop="bankAccount">
<el-select
clearable
v-model="ruleForm.bankAccount"
class="select-bank-card"
>
<el-option
v-for="item in this.cardList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="自定义扣款金额" prop="selfMoney">
<el-col :span="12">
<el-input
v-model="selfMoney"
placeholder="请输入自定义金额"
clearable
></el-input>
</el-col>
</el-form-item>
</el-form>
</div>
<div slot="footer" align="center">
<el-button @click="handleClose">取 消</el-button>
<el-button type="primary" @click="backedTransfer('ruleForm')"
>确 定</el-button
>
</div>
</el-dialog>
</template>
<script>
import * as moment from "moment";
export default {
name: "devicePayment",
props: {
dialogVisible: {
type: Boolean,
required: true,
},
loanNo: {
type: String,
},
clientNo: {
type: String,
},
bizType: {
type: String,
},
},
data() {
return {
cardList: [],
visible: this.$props.dialogVisible,
ruleForm: {
allAmt: "",
backedAmt: "",
loanNo: "",
bizType: "",
breakAmt: "",
orderNO: "",
clientNo: "",
derateAmt: "",
interestAmt: "",
loanAmt: "",
overdueAmt: "",
principleAmt: "",
serviceAmt: "",
settleAmt: "",
startDate: "",
userDay: "",
userMonth: "",
memo: "",
attach: "",
bankAccount: "",
bankOwner: "",
backAmt: "",
raiseAmt:''
//自定义金额
},
selfMoney: "",
rules: {
bankAccount: [
{
required: true,
message: "请选择银行卡",
trigger: "change",
},
],
// selfMoney: [
// {
// required: true,
// message: "请输入扣款金额",
// trigger: "blur",
// },
// ],
},
loginName: "",
backedNo: "",
};
},
filters: {
dateFilter: function (row) {
const date = row;
if (typeof date === undefined || typeof date == null) return "";
return moment(date).format("YYYY-MM-DD");
},
},
created() {
this.getMoney();
// this.selfMoney=localStorage.getItem('selfMoney');
// console.log(this.selfMoney,'1');
// localStorage.removeItem('selfMoney');
// console.log(this.selfMoney,'2');
this.getData();
this.getBankList();
this.ruleForm = {
loanNo: this.loanNo,
bizType: this.bizType,
clientNo: this.clientNo,
selfMoney:this.selfMoney
};
this.bizTypeStr = this.bizType;
},
mounted() {
this.loginName = localStorage.getItem("loginName");
},
methods: {
getData() {
// 查询当前的基础数据
this.$$get("/back/countSettle?loanNo=" + this.loanNo)
.then((res) => {
if (res.data.code != 200) {
this.$message.error(res.data.message);
this.handleClose();
} else {
this.ruleForm = res.data.result;
}
})
.catch((error) => {
this.$message.error(error || "网络异常,请稍后。。。");
});
},
getMoney() {
//获取挂账金额
this.$$get(
`/back/getRestingOrderAmt?loanNo=` + this.loanNo
).then((res) => {
if (res.data.code != 200) {
this.$message.error(res.data.message);
this.handleClose();
} else {
this.selfMoney=res.data.result;
}
});
},
getBankList() {
//获取银行卡列表
this.$$post(`/back/bankCardList`, {
clientNo: this.clientNo,
bizType: this.bizType,
loanNo: this.loanNo,
})
.then((res) => {
this.cardList = res.data.result;
})
.catch((error) => {
this.$message.error(error || "网络异常,请稍后。。。");
});
},
/** 提交点击 */
backedTransfer() {
// if (this.ruleForm.backAmt > this.selfMoney) {
// this.$message.error(
// "操作失败扣款金额已超出剩余应还款金额,请重新确认!"
// );
// this.selfMoney = "";
// return false;
// }
if(this.selfMoney==''){
this.$message.error('请输入扣款金额');
return false;
}
this.ruleForm.backAmt=this.selfMoney;
this.$confirm("是否确认分笔扣款?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "primary",
})
.then(() => {
this.$$post(`/back/createBackedSettle`, this.buildParam())
.then((res) => {
// console.log(res, "确定按钮");
if (res.data.code != 200) {
this.$message.error(res.data.message);
return;
}
this.$message({ message: "操作成功", type: "success" });
this.handleClose();
this.$emit("callback");
})
.catch((err) => {
alert("error!");
});
})
.catch(() => {
this.$message({
type: "info",
message: "已取消",
});
});
},
//参数
buildParam() {
return {
loanNo: this.ruleForm.loanNo,
bizType: this.bizTypeStr,
backAmt: this.selfMoney,
creator: this.loginName,
bankAccount: this.ruleForm.bankAccount,
periodNo: this.ruleForm.userMonth,
rePayType: "BYSTEP",
restingOrderEnum: "YES",
};
},
/** 关闭处理 */
handleClose() {
this.visible = false;
setTimeout(() => {
this.$emit("update:dialogVisible", false);
}, 300);
},
},
};
</script>
<style scoped>
</style>
...@@ -14,8 +14,9 @@ ...@@ -14,8 +14,9 @@
stripe stripe
style="width: 100%;"> style="width: 100%;">
<el-table-column prop="feedNo" width="180" align="center" label="客服反馈编号"></el-table-column> <el-table-column prop="feedNo" width="180" align="center" label="客服反馈编号"></el-table-column>
<el-table-column prop="clientName" align="center" label="客户姓名"></el-table-column> <el-table-column prop="feedProductStr" align="center" label="产品名称"></el-table-column>
<el-table-column prop="clientCell" align="center" label="客户手机号"></el-table-column> <!-- <el-table-column prop="clientName" align="center" label="客户姓名"></el-table-column> -->
<!-- <el-table-column prop="clientCell" align="center" label="客户手机号"></el-table-column> -->
<el-table-column prop="feedType" align="center" label="反馈类型"></el-table-column> <el-table-column prop="feedType" align="center" label="反馈类型"></el-table-column>
<el-table-column prop="feedContent" align="center" label="反馈内容"></el-table-column> <el-table-column prop="feedContent" align="center" label="反馈内容"></el-table-column>
<el-table-column prop="feedVoucher" width="180" align="center" label="相关凭证"> <el-table-column prop="feedVoucher" width="180" align="center" label="相关凭证">
...@@ -121,10 +122,11 @@ export default { ...@@ -121,10 +122,11 @@ export default {
}, },
async created() { async created() {
const params = this.params; const params = this.params;
console.log(this.params,'909090');
this.dialogTitle = '意见反馈' this.dialogTitle = '意见反馈'
this.form.clientCell = params.phoneNo; this.form.clientCell = params.phoneNo;
this.form.loanNo = params.loanNo;
this.form.feedProduct = params.clientProductName; this.form.feedProduct = params.clientProductName;
this.form.feedSource = 'CUSTOMER'; this.form.feedSource = 'CUSTOMER';
this.form.sort = 'id desc'; this.form.sort = 'id desc';
...@@ -140,13 +142,14 @@ export default { ...@@ -140,13 +142,14 @@ export default {
handleTabClick() { handleTabClick() {
this.dialogTitle = '意见反馈'; this.dialogTitle = '意见反馈';
this.visible = true; this.visible = true;
const {clientProductName,clientNo} = this.params; const {clientProductName,clientNo,loanNo} = this.params;
this.dialogParams = { this.dialogParams = {
feedType:'', feedType:'',
feedStatus:'', feedStatus:'',
feedContent:'', feedContent:'',
feedVoucher:[], feedVoucher:[],
clientNo, clientNo,
loanNo,
feedProduct: clientProductName feedProduct: clientProductName
} }
......
<template>
<el-drawer
:title="title"
size="70%"
:wrapperClosable="false"
:visible.sync="dialogVisible"
direction="rtl"
:before-close="handleClose"
>
<div class="page">
<div class="loan-detail">
<el-tabs
class="loan-tabs"
tab-position="left"
v-model="activeComponents"
@tab-click="handleTabClick"
>
<el-tab-pane name="ApplyInfo" label="申请信息"></el-tab-pane>
<el-tab-pane
v-if="$permissionUtils.rolePermission('customBoss')"
name="ContractList"
label="借款合同"
></el-tab-pane>
<el-tab-pane name="BillList" label="账单详情"></el-tab-pane>
<el-tab-pane name="RePayList" label="还款情况"></el-tab-pane>
<el-tab-pane name="ReliefList" label="减免记录"></el-tab-pane>
</el-tabs>
<div class="loan-detail-content">
<template v-if="visible">
<component
@handleClose="visible = false"
:is="activeComponents"
:params="items"
:title="dTitle"
/>
</template>
</div>
</div>
</div>
</el-drawer>
</template>
<script>
import BlockHeader from "@/components/byh/componments/blockHeader";
import ApplyInfo from "./ApplyInfo";
import ContractList from "./ContractList";
import RePayList from "./RePayList";
import BillList from "./BillList";
import ReliefList from "./ReliefList";
import * as moment from "moment";
export default {
name: "AddUserServiceDialog",
components: {
BlockHeader,
ApplyInfo,
ContractList,
RePayList,
BillList,
ReliefList,
},
props: {
dialogVisible: {
type: Boolean,
required: true,
},
title: {
type: String,
required: true,
},
params: {
type: Object,
required: true,
},
},
data() {
return {
visible: false,
activeComponents: "",
dTitle: "",
active: "",
items: {},
loan: {},
};
},
async created() {
if (this.params) {
const { loanNo } = this.params;
this.items = this.params;
await this.initLoanInfo(loanNo);
}
},
methods: {
headerStyle() {
return "tableHeaderStyle";
},
//根据借款信息查借款所有信息
async initLoanInfo(loanNo) {
const res = await this.$$get("/detail/customer/" + loanNo);
const { success, result } = res.data;
if (success && result != null) {
this.loan = result;
this.handleTabClick({
name: "ApplyInfo",
label: "申请信息",
});
}
},
/*日期*/
dateFormats: function (row, column) {
let date = row[column.property];
if (date === undefined) return "";
return moment(date).format("YYYY-MM-DD");
},
handleClose() {
this.$emit("handleClose");
},
// 切换选项卡
handleTabClick(tab) {
this.activeComponents = tab.name;
this.visible = true;
this.dTitle = tab.label;
this.items = {
...this.loan,
...this.params,
};
},
},
};
</script>
<style scoped lang="less">
.page,
.loan-detail {
height: 100%;
overflow: auto;
}
.page {
padding-right: 0;
}
.loan-detail {
display: flex;
position: relative;
.loan-tabs {
position: sticky;
top: 0;
right: 0;
width: 100px;
}
.loan-detail-content {
width: calc(100% - 100px);
box-sizing: border-box;
padding-left: 20px;
} .loan-detail-content {
width: calc(100% - 100px);
box-sizing: border-box;
padding-left: 20px;
}
}
</style>
...@@ -2,35 +2,86 @@ ...@@ -2,35 +2,86 @@
<!-- 修改内容 --> <!-- 修改内容 -->
<el-drawer <el-drawer
:title="title" :title="title"
size="70%" size="80%"
:wrapperClosable="false" :wrapperClosable="false"
:visible.sync="dialogVisible" :visible.sync="dialogVisible"
direction="rtl" direction="rtl"
:before-close="handleClose" :before-close="handleClose"
> >
<div class="page"> <div class="page">
<div class="loan-detail"> <div class="loan-detail">
<el-collapse v-model="activeNames" @change="handleChange"> <el-collapse v-model="activeNames" @change="handleChange">
<el-collapse-item title="申请信息" name="1"> <el-collapse-item title="申请信息" name="1">
<ApplyInfo :params="items"></ApplyInfo> <!-- <ApplyInfo :params="applyInfo"></ApplyInfo> -->
</el-collapse-item> <div class="page-com">
<el-collapse-item title="借款合同" name="2"> <!-- <block-header :title="title"></block-header> -->
<ContractList :params="items" <table class="table">
v-if="$permissionUtils.rolePermission('customBoss')" <tr>
></ContractList> <td>申请日期:</td>
</el-collapse-item> <td>{{ loanModel.gmtCreated | dateFilter }}</td>
<el-collapse-item title="账单详情" name="3"> <td>放款日期:</td>
<BillList :params="items"></BillList> <td>{{ loanModel.raiseDate | dateFilter }}</td>
</el-collapse-item> <td>项目名称:</td>
<el-collapse-item title="还款情况" name="4"> <td>{{ loanModel.productNameStr }}</td>
<RePayList :params="items"></RePayList> <!-- <el-table-column align="center" prop="productName" label="产品名称" :formatter="productNameFormat"></el-table-column> -->
</el-collapse-item> </tr>
<el-collapse-item title="减免记录" name="5"> <tr>
<ReliefList :params="items"></ReliefList> <td>总应还金额:</td>
</el-collapse-item> <td>{{ loanModel.loanAmt }}</td>
</el-collapse> <td>申请期数:</td>
<td>{{ loanModel.loanLimit }}</td>
<td>
<span v-if="loanModel.cardBankAccount"
>放款银行卡(所属银行):</span
>
<span v-else>放款银行卡(所属银行)</span>
</td>
<td>
<span v-if="loanModel.cardBankAccount"
>{{ loanModel.cardBankAccount }}{{
loanModel.cardBankCodeStr
}}</span
>
<span v-else>{{ loanModel.bankAccount }}</span>
</td>
</tr>
<tr>
<td>本金:</td>
<td>{{ loanModel.raiseAmt }}</td>
<td>总服务费:</td>
<td>{{ loanModel.serviceAmt }}</td>
<td>总利息:</td>
<td>{{ loanModel.rateAmt }}</td>
</tr>
<tr>
<td>总手续费:</td>
<td colspan="5">{{ loanModel.accountAmt }}</td>
</tr>
</table>
</div>
</el-collapse-item>
<!-- 组件 -->
<el-collapse-item title="借款合同" name="2">
<ContractList
:params="applyInfo"
v-if="$permissionUtils.rolePermission('customBoss')"
></ContractList>
</el-collapse-item>
<el-collapse-item title="账单详情" name="3">
<BillList :params="applyInfo"></BillList>
</el-collapse-item>
<el-collapse-item title="还款情况" name="4">
<RePayList :params="applyInfo"></RePayList>
</el-collapse-item>
<el-collapse-item title="减免记录" name="5">
<ReliefList :params="applyInfo"></ReliefList>
</el-collapse-item>
<el-collapse-item title="服务费退款记录" name="6">
<ServiceRefund :params="applyInfo"></ServiceRefund>
</el-collapse-item>
</el-collapse>
</div>
</div> </div>
</div>
</el-drawer> </el-drawer>
</template> </template>
...@@ -41,6 +92,7 @@ import ContractList from "./ContractList"; ...@@ -41,6 +92,7 @@ import ContractList from "./ContractList";
import RePayList from "./RePayList"; import RePayList from "./RePayList";
import BillList from "./BillList"; import BillList from "./BillList";
import ReliefList from "./ReliefList"; import ReliefList from "./ReliefList";
import ServiceRefund from "./ServiceRefund";
import * as moment from "moment"; import * as moment from "moment";
export default { export default {
...@@ -52,15 +104,16 @@ export default { ...@@ -52,15 +104,16 @@ export default {
RePayList, RePayList,
BillList, BillList,
ReliefList, ReliefList,
ServiceRefund
}, },
props: { props: {
dialogVisible: { dialogVisible: {
type: Boolean, type: Boolean,
required: true, required: true,
}, },
title:{ title: {
type:String, type: String,
required:true, required: true,
}, },
params: { params: {
type: Object, type: Object,
...@@ -72,19 +125,30 @@ export default { ...@@ -72,19 +125,30 @@ export default {
visible: false, visible: false,
active: "", active: "",
items: {}, items: {},
loanModel: {},
applyInfo: {},
loan: {}, loan: {},
activeNames: ["1"], activeNames: ["1",'2','3','4','5','6'],
}; };
}, },
filters: {
dateFilter: function (row) {
const exp = row;
if (!exp || typeof exp === undefined || typeof exp === null) {
return "";
}
return moment(exp).format("YYYY-MM-DD");
},
},
async created() { async created() {
if (this.params) { if (this.params) {
// console.log(this.params,'自营');
const { loanNo } = this.params; const { loanNo } = this.params;
this.items = this.params; this.applyInfo = this.params;
console.log(this.items,'111');
await this.initLoanInfo(loanNo); await this.initLoanInfo(loanNo);
} }
}, },
methods: { methods: {
headerStyle() { headerStyle() {
return "tableHeaderStyle"; return "tableHeaderStyle";
...@@ -93,13 +157,10 @@ export default { ...@@ -93,13 +157,10 @@ export default {
async initLoanInfo(loanNo) { async initLoanInfo(loanNo) {
const res = await this.$$get("/detail/customer/" + loanNo); const res = await this.$$get("/detail/customer/" + loanNo);
const { success, result } = res.data; const { success, result } = res.data;
console.log(res.data,'222'); console.log(result, "222");
if (success && result != null) { if (success && result != null) {
this.loan = result; this.loan = result;
this.handleChange({ this.loanModel = result.applyVo;
name: "ApplyInfo",
label: "申请信息",
});
} }
}, },
/*日期*/ /*日期*/
...@@ -113,8 +174,8 @@ export default { ...@@ -113,8 +174,8 @@ export default {
}, },
// 切换选项卡 // 切换选项卡
handleChange(val) { handleChange(val) {
console.log(val,'333'); console.log(val);
this.items = { this.applyInfo = {
...this.loan, ...this.loan,
...this.params, ...this.params,
}; };
...@@ -140,7 +201,7 @@ export default { ...@@ -140,7 +201,7 @@ export default {
position: relative; position: relative;
.el-collapse-item { .el-collapse-item {
width:100%; width: 100%;
box-sizing: border-box; box-sizing: border-box;
padding-left: 20px; padding-left: 20px;
} }
......
...@@ -12,8 +12,8 @@ ...@@ -12,8 +12,8 @@
<el-table-column align="center" prop="gmtCreated" label="申请日期" :formatter="dateFormats"></el-table-column> <el-table-column align="center" prop="gmtCreated" label="申请日期" :formatter="dateFormats"></el-table-column>
<el-table-column align="center" prop="startDate" label="放款日期" :formatter="dateFormats"></el-table-column> <el-table-column align="center" prop="startDate" label="放款日期" :formatter="dateFormats"></el-table-column>
<el-table-column align="center" prop="raiseAmt" label="放款本金"></el-table-column> <el-table-column align="center" prop="raiseAmt" label="放款本金"></el-table-column>
<el-table-column align="center" prop="capitalCode" label="放款资方" <el-table-column align="center" prop="capitalCodeStr" label="放款资方"
:formatter="capitalCodeFormat"></el-table-column> ></el-table-column>
<el-table-column align="center" prop="status" label="借款单状态"> <el-table-column align="center" prop="status" label="借款单状态">
<template slot-scope="scope"> <template slot-scope="scope">
<el-tag type="success" v-if="scope.row.status==='AUDITED'" size="small">{{ loanStatusFormat(scope.row) }} <el-tag type="success" v-if="scope.row.status==='AUDITED'" size="small">{{ loanStatusFormat(scope.row) }}
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
<el-tag type="warning" v-else-if="scope.row.status==='SUBMITED'" size="small"> <el-tag type="warning" v-else-if="scope.row.status==='SUBMITED'" size="small">
{{ loanStatusFormat(scope.row) }} {{ loanStatusFormat(scope.row) }}
</el-tag> </el-tag>
<el-tag effect="warning" v-else-if="scope.row.status==='BACKING'" size="small"> <el-tag type="warning" v-else-if="scope.row.status==='BACKING'" size="small">
{{ loanStatusFormat(scope.row) }} {{ loanStatusFormat(scope.row) }}
</el-tag> </el-tag>
<el-tag type="info" v-else size="small">{{ loanStatusFormat(scope.row) }}</el-tag> <el-tag type="info" v-else size="small">{{ loanStatusFormat(scope.row) }}</el-tag>
...@@ -100,7 +100,7 @@ export default { ...@@ -100,7 +100,7 @@ export default {
} }
}, },
async created() { async created() {
console.log(this.params, 999); // console.log(this.params, 999);
const {clientNo, clientProductName} = this.params; const {clientNo, clientProductName} = this.params;
const res = await this.$$post('/loan/getLoanListByClientNo/', {productName: clientProductName, clientNo: clientNo}); const res = await this.$$post('/loan/getLoanListByClientNo/', {productName: clientProductName, clientNo: clientNo});
const {success, result} = res.data; const {success, result} = res.data;
...@@ -124,12 +124,12 @@ export default { ...@@ -124,12 +124,12 @@ export default {
return this.$enumUtils.toMsg('LoanStatuEnums', status); return this.$enumUtils.toMsg('LoanStatuEnums', status);
}, },
capitalCodeFormat: function (row, column) { capitalCodeFormat: function (row, column) {
let capitalCode = row['capitalCode']; let capitalCodeStr = row['capitalCodeStr'];
return this.$enumUtils.toMsg('CapitalEnums', capitalCode); return this.$enumUtils.toMsg('CapitalEnums', capitalCodeStr);
}, },
// 切换选项卡 // 切换选项卡
handleClick(row) { handleClick(row) {
console.log(row, '一行信息'); // console.log(row, '一行信息');
this.visible = true; this.visible = true;
this.title = '借款详情'; this.title = '借款详情';
this.items = { this.items = {
......
<template>
<div class="page-dialog">
<div class="tables">
<block-header :title="title"></block-header>
<el-table
border
size="mini"
:highlight-current-row="true"
:header-row-class-name="headerStyle"
:data="data"
stripe
style="width: 100%"
:default-sort="{ prop: 'sendTime', order: 'descending' }"
>
<el-table-column
align="center"
prop="bizNo"
width="160"
label="ID/编号"
></el-table-column>
<el-table-column
align="center"
prop="smsType"
label="短信类型"
></el-table-column>
<el-table-column
align="center"
prop="content"
width="350"
label="短信内容"
></el-table-column>
<el-table-column
align="center"
prop="sendStateStr"
label="发送结果"
></el-table-column>
<el-table-column
align="center"
prop="memo"
label="备注"
></el-table-column>
<el-table-column
align="center"
prop="sendTime"
width="150"
:formatter="dateFormat"
label="发送时间"
></el-table-column>
</el-table>
</div>
<div class="pages">
<el-pagination
background
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
:current-page.sync="form.current"
:page-sizes="[10, 20, 50, 100]"
:page-size="form.size"
layout="total, sizes, prev, pager, next, jumper"
:total="form.total">
</el-pagination>
</div>
</div>
</template>
<script>
import * as moment from "moment";
export default {
props: {
dialogVisible: {
type: Boolean,
required: true,
},
title: {
type: String,
required: true,
},
params: {
type: Object,
required: true,
},
},
data() {
return {
form: {
current: 1,
size: 10,
total:1,
cell:"",
productName:""
},
data: [],
};
},
async created() {
const params = this.params;
// console.log(params,'手机号');
this.form.cell = params.clientCell;
this.form.productName = params.clientProductName;
await this.init();
},
methods: {
headerStyle() {
return "tableHeaderStyle";
},
async init() {
const res = await this.$$post("/detail/getSmsInfo", this.form);
const { success, result } = res.data;
if (success && result !== null) {
this.data = result.data;
this.form.total = result.total;
}
},
/*日期*/
dateFormat: function (row, column) {
let date = row[column.property]
if (date === undefined) {
return ''
}
return moment(date).format("YYYY-MM-DD HH:mm:ss")
},
handleClose() {
this.$emit("handleClose");
},
handleCurrentChange(e) {
this.form.current = e;
this.init();
},
handleSizeChange(e) {
this.form.size = e
this.form.current = 1;
this.init();
},
},
};
</script>
<style>
.tables {
margin-bottom: 20px;
}
.pages {
display: flex;
align-items: center;
justify-content: center;
}
</style>
\ No newline at end of file
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
:append-to-body="true" :append-to-body="true"
class="client-data-dialog" class="client-data-dialog"
title="创建转账还款单" title="创建转账还款单"
width="40%" width="60%"
:visible.sync="visible" :visible.sync="visible"
:before-close="handleClose"> :before-close="handleClose">
......
...@@ -65,7 +65,9 @@ export default { ...@@ -65,7 +65,9 @@ export default {
}, },
async created() { async created() {
const params = this.params; const params = this.params;
// console.log(params,'params');
this.form.clientNo = params.clientNo; this.form.clientNo = params.clientNo;
this.form.productName = params.clientProductName;
await this.init() await this.init()
}, },
methods: { methods: {
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<div style="margin-left:50px"> <div style="margin-left:50px">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="8"> <el-col :span="8">
<div class="grid-content bg-purple">本金:{{ this.ruleForm.principleAmt }}</div> <div class="grid-content bg-purple">本金:{{ this.ruleForm.raiseAmt }}</div>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="grid-content bg-purple">起息日:{{ this.ruleForm.startDate | dateFilter }}</div> <div class="grid-content bg-purple">起息日:{{ this.ruleForm.startDate | dateFilter }}</div>
...@@ -126,6 +126,7 @@ export default { ...@@ -126,6 +126,7 @@ export default {
attach: '', attach: '',
bankAccount: '', bankAccount: '',
bankOwner: '', bankOwner: '',
raiseAmt:'',
}, },
bizTypeStr: '', bizTypeStr: '',
rules: { rules: {
...@@ -157,6 +158,8 @@ export default { ...@@ -157,6 +158,8 @@ export default {
loanNo: this.loanNo, loanNo: this.loanNo,
bizType: this.bizType, bizType: this.bizType,
clientNo: this.clientNo, clientNo: this.clientNo,
periodNo:this.periodNo,
}; };
this.bizTypeStr = this.bizType; this.bizTypeStr = this.bizType;
...@@ -167,6 +170,7 @@ export default { ...@@ -167,6 +170,7 @@ export default {
this.handleClose(); this.handleClose();
} else { } else {
this.ruleForm = res.data.result; this.ruleForm = res.data.result;
console.log(this.ruleForm,'哈哈哈');
} }
}).catch(error => { }).catch(error => {
...@@ -220,7 +224,9 @@ export default { ...@@ -220,7 +224,9 @@ export default {
backAmt: this.ruleForm.settleAmt, backAmt: this.ruleForm.settleAmt,
creator: localStorage.getItem("userName"), creator: localStorage.getItem("userName"),
bankAccount: this.ruleForm.bankAccount, bankAccount: this.ruleForm.bankAccount,
periodNo:this.ruleForm.periodNo,
rePayType: 'BYALL', rePayType: 'BYALL',
restingOrderEnum:'NO'
}; };
}, },
......
...@@ -25,12 +25,24 @@ ...@@ -25,12 +25,24 @@
<el-input v-model="ruleForm.remainAmt" placeholder="请输入转账金额" disabled></el-input> <el-input v-model="ruleForm.remainAmt" placeholder="请输入转账金额" disabled></el-input>
</el-form-item> </el-form-item>
<el-form-item label="选择银行卡" prop="bankAccount"> <el-form-item label="选择银行卡" prop="bankAccount">
<el-select clearable v-model="ruleForm.bankAccount" class="select-bank-card"> <el-select clearable v-model="ruleForm.bankAccount"
class="select-bank-card">
<el-option <el-option
v-for="item in this.cardList" v-for="item in this.cardList"
:key="item.value" :key="item.value"
@click.native="changeCard(item)"
:label="item.label" :label="item.label"
:value="item.value"></el-option> :value="item.value"
></el-option>
</el-select>
</el-form-item>
<el-form-item label="选择支付渠道" prop="paymentChannel">
<el-select clearable v-model="ruleForm.paymentChannel" class="select-bank-card">
<el-option
v-for="item in this.channelList"
:key="item.payChannelApi"
:label="item.message"
:value="item.payChannelApi"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -67,6 +79,9 @@ export default { ...@@ -67,6 +79,9 @@ export default {
planAmt: { planAmt: {
type: Number type: Number
}, },
loanSign:{
type:String
}
}, },
data() { data() {
...@@ -75,7 +90,6 @@ export default { ...@@ -75,7 +90,6 @@ export default {
submitLoading: false submitLoading: false
}, },
visible: this.$props.dialogVisible, visible: this.$props.dialogVisible,
ruleForm: { ruleForm: {
periodNo: '', periodNo: '',
orderNo: '', orderNo: '',
...@@ -89,16 +103,20 @@ export default { ...@@ -89,16 +103,20 @@ export default {
attach: '', attach: '',
planNo: '', planNo: '',
bankAccount: '', bankAccount: '',
paymentChannel:'',
bankOwner: '', bankOwner: '',
backedAmt: '', backedAmt: '',
memo: '', memo: '',
loanSign:"",
}, },
rules: { rules: {
bankAccount: [{required: true, message: '支付银行卡不能为空', trigger: 'blur'}], bankAccount: [{required: true, message: '支付银行卡不能为空', trigger: 'blur'}],
// paymentChannel: [{required: true, message: '支付渠道不能为空', trigger: 'blur'}],
backAmt: [{required: true, message: "扣款金额不能为空", trigger: 'blur'}], backAmt: [{required: true, message: "扣款金额不能为空", trigger: 'blur'}],
}, },
loginName: '', loginName: '',
cardList: [], cardList: [],
channelList:[]
} }
}, },
...@@ -111,12 +129,14 @@ export default { ...@@ -111,12 +129,14 @@ export default {
periodNo: this.periodNo, periodNo: this.periodNo,
remainAmt: this.remainAmt, remainAmt: this.remainAmt,
planAmt: this.planAmt, planAmt: this.planAmt,
loanSign:this.loanSign
}; };
// console.log(this.$props,'hhhhhhhhhhh');
//获取银行卡列表 //获取银行卡列表
this.$$post(`/back/bankCardList`, { this.$$post(`/back/bankCardList`, {
...this.ruleForm ...this.ruleForm
}).then(res => { }).then(res => {
console.log(res,'银行卡');
this.cardList = res.data.result; this.cardList = res.data.result;
}).catch(error => { }).catch(error => {
this.$message.error(error || '网络异常,请稍后。。。'); this.$message.error(error || '网络异常,请稍后。。。');
...@@ -146,10 +166,15 @@ export default { ...@@ -146,10 +166,15 @@ export default {
} }
}) })
}, },
//银行卡对应的支付渠道
refresh(){ changeCard(val){
console.log(val.payChannelApiVOS,'12131232132');
this.channelList=val.payChannelApiVOS;
if(val.payChannelApiVOS.length==0){
this.ruleForm.paymentChannel="";
}
}, },
//参数 //参数
buildParam() { buildParam() {
return { return {
...@@ -158,8 +183,10 @@ export default { ...@@ -158,8 +183,10 @@ export default {
creator: localStorage.getItem("userName"), creator: localStorage.getItem("userName"),
bankAccount: this.ruleForm.bankAccount, bankAccount: this.ruleForm.bankAccount,
backAmt: this.ruleForm.remainAmt, backAmt: this.ruleForm.remainAmt,
periodNo:this.ruleForm.periodNo,
rePayType: 'BYONE', rePayType: 'BYONE',
periodNo: this.ruleForm.periodNo, restingOrderEnum:'NO',
payChannelApi:this.ruleForm.paymentChannel
}; };
}, },
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
> >
</el-table-column> </el-table-column>
<el-table-column align="center" prop="creator" label="创建人"></el-table-column> <el-table-column align="center" prop="creator" label="创建人"></el-table-column>
<el-table-column align="center" prop="memo" label="备注"></el-table-column> <el-table-column :show-overflow-tooltip="true" align="center" prop="memo" label="备注"></el-table-column>
</el-table> </el-table>
</div> </div>
<div class="pages"> <div class="pages">
...@@ -91,7 +91,7 @@ export default { ...@@ -91,7 +91,7 @@ export default {
async created() { async created() {
if(this.params){ if(this.params){
const params = this.params; const params = this.params;
console.log(params,'哈哈3') // console.log(params,'哈哈3')
this.form.bizNo = params.loanNo; this.form.bizNo = params.loanNo;
await this.init() await this.init()
} }
...@@ -112,8 +112,9 @@ export default { ...@@ -112,8 +112,9 @@ export default {
const res = await this.$$post('/back/detailPageList', parB ); const res = await this.$$post('/back/detailPageList', parB );
const {success, result} = res.data; const {success, result} = res.data;
if (success && result !== null) { if (success && result !== null) {
const {data, total} = result const {data, total} = result;
this.data = data; this.data = data;
// console.log(this.data[0].backedNo,'data');
this.form.total = total; this.form.total = total;
} }
}, },
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
> >
</el-table-column> </el-table-column>
<el-table-column align="center" prop="creator" label="创建人"></el-table-column> <el-table-column align="center" prop="creator" label="创建人"></el-table-column>
<el-table-column align="center" prop="memo" label="备注"></el-table-column> <el-table-column :show-overflow-tooltip="true" align="center" prop="memo" label="备注"></el-table-column>
</el-table> </el-table>
</div> </div>
<div class="pages"> <div class="pages">
...@@ -88,9 +88,9 @@ export default { ...@@ -88,9 +88,9 @@ export default {
} }
}, },
async created() { async created() {
// console.log(this.params,'哈哈3')
if(this.params){ if(this.params){
const params = this.params; const params = this.params;
console.log(params,'哈哈3')
this.form.bizNo = params.loanNo; this.form.bizNo = params.loanNo;
await this.init() await this.init()
} }
......
<template>
<div class="page-com">
<div class="tables">
<!-- <block-header :title="title"></block-header> -->
<el-table
border
size="mini"
:highlight-current-row="true"
:header-row-class-name="headerStyle"
:data="data"
stripe
style="width: 100%;">
<el-table-column align="center" prop="loanNo" label="借款编号"></el-table-column>
<el-table-column align="center" prop="refundAmt" label="退款金额"></el-table-column>
<el-table-column align="center" prop="refundStatusDesc" label="退款单状态"></el-table-column>
<el-table-column align="center" prop="creator" label="创建人"></el-table-column>
<el-table-column align="center" prop="gmtCreated" label="创建时间" :formatter="dateFormat"></el-table-column>
<el-table-column align="center" prop="gmtModified" label="更新时间" :formatter="dateFormat"></el-table-column>
<el-table-column :show-overflow-tooltip="true" align="center" prop="memo" label="备注"></el-table-column>
</el-table>
</div>
<div class="pages">
<el-pagination
background
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
:current-page.sync="form.current"
:page-sizes="[10, 20, 50, 100]"
:page-size="form.size"
layout="total, sizes, prev, pager, next, jumper"
:total="form.total">
</el-pagination>
</div>
</div>
</template>
<script>
import BlockHeader from "@/components/byh/componments/blockHeader";
import * as moment from "moment";
export default {
name: 'RiskInfo',
components: {
BlockHeader
},
props: {
title: {
type: String,
required: false,
},
params: {
type: Object,
required: true
},
},
data() {
return {
tableStatus: [
{text: '成功', value: "SUCCESS"},
{text: '审核中', value: "SUBMITED"},
{text: '失败', value: "FAIL"}
],
form: {
total: 1,
current: 1,
size: 10,
// result:''
},
updateQueDialog: {
visible: false,
feedNo: '',
feedType: '',
feedStatus: '',
feedContent: '',
clientNo: '',
creater: '',
finishContent: '',
},
data: [],
backValue:null
}
},
async created() {
if(this.params){
const params = this.params;
// console.log(params,'params');
this.form.loanNo = params.loanNo;
this.form.clientNo = params.clientNo;
await this.init()
}
},
methods: {
headerStyle() {
return "tableHeaderStyle";
},
async init() {
const parB={
loanNo: this.form.loanNo,
current: this.form.current,
size: this.form.size,
total: this.form.total,
clientNo:this.form.clientNo
}
const res = await this.$$post('/refund/selectRefund',parB);
const {success, result} = res.data;
// console.log(res.data,'返回的结果');
if (success && result !== null) {
this.data = result.records;
this.form.total = result.total;
}
},
// 合并日期
dateCompare: function (row, column) {
let date = row[column.property]
if (date === undefined) {
return ''
}
return moment(date).format("YYYY-MM-DD ") + row.backedTime
},
/*日期*/
dateFormat: function (row, column) {
let date = row[column.property]
if (date === undefined) {
return ''
}
return moment(date).format("YYYY-MM-DD HH:mm:ss")
},
/*日期*/
dateFormats: function (row, column) {
let date = row[column.property]
if (date === undefined) {
return ''
}
return moment(date).format("YYYY-MM-DD")
},
handleClose() {
this.$emit("handleClose");
},
//客服状态
serviceFormat: function (row, column) {
let status = row['feedStatus'];
return this.$enumUtils.toMsg('FeedStatus', status);
},
handleCurrentChange(e) {
this.form.current = e;
this.init();
},
handleSizeChange(e) {
this.form.size = e
this.form.current = 1;
this.init();
},
}
}
</script>
<style>
.tables{
margin-bottom: 20px;
}
.pages {
display: flex;
align-items: center;
justify-content: center;
}
</style>
import Vue from 'vue' import Vue from 'vue'
import Router from 'vue-router' import Router from 'vue-router'
import { import {
ByhService, ByhService,
Controlswitch, Controlswitch,
ByhServiceDetail, ByhServiceDetail,
Login, Login,
Index, Index,
// Default, // Default,
BankCardMaintenance, BankCardMaintenance,
UserManagement, UserManagement,
LendBankCardList, LendBankCardList,
DutyBizGroupsListDialog, DutyBizGroupsListDialog,
CustomerDistribution, CustomerDistribution,
DistributionBatchDialog, DistributionBatchDialog,
ByhPlanRemindDetails, ByhPlanRemindDetails,
ByhPlanRemindDetailNew, ByhPlanRemindDetailNew,
ByhLoanBackedDetails, ByhLoanBackedDetails,
ByhLoanSnapList, ByhLoanSnapList,
ServiceProblem, ServiceProblem,
ClientManagerment, DerateCreate ClientManagerment,
DerateCreate,
CreateRefund
} from './routes' } from './routes'
Vue.use(Router) Vue.use(Router)
export default new Router({ export default new Router({
mode: 'hash', mode: 'hash',
// mode: 'history', // mode: 'history',
routes: [ routes: [
{path: '/', redirect: '/login'}, { path: '/', redirect: '/login' },
{path: '/login', name: 'Login', meta: {title: '登录', filter: false}, component: Login}, { path: '/login', name: 'Login', meta: { title: '登录', filter: false }, component: Login },
{ {
path: '/index', path: '/index',
name: 'Index', name: 'Index',
component: Index, component: Index,
meta: {title: '首页'}, meta: { title: '首页' },
children: [ children: [{
{ path: '/system/bankCardMaintenance',
path: '/system/bankCardMaintenance', name: 'BankCardMaintenance',
name: 'BankCardMaintenance', component: BankCardMaintenance,
component: BankCardMaintenance, meta: { title: '银行卡维护', filter: true }
meta: {title: '银行卡维护', filter: true} },
}, {
{ path: '/system/UserManagement',
path: '/system/UserManagement', name: 'UserManagement',
name: 'UserManagement', component: UserManagement,
component: UserManagement, meta: { title: '用户管理', filter: true }
meta: {title: '用户管理', filter: true} },
}, {
{ path: '/system/CustomerDistribution',
path: '/system/CustomerDistribution', name: 'CustomerDistribution',
name: 'CustomerDistribution', component: CustomerDistribution,
component: CustomerDistribution, meta: { title: '批次分配', filter: true }
meta: {title: '批次分配', filter: true} },
}, {
{ path: '/system/DistributionBatchDialog',
path: '/system/DistributionBatchDialog', name: 'DistributionBatchDialog',
name: 'DistributionBatchDialog', component: DistributionBatchDialog,
component: DistributionBatchDialog, meta: { title: '分配批次', filter: true }
meta: {title: '分配批次', filter: true} },
}, {
{ path: '/system/LendBankCardList',
path: '/system/LendBankCardList', name: 'LendBankCardList',
name: 'LendBankCardList', component: LendBankCardList,
component: LendBankCardList, meta: { title: '出借人管理', filter: true }
meta: {title: '出借人管理', filter: true} },
}, {
{ path: '/system/DutyBizGroupsListDialog',
path: '/system/DutyBizGroupsListDialog', name: 'DutyBizGroupsListDialog',
name: 'DutyBizGroupsListDialog', component: DutyBizGroupsListDialog,
component: DutyBizGroupsListDialog, meta: { title: '业务组列表', filter: true }
meta: {title: '业务组列表', filter: true} },
}, {
{ path: '/byh/ByhPlanRemindDetails',
path: '/byh/ByhPlanRemindDetails', name: 'ByhPlanRemindDetails',
name: 'ByhPlanRemindDetails', component: ByhPlanRemindDetails,
component: ByhPlanRemindDetails, meta: { title: '还款计划详情', filter: true }
meta: {title: '还款计划详情', filter: true} },
}, {
{ path: '/byh/ByhPlanRemindDetailNew',
path: '/byh/ByhPlanRemindDetailNew', name: 'ByhPlanRemindDetailNew',
name: 'ByhPlanRemindDetailNew', component: ByhPlanRemindDetailNew,
component: ByhPlanRemindDetailNew, meta: { title: '还款详情', filter: true }
meta: {title: '还款详情', filter: true} },
}, {
{ path: '/byh/ByhLoanBackedDetails',
path: '/byh/ByhLoanBackedDetails', name: 'ByhLoanBackedDetails',
name: 'ByhLoanBackedDetails', component: ByhLoanBackedDetails,
component: ByhLoanBackedDetails, meta: { title: '还款详情', filter: true }
meta: {title: '还款详情', filter: true} },
}, {
{ path: '/byh/ByhService',
path: '/byh/ByhService', name: 'ByhService',
name: 'ByhService', component: ByhService,
component: ByhService, meta: { title: '客服管理', filter: true }
meta: {title: '客服管理', filter: true} },
}, {
{ path: '/byh/Controlswitch',
path: '/byh/Controlswitch', name: 'Controlswitch',
name: 'Controlswitch', component: Controlswitch,
component: Controlswitch, meta: { title: '亲家管理', filter: true }
meta: {title: '亲家管理', filter: true} },
}, {
{ path: '/byh/ByhServiceDetail',
path: '/byh/ByhServiceDetail', name: 'ByhServiceDetail',
name: 'ByhServiceDetail', component: ByhServiceDetail,
component: ByhServiceDetail, meta: { title: '客服详情', filter: true }
meta: {title: '客服详情', filter: true} },
}, {
{ path: '/byh/ServiceProblem',
path: '/byh/ServiceProblem', name: 'ServiceProblem',
name: 'ServiceProblem', component: ServiceProblem,
component: ServiceProblem, meta: { title: '意见反馈', filter: true }
meta: {title: '意见反馈', filter: true} },
},
{ {
path: '/byh/ByhLoanSnapList', path: '/byh/ByhLoanSnapList',
name: 'ByhLoanSnapList', name: 'ByhLoanSnapList',
component: ByhLoanSnapList, component: ByhLoanSnapList,
meta: { meta: {
title: '临时放款列表', title: '临时放款列表',
filter: true filter: true
} }
}, },
{ {
path: '/byh/ClientManagerment', path: '/byh/ClientManagerment',
name: 'ClientManagerment', name: 'ClientManagerment',
component: ClientManagerment, component: ClientManagerment,
meta: { meta: {
title: '客户管理', title: '客户管理',
filter: true filter: true
} }
}, },
{ {
path: '/byh/DerateCreate', path: '/byh/DerateCreate',
name: 'DerateCreate', name: 'DerateCreate',
component: DerateCreate, component: DerateCreate,
meta: {title: '减免单管理', filter: true} meta: { title: '减免单管理', filter: true }
}, },
{ {
path: '/byh/RiskLevelList', path: '/byh/RiskLevelList',
name: 'RiskLevelList', name: 'RiskLevelList',
component: resolve => require(['../components/byh/RiskLevelList.vue'], resolve), component: resolve => require(['../components/byh/RiskLevelList.vue'], resolve),
meta: {title: '风险客户', filter: true} meta: { title: '风险客户', filter: true }
}, },
] {
} path: '/byh/CreateRefund',
] name: 'CreateRefund',
}) component: resolve => require(['../components/byh/CreateRefund.vue'], resolve),
meta: { title: '创建退款单', filter: true }
},
]
}
]
})
\ No newline at end of file
...@@ -27,6 +27,8 @@ export const ByhLoanBackedDetails = resolve => require(['../components/byh/ByhLo ...@@ -27,6 +27,8 @@ export const ByhLoanBackedDetails = resolve => require(['../components/byh/ByhLo
export const ByhLoanSnapList = resolve => require(['../components/byh/ByhLoanSnapList.vue'], resolve) export const ByhLoanSnapList = resolve => require(['../components/byh/ByhLoanSnapList.vue'], resolve)
export const Controlswitch = resolve => require(['../components/byh/Controlswitch.vue'], resolve) export const Controlswitch = resolve => require(['../components/byh/Controlswitch.vue'], resolve)
export const DerateCreate = resolve => require(['../components/byh/DerateCreate.vue'], resolve) export const DerateCreate = resolve => require(['../components/byh/DerateCreate.vue'], resolve)
//创建退款单
export const CreateRefund = resolve => require(['../components/byh/CreateRefund.vue'], resolve)
export default { export default {
Login,// 登录 Login,// 登录
...@@ -52,5 +54,7 @@ export default { ...@@ -52,5 +54,7 @@ export default {
//客户管理 //客户管理
ClientManagerment, ClientManagerment,
Controlswitch, Controlswitch,
DerateCreate DerateCreate,
// 创建退款单
CreateRefund
} }
...@@ -8,15 +8,15 @@ import Cookies from 'js-cookie' ...@@ -8,15 +8,15 @@ import Cookies from 'js-cookie'
/** 测试环境 */ /** 测试环境 */
axios.defaults.baseURL = process.env.VUE_APP_API; axios.defaults.baseURL = process.env.VUE_APP_API;
/* 所有ajax请求拦截 */ /* 所有ajax请求拦截 */
axios.interceptors.request.use(function (req) { axios.interceptors.request.use(function(req) {
const token = Cookies.get('x-auth-token') const token = Cookies.get('x-auth-token')
if (token) { if (token) {
req.headers['X-Auth-Token'] = token req.headers['X-Auth-Token'] = token
// req.headers['token'] = localStorage.getItem("token_xxx") // req.headers['token'] = localStorage.getItem("token_xxx")
} }
// 在发送请求之前做些什么 // 在发送请求之前做些什么
return req return req
}, function (error) { }, function(error) {
// 对请求错误做些什么 // 对请求错误做些什么
return Promise.reject(error) return Promise.reject(error)
}) })
...@@ -138,4 +138,4 @@ const Ajax = { ...@@ -138,4 +138,4 @@ const Ajax = {
} }
} }
export default Ajax export default Ajax
\ No newline at end of file
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