0327-青田重要信息一览
This commit is contained in:
@@ -49,6 +49,17 @@ public class CustInfoRetailVo
|
|||||||
//催收任务详情--青田
|
//催收任务详情--青田
|
||||||
private List<Map<String, Object>> taskDetail;
|
private List<Map<String, Object>> taskDetail;
|
||||||
|
|
||||||
|
//重要信息一览贷款信息列表--青田
|
||||||
|
private List<ImportantInfoLoan932> importantInfoLoan932List;
|
||||||
|
|
||||||
|
public List<ImportantInfoLoan932> getImportantInfoLoan932List() {
|
||||||
|
return importantInfoLoan932List;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setImportantInfoLoan932List(List<ImportantInfoLoan932> importantInfoLoan932List) {
|
||||||
|
this.importantInfoLoan932List = importantInfoLoan932List;
|
||||||
|
}
|
||||||
|
|
||||||
public List<Map<String, Object>> getTaskDetail() {
|
public List<Map<String, Object>> getTaskDetail() {
|
||||||
return taskDetail;
|
return taskDetail;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -64,6 +64,8 @@ public class CustInfoRetailServiceImpl implements ICustInfoRetailService {
|
|||||||
private AnchorMapper anchorMapper;
|
private AnchorMapper anchorMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private DashboardService dashboardService;
|
private DashboardService dashboardService;
|
||||||
|
@Autowired
|
||||||
|
private ImportantInfoLoan932Mapper importantInfoLoan932Mapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询对私客户信息
|
* 查询对私客户信息
|
||||||
@@ -147,9 +149,12 @@ public class CustInfoRetailServiceImpl implements ICustInfoRetailService {
|
|||||||
if (SecurityUtils.getHeadId().equals("932")){
|
if (SecurityUtils.getHeadId().equals("932")){
|
||||||
CommonRespVO taskDetail = dashboardService.getTaskDetail(custId);
|
CommonRespVO taskDetail = dashboardService.getTaskDetail(custId);
|
||||||
custInfoRetailVo.setTaskDetail(taskDetail.getData());
|
custInfoRetailVo.setTaskDetail(taskDetail.getData());
|
||||||
|
List<ImportantInfoLoan932> loanInfoList = importantInfoLoan932Mapper.selectByCustId(custId);
|
||||||
|
custInfoRetailVo.setImportantInfoLoan932List(loanInfoList);
|
||||||
}
|
}
|
||||||
return custInfoRetailVo;
|
return custInfoRetailVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<CmpmUserList> getCmpmUserList(String custId){
|
public List<CmpmUserList> getCmpmUserList(String custId){
|
||||||
String roleName = userRole();
|
String roleName = userRole();
|
||||||
List<CmpmUserList> list = new ArrayList<>();
|
List<CmpmUserList> list = new ArrayList<>();
|
||||||
|
|||||||
@@ -53,8 +53,6 @@ public class WorkRecordServiceImpl implements WorkRecordService {
|
|||||||
@Resource
|
@Resource
|
||||||
private RedisCache redisCache;
|
private RedisCache redisCache;
|
||||||
|
|
||||||
private final static String alterTypeRedisKey = "work:alter_types_count_";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询我的工作清单
|
* 查询我的工作清单
|
||||||
*
|
*
|
||||||
@@ -201,22 +199,11 @@ public class WorkRecordServiceImpl implements WorkRecordService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取预警类型及各类型预警数量
|
* 获取预警类型及各类型预警数量
|
||||||
* 每天首次查询存储到redis里,后面都从redis读取
|
* 每次直接查询数据库,不使用缓存
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public List<WarnInfoVO> getAlterTypes() {
|
public List<WarnInfoVO> getAlterTypes() {
|
||||||
String headId = SecurityUtils.getHeadId();
|
String headId = SecurityUtils.getHeadId();
|
||||||
String username = SecurityUtils.getUsername();
|
|
||||||
String redisKey = alterTypeRedisKey + username;
|
|
||||||
|
|
||||||
// 先从 redis 获取缓存
|
|
||||||
if (redisCache.hasKey(redisKey)) {
|
|
||||||
List<WarnInfoVO> cachedList = redisCache.getCacheObject(redisKey);
|
|
||||||
if (cachedList != null && !cachedList.isEmpty()) {
|
|
||||||
log.debug("从 redis 获取预警类型缓存, username: {}", username);
|
|
||||||
return cachedList;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 先查询预警类型列表
|
// 先查询预警类型列表
|
||||||
List<String> alterTypes = workRecordMapper.selectAlterTypesByHeadId(headId);
|
List<String> alterTypes = workRecordMapper.selectAlterTypesByHeadId(headId);
|
||||||
@@ -231,10 +218,6 @@ public class WorkRecordServiceImpl implements WorkRecordService {
|
|||||||
return warnInfoVO;
|
return warnInfoVO;
|
||||||
}).collect(Collectors.toList());
|
}).collect(Collectors.toList());
|
||||||
|
|
||||||
// 存入 redis,过期时间到当天结束
|
|
||||||
redisCache.setCacheObjectToEndDay(redisKey, resultList);
|
|
||||||
log.debug("预警类型数据已存入 redis, username: {}, 数量: {}", username, resultList.size());
|
|
||||||
|
|
||||||
return resultList;
|
return resultList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,36 +22,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="home_main" v-if="showcard">
|
|
||||||
<div class="wrappernew">
|
|
||||||
<div class="wrapper_view">
|
|
||||||
<div class="view_item">
|
|
||||||
<div class="view_item_left">年龄</div>
|
|
||||||
<div class="view_item_right">{{ baseInfo.custAge }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="view_item">
|
|
||||||
<div class="view_item_left">婚姻状况</div>
|
|
||||||
<div class="view_item_right">{{ baseInfo.isMarried }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="view_item">
|
|
||||||
<div class="view_item_left">年收入</div>
|
|
||||||
<div class="view_item_right">{{ baseInfo.custSalary }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="view_item">
|
|
||||||
<div class="view_item_left">资产情况</div>
|
|
||||||
<div class="view_item_right">{{ baseInfo.asset }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="view_item">
|
|
||||||
<div class="view_item_left">信用状况</div>
|
|
||||||
<div class="view_item_right">{{ baseInfo.credit }}</div>
|
|
||||||
</div>
|
|
||||||
<div class="view_item">
|
|
||||||
<div class="view_item_left">行业名称</div>
|
|
||||||
<div class="view_item_right">{{ initIndustryBusiStr(baseInfo.belongBusi) }}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="home_main">
|
<div class="home_main">
|
||||||
<!-- <div class="home_main_item" v-for="(item, index) in dhList" @click="handleClickItem(item)">
|
<!-- <div class="home_main_item" v-for="(item, index) in dhList" @click="handleClickItem(item)">
|
||||||
<div class="main_left">
|
<div class="main_left">
|
||||||
@@ -61,6 +31,9 @@
|
|||||||
<van-icon name="arrow" class="next_icon"></van-icon>
|
<van-icon name="arrow" class="next_icon"></van-icon>
|
||||||
</div> -->
|
</div> -->
|
||||||
<van-collapse v-model="activeNames" accordion>
|
<van-collapse v-model="activeNames" accordion>
|
||||||
|
<van-collapse-item key="重要信息一览" title="重要信息一览" name="重要信息一览" v-if="showImportantInfo">
|
||||||
|
<speticaltag :dataSource="importantInfoList" type="special" />
|
||||||
|
</van-collapse-item>
|
||||||
<van-collapse-item v-for="(item, index) in dhList" :key="index" :title="item.title"
|
<van-collapse-item v-for="(item, index) in dhList" :key="index" :title="item.title"
|
||||||
:name="item.title">
|
:name="item.title">
|
||||||
<indexcharts v-if="activeNames == '个人基本信息' && item.title == '个人基本信息'"></indexcharts>
|
<indexcharts v-if="activeNames == '个人基本信息' && item.title == '个人基本信息'"></indexcharts>
|
||||||
@@ -81,16 +54,8 @@
|
|||||||
<van-collapse-item key="特色客户标签" title="特色客户标签" name="特色客户标签" v-if="showTag">
|
<van-collapse-item key="特色客户标签" title="特色客户标签" name="特色客户标签" v-if="showTag">
|
||||||
<speticaltag :custIdc="baseInfo.custIdc" />
|
<speticaltag :custIdc="baseInfo.custIdc" />
|
||||||
</van-collapse-item>
|
</van-collapse-item>
|
||||||
<van-collapse-item
|
<van-collapse-item key="催收信息" title="催收信息" name="催收信息" v-if="showTaskDetail">
|
||||||
key="催收信息"
|
<speticaltag :dataSource="taskDetail" type="special" />
|
||||||
title="催收信息"
|
|
||||||
name="催收信息"
|
|
||||||
v-if="['932'].includes(orgNum)"
|
|
||||||
>
|
|
||||||
<speticaltag
|
|
||||||
:dataSource="taskDetail"
|
|
||||||
type="special"
|
|
||||||
/>
|
|
||||||
</van-collapse-item>
|
</van-collapse-item>
|
||||||
</van-collapse>
|
</van-collapse>
|
||||||
</div>
|
</div>
|
||||||
@@ -143,7 +108,8 @@ export default {
|
|||||||
value: '',
|
value: '',
|
||||||
showPicker: false,
|
showPicker: false,
|
||||||
columns: [1, 2, 23, 4, 5],
|
columns: [1, 2, 23, 4, 5],
|
||||||
baseInfo:{},
|
baseInfo: {},
|
||||||
|
importantInfoList: [],
|
||||||
taskDetail: [],
|
taskDetail: [],
|
||||||
industryOptions: []
|
industryOptions: []
|
||||||
}
|
}
|
||||||
@@ -182,11 +148,14 @@ export default {
|
|||||||
},
|
},
|
||||||
orgNum() {
|
orgNum() {
|
||||||
const { deptId = '' } = this.userInfo
|
const { deptId = '' } = this.userInfo
|
||||||
const str = String(deptId).substring(0,3)
|
const str = String(deptId).substring(0, 3)
|
||||||
return str
|
return str
|
||||||
},
|
},
|
||||||
showcard() {
|
showImportantInfo() {
|
||||||
return this.userInfo.userName.startsWith('932')
|
return this.orgNum === '932'
|
||||||
|
},
|
||||||
|
showTaskDetail() {
|
||||||
|
return this.orgNum === '932'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
@@ -197,29 +166,9 @@ export default {
|
|||||||
let custId = sessionStorage.getItem('custId')
|
let custId = sessionStorage.getItem('custId')
|
||||||
getPersonInfo(custId).then(res => {
|
getPersonInfo(custId).then(res => {
|
||||||
if (res.code == 200) {
|
if (res.code == 200) {
|
||||||
this.baseInfo = res.data.custInfoRetail
|
this.baseInfo = res.data.custInfoRetail || {}
|
||||||
if (res.data.taskDetail.length > 0) {
|
this.importantInfoList = this.buildImportantInfoList(this.baseInfo, res.data.importantInfoLoan932List || [])
|
||||||
const taskDetail = res.data.taskDetail[0] || {}
|
this.taskDetail = this.formatTaskDetail(res.data.taskDetail || [])
|
||||||
for (let i in taskDetail) {
|
|
||||||
if (i !== 'info') {
|
|
||||||
this.taskDetail.push({
|
|
||||||
value: i,
|
|
||||||
label: taskDetail[i],
|
|
||||||
isImage: i === '照片存放地址'
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
for (let j in taskDetail.info) {
|
|
||||||
this.taskDetail.push({
|
|
||||||
value: j,
|
|
||||||
label: taskDetail.info[j],
|
|
||||||
isImage: j === '照片存放地址'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.taskDetail = []
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
@@ -237,6 +186,7 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return data || ''
|
||||||
},
|
},
|
||||||
initIndustryTree() {
|
initIndustryTree() {
|
||||||
getIndustryTree().then((res) => {
|
getIndustryTree().then((res) => {
|
||||||
@@ -275,6 +225,58 @@ export default {
|
|||||||
this.init();
|
this.init();
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
buildImportantInfoList(baseInfo, loanInfoList) {
|
||||||
|
const result = [
|
||||||
|
{ value: '年龄', label: baseInfo.custAge || '' },
|
||||||
|
{ value: '婚姻状况', label: baseInfo.isMarried || '' },
|
||||||
|
{ value: '年收入', label: baseInfo.custSalary || '' },
|
||||||
|
{ value: '资产情况', label: baseInfo.asset || '' },
|
||||||
|
{ value: '信用状况', label: baseInfo.credit || '' },
|
||||||
|
{ value: '行业名称', label: this.initIndustryBusiStr(baseInfo.belongBusi) }
|
||||||
|
]
|
||||||
|
loanInfoList.forEach((loanInfo, index) => {
|
||||||
|
result.push({ value: `贷款信息${index + 1}`, label: '', isSection: true })
|
||||||
|
result.push(
|
||||||
|
{ value: '客户号', label: loanInfo.custId || '' },
|
||||||
|
{ value: '客户内码', label: loanInfo.custIsn || '' },
|
||||||
|
{ value: '合同号', label: loanInfo.contractNo || '' },
|
||||||
|
{ value: '合同起始日', label: loanInfo.conStartDt || '' },
|
||||||
|
{ value: '合同终止日', label: loanInfo.conEndDt || '' },
|
||||||
|
{ value: '贷款余额', label: loanInfo.loanBal || '' },
|
||||||
|
{ value: '贷款利率', label: loanInfo.loanRate || '' },
|
||||||
|
{ value: '担保方式', label: loanInfo.assureWay || '' },
|
||||||
|
{ value: '贷款用途', label: loanInfo.loanPurpose || '' },
|
||||||
|
{ value: '归属支行', label: loanInfo.orgCode || '' },
|
||||||
|
{ value: '数据日期', label: loanInfo.dataDate || '' }
|
||||||
|
)
|
||||||
|
})
|
||||||
|
return result
|
||||||
|
},
|
||||||
|
formatTaskDetail(taskSource) {
|
||||||
|
if (!taskSource.length) {
|
||||||
|
return []
|
||||||
|
}
|
||||||
|
const taskDetail = taskSource[0] || {}
|
||||||
|
const result = []
|
||||||
|
for (let i in taskDetail) {
|
||||||
|
if (i !== 'info') {
|
||||||
|
result.push({
|
||||||
|
value: i,
|
||||||
|
label: taskDetail[i],
|
||||||
|
isImage: i === '照片存放地址'
|
||||||
|
})
|
||||||
|
} else if (taskDetail.info) {
|
||||||
|
for (let j in taskDetail.info) {
|
||||||
|
result.push({
|
||||||
|
value: j,
|
||||||
|
label: taskDetail.info[j],
|
||||||
|
isImage: j === '照片存放地址'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
},
|
||||||
handleClickItem(item) {
|
handleClickItem(item) {
|
||||||
if (item.title == "个人基本信息") {
|
if (item.title == "个人基本信息") {
|
||||||
sessionStorage.setItem('detailType', item.title);
|
sessionStorage.setItem('detailType', item.title);
|
||||||
@@ -316,31 +318,6 @@ export default {
|
|||||||
padding-bottom: 60px;
|
padding-bottom: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.wrappernew {
|
|
||||||
// padding-top: 46px;
|
|
||||||
font-size: 14px;
|
|
||||||
background-color: #fff;
|
|
||||||
|
|
||||||
.view_item {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
line-height: 40px;
|
|
||||||
font-size: 14px;
|
|
||||||
border-bottom: 1px solid rgba(245, 245, 245, 1);
|
|
||||||
padding: 0 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.view_item_left {
|
|
||||||
width: 40%;
|
|
||||||
color: rgb(22, 13, 13);
|
|
||||||
}
|
|
||||||
|
|
||||||
.view_item_right {
|
|
||||||
width: 60%;
|
|
||||||
color: rgb(22, 13, 13);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.wrapper_top {
|
.wrapper_top {
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
padding: 15px 20px;
|
padding: 15px 20px;
|
||||||
|
|||||||
@@ -2,10 +2,13 @@
|
|||||||
<div class="detail_main">
|
<div class="detail_main">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<div class="wrapper_view">
|
<div class="wrapper_view">
|
||||||
<div class="view_item" v-for="item in baseInfo" :key="item.value">
|
<div v-for="(item, index) in baseInfo" :key="`${item.value}-${index}`">
|
||||||
|
<div class="section_item" v-if="item.isSection">{{ item.value }}</div>
|
||||||
|
<div class="view_item" v-else>
|
||||||
<div class="view_item_left">{{ item.value }}</div>
|
<div class="view_item_left">{{ item.value }}</div>
|
||||||
<van-image class="view_item_image" v-if="item.isImage" :src="item.label"></van-image>
|
<van-image class="view_item_image" v-if="item.isImage" :src="item.label"></van-image>
|
||||||
<div class="view_item_right" v-else>{{ item.label }}</div>
|
<div class="view_item_right" v-else>{{ item.label }}</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -81,6 +84,14 @@ export default {
|
|||||||
padding: 0 20px;
|
padding: 0 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.section_item {
|
||||||
|
padding: 12px 20px 8px;
|
||||||
|
font-size: 13px;
|
||||||
|
font-weight: 600;
|
||||||
|
color: #333;
|
||||||
|
background-color: #f7f8fa;
|
||||||
|
}
|
||||||
|
|
||||||
.view_item_left {
|
.view_item_left {
|
||||||
// width: 40%;
|
// width: 40%;
|
||||||
color: #7c7c7c;
|
color: #7c7c7c;
|
||||||
|
|||||||
Reference in New Issue
Block a user