Commit ac8969e3 authored by caimeng's avatar caimeng

修复一些问题

parent f9ce8db0
This diff is collapsed.
......@@ -6,16 +6,20 @@
<meta charset="utf-8">
<link type="favicon" rel="shortcut icon" href="favicon.ico"/>
<link rel="stylesheet" href="css/index.css">
<script src="./aliyun-oss-sdk.min.js"></script>
<script>//本地测试
//window.APIHOST = "http://192.168.0.50:8202";
//测试
// window.APIHOST = "http://47.99.245.36:8202";
window.APIHOST = "http://47.99.245.36:8202";
//生产环境
window.APIHOST = "https://water.jqtianxia.com";
// window.APIHOST = "https://water.jqtianxia.com";
//鼎荣小贷
//window.APIHOST = "https://drwater.dingrongxd.com";
</script>
</head>
......
......@@ -28,10 +28,9 @@
</el-form-item>
<el-form-item prop="productName" label="产品名称">
<el-select clearable v-model="searchInfo.productName">
<el-option v-for="item in this.$enumUtils.toValue('BusinessType')" :key="item.value"
:label="item.label" :value="item.value"></el-option>
</el-select>
<product-select
v-model="searchInfo.productName"
@handleSetting="(e)=>{ searchInfo.productName = e}"/>
</el-form-item>
<el-form-item>
......@@ -53,7 +52,7 @@
<el-table-column align="center" prop="clientCell" label="手机号"></el-table-column>
<el-table-column align="center" width="160" prop="certNo" label="身份证号"></el-table-column>
<el-table-column align="center" prop="level" label="授信级别"></el-table-column>
<el-table-column align="center" prop="productName" label="产品名称" :formatter="productNameFormat"></el-table-column>
<el-table-column align="center" prop="productNameStr" label="产品名称"></el-table-column>
<el-table-column align="center" prop="userStatus" label="状态" :formatter="userStatusFormat"></el-table-column>
<el-table-column align="center" label="查看详情">
<template slot-scope="scope">
......@@ -65,7 +64,6 @@
<br/>
</div>
<!-- 详情组件 -->
......@@ -123,13 +121,12 @@ export default {
created() {
if (this.$route.query.clientCell != null) {
this.searchInfo.clientCell = this.$route.query.clientCell
this.page.current = this.$route.query.current
this.page.current = this.$route.query.current;
this.backedData()
}
},
methods: {
readDetail(record) {
this.ui.readDetail = {
visible: true,
......
......@@ -13,7 +13,7 @@
<el-tab-pane name="OperateLog" label="操作日志"></el-tab-pane>
</el-tabs>
<div class="box-right">
<el-button size="mini" v-if="activeComponents==='FeedList'" @click="handleTabClick({name:'addQuestion',label:'意见反馈'})" type="primary">新增反馈记录</el-button>
</div>
</div>
......
......@@ -14,10 +14,9 @@
</el-form-item>
<el-form-item label="产品名称">
<el-select clearable v-model="searchInfo.appName">
<el-option v-for="item in this.$enumUtils.toValue('AppNameType')" :key="item.value"
:label="item.label" :value="item.value"></el-option>
</el-select>
<app-select
v-model="searchInfo.appName"
@handleSetting="(e)=>{ searchInfo.appName = e}"/>
</el-form-item>
<el-form-item>
......
......@@ -34,10 +34,10 @@
</el-form-item>
<el-form-item label="产品名称">
<el-select clearable v-model="searchInfo.feedProduct">
<el-option v-for="item in this.$enumUtils.toValue('BusinessType')" :key="item.value"
:label="item.label" :value="item.value"></el-option>
</el-select>
<product-select v-model="searchInfo.feedProduct"
@handleSetting="e=>{
searchInfo.feedProduct = e;
}"></product-select>
</el-form-item>
<!--<el-form-item label="反馈来源">
......@@ -62,7 +62,7 @@
:default-sort="{prop: 'date', order: 'descending'}"
:highlight-current-row="true">
<el-table-column align="center" prop="feedNo" label="编号"></el-table-column>
<el-table-column align="center" label="反馈内容">
<el-table-column align="center" label="反馈内容">
<template slot-scope="scope">
<el-popover trigger="hover" placement="top" width="400">
<p> {{ scope.row.feedContent }}</p>
......
......@@ -6,9 +6,10 @@
:visible.sync="dialogVisible"
:before-close="handleClose">
<el-form size="small" label-suffix=":" :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form size="small" label-suffix=":" :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px"
class="demo-ruleForm">
<el-form-item label="反馈类型" prop="feedType">
<el-select v-model="ruleForm.feedType" label="反馈类型" placeholder="请选择" >
<el-select v-model="ruleForm.feedType" label="反馈类型" placeholder="请选择">
<el-option
v-for="item in optionsFeedType"
:key="item.value"
......@@ -23,7 +24,7 @@
type="textarea"
:rows="2"
placeholder="请输入反馈内容"
v-model="ruleForm.feedContent" >
v-model="ruleForm.feedContent">
</el-input>
</el-form-item>
......@@ -41,6 +42,23 @@
<el-form-item label="创建人" prop="creater">
<p>{{ this.ruleForm.creater }}</p>
</el-form-item>
<el-form-item label="相关凭证" required>
<el-upload
class="upload-demo"
action=""
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:http-request="handleUpload"
:on-exceed="handleExceed"
:file-list="fileList">
<el-button size="small" type="primary">点击上传</el-button>
</el-upload>
</el-form-item>
</el-form>
<div slot="footer">
......@@ -70,24 +88,9 @@ export default {
},
},
data() {
/*请选择功能点*/
const validatefeedType = (rule, value, callback) => {
if (!value) {
return callback(new Error('请选择反馈类型'));
}
};
/*请输入问题描述*/
const validatefeedStatus = (rule, value, callback) => {
if (!value) {
return callback(new Error('请选择反馈结果'));
}
};
const validatefeedContent = (rule, value, callback) => {
if (!value) {
return callback(new Error('请输入反馈问题描述'));
}
};
return {
fileList: [],
ui: {
submitLoading: false
},
......@@ -97,7 +100,9 @@ export default {
feedStatus: '',
feedContent: '',
clientNo: '',
creater: ''
creater: '',
productName: '',
feedVoucher: []
},
rules: {
feedType: [
......@@ -153,16 +158,68 @@ export default {
}
},
created() {
const {clientNo} = this.params;
const {clientNo, clientProductName} = this.params;
this.ruleForm = {
clientNo,
productName: clientProductName,
creater: localStorage.getItem("userName"),
}
},
mounted() {
this.client = new OSS({
region: 'oss-cn-hangzhou',
accessKeyId: 'LTAI4Fp8aDaS8sHXV76gWPVJ',
accessKeySecret: 'lyEPFiHlgdbbEcwGRCLzHZiqOrwNk0',
bucket: 'w-loan-static'
});
},
methods: {
handleUpload(file) {
this.upload(file)
},
upload(file) {
console.log(file, '文件')
const key = file.file.name;
const client = this.client;
const that = this;
client.multipartUpload('customer/feed/' + key, file.file)
.then((res) => {
console.log(res, '返回结果');
const fileList = that.fileList;
const imgSrc = `http://file.cloudsmake.com/${res.name}`;
const o = {name: res.name, url: imgSrc};
fileList.push(o);
that.$message.success('上传成功');
})
.catch((err) => {
console.log(err, '错误信息');
this.$message.error('上传失败');
});
},
handleRemove(file, fileList) {
console.log(file, fileList);
},
handlePreview(file) {
console.log(file);
},
handleExceed(files, fileList) {
this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}?`);
},
/** 提交点击 */
submitForm() {
console.log(this.fileList,'文件列表');
const feedVoucher = [];
this.fileList.forEach(item=>{
feedVoucher.push(item.url);
})
this.$refs['ruleForm'].validate((valid) => {
if (!valid) {
......@@ -174,15 +231,19 @@ export default {
feedSource: 'CUSTOMER',
feedStatus: this.ruleForm.feedStatus,
feedContent: this.ruleForm.feedContent,
clientNo: this.ruleForm.clientNo
clientNo: this.ruleForm.clientNo,
productName: this.ruleForm.productName,
feedVoucher: feedVoucher
})
.then(res => {
if (res.data.code != 200) {
if (res.data.success) {
this.$message({message: '反馈问题新增成功', type: 'success'});
this.$emit('callback')
this.handleClose();
}else {
this.$message.error(res.data.message);
return
}
this.$message({message: '反馈问题新增成功', type: 'success'});
this.handleClose();
})
.catch(err => {
alert("error!")
......@@ -196,10 +257,6 @@ export default {
/** 关闭处理 */
handleClose() {
this.$emit("handleClose");
//this.visible = false;
//setTimeout(() => {
// this.$emit('update:dialogVisible', false)
//}, 300);
}
},
......
......@@ -8,7 +8,7 @@
<td>放款日期:</td>
<td>{{ loanModel.raiseDate | dateFilter }}</td>
<td>项目名称:</td>
<td>{{ loanModel.productName }}</td>
<td>{{ loanModel.productNameStr }}</td>
<!-- <el-table-column align="center" prop="productName" label="产品名称" :formatter="productNameFormat"></el-table-column> -->
</tr>
<tr>
......@@ -80,7 +80,7 @@ export default {
this.productNameFormat(this.loanModel.productName)
}
},
methods: {
headerStyle() {
return "tableHeaderStyle";
......@@ -90,7 +90,7 @@ export default {
if(this.loanModel!=null){
this.loanModel.productName=this.$enumUtils.toMsg('BusinessType', row)
}
},
}
}
......
......@@ -7,23 +7,27 @@
<td>借款编号:</td>
<td>{{ advanceLoanAmt.loanNo }}</td>
<td>账单剩余应还:</td>
<td>{{ loanVo.surAmt }}</td>
<td>{{ loanVo.surAmt }}</td>
</tr>
<tr>
<td>退款金额:</td>
<td>
<span v-if="loanVo.refundAmt !== null ">{{ loanVo.refundAmt }} ({{ loanVo.refundStatusDesc }})</span>
<span v-else>0</span>
<span v-if="loanVo.refundAmt !== null ">{{ loanVo.refundAmt }} ({{ loanVo.refundStatusDesc }})</span>
<span v-else>0</span>
</td>
<td>账单已还款:</td>
<td>{{ loanVo.alrAmt }}</td>
<td>{{ loanVo.alrAmt }}</td>
</tr>
<tr>
<td>操作:</td>
<td colspan="3">
<td>
<el-button type="primary" size="mini" @click="handleAdvanceLoanAmt" v-if="isNeedAudit">线下结清</el-button>
<el-button type="primary" size="mini" @click="protocolSettleAll">代扣结清</el-button>
</td>
<td>减免:</td>
<td>
{{loanVo.derateAmt}}
</td>
</tr>
</table>
</div>
......
......@@ -2,6 +2,9 @@
<div class="page-dialog">
<div class="tables">
<block-header :title="title"></block-header>
<div class="block-box">
<el-button size="mini" @click="handleTabClick" type="primary">新增反馈记录</el-button>
</div>
<el-table
border
size="mini"
......@@ -10,16 +13,25 @@
:data="data"
stripe
style="width: 100%;">
<el-table-column prop="feedNo" label="客服反馈编号"></el-table-column>
<el-table-column prop="clientName" label="客户姓名"></el-table-column>
<el-table-column prop="clientCell" label="客户手机号"></el-table-column>
<el-table-column prop="feedType" label="反馈类型"></el-table-column>
<el-table-column prop="feedContent" label="反馈内容"></el-table-column>
<el-table-column prop="finishContent" label="处理意见"></el-table-column>
<el-table-column prop="feedStatus" label="状态" :formatter="serviceFormat"></el-table-column>
<el-table-column prop="creater" label="处理人"></el-table-column>
<el-table-column prop="gmtCreated" label="记录时间" :formatter="dateFormat"></el-table-column>
<el-table-column label="操作">
<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="clientCell" 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="feedVoucher" width="180" align="center" label="相关凭证">
<template slot-scope="scope">
<template v-if="scope.row.feedVoucher && scope.row.feedVoucher!==null">
<template v-for="item in scope.row.feedVoucher">
<el-image style="width: 50px; height: 50px; margin: 0 5px; cursor: pointer;" fit="fill" :preview-src-list="scope.row.feedVoucher" :src="item"></el-image>
</template>
</template>
</template>
</el-table-column>
<el-table-column prop="finishContent" align="center" label="处理意见"></el-table-column>
<el-table-column prop="feedStatus" align="center" label="状态" :formatter="serviceFormat"></el-table-column>
<el-table-column prop="creater" align="center" label="处理人"></el-table-column>
<el-table-column prop="gmtCreated" align="center" label="记录时间" :formatter="dateFormat"></el-table-column>
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button type="text" size="small" @click="updateQueDialog(scope.row)">修改</el-button>
</template>
......@@ -38,18 +50,40 @@
:total="form.total">
</el-pagination>
</div>
<!-- 意见反馈弹框 -->
<add-question
:dialog-visible="visible"
:title="dialogTitle"
:params="params"
@handleClose="visible=false"
@callback="init"
/>
<!-- 查看图片弹框-->
<el-dialog
title="查看大图"
:visible.sync="imgDialogVisible"
width="30%"
:before-close="handleCloseDialog">
<el-image :src="dialogImgUrl" />
</el-dialog>
</div>
</template>
<script>
import BlockHeader from "@/components/byh/componments/blockHeader";
import AddQuestion from "./AddQuestion";
import * as moment from "moment";
export default {
name: 'RiskInfo',
components: {
BlockHeader
BlockHeader,
AddQuestion
},
props: {
dialogVisible: {
......@@ -67,6 +101,12 @@ export default {
},
data() {
return {
visible: false,
dialogTitle: '',
dialogImgUrl:'',
imgDialogVisible:false,
form: {
total: 1,
current: 1,
......@@ -77,6 +117,9 @@ export default {
},
async created() {
const params = this.params;
this.dialogTitle = '意见反馈'
this.form.clientCell = params.phoneNo;
this.form.feedProduct = params.clientProductName;
this.form.feedSource = 'CUSTOMER';
......@@ -84,6 +127,16 @@ export default {
await this.init()
},
methods: {
handleCloseDialog(){
this.dialogVisible = false;
},
handleDialog(img){
this.dialogImgUrl = img;
},
handleTabClick() {
this.dialogTitle = '意见反馈';
this.visible = true;
},
headerStyle() {
return "tableHeaderStyle";
},
......@@ -134,9 +187,10 @@ export default {
</script>
<style>
.tables{
.tables {
margin-bottom: 20px;
}
.pages {
display: flex;
align-items: center;
......
......@@ -18,6 +18,7 @@
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">
......@@ -39,6 +40,7 @@ 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 {
......@@ -48,7 +50,8 @@ export default {
ApplyInfo,
ContractList,
RePayList,
BillList
BillList,
ReliefList
},
props: {
dialogVisible: {
......
<template>
<div class="page-com">
<div class="tables">
<block-header :title="title"></block-header>
<el-table
@filter-change="handleFilterChange"
border
size="mini"
:highlight-current-row="true"
:header-row-class-name="headerStyle"
:data="data"
stripe
style="width: 100%;">
<el-table-column align="center" prop="backedNo" label="还款编号"></el-table-column>
<el-table-column align="center" prop="planIndex" label="期数"></el-table-column>
<el-table-column align="center" prop="backedAmt" label="还款金额"></el-table-column>
<el-table-column align="center" prop="backedTypeStr" label="还款方式"></el-table-column>
<el-table-column align="center" prop="statusStr" label="还款单状态"></el-table-column>
<el-table-column align="center" prop="cardOwnerName" label="银行账号户主名称"></el-table-column>
<el-table-column align="center" prop="cardOwnerMobile" label="银行账号户主电话"></el-table-column>
<el-table-column align="center" width="150" prop="cardBankAccount" label="银行账号" :formatter="cardBankFormat"></el-table-column>
<el-table-column align="center" prop="bankAccount" label="还款银行账号"></el-table-column>
<el-table-column align="center" prop="bankOwner" label="还款银行账户"></el-table-column>
<el-table-column align="center" prop="backedDate" label="还款时间" :formatter="dateCompare"></el-table-column>
<el-table-column align="center" prop="resultStr" label="还款结果" width="100" :formatter="resultBankFormat"
:filters="tableStatus"
column-key="status"
>
</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>
</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: true,
},
params: {
type: Object,
required: true
},
},
data() {
return {
tableStatus: [{text: '成功', value: "SUCCESS"}, {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,'哈哈3')
this.form.bizNo = params.loanNo;
await this.init()
}
},
methods: {
headerStyle() {
return "tableHeaderStyle";
},
async init() {
const parB={
bizNo: this.form.bizNo,
current: this.form.current,
size: this.form.size,
total: this.form.total,
result:this.backValue
}
const res = await this.$$post('/back/deratePageList', parB );
const {success, result} = res.data;
if (success && result !== null) {
const {data, total} = result
this.data = data;
this.form.total = total;
}
},
// 还款结果
resultBankFormat: function (row, column) {
return row.resultStr + "(" + row.confirmDesc + ")";
},
// 合并日期
dateCompare: function (row, column) {
let date = row[column.property]
if (date === undefined) {
return ''
}
return moment(date).format("YYYY-MM-DD ") + row.backedTime
},
// 银行信息拼接
cardBankFormat: function (row, column) {
return row.cardBankAccount + "(" + row.cardBankName + ")";
},
/*日期*/
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();
},
//还款添加查询功能
handleFilterChange: function (filters, value) {
if (filters.status.length === 2) {
this.backValue = null
}
else {
this.backValue = filters.status[0]
}
this.init();
// this.loanBackedData(this.loanNos)
},
}
}
</script>
<style>
.tables{
margin-bottom: 20px;
}
.pages {
display: flex;
align-items: center;
justify-content: center;
}
</style>
......@@ -14,6 +14,7 @@
<el-table-column align="center" prop="collectContact.contactName" label="联系人姓名"></el-table-column>
<el-table-column align="center" prop="collectContact.contactRelation" label="联系人关系"></el-table-column>
<el-table-column align="center" prop="collectContact.overdueDay" label="逾期天数"></el-table-column>
<el-table-column align="center" prop="collectContact.sceneTypeStr" label="催收类型"></el-table-column>
<el-table-column align="center" prop="collectContact.state" label="状态" :formatter="collectStatueFormat"></el-table-column>
<el-table-column align="center" width="150" prop="collectContact.created" label="联系时间"
:formatter="collectDateFormat"></el-table-column>
......
<template>
<el-select clearable :value="value" @change="handleChange" clearable placeholder="请选择产品">
<el-option
v-for="item in list"
:key="item.appName"
:label="item.appNameStr"
:value="item.appName"></el-option>
</el-select>
</template>
<script type="text/ecmascript-6">
export default {
name: 'ProductSelect',
props: {
value: {
type: String,
required: false
}
},
data() {
return {
list:[]
}
},
async created() {
const res = await this.$$get('/back/selectAPPNameList');
if(res.status===200 && res.data.success){
this.list = res.data.result;
}
},
methods: {
handleChange(e){
this.$emit('handleSetting',e)
}
}
}
</script>
<template>
<el-select clearable :value="value" @change="handleChange" clearable placeholder="请选择产品">
<el-option
v-for="item in list"
:key="item.productName"
:label="item.productNameStr"
:value="item.productName"></el-option>
</el-select>
</template>
<script type="text/ecmascript-6">
export default {
name: 'ProductSelect',
props: {
value: {
type: String,
required: false
}
},
data() {
return {
list:[]
}
},
async created() {
const res = await this.$$get('/back/selectProductList');
if(res.status===200 && res.data.success){
this.list = res.data.result;
}
},
methods: {
handleChange(e){
this.$emit('handleSetting',e)
}
}
}
</script>
import BlockHeader from "@/components/byh/componments/blockHeader";
import ProductSelect from "@/components/common/ProductSelect";
import AppSelect from "@/components/common/AppSelect";
export default {
components: {
BlockHeader
BlockHeader,
ProductSelect,
AppSelect
}
}
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