feature: 开门红首页业绩报表

1. 获取代理人信息本地无token时调客户端方法获取token
2. 机构排行/业绩排行接口调试
This commit is contained in:
mengxiaolong
2020-11-20 15:21:06 +08:00
parent 255d32cfad
commit b403b64559
2 changed files with 90 additions and 28 deletions

View File

@@ -1,5 +1,6 @@
import axios from 'axios' import axios from 'axios'
import { Dialog, Toast } from 'vant' import { Dialog, Toast } from 'vant'
import { device } from '@/assets/js/business-common.js'
let proposal = [ let proposal = [
'/proposal/proposal/list', '/proposal/proposal/list',
'/proposal/proposal/toInsurance', '/proposal/proposal/toInsurance',
@@ -79,9 +80,6 @@ let productStore = [
'/customer/shop/getShareList' //查询分享轨迹(转发记录) '/customer/shop/getShareList' //查询分享轨迹(转发记录)
] ]
// 卡单
let cardList = []
// 续期 // 续期
let renewalManage = [ let renewalManage = [
'/renewal/getRenewalList' //续期列表查询 '/renewal/getRenewalList' //续期列表查询
@@ -107,7 +105,7 @@ const service = axios.create({
// request拦截器 // request拦截器
service.interceptors.request.use( service.interceptors.request.use(
config => { async config => {
let relativePath = config.url && config.url.split('v1')[1] let relativePath = config.url && config.url.split('v1')[1]
if (whiteList.includes(relativePath)) { if (whiteList.includes(relativePath)) {
Toast.loading({ Toast.loading({
@@ -118,7 +116,23 @@ service.interceptors.request.use(
}) })
} }
config.headers['token'] = window.localStorage.getItem('token') let token = window.localStorage.getItem('token')
/**
* 在HomeProduct页面获取代理人信息时, 客户端可能还未将token存储在本地
* 此时如果token为空, 调用客户端方法获取token并放入localstorage中
*/
if (relativePath === '/customer/agent/info' && !token) {
// 设备类型
const target = device()
// 安卓or苹果
if (target.isAndroid || target.isIphone) {
// eslint-disable-next-line no-undef
const res = await EWebBridge.webCallAppInJs('getToken')
const token = JSON.parse(res).token
window.localStorage.setItem('token', token)
}
}
config.headers['token'] = token
// config.headers['token'] = `f0003a753d1d492083248f723ab1b6e9`//TEST测试专用 // config.headers['token'] = `f0003a753d1d492083248f723ab1b6e9`//TEST测试专用
return config return config
}, },

View File

@@ -55,31 +55,40 @@
<!-- 个险 --> <!-- 个险 -->
<template v-if="isGoodStart"> <template v-if="isGoodStart">
<div class="home-product-content"> <div class="home-product-content">
<!-- 产品中心 --> <!-- 机构排名/业绩排名 -->
<div class="pcenter-title flex pt10 pb10 mr15 justify-content-s align-items-c" style="height: 30px;"> <div class="pcenter-title flex pt10 pb10 mr15 justify-content-s align-items-c" style="height: 30px;">
<img class="title-img" :src="performance" /> <img v-if="isInner" class="title-img" :src="$assetsUrl + 'images/goodStart/organizationTitle.png'" />
<img v-else class="title-img" :src="$assetsUrl + 'images/goodStart/performanceTitle.png'" />
</div> </div>
<div class="home-product-pcenter performance"> <div class="home-product-pcenter performance">
<div class="pcenter-list"> <div class="pcenter-list">
<table class="myTable" style="min-width: 140vw;" cellspacing="0" cellpadding="0"> <table class="myTable" style="min-width: 160vw;" cellspacing="0" cellpadding="0">
<tr> <tr>
<th>产品名称</th> <th v-for="(thead, index) in theads" :key="index">{{ thead }}</th>
<th>承保标保(万元)</th>
<th>承保件数()</th>
<th>保费占比(%)</th>
</tr> </tr>
<tr v-for="i in 5" :key="i * 100"> <template v-if="isInner">
<td>六六大顺营销 服务部门</td> <tr v-for="(org, i) in organizationData" :key="i" :class="{ hidden: i >= 5 && !idMoreDataShow }">
<td>5000</td> <td>{{ i + 1 }}</td>
<td>200</td> <td class="org-name">{{ org.name | blankFilter }}</td>
<td>20</td> <td>{{ org.ysbfDay | blankFilter }}</td>
</tr> <td>{{ org.ysbfMon | blankFilter }}</td>
<template v-for="i in 20"> <td>{{ org.cbbfDay | blankFilter }}</td>
<tr v-if="idMoreDataShow" :key="i"> <td>{{ org.cbbfMon | blankFilter }}</td>
<td>六六大顺营销 服务部门</td> </tr>
<td>5000</td> <tr v-if="organizationData.length === 0">
<td>200</td> <td :colspan="theads.length">暂无数据</td>
<td>20</td> </tr>
</template>
<template v-else>
<tr v-for="(org, i) in performanceData" :key="i" :class="{ hidden: i >= 5 && !idMoreDataShow }">
<td>{{ org.rank | blankFilter }}</td>
<td>{{ org.name | blankFilter }}</td>
<td class="org-name">{{ org.comName | blankFilter }}</td>
<td>{{ org.ysbb | blankFilter }}</td>
<td>{{ org.bzbf | blankFilter }}</td>
</tr>
<tr v-if="performanceData.length === 0">
<td :colspan="theads.length" style="text-align: left; padding-left: 22%;">暂无数据</td>
</tr> </tr>
</template> </template>
</table> </table>
@@ -116,21 +125,49 @@
import performance from '@/assets/images/goodStart/performanceIcon.png' import performance from '@/assets/images/goodStart/performanceIcon.png'
import product from '@/assets/images/goodStart/product.png' import product from '@/assets/images/goodStart/product.png'
import { getAgentInfo } from '@/api/ebiz/my/my' import { getAgentInfo } from '@/api/ebiz/my/my'
import { getCongratulationList } from '@/api/ebiz/congratulation/congratulation.js'
import dateUtil from '@/assets/js/utils/date-utils.js'
export default { export default {
data() { data() {
return { return {
idMoreDataShow: false, idMoreDataShow: false,
performance, performance,
product, product,
isGoodStart: false isGoodStart: true,
isInner: false,
organizationTheads: ['排名', '机构', '当日预收(标保)', '月预收标保', '日承保标保', '月承保标保'],
performanceTheads: ['排名', '姓名', '营销服务部', '预收标保', '承保标保'],
organizationData: [],
performanceData: []
}
},
computed: {
theads() {
if (this.isInner) {
return this.organizationTheads
} else {
return this.performanceTheads
}
} }
}, },
created() { created() {
this.getAgentInfo() this.getAgentInfo()
this.getTableData()
}, },
methods: { methods: {
async getTableData() {
let currMonth = dateUtil.formatDate(new Date(), 'yyyy-MM-dd')
let data = await getCongratulationList({ date: currMonth, queryType: 'm', type: 'kmh' })
if (this.isInner) {
this.organizationData = data.content
} else {
this.performanceData = data.content.list
}
},
async getAgentInfo() { async getAgentInfo() {
const result = await getAgentInfo({}) const result = await getAgentInfo({})
let reg = /^N.*/
this.isInner = reg.test(result.branchType)
this.isGoodStart = result.showTemplate === 'KMH' this.isGoodStart = result.showTemplate === 'KMH'
}, },
showMore() { showMore() {
@@ -157,10 +194,8 @@ export default {
}, },
//查看详情 //查看详情
goDetail(code) { goDetail(code) {
console.log(code)
//将产品 code 存起来 //将产品 code 存起来
localStorage.productDetailCode = code localStorage.productDetailCode = code
console.log(`/product/productDetail${code}`)
this.$jump({ this.$jump({
flag: 'h5', flag: 'h5',
extra: { extra: {
@@ -197,6 +232,15 @@ export default {
}) })
} }
} }
},
filters: {
blankFilter(val) {
if (val) {
return val
} else {
return '-'
}
}
} }
} }
</script> </script>
@@ -254,7 +298,7 @@ export default {
border-collapse: collapse; border-collapse: collapse;
td, td,
th { th {
padding: 10px 0; padding: 10px 5px;
background-color: #fff3f1; background-color: #fff3f1;
color: #d84535; color: #d84535;
} }
@@ -313,4 +357,8 @@ span,
i { i {
vertical-align: middle; vertical-align: middle;
} }
.org-name {
width: 8em;
}
</style> </style>